- 博客(403)
- 资源 (24)
- 收藏
- 关注
翻译 我们应该怎样使用AI编程工具
from:AI工具不仅改变了工程师的工作方式,还使更多人能够构建应用、网站等项目。近几年来,AI已经从辅助编写单个脚本发展成为一套完整的全栈开发套件,只需几个提示就能创建完整的应用程序。我们将分析它们的优缺点和实际应用案例,了解它们如何推动开发者生产力的新浪潮。让我们开始吧!
2025-03-23 22:01:15
26
原创 JavaScript性能优化全面指南
增强DOM操作效率是优化JavaScript性能的关键方面。通过采用文档片段、事件委托和最小化布局抖动等技术,开发人员可以显著提高Web应用程序的响应能力和速度。利用现代框架和工具进一步帮助实现最佳性能,确保无缝用户体验。利用性能分析工具对于优化JavaScript应用程序和确保它们提供流畅的用户体验至关重要。通过利用Lighthouse、Chrome DevTools、Webpack、Vite和APM解决方案,开发人员可以识别性能瓶颈、优化他们的代码并监控应用程序行为实时。
2025-03-15 19:11:26
774
原创 大型语言模型不知道自己不知道——这是个问题
大型语言模型不仅受限于幻觉问题——它们从根本上缺乏对自身能力的认知,这使得它们在执行自己并不完全理解的任务时过于自信。虽然"氛围编程"拥抱了AI快速生成解决方案的能力,但真正的进步在于能够承认模糊性、寻求澄清并认识到自身局限的模型。模型开发的步伐已经有所放缓,一些人对最新的GPT4.5表示失望。然而,过度关注AGI竞赛和基准性能让我们看错了方向。大型语言模型(LLMs)最广为人知和理解的弱点是它们产生"幻觉"的倾向,即模型输出在事实上不正确,却高度可信。这当然是一个限制因素,但还有其他问题。
2025-03-15 14:18:47
901
原创 提示工程初级指南:从入门到精通
提示工程(Prompt Engineering)是通过精心设计输入指令,引导AI模型输出预期结果的技术。就像程序员需要掌握编程语言,与AI对话也需要特定的"语言艺术"。关键要素上下文设定(Context framing)指令清晰度(Instruction clarity)输出格式规范(Output formatting)约束条件(Constraints)
2025-03-15 14:11:38
704
原创 win32应用程序内存不足
当在windows环境运行32位应用程序时,由于32位的限制最大分配的内存只有2G。要想使用更大的内存正常情况下编译为64位就可以了。但是如果程序依赖的库比较多,其他库也需要编译成64位,这样做起来比较麻烦。下面介绍一个更简单的做法,还是32位程序,只需要修改工程属性重新编译一下就可以了。visual studio工程属性设置:右键工程,属性链接器系统启用大地址,选择“是”这样就可以了,你可以试试。...
2021-01-14 07:40:01
1181
原创 CentOS6 yum The requested URL returned error: 404 Not Found
CentOS6不再维护了,目前机器需要更换yum源,地址:https://vault.centos.org/CentOS 6 is now End of Life and there are no more updatesRed Hat have pulled the plug on RHEL 6.x as of Nov 30th 2020 and as a result CentOS 6 is now a dead version. The online yum repos for CentOS 6
2021-01-13 14:31:02
602
原创 jemalloc C++实践
jemalloc是一种通用的malloc(3)实现,优点是避免内存碎片和可伸缩并发支持。下载源码wget https://github.com/jemalloc/jemalloc/releases/download/5.2.1/jemalloc-5.2.1.tar.bz2解压tar -jxvf jemalloc-5.2.1编译安装cd jemalloc-5.2.1./configuremakemake install我的是Centos安装后头文件在/usr/local/inclu
2021-01-13 14:30:06
2365
1
原创 golang vscode launch.json配置
每次调试运行都要先打开main.go然后在菜单里点击Run->Start Debugging或者F5比较麻烦,主要是每次都要定位了main.go文件,这样当我编辑完其他文件后,都要切换一下才能运行。下面增加一下Launch.json配置就可以直接点击左侧的debug按钮运行了,在Launch菜单下的Add Configuration,内容如下:{ // Use IntelliSense to learn about possible attributes. // Hover to
2021-01-13 14:29:10
11817
1
原创 Qt 正确的显示窗口
显示窗口看起来很简单,但是有一些细节要注意的。通常有下面几种情况需要展示一个窗口:第一次创建后展示窗口最小化窗口不在最前面窗口销毁后再次创建(同第1种)注意: 这里说的不是通过任务栏来激活窗口,而是通过用户设计的按钮或者菜单来打开窗口通常的做法如下:widget->show();widget->raise();这里有两个问题:窗口最小化后出不来窗口从非激活状态显示出来后点击主界面,主界面还是被遮挡了,只有在子窗口上点击一下激活子窗口再去主窗口上点击才有效下面代码
2021-01-13 14:24:25
1381
1
原创 malloc_trim和SetProcessWorkingSetSize两个神奇的内存相关函数
它们两个其实没有什么关系,相似之处是调用这两个函数后内存会有明显的下降,但是原理完全不同。malloc_trimlinux平台的函数,官方的解释是:从堆释放可用内存。在程序中堆上new或者malloc的内存我们都会delete和free掉,由于linux的机制它们并没有立即将释放的内存归还给操作系统,这个也是正常的不用担心,因为linux会充分利用内存提高系统的性能。正常情况下我们也不会调用这个函数,只要正常调用了delete和free就可以了。但是如果你内存不够,或者某个操作占用了太高的内存,之后又
2021-01-12 07:56:18
3497
原创 QWidget QLabel没有响应keyEvent键盘事件
在Qt中我们经常通过重写下面两种虚函数来实现按键事件virtual void keyPressEvent(QKeyEvent *event);bool eventFilter(QObject* watched, QEvent* event);但是有时候会遇到无法触发的情况(特别是QWidget,QLabel),这个时候我们会考虑是不是被父窗口给截获了没有传递给子窗口。如果依旧没有解决问题,那可能是这个widget没有焦点的缘故,通常可以通过鼠标点击和tab键可以获取焦点,但是像QWidget、QL
2021-01-12 07:55:18
2094
原创 golang 控制goroutine调度顺序
使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢?如:a1在b1和c1后面执行(b1和c1都执行完a1才能执行)d1在a1后面执行(d1执行完才能执行a1)e1在b1或者c1后面执行(b1或者c1有一个执行完就可以执行e1)下面代码演示了怎样解决上面问题:event/event.gopackage eventimport ( "reflect" "sync" "sync/atomi
2021-01-12 07:54:03
1018
原创 多线程锁key处理
目的是要保证多个线程处理同一个key的消息时是线程安全的,同时是顺序的。收到网络过来的消息,将消息缓存到total msg cache里解析业务消息找到每条数据的key(可能一条或多条)存储在set中将所有key进行hash,对最大线程数进行取余,获取所有线程索引std::set indexList如果消息没有index即没有key,就轮询分发给otherThread处理有index的消息,根据index分发给线程,如果一个消息有多个index,对应的一个消息会分发给多个线程(keyThread
2021-01-12 07:52:29
445
1
原创 log4cxx OutputDebugString DebugView dbgview
log4cxx常用appender有ConsoleAppender输出到控制台,RollingFileAppender输出到文件。在GUI程序中使用log4cxx时,要想能实时看到输出日志一般用windows函数OutputDebugString,log4cxx console appender是显示不出来的。所以如果log4cxx的日志能向OutputDebugString一样输出就好了,没想到还真有这样一个appender,如下配置就能实现了,这样就可以用vs输出窗口或者DebugView工具实时看
2021-01-12 07:51:10
291
原创 sqlite3 安装、开发
SQLite is a C-language library that implements a small, fast, self-contained, high-reliability, full-featured, SQL database engine. SQLite is the most used database engine in the world. SQLite is built into all mobile phones and most computers and comes bu
2021-01-12 07:50:22
365
原创 qt.network.ssl: QSslSocket Qt支持SSL https
Qt使用QNetworkAccessManager类时默认是不支持https协议的,需要增加openssl动态库。我发现新版本的Qt和老版本的Qt所需要的openssl库的名字竟然不一样。老的是:libeay32.dll、ssleay32.dll新的是:libcrypto-1_1.dll、libssl-1_1.dll具体的文件可以在QtCreator包里面去找。...
2021-01-12 07:48:54
419
原创 QTableWidget整行高亮去虚线,样式定制
很常见的一种需求,但是很可惜Qt没有一种比较简单的实现方式。在网上找了很多资料也没有找到,实现方法比较复杂,但是经过我的实验,下面这种方法是可行的,而且有很多意想不到的好处。定义接口类存储当前hovered行,split行是实现其他需求的可以不考虑 class IView { public: virtual void setHoveredRow(int row) { row_ = row; } virtual void setSplitRow(int row) { splitRow_ =
2021-01-12 07:47:44
1532
原创 golang接口型函数作用
在我们使用golang写http服务的时候通常会使用http.Handle来注册pattern对应的Handler,其实这里就使用到了接口型函数,源码定义如下:type Handler interface { ServeHTTP(ResponseWriter, *Request)}type HandlerFunc func(ResponseWriter, *Request)func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request)
2021-01-12 07:47:04
494
1
原创 一个常用的shell启动程序的脚本
一个常用的shell启动程序的脚本,脚本、可执行程序、lib库目录在同级目录即可,包括启动、停止和查看进程运行状态。脚本名:svr.sh应用程序名:gonetdisk启动:./svr gonetdisk start停止:./svr gonetdisk stop状态: ./svr gonetdisk status#!/bin/shset -xulimit -c unlimitedSOURCE=`pwd`function start_server(){ SERVER_NAME=$
2021-01-12 07:45:23
1313
原创 gin多模板、模板嵌套使用方法
在做一个web应用的时候,通常多个页面会共用同一个模板,只是每个页面的内容不同。如网页的导航栏、菜单栏、footer是共用的。我们写代码的时候也只需要写一个主模板页面frame.html,内容空出来给具体的页面来实现,如:主页index.html,文章页面post.html,错误页面error.html等等,在渲染页面的时候只需要渲染对应的具体页面就可以了,隐藏了主模板。路由代码演示如下:app.GET("/home", func(c *gin.Context) { //.... c.
2021-01-07 09:53:55
3260
1
原创 PC微信本地图片格式转化
PC端微信收到的图片存储在本地,我们可以打开微信的设置->通用设置->文件管理->打开文件夹,在FileStorage/Image日期目录下找到图片文件,但是它经过了简单的加密并且后缀为.dat。通过下面这个算法可以将dat文件还原成原始图片,目前支持jpg,gif,png三种格式,其他格式应该也同理。先直接上代码,golang代码如下:const ( jpg0 = 0xFF jpg1 = 0xD8 gif0 = 0x47 gif1 = 0x49 png0 = 0x89
2021-01-07 09:49:33
3197
原创 C++11 实现defer
defer函数功能还是蛮常用的,它是在出当前作用域的时候执行,用来回收资源非常合适,可惜C++里面没有,以前实现起来都比较别扭现在用C++11实现后看起来简单多了。此defer内部lambda表达式捕获的是引用;同一个作用域内先定义的defer后执行;使用define以及x##y连接符的作用是,每次定义的局部变量名都是唯一的,使用起来非常方便,否则你可能需要像下面这种写法,每次还要考虑局部变量名不能重名,可能是如下写法: auto _defer_ = defer_func([] {
2021-01-07 09:45:18
889
原创 设置bing桌面壁纸
golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com)github源码地址:https://github.com/tujiaw/gowallpaper有兴趣的Star一下吧编译好的程序:https://pan.baidu.com/s/1l5OW9GeuUF0r5TFaBWkWZg(提取码:pcqh)直接双击运行,显示如下:设置微软必应的壁纸,用法如下:day - 每天更新壁纸now - 设置当天壁纸prev - 设置前一天壁纸
2021-01-07 09:37:20
1559
1
原创 Qt写的截图工具
Qt写的截图工具,没时间维护开源了,有兴趣的Star一下吧,有时间再写代码相关的介绍吧!源码:https://github.com/tujiaw/ntscreenshot已编译好的绿色包下载ntscreenshotwindows截图工具功能列表基本的截图功能全局快捷键设置开机自启动移动鼠标自动感知选区放大器,放大当前鼠标所在像素点周围区域显示选区大小,鼠标光标坐标,光标所在位置像素的颜色c键复制当前颜色移动鼠标选择选区方向键进行像素级移动保存截图到剪切板保存截图到文件目录
2021-01-06 14:45:33
763
5
原创 CentOS7 U盘安装 No Caching mode page found
[sda] No Caching mode page found[sda] Assuming drive cache: write throughU盘安装CentOS7的时候出现上述错误的解决方法。此时会卡在这里,不要着急耐心等待,超时会输出错误信息(10分钟左右),等待可以输入命令的时候:ls /dev/sd*输出如下,每个机器的电脑不一样,我们需要找到U盘所在的位置,这个时候最好拍照记下来。/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda
2021-01-06 11:46:28
3239
1
原创 CentOS7 debuginfo-install
CentOS7 debuginfo-install允许debuginfo源vim /etc/yum.repos.d/CentOS-Debuginfo.repo将enabled改为1安装debuginfo-installyum install glibc-debuginfo yum-utils安装调式信息包和依赖debuginfo-install libgcc-4.8.5-44.el7.x86_64 libstdc++-4.8.5-44.el7.x86_64 libuuid-2.23.2-6
2021-01-06 11:45:53
1512
原创 CentOS7 systemctl service
CentOS7创建服务,下面展示了两个简单的例子,这样就可以用systemctl命令启动、停止、重启进程以及查看进程状态。如:systemctl start gonetdisksystemctl stop gonetdisksystemctl status gonetdisk配置简介[Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及配置与其他 Unit 的关系。它的主要字段如下。Description:简短描述Documentation:文档地址Require
2021-01-06 11:44:34
224
原创 golang 中介者模式
中介者模式是一种行为设计模式。此模式是创建一个中介对象,以防止对象之间的直接交互,从而避免它们之间的直接依赖关系。一个很好的中介模式的例子是铁路系统平台,两列火车之间是相互独立的,站长充当调停者,使站台仅对其中一列列车可用。列车通过站长交互,站长维持着等候火车的队列,当任何一辆列车离开站台时,通知下一辆列车可以进入了。注意在下面的代码中,站长是如何充当火车和站台之间的中间人。旅客列车(passengerTrain)和货物列表(goodsTrain)实现了列车接口站长(stationManger)实
2021-01-06 11:42:46
162
原创 golang 单例模式
单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。要保证线程安全package mainimport ( "fmt" "sync" "time")type Singleton struct {}var singleton *Singletonvar singletonOnce sync.Oncefunc Instance() *Singleton { singletonOnce.Do(fu
2021-01-06 11:41:55
328
原创 CentOs7 防火墙firewalld基本使用方法
原文地址: https://www.ningto.com/edit/5abaf23c43bef42108349a5d1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disable firewalld 禁用: systemctl stop firew...
2018-07-03 15:45:02
573
原创 bug修复,解决延迟搜索的问题
原文地址: https://www.ningto.com/edit/5aaf8c5d43bef42108349a5c在输入框进行搜索的时候,通常我们每输入一个文字都要进行一次搜索,这样能得到实时的搜索结果。如果搜索速度很快的话当然是没问题的。如果搜索的速度慢,当用户快速输入的时候就会很卡了。 其实在用户快速输入的时候对中间搜索的结果并不感兴趣,最后的结果才是我们想要的,所以中间过程的频繁...
2018-07-03 15:44:33
492
原创 bug修复,内存释放问题
原文地址: https://www.ningto.com/edit/5aaf87c843bef42108349a5b碰到了一个内存释放的问题,在进行某个复杂的操作时内存释放后否则会造成崩溃。经过多方面调查发现此时根据就不能释放内存(历史原因),否则会造成不可预知的问题。所以我打算把要删除的指针暂时保存起来,并不立马delete,等到10秒钟还没有操作的时候(稍微空闲)再把保存的指针都销毁掉。...
2018-07-03 15:43:57
452
原创 Qt自定义Tooltip
原文地址:https://www.ningto.com/edit/5aa23e8a43bef42108349a5a系统自带的tooltip太简单了,自定义tooltip就灵活多了,可以定义各种各样的控件样式。从QDialog继承class Tooltip : public QDialog设置无边框属性setWindowFlags(Qt::FramelessWin...
2018-07-03 15:43:09
6549
2
原创 One of the sources for assign has an enumerable key on the prototype chain
原文地址:https://www.ningto.com/post/5a92c37843bef42108349a59 react native中当我拷贝一个对象的时候遇到上述错误,我有一个obj(有些特殊),for循环给它赋不同的值放入Array中,如下代码: const objList = [] for (let i = 0, count = protoList...
2018-07-03 15:42:16
779
原创 react native中使用protobufjs
原文地址:https://www.ningto.com/edit/5a92c04943bef42108349a58 javascript使用protobuf google官方已经支持了可以看这里,我只是简单的试用了下没有深究,这篇文章介绍的是dcodeIOde的protobuf.js库,web端使用还是蛮方便的,但在react native中遇到了一些坑。载入proto文件使用如下代...
2018-07-03 15:41:27
2223
原创 nginx url跳转保留路径
原文地址:https://www.ningto.com/edit/5a876f7391ca5076a14fdba4 我的网站之前的域名是http://3inns.cn,现在注册了一个新域名http://ningto.com,由于老的域名已经用了一段时间,所以当用户访问老地址的时候我想直接映射到新域名并且保留之前的路径。如老的文章地址:http://3inns.cn/post/5a5a...
2018-07-03 15:40:25
7448
原创 腾讯云服务器CVM上部署nodejs服务
原文地址:https://www.ningto.com/edit/5a5ad12cf8f42e3a2ef7e0f1 之前使用的阿里云快到期的,了解了下腾讯云价格比较合算而且对新用户有代金券,选了一个云服务器CVM,主机类型是标准型S2,配置1核 1GB 1Mbps普通云硬盘,买了三年的总共1080元,再加上满1000元有500元的代金券可以使用,所以实际花费了580元就可以使用三年了,感觉蛮划算...
2018-07-03 15:39:04
1520
原创 QTableView多选
首先要了解它的setSelectionBehavior和setSelectionMode这两个接口,接下来再来考虑选中的问题。查看官方文档,setSelectionBehavior用来设置选中的是单元格,行还是列,setSelectionMode用来设置用户点击后的界面响应:单选,多选,扩展选择(Ctrl+Shift键),相邻,不选中。这里仅介绍设置为ExtendedSelection mode后...
2018-02-19 08:55:57
4921
1
原创 ES6 class介绍
定义类ES6类并不是一个全新的东西:它们主要提供更方便的语法来创建老式的构造函数,javascript的类并不像其他面向对象语言C++,java中的类,这里的类只是语法糖,实际上还是基于原型链的方式。类申明定义类的一种方式是使用类的申明,为了申明一个类,你可以使用class关键字空格后接一个名字。class Rectangle { constructor(width...
2018-02-19 08:55:00
628
原创 Qt回调到UI线程
桌面客户端程序主线程就是UI线程,我们经常要将网络中获取到的数据展示到界面上,通常有同步和异步两种方式,同步方式会阻塞UI,所以这种方式可以忽略了(特殊情况下可以使用)。大多数异步方式请求后是在子线程中返回数据的,而在这里我们是不能直接操作UI的。下面介绍两种方法将子线程获取到的数据抛到UI层处理:调用和接收在一起UI层直接调用下面方法就可以在槽函数中处理应答了 通过网络请求...
2018-02-19 08:54:21
2700
xware-desktop_0.13.20141115_amd64.deb
2015-09-19
我的emacs配置
2011-10-30
GDI+ SDK参考(翻译版本)
2011-05-17
wtl81 支持vs2010
2011-03-18
WTL81_9127
2011-02-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人