主頁 > 後端開發 > 「編程羽錄」上線,程式員必備的這些技能你能get到嘛?

「編程羽錄」上線,程式員必備的這些技能你能get到嘛?

2021-05-06 21:35:23 後端開發

大家好,我是小羽,

好久不見,給大家帶來個好訊息,小羽的全新專題「編程羽錄」系列正式上新,主要是介紹一些關于面試題和經驗總結的文章,

會為大家提供一些技術堆疊之外,程式員還需要的其他方面硬核知識,做到全面發展,才能在這個日趨激烈的社會,在未來有更好的發展空間,

話不多說,本期為大家介紹的是關于一些程式員必備技能介紹,相信掌握這些編碼內外的技能,我們會朝優秀軟體開發人員更近一步,

下面就來看看我總結的這些技能,準備好進收藏夾(吃灰)了嘛?

編碼之內

代碼規范

代碼規范化帶給我們的第一個好處就是看著很整齊、很舒服,

雖然說我們現在可以用不規范的方式寫代碼,現在能看得懂,但等過了幾個月后,你再回頭看時估計就兩眼懵圈了,更不要說萬一專案迭代開發,交接給其他人了,所以代碼一定要寫規范

下面的是我總結的一些代碼規范注意事項:

編碼方式:統一用 UTF-8,一般情況下不要去改動它,

縮進:統一為 4 個空格,將 Tab size 設定為 4 則可以保證 tab 鍵按 4 個空格縮進

括號:花括號不要單獨一行,和它前面的代碼同一行,而且,花括號與前面的代碼之間用一個空格隔開,

空格:if、else、for、switch、while 等邏輯關鍵字與后面的陳述句留一個空格隔開;運算子兩邊各用一個空格隔開;方法的每個引數之間用一個空格隔開,

空行:將邏輯相關的代碼段用空行隔開,以提高可讀性,空行也只空一行,不要空多行,

變數:一行宣告一個變數,不要一行宣告多個變數,這樣有利于寫注釋

推薦書籍:

圖片

代碼整潔之道

命名規范

想必程式員一想到命名都很頭疼,當遇到混亂或錯誤的命名不僅讓我們對代碼難以理解,更會誤導我們的思維,

良好的命名,則可以大大提高我們的代碼易讀性,也能大大增強代碼的可維護性

下面的是關于命名規范的一些基礎:

包命名:域名反寫 + 專案名稱 + 模塊名稱,全部單詞用小寫字母

類和介面命名:使用大駝峰規則,用名詞或名詞詞組命名,每個單詞的首字母大寫,

方法命名:使用小駝峰規則,用動詞或者動名詞命名,第一個單詞的首字母小寫,其他單詞的首字母大寫,

常量命名:全部為大寫單詞,單詞之間用下劃線分開,

變數命名:范圍描述 + 意義描述 + 型別描述的組合,用駝峰式,首字母小寫

注釋規范

我們也一定要養成寫注釋的好習慣,當我們在寫某個程式的時候,可能當下記得很清楚,這一段是什么機制、如何實作,但是當你寫的程式越來越多,你會忘記當初為什么這樣寫,改動和交接也十分麻煩,對代碼進行注釋就可以有效避免這種情況,

注釋不僅可以讓人讀懂代碼,甚至能讓讀代碼的人獲取更多資訊,

下面是關于注釋規范的一些建議:

檔案頭注釋:檔案頂部統一添加著作權宣告

類和介面注釋:類和介面統一添加 javadoc 注釋,

方法注釋:方法的用途和引數說明,以及回傳值的說明,

變數和常量注釋:優先采用右側 // 來注釋,若注釋說明太長則在上方添加注釋,

框架

Java 是目前最熱門的編程語言之一,隨著 Java 面向物件語言的流行以及多層架構應用的出現,使得應用程式的可復用性得到了大大的提高,框架這個東西也在應用程式中開始出現,并得到了廣泛的使用,

在面試中,面試官一般來說會問你一下你們專案中使用的框架,然后給你一些場景問你用框架怎么做,

整理的目前較受歡迎的 Java 框架:

SpringMVC:使用了 MVC 架構模式的思想,將 web 層進行職責解耦,基于請求-回應模型,

Struts2:用于構建當代 JavaEEWeb 應用程式,可以幫你快速搭建出一個MVC模型出來,

