主頁 > 後端開發 > java基礎及Java作業總結

java基礎及Java作業總結

2020-11-06 04:12:40 後端開發

 

java后端5年經驗和技術總結
1.引言 
  畢業已經5年有余,這5年里特別感謝技術管理人員的器重,以及同事的幫忙,學到了不少東西,這5年里走過一些彎路,也碰到一些難題,也受到過做為一名開發卻經常為系統維護和發布當救火隊員的苦惱,遂決定梳理一下自己所學的東西,為大家分享一下, 
  經過一年意識到以前也有很多認識誤區,比如: 
  偏愛收集,經常收集各種資料視頻塞滿一個個硬碟,然后心滿意足的看著容量不行動, 
  不重基礎,總覺得很多基礎東西不需要再看了,其實不懂的地方很多,計算機程式方面任何一個結果都必有原因,不要只會用不知道原理,那是加工廠出來的,現在ide查看代碼那么方便,ctrl+點擊就進入了JDK查看實作細節, 
  好高騖遠,在計算機基礎不牢固的情況下,總想著要做架構,弄分布式,搞大資料之類, 
  不重視性能,只求能實作功能,sql查詢是不是可以優化,是否有演算法妙用,大物件是否要清除, 
  不重視擴展性,模塊之間緊密耦合,常用方法不提取成工具類,呼叫關系混亂等問題, 
  …… 
  本文重點不在這些,故只列舉了一小部分,下面進入正題,

 

2.語法基礎

 

 2.1 Java類初始化順序 
  這是所有情況的類初始化順序,如果實際類中沒有定義則跳過:父類靜態變數——父類靜態代碼塊——子類靜態代碼塊——父類非靜態變數——父類非靜態代碼塊——父類建構式——子類非靜態變數——子類非靜態代碼塊——子類建構式 
 2.2 值傳遞和參考傳遞 
  可能很多人對此不屑一顧,心想老子都作業一年了,對這些還不熟悉嗎?但實際情況并非這樣,JDK中東西全部熟悉了嗎?以一個最簡單的例子開始,你覺得下圖中代碼執行完之后fatherList中的元素是什么? 
 
  這是一個最基礎的值傳遞和參考傳遞的例子,你覺得好簡單,已經想躍躍欲試的挑戰了,那么請看下面的,StringBuffer很好理解,但是當你執行一遍之后發現是不是和預想中的輸出不一樣呢?String不是參考型別嗎,怎么會這樣呢?如果你無法理解,那么請看下String的實作原始碼,了解下其在記憶體中分配的實作原理, 
 
 2.3 集合的使用 
  這部分幾乎每個人都會用到,而且大家還都不陌生,下圖來源于互聯網,供大家復習一下,但是利用集合的特性進行巧妙的組合運用能解決優化很多復雜問題,Set不可重復性,List的順序性,Map的鍵值對,SortSet/SortMap的有序性,我在作業中有很多復雜的業務都巧妙的使用了這些,涉及到公司保密資訊,我就不貼出代碼了,作業越久越發現這些和越巧妙, 
  
 2.3 例外處理 
  1.看著try、catch、finally非常容易,如果和事務傳播結合在一起,就會變得極其復雜, 
  2.finally不一定必須執行,return在catch/finally中處理情況(建議親自操刀試一下), 
  3.catch中可以繼續拋自定義例外(并把例外一步步傳遞到控制層,利用切面抓取封裝例外,回傳給呼叫者), 
 2.4 面向物件思想 
  一提起面向物件,大家都知道抽象、封裝、繼承、和多型,但是實際作業經驗中又知道多少呢,對于專案中如何巧用估計更不要提了, 
  共性的機會每個都需要用的建立基類,如每個控制層方法可能要通過security獲取一個登錄用戶id,用于根據不同的用戶操作不同的資料,可以抽象出一個應用層基類,實作獲取id的protect方法,同理DAO層可以利用泛型提取出一個包含增刪改查的基類, 
  多型的Override:基類的參考變數不僅可以指向基類的實體物件,也可以指向其子類的實體物件,如果指向子類的實體物件,其呼叫的方法應該是正在運行的那個物件的方法,在策略模式中使用很普遍, 
  提到面向物件,就不可避免的要說設計模式,在作業中,一個技術大牛寫的一個類似策略模式(更復雜一點),十分巧妙的解決了各種業務同一個方法,并且實作了訂單、工單、業務的解耦,看得我是非常佩服,我想很多面試中都會問道單例模式吧,還沒有理解的建議去看一看,

 

