自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (2)
  • 收藏
  • 关注

原创 c++递归分析出依赖的头文件

怎样分析出boost/optional.hpp依赖的头文件

2023-11-17 10:50:31 231

原创 std::copy代替memcpy

std::copy不会有效率上的损失,放心用吧。

2023-11-17 10:37:51 349

原创 记录git的一些操作命令

git操作

2023-11-16 17:16:20 138

原创 ubuntu20.04安装cv2

测试opencv是否安装完成。查看ubuntu的版本。

2023-11-16 10:44:06 681

原创 android studio基本使用

android studio基本使用

2023-11-16 10:38:33 100

原创 opengl动态修改vbo数据

创建一个vbo缓存,并传入顶点属性。由于修改的频率不高,所以使用GL_STATIC_DRAW。在项目中需要动态修改物体颜色,但在修改颜色时,有串色的bug,在此记录一下。但出现了一种奇怪的现象,其他物体会短暂地变成这个新颜色,然后恢复正常。当使用vao时,不需要管vao,直接绑定需要修改数据的id即可。当需要修改颜色时,新数据为newData,使用如下方法直接修改。后没有了这个bug。

2023-10-16 17:30:16 437

原创 openglES多纹理

绘制阴影时,在一个片元着色器中需要2个纹理。一张普通纹理,一张深度纹理。但glBindTexture只能绑定一张纹理,该怎么办呢?这时就需要设置纹理单元,一个单元对应一个纹理。但要注意,设置对应的uniform变量的值。

2023-10-13 15:47:55 133

原创 eigen笔记

Eigen::VectorXf::LinSpaced可以同时赋值行或列,但是直接赋值给矩阵后,就是变成1列了。需要使用reshaped()resize会在保持内存顺序不变的情况下,变换行列。矩阵组成矩阵,按先排满行,再排满列。两个动态类型可以直接赋值。

2023-06-20 16:30:29 243

原创 openglES3.0中shader注意事项

glsl语法

2023-06-20 09:24:50 188 1

原创 boost::geometry简介,真香

几何库,OGC,GIS,计算机图形

2022-04-13 14:40:22 7137

原创 c++ fstream中的坑

std::ofstream ofs(fpath);目录不存在

2022-04-06 19:23:53 1899

原创 c++删除已打开的文件

已打开文件和其所在目录,能否删除呢?

2022-04-06 18:24:39 2377

原创 std::sort使用const iterator引发的编译错误

no matching function for call to 'swap'

2022-02-11 17:16:39 1563

原创 std::future多次get发生崩溃

std::future为一次性事件多次使用发生崩溃

2022-02-08 16:59:50 1534

原创 记录一次app崩溃信息调试

崩溃,armv8,反汇编,多线程

2022-01-29 18:06:00 1679

原创 返回值与线程安全

返回值,锁,调用者

2022-01-28 17:23:51 1043

原创 segfault信息分析

segfault at 0 ip 00007f038f8e15b6 sp 00007ffcab34e670 error 4 in libread.so[7f038f8e1000+1000]

2022-01-26 19:30:55 4358

原创 c++函数调用追踪

函数调用追踪,__cyg_profile_func_enter,-finstrument-functions

2022-01-25 19:59:46 2044

原创 设计模式-单例模式

单例模式

2022-01-21 18:15:15 671

原创 c++17标准适配问题

c++17编译问题

2022-01-21 18:00:22 10088

原创 线程安全与锁使用-注意事项

