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