工作笔记
本专栏记录了本人在工作中学习到的知识。欢迎大家查阅,
IT1995
每周个人笔记分享,欢迎广大网友查阅!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux笔记-使用SCL离线升级GCC
本文介绍了在CentOS 7系统中通过离线方式升级GCC编译器的详细步骤。主要流程包括:1)在联网机器上修改软件源为阿里云镜像,安装devtoolset-9;2)查询并打包/opt/rh/devtoolset-9目录;3)将压缩包复制到离线机器解压;4)配置.bashrc文件添加环境变量。关键点:需确保机器架构一致,使用scl工具管理多版本,通过修改软件源解决CentOS 7停止维护的问题,最终通过source命令激活新编译器环境。该方法同样适用于其他devtoolset版本的安装。原创 2025-06-16 08:49:12 · 285 阅读 · 0 评论 -
MySQL笔记-mysql -hlocalhost和mysql -h127.0.0.1的不同
我这边有台Linux的机器,搭建了MySQL,端口号是1万开头(非3306),因业务需求,需要再搭建一台MySQL,端口号为3306的,为了方便,我搭建了一个docker版MySQL,启动时做了HOST,端口是3306。一开始以为是iptables转发是不是有问题,就强制写了一条nat转发127.0.0.1到docker网关的规则,但还是不行。应用程序里面也是如此,当输入的是localhost时,连接到宿主机。时,他连接到宿主机(端口号1万开头的那个mysql了,查日志查到的)有意思的地方来了,当我输入。原创 2025-04-28 13:55:18 · 409 阅读 · 0 评论 -
C++笔记-关于LNK2019和LNK2001的解决思路(2024-12-03)
② 写代码应该满足面向对象基本原则,至少要写成高内聚低耦合,一样的功能要抽出来放一起,为什么会出现2个同样的文件名(不在同一目录)并且里面还及其相似。工作这么多年了,还在记录LNK2019和LNK2001这个感觉有点菜了,但这次一定要记录下这个问题,因为感觉很具有代表性。有两个同名的.h文件,不在同一个目录,里面的内容还特别的像,刚好这个项目的include都包含了这2个目录。① include一般是引用第三方库时,才用的,自己include自己,这个感觉太奇怪了。并且调用时,需要using。原创 2025-04-07 08:56:12 · 366 阅读 · 0 评论 -
NSIS笔记-使用NSIS进行windows程序打包
最近接到做的项目需要尽可能产品化,就和wps,qq,微信那样,下一步,下一步安装。参考是NSIS这款软件,所以就有了这个笔记。感觉这个软件还是比较牛逼的。此上面这篇博文中涉及一个工具,用于操作NSIS的,HW VNIS Edit。东西都比较全Examples里面包含了设置环境变量的东西。这里有一点要说明,编译的时候要慢慢等,要耐住性子。如果安装时要设置环境变量,需要加载这个插件。这里我使用的是博客园的水晶石大佬的修正版。放到nsis的plugins下即可。将Plugins下的几个dll。原创 2025-02-24 08:33:40 · 298 阅读 · 0 评论 -
SQL笔记-DM和Oracle中spool的使用
在开发中spool命令估计用得不多,都是管理工具直接上,看得清清楚楚,明明白白,但在实施和运维过程中和spool命令很重要,因为可能会登陆到别人的服务器,别人的服务器不知道是否有管理工具,但最基础的isql或disql总是有的,但这类工具查出来的,肉眼很难去看。此时就需要使用spool命令,这几天做实施,也是有大神指点,我才知道有这个好用的命令,在项目现场待过的人综合实力都非常的强。在数据库中,spool命令用于将查询的结果输出到文件。在Oracle中,spool命令用于将SQL查询的输出写入文件。原创 2025-01-20 08:29:35 · 354 阅读 · 0 评论 -
SQL笔记-DM和Oracle中spool的使用
在开发中spool命令估计用得不多,都是管理工具直接上,看得清清楚楚,明明白白,但在实施和运维过程中和spool命令很重要,因为可能会登陆到别人的服务器,别人的服务器不知道是否有管理工具,但最基础的isql或disql总是有的,但这类工具查出来的,肉眼很难去看。此时就需要使用spool命令,这几天做实施,也是有大神指点,我才知道有这个好用的命令,在项目现场待过的人综合实力都非常的强。在数据库中,spool 命令用于将查询的结果输出到文件。在Oracle中,spool 命令用于将SQL查询的输出写入文件。原创 2025-01-13 08:45:43 · 351 阅读 · 0 评论 -
Python笔记-from xxx import xxx时TypeError: expected str, bytes or os.PathLike object, not NoneType
Python笔记-from xxx import xxx时TypeError: expected str, bytes or os.PathLike object, not NoneType(项目实施时容易出现的问题)原创 2025-01-06 08:24:34 · 656 阅读 · 0 评论 -
Qt笔记-Qt Creator开发环境搭建
说句真实的,VS开发工具开发纯C/C++的项目还是十分方便的,但如果是Qt项目,QtCreator感觉还是略胜一筹。我这边以前vs2012他们都是基于x86_64开发的,所有的库和其他的程序都是x86_64的,所以这里得用xx86_64的。这里QtCreator开发环境算是完成了一半了,程序能正常编译运行了,但不能下断点调试,下面来解决断点调试问题。下载后建议进行在线安装,只需要勾选Debugging Tools for Windows,然后点击安装,会自动进行安装下载。此时断点调试就正常了。原创 2024-12-23 08:31:33 · 1566 阅读 · 0 评论 -
Linux笔记-现场实施记录(找网口、挂载u盘)
p 选项,它的全称是 "phy-device" 的一个缩写,通常用于指示网络接口的物理设备进行某些操作,比如在网络接口上闪烁灯光,以便于识别。ssh登陆服务器后,首先使用lsblk(ls block)命令用于列出系统中所有可用的块设备以及它们的相关信息。此时对应的u盘就是/mnt/udisk目录了,拷入和拷出使用这个目录即可。在项目现场,进行实施,在此记录下,方便以后查阅。此时物理网口会闪烁,此时再看下是哪一个口,就用网线查哪一个。使用完后需要进行un操作,也就是反挂载,避免文件丢失。原创 2024-12-09 08:36:47 · 437 阅读 · 0 评论 -
C++笔记-对“继承”的进一步认识(2024-08-15)
这里就有点看开始奇怪了,这里的base变量是用父类new的,第二个打印只是强转成了A*,然后成功打印了A类的print,我感觉应该会运行时报错或者打印Base的print也能理解。加了virtual就好理解了,新加了个虚表的概念,调用print,就直接从虚表中拿函数地址,因为没有new A,所以虚表没有被刷掉,调用的还是Base类的print。在C++中,如果发现有了继承关系,那么注定会有,父类指针指向子类对象。类的设计中,如果基类有虚函数,通常将析构函数声明为虚的,以确保派生类的析构函数能够被正确调用。原创 2024-11-18 08:37:51 · 469 阅读 · 0 评论 -
C++笔记-对“继承”的进一步认识(2024-08-15)
这里就有点看开始奇怪了,这里的base变量是用父类new的,第二个打印只是强转成了A*,然后成功打印了A类的print,我感觉应该会运行时报错或者打印Base的print也能理解。加了virtual就好理解了,新加了个虚表的概念,调用print,就直接从虚表中拿函数地址,因为没有new A,所以虚表没有被刷掉,调用的还是Base类的print。在C++中,如果发现有了继承关系,那么注定会有,父类指针指向子类对象。类的设计中,如果基类有虚函数,通常将析构函数声明为虚的,以确保派生类的析构函数能够被正确调用。原创 2024-10-23 13:58:42 · 459 阅读 · 0 评论 -
C++笔记-UTF8和UTF8-dom的区别
今天遇到的就是这个问题,我用notepad将ascii转utf8后,发现以前的c++解析程序core dumped了,定位到了读首行时,cout输出正常,但string[0],这种首行下标访问就不正常了,转ascii为原创 2024-10-14 13:55:37 · 744 阅读 · 0 评论 -
MySQL笔记-对mysql.sock.lock认识(2024-06-12)
此篇博文记录到个人笔记的时间为2024-06-12。原创 2024-08-26 08:36:40 · 1501 阅读 · 0 评论 -
Redis笔记-分布式存储方案中哨兵模式配置
以前在系统分析师中学习到了Redis哨兵模式,只知道其中基本概念,但不知道怎么去配这个,今天看到某项目,特意记录下其配置过程。哨兵模式比主从模式,更具有容错性。Redis分布式存储方案分布式存储方案核心特点主从(Master/Slave)模式一主多从,故障时手动切换哨兵(Sentinel)模式有哨兵的一主多从,主节点故障自动选择新的主节点集群(Cluster)模式分节点对等集群,分slots,不同slots的信息存储到不同节点如下,配置2个哨兵。原创 2024-08-19 08:41:44 · 703 阅读 · 0 评论 -
Spring Boot笔记-使用dynamic-datasource配置多元数据库(MySQL和达梦)
以前都用JPA,配置多元数据库稍微麻烦那面一点点,这几天看了下年轻人的Java代码,发现Mybatis用得比较多了,而且还有比较好用的三方库,配置多元数据库,相对简单,在此记录下。在yml文件中配置,官方只给出了yml。properties没有提,但看了yml后,发现的确比properties要简洁好用多了。使用就相当简单了,用注解就可以了。下面我用jdbctemplate来调用下。这里有点要注意的primary必须指定一个,不然项目启动后会报错。启动后打印这个,就是成功了。原创 2024-07-29 08:34:16 · 919 阅读 · 1 评论 -
Linux笔记-对.a静态库的进一步理解(2024-04-09)
问:遇到问题应该及早发现才算是好的方法吧,.a静态库需要其他程序链接他时才会发现问题,那.a库的优势在哪呢?答:是的,一般来说,及早发现问题是好的编程实践。静态库(.a文件)和动态库(.so文件)各有其优势,针对不同的应用场景选择合适的库有助于提高开发效率和程序可维护性:静态库(.a):优势:独立性: 静态库可以将所有依赖项(包括第三方库)打包在一起,使得程序在不同环境中运行更为可靠。可移植性: 可以将静态库嵌入到可执行文件中,方便在没有动态库的环境中运行。原创 2024-07-22 08:41:34 · 1188 阅读 · 0 评论 -
Linux笔记-对xargs的理解(2023-12-13)
在Linux中,xargs命令的全称是"eXtended ARGuments"。它的主要作用是读取标准输入数据,并将其作为参数传递给其他命令进行处理。xargs命令通常用于解决输入参数过多导致命令行过长的问题。它可以将输入数据分割成合适的大小,并多次调用其他命令来处理这些分割后的参数。此篇记录在个人笔记库的时间是2023-12-13,公布到互联网上的时间是2024-04-09。其中,command是需要处理输入参数的命令,可以是任何合法的命令。原创 2024-04-09 08:36:58 · 566 阅读 · 1 评论 -
C/C++笔记-make编译时需要注意的问题(编译可执行程序时链接的so出现未定义的引用)
一般开源的so兼容性相当好,基本上不会出现上面的问题,自定义的so很有可能会出现。所以解决办法,还得去看makefile文件,和报错的地方,多少个参数,并且是在哪个地方定义的.原创 2024-03-25 08:44:25 · 659 阅读 · 0 评论 -
Oracle笔记-查看表已使用空间&最大空间
在 Oracle 18c 数据库中,USER_SEGMENTS 是一个系统表,用于存储当前用户(当前会话)拥有的所有段的信息。段是 Oracle 中分配存储空间的逻辑单位,用于存储表、索引、分区、簇等对象的数据。通过查询 USER_SEGMENTS 表,你可以获取当前用户所有段的信息,如表名、大小、扩展信息等。目前以Oracle18c为例,主要是查这个表USER_SEGMENTS。这将返回当前用户拥有的所有表和索引的名称、类型、大小和占用的块数。比如查表目前的空间大小和大小。查看他的spaceName。原创 2024-01-02 08:44:58 · 2033 阅读 · 0 评论 -
Linux笔记-对/dev/vda1和/dev/vda2的理解
首先是这张图:对于:/dev/vda1和/dev/vda2可以知道,这个机器是在虚拟机上的,从设备描述中可以看到,与IO有关。原创 2023-11-06 08:54:51 · 8951 阅读 · 0 评论 -
DM工作笔记-DATEADD(指定日期添加n个时间段)函数和其他时间函数
这里先介绍这样的一个函数,因为上面的CREATE_TIME是TIMESTAMP类型。所以这里要用NOW(),用来获取当前时间戳。如果再有这样的一个需求,离现在(当前时刻)2小时外的数据是过期数据,把这些过期数据拧出来。现在有个需求,让CREATE_TIME添加,2秒,2分钟,2小时,2年。达梦官方文档已经说得很清楚了,在此仅记录下笔记,方便以后进行查阅。这里说明下CREATE_TIME是TIMESTAMP类型。TIMESTAMPDIFF用于返回时间间隔。原创 2023-10-16 08:42:14 · 5771 阅读 · 0 评论 -
Java笔记-将Map转指定Class
这里有个要求,就是Map中的key要和Class中的成员名一样,并且Object中数据类型也要一样。应为其实就是用反射去赋值。原创 2023-09-25 08:36:05 · 3097 阅读 · 1 评论 -
Qt笔记-自定义QSet,QHash的Key
②qHash(const QString &, uint):生成hash的,同样要传入唯一标识的,上面的例子是用name生成的hash再和出生时间异或。①operator==:这里要注意,判断2个自定义对象是否相等,如果有唯一标识字段,比如主键,就可以直接用那个,如果没有,就在结构体中想想,拿些字段组合可以唯一标识这个结构体;构造2个内联函数,方便QHash去对比一个是operator == ,一个是qHash(const QString &, uint);在此我直接总结下,方便查阅。原创 2023-06-26 08:44:08 · 3650 阅读 · 0 评论 -
Linux笔记-so.1和so的区别(三方程序链接Qt的so.1和so)
如果是这样的,那么需要把这些都拷贝到对应的lib目录下,其他程序调用的时候一般不会直接链接到libXXXLib.so,会链接到so.版本号的程序所以有时就会出现error while loading shared libraries .... not found。领导让你从中扣出某个功能,再进行一些业务操作,变成新的程序,而要扣的某些功能,有的用了公司其他人开发的so。②使用ldd,查看程序链接到哪些dll,在国内,写的so一般都没有版本号,没有链到版本号的so要特别注意;最后屁股能坐得住椅子,慢慢测。原创 2023-06-05 20:46:13 · 5833 阅读 · 0 评论 -
Qt笔记-pro文件新增宏、if、else、编译后的shell命令(写so或dll时提高开发效率)
背景是这样的,目标是要写个dll,so,这种动态链接库,但如果直接写这玩意的话,调试起来很麻烦,需要用其他程序去加载他,特别是在linux上,没界面的那种,开发效率简直慢了不知道多少。从中LIBXXX_LIBRARY是在pro文件中定义的,当有时就加载libXXX_global.h,没有就说明是exe,就。②代码中通过pro中定义的宏,对Q_DECL_EXPORT和Q_DECL_IMPORT进行设置,设置到要导出的类上。最后来看下关键的类,也就是导出的类,提供给三方用的。③#:pro文件中“#”代表注释;原创 2023-05-31 18:02:50 · 4593 阅读 · 0 评论 -
C/C++笔记-记录一次对qmake生成的Makefile的分析(2023-02-07)
Wl, -rpath:①用于编译时指定间接引用的库位置,作用同-Wl,-rpath-link;②用于运行时指定所有引用库的位置,作用同修改环境变量(LD_LIBRARY_PATH),并且库路径引用优先级高于LD_LIBRARY_PATH;-fPIC:用于生成位置无关的代码(Position-Independent-Code);-DQT_CORE_LIB:这个没查到,但看名称差不多能猜到是QT核心库的调试;-D_REENTRANT:它会对部分函数重新定义它们的可安全重入的版本;-L:Link链接路径;原创 2023-04-10 21:47:19 · 2462 阅读 · 0 评论 -
Linux笔记-使用grep检索指定字符串
如果这里面有很多文件夹,还需要检索子文件夹中的字符串带个-r就可以了。以前都是用find和grep这种组合命令去检索。这种更加灵活点,但是有时用grep就够了。-i:不区分大小写;原创 2023-03-30 09:05:07 · 3018 阅读 · 0 评论 -
Qt笔记-pro文件中添加-fpermissive
在Makefile里面写比较方便。老项目里面的库,一包含就报-fpermissive错误。我在Linux上成功了。原创 2023-03-13 09:18:43 · 2957 阅读 · 0 评论 -
Qt笔记-pro文件配置include和lib及遍历文件夹及文件排序
pro文件里面也可以定义变量,比如DPI_INCLUDE和DPI_LIB,调用的时候用$${DPI_INCLUDE}和$${DPI_INCLUDE}就可以了。有QDir::Time、QDir::Size、QDir::Type这些比较常用。QDir::SortFlag::Name,就是按照文件名排序。首先是pro文件配置include和lib。连接include用INCLUDEPATH。LIBS为链接的动态和静态文件。原创 2022-11-28 15:33:51 · 3001 阅读 · 1 评论 -
Qt笔记-解决QTcpSocket发送数据成功,但接收端接收不全的问题
这里主要是这样的Qt写了一个服务端,在开发环境下,没出现任何问题,但在生产环境下,就出现问题了。使用Fiddler的简单抓了下包:发现Body只有27045,而请求里面确是这样的。这里就很有意思了。这里的Qt服务端,在发送完数据后,会主动和客户端断开连接。不像其他的web服务器,需要等客户端来断开连接。这里用curl请求会有报错: 大体上的意思就还有这么多位的数据没读,通道就被关闭了。在Qt服务端关于关闭的代码是这样的: 并且这个tcpSocket->write的返回值,也是正确的,说明的确把要原创 2022-07-14 09:00:07 · 5216 阅读 · 0 评论 -
Qt笔记-使用QString和QByteArray使得字符串正常显示和十六进制显示
如下代码:#include "JSH16Analysis.h"JSH16Analysis::JSH16Analysis(){}QString JSH16Analysis::Utf8ToHex16(const QString &utf8){ QByteArray byteArray; QString ret(byteArray.append(utf8).toHex()); return ret;}QString JSH16Analysis::Hex1原创 2022-05-30 08:48:34 · 1222 阅读 · 0 评论 -
电力笔记-30个行业专业词汇(Ⅱ期)
注:以下的所有概念解释均来自于互联网。1. 潮流计算:在给定电力系统网络拓扑、元件参数、发电、负荷参量条件下,计算有功功率、无功功率、电压在电力网中的分布。是根据给定的电网结构、参数、发电机、负荷等元件的运行条件,确定电力系统各部分稳态运行状态参数的计算。2. 裕度:相位余裕,主要用来衡量负反馈系统的稳定性,并能用来预测闭环系统阶跃响应的过冲,也就是留有余地的幅度。3. 负荷基线(基线负荷):按照时间点组成的负荷线,这个基线可以这样计算。选取最近5个经拟合后的不参与需求响应和有序用电原创 2022-03-26 09:42:53 · 3364 阅读 · 0 评论 -
MySQL笔记-group by和聚合函数的使用
group by:其实就是分组,把同类的组,数据放到一起,然后用聚合函数去统计。下面是详细的说明。对应的SQL如下:SELECT * FROM fund_earning_2022 ORDER BY create_time DESC如下数据内容:这里用2个域来测试下:SELECT create_time, day_growth FROM fund_earning_2022 ORDER BY create_time DESC如果用这样的SQL语句:SELECT cr原创 2022-03-21 08:53:59 · 3051 阅读 · 4 评论 -
电力笔记-30个行业专业词汇(Ⅰ期)
注:以下的所有概念解释均来自于互联网。1. 协调控制:当单元机组的负荷指令发生变化时,协调地调整锅炉和汽轮机的负荷指令,使机组的实发功率尽快跟踪负荷指令的变化,同时保证机组的稳定性。2. 发电机组:能将机械能或其他可再生能源转变成电能的发电设备。发电机组通常包含汽轮机、水轮、内燃机(汽油机、采油机),目前核能、风能、太阳能、生物质能、海洋能都算。3. 负荷:就是承受力,指负荷主体所能承受的程度。电力负荷意思是在一定的电力供应条件下,他能承受最多用电主体的数量。4. 负荷侧:电原创 2022-03-21 08:51:41 · 5056 阅读 · 1 评论 -
Qt笔记-AES加密
Qt5.5.1好像没有,用了三方老外大神的。https://github.com/bricke/Qt-AES下载下来后,将对应的源码拷贝到项目中就可以了。这里提供个事例代码:#include <QCoreApplication>#include <QCryptographicHash>#include <QVector>#include <QDebug>#include "QAesEncryption.h"int main(i原创 2021-12-14 13:44:20 · 6567 阅读 · 8 评论 -
Qt笔记-Linux程序控制台启动界面实例
最近在做Linux的C++程序,用的是Qt控制台程序,突然间有了想法,为什么不做成向Redis启动那样的,B格也高点,就像这样的。在此写了个实例,如下运行截图:程序结构如下;源码如下:Banner.h#ifndef BANNER_H#define BANNER_Hclass Banner{public: Banner(); void printBar();};#endif // BANNER_HColorPrint.h#if...原创 2021-12-07 08:50:29 · 1697 阅读 · 1 评论 -
Qt笔记-Linux程序打印带颜色的字符串
这是脚本之家给出的一个例子:#!/bin/bash # #下面是字体输出颜色及终端格式控制 #字体色范围:30-37 echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033[0m" echo -e "\033[32m 绿色字 \033[0m" echo -e "\033[33m 黄色字 \033[0m" echo -e "\033[34m 蓝色字 \033[0m" echo -e "\033[35m 紫色字 \033[0m"原创 2021-12-07 08:47:18 · 658 阅读 · 0 评论 -
Qt笔记-waitForBytesWritten需要注意的地方
在Qt里面,IO控制中(文件流、Socket)都会涉及到waitForBytesWritten,这个的意思是等待写完成,这个在Windows上一般是可以省的,不会出现问题,如下:tcpSocket.write(HttpResponse::success(retBody).toUtf8());tcpSocket.disconnectFromHost();tcpSocket.waitForDisconnected();在Linux上需要这样:tcpSocket.waitForBytesWri原创 2021-12-07 08:45:51 · 7830 阅读 · 0 评论 -
Qt笔记-解决QObject::startTimer: Timers cannot be started from another thread
原因是QTime或QTImeLine这类,多线程中创建和调用要在一个线程中。因为构造函数在main线程中创建的,run是子线程中,所有,这部分代码的new要在run中去new就可以了。原创 2021-12-07 08:44:35 · 3497 阅读 · 2 评论 -
C++笔记-函数参数使用void *的野路子
这里记录一个野路子,是在开发过程中,自己无意识想到的,也对这种操作到底是正路子还是野路子搞不清楚。在此记录下,方便以后查阅。情况是这样的,有个函数,写到一半突然发现可以用递归调用(改迭代也是可以的,但递归调用思想简单,就不再想迭代了),因为已经写好的代码,都是在栈区创建的。为了方便在类的protect方法添加一个递归函数,以前的变成启动函数。如下图:public下的toJson()就是启动函数,protected里面的toJson就是递归主体。在递归主体里面,直接转就可以了。原创 2021-12-07 08:42:38 · 1585 阅读 · 1 评论