JAVA框架面試題


至少寫出3種ssh框架中常用的注解
@RequestMapping springMvc中訪問地址映射
@ResponseBody springMvc中返回視圖
@Table hibernate中實體類與數據庫相對於的表
@Controller springMvc控制器的解釋
@Resource 引入service方法

 

jdbc的原理,怎么連接數據庫的? 需要深入的了解
1.注冊和加載數據庫驅動程序
2.建立與數據庫的連接
3.構造sql語句
4.發送sql語句
5.執行sql語句
6.關閉數據庫鏈接

1)在開發環境中加載指定的數據庫驅動程序 導入數據庫驅動包
2)加載驅動程序 java程序中,通過Class.forName來指定數據庫的驅動程序
3)創建數據庫連接對象 通過DriverManager類創建數據庫連接對象Connection
4) 創建執行對象(statement)Statement類主要執行靜態SQL語句並返回它所生成結果的對象
5)調用Statement對象執行相關SQL語句
6)關閉數據庫鏈接

 

Hibernate的工作原理:
1)Hibernate初始化創建SessionFactory 創建Configeration類的實例, 在構造方法中將配置文件讀入內存中,
一個Configeration 實例代表Hibernate所有java類到Sql數據庫映射的集v合。
2) 通過實例化Configuration 就可以創建SessionFactory對象, 進一通過sessionFactory 實例來創建session對象
3)得到session后,可以進行持久化操作
4)還可以通過事務來管理
5)關閉資源。



1.讀取並解析配置文件
2.讀取並解析映射信息,創建SessionFactory
3.打開Session
4.創建事務Transation
5.持久化操作
6.提交事務
7.關閉Session
8.關閉SesstionFactory

 


ibatis 用過嗎?怎么連接數據庫的?
myBatis是一個可自定義Sql,存儲過程和高級映射的持久層框架,對jdbc進行了封裝,使用簡單的XML和注解來配置和映射基本數據類型,map接口和pojo到數據記錄,
是一種半自動化的ORM實現。
1)首先創建Cinfiguration。xml文件
2)使用myBatis提供的工具類中的方法從類路徑或配置問價所在位置加載資源文件,
3)創建SqlSessionFactory
4) 使用工廠創建SqlSession對象
5) 打開Session 。openSession()如果參數為true表示該會話具有自動提交事務的功能,否則需要手動提交。
6)使用sqlsession進行數據庫的操作。

 

 


strust2的工作原理:
客戶端發送一個HttpServletRequest請求給中央控制器(StrutsPrepareAndExecuteFilter)
中央控制器詢問映射器(actionMapper)該請求是否是一個struts2請求,如果是,經過一系列的過濾器
然后由中央控制器把請求的出來交給ActionProxy(Action代理對象),ActionProxy通過配置信息找到
需要調用的Action類,根據反射機制實例化出struts.xml,全部執行完畢后再反向經過一系列攔截器,將根
據配置文件的Result找到對應的視圖,把結果響應到客戶端

 

客戶端發送一個HttpServletRequest請求被struts2的攔截器所攔截,struts2
判斷該請求是否是一個struts2請求,如果是,則將該請求交給ActionPoxy,
ActionPoxy代理將查詢struts.xml配置文件,找到對應的Action 及相關的方法,
ActionPoxy實例化ActionInvocation,並進行初始化,ActionInvocation調用Action,
調用前后經過一系列的攔截器大概20個,調用完畢,在執行Invocation.Invoke()之后
的代碼,全部執行完畢后再反向經過一系列攔截器,將根據配置文件的Result找到對應的
結果集進行渲染。

 


Struts2工作流程
1.用戶提交表單

2.struts默認攔截器攔截用戶請求,有其他攔截器的話 順序執行攔截器
3.執行action的execute方法
4.根據返回的result跳轉


springmvc和struts2的對比
首先它們都web層的框架
spring mvc 開發效率比struts2 要高,springMVC 請求只實列化一次 struts2 沒請求一次都會實列化一次
springMVC 是基於方法級別的一種攔截設計
struts2 是基於類的設計



