在日常工作中,我們可能會遇到各種技術(shù)問題,比如運(yùn)維、開發(fā)、框架、操作系統(tǒng)等領(lǐng)域,不同的技術(shù)人,碰到的難題也不盡相同。為了幫助大家更好的解決問題,51CTO技術(shù)交流群針對一些技術(shù)問題展開了深入的討論交流。51CTO對其中精彩問答進(jìn)行了整理,并通過文章的形式呈現(xiàn)給廣大技術(shù)人,希望能對大家有所幫助。
后續(xù)我們也會定期整理一些常見問題和大家分享,同時也歡迎大家提問或留言,快來看看有沒有遇到同樣的問題吧~
編程語言類
Q:Java 里不能按引用傳數(shù)值類型嗎?也就是 Java 里有沒有 C# 的 ref 關(guān)鍵字?private void changev(int t){t++;},如何通過改變參數(shù)關(guān)鍵字讓這個 t 改變的效果傳出去?
A:不能。這個是 Java 的非常優(yōu)雅的特性,面向?qū)ο蟮木幊讨惺遣捎梅椒ㄖ剌d的方式進(jìn)行解決的。類下面再增加一個 private void changev(double t){t++;} , 這樣傳入 int 或者 double 類型的時候,系統(tǒng)會自動根據(jù)傳入類型選擇對應(yīng)的方法。
深入理解Java虛擬機(jī)里面講過這個。以前面試題容易出現(xiàn),方法相同,傳入類型不同,double int long,傳入short執(zhí)行那個方法。
方法重載,其實(shí)就是面向?qū)ο蟮幕A(chǔ)特性。這個 int 就相當(dāng)于 out 關(guān)鍵字。這比 out 關(guān)鍵字,這種編程方式更優(yōu)雅,更簡約。
可以靜下心來看看 Java 基礎(chǔ)和面向?qū)ο蟮木幊趟枷?,做為BAT主流的后臺編程語言,肯定有它存在的道理。
開發(fā)類
Q1:PHP腳本在執(zhí)行的時候拋出了這個錯誤:double free or corruption (out),請問如何解決?
A:直接原因是空指針多次釋放,要看看程序哪一步調(diào)用出問題了,打斷點(diǎn)看看;調(diào)用 mq時出問題,要看調(diào)用過程是否正確,查查 api,配合斷點(diǎn),rmq 有些功能是需要插件的,這個要確認(rèn)。如果是在本地正常,跑到線上就不正常,那就 try catch 打日志。只在線上出問題,大概率是有不符合預(yù)期的數(shù)據(jù)格式。
Q2:是否熟悉Java agent機(jī)制和ASM?agent attach到進(jìn)程B后,B在回調(diào)前拿到的已加載類是對的,回調(diào)后拿到的classname很多是null?
A:是因?yàn)榭邕M(jìn)程導(dǎo)致,不是一個進(jìn)程了。如果跨進(jìn)程了,你在新的進(jìn)程中,需要重新加載。進(jìn)程間和程序間是一樣的,尤其對于Java,進(jìn)程間還能涉及到類問題?應(yīng)該是通信問題,如果問題成立,只能是線程。
ASM的解析類似于SAX解析XML文件,相比于其它方式比如CGLIB,它的優(yōu)勢在于性能更高,在Spring中都是使用的cglib動態(tài)代理,而cglib本身就是使用ASM。
利用ASM可以獲得class文件的詳細(xì)信息:比如類名、父類名、接口、成員名、方法參數(shù)名、局部變量名、元數(shù)據(jù)等。
還可以對class文件進(jìn)行動態(tài)修改,比如增加、刪除、修改某個類的方法。
CGLIB是對ASM的封裝,簡化ASM的操作,降低ASM的使用門檻。
框架類
Q:QListWidget 中 Item 排序方式是什么樣的?能否介紹下QListWidget 的排序原理?
A:QListWidget 使用 DisplayRole(項(xiàng)目的文本)進(jìn)行排序,并調(diào)用 QString :: localeAwareCompare。要覆蓋默認(rèn)值,可以更改使用的語言環(huán)境(請參閱 QLocale),或者讓您自己的 QListWidgetItem 子類重新實(shí)現(xiàn) QListWidgetItem::operator<,并讓它進(jìn)行所需的比較。
對于任何更高級的,我建議在 QListView 來看看,你可以結(jié)合自己的模型實(shí)現(xiàn)或便民模型QStandardItemModel 或 QStringListModel(后者可能是最簡單和優(yōu)雅的解決方案您的案件)。為了排序,您將在實(shí)際模型和視圖之間放置一個 QSortFilterProxyModel。
操作系統(tǒng)類
Q1:在 hyper 里安裝 win7 總是失敗,這是怎么回事?
A:win7 要安裝 sp1,并且 .net 3.5 和 .net4.8 要安裝;主板開啟 vdiintel 虛擬化;win7 其他版本是不行的。
Q2:銀河麒麟V10 是否支持 SQL Server?
A:銀河麒麟V10 是帶 docker 的,不行就用 docker 跑。目前 SQL-Server 只支持運(yùn)行在 x64 架構(gòu)的 Linux 上。但國內(nèi)的 Linux 發(fā)行版大多使用自主架構(gòu)的處理器,這些處理器大多是 ARM 架構(gòu),所以還是不兼容。
硬件類
Q:有的Ubuntu系統(tǒng)為什么不能安裝高版本的顯卡驅(qū)動?
A:官版驅(qū)動不適配。Linux上用開源驅(qū)動非常多。一般都用官網(wǎng)的、開源的驅(qū)動,如果都找不到,那就換顯卡吧。
運(yùn)維類
Q:I7-11700CPU 16G運(yùn)存 SSD 打開EXCEL-WPS 慢,是怎么回事?新買的電腦,看到CPU占用到95% WPS的進(jìn)程。這個是財務(wù)的EXCEL表格,大小有300M。
A:修電腦三大法則:重啟、重裝、重買;關(guān)掉稻殼,重裝WPS,更換專業(yè)版,都可以試試;還可以換個Office,Office處理大文件性能更好一些;
以下兩個方法不錯,曾經(jīng)處理過2G 的excel:一是用Python pandas,二是把數(shù)據(jù)存到MySQL。
把常用功能寫個腳本,給財務(wù)用就可以,或者寫個SQL,把數(shù)據(jù)入庫,財務(wù)用的時候,上SQL查一下就行;要是不用數(shù)據(jù)庫的話, 那就寫個py 腳本,給財務(wù)的同學(xué)用吧。
現(xiàn)在的有些財務(wù)人員,都開始學(xué)習(xí) Python 了。這不是卷,這是解放程序員的勞動力,讓程序員致力于更有創(chuàng)造性的工作中。
以上就是小編整理的近期技術(shù)人員比較關(guān)心的技術(shù)問題,特此感謝51CTO技術(shù)交流群中的熱心群友,是你們的細(xì)心解答幫助大家解決了難題。如果還有技術(shù)方向的問題,歡迎大家加群探討,也可以在下方留言。