3.多執行緒

 

 3.1 執行緒安全 
  這個是老生常談的問題了,但是確實是問題和bug高發區,執行緒同步問題不需要單獨寫了,想必大家都清楚,不太熟悉的建議百度一下, 
 3.1.1 執行緒安全問題 
  1.代碼中如果有同步操作,共享變數要特別注意(這個一般都能意識到) 
  2多個操作能修改資料表中同一條資料的,(這個容易被忽略,業務A可能操作表a,業務B也可以操作表a,業務A、B即使在不同的模塊和方法中,也會引起執行緒安全問題,例如如果一個人訪問業務A介面,另一個人訪問業務B介面,在web中每個業務請求都是會有單獨的一個執行緒進行處理的,就會出現執行緒安全問題), 
  3.不安全的型別使用,例如StringBuffer、StringBuild,HashTable、HashMap等,在作業中我就遇到過有人在for回圈進行list的remove,雖然編譯器不報錯,程式可以運行,但是結果卻可想而知, 
  4.Spring的bean默認是單例的,如果有類變數就要特別小心了(一般情況下是沒人在控制層、業務層、DAO層等用類變數的,用的話建議是final型別,例如日志log,gson等), 
  5.多個系統共享資料庫情況,這個其實和分布式系統類似 
  用戶重復提交問題(即使代碼中從資料庫讀取是否存在進行限制不能解決問題) 
 3.1.2 執行緒安全解決 
  在需要同步的地方采用安全的型別, 
  JDK鎖機制,lock、tryLock,synchronized,wait、notify、notifyAll等 
  Concurrent并發工具包,在處理一些問題上,誰用誰知道,強烈建議查看原始碼! 
  資料表加鎖,(除非某個表的訪問頻率極低,否則不建議使用) 
  涉及分布式的,采用中間件技術例如zookeeper等解決, 
 3.2 異步 
  異步使用場景不影響主執行緒,且回應較慢的業務,例如IO操作,第三方服務(短信驗證碼、app推送、云存盤上傳等), 
  如果異步任務很多,就需要使用任務佇列了,任務佇列可以在代碼級別實作,也可以利用redis(優勢太明顯了), 
 3.3 多執行緒通信 
  這方面文章非常多,這里不在詳述, 
  1.共享變數方式(共享檔案、全域變數,信號量機制等) 
  2.訊息佇列方式 
  3. 忙等,鎖機制 
 3.4多執行緒實作 
  1.集成Thread類,重寫(這里的重寫指的是override)run方法,呼叫start方法執行, 
  2.實作Runable介面,實作run方法,以Runable實體創建thread物件, 
  3.實作Callable介面,實作call方法,FutureTask包裝callable介面,FutureTask物件創建thread物件,常用語異步操作,建議使用匿名內部類,方便閱讀和使用, 
  額外需要說明的是: 
  1.理解thread的join方法; 
  2.不要認為volitate是執行緒安全的(不明白原因的建議去看jvm運行時刻記憶體分配策略); 
  3.sleep時間片結束后并不保證立馬獲取cpu, 
  4.ThreadLocal能夠為每一個執行緒維護變數副本,常用于在多執行緒中用空間換時間, 

 

4. 開源框架

 

4.1 Hibernate、Mybatis 
  相信每一個java程式員對這些都不陌生,這里不再詳述, 
  需要說明的主要以下幾點: 
  1.hibernate一級快取(內置session快取),二級快取(可裝配sessionFactory快取),二級快取會引起并發問題, 
  2.hibernate延遲加載原理理解, 
  3.hibernate 的get、load方法,sava、persist、savaOrUpdate方法區別 
  4.session重建了關聯關系卻并沒有同資料庫進行同步和更新   
  5.hibernate session關聯關系:detached物件、persistent物件 
  6.Spring data集成,注解方式配置屬性和物體, 
  7.mybatis 插件, 
  8.分頁查詢(資料庫), 
  9.連接池技術 
4.2 Spring IOC 
  4.1.1 Spring bean 
    1.bean注入 注解方式方便易讀,參考第三方(資料庫連接,資料庫連接池,JedisPool等)采用組態檔方式, 
    2. bean作用域:Singleton,prototype,request,session,global session 
    3.bean生命周期:如下圖所示(圖片來源于互聯網): 
    

 

