自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 openssl版本冲突导致的崩溃(初稿)

而后修改makefile添加-Wl,–exclude-libs,ALL后才隐藏了libblowsnow_db.a里面所有的符号,重新编译UniAuditToSysLog替换后验证,发现模块可正常运行。提供一个centos的gdb包 gdb-7.6.1-120.el7.x86_64。执行rpm -ivh gdb-7.6.1-120.el7.x86_64 安装失败。重新执行rpm -ivh gdb-7.6.1-120.el7.x86_64。手动运行模块后,设置的路径下生成了core文件。

2024-04-03 18:27:05 176

原创 偶发odbc.ini文件被清空

1 排查用到了linux的监控服务 audit配置规则自行百度 发现我们的模块修改odbc.ini文件。2 排查了自己服务和链接的静态库的所有代码没有操作odbc.ini的代码,转而怀疑系统的odbc库。下载相应版本代码查看关键字 “odbc.ini” 发现了此处的代码。unixodbc官网地址–> https://www.unixodbc.org/现象:某个现场 odbc.ini 莫名其妙被清空,偶发情况,大概几周出现一次。对比下不同版本的代码还是很明显的能看出问题所在。

2023-08-02 20:28:57 347

原创 otl rlogon(...)连接失败的问题分析

某个客户现场部署的数据库是Oracle的,历史遗留原因,Oracle密码在配置文件里是明文的,客户要求修改为密文,修改后交由客户验证,客户反馈修改密码后,终端上报审计信息插入Oracle时,模块崩溃了,按理说密码即使不对或者解析问题也不会崩溃。不需要看实现细节,也能看出来根据’/’ '@'符号去切割的,当然官网也提供了更多的重载的接口(rlogon),并非一定要使用这种格式的接口,但是这种接口是更通用的,对于连接不同类型的数据库来说。rlogon()这个封装在最底层的接口是otl提供的,查看官网接口文档。

2023-04-10 14:39:12 385

原创 udp协议抓包 数据包内容编码验证

某天,一银行客户反馈,我们的数据传输模块发送过去的数据,他们接收到解析出来的乱码,问我们发送的数据到底是不是utf8

2022-12-08 10:25:39 312

原创 亚信监控软件导致进程写文件卡死或异常缓慢的问题排查

系统日志/var/log/message,搜索模块的名字,发现了。通过这个inode,去查看我们日志文件的inode对比是相同的。

2022-09-28 17:40:27 224

原创 OTL Select with MySQL LONGTEXT in stream mode注意事项

3 官网文档给的例子,select这里没有设置set_commit(0),但是insert是有设置的,如果没有设置,程序运行会报错的,如下图。我们内部有封装代码,不过也是根据官网文档来的,链接:http://otl.sourceforge.net/otl3_ex128.htm。因为业务需求,web方面将字段text修改为mediumtext,同时也需要server方面来适配。4 此外还需注意的点,无论text/mediumtext/longtext类型的都需要将该字段放在语句的最后。............

2022-08-27 17:19:12 262

原创 静态库覆盖动态库同名类以及方法

静态库覆盖动态库同名类以及方法

2022-07-02 17:34:01 413

原创 关于postgre创建视图的语句中字段使用大写导致select失败的问题

现场使用的postgre版本忘记查了,但是不影响,只需要知道postgre有些版本大小写是不敏感的就行关于大小写不敏感1、创建视图语句CREATE OR REPLACE VIEW public.v_approval_results ASselecta.uidRecordID “uidRecordID”,a.uidApplyID “uidApplyID”,b.strUserName “strUserName”,b.strUserDesc “strUserDesc”,b.uiddeptid “

2022-03-14 17:43:29 573

原创 docker数据挂载而引发的问题

以前看过docker的相关教学视频,但是工作后没用到都忘得一干二净了。并且本次所遇到的问题,前面说了忘记了docker相关知识(主要还是太菜了,不过还好有大佬的指导),测试同事也未告知我服务是使用docker技术以容器运行的(甩锅,hh),大概的都交代完了,说下遇到的问题前后经过吧。测试同事反馈,web页面发下去的策略,终端有收到但是收到的策略内容不完整,我去测试环境模拟下发策略,发现策略缺失的部分为配置策略时上传的规则文件的内容。通过添加日志发现上层接口获取文件内容时,没有获取到文件内容。上层接口里封

2022-03-12 07:13:59 1329

原创 主备模式,备机ping主机每隔一段时间会有几分钟回包dup ack的问题

