這是一篇使用JMX監(jiān)控Tomcat的實(shí)戰(zhàn)文章。
這個(gè)面試題是一個(gè)朋友在面試的時(shí)候碰到的,什么時(shí)候會(huì)拋出OutOfMemery異常呢?初看好像挺簡單的,其實(shí)深究起來考察的是對(duì)整個(gè)JVM的了解,而且這個(gè)問題從網(wǎng)上可以翻到一些亂七八糟的答案,其實(shí)在總結(jié)下來基本上4個(gè)場景可以概括下來。
在眾多的SQL審核產(chǎn)品中,幾乎都會(huì)提到一個(gè)審核規(guī)則,即select *,規(guī)則描述幾乎一致:禁止使用select *,必須明確選擇所需的列。而這個(gè)規(guī)則其實(shí)有著很多真實(shí)的生產(chǎn)故障案例。
首先我們聯(lián)想一下鏈表,在單鏈表中,我們只能對(duì)他的鏈表表尾進(jìn)行插入,對(duì)鏈表的表頭進(jìn)行結(jié)點(diǎn)的刪除,這樣強(qiáng)限制性的鏈表,就是我們所說的隊(duì)列。也就是說,隊(duì)列(queue)是限定在表的一端進(jìn)行插入,表的另一端進(jìn)行刪除的數(shù)據(jù)結(jié)構(gòu)。
我覺得這是一個(gè)送分題,奈何知乎人才太多了,給出了各種古怪的寫法,如果是做項(xiàng)目的話,我比驕建議一些正常的寫法,就是大家都能看得懂的,不要搞什么花里胡哨,不過你要是交流的話,既然是交流,我不覺得要多正規(guī),即使你的觀點(diǎn)有問題,我覺得也可以拿出來說說,畢竟是交流,各抒己見,發(fā)表自己的觀點(diǎn)是最重要的。
選擇合適的算法和數(shù)據(jù)結(jié)構(gòu) 選擇一種合適的數(shù)據(jù)結(jié)構(gòu)很重要,如果在一堆隨機(jī)存放的數(shù)中使用了大量的插入和刪除指令,那使用鏈表要快得多。數(shù)組與指針語句具有十分密切的關(guān)系,一般來說,指針比較靈活簡潔,而數(shù)組則比較直觀,容易理解。對(duì)于大部分的編譯器,使用指針比使用數(shù)組生成的代碼更短,執(zhí)行效率更高。
本篇文章講解了計(jì)算機(jī)的原碼、反碼和補(bǔ)碼,并且進(jìn)行了深入探求了為何要使用反碼和補(bǔ)碼、以及更進(jìn)一步的論證了為何可以用反碼、補(bǔ)碼的加法計(jì)算原碼的減法。
一文盤點(diǎn)C語言內(nèi)存操作的12個(gè)陷阱。
最近的工作中,要實(shí)現(xiàn)對(duì)通信數(shù)據(jù)的CRC計(jì)算,所以花了兩天的時(shí)間好好研究了一下,周末有時(shí)間整理了一下筆記。
基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)的融合是成為龐大系統(tǒng)的基石,比如Redis中的跳躍表,數(shù)據(jù)庫索引B+樹等,只有對(duì)基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)足夠的熟悉才能更容易去理解稍微復(fù)雜的結(jié)構(gòu),就仿佛我們闖關(guān)打怪一樣,一步一步解鎖直到結(jié)局。今天想和大家一起分享的是常見數(shù)據(jù)結(jié)構(gòu)以及面試中的高頻手撕算法題,一定要去手動(dòng)寫這些代碼,可說百分之七八十都是這些題,一定要好好掌握。
C++20已全票通過,有望于今年晚些時(shí)候發(fā)布 9月4日,C++ 20的國際標(biāo)準(zhǔn)草案投票結(jié)束,而且獲得了全票通過。這意味著C++ 20已完成最終的技術(shù)審批,并已完成ISO投票,我們希望在完成最后一輪ISO編輯工作之后,2020年底將正式發(fā)布C++ 20。
在系統(tǒng)中用戶一共有三種角色:普通用戶,管理員,超級(jí)管理員,現(xiàn)在需要設(shè)計(jì)一張用戶角色表記錄這類信息,我們不難設(shè)計(jì)出文中方案。
理想的PID算法往往不能滿足實(shí)際使用中的很多場景,比如積分飽和的問題,因此需要在此基礎(chǔ)上對(duì)積分器做抗飽和處理,積分anti windup的優(yōu)化。這不,隆哥這次面試,直接掛在這么基礎(chǔ)的知識(shí)點(diǎn)上,腸子悔青,在這里簡單總結(jié)一下。
棧(stack)是限定僅在表的一端進(jìn)行操作的數(shù)據(jù)結(jié)構(gòu),且棧是一種先進(jìn)后出的數(shù)據(jù)結(jié)構(gòu),允許操作的一端稱為棧頂,不允許操作的稱為棧底。
我們在一個(gè)項(xiàng)目小組做一個(gè)相對(duì)較復(fù)雜的工程時(shí),意味著你不再獨(dú)自單干。而是和小組成員分工合作,這就要求小組成員各自負(fù)責(zé)一部分工程,比如你可能只是負(fù)責(zé)通訊或者顯示這一塊。這個(gè)時(shí)候,你就應(yīng)該將自己的這一塊程序?qū)懗梢粋€(gè)模塊,單獨(dú)調(diào)試,留出接口供其它模塊調(diào)用。最后,小組成員都將自己負(fù)責(zé)的模塊寫完并調(diào)試無誤后,由項(xiàng)目組長進(jìn)行組合調(diào)試,像這些場合就要求程序必須模塊化。
關(guān)于DL-LN33 ZigBee模塊的介紹。
程序員老實(shí)、愛學(xué)習(xí),也是最有危機(jī)感的群體之一,他們每天在GitHub、各大技術(shù)論壇上如饑似渴地汲取對(duì)自己最有幫助的技術(shù)知識(shí),同時(shí)怕時(shí)間精力跟不上高強(qiáng)度的程序員工作。為此,我們基于華為云各個(gè)產(chǎn)品線技術(shù)專家多年工作經(jīng)驗(yàn)和心得體會(huì),再經(jīng)過層層篩選整理,推出了這份程序員進(jìn)階必讀書單。
本文所使用Keil MDK 的版本為V4.21。其他版本差別不大,讀者可以根據(jù)自己使用的版本進(jìn)行操作或者從Keil的官網(wǎng)下載新版本。使用的標(biāo)準(zhǔn)外設(shè)庫為V3.5版本。使用的開發(fā)調(diào)試工具為JLINK-V8,使用的驅(qū)動(dòng)版本為V4.08l。
選擇一種合適的數(shù)據(jù)結(jié)構(gòu)很重要,如果在一堆隨機(jī)存放的數(shù)中使用了大量的插入和刪除指令,那使用鏈表要快得多。數(shù)組與指針語句具有十分密切的關(guān)系,一般來說,指針比較靈活簡潔,而數(shù)組則比較直觀,容易理解。對(duì)于大部分的編譯器,使用指針比使用數(shù)組生成的代碼更短,執(zhí)行效率更高。
每種編程語言都有其自己的編程規(guī)范。 畢竟,沒有規(guī)則或規(guī)定。 如果編碼不規(guī)范,則一方面,程序會(huì)顯得暗淡且難以理解,這將使其他讀者難以維護(hù),另一方面,在使用時(shí)也將難以維護(hù)。今天,我將討論Linux中C編程的規(guī)范。