Hibernate:是一個開放源代碼的物件關系映射框架,是一個全自動的 orm 框架,可參考:

「連Hibernate技術都不清楚,你敢說你自己會ORM框架?」

Spring:是一個開源開發框架,是一個輕量級控制反轉(IOC)和面向切面(AOP)的容器框架,可參考:

「一文帶你了解Spring框架的基本使用」

SSH:是 JAVA EE 中三種框架所集成,分別是 Struts,Spring,Hibernate 框架所組成,是當前比較流行的 java web 開源框架,

SSM:是三層結合所成的框架,分別是 Spring、SpringMVC、MyBatis 所組成,

Mybatis:是一個簡化和實作了 java 資料持久層的開源框架,它抽象了大量的JDBC冗余代碼,并提供了一個簡單易用的API和資料庫互動,

Springboot:是一個全新的框架,簡化 Spring 的初始搭建和開發程序,使用了特定的方式來進行配置,讓開發人員不再需要定義樣板化的配置,

Dubbo:是一個分布式服務框架,致力于提供高性能和透明化的 RPC 遠程服務呼叫方案,以及SOA服務治理方案,可參考:

「微服務面試必問的Dubbo,這么詳細還怕自己找不到作業?」

Apache Shiro:是 Java 的一個安全框架,旨在簡化身份驗證和授權

SpringCloud:是微服務的一種解決方案,依賴 SpringBoot 實作,包含注冊中心(eureka)、客戶端負載均衡(Ribbon)、網關(zull)、分布式鎖、分布式會話等,可參考:

「圖文詳解:如何給女朋友解釋什么是微服務?」

「再深一點:如何給女朋友解釋什么是微服務?」

資料庫

資料庫是很重要的一部分,無論對于面試還是作業中,都是一個老生常談的話題,

比較重要的是資料庫優化部分,小羽之前總結過一篇關于 MySQL 優化的文章,想要了解的可以到下面文章查看:

「干貨!MySQL優化原理分析及優化方案總結」

最常見的資料庫模型主要是兩種,即關系型資料庫(SQL)非關系型資料庫(NoSQL)

關系型資料庫:

?大型:Oracle、DB2?中型:SQL Server、MySQL?小型:Access

非關系型資料庫:

?臨時性鍵值存盤(memcached、Redis)?永久性鍵值存盤(ROMA、Redis)?面向檔案的資料庫(MongoDB、CouchDB)?面向列的資料庫(Cassandra、HBase)

經常使用的是 Redis,可以參考這篇文章理解:

「玩轉Redis|學會這10點讓你分分鐘拿下Redis,滿足你的一切疑問」

常見資料庫:

圖片

常見資料庫

資料結構

身為程式員的我們,每天都在和不同的資料打交道,那么我們真的對資料結構一清二楚了么?

小羽的文章中也詳細的圖文介紹了各種資料結構的使用:

「有人相愛,有人年少財務自由,有人資料結構都背不出來」

對各類資料結構進行了分類,并且從定義、特點、原理決議使用方法以及實作的相關案例相結合:

?堆疊 stack?佇列 queue?鏈表 Link?散串列 Hash Table?排序二叉樹?紅黑樹?B-TREE?位圖

資料結構推薦書籍:

圖片

大話資料結構

演算法

演算法無論是對于學習還是作業,都是必不可少的,我們掌握了這些演算法背后的邏輯思想,那么是會對我們的學習和作業有很好的促進作用的,

我在之前的文章中詳細介紹過一些關于 Java 經典演算法:

「演算法很美,聽我講完這些Java經典演算法包你愛上她」

「周末給女友講了遍加密演算法,沒想到...」

主要有以下經典演算法,詳細介紹了各個演算法的簡介、應用場景、步驟、代碼示例

?二分查找?冒泡排序演算法?插入排序演算法?快速排序演算法?希爾排序演算法?歸并排序演算法?桶排序演算法?基數排序演算法?剪枝演算法?回溯演算法?最短路徑演算法?最大子陣列演算法?最長公共子序演算法?最小生成樹演算法

演算法推薦書籍:

圖片

演算法圖解

版本管理

在現在市面上的大部分公司的代碼都是通過版本管理工具來進行托管的,從之前的 SVN 到現在基本人人必用的 Git,

