自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Python列表邊遍歷邊刪除,怎么用才不報(bào)越界錯(cuò)誤呢?

開(kāi)發(fā) 后端
今天雙十一,昨晚有好多電商行業(yè)的 IT 工程師們挑燈夜戰(zhàn),為這個(gè)全民狂歡的購(gòu)物節(jié)護(hù)航。還記得三年前我們公司一個(gè)產(chǎn)品上線前一周時(shí),辦公室內(nèi)拉起“跟 Bug 死扛到底”的橫幅,Bug 可以說(shuō)是程序員的死穴。我每次預(yù)感到代碼有 Bug 時(shí),神色立馬緊張起來(lái)。

背景

今天雙十一,昨晚有好多電商行業(yè)的 IT 工程師們挑燈夜戰(zhàn),為這個(gè)全民狂歡的購(gòu)物節(jié)護(hù)航。還記得三年前我們公司一個(gè)產(chǎn)品上線前一周時(shí),辦公室內(nèi)拉起“跟 Bug 死扛到底”的橫幅,Bug 可以說(shuō)是程序員的死穴。我每次預(yù)感到代碼有 Bug 時(shí),神色立馬緊張起來(lái)。

編程路上,Bug 載道;前車之鑒,后車之師。本文整理了一些我在問(wèn)答技術(shù)網(wǎng)站上看到的、回答過(guò)的有價(jià)值的問(wèn)題。權(quán)當(dāng)是個(gè)人知識(shí)庫(kù)了!

IDEA 編輯的功能

IDEA 強(qiáng)大的自動(dòng)代碼補(bǔ)全功能快捷鍵 Tab,代碼標(biāo)簽輸入完成后,按Tab,生成代碼。

  • div.class.out + Tab
  • 常用的有 fori/sout/psvm+Tab 即可生成循環(huán)
  • System.out、main 方法等 boilerplate 樣板代碼,要輸入 for(User user : users) 只需輸入user.for+Tab
  • 輸入 for(User user : users) 只需輸入user.for+Tab
  • 要輸入Date birthday = user.getBirthday(); 只需輸入user.getBirthday().var+Tab 即可。

Python 中查看某個(gè)模塊的用法

Python 命令行輸入后,可以使用 help 方法查看方法的用法,例如:

 

  1. import re 
  2. help(re.compile) 

在控制臺(tái)輸出得到該方法的描述信息:

 

Python列表邊遍歷邊刪除,怎么用才不報(bào)越界錯(cuò)誤呢?

Python 不忽略首行

Python 處理 csv 文件時(shí),pandas.read_csv(“data.csv”) 默認(rèn)會(huì)將第一行作為標(biāo)題行信息,不做處理。怎么讓它從第一行開(kāi)始處理呢?header=None 可以達(dá)到該目的。

  1. df =  pd.read_csv("data.csv", header=None) 

對(duì)象晉升到老年代的過(guò)程

對(duì)象優(yōu)先在Eden分配,且新生代對(duì)象晉升到老年代有多種情況

  • Eden 區(qū)滿時(shí),進(jìn)行 Minor GC,當(dāng) Eden 和一個(gè) Survivor 區(qū)中依然存活的對(duì)象無(wú)法放入到 Survivor 中,則通過(guò)分配擔(dān)保機(jī)制提前轉(zhuǎn)移到老年代中。
  • 若對(duì)象體積太大, 新生代無(wú)法容納這個(gè)對(duì)象,-XX:PretenureSizeThreshold 即對(duì)象的大小大于此值, 就會(huì)繞過(guò)新生代, 直接在老年代分配, 此參數(shù)只對(duì) Serial 及 ParNew 兩款收集器有效。
  • 存活期限長(zhǎng)的對(duì)象直接進(jìn)入老年代。

Python 邊遍歷邊刪除

邊遍歷邊刪除數(shù)組會(huì)導(dǎo)致數(shù)組索引范圍變化,導(dǎo)致程序出錯(cuò),這在 Java 中也是需要注意的問(wèn)題。但是,Python 的數(shù)據(jù)處理方法提供了一個(gè)巧妙的處理方法。

 

Python列表邊遍歷邊刪除,怎么用才不報(bào)越界錯(cuò)誤呢?

使用 sorted(list) ,會(huì)產(chǎn)生一個(gè)新的數(shù)組,所以據(jù)此刪除原來(lái)數(shù)組的元素,不會(huì)改變下標(biāo),不會(huì)出錯(cuò)。即遍歷過(guò)程中是用 sorted(list) 返回的新數(shù)組,而刪除是操作原來(lái)的數(shù)組,即遍歷用了一份拷貝,修改完原數(shù)據(jù)后得到最終需要的結(jié)果了。

__name__的含義

經(jīng)??吹?Python 會(huì)看到 if __name__ == '__main__':這樣的代碼,這段代碼是什么作用呢,去掉這段代碼后,為什么程序不會(huì)執(zhí)行呢?

__name__ 是系統(tǒng)內(nèi)置變量,代表所在模塊名字,也即所在文件名。當(dāng)模塊直接運(yùn)行時(shí),如 demo_list.py 文件被直接運(yùn)行,__name__ 的值為 “__main__”,所以 if __name__ == '__main__': 通常是觸發(fā)主流程的。

