- 博客(59)
- 收藏
- 关注
原创 go websocket
Socket 处理低层次的网络传输,而 WebSocket 是在 HTTP 协议之上的二层协议,使用更容易,效率也更高,同时也支持双向实时通讯。Websocket 将 HTTP 协议升级后,实现了长连接,即建立连接后可以持续通信,避免了客户端与服务端频繁连接和断开连接的过程。Socket 通信是通过 Socket 套接字来实现的,而 Websocket 通信是通过 HTTP 的握手过程实现的。Socket 是基于传输层 TCP 协议的,而 Websocket 是基于 HTTP 协议的。
2024-04-09 13:31:13
512
2
原创 golang 中 sync包
WaitGroup 的用途:它能够一直等到所有的 goroutine 执行完成,并且阻塞主线程的执行,直到所有的 goroutine 执行完成。其可将顺序执行变为并行计算,可极大提高程序的执行效率。也能更好的发挥出多核CPU的优势。WaitGroup 总共有三个方法:Add(delta int), Done(), Wait()。简单的说一下这三个方法的作用。通过golang的goruntine来提供一种异步处理程序的能力。Wait:执行阻塞,直到所有的WaitGroup数量变成 0。
2024-04-09 13:17:31
500
原创 如何使用WebAssembly:浏览器中加载wasm模块到JavaScript
上手WebAssembly - 掘金[wasm] Hello WebAssembly - 简书编译 C/C++ 为 WebAssembly - WebAssembly | MDNhttps://blog.youkuaiyun.com/a137748099/article/details/117336959wasm与JS交互 - 简书Qt:靠谱点了!基于WebAssembly开发网页端 - 知乎test
2023-07-04 13:59:48
1081
原创 Qt5.15.2 Webassembly源码裁剪编译
src.pro 定义了subdirs,此处删除编译不过;2. 进入到qtbase/src目录下, SUBDIRS定义了包含的模块;再根据依赖排序sort_depends,将需要编译的库,按顺序放入SUBDIRS;1. 源码库下.gitmodules文件定义了Qt所包含的子模块;makefile 为啥还包含test example。qt.pro遍历该文件获取要编译的模块;第二部:尝试删除qttest 关闭network。sync.profile定义。-nomake tests 无效。
2023-06-21 17:59:46
2694
原创 RocksDB读流程
简而言之,在RocksDB中的读取需要处理的最核心的一个问题就是如何读取最新的数据,这是由于RocksDB是基于LSM,因此在RocksDB中,对于数据的delete以及update,它并不会立即去执行对应的动作,而只是插入一条新的数据,而数据的最终更新(last-write-win)以及删除是在compact的时候来做的. 其实最那就是如何读取到一个数据的最新版本,因此首先我们需要知道在RocksDB中,多个版本的数据是如何保存的。首先我们需要知道在RocksDB中,数据是保存在两个地方,一个
2023-06-14 23:27:29
872
原创 RocksDB性能测试
6. 写入少量数据没有生成stable,写入大量数据后生成stable即SST文件;5. 写入内容一定要char*么?是否支持其他数据结构 list map 等;内存顺序IO > 内存随机IO = 磁盘顺序IO > 磁盘随机IO。为什么写日志速度快?
2023-06-14 21:45:36
610
原创 RocksDB源码分析之db_test LevelReopenWithFIFO
【代码】RocksDB源码分析之db_test LevelReopenWithFIFO。
2023-06-13 01:01:29
129
原创 RocksDB之Column Families(列族)与 LSM Tree
列族(Column Families)是rocksdb3.0提出的一个机制,用于对同一个数据库的记录(键值对)进行逻辑划分。列族具有的属性1)可以跨列族进行原子写,弥补了rocksdb在单个进程内只能操作一个数据库的问题。2)在不同的列族,提供数据库的一致性视图。3)可以对列族进行独立配置。4)动态添加和drop列族。
2023-06-13 00:00:05
2727
原创 RocksDb与LevelDB
9、RocksDB支持管道式的Memtable,也就说允许根据需要开辟多个Memtable,以解决Put与Compact速度差异的性能瓶颈问题。3、RocksDB除了简单的Put、Delete操作,还提供了一个Merge操作,说是为了对多个Put操作进行合并。而LevelDB则是一个比较单一的存储引擎。5、RocksDB增加了合并时过滤器,对一些不再符合条件的K-V进行丢弃,如根据K-V的有效期进行过滤。7、在故障方面,RocksDB支持增量备份和全量备份,允许将已删除的数据备份到指定的目录,供后续恢复。
2023-06-08 11:25:36
1762
原创 工作日记NO.12
2. libdwg的makefile.in makefile.am研究。3)根据LINUX工程尝试编译(编写)emscripten工程。3. Qt5.8工程目录与结构 pro pri文件。1)尝试编译WINDOWS工程。2)尝试编译LINUX工程。1. makefile规则。
2023-05-22 10:38:49
73
原创 工作日记NO.11
LibreDWG属于GNU计划中的一个项目,是基于LibDWG开发的。专门提供给没钱有想操作DWG文件的人群~新任务:LibDWG编译成前端框架。LibDWG是什么?
2023-05-19 18:29:58
311
原创 QtCreator编译
debug模式会在makefile中自动加入-g参数,编译出来的程序自带符号信息可以让我们调试。额外的参数:允许你给qmake添加额外的参数。Generate separate debug info,产生独立的调试信息,这个功能就超级实用了,它将程序的调试信息单独生成一个文件,试想,构建时选择release,再把这个选上,是不是即兼顾到了发布又兼顾到了调试。不过这个操作建议只在release上进行,如果是debug下再勾选这个,虽然调试信息是独立出来了,但生成的二进制文件还是要比release的大。
2023-05-19 11:39:15
1412
原创 工作日记NO.9
3. gstarcad项目未用qt命令行编译成功;1. QtCreator的debug模式未调通;2. Qt5.15.2源码编译后,验证可用性;2. emmake替换make通过;1. 验证工程完成样例调通;3. 验证工程编译摸索中;
2023-05-16 23:14:14
77
原创 Qt5.15.2替换mingw32-make.exe为emmake
从项目->build->构建步骤可以看出,构建过程中先用qmake生成makefile,构建(make)过程用make和前面产生的makefile生成目标程序的exe或者其他。(这是qmake的工作,可以在.pro中用message($$CONFIG)来查看CONFIG变量的内容,qt生成一个Makefile就会输出一遍message内容,如果同时生成debug和release的makefile,message的内容就会在qt creator的概要信息窗口输出显示两遍,可以通过在message前加“!
2023-05-16 15:30:35
567
原创 Qt for WebAssembly
WebAssembly 是一种二进制格式,允许在网页中使用沙盒可执行代码。这种格式几乎与本机机器代码一样快,现在所有主要的 Web 浏览器都支持这种格式。Qt for WebAssembly是一个允许您构建Qt应用程序的应用程序,可以集成到您的网页中。一个平台目标,用于使用 WebAssembly 为 Web 浏览器编译 Qt 应用程序。部署emscript 1.39.8:git下载对应版本,激活,bat配置环境变量;部署git,生成keypair,设置pubkey;部署python2.7,配置环境变量;
2023-05-12 14:09:51
1086
原创 工作日记NO.6
(3)创建带名称编组,并删除指定名称的编组内所有实体和编组;创建块,删除快参照;(1)进行Qt 5.15.2 Webassembly验证;2. 通过编写命令熟悉objectARX;(1)支持圆心、半径、直径、同心圆、多次的画圆命令;(2)学习ObjectARX的对象引用关系。(2)画直线、多线段、画三角形并填充;1. 练习使用AutoCAD;
2023-05-11 17:23:25
76
原创 objectARX 定义块、删除定义块或快参照
对于有灰度值的屏幕则是一个灰度值,此函数功能为设置实体的颜色。当前图形数据库-->块表-->检查该块定义是否在块表存在-->存在,则通过定义名称,找到实体idlist。当前图形数据库-->组字典-->组名对应组id-->组id对应组实体-->遍历组实体的实体,打开并删除。第二步:遍历块表的实体id,若属于某定义块idlist且存在块参照,则设置实体为不透明;第一步:通过块定义名称找到实体idlist。2. 根据定义删除块(块参照)4.根据组名删除块(清除组)②0:表示不显示,透明。①1:表示显示,不透明。
2023-05-10 10:32:45
1758
原创 【objectARX学习计划】
acedGetString、acedGetPoint、acedGetInt、acedGetKword和acedGetReal等。操作图层(创建图层、删除图层、修改图层颜色、线型)2、使用对象命名字典来保存与对象无关联的数据。1、使用扩展字典来保存对象的附加数据。1、向实体追加各种类型的扩展数据。2、判断对象是否已经包含扩展数据。3、遍历结果缓冲区链表的方法。在ObjectARX中使用MFC。扩展数据、扩展记录和对象字典。创建和编辑基本图形对象。创建带有属性的块定义。插入带有属性的块参照。
2023-05-09 23:48:44
788
原创 objectARX CString未定义标识符与常用字符类型转换
T("\n指定圆的半径或[直径(D)]:") 格式: const wchar_t *_RXST("\n objIdList为:%d"), objIdList.length()"\n指定圆的半径或[直径(D)]:" 格式: const char *2.圆弧hua'yua选定已存在的圆弧,将其转化为圆。"\n objIdList为:%d"
2023-05-09 22:51:26
1064
原创 工作日记NO.4
T("\n指定圆的半径或[直径(D)]:") 格式: const wchar_t *_RXST("\n objIdList为:%d"), objIdList.length()"\n指定圆的半径或[直径(D)]:" 格式: const char *2.圆弧画圆:选定已存在的圆弧,将其转化为圆。"\n objIdList为:%d"
2023-05-09 14:33:30
72
原创 objectARX typedef 带来的陷阱
答案是否定的,原因很简单,typedef 是用来定义一种类型的新别名的,它不同于宏,不是简单的字符串替换(有关 typedef 和 #define 的区别,请猛击这里了解详情)。因此,“const PCHAR”中的 const 给予了整个指针本身常量性,也就是形成了常量指针“char*const(一个指向char的常量指针)”。即它实际上相当于“char*const”,而不是“const char*(指向常量 char 的指针)”。
2023-05-09 14:19:24
65
原创 objectARX acarray.h详解
/若类型T不支持memcpy,需要对类型T重新定义实现memcopy函数,则是AcArraybjectCopyReallocator,进行ObjectCpy的数组分配器类。//若类型T支持memcpy,则该模板类是AcArrayMemCopyReallocator,进行memcpy的数组分配器类。//该选择器结构体,仅包含一个分配器类,进行memcpy的数组分配器类或者进行ObjectCpy的数组分配器类。//该结构体模板是,由类型T和bool决定的,拷贝项目的数组选择器;
2023-05-09 13:56:08
259
原创 工作日记NO.1
开发工具:VS2022、vscode、sublime;2. 学习并完成emscriptem编译c++文件项目。开发环境: vmware+centOS'工程管理软件:SVN、git;3. 安装docker python3。工作交互软件:钉钉、微信;
2023-05-06 18:13:34
91
原创 【linux基础】fork与vfork
vfork()除了不拷贝父进程的页表项外,vfork()和fork()功能相同:子进程作为父进程的一个单独的线程在他的地址空间里运行,父进程被阻塞,直到子进程退出exit()或执行exec()。子进程是 父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。fork():通过拷贝当前进程创建一个子进程,子进程和父进程的区别仅仅在于PID(每个进程唯一)和PPID(父进程的进程号)和某些资源统计量。父进程的fork函数返回的值指向子进程的进程id, 因为子进程没有子进程,所以其fork函数返回的值为0.
2023-04-14 17:44:51
685
原创 【线程编程】线程编程之Pthreads
C语言提供了多种多线程并发的框架和库,其中最常用的是 POSIX线程库(Pthreads)。Pthreads库提供了一套标准的API,使得开发者可以轻松地编写多线程并发的程序。这是一套由POSIX提出的通用的线程库,在Linux平台下被广泛支持。使用pthread库需要包含头文件,并在编译时加上-lpthread选项。使用pthread库可以创建、终止、等待、同步和管理线程。
2023-04-14 15:11:34
970
原创 模板与泛型编程
条款1:了解隐式接口和编译期多肽条款2:了解typename的双重意义条款3:学习处理模板化基类内的名称条款4:将与参数无关的代码抽离templates条款5:运用成员函数模板接受所有兼容类型条款6:需要类型转换时请为模板定义非成员函数条款7:请使用traits classes表现类型信息条款8:认识template元编程...
2018-05-16 15:52:42
161
转载 override
https://www.cnblogs.com/xinxue/p/5471708.htmlC类型强制转换 形式:(type)object或type(object)最好是使用type(object);原因是:在某些编译器下,(type)object不会调用构造函数,而type(object)下则肯定会调用构造函数C类型强制转换会按照以下顺序进行尝试转换:a. const_castb. stati...
2018-05-14 16:13:11
1021
原创 C++11中的匿名函数(lambda函数,lambda表达式)
立即执行函数1. connect(&m_configAutoTstTimer, &QTimer::timeout, [&]() { if (!m_isConfigChanged) { slotUpdateConfig((m_devFlags & (~(1 << BITNUM_MAIN...
2018-05-14 15:50:19
335
原创 十六进制 QString 转QString
在升级实现过程中,为了制作唯一的升级文件,所以升级过程中绑定了设备ID。然而设备ID字符串比较特殊,都是奇怪的字符,上位机工具不方便输入,故统一做十六进制字符串输入。因此才有了如下问题。一般16进制Qstring转Qstring如下即可:Qstring str("704e0520361c5434"); QByteArray temp(""); temp.append(str);QByteArra...
2018-04-08 17:44:13
3052
原创 Openssl命令制作证书
1.生成私钥openssl genrsa -out rsa_private.key 10242.使用私钥生成公钥openssl rsa -in rsa_private.key -pubout -out rsa_public.key3.生成自签名证书openssl req -new -x509 -days 365 -key rsa_private.key -out cert.cer -subj "/...
2018-04-08 17:42:46
312
原创 如何判断system命令执行结果
1. 先来看一下system()函数的简单介绍:1#include <stdlib.h>2int system(const char *command);system() executes a command specified in command by calling /bin/sh -c command, and returns after the command has bee...
2018-04-04 17:15:33
6849
原创 Qt的qDebug使用
使用 " qDebug() << "一定要添加头文件 #include <QDebug>然而 int num = 20; char str[20]="hello world"; qDebug("如果只写在括号里,是不需要QDebug头文件的 %d %s", num, str);消除qDebug()打印qDebug的打印信息,主要是为了方便调试程序时尽快找到bug,所以当...
2018-04-04 11:23:18
52238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人