我們需要了解 Git 的每一個具體命令和引數使用,知道執行每個命令會做什么,避免各類分支或者 fork 操作引起的沖突問題

可以幫助我們:

1.保存開發程序中的代碼,方便后續修改,2.能清楚的看到每一位團隊成員提交、修改的代碼,責任到人,3.方便我們完成協同開發的任務,高效作業,4.為后續客戶提供關于專案不同版本的記錄,

關于代碼版本管理的工具有很多,下面是我常用的:

?SVN:替換了當年開源社區最為流行的版本控制軟體 CVS,在 CVS 的功能的基礎上有很多的提升同時也能較好的解決 CVS 系統的一些不足,?Git:用于 Linux 內核開發的版本控制工具,采用了分布式版本庫的作法,不需要服務器端軟體,就可以運作版本控制,使得源代碼的發布和交流極其方便,?GitHub:GitHub 是目前為止,用戶最多的工具了,而且也有很多的開源專案提供,一直都是程式員最鐘愛的平臺,想要學習的話,都可以去下載專案來學習,

主流工具:

圖片

主流工具

構建工具

構建工具和版本管理一樣重要,公司實際開發中我們需要對 Jar 包進行依賴管理,目前主流的構建工具是 maven(大部分城市) 和 gradle(西安使用比較多)這兩款,要想成為一個標準的軟體開發人員,我們不僅要學會使用這些工具構建,也要掌握發生依賴沖突該如何解決,

當然,除了 maven 和 gradle,這里也有其他一些構建工具,感興趣的都可以了解下:

Hudson:用Java撰寫的持續集成(CI)工具,

Jenkins:用 Java 撰寫的一個開源持續集成工具,專案是在和 Oracle 發生爭執后的來自于 Hudson 的分支,

Apache Ant:用于自動化軟體構建程序的軟體工具,源于 2000 年初的的 Apache Tomcat 專案,

SBT:用于 Scala 和 Java 專案的開源構建工具,類似于 Java 的 Maven 和 Ant,

Atlassian Bamboo:持續集成和交付工具,它將自動化構建、測驗和發布捆綁到單個流程中,

TeamCity:來自于 JetBrains 的一個基于 Java 構建的管理和持續集成服務器,

Grape:嵌入到 Groovy 的 JAR 依賴項管理器,

Ivy:Apache Ant 專案的一個子專案,一個可傳遞的依賴項管理器,

Leiningen:一個自動化構建和依賴性管理工具,用于使用 Clojure 編程語言寫的軟體專案,

常用:

圖片

Jenkins

單元測驗

我們在平時開發程序中,當完成自己的功能模塊后,都需要自測一遍,這樣可以保證代碼的準確性,減少不必要的 bug 出現,

小羽用的最多的也就是 junit 進行單元測驗了,使用的是 junit4 這種基于注解的方式來進行單元測驗,

常用注解:

1、為了和 spring 集成獲取配置的 bean, 通常使用 @RunWith 來加載 springjunit 這個核心類;

2、使用 @ContextConfiguration 來加載相關的配置的檔案;

3、通過 @Resource 按名字來注入具體的 bean, 最后在需要測驗的方法上面加上 @Test 來進行單元測驗,

測驗原則:

?源代碼和測驗代碼需要分開;?測驗類和目標源代碼的類應該位于同一個包下面,即它們的包名應該一樣;?測驗的類名之前或之后加上 @Test,測驗的方法名通常也以 test 開頭,

代碼示例:

@RunWith(SpringJUnit4ClassRunner.class)//運行spring相關環境 相當于spring監聽功能
@ContextConfiguration(locations={"classpath:spring-common.xml","classpath:spring-datasource.xml"})//讀取spring組態檔 不識別* 只能識別具體檔案 多個組態檔使用string資料傳遞
public class TestSpring {
  //注入Service層
    private @Resource UserService userService;
    @Test
    public void testFind(){
        List<User> userList = userService.findAllUserInfo(); 
        for (User user : userList) {
            System.err.println(user.toString());
        }
    }
}

想要學習更多關于單元測驗的知識,可以到這篇文章查看:

「告別祈禱式編程|單元測驗在專案里的正確落地姿勢」

代碼除錯

代碼除錯在我們開發中,用的最多的是屬于 debug 了,就是我們常說的打個斷點,跟著程式一步一步執行,看哪一步有問題,從而排查 bug,是我們解決問題最有效的手段,