OA工作流
oa是做的是小型的,自己內部使用的辦公系統里面的人使用的的工作流還沒用到第三方框架
工作流就是一系列相互銜接、自動進行的業務活動或任務。
OA工作流就是建立於網絡辦公自動化基礎上的事務行政審批,業務申請審批、公文、信息等的網上流轉。

hibernate 基於orm技術的一個框架,把對表的操作轉成對對象的操作
是基於JAVA的輕量級框架,封裝了JDBC,是J2EE體系中的持久層框架,主要實現對數據庫的操 作


hibernate提高系統性能的方法
延遲加載,抓取策略,緩存機制

簡述一下OA系統及功能
oa是做的是小型的,自己內部使用的辦公系統,主要功能有,公告管理,郵件管理,菜單管理,用戶管理,角色管理
公告管理根據管理人員權限的不同看到的效果也不一樣,普通人員只能查看所有審核通過的公告,管理員可以看到所有的公告
郵件管理實現公司內部的發送郵件和收郵件以及郵件轉發功能
菜單管理和用戶管理實現對菜單和用戶的增刪查改功能
角色管理實現了對角色權限的管理

aop(面向切面編程)
代碼從上往下執行的過程中可以從任意一個點切進來一段代碼來實現某些功能
例如日志或事務的應用把一些功能業務封裝成一個模塊,其他地方要用到時直接調用它的一個方法

郵件的設計思路
郵件含郵件表、郵件用戶關系表、附件表 中間表包括郵件編號,用戶編號,是否已讀(0未讀1已讀),郵件狀態
通過JSP頁面填寫信息 進入struts的action控制層

進入service層  調用持久層的實現方法 將數據寫入數據庫。
收件通dao實現層將數據從數據庫中取出傳到業務邏輯層再傳到action層,再從action層傳到頁面顯示出來

ORM
對象關系映射
它的作用是在關系型數據庫和業務實體對象之間作一個映射,這樣,我們在具體的操作業務對象的時候
就不需要再去和復雜的SQL語句打交道,只需簡單的操作對象的屬性和方法。

IOC控制反轉
new的過程交給spring容器去處理,不需要自己創建它
將你設計好的類交給系統去控制,而不是在你的類內部控制。比如我們需要一件衣服,直接去商店買就好了,不用知道他是怎么制造出來的,省掉了自己制造的過程

依賴注入
接口注入,屬性注入,構造注入

連接池:
每一次web請求都要建立一次數據庫連接。建立連接是一個費時的活動
數據庫連接池的基本思想就是為數據庫連接建立一個“緩沖池”。預先在緩沖池中放入一定數量的連接,當需要建立數據庫連接時
只需從“緩沖池”中取出一個,使用完畢之后再放回去。

二級緩存:
一級緩存存放在內存中,二級緩存可以存放在內存中也可以存放在硬盤中

分頁思路

事務
通俗的理解,事務是一組原子操作單元,從數據庫角度說,就是一組SQL指令,要么全部執行成功,若因為某個原因其中一條指令執行有錯誤,則撤銷先前執行過的所有指令。

 

1、客戶端瀏覽器發出HTTP請求。
2、根據web.xml配置,該請求被 FilterDispatcher接收。
3、根據struts.xml配置,找到需要調用的Action類和方法, 並通過IoC方式,將值注入給Aciton。
4、Action調用業務邏輯組件處理業務邏輯,這一步包含表單驗證。
5、Action執行完畢,根據 struts.xml中的配置找到對應的返回結果result,並跳轉到相應頁面。
6、返回HTTP響應到客戶端瀏覽器。

spring的工作原理:
Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架業務對象,AOP就是可以
Spring的核心在於他的IOC(控制反轉) 和 AOP(面向切面編程), IOC就是用來管理所有的在調用方法的前后植入附加的行為;di 依賴注入

 

springMVC的工作原理:
客戶端發送一個請求過來--》 前端控制器接收--得到url地址,--》
由前端處理映射器(根據url地址得到相對應的類)--》
前端處理適配器調用方法執行方法里面的代碼---》
由視圖解析器解析出要返回的頁面--》
響應到客戶端

 