现场问题排查记录:现场反映的问题,每天早上会有部分用户正常认证成功,但是第三方无上线信息,导致无法访问外网,日志排查发现有个模块没有将登录信息发送到后台现场服务是主备模式的。后台的服务有一个模块是用来转发数据库通知给其他模块的。现在我们去查看负责转发模块的日志发现备机的转发模块每隔四小时和主机的其他模块断开连接一次,每次持续几分钟,几分钟后重新建立连接,在断开连接的时间点如早上9点,部分用户认证成功,但是这时候断开连接了,转发模块没有将信息发出去通知其他模块。怀疑是网络问题,让现场同事在断开连接的时间点

2021-12-29 14:28:27 903

原创 glibc中stl list::size()实现的延伸问题

STL glibc list的size方法所以仅仅是判断list容器是否有元素存在应该使用empty而不是list,避免进入复杂度为O(N)的重载函数中导致入坑bool empty() const { return _M_node->_M_next == _M_node; } size_type size() const { size_type __result = 0; distance(begin(), end(), __result); return __res

2021-11-05 10:28:40 130

原创 shared_ptr实现cow,解决多读少写并且读时占用锁时间很长的问题

上一篇文章中,我们使用gdb抓取堆栈分析了server运行,得出了结论。在某处抢占到读锁(对于共享资源map容器的保护,map的key为设备id,value为该设备的相关信息)时,获取设备相关信息,去进行过滤判断然后进行非常耗时的策略计算等操作,导致了其他线程在获取读锁或写锁时一直处于等待状态无法处理业务。并且总的来说是一个多读少写(相对少写)的情况。当前项目的处理 伪代码void dealtask(){ //并且这个读锁粒度太大了,当然还有其它业务也需要使用这个map,但并不是很费事的操作。不

2021-10-16 16:25:46 172

原创 gdb堆栈分析程序运行卡在哪里

反馈后台Server运行卡住,结合以往可能是死锁了或者某个锁已经被抢占了但是在进行某些操作时费时很久,导致其他锁一致在等待。gdb抓到的堆栈如下。大致浏览了一下,做了个分类:14 15 103 set_new_agent_msg_state —>重复的线程栈21-28 35 36 61 dec_agent_pushing_count —>重复的线程栈21 52 53 55 56 58-60 68-82 106-110 112 recv_agent_online —>重复的

2021-10-13 14:50:45 1076

原创 gdb调试 程序退出没有堆栈信息([Inferior 1 (process 12867) exited with code 0177])

上周有新任务开发,然后周五开发完了,和其他同事联调(不能远程调试),发现客户端上报给server之后,serever莫名其妙的就挂了,然后被重新启动(重启是自己设置的,只要进程不存在就回去启动程序),只要上报了新增的功能相关的,server就会挂掉,上报原来有的都是正常的。但是并不是被kill掉了,也不是崩溃了。因为程序里收到SIGSEGV和SIGABRT会打印堆栈信息到一个文件里面。但是没有发现有这个文件生成。后面给了一个抓堆栈的脚本,然后那边同事抓给我的结果是文件为空。我以为没抓到,然后看了下日志,s

2021-09-14 19:32:45 4152

原创 ida pro分析elf文件(linux程序)

IDA Free: https://hex-rays.com/ida-free/#download客户反馈的日志,可以看到FROM tbl_ud_pe_eventreport_network_sum limit 0 offset 1188 part F436B5F1BCEA75FB204A64C83EF4C90D7执行语句报错了。[1597725][2021-08-18][12:03:35][T1096963840][HQueryDB.cpp ][0303][I]query_acuta_

2021-08-18 19:54:34 967

原创 heapprofile对程序做内存分析

(1)下载gperftools(2)编译的时候最后链接libtcmalloc.a ../../../gperftools-master/libtcmalloc.a(3)启动的时候设置环境变量 nohup env HEAPPROFILE=/tmp/ ./server & (HEAPPROFILE+.xxx.heap -> .heap文件的位置)(4)在启动完,打算开始检测的时候调用 (以下两个函数所在的头文件 gperftools-master/src/gperftools/

2021-07-02 11:28:00 1367 1

原创 linux 内存不足导致的编译失败

g++: internal compiler error: Killed (program cc1plus)编译报错,估计很多人都写过这样的博客,但我今天也确实遇到了,编译UniServer模块的时候总是挂了,还是记录一下吧编译不成功,内存不足导致,增大交换区大小,如下:sudo dd if=/dev/zero of=/swapfile bs=64M count=32#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=2048MBsudo mkswap

2021-05-08 22:28:55 1707

原创 doctotext源码遇到的一些问题及解决方案

如果你想在linux进行多种文件类型的文件文本内容的提取,doctotext是一个很好的开源库。github:https://github.com/tokgolich/doctotext当然了官方在多年前已经停止更新这个开源库了,并且如果你仔细阅读源码,会看到部分TODO,就是还有很多可以完善的地方。另外说明:我对于这么多文件类型格式并不那么了解和熟悉,本文只是将遇到过的相关问题做个描述,以及个人意见,主要是让有需要的人不要踩类似的坑,如果是对于文件格式了解的大佬,有错误处还望多指教先说下我看到的源

2021-04-28 23:44:52 1035

原创 stl random_shuffle

template <class RandomAccessIterator> void random_shuffle (RandomAccessIterator first, RandomAccessIterator last);template <class RandomAccessIterator, class RandomNumberGenerator> void random_shuffle (RandomAccessIterator first, RandomAc

2021-04-15 19:08:33 132

原创 关于堆栈的面试题

两个栈实现一个队列思路:入队只需要向s1中压栈即可,出队判断s2是否为空,不为空则pop,为空则将s1出栈然后压入s2,接着再pop即可(对于各种插入删除,自行画图排除即可),这时如果s1也为空则抛异常两个队列实现一个栈思路:入栈全部向q1入队,出队则是将q1中数据出队,然后出队的元素插入q2,直到队列q1只剩最后一个元素,直接删除(即栈顶元素),此时变为q2存储数据,q1为空。一直重复class Solution {public: bool validateStackSequen

2021-03-31 20:29:25 329

原创 二叉树的先中后非递归遍历,以及树的高度和叶子节点求解等面试题

利用栈容器可以实现二叉树的非递归遍历首先将每个节点都设置一个标志,默认标志为假,根据节点的的状态进行如下流程。#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>#include<stdlib.h>#include"seqstack.h"//树的节点类型typedef struct node{ int flag; //数据域 char ch; //指针域 st

2021-02-14 18:24:55 93

原创 C++ 关键词过滤,屏蔽应用

关键词过滤–延伸多关键词过滤(业务需求)首先最笨的方法是每个关键词完整的存放在一个容器中,文本内容解析完传过来的时候进行过滤,那么这种方法要对每一个关键词做一次完整比对,不相同则比较下一组,这种最坏的情况为每匹配到一个关键词都要匹配关键词个数的次数。在文本中关键词出现频率较高时,需要检查的文件个数较多时,效率很差。所以我们把多关键词构建成类似树状结构,对于每一个关键词只需要遍历查找一次(从根节点到终端节点为一个关键词,终端节点中成员key(用来判断是否找到关键词)保存完整的关键词)百度了一下这种应该

2021-02-05 17:20:11 873

原创 base64编码解码的模板实现

可能平时看到的都是这种直接取6位的,不管有没有形式变化。这也是大家最容易想到的 for(i=0,j=0;i<len-2;j+=3,i+=4) { res[i]=base64_table[str[j]>>2]; //取出第一个字符的前6位并找出对应的结果字符 res[i+1]=base64_table[(str[j]&0x3)<<4 | (str[j+1]>>4)]; //将第一个字符的后位与第二个字符的前

2020-11-26 16:15:05 232

原创 SQLite Expert Professional授权许可文件(license4.key)

支持SQLite Expert Professional 5.2/5.3 x64版本,亲测有效https://www.eatm.app/archives/653.html

2020-10-30 10:49:52 3102 2

原创 libofd源码部分错误的修改

libofd:https://github.com/uukuguy/libofd提取OFD文件内容不包括嵌入图片内容,仅仅是文档内容源代码下载完后安装完所有的依赖之后发现编译完后测试给定的ofd文件用例时

2020-09-25 18:09:45 1292 1

原创 TOTP动态令牌(基于openssl/HAMC)

思路:获取当前的时间戳模60(一分钟内任意时刻的时间戳模上60为固定的值),使用HMAC得到摘要,摘要进行位运算处理得到6位的动态口令TOTP.hppd#ifndef __TOTP_H#define __TOTP_H#include <iostream>#include <sstream>#include <string>#include <vector>#include <ctime>#include <iomanip&

2020-09-18 23:31:14 1337

原创 nlohmann/json中所有异常类型说明

https://fossies.org/linux/mkvtoolnix/lib/nlohmann-json/include/nlohmann/detail/exceptions.hpp以下为exceptions.hpp头文件我们需要的是type_error.316翻译:dump函数仅适用于UTF-8编码的字符串;也就是说,如果为JSON值分配“std::string”,请确保它是UTF-8编码的事实上nlohmann/json这个库只支持UTF-8编码,如果储存了非UTF-8编码的字符串在调用du

2020-08-27 11:33:12 15133 5

原创 Linux 程序获取硬件信息 HardWare LiSter源码修改适配

lshw源码包下载地址:https://www.ezix.org/download/?package=lshw.ezix.org功能与lshw命令相同,但是我们可以通过修改源码的方式更加灵活的获取我们想要的信息。(解压后直接make,然后进入src/目录执行./lshw获取电脑的硬件信息包括内存,主板,CPU,硬件,网卡,显卡,声卡等等信息)源码编译后执行lshw和命令lshw结果是一样的lshw命令如下(看得到信息非常详细但是对于不同的需求来说要求是不一样的,这些信息已经有些冗余了对我来说):d

2020-08-05 11:18:45 1139

原创 linux pkexec以root身份运行基于qt的应用程序

接上篇在登录用户为普通用户的情况下,因为我们需要弹窗来供用户输入,以root身份是不需要输入密码的,下面碰到的情况是以普通用户运行时碰到的情况以 pkexec /home/jin/work/ConfidentialCheckSystem/Client运行我们的客户端jin@jin:/tmp$ pkexec /home/jin/work/ConfidentialCheckSystem/Client QXcbConnection: Could not connect to display 已放弃 (核

2020-07-17 15:52:13 4202 1

原创 linux pkexec允许授权用户以其他身份执行程序

ubuntu官方开发网站 http://manpages.ubuntu.com/pkexec命令(详细介绍见如下网址)http://manpages.ubuntu.com/manpages/bionic/man1/pkexec.1.htmlpkexec 以其他用户身份执行的命令pkexec [--user username] PROGRAM [ARGUMENTS...]pkexec允许授权用户以其他用户身份执行PROGRAM。如果用户名不是指定,则程序将以管理超级用户root身份执行。成功完

2020-07-16 15:02:28 10360 10

原创 rpm查询已安装软件详细信息

rpm -qa --queryformat “%{NAME} %{VERSION} %{SUMMARY} %{INSTALLTIME} %{URL}\n”–queryformat提供更多输出选项rpm --querytags查看标签列表如以下:RPMTAG_NAMERPMTAG_VERSIONRPMTAG_RELEASERPMTAG_EPOCHRPMTAG_SUMMARYRPMTAG_DESCRIPTIONRPMTAG_BUILDTIMERPMTAG_BUILDHOSTRPMTAG_I

2020-06-30 09:21:45 1321

原创 ubuntu ufw开放端口

root@VM-0-14-ubuntu:/etc# ufw enableCommand may disrupt existing ssh connections. Proceed with operation (y|n)? yFirewall is active and enabled on system startup//允许外部访问10086端口(tcp/udp)root@VM-0-14-ubuntu:/etc# ufw allow 10086Rule addedRule added (v6

2020-06-04 23:33:54 2737

原创 vector容器at访问报错以及operator[]

初始化3个int型大小的元素,不清空,at正常访问#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v(3); //v.clear(); v.at(1) = 10; cout << v[0] << ":" << v[1] << ":" << v[2]; return 0;}初始

2020-06-02 11:10:59 3648

原创 链表相关题目整理

求链表的倒数第k个节点思路:两个指针,第一个指针先走k-1步,然后两个指针同时移动,当第一个指针走到尾节点时,第二个指针指向的就是倒数第k个节点两个有序链表的合并思路:求出两条链表的交点思路:...

2020-05-31 22:41:18 62 1

原创 包含中文的URL或者文件路径的编解码

/*这里的内容是处理%20之类的东西!是"解码"过程。%20 URL编码中的‘ ’(space)%21 ‘!’ %22 ‘"’ %23 ‘#’ %24 ‘$’%25 ‘%’ %26 ‘&’ %27 ‘’’ %28 ‘(’…相关知识html中的‘ ’(space)是&nbsp*/void strdecode(char *to, char *from){ for ( ; *from != '\0'; ++to, ++from) { if (from[

2020-05-20 00:43:09 614

原创 Linux flock实现单进程启动

#include <sys/file.h>#include <unistd.h>#include <fcntl.h>#include <opencv2/opencv.hpp>#include <boost/filesystem.hpp>#include "Logger.h"using namespace std;usin...

2020-05-07 11:34:54 269

原创 Linux readlink与/proc/self/exe

ssize_t readlink(const char *path, char *buf, size_t bufsiz);/proc/self/exe是一个符号链接,代表当前程序的绝对路径用readlink读取/proc/self/exe可以获取当前程序的绝对路径std::string GetCurrentDir(const std::string& strSubPath){ ...

2020-05-06 16:39:25 2164

原创 队列实现(广度优先遍历文件)

#include <iostream>#include <string.h>#include <queue>#include <sys/types.h>#include <dirent.h>using namespace std;void *widfirsearch(const char* pathname){ prin...

2020-04-23 22:30:38 378

原创 Ring3 hook动态库优先加载劫持函数调用(拦截浏览器URL)

#include <stdio.h>#include <netinet/in.h>#include <string.h>#include <stdlib.h>#include <dlfcn.h>#include <unistd.h>#include <sys/types.h>#include <...

2020-04-22 12:47:32 359 3

原创 Ring3 hook动态库优先加载劫持函数调用(用于实现文件监控)

1 #include <stdio.h> 2 #include <string.h> 3 #include <stdl...

2020-04-16 23:09:36 332

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除