4.3 Spring AOP 
  基本概念:關注點、切面Aspect、切入點pointcut、連接點joinpoint、通知advice、織入weave、引入introduction, 
  Spring AOP支持5中型別通知,分別是MethodBeforeAdvice、AfterReturningAdvice、ThrowsAdvice、MethodInterceptor、IntroductionInterceptor(吐槽一下名字太長) 
  實作方式如下: 
  1.基于代理的AOP 
  2.基于@Aspect注解驅動的切面,(強烈推薦:可讀性好,易維護,易擴展,開發快) 
  3.純POJO切面, 
  4.注入式Aspect切面, 
4.4 Srping事務 
 4.4.1 事務傳播 
  概念:某些操作需要保證原子性,如果中間出錯,需要事務回滾,如果某個事務回滾,那么呼叫該事務的方法中的事務的作出如何的動作,就是事務傳播, 
  事務傳播屬性: 
  1. PROPAGATION_REQUIRED–支持當前事務,如果當前沒有事務,就新建一個事務,這是最常見的選擇, 
  2. PROPAGATION_SUPPORTS–支持當前事務,如果當前沒有事務,就以非事務方式執行, 
  3. PROPAGATION_MANDATORY–支持當前事務,如果當前沒有事務,就拋出例外, 
  4. PROPAGATION_REQUIRES_NEW–新建事務,如果當前存在事務,把當前事務掛起, 
  5. PROPAGATION_NOT_SUPPORTED–以非事務方式執行操作,如果當前存在事務,就把當前事務掛起, 
  6. PROPAGATION_NEVER–以非事務方式執行,如果當前存在事務,則拋出例外, 
  事務隔離級別: 
  1. ISOLATION_DEFAULT: 這是一個PlatfromTransactionManager默認的隔離級別,使用資料庫默認的事務隔離級別.另外四個與JDBC的隔離級別相對應 
  2. ISOLATION_READ_UNCOMMITTED: 這是事務最低的隔離級別,充許令外一個事務可以看到這個事務未提交的資料,這種隔離級別會產生臟讀,不可重復讀和幻像讀, 
  3. ISOLATION_READ_COMMITTED: 保證一個事務修改的資料提交后才能被另外一個事務讀取,另外一個事務不能讀取該事務未提交的資料 
  4. ISOLATION_REPEATABLE_READ: 這種事務隔離級別可以防止臟讀,不可重復讀,但是可能出現幻像讀,它除了保證一個事務不能讀取另一個事務未提交的資料外,還保證了避免下面的情況產生(不可重復讀), 
  5. ISOLATION_SERIALIZABLE 這是花費最高代價但是最可靠的事務隔離級別,事務被處理為順序執行,除了防止臟讀,不可重復讀外,還避免了幻像讀, 
4.5 其他Spring 技術堆疊 
  spring boot 輕量級啟動框架 
  spring security 用戶權限管理,根據角色和用戶,實作UserDetailsService,進行自定義權限管理, 
  spring task 代碼級定時任務,注解方式,使用起來非常方便,需要注意的是,如果某次定時任務出了例外而沒有進行處理,會導致接下來定時任務失效,如果各個任務相互獨立,可以簡單用try,catch包圍(之前就吃過這方面的虧), 
  spring data 注解方式定義物體,屬性等 
  spring mvc 簡單明了的mvc框架,url傳值、陣列傳值、物件傳值、物件陣列等傳值型別,上傳/下載檔案型別需要注意, 
  spring restful 注意命名,對命名要求很嚴格, 
  spring shell 命令列方式執行命令,救火、匯入匯出資料等用起來非常方便、制作報表,  

 

5. Web基礎

 

 5.1 web容器啟動 
  1.web.xml加載順序: listener -> filter -> servlet 
  2.webt容器啟動程序,java新手很怕組態檔,理解完這些有助于熟悉組態檔
 5.2 Servlet、Interceptor、Listener、Filter 
  Servlet 接收請求回傳回應,最原始的web業務處理類, 
  Interceptor 攔截器,可以實作HandlerInterceptor介面自定義攔截器,在日志記錄、權限檢查、性能監控、通用行為等場景使用,本質是AOP, 
  Listener 監聽器 常用于統計在線人數等縱向功能, 
  Filter 過濾器 在請求介面處理業務之前改變requset,在業務處理之后回應用戶之前改變response,如果某些資料不加密,很容易用抓包工具加filter作弊, 
 5.3 web專案結構 
  5.3.1 mvn結構 
  熟練掌握幾種常見的mvn專案結構,mvn可以自動生成,這里不再詳述, 
  5.3.2 mvn包管理 
  1.版本號盡量幾種在一個檔案中便于管理, 
  2.spring milestone包解決spring包沖突問題, 
  3.mvn dependency:tree命令分析所有包依賴,對于沖突的在pom檔案中 包圍起來 
  5.3.3 版本控制 
  1.git、svn等 
  2.代碼沖突解決方案 
  3.分支管理, 
  對于某個穩定版本上線后,如果在此基礎上開發新功能,一定要新建分支,在新分支上提交代碼,最后在新版發布時合并分支,修改運營環境bug切換到主分支進行修改 
