1. java軟體工程師的具體職責是什麼
Java軟體工程師運用Java開發工具去完成軟體產品的軟體程序設計、開發、測試、維護升級等工作。具體職責是:
1、按產品或項目要求進行技術開發,能獨立完成模塊分析設計。
2、根據開發規范與流程獨立完成詳細設計,編碼,測試及相關文檔。
3、負責信息系統(如OA、CRM等)持續優化,以及微信企業平台端的開發。
4、負責信息系統的推廣應用,數據管理及日常維護管理。
5、配合信息安全主任做好信息安全保密工作。
任職要求
1、計算機專業本科以上學歷,從事後台系統開發1年以上工作經驗;
2、熟練使用Java/.NET語言開發Web應用,熟悉主流技術框架;
3、熟悉資料庫理論,熟練掌握主流資料庫MySQL、SQL Server等的應用;
4、熟悉HTML、XML、JavaScprit、ajax、Web Servrice等WEB技術;
5、熟悉Linux操作系統者優先;有大型網站/系統開發經驗者優先。
2. 以後想學C和匯編,做免殺和逆向這些,是不是需要很強大的數學底子啊
我個人是從13年的7月份開始接觸逆向的,目前菜鳥水平,剛剛算是入門。就我個人經驗來看,做逆向對數學沒啥大要求。
這句話的前提是你搞破解用爆破,不要去碰加密演算法。
加密演算法么,既然叫演算法,肯定跟數學扯不清。想從匯編角度寫出一個演算法的逆演算法,我還沒這個水平。起碼聽起來挺高端不是。
多少人用著易語言,學學OD,CE,匯編都半生不熟就開始搞了,磕磕碰碰以後不一樣風生水起。
做到後面還是正兒八經的用C來的實在。當然不是慫恿lz無基礎就上手。野路子肯定是有代價的。只是想說明一點:搞逆向,就是個熟練工種,什麼基礎都沒有的人都能玩轉。
免殺不太清楚,逆向的話,上手甚至對匯編的要求都不會太高。你不去逆向加密演算法啥的,一些簡單的數據逆向對匯編的要求不算高。當然,熟練一些以後還是有必要專門學習下匯編的。主要是熟悉各種指令,並不用達到用匯編寫出完整程序的水平。大部分的編碼還是C來做的。
學的話,先學C,那個人性化點,匯編說難學吧,也不算,就是比較機械化。指令搞來搞去,慢慢就熟悉了,急不來。
lz要知道一點是,你搞的是逆向工程,這是個非常規的活,雖然涉及匯編,涉及編程,但是跟傳統編程側重點完全不同。正常編程,你在意的是如何寫出漂亮且高效的代碼,如何對復雜的業務邏輯進行合理的封裝,如何組織繼承結構。
搞逆向,你注重的是如何通過合理的逆向思維,用類似「如果我寫這個功能,我會怎麼實現····」之類的想法去看待整個程序。如何通過CE,OD切入匯編代碼中的關鍵點。甚至是對於不同編譯器對一些代碼會進行哪些優化,優化後的代碼呈現一種什麼形態,這種。
基於上面這個逆向思維,就要求你又一定的編碼能力。只有能夠深入敵後,正確抓住編碼者思維的破解者才會真正的省時省力。
學習的話,推薦個網站 魚C工作室。
http://bbs.fishc.com/
一個分享和學習氛圍都不錯的網站。上面有免費的課程,C和匯編的都有。主講小甲魚對於匯編,C都有很深的功力起碼帶新手入門綽綽有餘。風格很詼諧,你會喜歡的。裡面還有很多其他的教程,有興趣都可以看看。
書的話,正常介紹C和匯編的書,lz可以自己找,但是我不推薦看這些。如果你喜歡小甲魚的視頻,我想那個就夠讓你對C和匯編入門了。
破解逆向方面的書,是值得花最多的時間去看的。
推薦看雪的那本《加密與解密》,搞逆向必讀。再者就是《C++反匯編與逆向技術揭秘》。這兩本都是我有在看的,但是都沒有徹底讀完。感覺很有必要一讀。
再者,推薦幾個逆向資源站點:
看雪 吾愛破解 廣海社區
前兩個是國內逆向破解主要的兩個論壇。第三個是專搞游戲輔助的,技術相對沒前面那兩個牛,畢竟專注方向不同。
逆向只是很多人沒想到有去搞,或者是沒興趣,或者是沒機會,或者認為沒搞頭。它會比搞正向工程難一些是肯定的,還要面對各種殼,保護驅動。後面這種人為設置的障礙才是提高逆向門檻的主要因素。但除去保護技術,逆向本身不會太難,畢竟都是軟體技術,總會有學會的時候。搞逆向的時間成本比較高。因為大部分學編程的人可能都懂點C,java,去公司培訓培訓,2個周湊合能幹活。
可是沒幾個人在大學正兒八經學過匯編,有學也是王爽的16位匯編,真正玩的轉的恐怕也沒幾個。還有OD和CE,IDA這些,不是專門搞這個的估計都沒聽過,這些軟體也是要專門花謝時間來學的。如果再算上保護,殼,麻煩多了去了。真正有專研精神,肯吃苦的才能學透。
lz加油吧,堅持下去,就會體會到搞逆向的樂趣。
3. 參加Java培訓主要學習哪些內容
參加Java培訓主要學習哪些內容?我們選擇Java培訓機構學習Java技術開發,其實對於零基礎學習Java的小夥伴需要從基礎學習,昌平北大青鳥Java培訓起家,採用「因材施教,分級培優」針對不同基礎的學員採用不懂的Java培訓策略。
Java培訓課程大綱總共分為六個階段:分別是:Java語言基礎、JavaSE核_、WEB全棧及資料庫、微服務及超高並戚汪發互聯網架構、全棧進階就業沖刺、增值課程下面詳細介紹一下每個階段的知識點及階段性項目
Java培訓課程第一階段:Java語言基礎
計算機概述:Java編程語言概述、Eclipse開發環境搭建
Java基礎:變數、基本數據類型、printf、數據格式化、運算符、流程式控制制、數組、數組復制
面向對象編程實戰:對象、類、屬性、方法、構造器、重載、繼承、重寫、封裝、多態、抽象類和介面、內存管理、內存泄露
Java培訓課程第一階段Java語言基礎實訓項目:飛機大戰
Java培訓課程第二階段:JavaSE核_
項目需求概述/IDEA:項目需求文檔,IDEA社區版本開發工具使用
JavaSE核心API:Object、String、StringBuilder、正則表達式、集合框架、范型、包裝類、二進制、集合性能剖析攜仔
Java8高級API:文件、IO,線程,網路,XML、Lambda、流、反射API、Java8日期、並發包
Maven/Git:Maven依賴管理、項目構建、Git搭建、代碼提交、代碼更新、代碼合並核心
API綜合實戰:多線程TCP編程、HTTP協議、請求解析、響應處理、文字編碼原理和UTF-8編碼、線程池、POST請求解析、GET請求解析、Mime類型、定長記錄文件
Java培訓課程第二階段JavaSE核_實訓項目:小鳥Web伺服器:"稻草問答"原型或小鳥Web伺服器:"美人魚客服"原型
Java培訓課程第三階段:WEB全棧及資料庫
項目需求概述/IDEA:項目需求文檔、IDEA企業級開發工辯仔汪具使用
WEB前端核心:HTML5、CSS3、JavaScript、ES6
WEB前端高級框架:JQuery、Bootstrap4
前端項目實戰:Bootstrap4網站模板開發
資料庫技術核心:MySQL、SQL、DDL、DML、DQL、DCL、資料庫設計
JDBC:JDBC驅動、載入使用MySQL驅動、Connection、Statement、PreparedStatement、ResultSet、批量處理、SQL注入攻擊與預防、資料庫連接池、Druid連接池
JavaEE服務端編程:Tomcat、Servlet、HTTPServlet、Request、Response、Cookies、Session、過濾器、監聽器、Thymeleaf模版引擎、文件上載
Ajax:Ajax原理、Ajax典型應用、JQueryAjaxAPI、JSON、JacksonAPI
VUE.js:模版語法、條件與循環、用戶輸入處理、雙向綁定、VUE數據綁定技巧、MVVM原理
Web綜合實戰:文件上載、文件下載、瀑布流、VUE、輪播圖、動態內容、內容模板
項目峰會:分組完成前後台開發,掌握網站項目技術
Java培訓課程第三階段WEB全棧及資料庫實訓項目:VR3D時代網站「稻草問答」:前端或「美人魚客服」:前端
Java培訓課程第四階段:微服務及超高並發互聯網架構
項目需求概述項目需求文檔、Maven聚合項目
SSM框架技術:Spring:IoC/DI、單例、懶惰初始化、@Bean、組件掃描、自動注入規則SpringMVC:5大組件、請求處理流程、配置技巧、接收表單參數、顯示數據、攔截器
MyBatis:註解映射、XML文件映射、CRUD操作、動態SQL拼接、Mapper介面設計、一級緩存和二級緩存
SpringBoot:項目搭建、SpringBoot聚合項目、整合MyBatis
分布式微服務/SpringCloud:Eureka、Ribbon、Feign、Hystrix、Zuul、Config+Git、Spring安全框架、Spring驗證框架
互聯網架構技術Nginx、Redis、MySQL讀寫分離、非同步通信原理、Kafka、Elasticsearch
互聯網項目實戰:微服務、緩存技術、負載均衡、非同步通信、全文檢索RESTful、文件上載、AOP、樂觀鎖、ConcurrentHashMap、CopyOnWriteArrayList、定時執行功能、分布式事務MyBatisPlus、代碼生成器、Lombok、MyBatis分頁查詢、Vue-Select、Summernote
項目峰會:在老師指導下分組完成互聯網項目,擴充互聯網項目經歷
Java培訓課程第四階段微服務及超高並發互聯網架構實訓項目:「稻草問答」或「美人魚客服」
Java培訓課程第五階段:全棧進階就業沖刺
編寫原生框架:SmartMVC框架、MVC請求流程、前端控制器、反射註解解析、控制器映射、反射執行控制器、視圖處理器
資料庫高級:索引與B+樹、視圖、事務、約束、存儲過程、觸發器、資料庫鎖、資料庫面試題解析、Oracle
項目庫綜合實戰:老師講解項目業務流程分析、項目架構設計、項目實現方案,學員自行實現:全站內容管理系統、電子商城、靜態網站系統、智能博客、運動旅遊網
就業進階:JVM:Java內存管理、GC原理
經典演算法:排序、二分查找、進制轉換、超大數據量排序、經典面試題目解析
數據結構:雙向循環鏈表、二叉樹、紅黑樹、TreeMap、散列表、HashSet
OOP設計:面向對象的」六原則一法則」、聚合與繼承
Java培訓課程第五階段全棧進階就業沖刺實訓項目:SmartMVC
Java培訓課程第六階段:增值課程
Servlet/JSP:Servlet、web.xml、JSP、JSP內置對象、JSP表達式、腳本元素、自定義標簽、EL、JSTL
經典版SSM:SpringXML、SpringMVCXML、MyBatisXML、SSM整合
華為雲:Linux、ssh登錄、文件傳輸、文件復制、文件移動、文件夾管理、網路配置、yum、安裝Nginx、安裝Redis、安裝JDK、安裝Tomcat、安裝Kafka、安裝ES
Nginx:Nginx安裝、Nginx反向代理、Nginx負載均衡策略、HTTPS
分布式文件存儲技術:FastDFS搭建、文件上傳、文件下載、Java客戶端
MySQL:MySQL安裝、MySQL編碼、MySQL讀寫分離
Dubbo:Dubbo架構、服務提供者、服務消費者、Dubbo-admin
Java培訓課程第六階段增值課程實訓項目:稻草問答部署
現在填寫下面的表單還可以獲得昌平北大青鳥Java培訓班免費體驗課程,試聽一下才能確定自己是否適合學習Java技術。
4. JAVA 學習方法或捷徑--求教
JAVA同其它任何一門編程語言一樣,都是要從淺到深的過程,如果你想愉快的學習這門語言的話,給你看篇文章,記住JAVA學習要有耐心!下面的文章也許對你有幫助
1. Java語言基礎
談到Java語言基礎學習的書籍,大家肯定會推薦Bruce Eckel的《Thinking in Java》。它是一本寫的相當深刻的技術書籍,Java語言基礎部分基本沒有其它任何一本書可以超越它。該書的作者Bruce Eckel在網路上被稱為天才的投機者,作者的《Thinking in C++》在1995年曾獲SoftwareDevelopment Jolt Award最佳書籍大獎,《Thinking in Java》被評為1999年Java World「最愛讀者歡迎圖書」,並且贏得了編輯首選圖書獎。作者從1986年至今,已經發表了超過150篇計算機技術文章,出版了6本書(其中4本是關於C++的),並且在全世界做了數百次演講。他是《Thinking in Java》、《Thinking in C++》、《C++ Inside & Out》《Using C++》和《Thinking in Patterns》的作者,同時還是《Black Belt C++》文集的編輯。他的書被讀者稱為「最好的Java參考書……絕對讓人震驚」;「購買Java參考書最明智的選擇」;「我見過的最棒的編程指南」。作者的非凡才華,極其跨越語言的能力,使作者被選為Java發展10年間與Java關系最密切的10個人物之一。
《Thinking in Java》講述了Java語言的方方面面,很多Java語言的老手都評價「這是一本將Java語言講得相當醜陋的書」。該書談及了java語言的很多細節,每一個方面都是相當深刻的。通過本書你可以看到「醜陋的」java語言。
網路上關於java語言講解的視頻很多很多,其中不凡有垃圾。《翁愷—JAVA語言》可能是你學習java語言基礎的唯一選擇,該講座基本按照《Thinking in Java》這本書講解,其中不凡有翁老師的很多有意思的笑話。我很幸運學習就是從此視頻開始的。內容包括30講,我總共看了3遍。
不過,對於初學者我不太推薦使用《Thinking in Java》,我比較推薦Prentice Hall PTR 的《Core Java 2》國內稱為《Java 2 核心技術》,目前是第七版。網路上大家都可以下載到電子版。Oreilly的《Java in a nutshell》也是一個不錯的選擇。讀完以上兩本後,你可以看看翁愷老師的視頻,接著可以研究《Thinking in Java》了。
2. Java數據結構
市面上關於Java數據結構的書本身就很少很少。大致有APress 的《Java Collections》,Jones 和Bartlett 的《Data Structures in Java》、《Object-oriented Data Structures Using Java》以及Prentice Hall 出版的《Data Structures and Algorithms in Java》 (Dec 19, 2005)還有一本就是《Data Structures And Algorithms With Object-oriented Design Patterns In Java》。很幸運我的第一本英文書就是APress 的《Java Collections》(本書在國內可能根本就沒有中文版――只能下載英文版了),很不錯,講得很有條例、很簡單,是一本完完全全Java Collections API介紹的書籍,其中不凡有擴展API的例子。這是我推薦你學習java數據結構的唯一一本好書。其它的Jones 和Bartlett的那兩本國內好像有一本中文版,想看你也可以看看。
在學習完API後,你可以看看java.util包中對應的類了。不過只有在學習過設計模式後你才有可能完全理解整個Java Collections Framework。Java Collections Framework使用了很多著名的設計模式如:迭代器(Iterator)模式,工廠方法模式、裝飾器模式、適配器模式等等。通過研究java.util包中數據結構的源代碼,你可以知道臭名昭著的Properties類的設計了,同時可能基本具備設計簡單的數據結構的能力了。
所謂學習無止境,學習完Sun提供了Java Collections Framework後,你可以研究Apche的另一個Java Collections Framework,很有意思哦。互為補充的兩個Framework。
在大家學習、研究Java Collections之前,我提示一下Java Collections主要包括以下三部分:介面(Interface)、實現(Implemention)和演算法(Algorithm)。
1. 介面主要有List、Set、Queue和 Map。List 、Se t和Queue是 Collection介面的子介面。
2. 實現主要是實現這些介面的具體類。如實現List介面的ArrayList、LinkedList、Stack和Vector;實現Set介面的HashSet、TreeSet 和LinkedHashSet;實現Queue介面的PriorityQueue、SynchronousQueue等等;實現Map介面的HashMap、TreeMap、Hashtable、Properties、WeakHashMap等等。
3. 演算法主要是由Arrays類和Collections類提供的,它是整個Java Collection Framework演算法的核心。支持各種類型的排序,查找等常用操作。
Java Collections中包含兩個版本的數據結構,主要是原先的支持同步的數據結構和後來不支持同步的數據結構。
Java Collection Framework在使用Comparator和Comparable介面支持排序。同時提供新舊兩個版本的迭代器Iterator和Enumeraton,以及它們如何轉換等等。
在java.util包中的Obserable介面和Observer類是考察者模式的核心。
……
3. Java IO
市面上關於IO的書籍也僅僅只有Oreilly出版社的兩本,都是Elliotte Rusty Harold的著作。兩本書的風格基本一致,推薦閱讀是第一版的《Jvava I/O》,講得比較淺顯,內容相對比較集中,實例也很多。第二版今年5月國外才出版,很有幸我在網路上下載了第二版,講得極其詳細――726頁的大塊頭(我化了兩個星期),這次將NIO和IO和在一起,還包括J2ME部分的,不過串口、並口通信部分好像類庫支持不夠,自己不能實際操作。
與第一版的《Jvava I/O》一起的Oreilly還有一本《Jvava NIO》,也是很不錯的哦。
大家在依次閱讀完《Jvava I/O》以及《Jvava NIO》後,可以研究java.io包中的源代碼了。在大家研究源代碼前我給點提示:
Java的io包主要包括:
1. 兩種流:位元組流(byte Stream)和字元流(character stream),這兩種流不存在所謂的誰代替誰、誰比誰高級之說,它們互為補充,只是側重點不同而已。
2. 兩種對稱:1.位元組流、字元流的對稱;2.輸入、輸出的對稱。
3. 一個橋梁:將位元組流轉變為字元流的InputStreamReader和OutputStreamWriter。
其中必須注意:
1. PipedInputStream和PipedOutputStrem是兩個比較有趣的類。
2. 支持Buffered的流是我們經常使用的類。
3. 裝飾器(Decorator)模式在java最著名的應用就是用於io的設計。仔細研究各個Filter流與具體流的關系,多看設計模式的書籍。相信你會有所所獲。
4. 學習好io包,是研究net包,rmi包……的基礎哦!
4 . Java資料庫
資料庫的書籍太多太多了,也是太爛太爛了!這方面的書我基本都研究過,推薦的你就看看Apress的《JDBC Recipes A Problem Solution Approach 》很不錯,國外2005年底才出版,(國內好像沒有中文版,不過出了中文版也不一定值得看――國內經常將國外的書翻譯得一塌糊塗、不堪入目)不過我們真的很幸運,網路上有電子版的。值得一看。推薦我看的第一本比較滿意的――Wiley出版的《Java Database Bible》,講得很不錯!Sun公司自己的關於JDBC API介紹的那一本《JDBC API Tutorial andRefernece》也不錯。我第二本JDBC的就是研究的這套API。
不過目前這些書都是一些相對比較浮淺的API應用的書籍。有機會我會給大家帶來介紹JDBC API以及JDBC實現內部細節的書!我盡快努力,同時希望得到大家的支持!
順便給學習JDBC的朋友一點提示:
JDBC的學習和使用主要是這套API,其使用過程也是極其簡單,下面是使用JDBC的一般流程:
1. 載入某個資料庫的驅動(Driver類),通常使用Class.forName(「驅動的類名「);
2. 連接資料庫――
Connection con = DriverManager.getConnection(url,username,password);
3. 得到會話――Statement stmt = con.createStatement();
4. 執行操作――Result rs = stmt.executeQuery(「SQL查詢語句」);
5. 處理結果――
while(rs.next()){
String col1 = rs.getString(1);
……
}
簡單吧!整個JDBC中可以變化的一般是:
1. 可以由Connection對象創建Statement、PreparedStatement和CallableStatement創建三種類型的Statement。
2. 可以創建多種類型的ResultSet:支持單向移動和個自由移動;可更新的和不可更新的;支持不同等級的交易的…..
3. 數據輸入的批處理。
4. 結果集中特殊類型(Blob、Clob、Arrary和Ref、Struct)列的操作。
5. 這些特殊類型的錄入資料庫。
6. javax.sql包中特殊結果集(CachedRowSet、JdbcRowSet、WebRowSet)的操作。
7. 其它的就是一個DataSource了,也很簡單!一個J2EE中的被管理對象
簡單吧!相信大家很快就會征服JDBC。
5. Java 網路編程
網路編程――一個神秘的、充滿挑戰的方向。不過在談Java網路編程之前首先感謝Sun公司的開發人員,因為它們天才的設想,充滿智慧的架構,使廣大java程序員學習java網路編程變得異常簡單。
Java網路編程方面的書,我推薦O'Reilly的《Java Network Programming》,目前已經第三版了,以前的版本市面上肯定有!網路上早有第三版的電子版,國外2004年出版,706頁哦!講得很全,比較深入,太深入的可能由於Sun有些東西沒有完全公開,所以也就不好講了,有興趣的可以下載看看!第二本還是O'Reilly 1998年出版的《Java distributed computing 》,基礎部分寫得比較詳細,後面的實例還是值得研究的。
在大家閱讀這些書之前,給大家一點提示:
java網路編程其實相對比較簡單,入門也很快很快。java網路編程主要包括兩個部分:1.Socket;2.URL部分。不過第二部分也完全建立在第一部分的基礎上。
1. Socket包括客戶端的Socket和伺服器端的ServerSocket。還有就是DatagramSocket和DatagramPacket,它對應於UDP通信協議。 總之,Socket部分是建立其它高級協議的基礎。
2. URL類是一個網路資源定位器,通常和具體的網路協議如HTTP,FTP,Telnet……相關。通過該類可以連接網路上的資源,通過其openStream可以以io包中的流(InputStream)的形式讀取網路資源;通過其OpenConnection方法,可以打開一個連接,在此連接上可以不僅可以完成讀的操作,還可以完成寫的操作。
Java的網路編程大體包括以上兩部分。網路編程和IO以及多線程部分非常密切,在學習此部分前大家一定對這兩部分了解比較透徹。
學習了以上部分你可以研究java.net包中的與此相關的源代碼了!研究所有的源代碼還為時尚早。在整個net包中包含:ContentHandlerFactory、URLStreamHandlerFactory、URLStreamHandler、URLClassLoader等輔助類,它們構成了java.net網路編程的框架,通過研究其源代碼,你不僅可以快速理解java.net包,還可以為以後擴展該包打下基礎,甚至可以將此思維方式運用到自己的項目中。
到此為止你對java.net包應該才了解60%,還有一部分你可以使用JDecompiler之類的反編譯軟體打開你JDK安裝目錄下\jdkxxx\jre\lib目錄中的rt.jar,用WinRAR之類的軟體打開它的sun.net包,反編譯所有的文件,它是URL類工作的細節。當研究完該sun.net包,你就會對整個網路編程很熟悉很熟悉了。
一切看起來我們已經對網路編程很精通了。其實不然,剛剛開始而已,要想深入,請繼續吧!網路上很多優秀的網路編程庫甚至軟體可以為我們「添加功力」。如Apache的HttpCore和HTTPConnection 是兩個和HTTP協議相關庫;JGroups是研究分布式通信、群組通信的必讀庫;接著我們可以研究P2P的軟體包,如Sun公司的JXTA,它可能是java平台點對點通信未來的標准哦!接著你可以研究成熟得不得了,使用極其廣泛得P2P軟體Azureus!www.sourceforge.net可以下載到!
千里之行始於足下!Just do it !(目前我也只研究了net包,其它的會在不久的將來繼續深入。Sun公司因為某些原因沒有公開net的其它實現細節,在其允許將其源代碼以文字的形式加以研究,以及允許將其沒有公開的實現寫入書中時,我很希望能出一本java網路編程的書籍,以飧廣大讀者!!)
6. Servlet和JSP
Servlet、JSP的書也是滿地都是!值得推薦的也僅僅兩三本。實推Addison Wiley的《Servlets and JavaServer pages :The J2EE Technology Web Tier》,又是一本很厚的哦!國外2003年出版、784頁,講得比較全,例子也很多,特別是第八章Filter,舉了幾個不錯的例子。其它所有我看到的關於Servlet和JSP的書都沒有如此深入的!(可能有我沒有看到而已)。O』reilly的《Java Servlet Programming》和《Java Server Pages》相對比較好懂一些,可以讀讀!
在大家學習Servlet和Jsp之前我還是要提醒一下:
本質上說Servlet就是一個實現Servlet介面的、部署於伺服器端的伺服器端的程序罷了!它可以象寫其它任何java應用程序一樣編寫,它可以操作資料庫、可以操作本地文件、可以連接本地EJB……編寫Servlet程序的一般流程為:
1. 繼承一個HttpServlet類;
2. 覆蓋其doGet、doPost方法;
3. 在覆蓋方法的內部操作方法參數HttpServletRequest和HttpServletResponse。
4. 讀取請求利用HttpServletRequest。利用HttpServletRequest你可以操作Http協議的協議頭、可以得到請求的操作方法、可以得到請求的路徑、可以得到請求的字元串、以及和請求客戶相關的信息,更主要的你可以得到Cookie和HttpSession這兩個對象。
5. 利用Cookie你可以操作「甜心」對象或者將其寫入HttpServletResponse中。
6. 向客戶輸出信息可以使用HttpServletResponse。使用HttpServletResponse可以寫入各種類型的協議頭、可以增加Cookie、可以重定向其它URL、可以向客戶發送Http協議的狀態碼。
7. 利用HttpSession在會話內完成你想實現的任何功能。
同時Servlet還提供了一些事件和事件監聽器(簡單的觀察者模式而已)。還有就是過濾器(Filter)和包裝器(ServletRequestWrapper、ServletResponseWrapper)――簡單的流的使用和裝飾器模式的使用。
學習Sevlet、JSP必然要部署到伺服器中,記住通常文件部署的步驟和參數的設置以及在程序中如何使用就可以了。
完全理解Servlet後,學習jsp相對比較容易了!Jsp完全建立在Servlet的基礎上,它是為了迎合那些喜歡在Html文檔中嵌入腳本(如:PHP之類的網頁編程語言)的程序員的需要罷了!學起來也相當的容易!
一切看起來似乎那麼的風平浪靜,簡單好學!簡單的表象背後有其復雜的機理。要想對Servlet和Jsp徹底研究,你得研究Tomcat等開源軟體的具體實現。它無非就是一個伺服器,在客戶利用網頁通過HTTP協議向伺服器發送請求後,伺服器將此HTTP請求轉化為相應的HttpServletRequest對象,調用你編寫的Servlet罷了,在你的Servlet中你肯定操作了此HttpServletRequest了吧,同時操作了HttpServletResponse了吧,伺服器就將此HttpServletResponse按照HTTP協議的要求利用HTTP協議發送給你的瀏覽器了!在伺服器端的Jsp網頁在被客戶請求後,Tomcat會利用編譯軟體,使用javax.servlet.jsp包中的模板,編譯此jsp文件,編譯後就是一個Servlet!以後的操作和Servlet完全一樣哦!
在Servlet和Jsp的基礎上出現了,所謂的高級技術:JSTL,Struts……無非就是一些標簽和MVC模式的使用。
繼續前進吧!勝利就在前方!!
7. 多線程
一個看起來很神秘,卻很容易上手、很難精通的方向!
我推薦兩本我感覺很好的書籍。首先是我第一本能上手看的這方面的書,Sams 1998年出版的《Java Thread Programming》,寫得暴好,很容易讀懂,我有空還時常看當時的筆記!要知道怎麼好你自己看吧!第二本OReilly三次出版的《Java Threads》,最新是2004版,國內好像有中文版,推薦你還是看英文版的吧!書中談到了與多線程相關的N個方向,如IO、Swing、Collection等等。
給大家一點提示吧!java類庫中與多線程相關的類不是很多,主要有:Thread、ThreadGroup以及ThreadLocal和InheritableThreadLocal四個類和一個Runnable介面;關鍵字synchronize、volatile ;以及Object對象的wait、notify、notifyAll方法!
1 Thread是多線程的核心類,提供了一系列創建和操作多線程的方法。
2 ThreadGroup是一個管理Thread的工具類。
3 ThreadLocal和InheritableThreadLocal為Thread提供了一個類似保險箱功能的存儲線程對象的類!
4 Runnable不用說了吧!
5 synchronize是同步方法和同步塊的核心哦!多個線程調用此方法時,只有一個線程可以使用此方法,其它方法阻塞,從而保證被操作對象內部狀態完整性。某個線程調用帶有synchronize的方法或塊時會得到該對象的對象鎖,完成塊中的操作後釋放此對象鎖,從而其它對象可以繼續操作。
6 wait、notify、notifyAll提供了有效的等待/通知機制。Java語言中每一個對象都有一個休息室,任何線程在其操作的對象的狀態不滿足的情況下,在該對象的休息室中休息,釋放對象鎖;當其它線程操作該對象後,喚醒休息室中的線程,它們再檢查條件,當條件滿足後,執行相應的操作。
多線程大致就這么多基礎的!簡單嗎!這對於一個真正的程序員應該是不夠的,真正對多線程要有所掌握,請您研究java.util.concurrent包吧!大師Doug Lea的作品,原先是一個開源的一致性編程的庫,後來被Sun公司並入java類庫。作者的網站上也有另外一個版本的該類庫!值得研究的好東西!Hibernation、OpenJMS等開源軟體都使用了此包!
8. 設計模式
談到設計模式很多人多會推薦GOF的那本,該書在Amzon上是五星級的推薦書籍。不過對於學習java沒多久的、特別是java初學者,我很不推薦這本書。主要是該書的例子基本都是C++的,很多細節沒有講述得足夠清楚。
我給大家推薦的第一本是閻宏博士的《Java 與模式》,它是第一本中國人自己寫的關於設計模式的書籍,寫的比較有趣,融合了很多中華民族的文化和觀念,例子、類圖都比較多,且相對簡單!非常不錯的入門書籍――又是大塊頭哦!
其次我推薦Wiley出版社出版的《Pattern In Java》一套三本,我才看了第一本,好像第二本不怎麼樣,第三本還不錯!
第三本是中文翻譯版的關於多線程模式的(很難得的中文翻譯版)中國鐵道出版社2003年出版的《Java多線程設計模式》,將多線程模式講得非常淺顯,配有大量的圖例,每章都有習題,最後有答案!我研究多線程模式就是由它開始的!
第四本,今年出版的Head First系列的《Head First Design Pattern》,秉承Head First系列圖書的優點,大量的類圖、豐富的實例、有趣的註解,值得購買!
其次在J2EE方向你可以研究閱讀Addison Wesley 2002年出版的《Patterns of Enterprise Application Architecture》,眾多大腕的作品,講企業消息集成的!Sun提供的《J2EE PATTERNS SL500》也很好!晚了推薦那一本Amzon 4星半的《Holub on patterns》,大師的作品,提供了,很值得研究的例子,不過對上面四本不是很熟悉的讀者,最好不要讀它!可能會讓你比較累!
我學習設計模式經過一段很曲折的路線,前前後後大約看了20本,閻宏博士的《Java 與模式》我看了4遍,還排除我第一次基本沒看懂的看!記得研一時老師給我們講了GOF的那本,作為選修課,我和它們計算機系的碩士、博士們一起,到最後一個班40-50個人,不超過3個人明白,我也沒有明白任何一點(基礎差吧――主要我對C++語言一點都不了解),憑我不伏輸的性格,我認為我對java語言理解還可以,我就借了《Java 與模式》,結果還是基本沒看懂。很有幸的是讀研三時,聽過了上交大饒若楠老師關於Java OOP語言的講座,我懂了組合書籍模式等三種設計模式後,對其它模式有了強烈的興趣和要征服它的願望!工作後我買的第一本就是《Java 與模式》,第一遍花了2個月研究了這個1000多頁的大塊頭,後來第三遍15天左右就可以搞定,筆記記了一大本!從此一發不可收拾。
選對書、埋頭研究。相信很快就會入門的!
學習Java語言8個簡單的部分,這只是我們研究Java語言的開始!這些都懂了充其量一個java程序員而已,後面的路很長很長!我們可以繼續研究資料庫實現的源代碼、Servlet伺服器的源代碼、RMI、EJB、JNDI、面向方面編程、重構、ANT工具、Eclipse工具、Spring工具、JBoss、JOnAS、Apache Geronimo等J2EE伺服器!研究了這些你可能會成為一個出色的J2EE Architecture!你可以繼續研究剖析器、編譯器、JNODE(java寫的操作系統)……
感謝大家有此耐心,聽我羅羅嗦嗦大半天!感謝大家的閱讀,感謝群里的朋友!這篇文章主要應群里朋友的呼聲――不知道如何選書、不知道從何看起!大半天的功夫完成趕此文章,字句上難免有失誤,同時由於能力有限不凡有錯誤!請閱讀後批評指正!
上面基本是我研究java語言的順序,以上書籍都是我閱讀過的,不存在替任何出版社宣傳的成分!有的方法可能不適合你,假如你能收獲一點,兩點甚至更多,請你不要吝嗇推薦給你的朋友――共同學習!
感謝大家的閱讀;感謝互聯網的設計者;感謝java的設計師;感謝www.open-open.com和www.sourceforge.net網站!
5. Java資料庫連接池的幾種配置方法(以MySQL數
連接先建立一些連接,並且這些連接允許共享,因此這樣就節省了每次連接的時間開銷。Mysql資料庫為例,連接池在Tomcat中的配置與使用。
1、創建資料庫Student,表student
2、配置server.xml文件。Tomcat安裝目錄下conf中server.xml文件。
<GlobalNamingResources>
<Resource
name="jdbc/DBPool"
type="javax.sql.DataSource"
password=""
driverClassName="com.mysql.jdbc.Driver"
maxIdle="2"
maxWait="5000"
username="root"
url="jdbc:mysql://localhost:3306/student"
maxActive="3"
/>
</GlobalNamingResources>
name:指定連接池的名稱
type:指定連接池的類,他負責連接池的事務處理
url:指定要連接的資料庫
driverClassName:指定連接資料庫使用的驅動程序
username:資料庫用戶名
password:資料庫密碼
maxWait:指定最大建立連接等待時間,如果超過此時間將接到異常
maxIdle:指定連接池中連接的最大空閑數
maxActive:指定連接池最大連接數
3、配置web.xml文件。
<web-app>
<resource-ref>
<description>mysql資料庫連接池配置</description>
<res-ref-name>jdbc/DBPool</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
</web-app>
4、配置context.xml文件
與server.xml文件所在的位置相同。
<Context>
<ResourceLink
name="jdbc/DBPool"
type="javax.sql.DataSource"
global="jdbc/DBPool"
/>
</Context>
5、測試
DataSource pool = null;
Context env = null;
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
env = (Context)new InitialContext().lookup("java:comp/env");
//檢索指定的對象,返回此上下文的一個新實例
pool = (DataSource)env.lookup("jdbc/DBPool");
//獲得資料庫連接池
if(pool==null){out.printl("找不到指定的連接池!");}
con = pool.getConnection();
st = con.createStatement();
rs = st.executeQuery("select * from student");
}catch(Exception ex){out.printl(ne.toString());}
6. java工程師面試時最看重的是什麼
一、專業技能
熟練的使用Java語言進行面向對象程序設計,有良好的編程習慣,熟悉常用的JavaAPI,包括集合框架、多線程(並發編程)、I/O(NIO)、Socket、JDBC、XML、反射等。
熟悉基於JSP和Servlet的JavaWeb開發,對Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫無腳本動態頁面,有使用監聽器、過濾器等Web組件以及MVC架構模式進行JavaWeb項目開發經驗。
對Spring的IoC容器和AOP原理有深入了解,熟練的運用Spring框架管理各種Web組件及其依賴關系,熟練的使用Spring進行事務、日誌、安全性等的管理,有使用SpringMVC作為表示層技術以及使用Spring提供的持久化支持進行Web項目開發的經驗,熟悉Spring對其他框架的整合。
熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關聯映射、繼承映射、組件映射、緩存機制、事務管理以及性能調優等有深入的理解。
熟練的使用HTML、CSS和JavaScript進行Web前端開發,熟悉jQuery和Bootstrap,對Ajax技術在Web項目中的應用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進行項目開發的經驗。
熟悉常用的關系型資料庫產品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行資料庫編程。
熟悉面向對象的設計原則,對GoF設計模式和企業應用架構模式有深入的了解和實際開發的相關經驗,熟練的使用UML進行面向對象的分析和設計,有TDD(測試驅動開發)和DDD(領域驅動設計)的經驗。
熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web伺服器和應用伺服器的使用,熟悉多種伺服器整合、集群和負載均衡的配置。
熟練的使用產品原型工具Axure,熟練的使用設計建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開發環境Eclipse和IntelliJ,熟練的使用前端開發環境WebStorm,熟練的使用軟體版本控制工具SVN和Git,熟練的使用項目構建和管理工具Maven和Gradle。
說明: 上面羅列的這些東西並不是每一項你都要爛熟於心,根據企業招聘的具體要求可以做相應的有針對性的准備。但是前6項應該是最低要求,是作為一個Java軟體工程師必須要具備的專業技能。
二、項目經驗
項目介紹
本系統是X委託Y開發的用於Z的系統,系統包括A、B、C、D等模塊。系統使用了Java企業級開發的開源框架E以及前端技術F。表示層運用了G架構,使用H作為視圖I作為控制器並實現了REST風格的請求;業務邏輯層運用了J模式,並通過K實現事務、日誌和安全性等功能,通過L實現緩存服務;持久層使用了M封裝CRUD操作,底層使用N實現數據存取。整個項目採用了P開發模型。 說明: E通常指spring(Java企業級開發的一站式選擇); F最有可能是jQuery庫及其插件或者是Bootstrap框架,當然如果要構建單頁應用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G顯然是MVC(模型-視圖-控制),最有可能的實現框架是spring MVC,除此之外還有Struts 2、JSF以及Apache為JSF提供的MyFaces實現; H是JSP,JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來生成視圖還可以是各種文檔或報表(如Excel和PDF等); I是Servlet或者自定義的控制器,他們是MVC中的C,當然Spring MVC中提供了作為前端控制器的DispatcherServlet; J通常是事務腳本; K應該是AOP(面向切面編程)技術; L目前廣泛使用的有memcached和Redis; M的選擇方案很多,最有可能的是hibernate和MyBatis,也可以兩種技術同時運用,但通常是將增刪改交給hibernate來處理,而復雜的查詢則由MyBatis完成,此外TopLink、jOOQ也是優秀的持久層解決方案; N底層的數據存取傳統上是使用關系型資料庫,可以是MySQL、Oracle、SQLServer、DB2等,隨著大數據時代的來臨,也可以採用NoSQL(如MongoDB、MemBase、BigTable等)和其他大數據存取方案(如GFS、HDFS等); P是項目的開發模型,可以是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。
項目開發流程
1、可行性分析:可行性分析報告、項目開發計劃書;
2、需求分析:需求規格說明書OOAD(用例圖、時序圖、活動圖);
界面原型:幫助理解需求、業務層設計時推導事務腳本;
3、設計:概要設計說明書、詳細設計說明書;
*抽取業務實體(領域對象):類圖、E-R圖(概念設計階段);
分層架構:確定各層的技術實現方案(具體到使用的框架、資料庫伺服器、應用伺服器等);
*業務層設計:事務腳本模式(事務:用戶發送一次請求就是一個事務;
腳本:一個方法或一個函數;
*事務腳本:把一次請求封裝為一個方法或一個函數;事務腳本模式:一個事務開始於腳本的打開,終止於腳本的關閉);
*業務層涉及的對象有三種類型:事務腳本類(封裝了業務的流程)、數據訪問對象(DAO,封裝了持久化操作)、數據傳輸對象(DTO,封裝了失血/貧血領域對象),三者之間的關系是事務腳本類組合(聚合)數據訪問對象,這二者都依賴了數據傳輸對象正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)資料庫物理設計(ER圖轉換成表間關系圖、建庫和建表、使用工具插入測試數據);
3、編碼;
4、測試:測試報告、缺陷報告;
*單元測試:對軟體中的最小可測試單元進行檢查和驗證,在Java中是對類中的方法進行測試,可以使用JUnit工具來實施;
*集成測試:集成測試也叫組裝測試或聯合測試。在單元測試的基礎上,將所有模塊按照設計要求組裝成為子系統進行測試;
*系統測試:將已經確認的軟體、硬體、外設、網路等元素結合在一起,進行信息系統的各種組裝測試和確認測試,系統測試是針對整個產品系統進行的測試,目的是驗證系統是否滿足了需求規格的定義,找出與需求規格不符或與之矛盾的地方,從而提出更加完善的方案;
*驗收測試:在軟體產品完成了單元測試、集成測試和系統測試之後,產品發布之前所進行的軟體測試活動。它是技術測試的最後一個階段,也稱為交付測試。驗收測試的目的是確保軟體准備就緒,並且可以讓最終用戶將其用於執行軟體的既定功能和任務;
5、交付和維護:用戶手冊、操作手冊;
三、項目管理
版本控制:CVS/SVN/Git
自動構建:Ant/Maven/Ivy/Gradle
持續集成:Hudson/Jenkins
四、系統架構
負載均衡伺服器:F5、A10;
應用伺服器: HTTP伺服器:Apache、NginX(HTTP、反向代理、郵件代理伺服器);
Servlet容器:Tomcat、Resin
EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere;
資料庫伺服器:MySQL、Eclipse、Oracle;
五、第三方工具(插件)應用
圖表工具:基於jQuery的圖表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
報表工具:Pentaho Reporting、iReport、DynamicReports等。
文檔處理:POI、iText等。
工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
作業調度:Quartz、JobServer、Oddjob等。
緩存服務:EhCache、memcached、SwarmCache等。
消息隊列:Open-MQ、ZeroMQ、ActiveMQ等。
安全框架:Shiro、PicketBox等。
搜索引擎:IndexTank、Lucene、ElasticSearch等。
Ajax框架:jQuery、ExtJS、DWR等。
UI插件:EasyUI、MiniUI等。
富文本框:UEditor、CKEditor等。
六、面試提問
項目是為哪個公司開發的?項目的投入是多少?
有多少人參與了項目開發?整個團隊中,測試人員、開發人員、項目經理比例是多少?
項目開發了多長時間?項目總的代碼量有多少?你的代碼量有多少?
項目採用了怎樣的開發模型或開發流程?項目的架構是怎樣的?項目的技術選型是怎樣的?
你在項目中擔了怎樣的職責?是否經常開會或加班?項目完成後有哪些收獲或是經驗教訓?
項目中最困難的部分是什麼?如何解決團隊開發時遇到的各種沖突?
七、面試時可以反問面試官的問題
我注意到你們使用了X技術,請問你們是如何解決Y問題的?
為什麼你們的產品使用了X技術而不是Y技術?據我所知,X技術雖然有A、B、C等好處,但也存在D和E問題,而Y技術可以解決D和E問題。
我對您說的X技術不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?
你們團隊是如何進行項目規劃的?一周會有幾次例會?每周的代碼量大概是多少?
就X問題我能想到的解決方案目前就只有Y了,請問您會怎麼解決這個問題?
八、S.A.R.法則
九、面談原則
聲音適中、口齒清楚、面帶微笑、個人形象精神,講禮貌。
主動跟面試官聊他感興趣的話題,讓面試官滿意。
主動的大膽的跟面試官聊自己熟悉有經驗的內容:項目、技術點等,做到揚長避短。
一定要表達自己非常想得到這個崗位,自己很願意學習不懂的技術。
根據自己的實際水平提出合理的待遇要求。
十、自我評價
學習能力(搞IT行業的人需要不斷的了解新的技術、工具和方法)
團隊意識(相比個人英雄主義,IT行業更倡導團隊合作)
抗壓能力(很多IT企業的工作強度相對來說還是比較大的)