博客 / 列表

點墨 - winreg的空值無法寫入導致電腦卡頓問題分析

問題背景 在使用Node.js的winreg模塊進行Windows註冊表寫入操作時,發現當寫入空字符串值時會出現嚴重問題: WinRegistry.set("test", WinRegistry.REG_SZ, "", (err) = console.error(err)) 問題現象 第一次寫入:會在註冊表中寫入一個 /f 值 後續寫入:進程會阻塞在註冊表操作上 系統影響:任務管理器中出現

windows , node.js , registry

點墨 - node-winreg 中文亂碼問題分析與解決

問題描述 在使用 node-winreg 庫操作 Windows 註冊表時,發現存取中文字符存在亂碼問題: 寫入註冊表的中文內容顯示正常 從註冊表讀取中文內容時出現亂碼 winreg的版本如下: 問題根源分析 通過源碼分析,發現問題出現在字符編碼的處理環節: 寫入過程:node-winreg 底層使用 spawn 執行 reg 命令,在 Windows 命令行環境中默認使用 G

node.js , registry , 前端

點墨 - qt輸出源碼日誌

在QT源碼裏,很多qCDebug打印的日誌,如何輸出? 在C:\Users{yourname}\AppData\Local\QtProject增加日誌配置文件qtlogging.ini 如果需要開啓全部日誌,則配置如下所示: [Rules] *=true 如果需要開啓部分模塊日誌,比如開啓lcQpaWindows,首先需要找到lcQpaWindows對應的模塊字符串 配置如下所示: [Rule

qt , 日誌

點墨 - DevEco Studio創建Java項目,gradle報sync failed:connection reset錯誤

使用DevEco Studio 3.1.1版本,創建Java應用,程序報錯,無法運行。 原因: DevEco Studio新建的Java應用默認的gradle配置指向的是https://repo.huaweicloud.com,而你的網絡因為各種原因(比如公司網絡),無法訪問,所以會報錯。 解決方法 1.設置代理 打開File Settings Appearance Behavio

studio創建新項目台 , sync , JAVA , gradle , harmonyos

點墨 - likely()/unlikely()宏的編譯器優化機制分析

引言 在Linux內核源碼中,我們經常看到if(likely(condition))和if(unlikely(condition))這樣的代碼結構。這些宏通過指導編譯器進行分支預測優化,可以顯著提升程序性能。本文將深入分析其工作原理,並通過彙編代碼展示實際優化效果。 核心原理 likely()和unlikely()宏的本質是調用GCC內置函數: #define likely(x) __buil

likely-unlikely , 編譯 , Linux , 優化

點墨 - VSCode 樣式格式化

在使用VSCode的插件進行less文件格式化的時候,發現會存在問題。 index.less @prefix: test; @{prefix}-input{ color :red; width : @base-with; height : @base-height; } @base-size : 10px; @base-with : @base-

less , vscode插件 , scss , visual-studio-code , Css

點墨 - 編譯器優化對多線程數據競爭的影響分析

編譯器優化如何讓多線程代碼"失效":從彙編視角解密數據競爭謎題 在多線程編程中,我們常遇到一個反直覺現象:關閉編譯器優化反而能暴露預期的數據競爭問題。本文通過分析MSVC編譯器對同一代碼的不同優化策略,揭示現代編譯器如何通過指令重排和內存訪問優化,徹底改變多線程程序的執行軌跡。 一、現象之謎:優化等級決定程序行為 當使用/O2優化編譯給定代碼時,程序輸出穩定在10萬或20萬這兩個確定值,而非預期的

c++ , 多線程

點墨 - React 中使用 ECharts 報錯 "series not exists"

問題現象 在 React 項目中使用 ECharts 時,控制枱報錯: series not exists. Legend data should be same with series name or data name 但已確認 legend.data 與 series.name 完全匹配,代碼邏輯看似正確。 問題根源 未正確註冊 ECharts 圖表組件。自 ECharts 5 起,官方採

react , echarts , Javascript

點墨 - 使用gulp上傳打包文件到服務器

項目是使用create-app-rewired生成的react項目,使用gulp自動上傳打包文件到服務器,建議只在測試環境和模擬環境使用。 1.安裝gulp,gulp-ssh包 2.編寫腳本 3.修改config-overrides.js,將打包文件分環境生成 4.編寫gulp配置文件gulpfile.js const { src, task, series } = r

gulp , 部署 , 打包 , 前端 , Web

點墨 - 解決Qt 6.2.3 WebEngine中clipboard.write圖片複製失效及下載問題

複製失效問題 問題描述 在Qt 6.2.3中使用QWebEngineView嵌套網頁時,通過JavaScript的navigator.clipboard.write()複製圖片無響應,控制枱報錯: Uncaught TypeError: navigator.clipboard.write is not a function 根本原因 安全上下文限制 clipboard.write()

chrome , c++ , Web

點墨 - Spring Boot 監控缺失 JVM 指標的根源解析與終極解決方案

Spring Boot 監控缺失 JVM 指標的根源解析與終極解決方案 在基於 Spring Boot 的微服務監控體系中,結合 spring-boot-starter-actuator 與 micrometer-registry-prometheus 實現指標暴露是標準方案。但當遇到 JVM 指標缺失 且控制枱出現 Bean 'XXX' is not eligible for getting p

jvm , prometheus , springboot

點墨 - Qt connectiontype

Qt的信號槽連接機制如下: Qt::AutoConnection:默認,如果信號和槽在同一線程,使用DirectConnection;否則使用QueuedConnection。 Qt::DirectConnection:槽函數立即在信號發出的線程執行,同步。 Qt::QueuedConnection:槽函數在接收者的線程的事件循環中異步執行。 Qt::BlockingQueuedCon

qt , connection

點墨 - java 獲取子串速度比較

有個需求,需要將給定字符串提取子串,比如(aaa.xx)變成aaa,有幾個思路。 使用正則模式匹配,然後替換 使用正則替換 使用substring 代碼如下: import java.time.Duration; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; impor

JAVA , string

點墨 - c++ 對象在棧上還是在堆上?

c++的對象到底在棧上還是分配在堆上? 首先,毋庸置疑,使用new和malloc系列函數分配的對象,一定是在堆上的。 Object *obj = new Object(); 有爭議的是 Object obj; 它是在棧上還是在堆上呢? 要回答這個問題,首先我們需要理解這句話的意思,這句話並不代表在棧上分配內存,它代表的是讓obj具有“自動存儲(automatic storage)”的性質。所謂的“

內存 , , , c++

點墨 - antd的選擇框如何增加tab選中

antd的選擇框默認是不允許tab選中的,如果有這種需求,那麼需要修改源碼。 經過分析,antd的選擇框使用的是rc-select,將node_modules裏的rc-select/lib/OptionList.js和rc-select/es/OptionList.js裏增加Tab即可。(注意:每次npm install,rc-select都會變動,需要重新覆蓋,如果更新了antd版本,需要

react , select

點墨 - js 字符串含中文下對齊

問題 在中文下對齊字符串會出現問題,原因是中文字符佔兩個字節,如下所示 let val = [ { title:"錯嫁豪門:萌娃集合,把渣爹搞破產", author:"左暮顏傅寒蒼" }, { title:"驚!未婚女星竟被萌娃追着叫媽", author:"大雪無聲" } ] function te

node.js , align , string , Javascript

點墨 - java lambda表達式 回調函數

java使用lambda表達式做回調函數,定義一個interface寫一個方法即可(如果一個接口只有一個抽象方法(包括繼承的),該接口是一個函數接口,函數接口可以使用lambda表達式實現),lambda表達式函數內部可以獲取外部變量,會保存堆棧信息 源碼 Callback.java public interface Callback{ void onCompletion(); } Tes

lambda , JAVA , 回調

點墨 - 使用 egg-cloud 調用 dubbo 服務

參考https://www.yuque.com/egg/nod...進行配置,就自身遇到的幾個問題進行記錄。 已運行成功環境: java 1.8 nacos:1.0.0 dubbo-consumer:1.0.0 常見問題: 一、安裝和啓動nacos,需要配置數據庫:先在mysql數據庫裏執行nacos-mysql.sql腳本,然後修改application.propert

dubbo , eggjs , nacos

點墨 - node 下載與上傳文件

將node作為應用程序,從某個網站下載文件,然後將其上傳到服務器上。 需要用到的庫 axios:^0.27.2 form-data:^4.0.0 思路: 1.使用axios將文件下載下來,放在tmp文件夾下,responsetype設為arraybuffer,因為寫文件writefilesync需要使用到arraybuffer,不要下載stream流,使用createwritestream寫文件,

react , upload , formdata , 文件上傳 , node.js

點墨 - QT自定義組件系列1:run一個示例-Custom Widget Plugin Example

1.打開QT示例,Custom Widget Plugin Example 2.選擇編譯環境,注意需要與QT creator保持一致,可以通過Help-About Qt Creator裏查看qt creator的編譯環境,我這裏是Qt 6.2.3(MSVC 2019,64 bit) 3.選擇release構建 4.將生成的customwidgetplugin.dll

plugin , qt

點墨 - 瀏覽器下載視頻

瀏覽器下載視頻 function _download(url, name = "file") { var downUrl = url; var fileName = name; var xhr = xhr = new XMLHttpRequest() xhr.open('GET', downUrl, true); xhr.responseType = 'b

視頻 , 下載

點墨 - 使用charles抓app包

系統環境:win10 1.在charles官網上下載軟件 https://www.charlesproxy.com/... 註冊碼如下: Help-Register Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 2.防火牆開啓charles應用網絡 控制面板-所有控制面板項-Window

ssl證書 , HTTPS , Android , 手機 , charles

點墨 - react函數組件使用React.memo避免重複渲染

在react的類組件裏,我們可以通過shouldComponentUpdate來主動控制組件是否需要渲染,那麼在函數組件裏,有沒有類似的方法可以讓我們主動控制組件渲染呢?有的,那就是React.memo。 React官方文檔給出的介紹: Class components can bail out from rendering when their input props are the same

react , dva.js , 前端 , Javascript

點墨 - grid-column在less下會自動計算

grid佈局,在less文件裏寫grid-column:1/6,會自動被計算成0.16。 解決方法: 1.使用1/span 6 2.使用~"1/6"

less , grid