1.spring mvc請所有的請求都交給DispatcherServlet,它會委托其他應用系統的其他功能模塊對請求進行處理。
2.DispatcherServlet查詢一個或多個HandlerMapping,會找到處理請求的Controller.
3.DispatcherServlet把請求提交給目標Controller.
4.Controller進行業務邏輯處理后,會返回一個ModelAndView.
5.DispatcherServlet查詢一個多個ViewResolvet視圖解析器,找到ViewResolvet對象指定的視圖對象。
6.視圖對象負責渲染飯后客戶端

數據庫的優化:
1、調整數據結構的設計。這一部分在開發信息系統之前完成,程序員需要考慮是否使用ORACLE數據庫的分區功能,對於經常訪問的數據庫表是否需要建立索引等。
2、調整應用程序結構設計。這一部分也是在開發信息系統之前完成,程序員在這一步需要考慮應用程序使用什么樣的體系結構,
是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的數據庫資源是不同的。
3、調整數據庫SQL語句。應用程序的執行最終將歸結為數據庫中的SQL語句執行,因此SQL語句的執行效率最終決定了ORACLE數據庫的性能。
ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整優化SQL語句。
4、調整服務器內存分配。內存分配是在信息系統運行過程中優化配置的,數據庫管理員可以根據數據庫運行狀況調整數據庫系統全局區(SGA區)的數據緩沖區、
、日志緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。需要注意的是,SGA區不是越大越好,SGA區過大會占用操作系統使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統。
5、調整硬盤I/O,這一步是在信息系統開發之前完成的。數據庫管理員可以將組成同一個表空間的數據文件放在不同的硬盤上,做到硬盤之間I/O負載均衡。
6、調整操作系統參數,例如:運行在UNIX操作系統上的ORACLE數據庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。

實際上,上述數據庫優化措施之間是相互聯系的。ORACLE數據庫性能惡化表現基本上都是用戶響應時間比較長,
需要用戶長時間的等待。但性能惡化的原因卻是多種多樣的,有時是多個因素共同造成了性能惡化的結果,
這就需要數據庫管理員有比較全面的計算機知識,能夠敏感地察覺到影響數據庫性能的主要原因所在。
另外,良好的數據庫管理工具對於優化數據庫性能也是很重要的。
1、ORACLE數據庫在線數據字典,
2,操作系統工具,例如UNIX操作系統的vmstat,iostat等命令
3、SQL語言跟蹤工具
4、ORACLE Enterprise Manager(OEM),這是一個圖形的用戶管理界面,用戶可以使用它方便地進行數據庫管理而不必記住復雜的ORACLE數據庫管理的命令。
5、EXPLAIN PLAN——SQL語言優化命令,使用這個命令可以幫助程序員寫出高效的SQL語言

oracle數據庫優化策略:
1.調整數據庫結構的設計
對訪問頻繁的數據,充分利用數據庫cache和應用的緩存6、數據量比較大的,在設計過程中,為了減少其他表的關聯,增加一些冗余字段,提高查詢性能
原則上為創建的每個表都建立一個主鍵,主鍵唯一標識某一行記錄,用於強制表的實體完整性。
為每一個外鍵列建立一個索引,如果確認它是唯一的,就建立唯一索引。
在經常進行連接,但是沒有指定為外鍵的列上建立索引,而不經常連接的字段則由優化器自動生成索引。
在頻繁進行排序或分組(即進行group by或order by操作)的列上建立索引。

