Lambda 表達式-也是函數編程的一種方式(將函數作爲參數)
方法的應用,應用已有的java類對象的方法或者構造器。與Lambda表達式相結合,方法應用使得語言構造更加簡潔,從而減小代碼的冗餘
默認方法,默認方法就是一個在接口裏邊有了一個實現的方法
新工具-新的編譯工具,如:Nashorn引擎jjs,類依賴分析器jdeps
Stream API - 把真正的函數式編程風格引入到Java中。
Date Time API - 增強對日期與時間的處理
Optional 類 - Optional 類已經成爲Java 8 類庫的一部分,用來解決空指針異常
Base64 Java8 內置了Base64 編碼的編碼器和解析器前端
首先須要知道在不一樣的JDK版本上面hashMap 的實現是有區別的:java
JDK8以前: 數組 + 鏈表spring
JDK8以後:數組 + 鏈表 + 紅黑樹數據庫
當你put元素時:編程
#### 執行步驟:json
a.計算該元素的hashCode 值後端
b.經過計算它的hashCode 值去肯定數組下標,數組的初始化16大小,增加因子爲0.75數組
c.當存在哈希衝突是,相同的hashCode 值獲得的數組下標就是會同樣的,則單純的數組則不知足,須要鏈表的支持安全
d.鏈表知足長度大於8時轉成紅黑樹,那爲啥8呢,遵循泊松分佈,紅黑樹平均查找長度是log(n),長度爲8的時候,平均查找長度爲3,若是繼續使用鏈表,平均查找長度爲8/2=4,這纔有轉換爲樹的必要。mybatis
AOP:面向切面編程,aspect oriented programming
面向切面爲的是將日誌記錄,性能統計,安全控制,事務處理,異常處理等代碼從業務邏輯代碼中劃分出來
主要的功能:日誌記錄,性能統計,安全控制,事務處理,異常處理等等
IOC:控制反轉,就是建立對象的操做交給Spring容器來作。DI 依賴注入,spring經過xml配置文件實例化對象,依賴對象經過
setter方法獲取。
@Controller 用於標註控制層組件
@Service 用於業務層,也是實現接口
@Component 泛指組件,在很差歸類狀況下進行標註
@RequestMapping 請求映射,能夠指定請求方式
@Resource 裝bean注入使用:經過byName自動注入
@Autowired 自動裝配bean:經過ByType自動注入
@ResponseBody 響應返回數據類型json
@Transactional 事務
@restcontroller 註解 等價於 @responseBody + @Controller
@Restcontroller 和@controller 度用於Spring 類是否接受http請求
區別之處:
@restcontroller 返回json數據不須要在方法前面加@ResponseBody註解了;不能返回jsp,HTML頁面,視圖解析器沒法解析jsp,HTML頁面,而@controller 能夠返回指定的頁面;
返回json,xml 或者自定義格式內容到頁面顯示的話,@restController 單個操做就行,由於它能夠自動將實體轉成Json格式;而@controller須要加上@responseBody註解
1.選擇合適的字段屬性 2.使用鏈接join 代替子查詢 3.使用union 代替手動建立的臨時表 4.事務 5.鎖定表 6.使用外鍵 7.使用索引 索引應創建在那些將用於JOIN,WHERE判斷和ORDERBY排序的字段上。 儘可能不要對數據庫中某個含有大量重複的值的字段創建索引。好比枚舉類型 8.優化查詢語句
索引是對數據庫表中一列或者多列的值進行排序的一種結構,使用索引能夠快速訪問數據庫表中特定信息。
索引類型5種:
普通索引:僅加速查詢
惟一索引:加速查詢 + 列值惟一(能夠有null)
主鍵索引:加速查詢 + 列值惟一(不能夠有null)+ 表中只有一個
複合索引:多列值組成一個索引
全文索引:對文本的內容進行分詞,進行搜索
用戶能夠在多個列創建索引,叫作複合索引。
最左匹配原則,以最左爲起點任何連續的索引都能匹配上。遇到範圍查詢時就會中止匹配。
井號SQL的參數佔位符,mybatis會將SQL的#{} 替換成? 號佔位符設置參數存在預編譯、防止SQL注入
${}是變量佔位符,屬於靜態文本替換,不存在預編譯;
須要原樣輸出的時候能夠${}方式;推薦使用#{}方式,安全性高。
1.構造方法注入 <bean id ="name" class=""> <construcion-arg /> 可使用這個P 域和 C域的方式; </bean> <bean id="userService" class="com.lyu.spring.service.impl.UserService"> <constructor-arg name="userDao" ref="userDaoJdbc"></constructor-arg> <constructor-arg name="user" ref="user"></constructor-arg> </bean> 2.setter注入 提供set方法 <!-- 註冊userService --> <bean id="userService" class="com.lyu.spring.service.impl.UserService"> <!-- 寫法一 --> <!-- <property name="UserDao" ref="userDaoMyBatis"></property> --> <!-- 寫法二 --> <property name="userDao" ref="userDaoMyBatis"></property> </bean> 3.基於註解的注入 自動注入 @Autowired:spring註解,默認是以byType的方式去匹配與屬性名相同的bean的id, 若是沒有找到,就經過byName的方式去查找,
一、用戶發送請求至前端控制器DispatcherServlet
二、DispatcherServlet收到請求調用HandlerMapping處理器映射器。
三、處理器映射器找到具體的處理器,生成處理器對象及處理器攔截器(若是有則生成)一併返回給DispatcherServlet。
四、DispatcherServlet調用HandlerAdapter處理器適配器
五、HandlerAdapter通過適配調用具體的處理器(Controller,也叫後端控制器)。
六、Controller執行完成返回ModelAndView
七、HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
八、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器
九、ViewReslover解析後返回具體View
十、DispatcherServlet根據View進行渲染視圖(即將模型數據填充至視圖中)。
十一、DispatcherServlet響應用戶
1.select 、insert、update、delete 四個基本的標籤 2.resultMap 查詢結果集進行自動封裝,建議少使用resultType標籤 3.parameterMap 入參集合進行封裝 <parameterMap id="ParameterMap" type="Student"> <parameter property="studentId" resultMap="ResultMap"></parameter> <parameter property="studentName" resultMap="ResultMap"></parameter> </parameterMap> <resultMap id="ResultMap" type="Student"> <id column="id" property="studentId"></id> <result column="name" property="studentName"></result> </resultMap> 4.selectKey 插入數據的時候獲取該數據的id值 5.trim 去除 6.where 條件 7.set 注意的是:使用set能夠自動去除逗號 <update> update user <set> <if test="param.name !=null and param.name !=''"> name = #{param.name}, </if> </set> where id = #{param.id} 8.if 結合 test 進行參數的判斷 9.foreach 循環遍歷 foreach元素屬性有item,index,collection,open,separator,close item:別名 index:下標位置 open:以什麼開始 separator:以什麼符號做爲分隔符 close:以什麼結束 <select id="selectByIds" resultMap="baseMap"> select * from user where id in <foreach collection="list" index="index" item ="item" open="(" separator ="," close=")" >#{item} </foreach> </select> collection 的類型能夠list,array,map 對應的參數類型爲:List、數組、map集合 10.choose 結合 when 與otherwise進行選擇 11.when 當啥時候 12.otherwise 另外一種選擇 13.bind 綁定 14.resultType 跟resultMap 效果是相同
本身的理解:ORM指的是對象關係映射,mybatis僅有對字段的關係映射,對象數據以及對象實際關係須要咱們本身手動去寫SQL去實現和管理,而hibernate是全自動的ORM框架,擁有完整的Javabean對象與數據庫表結構自動生成SQL,以前本身動手過Javabean去實現數據庫建立表結構是測試。另外,Mybatis擁有自動化SQL語句,在實際開發中都是不定因數而須要咱們去重寫複雜的SQL語句,hibernate則沒有那麼靈活好用了。
多線程建立的方式有四種:
第一種是繼承Thead類,重寫它的run方法,以後就能夠調用
第二種是實現Runnable接口,重寫run方式
第三種是實現callable接口,重寫call方法
第四種是採用線程池,executorService對象,也是須要配合Runnable進行實現
本身以爲這塊比較薄弱,雖然是本身作的項目,殊不知道如何去表達清楚,如何去說出項目是怎樣的一個流程,遇到這裏我覺的有必要去借鑑一下大佬的意見。(
1.項目背景 在怎樣的條件下進行
2.項目介紹 技術介紹,功能介紹
3.項目參與人員 分工合做,負責人
4.項目進展實施狀況 目前進展,項目還剩下的工做量以及規劃
5.項目難題及解決 遇到技術難題如何解決的考慮好回答,讓你影響深入的比較有深意問題,採用哪些解決辦法
6.項目成果 能夠從前端功能點,隱藏bug;從後端功能接口是否完善,是否存在容錯問題
7.總結反思 從0到1的這個過程你收穫了多少?後期開發有啥建議啥的?