- 博客(346)
- 资源 (3)
- 收藏
- 关注
原创 git教程
写教程是对自己知识的一种总结,总结出来跟大家分享。在当前目录创建一个空的git仓库。git initgit提交修改需要两步,下面是把xxx的修改提交到仓库:git add xxxgit commit -m "注释"下面说说后悔了怎么办。如果你修改了文件,还没有add,可以用下面命令回退到修改前状态:git checkout -- ...如果你已经add了
2015-02-07 14:23:42 1207
原创 从QModelIndex得到一个QStandardItem*
因为这两个表格有关联,比如A3和A5关联,A5值时A3两倍,我希望我修改A3时,A5的值,也改为A3的两倍。修改A5时,A3也同样改为A5的1/2.但用这个index,通过model->itemFromIndex(index),得到的item是nullptr。界面上是一个电子表格,点击其中一个表格时,我希望根据这个表格的修改,同时更新另一个表格内容。在QLineEdit的textChanged消息里,这样就拿到正确的item了。
2024-10-24 15:49:55 107
原创 C++ socket编程(3)
介绍了一个简单socket通讯Demo, 客户端和服务器进行简单的交互。两个代码都很简单,如果情况一复杂,就会出错。这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。本文介绍客户端代码修改。这里等1分钟,如果服务器还是没起来,就退出了。客户端其他函数修改同服务器端,可以看。
2024-10-11 01:20:02 346
原创 C++ socket编程(2)
这节我们把代码完善一下,实现一个客户端输入,发送,服务器echo的交互。listen如果出错,返回-1,第二个参数是backlog,可排队个数,客户端connect,可以放到这个队列里,等待服务器accept。socket如果出错,Linux返回-1,Windows的SOCKET是unsigned,返回INVALID_SOCKET(~0).bind如果出错,返回SOCKET_ERROR(-1). 通常是端口占用,权限,地址错误等问题。前面代码很多函数都有返回值,我们都没有检查,完善代码,添加检查。
2024-10-11 00:44:32 373
原创 C++ socket编程(1)
然后客户端会与服务器进行10次交互,一个交互为:客户端发一个消息,服务器收到,原样返回给客户端,客户端收到,再发下一个消息。这里是一个socket编程Demo,不考虑出错情况,代码简单,便于了解socket流程。Demo分为服务器程序和客户端程序,运行需要先启动服务器程序,再启动客户端程序。主要交互在while里, 客户端这边是(发,收),服务器这边是(收, 发)。服务器会等待连接,客户端连接后,服务发送"connected."给客户端。10次交互完成,关闭链接,两边程序都结束。
2024-10-10 16:43:48 453
原创 Windows下多字节字符转宽字符
这个代码页都是指多字节字符串的代码页,MultiByteToWideChar的源字符串和WideCharToMultiByte的目标字符串的代码页。MultiByteToWideChar调用两遍,第一次调用,buff用的NULL,目的是计算转换后字符个数,便于申请内存。1. 调用A结尾的API, 使用多字节字符集函数处理后,转为Unicode字符串。2.调用W结尾的API,使用宽字符集函数处理后,就是Unicode字符串。说了一个奇怪的情况, API用的宽字符版本,代码却是使用多字节字符集。
2024-10-06 23:54:13 347
原创 UNICODE已定义,_tcs*函数却不是宽字符函数问题
一个比较大的项目,CMake里定义了UNICODE,调用Windows的API也是用W的版本。所以如果在CMake文件里定义UNICODE,在Windows下会出现这种矛盾,使用的是宽字符API,tchar函数却是多字节版本。所以CMake文件里,如果需要区分Unicode字符集或多字节字符集,只需要添加或不添加_UNICODE定义即可。可以看到定义了_UNICODE,UNICODE会自动定义,_MBCS自动去掉定义。从前面看,只定义UNICODE,会产生奇怪的情况,代码用的字符集是多字节字符集。
2024-10-06 23:16:37 233
原创 rpmbuild spec文件如何排除一些文件
spec文件在使用中还发现一个问题,#并不能注释掉%开头的行,不需要的%开头的东西,直接删掉,否则用#注释掉,还会有各种问题。因为exclude应该跟defattr一样是files下的一个命令,上面那样是没有用的。用rpmbuild打包时,有些文件是不需要打包到rpm包里的,这时需要修改spec文件。
2024-08-28 15:01:07 244
原创 vscode附着调试
这个要加在初始化代码后面,不要影响初始化。会sleep 20秒,附着上后,暂停,修改loop大于20,就退出循环了,往后走了。调试时,选(gdb) Attach,等要调试的进程启动了,按F5,会跳出选择进程的窗口,选择要附加的进程, 附加后,就可以调试了,以前设置的断点,也会被捕捉中断。有时候,我们要调试的是在进程启动时的代码,等我们附着上后,设置的断点已经运行过去了。这时候可以在进程启动的地方,加延时,方便附着。我有一个程序,是别的程序调用启动的,所以需要等它的进程启动后,再附着上去调试。
2024-08-25 10:40:08 441
原创 vscode运行已编译好的程序
假设我有一个项目,已经编译好了,需要调试,用gdb命令行调试不熟悉,还是用vscode来调试比较好。关键点:"preLaunchTask": "",这个是空的,就不会去编译了,直接运行。这个.env会设置环境变量。
2024-08-25 10:12:54 306
原创 生成带Debug信息的Release版本
有时候,我们在Debug版本运行正常的程序,在Release版本下运行却有问题。我们需要生成带Debug信息的Release版本,用于调试跟踪。Release版本添加Debug信息。这样生成的Release版本就可以调试跟踪了。
2024-08-25 09:09:17 192
原创 Makefile:87: *** 多个目标匹配。 停止。
我是在Linux上编译,后来发现,这个目录在windows下编译过,下面目录里都有Makefile,Makefile.Debug,Makefile.Release等文件。qmake生成的Makefile完全没有问题。根据网上搜索结果,1.回车问题。2.空格、TAB问题。删除了这些文件后,再qmake,make,就通了。make时出现上面的多个目标匹配问题。
2024-08-15 20:38:24 199
原创 scp命令的使用
scp命令是secure copy的缩写,用于在Linux下进行远程文件拷贝,windows一般也有该命令。在Windows和Linux之间传文件,最简单的是共享目录,如果不能使用共享目录,可以使用scp命令, 一般Windows和Linux都支持。这个是把当前目录的123.txt文件,copy到192.168.0.100机器的/home/user/目录下。会让你输入user的密码。这个是把刚才那个文件从100的机器再copy下来,放到d:\xxx\目录下。也需要输入user的密码。上面是从cmd执行的。
2024-08-08 14:37:32 546
原创 点乘与叉乘
又叫向量的内积、数量积,是一个向量和它在另一个向量上的投影的长度的乘积;结果是一个和已有两个向量都垂直的向量。该向量的模长是两个向量做边的平行四边形的面积。可以用来判断两个向量是否垂直,垂直则点积为0。矢积/外积/向量积/叉积。标积/内积/数量积/点积。
2024-04-10 00:46:09 279
原创 hdf5文件node name长度可以支持多长?
根据HDF5库的规范,节点名称是一个UTF-8编码的字符串,没有固定的长度限制。这意味着你可以使用非常长的字符串作为节点名称,但请注意,过长的节点名称可能会导致一些实施上的限制或不便。因此,根据你的具体需求,你可以权衡节点名称的长度和对存储空间和性能的影响。请注意,虽然理论上节点名称的最大长度是128个字符,但在实际应用中,可能还需要考虑其他因素,例如文件系统的限制或操作系统的限制。手机上文心一言说是255,网页上是接着上面问的,回答是“HDF5节点名称的最大长度是。节点名称的最大长度是128个字符。
2024-02-04 17:28:50 222
原创 ifstream::tellg() 返回-469
使用过程中发现,tellg()返回的位置,有时有效,有时无效,第一次是返回0,后面文件有输入后,再次读取前,调用tellg(),有时返回-469,有时返回正的位置。一个程序输出一个文件,另一个程序打开这个文件,读入内容。读入过程中,需要记录读取位置,使用tellg()获取读取位置, 以便后面用seekg重新定位读取。经过多次摸索,结合网上搜索,发现windows下,ifstream只有用二进制模式打开文件,tellg才能返回正确的位置。
2024-02-01 01:50:12 386 1
原创 signtool.exe在哪里?
今天编译代码用到signtool签名,signtool.exe不在path环境变量里,看网上说安装Windows SDK 就会安装signtools,安装了Windows SDK,还是没有找到。这个bin目录下有多个sdk版本,每个版本都有x86和x64,里面都有signtool.exe, 都可以用。以后找sdk的东西,要到Windows Kits目录里找。
2023-12-20 19:42:08 819
原创 Windows编译动态库没有生成.lib文件问题
最近修改了一个项目,以前生成静态库,后改为生成动态库,在Linux上没有问题,但在Windows上只生成了.dll文件,没有生成.lib文件。后来找到原因,代码里没有dllexport声明,没有东西导出,所以才没有生成.lib文件。文件除了可以用作静态链接库外,还有另一种用途,就是用作动态链接库(这样就跟Linux一样,类和函数全导出了。在Windows中,
2023-12-12 13:40:45 1495
原创 CentOS7安装最新版本git
make时,doc和info是没有make成功的,因为前面有软件没装。但不影响git编译使用。CentOS7上的git是1.8.3.1,比较老,使用体验不好。下载源码来升级一下。安装后,git变为2.43.0,显示log更好看了。因为CentOS7.9很老了,有很多软件找不到。第四行,docbook没有安装,找不到这个的。第二行docbook2X没有找到。第三行getopt没有找到。
2023-12-05 16:23:20 613
原创 CentOS配置本地源
把上面的"mount -t iso9660 -o loop /mnt/iso/CentOS-7-x86_64-Everything-2009.iso /mnt/cdrom/"添加到最后。2.把相应版本的Everything的iso复制到机器上。然后copy到刚才iso目录。centos7的Everything有10G多,这个复制很费时间。然后可以安装大多数软件了,没有的软件可以在安装编译环境后,下载源码编译。
2023-11-29 18:27:23 598
原创 Ubuntu定时执行任务
运行后,会发现,打开的是一个新的文件,前面普通用户权限写的任务不在这个文件。上面的几个都是不需要root权限的,如果运行的任务需要root权限怎么办?如果显示“no crontab for xxx” 说明没有启动cron。cron一个Linux定时执行工具,可以定时执行一些任务。然后就跟上面一样,添加需要root权限的任务。示例:每天8点,执行test.sh.示例:每5分钟,写一下log.示例:每天2点重启机器.这样就启动cron了。
2023-10-31 19:58:54 2064
原创 system在client端运行正常,在server端运行失败问题
在windows上,不切换盘符,cd是不能到达对应目录的。server端运行的环境不同,默认在c盘,client端运行时,正好在d盘。使用system(command.c_str()), 同样的command,在client端运行正常,在server端运行却失败。
2023-08-17 14:54:36 123
原创 VMware虚拟机设置共享文件夹丢失问题
最近在用VMware,装了几个虚拟机后,发现第一次设置好共享文件夹,是可以用的,虚拟机里/mnt/hgfs/目录下有共享文件夹挂载。关闭虚拟机,再打开,就没有了,虚拟机设置里还有共享文件夹 的设置,删除了,再设置也没有用。CentOS,Ubuntu,麒麟等操作系统都试过,都有这个问题。我用的VMware是官网下的免费版,不知道付费版本是不是这个问题。在网上搜,发现应该是VMware Tools不能自动挂载共享文件夹问题。以后每次开机都能加载了。
2023-08-01 21:53:18 1146 1
原创 Linux下打包deb
先处理依赖,因为一个可执行文件依赖很多动态库,动态库又依赖很多动态库,所以只拷贝可执行文件不行,需要把这一系列依赖文件都找到,并且可执行文件和动态库运行时找其他文件的路径编译完一般是绝对路径,需要改为相对路径才能在改变位置后也能用。3.建立一个空目录,起名Project,作为工作目录,在工作目录里再建一个目录,起名ABC,这个第二级的目录才是我们linuxdeployqt用的目录,复制可执行文件到这个目录里。6.使用显式加载的动态库,先不要copy过来,因为依赖分析也会分析这些库,没有必要。
2023-07-19 11:18:36 1144 2
原创 specialization of xxx after instantiation
这个有时跟编译选项有关,release编译有这个问题,debug没有。编译出现这个错误,原因是特化模板放到模板调用后面了。
2023-07-14 16:11:42 620
原创 shell脚本里相对路径转绝对路径
一个shell脚本A,要调用另一个脚本B,参数需要绝对路径,因为调用的脚本里有目录进出操作。但如果脚本A里,调用时写成绝对路径,父目录变化时,就需要手工修改脚本。通过上面的操作,就得到一个相对当前路径的绝对路径。
2023-07-11 20:16:06 1133
原创 Ubuntu下编译VTK
到VTK源码的build目录(这个是第5步自己建的目录),打开终端,输入make,就可以编译了。5.打开cmake-gui,设置源码路径,编译输出路径,在源码里建一个build目录,用于存放输出。9.有红色不要紧,毕竟这些Qt目录都找到了,再次点击Configure,这次没有红色了。编译会有点小错误,是某个Qt头文件没有包含,大概两三个文件需要修改,改了就可以编译过了。6.选择QT,Rendering,StandAlone,点击Configure。1.先安装QT,不知道不装行不行,我们项目需要。
2023-06-30 00:44:44 1302 1
原创 libiconv库转换字符串出现BOM问题
使用iconv转换字符编码,经常出现转出的字符串带BOM头的问题。经过测试,发现unicode编码用“utf-32”或“utf-16”,转出或转入,得到的字符串有BOM,而用“utf-32le”、“utf-32be”、“utf-16le”、“utf-16be”这样的,就不会有BOM。所以需要明确告知iconv,编码的endian,否则转出来的字符串带BOM.
2023-06-29 23:17:30 215
原创 cmake在linux上实现PRE_BUILD功能
同一个cmake文件,在VS上是可以实现PRE_BUILD功能的,在linux上编译则没有执行到,不起作用。修改CMakeLists.txt后,下面的实现,可以linux编译时也能执行到。原理就是通过两次string替换,把文件名里的分隔符替换成下划线,用文件名做custom target,然后添加dependencies,这个temp_target就会执行到了。之所以用文件名做custom target,是因为这段在一个function里,会多次调用,不能用固定的target名字。
2023-06-27 23:57:46 354
原创 麒麟系统鼠标滚轮不能实现页面滚动
刚用麒麟V10,发现有滚动条的页面,滚动鼠标滚轮不能控制页面滚动。修改“设置”-“设备”-“鼠标”-“滚轮速度”,设置个合适的速度,就可以了。不过这个速度设置很难用,最低几乎不动,滚几下,才动。动一下也不是一行,而是多行,可能是没有适配各种分辨率屏幕。
2023-06-27 09:10:15 2015
原创 Visual Studio 设置函数断点
调试c++程序,有第三方库,只有头文件,没有源代码,怎么在调用库函数时打断点?在每个调用地方打断点比较麻烦。还有一个是加个接口层,在接口层上打断点,代码比较久了,有很多调用,修改量很大。用Visual Studio可以打函数断点,“调试”-“新建断点”-“函数断点”。因为微软的网站上是错误的,所以写下来,记录一下。就是只能有参数类型,不能有变量名。
2023-06-06 11:20:29 665
原创 删除远程已经删除的分支
git服务器上合并代码后,远程的分支一般删除了,这时候本地的分支需要自己删除,有时候分支用的多,会攒一大堆这样的本地分支。\[[^:]+:\s*gone\] 中括号,里面要有gone,否则不匹配。[^\[]+ 直到左中括号。\s* 前面可能有空白。(\w+) 分支名称。.*$ 一直到行尾。\s+ 分割空白。
2023-05-22 23:12:44 157
原创 Python处理管道数据
Python作为脚本语言,如果能像shell一样处理管道传来的数据,将很有用。下面就是个Demo。就可以处理data.txt里的一行一行的数据了。
2023-05-22 22:46:21 255
”SM总线控制器“和”其他PCI桥设备“驱动打包
2014-10-09
VisualSVN Server 用网页修改用户密码
2014-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人