2.調整應用程序的結構設計
減少應用和數據庫的交互次數、同一個sql語句的執行次數
設置Fetch Size
優化業務邏輯
使用存儲過程
如果采用存儲過程你可以將整個業務邏輯封裝在存儲過程里,然后在客戶端直接調用存儲過程處理,這樣可以減少網絡交互的成本。
3.調整數據庫sql語句
應盡量避免在 where 子句中對字段進行 null 值判斷
減少表之間的關聯
or 是否會引起全表掃描
避免使用NOT IN,可以用LEFT OUTER JOIN代替它
盡量使用exists代替select count(*)來判斷是否存在記錄
select * 換成字段能提高一丁點效率
查詢僅僅返回需要的行和列
避免使用耗費資源的操作,帶有DISTINCT,UNION,MINUS,INTERSECT,ORDER BY的SQL語句會啟動SQL引擎 執行,耗費資源的排序(SORT)功能. DISTINCT需要一次排序操作, 而其他的至少需要執行兩次排序
避免在WHERE子句中使用in,not in,or 或者having
減少比較操作
合理使用排序
大量復雜運算在客戶端處理
4.調整服務器內存的分配
可以根據數據庫的運行狀態調整數據庫全局區(SGA)區的數據緩沖區,日志緩沖區,和共享池的大小;還可以調整全局區的大小;
SGA主要有三部分組成:共享池,數據庫緩沖區,日志緩沖區;
共享池:共享SQL區和數據緩沖區;共享SQL區是存放SQL命令的區域;數據字典緩沖區存放的是數據庫運行的動態信息;
5.調整硬盤I/O
6.調整操作系統的參數
運行在UNIX操作系統上的ORACLE數據庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。
減少數據庫服務器CPU運算

多線程:
多線程是指單個程序中可以同時運行多個不同的線程執行不同的任務,他們共享一塊內存空間,有可能相互影響;

線程的生命周期:
創建狀態,可運行狀態,運行狀態,阻塞狀態,消亡狀態;


線程的同步:
一個對象只有一個鎖。所以,如果一個線程獲得該鎖,就沒有其他線程可以獲得鎖,直到第一個線程釋放(或返回)鎖。這也意味着任何其他線程都不能進入該對象上的synchronized方法或代碼塊,直到該鎖被釋放。
釋放鎖是指持鎖線程退出了synchronized同步方法或代碼塊。

synchronize:
修飾方法的時候叫做同步方法;
java中每個單獨的對象都有鎖,當訪問某個對象的synchronize方法的時候,首先將對象上鎖,此時其他線程再也無法訪問該對象的同步方法;
直至之前的線程完畢,才將該對象的鎖釋放掉;其他對象才有可能訪問該對象的synchronized方法;

並發:
多個進程或線程同時(或者說同一時間段內)訪問同一資源會產生並發的問題


線程安全:
首先,在單線程中不會出現線程安全的問題
而在多線程編程中,有可能出現同時訪問同一個資源的情況,這種資源可以是各種類型的資源:
一個變量,一個對象,一個文件,一個數據庫表等,而當多個線程同時訪問同一個資源的時候,就先出現問題:
由於每個線程的執行過程是不可控的,所以很有可能導致最終的結果與預期的結果相違背,或者直接導致程序出錯。

也就是說:當多個線程同時訪問臨界資源(共享資源:一個對象,對象中的屬性,一個文件,一個數據庫)時,可能會出現線程安全的問題。
如何解決線程安全:
采用“序列化訪問臨界資源”的方案,即在同一時刻,只能有一個線程訪問臨界資源,也稱為同步互斥訪問。
synchronize方法是一種細粒度的並發控制。
使用synchronized關鍵字修飾方法,當訪問某個對象的synchronized方法的時候,首先將對象上鎖,此時其他線程再也無法訪問該對象的同步方法,
知道線程執行同步方法完畢,才將該對象的鎖釋放掉,其他對象才有可能訪問該對象的synchronized方法;

或者使用同步塊;

什么是死鎖:
如果一個進程集合里面的每一個進程都在等待只能由這個集合中的其他一個進程(包括他自生)才能引發的事件,
這種情況就是死鎖。
線程之間互相等待;
死鎖的四個必要條件:
1.互斥條件:資源不能被共享,只能由一個進程使用。
2.請求與保持條件:已經得到資源的進程可以再次申請新的資源。
3.非剝奪條件:已經分配的資源不能從相應的進程中被強制的剝奪。
4.循環等待條件:系統中若干進程組成環路,該環路中的每一個進程都在等待相鄰進程正占用的資源。

處理死鎖:
1.鴕鳥算法。
2.檢測死鎖並恢復。
3.仔細的對資源進行動態的分配,以避免死鎖;
4.通過破除死鎖四個必要條件之一,來防止死鎖。