當然我們一定要有問題排查的能力,定位到問題來解決,此外,也要學會查看日志,日志能清楚記錄我們每一步都做了什么,

這里也給大家提供一些在線除錯的網站:

codepad:一款簡單的在線 IDE 編輯器服務,只需要把代碼粘貼進去就可以編譯運行了,支持C、C++、PHP、Python等 9 種編程語言,

Ideone:一款在線的編譯器和除錯工具,它可以讓你來編譯,運行,測驗和代碼,支持 Java、 JavaScript、PHP、Python 等 40 多種編程語言,

PractiCode:是一款在線 Web 代碼除錯工具,支持HTML、CSS、JavaScript、VBScript 和 PHP 等語言,

cssdesk:是一個在線除錯 CSS 代碼的工具,

Google Code Playground:是一款在線除錯各種 Google JavaScript API 的工具,

推薦:

圖片

IDdone

重構代碼

每個程式員都需要有最基本的能力去重構目前已有的代碼,使代碼達到最優但卻不能影響任何的已有的功能,

小羽整理了一些關于代碼重構的常用方法:

?提取子函式?公共方法放到父類中?下移函式到子類?封裝固定的呼叫邏輯?使用泛型去除重復邏輯?函式避免過多的入參?轉移函式,函式職責分明?狀態模式?避免物件為 null?拆分功能

推薦書籍:

圖片

重構

閱讀原始碼

這個對于我們日后想要更好的晉升空間或者拿到更高的薪資是很重要的,所以我們平時要多閱讀原始碼,掌握底層實作

雖然會花費我們大量的時間精力去深刻專研,但是當你面試時候,能對某一個技術點的原始碼給面試官一陣輸出的話,那么面試的主動權就會掌握在你的手里,同時多閱讀原始碼,對于我們解決 bug 也有幫助,

總結一下在 IDEA 中如何閱讀原始碼:

1.定位到構造器/方法實作類2.查看類層級關系3.查看類結構4.原始碼統計5.具體原始碼

問題排查與解決能力

我們選擇開發這條路,會遇到形形色色的問題,發生問題的時候,就是檢驗程式員能力的時候,很多時候,解決問題并不難,難的是定位問題

這里面會涉及到很多知識,對于我們的知識儲備很重要,所以平時一定要做好積累,

也可以從以下幾個方面來提升自己的能力:

?日志的查看?分析Java的堆疊資訊?集群監控指標的查看

日志可以在這塊了解:

「別小看 Log 日志,它難住了我們組的架構師」

面向Google編程

國內已經有百度了,為什么大部分程式都會去選擇使用谷歌呢,因為百度搜索出來的東西太雜,例如你搜索一個技術類的東西,但是百度可能會搜索很多不相干的東西,而谷歌搜索的結果會更加的專業化,這樣尋找你需要的資訊的時候會更有效率,   

普通程式員是面向物件編程的,而真正的高級程式員則是面試 Google 編程的,學好正確的使用 Google 編程是很重要的,同時也是因為 Google 的 Chrome 瀏覽器自帶了豐富的插件,對于我們程式員也十分友好,

我之前介紹的一些關于 Chrome 瀏覽器插件的介紹:

《Chrome瀏覽器必備插件推薦》

《Chrome瀏覽器插件推薦之程式員系列》

有問題,多 Google:

圖片

Google

編碼之外

筆記

互聯網這個行業更新換代很快,需要保持不斷的學習,學習的知識點很多,光靠大腦不可能全部記得住,

我們可以把平時記錄的技術點、知識、好文章保存或者記錄在筆記上,

小羽在這里推薦幾款我使用的不錯的筆記:

?有道云?印象筆記?OneNote?語雀

推薦語雀:

圖片

語雀

MarkDown

Markdown 是一種可以使用普通文本編輯器撰寫的標記語言,通過簡單的標記語法,它可以使普通文本內容具有一定的格式,

我一般都是使用 typora,這款界面簡潔,支持實時預覽,支持多種公式型別,支持TOC等標簽這款先撰寫好,然后復制到自己喜歡的編輯器里進行渲染格式,最后發布文章到各個平臺,

推薦 Typora:

圖片

Typora

學會寫作