推導(dǎo)式的過(guò)程

推導(dǎo)式的過(guò)程:是將整個(gè)最后的結(jié)果再存入容器的,而不是一邊遍歷一邊推導(dǎo)的。

會(huì)在推導(dǎo)式執(zhí)行完成后,一次性將結(jié)果寫入 tmp_list 變量,而不是執(zhí)行推導(dǎo)式的過(guò)程中就直接寫入 tmp_list 變量。

  1. tmp_list = [i for i in num_list if i not in tmp_list] 

這是無(wú)效的,tmp_list 并不是預(yù)期推導(dǎo)的值。

解析 ngix 日志按小時(shí)統(tǒng)計(jì)行數(shù)

給定一個(gè) ngix 日志文件,解析時(shí)間列并按時(shí)間統(tǒng)計(jì)每小時(shí)的日志行數(shù)。日志文件格式為:

  1. 192.168.1.1 [22/Oct/2019:23:58:54 +0800] "POST /dasdhj/sadqwda/q.log  
  2. HTTP/1.1" 200 133 0.022 "-" "Apache-HttpClient/4.3.3 (java 1.5)" "-" 

編寫 Shell 解析命令為:

  1. awk '{ print $2}' ngix.log  | awk -F ":" '{a[$2]=a[$2]+1} END {for(i in a) { print "time:",i,"count:",a[i]}}' 

思路:

  • 先進(jìn)對(duì)日志按空格分割,得到第二列的日志記錄時(shí)間戳列
  • 再對(duì)時(shí)間列按冒號(hào)分割,得到時(shí)間列,并按時(shí)間列累加
  • 輸出時(shí)間和累加值

input 表單不觸發(fā) onclick 事件

一個(gè)簡(jiǎn)單的觸發(fā)隱藏一個(gè) h1 標(biāo)簽的事件,但是沒(méi)有執(zhí)行,代碼為:

  1. <h1 id="EleId">請(qǐng)點(diǎn)擊此文本!</h1> 
  2. <input type="button" value="點(diǎn)擊隱藏" οnClick="alert('111');">  

反復(fù)測(cè)試,最終確認(rèn)是 input 的用法錯(cuò)誤了,使用 button 按鈕元素就可以了:

  1. <button id="clear-button" onclick="clearInput();">點(diǎn)擊隱藏</button> 

線程池關(guān)閉導(dǎo)致 AtomicInteger 計(jì)數(shù)不準(zhǔn)確問(wèn)題

AtomicInteger 類是使用 CAS 原則來(lái)實(shí)現(xiàn)對(duì)數(shù)值類型的原子操作的,而且并發(fā)效率比 synchronized 高很多。今天看到一個(gè)因?yàn)榫€程池提前關(guān)閉,導(dǎo)致任務(wù)中對(duì) AtomicInteger 計(jì)數(shù)操作未執(zhí)行,進(jìn)而打印的計(jì)數(shù)值不準(zhǔn)確的問(wèn)題。

這個(gè)問(wèn)題側(cè)面驗(yàn)證了原子類的高效,此外,還有一個(gè)知識(shí)點(diǎn)是關(guān)于 ConcurrentLinkedQueue 類的,判斷隊(duì)列是否還有元素,應(yīng)該使用 isEmpty() ,而非 size()。因?yàn)槭擎湵?,size 操作需要遍歷列表統(tǒng)計(jì)元素總數(shù);而 isEmpty() 直接判斷 first 是否為 null ,效率比前者高。

ajax 請(qǐng)求 415 問(wèn)題

SSM 項(xiàng)目中出現(xiàn) ajax 415,出現(xiàn)了請(qǐng)求類型為 json 時(shí)后臺(tái) 415 的問(wèn)題,這個(gè)主要是提交請(qǐng)求時(shí)的文件類型和 SpringMVC 配置的類型不一致導(dǎo)致的:

  • type:json
  • 后臺(tái)要指定 medias 包含 json 類型

 

 

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2020-12-02 10:20:33

Docker命令Linux

2009-12-18 11:15:17

ADSL寬帶共享上網(wǎng)

2012-05-01 20:26:01

iPhone

2021-10-26 22:28:51

筆記本電池壽命

2021-01-19 09:19:33

RPC調(diào)用過(guò)程框架

2016-10-10 12:56:59

銳捷

2025-03-27 23:41:35

豆包搜索AI

2018-11-26 12:34:48

2021-03-15 09:57:57

機(jī)器人人工智能系統(tǒng)

2019-06-10 15:58:30

數(shù)據(jù)分析流量采集

2018-11-04 08:17:41

2009-05-12 10:24:16

華為任正非灰色管理

2018-12-04 11:48:45

微信支付病毒勒索

2014-12-01 14:42:28

阿里巴巴流量

2018-01-11 14:50:30

2014-12-03 11:09:16

數(shù)據(jù)安全數(shù)據(jù)泄露移動(dòng)安全

2012-06-27 17:26:01

瀏覽器歐洲杯

2023-01-30 21:43:13

理想汽車自動(dòng)駕駛

2022-04-21 18:00:00

Linux斯托曼

2022-06-06 16:39:58

云邊協(xié)同大會(huì)分布式云計(jì)算邊緣計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)