增加注释增加与线程安全相关的注释在示例1,函数描述中说明了线程安全。同时说明了该函数存在的风险。_renderMutex是递归锁anchorP->SetInfoWindowImageData会回调AnchorLayer中的持_renderMutex的成员函数(反回调)子调用addAnchorPoint中持有_renderMutex锁示例1 /** * @brief:导致使用[递归锁],反回调,thread-safe * @para

2022-01-21 16:47:00 3345

原创 c++ 模板由已知类型推导出关联类型

c++ 模板由已知类型推导出关联类型

2022-01-05 18:40:51 408

原创 c语言 宏定义嵌套

c语言中的宏定义是支持嵌套的,如下两个代码,无论宏定义的先后顺序,都是可以的。#define b_print a_print#define a_print cout << "a" << endlint main(){ b_print; return 0;}#define a_print cout << "a" << endl#define b_print a_printint main(){ b_print; return 0;

2022-01-05 17:53:08 3863

原创 c++条件变量-注意事项

c++条件变量注意事项

2022-01-05 17:48:46 1164

原创 请你不要再用vector[vector.size()-1]来表示最后一个元素了

vector.front()vector.back()

2022-01-04 10:06:05 2919

原创 c语言可变参数与日志打印

可变参数与日志打印

2021-12-22 11:16:56 919

原创 std::forward的例子

c++ 右值引用的一个例子

2021-12-07 14:03:31 190

原创 c++ 临时变量拷贝问题

CopyTrack c = GetCopy()会造成几次拷贝呢

2021-12-07 11:33:31 910

原创 qt QFile.rename失败

QFile中的rename在下面情况下会rename失败文件被打开新文件名在目录下已存在新文件名没有写全路径假设C:\Users\95163\Desktop目录下有icmp.pcap, icmp1.pcap两个文件,则执行结果如下 QFile f("C:\\Users\\95163\\Desktop\\icmp.pcap"); f.open(QFile::Append); //失败,文件已被打开 f.rename("C:\\Users\\95163\\Desktop\\icmp2.pcap"

2021-03-22 19:36:56 4159

原创 boost.asio异步调用使用智能指针

boost.asio中的异步async_*函数需要传入回调函数参数,如果回调函数使用lamda表达式,在’capture’列表中传入智能指针,智能指针会生效吗?在async_connect调用之前,我们创建一个shared_ptr对象,并以值传入的形式放到lamda的’caputer’列表中,最后发现shared_ptr在async_connect的异步回调函数完成后析构了其管理的对象,可见其是生效的。其实最好还是用uinque_ptr,但lamda中不支持move捕获。测试代码如下:class L

2021-02-20 08:50:49 529

原创 go语言由string构造[]byte的坑

由string转为[]byte后的len为内容长度,但cap并不是,这在构造缓冲区时要多加注意。func main(){str:=“hello”strBytes:=[]byte(str)fmt.Println(“len=”,len(strBytes),",cap=",cap(strBytes))}

2021-02-19 11:47:30 258

原创 boost.asio的async_write_some存在的坑

boost.asio的async_write_some看起来很方便,但使用起来很复杂,主要有两个方面:async_write_some经常与io_context不在同一线程,async_write_some同一时刻只能由一个线程调用,需要加锁,同时需要与io_context所在线程的其他异步方法同步,如关闭sock的时机。当对方一直不读取缓冲区,就会造成本方的socket发送缓冲区爆满,此种情况需要怎样处理?第一种情况就需要根据业务情况加各种锁了。现在只讨论当对方一直不读缓冲区的情况。测试如下s

2021-02-19 11:39:10 4518 1

原创 boost.asio中socket异步关闭流程

boost.asio中的socket异步方法,需要检测std::error_code来关闭连接,那如何正常关闭tcp连接呢。下面的模拟测试中:1.server端在读取client端发送的第一个1024字节流后,关闭连接。2.client端在另一个线程发送第一个1024字节流后,sleep1秒,再发送第二个1024字节流。结果:1.server端在关闭socket后,其异步方法会检测到错误。2.client端的第二次发送也会检测到错误。所以通过正常的错误处理,两端可以及时地关闭tcp连接。可以得

2021-02-19 11:14:46 2862

原创 boost.asio的异步回调函数是否在同一线程中执行

boost.asio中有async_read_some,async_accept,async_write_some,async_connect这几个函数,那么他们的回调函数都在同一线程吗?如果io_context在单线程运行,那么是的,测试如下。class LIBTEST_BOOST_DLL TcpServer{public: typedef boost::asio::ip::tcp::socket tcp_socket_t; typedef boost::asio::ip::tcp::acc

2021-02-19 09:36:21 774

原创 c/c++动态指定sprintf字符串的宽度

sprintf函数可用*号指定字符串的长度 int width = 8; char *buf = new char[width+1]; sprintf(buf, "%0*d", width, 1); cout << buf << endl; delete buf;输出结果:00000001

2021-02-19 08:50:43 1561

原创 scalar deleting destructor(unsigned int)

在使用vs调试时,析构函数执行时在’scalar deleting destructor’的位置报错,怀疑是指针被delete了多次,但最后发现是”被释放的内存存在越界问题“,比较难发现。问题简要如下class MemCorrupt {public: typedef std::unique_ptr<char[]> char_ptr_t; MemCorrupt() { ptr_ = char_ptr_t(new char[8]); sprintf(ptr_.get(),"%08d"

2021-02-19 08:45:36 3604

原创 c++ chrono 获取以ms为单位的时间戳

c++中的chrono可以获得epoch时间戳,即获得从1971.1.1零时开始的时间戳。核心就是用chrono::system_clock::now(),获取当前的时间,再进行如下转换#include <iostream>#include <chrono>using namespace std;int main(){ auto ms = chrono::duration_cast<chrono::milliseconds>(chrono::system

2021-01-27 16:32:47 5023

原创 c++中int32,int64等类型的最大最小值

c++中的头文件中 包含了各数字类型的极限值,使用起来挺方便的。#include <iostream>#include <limits>using namespace std;template<typename T>static void _PrintLimit(const char *desc, const T &num) { cout << desc << "=" << num << "\t";}

2021-01-27 15:25:18 20186

原创 c/c++ uin32相乘赋值给uint64的变量精度丢失

有一个uint32_t的整数1611660692,将其乘1000后,发现得到的数值为1047956000,而不是1611660692000。过程如下uint32_t a = 1611660692;uint64_t b = a * 1000;这种情况下,得到b的值为1047956000。右边先将结果转换为uint32_t的,再将uint32_t转换为uint64_t的,所以造成精度丢失。如果像下边这么写就没问题了uint32_t a = 1611660692;uint64_t b = stati

2021-01-27 10:02:26 1458

原创 c++ boost 加载文件到字符串

c++标准中没有一个api可以加载文件到string类型,网上都说的是先用ostringstream中转下,今发现了boost中有一个这样的api,用着挺好用,注意捕捉异常。#include<boost/filesystem.hpp>#include<iostream>using namespace std;string strRet;string path="/root/hello.txt";try { boost::filesystem::load_string

2021-01-26 14:05:24 629

Kiwi_SyslogGen.zip

Kiwi_SyslogGen,可以发送含普通文本,特殊字符的syslog数据,支持tcp/udp,以及自定义端口,自定义源地址,支持循环发送。

2020-06-14

mibBrowser.rar

iReasoning MIB浏览器是一个强大和易于使用的工具由iReasoning SNMP API提供支持。 MIB浏览器是工程师管理启用SNMP的网络设备和应用程序不可或缺的工具。 它允许用户加载标准的,专有的MIB,甚至一些错误的MIB。 它还允许它们发出SNMP请求以检索代理的数据,或对代理进行更改。 内置陷阱接收器可以根据其规则引擎接收和处理SNMP陷阱。

2020-06-05

空空如也

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

TA关注的人

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