處理高並發:
1)數據庫方面:
設置事務可以解決數據庫操作並發的問題;
數據庫的性能優化;
2)系統的設計方面:
盡量使用緩存,包括用戶緩存,信息緩存:可以大大減少與數據庫的交互,提高性能;
負載均衡/加速
存儲
3)HTML靜態化:
HTTP請求---Web服務器---Servlet--業務邏輯處理--訪問數據--填充JSP--響應請求
HTTP請求---Web服務器---Servlet--HTML--響應請求


存儲過程:
商業規則和業務邏輯可以通過程序儲存在Oracle中,這個程序就是存儲過程。
存儲過程是SQL,PL/SQL,Java 語句的組合,它使你能將執行商業規則的代碼從你的應用程序中移動到數據庫。
這樣的結果就是,代碼存儲一次但是能被多個程序使用。
好處:
1)存儲過程是預編譯過的,並且經過優化后存貯於SQL內存中,使用時無需再次編譯,提高了工作效率;
2)存儲過程的代碼直接存放於數據庫中,一般有客戶端直接通過存儲過程的名字進行調用,減少了網絡流量,
加快可系統的執行速度,例如在進行百萬以上的大批數量查詢時,使用存儲過程分頁要比其他方式分頁快得多;
3)使用存儲過程可以減少SQL注入式攻擊,提高了系統的安全性,執行存儲過程的用戶要具有一定的權限才
能使用存儲過程,沒有數據庫的操作權限的用戶只能在其控制下間接的存取數據;
4)在進行主,從表及多表間的數據維護及有效性驗證時,使用存儲過程比較方便,而且可以有效利用SQL中的事務處理機制;
5)使用存儲過程,可以實現存儲過程設計和編碼工作分開進行,只要將存儲過程名,參數,及返回信息告訴編碼人員即可:
6)但使用存儲過程封裝業務邏輯將限制應用程序的可移植性;另外,如果更改儲存過程的參數或者返回的數據及類型的話
需要修改應用程序的相關代碼,比較繁瑣。

存儲過程和函數的區別:
function有返回值,並且可以直接在Query中引用function和或者使用function的返回值。
本質上沒有區別,都是PL/SQL程序,都可以有返回值。
最根本的區別是:存儲過程是命令,而函數是表達式的一部分。

調用:
通過數據庫函數來調用存儲過程:


網絡編程:
網絡上的兩個程序通過一個雙向的通信連接實現數據的交換,這個連接端成為一個socket。也成為套接字。
用於描述ip地址和端口,是通信鏈的句柄,應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求,
可以用來實現不同虛擬機或不同計算機之間的通信。
網絡中的進程是通過socket來通信的,socket是open-write/read-close模式的一種實現,socket提供了這些操作對應的函數接口,

ArrayList和LinkList的區別:
1.ArrayList是實現了基於動態數組的數據結構,LinkList是基於鏈表的數據結構。
2.對於隨機訪問get和set,ArrayList絕對優於LinkedList,因為LinkedList要移動指針。
3.對於新增和刪除操作add和remove,LinkedList比較占優勢,因為ArrayList要移動數據。
若之對單條數據出入刪除,ArrayList的速度反而優於LinkedList,
但是批量插入和刪除數據的時候,LinkedList的速度大大優於ArrayList,因為ArrayList每插入一條數據,要移動插入點及之后的所有數據。

Collection與collections的區別:
Collection是接口,是集合中的接口,collections是一個類,是集合中的一個工具類;

 

ajax同步和異步的區別:
同步需要返回結果才能繼續,異步不必等待,一般需要監聽異步的結果,
同步是一條直線上的隊列,異步是不在一個隊列上各走各的;
同步是按順序處理,異步是並行處理。
同步vde情況下你點擊頁面上的一個按鈕要等待處理結果才能點別的;
異步的情況下你點了一個按鈕以后可以立即點另一個他們同時處理;
異步原理:
ajax利用瀏覽器內置的xmlhttp組件,這個組件就是利用在不刷新頁面的情況下,可以使用javascript來進行http請求的;
這樣就做到了,不刷新當前頁面,就可以進行數據交換了!