寫作是一個非常好的「進階」 方式,但是平時我們的程式員同學都會很忙有很多事,導致了我們沒有太多的時間,同時也很難持續的進行寫作,那么我們應該要如何堅持寫作呢?

其實是無論堅持什么事情都不是一件容易的事情,寫作可以先從技術博客開始,后面也可以寫一寫生活中的事情,反正就是先讓自己寫起來,先寫起來之后養成習慣,你會受益一輩子的,

一般都會選用上面所說的 Markdown 語法寫作,編輯工具也很多,在線的、PC端的都有,

比如我書簽里的這些:

圖片

編輯器

團隊協作

我們開發程序中,無論哪一個專案都是很多人一起完成的,任何編程作業不可能會讓你自己一個人完成,我們自己寫的的代碼必須與別人的互動或者混合,就算很優秀的程式員,如果無法與別人協作,都會給專案造成負面影響,對公司的正常運營造成影響,

作為一個合格的程式員,我們更應該學會與人合作,有一句話我記得非常清楚,沒有一個人的成功,每個人的成功都是建立在和別人合作的基礎之上的, 我們是一個整體,需要共同面對困難,一起分享成功,

下面的方法可以參考:

?分工合理,責任明確,模塊化?高效的溝通機制(聊天軟體,任務面板,郵件等)?定期檢查,及時調整(codeReview、日報、周報、大小會議)

不斷學習

在日常開發中,一定要學會去 github 等網站上,學習一些別人的優秀開源專案,學習別人的思想和構架,學習別人的邏輯,

總結自己編碼程序中的局限性,只有在不斷的學習程序中,才能使的自己的技術不斷上升,

之前整理過一些關于學習平臺網站的總結:

《程式員必備的技術網站合集》

《程式員自由作業平臺國內外匯總篇》

我書簽中的學習網站:

圖片

學習網站

創建自己的產品

作為軟體開發人員,我們不僅能夠開發軟體產品,還可以開發書籍和視頻這樣的資訊產品,

我認識的很多大佬,都與出版社有合作關系,出版了自己的書籍,或者入駐 b 站等視頻領域有不錯的成績,這對于個人的 ip 塑造以及后續發展會提供很好的影響力,

我認為應該具備以下能力:

?要選擇好方向,多調研,了解用戶的需要,?在開始之前,盡量先去市場做看看有沒有同類產品,了解現狀,?注重好細節,以免后續產品缺陷太多,

在以下平臺都可以嘗試:

圖片

創作平臺

身體是革命的本錢

程式員的作業,大多是坐在電腦螢屏前,一坐就是幾小時,缺乏鍛煉,我們當中很多人都會得頸椎病,還有得了脂肪肝,一些人得了腰間盤突出,以至于年紀輕輕,身體就不行了,

所以,一定要愛護自己的身體,學會養生,不僅是對自己負責,也是對社會負責,

小羽在這里給出的一點建議:

?保持充足的睡眠?養成規律的飲食?堅持健身?多跑步走動?合理的加班?培養其他興趣

學會技術輸出和分享

將學到的編程知識寫下來,并且將它分享給其他的程式員,將讓你變得更優秀,寫文章的好處是多方面的,你能夠分享想法,并幫助全世界的程式員

我們應該把每天學習的知識、技術,或者是看書的心得體會,用自己的方式表達出來,可以通過發博客、公眾號等等平臺,也可以通過視頻的方式,

在我書簽里的這些平臺,我都會堅持在每個平臺分享:

圖片

博客網站

嘗試自媒體

什么是自媒體呢?從名稱屬性來看,很簡單,就是自己做自己的媒體,自己將自己的東西分享出來,就是自媒體,

對于我來說呢,我覺得自媒體還是很有前景的,有很多人說哪個型別自媒體已經很晚了,我覺得只要你自己用心做這件事,什么時候都不算晚,成功都是屬于那些堅持到最后的人的,

我之前也分享過一些關于自媒體的心得和總結

「自媒體人必不可少的多平臺同步、一文多發小助手」

「人人自媒體的時代,程式員該如何利用好自己的優勢?我記住了這些神器...」

「寫給普通人看的自媒體分享|萬事開頭難,勇于分享自己,我們都很棒!」

需要我們平時多收集整理一些需要會用到的方方面面的工具,才會如魚得水,應用自如:

圖片

自媒體創作工具

多看官方檔案

