合抱之木,生於毫末;九層之台,起於壘土;
千里之行
,始於足
下。-----------送給在碼農之路上搬磚的自己。
2018-1-21杭州
1.mybatis篇
使用者的等級需求。每次新增乙個等級需要在之前的level上+1。所以需要求資料庫同乙個**商下level的最大值,然後在次基礎上+1。由於sql語句不熟悉。導致求這個最大值的時候花了1個小時的時間。
問題:直接用max函式求解,資料庫有值的時候沒有問題,當資料庫的該值為空時,返回的時null,不是乙個int/integer。困擾了許久。
解決辦法:1。巢狀查詢,先找出最大值,然後用level=最大值得到該條記錄。但是多了乙個自查詢,時間複雜度為o(n^2)。
2。使用order by level 然後limit 0,1。使用按照遞增遞減的順序然後只查乙個,完美解決。比1中的時間複雜度低。
2.web容器。web.xml
之前一直不知道web.xml具體的存在原理以及filter的使用
web容器主要是在專案啟動的時候啟動一些專案執行所必須的配置。spring***/類載入/servlet/filter等
1.spring***:現在一般專案都會使用spring框架,整個專案部署在tomcat上執行的時候,首先會載入spring***,然後通過spring***去啟動我們在spring配置檔案中的各種配置以及各種bean(註解注入/配置注入),以及資料庫的連線池。定時任務配置/ aop/mq,其他通過spring啟動的框架(mybatis/hibernate)等等。
2.類載入:專案執行的時候我們先是將我們的**通過編譯器解析成位元組碼檔案,也就是類載入執行的檔案,整個專案所執行的不是我們的**,而是我們**編譯的位元組碼。
3.servlet:web專案都是通過servlet請求,找到對應的處理器處理,然後通過視**析器將頁面渲染給前端。
4.filter:filter是web.xml不起眼的地方(之前基本上沒有使用過。。。或者說沒有注意到這個東東~)。主要起著過濾器的作用。
filter的使用
1.一般web專案都會用上乙個filter處理編碼解碼問題。整個filter也很簡單就是編譯碼。
2.其實filter中可以配置許多我們能用得到的地方,比方說前的編譯碼、使用者許可權安全、所有請求的過濾。
3.filter有三個方法:1。init() 主要是初始化一些基本的配置資訊
2。dofilter()這個就是我們業務處理的關鍵方法,在這個方法裡面我們可以過濾掉所有我們想過濾掉的請求(包括簡單的登陸頁面請求/介面請求)。當通過過濾的時候我們呼叫
chain.dofilter(request,response)方法轉到下乙個filter過濾器上。當是最後乙個過濾器時就會直接走servlet請求的正常流程,找到控制器處理器,視**析器等等。
3.destory() 一般不會做處理,使用預設的就好。
3.threadlocal
threadlocal主要提供了get/set方法。獲取你所需要的物件什麼的。主要用於多執行緒的處理。當乙個物件經常性的會同一時刻被不同執行緒呼叫,且會更改物件的內容,我們通過thradlocal每個執行緒單獨使用自己的object的副本,並將修改作用在object的副本上,並不會影響其他執行緒對這個object的使用。作用於多執行緒高併發的業務處理。
每乙個執行緒呼叫時,都會將這個object的副本存進乙個map中,其中key是這個執行緒本身value是這個object物件,其他的執行緒無法拿到這個執行緒的object副本,所以他是安全的,然後通過map.get(key)拿到執行緒自己的object副本。
4.每次談需求的時候不能為了完成需求還寫**,這次由於位址這裡只需要獲取位址name,沒有通過name獲取code,少了一些service服務,導致同事還得自己來寫。這個是不應該的。而且要多想想是不是後面的需求會不會涉及都這些。不然為了後面的需求將之前的**全部覆蓋掉是不值得的。
5.當乙個物件多次在不同的地方使用set時,我們可以在物件的實體類裡面使用構造器,重寫構造器。直接使用new object(str,long,int)的方式,這樣會比較優雅。
6.本週犯了乙個嚴重的錯誤,將專案發布online的時候,居然在master上,merge/gray的**,這個是嚴重的錯誤,還好沒有提交。以後每次merge的時候需要pull兩次下最新的**,保持**的最新,然後merge的時候需要注意merge誰,想一想會不會出現git的問題。
小明上學201812 1
問題描述 試題編號 201812 1 試題名稱 小明上學 時間限制 1.0s 記憶體限制 512.0mb 問題描述 題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間...
201812 1 小明上學
試題編號 201812 1 試題名稱 小明上學 時間限制 1.0s 記憶體限制 512.0mb 題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。...
2018 12 1小明上學
題目背景 小明是漢東省政法大學附屬中學的一名學生,他每天都要騎自行車往返於家和學校。為了能盡可能充足地睡眠,他希望能夠預計自己上學所需要的時間。他上學需要經過數段道路,相鄰兩段道路之間設有至多一盞紅綠燈。京州市的紅綠燈是這樣工作的 每盞紅綠燈有紅 黃 綠三盞燈和乙個能夠顯示倒計時的顯示牌。假設紅綠燈...