5.4 Http請求 
  5.4.1 請求方法 
  post、get、put、head、delete、copy、move、connect、link、patch,最常用的是前4、5個, 
  5.4.2 請求頭,狀態碼 
  常用的請求頭有Accept(下載檔案會特殊使用)、Accept-Charset(設定utf-8字符集)、Content-Type(json等配置)等 
  常用的回應頭有Content-Type、Content-Type、Content-Length等,偏前端,不再詳述,

 

6. 系統架構

 

  接觸的不是特別多,目前用到的只是服務器主從備份,Nginx反向代理進行配置, 
  多個專案nginx配置 
  Spring Mvc 用json資料進行互動,配置json轉換的servlet, 
  封裝回傳值 
  自定義RunEnvironmentException(狀態碼,原因),覆寫原有Exception,切面ExceptionHandler抓取Exception并封裝到回傳值中(前后端松耦合) 
  令人頭疼的用戶重復(連續快速點擊)提交問題,前端限制治標不治本;后端用sessonid在切面上實作,又需要前端存盤,對所有請求資料加sessionId,最后用jedis中存盤,用介面名+用戶名當做key,根據不同的介面對不同的key可以單獨設定時間,不僅保證了重復提交問題,也避免了惡意請求問題,同時還能自定義請求間隔,(期初擔心redis快取讀寫時間延誤導致限制失效,后來發現多慮了,對一般的小系統來說,經性能測驗,發現即使請求頻率再提高100被也不會導致限制失效) 
  testNg單元測驗、性能測驗,覆寫測驗, 
  切面管理日期、權限,快取等,

 

7. Nosql

 

  1.Redis的java庫Jedis, 
  Jedispool配置, 
  專案中用到的有任務佇列、快取, 
  2. neo4j圖資料庫 
  處理社交、推薦

 

8. 服務端

 

  linux作業系統熟悉以centos為例: 
  常用簡單命令:ssh、vim、scp、ps、gerp、sed、awk、cat、tail,df、top,shell、chmod、sh、tar、find、wc、ln、| 
  目錄結構明細:/etc/、~/、/usr/、/dev/、/home/、/etc/init.d/ 
  服務端:jdk、tomcat、nginx、mysql、jedis、neo4j啟動與配置(特別說明的是該死的防火墻,nginx啟動后一直訪問不了,查找一下午查不到原因,最后發現是防火墻問題) 
  監控服務器狀態(cpu,磁盤,記憶體),定位pid,日志查看 
  nginx負載均衡、反向代理、配置 
*  *自動化部署腳本 
  簡單shell腳本書寫,避免大量人力勞動, 
  監控系統,代碼拋fatal例外自動發郵件,系統指標持續偏高自動發郵件, 
   
9. 資料庫相關 
  
10. 第三方介面對接

 

10.1 支付介面 
  微信支付坑比較多,用將近兩周時間才把微信支付所有完成,需要在微信后臺配置的地方太多, 
  而支付寶支付模塊只用了2天時間就搞定了, 
10.2 推送介面 
  為用戶定義tag、定義alias,注意當資料更新時需要同步更新tag、更新alias,如果沒采用異步實作(用戶體驗就是好卡啊) 
10.3 云存盤 
  大量檔案上傳云端(七牛云),注意創建bucket 
10.4 短信驗證 
  很簡單的第三方介面,引入依賴,直接呼叫即可,需要在第三方后臺設定模板等,注意限定用戶訪問次數, 
10.5 郵件 
  很簡單小功能,工具類, 
時間有限,目前先寫這么多技術堆疊,對于代碼書寫和、演算法技巧問題,會抽時間再分享,

如果需要配套學習資料,可看公告!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/203894.html

標籤:Java

上一篇:可以作業≠程式員≠Jvava工程師

下一篇:一起來讀官方檔案-----SpringIOC(11)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more