官方檔案遠比網上的各種博客和論壇等更適合入門學習,當我們遇到很多問題和技術細節的時候,認真將官方檔案過一遍,你會發現很多問題和認識模糊的地方都會清晰起來

程式員都應該掌握通過官方檔案去學習一個技術的能力,掌握了這項能力,你就具備了學會其他一切技術框架的基礎;而且最原始的官方檔案,還能鍛煉你的自我學習總結能力,

Spring 官方檔案示例:

圖片

Spring官方檔案

培養自學能力

程式員無論合適都要有一顆保持學習的心,因為技術更新快、需求變化快,我們不學習就會被淘汰,

機會和挑戰只會分配給有準備的人,當我們有機遇能進更好的公司的時候,還是需要依靠自身的硬實力的,這個時候如果我們長期自學積累知識的話,相信都可以把握住任何機會的,

我認為自學應該從這幾方面入手:

?先確定好當前的方向?做好長期吃苦的準備?有規律有目的型的學習?在一個安靜的地方學習?利用好現有的網路資源與書籍**

我雖然是做 Java 的,但是有時間也會去了解其他語言的書籍:

圖片

技術書籍

英語水平

對于我們來說,因為技術檔案都是英文的,雖然閱讀別人的檔案可以通過翻譯成中文檔案來查看,但是一味相信翻譯并不可取,畢竟有錯誤和疏漏有時候都不知道,

而且我們編程每天都在和英語打交道,有更好的英語水平,對我們代碼的命名等等都會有很大的幫助,

推薦幾款不錯的練習英語的軟體:

?百詞斬?羊駝英語?扇貝單詞?有道詞典?英語流利說

推薦百詞斬:

圖片

百詞斬

擴展人際關系

程式員是一個長時間在電腦旁邊的人類,我們的業余時間不多,周六日可能還加班,所以封閉性很強,

但是我們一定要抽出時間來維護自己的人脈管理,本身壓力也比較大,有了更多的朋友的話,我們閑時也可以一起約出來,聊聊天,談談未來的發展,每個人的格局都不一樣,多多交流,才能不斷進步,

下面我給大家說一下我是怎么維護自己的人脈:

?要學會主動聯系?多參加一些社交活動?像優秀的人多取經?線上線下都可以認識

良好的邏輯思維

邏輯思維能力是我們學習、作業、以及生活中必不可少的一種能力,

擁有良好的邏輯思維,有助于我們高效地學習,作業,以及生活,總之,練好邏輯思維,可以讓我們變聰明、變自信,脫穎而出,

?結構化思維:把事物組成框架,分類、有序的整合起來?系統化思維:整體考慮,注重每一個聯系,?打破定勢思維:要學會創新,增加求知欲,?情緒控制:合理控制自己的情緒,?換位思考:發生事情沖突,也要在別人角度考慮,

時間管理能力

時間就是金錢,效率就是生命,一點也不過,我們現在這個社會大部分人都有拖延癥,該如何解決呢?

其實作在影響我們最大的就是手機了,相比大部分都會一有閑暇時間就會大有手機上的娛樂軟體(短視頻之類)來打發時間,避免這樣,我們就需要一些時間管理工具來改善,

給大家介紹一些我覺得不錯的時間管理工具:

?番茄 ToDo?Forest 專注森林?滴答清單?小日常?Pendo?塊時間?極簡代辦?Todolist

推薦滴答清單:

圖片

滴答清單

最后

哈哈,不好意思,因為很久沒更文,所以這一篇就寫的有點多了,也算是補上欠下的文章,但是以上列出來的這些清單我相信你用心讀完后,肯定還是會有所識訓的,

的確,軟體開發最重要的技能是提升技術,只要完成任務即可,但是一味的為了完成公司代碼而編程我覺得并不可取,

我們也要為自己的未來考慮,畢竟擺在我們面前的 35 歲抉擇是遲早會到的,所以不斷提升自己的各方面技能才能起到未雨綢繆的作用,

最后一句話,送給大家:硬實力決定下限,軟實力決定上下限,編碼之外的軟實力也是我們不斷前進的源源動力,一起加油吧!

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

標籤:其他

上一篇:「跬步千里」詳解 Java 記憶體模型與原子性、可見性、有序性

下一篇:Django中裝飾器的使用方法

標籤雲
其他(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