java項目中那些場景需要用到多線程
看實際需求了,特別是一些維護線程,定時器程序,socket通信等

java有哪些api
java.lang java.util java.io java.sql java.awt java.net java.applet java.swing
java第三方api
Commons Math是Apache上一個輕量級的數學和統計計算方法的包,包含大多數常用的數值算法
Jsoup是一款java的HTML解析器,可以直接解析某個url地址,html文本類容;
Apache log4j 通過使用log4j 可以控制日志信息的殊榮目的地;
jackson是用來處理JSON格式數據的java類庫;


集合和數組之間的轉換:
當list中的數據類型一致的時候可以將list轉化為數組;
Object[] array = list.toArray();
在轉化為其他類型的數據時需要強制類型轉換,並且,要使用帶參數的toArray方法,參數的對象數組:
將數組轉換為集合list:
for(int i=0;i<array.length;i++){
list.add(array[i]);
}
直接使用Arrays的asList方法:
list = Arrays.asList(array);
將數組轉化成list后,再用List構造Set:
set new HashSet(Arrays.asList(array));
將set清空,然后把數組轉化成list全部的add
set.clear();
set.addAll(Array.asList(array1));

如何將list轉換成set:
List list = new ArrayList(set);
Set set = new HashSet(list);
list to set 最好確保list沒有重復的數據;

 

java基本數據類型:
byte shot int long float double char boolean

面向對象的三大特征:
封裝:類包含了屬性和方法,將數據和方法放在一個類中就叫做封裝;
繼承:父子關系,是 從已有的類中派生出新的類,新的類能吸收已有類的數據和行為(方法),並能擴展新的能力。java是單繼承的,
表示一個類只能從另外一個類繼承,這個被繼承的類叫父類,繼承的類叫做子類。使用關鍵字extends;
多態:父類型的引用可以指向子類型的對象,接口類型的引用可以指向實現該接口的類的實例;
抽象類:使用abstract修飾的類叫抽象類; 抽象:抽象是把想法從具體的實例中分離出來的步驟,因此,要根據他們的功能而不是實現細節來創建類。Java支持創建只暴漏接口而不包含方法實現的抽象的類。這種抽象技術的主要目的是把類的行為和實現細節分離開。
接口:使用關鍵字Interface,接口不能實例化,接口中的所以方法都是抽象方法,可以省略掉abstract關鍵字;

抽象和封裝的不同點
抽象和封裝是互補的概念。一方面,抽象關注對象的行為。另一方面,封裝關注對象行為的細節。一般是通過隱藏對象內部狀態信息做到封裝,因此,封裝可以看成是用來提供抽象的一種策略。


堆棧的概念:
java中吧內存分為兩種,一種叫做棧內存,一種叫做堆內存
在函數中定義的一些基本數據類型的變量和對象的引用變量都在函數的棧內存中分配;
當一段代碼塊定義一個變量的時候,java就在棧中為這個變量分配內存空間,當超過變量的作用域之后,j
java會自動釋放掉為該變量所分配的內存空間,改內存空間可以立即被另作他用;
堆內存用來存放new創建的對象和數組;
在堆內存中分配的內存,由java虛擬機的自動垃圾回收器來管理:
數組和對象在沒有引用變量指向它的時候,才會變成垃圾,不能再被使用,但是任然占內存,
在一個不確定的時間被垃圾回收器釋放掉,也是java比較占內存的原因,
實際上,棧中的變量指向對內存中的變量,這就是java的指針;


重載和重寫的區別:
重載:一個類中有兩個或者多個方法名相同,但是參數不同(參數的個數,參數的類型),方法的返回值與重載無關。
重寫:父類和子類之間的多態性,父類的函數進行了重新的定義,如果在子類中定義某方法與其父類有相同的名稱和參數
我們說該方法被重寫。在java中子類可以繼承父類中的所以方法,也可以對父類的方法進行修改和覆蓋;
簡單的說:
就是同樣的一個方法能夠根據輸入的數據不同,做出不同的處理,即方法的重載;
而當子類繼承自父類的相同的方法,輸入的數據一樣,但是要做出有別於父類的響應時,就要覆蓋父類的方法,這就是重寫;
重載是定義在同一個類內部的同名的多個方法,重寫是發生在父子類之間的(伴隨着繼承)。

