其實就是scope屬性裏設置singleton
| prototype
兩個屬性,默認是singleton單例的
prototype是多實例。
其餘的request
:每次HTTP請求會建立新的bean,該做用域僅適用於WebApplicationContext環境。
session
:同一個HTTP session共享bean,該做用域僅適用於WebApplicationContext環境。java
springmvc提供了過濾器CharacterEncodingFilter:這個類有兩個變量String類型的encoding、boolean類型forceEncoding默認false,核心方法doFilterInternal,方法中有request.setCharacterEncoding設置請求字符集,設force那個爲true的話,能夠設置response.setCharacterEncoding。
那麼在web.xml裏須要配置這一屬性:git
<!--post方式字符集--> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--初始化參數--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <!--響應亂碼,可設可不設--> <init-param> <param-name>force-encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
get方式,修改Tomcat的server.xml中的配置。web
springmvc在處理模型數據有兩種方式:方式一.返回值是ModelAndView、方式二.在參數中傳入Map,Model或者ModelMap;最後都會轉換爲一個 ModelAndView對象(因此是以request做用域來響應用戶)
流程以下圖:
redis
總結
請求過來後,先到DispatcherServlet中央處理器,以後它會調用處理器映射器找到HandlerMapping處理器映射器裏的方法,返回HandlerExecultionChain對象,這個對象包含了全部的攔截器和處理器。
以後拿到HandlerAdapter處理器適配器,由它找到對應的處理器去調用請求,至關於調用controller以後,會返回ModelAndView對象,這個對象返回到中央處理器。
中央處理器經過咱們在springmvc配置文件中配的InternalResourceViewResolver視圖解析器,獲得視圖InternalResourceView。
獲得視圖以後,調用裏邊的方法進行渲染視圖,將咱們的模型數據,在頁面給用戶呈現出來,響應給用戶。算法
CentOS 6spring
運行級別runlevel(centos6),
經常使用級別3和5
0 停機、1 單用戶root狀態、2 多用戶狀態、3 有網多用戶狀態
、4. 保留、5 圖形模式
、六、重啓sql
CentOS 7數據庫
Git:分佈式版本控制工具json
建立分支centos
切換分支
一步完成:git checkout -b <分支名> #直接就完成了建立,並切換過去了
合併分支
先切換到主幹 git checkout master
git merge <分支名>
刪除分支
先切換到主幹 git checkout master
git branch -D <分支名>
工做流:
master分支,分出多個develop分支,並行開發互不影響;出現bug了,能夠有master分出一個臨時分支,處理完後再合併到master中合併上線;以後將臨時分支合併到develop分支,保證版本一致,避免bug重複出現。
開發人員開發完成了,先合併到dev分支,建立測試分支進行測試,沒問題了在合併到master上線,以後再和dev合併保證一致。
兩種:
RDB(Redis DataBase)快照,將全部內存數據進行全量保存
;優勢:省空間,效率高;缺點:數據量大耗性能,最後一次持久化可能數據丟失
AOF(Append Of File)日誌,以日誌形式來記錄每一個寫操做增量操做
;優勢:備份穩健,可讀日誌處理誤操做;缺點:佔更多磁盤,備份慢,佔性能
MySQL官方定義:索引(Index)是幫助MySQL高效獲取數據的數據結構。簡而言之,索引本質是數據結構。
優:提升檢索
效率,下降數據庫IO成本;經過索引列對數據進行排序
,下降排序成本,下降cpu消耗。
劣:下降更新表的速度
,由於更新表時,不只要保存數據,還要保存索引更新了的索引列字段,不斷調整索引信息。
實際上,索引也是一張表
,該表保存了主鍵與索引字段,並指向實體表的記錄,因此索引列也要佔用空間
主鍵自動惟1、頻繁查詢字段、外鍵關聯字段、組合索引性價比高、排序字段、統計或分組字段(分組更傷性能)
表記錄太少、頻繁增刪改、where用不到字段、過濾性很差字段(例:性別)
GC發生在heap堆
中。
GC是分代收集算法
:頻繁收集年輕代``Minor GC
、次數較少老年代``Full GC
、永久區不GC
GC的四大算法:
String
綁定ip地址,能夠記錄ip地址的操做。
Hash
存儲用戶信息
【id,name,age】
Hset(key,field,value)
Hset(userKey,id,101)
當我修改用戶信息某一項屬性的時候,能夠直接取出單一的值。
不建議使用String類型
是由於,在反序列化時,會所有序列化出來,會增長IO次數,下降性能。
List
實現最新消息的排行
,
還能夠利用List的push命令,將任務存在list集合中,同時使用另外一個命令,將任務從集合中取出[pop]。
Redis — List 數據類型來模擬消息隊列。【電商中的秒殺就能夠採用這種方式來完成一個秒殺活動】
Set
特殊之處:能夠自動排重(非重複)。好比說微博中將每一個人的好友存在集合(Set)中
,
這樣求兩我的的共通好友的操做。咱們只須要求交集便可。
Zset (SortedSet)
以某一個條件爲權重,進行排序。 京東:商品詳情的時候,都會有一個綜合排名,還能夠按照價格進行排名。
它們都是基於Lucene搜索服務器基礎上開發,高性能的企業級
搜索服務。【它們都是基於分詞技術
構建的倒排索引
方式進行查詢】
區別:
Solr的本質是web項目
,須要部署到web服務器上,啓動服務器時需配置solr。Solr集羣圖
ElasticSearch集羣圖
單點登陸:一處登陸、多處使用
(前提:單點登陸多使用在分佈式系統中)
【京東:單點登陸是將token放入到cookie中】
Redis
【京東將未登陸購物車放在redis中,給未登陸用戶存儲惟一標識uuid,保存用戶未登陸時的購物車信息】、cookie
Redis
緩存[hash或string:hset(key,field,value)],讀寫速度快;保證數據安全性,將數據存到數據庫中。綜合數據
分佈式系統中處理高併發的情景。
因爲高併發的環境下,來不及同步處理大量請求,則會致使請求發生阻塞。這是使用消息隊列的異步通訊
能夠解決問題。
消息隊列弊端: 消息的不肯定性,延遲隊列,輪詢技術來解決該問題便可!(ActiveMQ java)