接口和抽象方法的區別:
1.接口中的所有的方法都是抽象方法,抽象類中可以有具體的方法,也可以有抽象方法;
2.接口可以多實現,抽象類只能繼承一個;
3.接口中的原生數據類型都是public final static 而抽象類中的不是;


單例模式:
方法和屬性都要私有化;
public class Singleton{
private static Singleton instance;
private Singleton(){}

public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
}


tcp/ip的套接字Socket。使用Socket,使程序員很方便的訪問tcp/ip,從而開發網絡應用程序。
定義:是連接在網絡上的兩個程序間的雙向通信的節點;
服務端:服務器將一個套接字綁定到一個特定的端口號,並通過此套節字等待監聽客戶端的請求。
客戶端:根據服務器程序所在的主機名和端口號發送請求。


數據庫:
如何設置SQL數據庫表與表的關聯關系?
如果是父子關系,或者是一對多的關系。
可以通過創建外鍵的方式,在父表 與 子表之間,創建一個關聯關系。

myBatis和hibernate的區別:
mybatis是把sql語句與java代碼分離了...sql語句在xml文件配置的...
hibernate是ORM框架,它對jdbc進行了封裝,在分層結構中處於持久化層,
它能建立面向對象的域模型和關系數據模型之間的映射.
它大大簡化了dao層的編碼工作

要實現多線程可以采用兩種方式
繼承Thread類
實現Runnable接口


自我介紹:
我叫侯建君,來自湖北黃石,畢業於武漢軟件工程職業學院,有一年以j2ee項目開發經驗,熟悉
java面向對象編程,熟悉掌握hibernate,struts2,spring和springmvc mybatis等開源框架
主要做過企業移動辦公系統,企業資產報廢系統,企業人事管理系統等項目,主要用到Struts2
spring hibernate框架技術使用myeclipse和oracle開發工具來開發項目。開發的項目有

企業移動辦公系統是針對中小型公司內部使用的辦公系統,為企業管理者提供有力的決策支持,有效的提高個人的辦公效率
實現部門之間的合作辦公以及企業信息交流和大規模的協作。
主要功能有,公告管理,郵件管理,菜單管理,用戶管理,角色管理
我主要負責的是系統模塊,其中包括對系統菜單的管理(增刪改)、角色權限的管理
2.用戶模塊,登錄信息的驗證,員工登錄之后可以對個人資料和密碼的修改,以及看到自己未處理的事務等
3.公告模塊,所有登錄用戶都可以發公告,默認發送給所有用戶,但需要管理員(即部門主管)進行審核之后,才能被其他人看到

企業資產報廢系統springmvc+mybatis3+spring4
本系統采用B/S結構開發,對固定資產管理系統中使用年限已到,卻還能使用的各宗資產做統一管理
對各個資產進行錄入、查看、編輯、徹底報廢、外借其他部門等操作,並對外借期限已到的資產,進行短信通知。
系統自動生成固定資產的統計表,方便查詢與統計。
有資產卡片模塊,資產外借模塊,資產報廢模塊,數據字典模塊
我主要負責資產卡片模塊和數據字典模塊

企業人事管理系統
方便快捷的檔案管理。簡單適用的考勤和獎懲管理。簡單適用的員工信息管理等。我主要做的員工信息管理模塊以及員工通訊管理模塊
自動,定時任務timetask quarz

講講您理解的unicode和編碼
Unicode用一個2字節數字表示每個字符,從0到65535。Unicode使用相同的數字表示ASCII和ISO-8859-1中的字符。
只是這兩種編碼用一個字節表示,而Unicode用兩個字節表示。所以Unicode表示這兩種編碼的字符時只要用低字節就可以了,高字節為0。


企業人事管理系統,oa辦公系統,客戶關系管理系統,超市管理系統,固定資產管理系統,倉庫管理系統

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM