自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 资源 (15)
  • 问答 (1)
  • 收藏
  • 关注

转载 无锁队列的实现

无锁队列

2023-06-08 17:35:34 125

转载 7个示例科普CPU CACHE——from 酷壳

Cache Friendly

2023-06-08 16:41:45 156

原创 windows vscode clang-format不生效

windows vscode clang-format不生效

2022-07-14 17:18:41 1651 2

原创 Windows C/C++ 开发环境搭建

Windows C/C++ 开发环境搭建

2022-07-14 16:50:23 2495

原创 c++多线程调用python时的 Segmentation fault 问题

问题主程序(C++)加载多个so,so里有python的,也有c++的,并且有的C++的so里会有多个线程;会出现多个线程解析并调用python so的问题;会发现,除了wrapper so(直接解析python so的so)里起的线程,其他线程解析时,就会出现SEGMENT现象;原因说到底就是GIL的问题,有兴趣的同学可以去查一下,再次不赘述(对python了解不多,只是有个基本的了解,不误人子弟了)解决方案参考:Embedding a Python interpreter in a mult

2021-08-24 09:30:10 816

原创 VsCode建立非工程目录下的头文件自动查找

前言当前项目中,是通过RPM安装包的方式来把各个子项目联系在一起的,有利有弊,不好的一点就是,安装后的子项目的头文件都是在/usr/local/目录下,通过VSCode建立的工程就不能够进行类型的自动跳转了。今天从同事那边知道了怎么设置来实现自动跳转;具体操作其实有2种方式:一种是我之前操作的,就是通过“将文件夹添加到工作区”来实现;还有一种是今天从同事那边学到的,具体的操作见下图:1、点击“快速修复”2、点击“编辑"includePath"设置”3、在出现的 C/C++ Config

2021-08-13 14:04:58 1207

原创 mmap的 Bus error问题及解决

前言新交易系统中,通过mmap来实现持仓和订单的本地持久化,之前未用过mmap,在本次实现中遇到了一些问题,仅记录Bus error问题;实现基本逻辑OM或者PM在启动时,先通过本地的持久化文件来恢复订单或者持仓:如果是当日的第一次的正常启动,那么是没有持久化文件的,这个时候,PM需要从别的地方来获取初始化的持仓(当天还没有开始交易,没有订单,OM不需要做处理);如果不是当天的第一次正常启动,那么是有持久化文件的,OM或者PM就需要从本地的持久化文件来获取订单和持仓,完成初始化;问题持久

2021-07-01 08:43:54 2912 2

原创 python 查看第三方库的api接口

前言今天看到一个python画樱花树的帖子,觉得好玩,想尝试一下,但在import turtle并使用的时候出现了问题:提示没有相关api的定义,所以想查看一下import 的turtle是否正确,又不知道如何查看,搜了一下,看到如下2种办法:python自带的文档查看器直接参看这个连接:python自带库及第三方库api察看由于我是在win10机器上的docker下,所以这个对我来说不行;dirimport 第三方库dir(第三方库)>>> import random

2021-06-28 10:54:18 1496

原创 cmake的基本使用

前言公司当前使用的都是cmake,之前没怎么用过,趁着项目间歇期专门学习一下,以此为记;这次是有针对性的学习,所以都是通过各种例子来实现的;cmake具体使用一个cpp文件编译出一个可执行文件文件目录其中build是目录,是为了把cmake编译过程中产生的文件与源文件隔离而建立的,这就是cmake推荐使用的外部构建模式;文件内容main.cpp#include <stdlib.h>#include <stdio.h>int main() { printf(

2021-06-25 16:29:14 254 1

原创 Redis简单使用

简介通过redis来获取客户端指令以及其他不同服务器的其他组件的消息传递;实现client端通过hiredis来通过源码实现connect以及sub:server端启动服务:连接后进入命令行:redis-cli -h 10.1.2.204 -p 6379pub:client响应:...

2021-06-02 18:08:53 109

转载 markdown编辑器语法——文字颜色、大小、字体与背景色的设置(转载)

CSDN的markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。一、颜色在markdown中采用如下方式能够控制文字的颜色:浅红色文字:<font color="#dd0000">浅红色文字:</font><br /> 深红色文字:<font color="#660000">深红色文字</font><br /> 浅

2021-04-29 14:27:59 598

转载 分布式之数据库和缓存双写一致性方案解析(转载)

原链接:分布式之数据库和缓存双写一致性方案解析引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析

2021-04-29 14:09:37 164

原创 量化行业知识汇总

前记进入当前工作已有3个月,但还是有很多行业知识不了解,或者理解的不正确。这是由于量化公司一般都是小公司,对我们这种外来的技术人员不进行专业而全面的培训,另一方面就是自己也没有主动去学习和请教同事。今天请教了西洋,对之前的一些问题有了答案,特此记录——20210427;后面所有相关的知识都是汇聚在该篇内;行业知识量化行业上下游链条量化公司的核心是策略,策略决胜的关键是算法和数据,算法是每个公司的机密,而数据则是指行情和和订单回报(包括下单回报以及成交回报等);数据的速度非常非常关键,这里面会用到很

2021-04-27 13:36:46 792

转载 linux下gdb的安装及查看方法

以此为记:linux下gdb的安装及查看方法

2021-04-09 15:16:55 765

原创 win10解压文件时,出错:不能创建符号链接 你可能需要以管理员权限运行Winrar 客户端没有所需的特权

参考链接windows解压文件时,出错:不能创建符号链接xxxxxxx客户端没有所需得特权win10命令行进入文件夹的方法转载 + 记录1、用管理员权限打开命令行——有多种方式,最简单的一种就是右键cmd,然后选择“以管理员身份运行”2、进入rar文件所在目录首先是进入指定的盘(以D盘为例),就是在cmd下直接输入 D: --注意":"不能少3、然后cd到目的目录即可:D:\>cd Program\Docker\linux——注意,在windows下,是以 " \ "来作

2021-04-06 13:57:34 5602

原创 当 std::bind 遇上 this

背景阅读公司之前项目的代码,看到一段代码如下: if (!m_api->SubFutureL1( m_config.config.symbol[0].future, std::bind( &ArbitrageFc::OnSymbol1FutureMd, this,

2021-03-22 18:01:03 5586 2

转载 “我的”Bug大全(转载)

背景搜索资料时发现了这个链接,作者跟我做的事情有些像:记录自己的每一个bug(最好加上反思和回溯,确定自己犯错的根本原因,方便后面针对性的改进),所以转载过来。我的BUG大全Bug记录buff溢出后,把栈破坏了,这个线程也没崩溃,一直死循环在一小段不可知的代码里。调用getaddrinfo很多次以后,getaddrinfo报错:No address associated with NAME。非常地奇怪呀~~后来把同样的程序部署到比较旧的linux上,报错: Too many open files

2021-03-18 10:39:25 343

原创 centos 下调用libnanolog.so时的“ undefined reference to `std::thread::_M_start_thread ”错误

背景当前项目中通过 libnanolog.so 来记录log,但是在编译时,出现以下错误:包含如下错误:/workspace/AutoClose/unit_tests/lib/centos/libnanolog.so: undefined reference to `std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> &

2021-03-15 11:05:27 1552

原创 gtest与gmock的安装与使用

背景公司的项目采用gtest来进行单元测试(其实之前华为海思也是用gtest,但大厂的好处(或者也可以说坏处- dog head)就是不需要关心这些事情),需要安装gtest;我是在docker下安装的,步骤应该是一样的;步骤源码下载通过git来下载,源码安装:git clone https://github.com/google/googletest编译下载后会在下载命令的目录下生成一个 googletest 的文件夹,进入后,通过cmake来编译,先后输入下面的3个命令并执行:cd

2021-03-12 13:36:05 1699

原创 Win10 vscode 代码格式化设置与远程断点调试

背景公司的代码风格是Google,要求设置自动化格式;文龙和李泽分别在linux和windows下设置的,我参考了李泽的win10下的设置,结果踩了个大坑,浪费了整整一天;过程李泽提供的设置过程:1.下载官网下载vscode https://code.visualstudio.com/——重点说明:我就是这里踩了大坑,由于公司网络问题,从官网下载总是失败,所以就从其他网站上下了一个不用安装的绿色版;导致后面的格式化设置一直提示找不到clang,哪怕我手动安装了LLVM并把它加入到环境变量,能在w

2021-03-08 09:01:07 971

原创 C++11 condition_variable 粗浅使用

背景TCP回包过滤项目中,由于接收线程和多个解析线程(每个TCP连接对应一个解析线程)都是在不停的轮询,所以占用CPU很高。文龙建议使用CV来确保有数据的时候再去解析,以减少CPU的占用率;CV之前只是听过,从未在实际开发中使用过,在此做个简单记录;使用首先介绍一下condition_variable;1、它是在C++11才支持的,所以编译的时候,需要添加 -std=c++11 (或更高版本)的编译选项;2、它一般是跟mutex(一般用unique_lock)绑定使用的;3、涉及到的主要接口函

2021-03-04 19:42:11 156 1

原创 Raw Socket抓包,某些端口的数据包抓不到

背景TCP回包过滤项目,把执行程序部署到实盘上后,发现有一些port(或者说连接)的报文是可以捕获到的,但有一些连接的报文捕获不到,而根据墨菲定律,目标报文没有被捕获到(dog head);定位1、回想整个执行流程,没有发现有问题的地方,并且也加了打印,发现的确是没有捕获到目标port的连接,而不是捕获到了后因为其他条件而被过滤到;2、由于是在实盘环境才能复现该问题,而在本地的docker下复现不了该问题,但实盘调试又要通过乙方来完成,非常麻烦,所以文龙建议通过tcpreplay来复现;折腾了一下,

2021-03-04 09:20:53 1040 1

原创 tcpreplay + tcpdump 联合起来进行回放和监控

背景TCP回包过滤项目里,raw socket捕获不到目标消息对应的port来的数据,需要在本地搭建一下测试环境来复现一下实盘环境;期望:数据从docker A 的网卡,发送到docker B 的网卡;或者如果可以最直接的话,就是某个docker 的网卡直接接收到模拟数据;思路tcpreplay来模拟发送,tcpdump来模拟捕获,先确定能够很好的回复实盘环境;但实际上是不行的:通过这个测试可以说明,tcpreplay模拟的是通过某个网卡向外发送,而不能模拟接收tcpreplay -p 1

2021-03-02 21:08:36 870

原创 Linux下的md5的实现

背景当前项目中基于raw socket实现了tcp包的过滤,其中的过滤条件是我司的产品编号,为了防止甲方爸爸随意乱用我们的产品,所以需要对配置文件里的产品编号进行加密,简单起见,使用md5来进行加密;md5sum使用linux下使用md5非常简单:md5sum filename即可:[root@09de35f53b68 exch_rsp_filter_1]# md5sum MD5.cpp cde2e31dc14220ce250f3ebb906f8d18 MD5.cpp关于linux下md5

2021-03-01 16:25:07 540

原创 linux下cmake3的使用及问题解决

使用cmake3而不是cmake1、如果想使用cmake,也是可以的,需要在环境变量里设置2、具体使用,是先修改自己写的CMakeLists里的内容(比如说添加新的cpp文件),如果CMakeLists写得好的话,会自动包含的,其实也很简单;工程中c和cpp混杂如果CMakeLists没有特别说明,那么基于CMakeLists生成的makefile会针对c和cpp分别编译,导致生成的函数符号命名不同,最终导致找不到函数定义的错误:简单起见,把所有的c文件修改为cpp文件,即可解决此问题——当然,

2021-03-01 16:07:30 1365 1

原创 Linux redis 使用记录

背景新的期货交易系统,需要用redis来做持久化;需要调研一下它的多机热备的功能,调研它的哨兵模式;安装、配置及使用重点参考:Redis详解(九)------ 哨兵(Sentinel)模式详解redis主从+哨兵搭建问题及解决redis-cli: command not foundredis-cli: command not found解决:将redis-cli拷贝到/usr/local/bin/下,让redis-cli指令可以在任意目录下直接使用:sudo cp src/redis-

2021-02-25 10:55:29 113

原创 CentOS docker下解决man的 command not found 和 No manual entry for xxx的问题

背景一开始的问题:man: command not found安装后的问题:No manual entry for read in section 2解决先后执行如下命令:1、yum install man2、yum install -y man-pages3、vi /etc/yum.conf隐藏/etc/yum.conf文件中的tsflags=nodocs一行:4、rpm -qa | xargs yum reinstall -y参考linux - man 提示:-bash: m

2021-02-25 09:00:13 418

原创 Linux下C++里可用的轻量级lock的性能比较

背景介绍当前工作中,有一个场景,有一个碰撞几率较低的变量的读写操作,为了保证操作安全性,需要对这个变量的读写操作加上锁;为了选择一个性能较好的lock,文龙做了以下测试;lock介绍参赛选手:cpp: atomic_flaggcc: __sync_bool_compare_and_swapspi: pthread_spinlock_tnone:空操作,baseline具体的测试用例见下面的测试代码测试代码#include <iostream>#i

2021-02-23 20:11:44 553

原创 cmake3 :undefined reference to `pthread_create

背景代码上库,需要用cmake来编译整个项目;问题及解决由于项目较小,之前的编译都是直接通过命令行来实现的:编译选项:-std=c++11 -lpthread -O3 -g在CMakeLists.txt里添加了:set(THREADS_PREFER_PTHREAD_FLAG ON)find_package(Threads REQUIRED)add_compile_options(-std=c++11 -O3) 但是在编译时,还是提示 undefined reference to pt

2021-02-22 16:55:13 172 1

原创 inet_ntoa 踩坑记录(同一语句内调用2次或多次inet_ntoa,结果会被覆盖)

背景目前手头上在做的项目是上期所的TCP回包过滤项目,需要通过Raw Socket把目标节点上所有的TCP链接接收到的数据截获后识别出我司的信息,然后通过建立的UDP链接把我司信息转发到UDP Server上;在转发的时候,除了原来的TCP应用层的报文外,还需要添加TCP链接的信息:tcp_src_ip, tcp_dst_ip, tcp_src_port, tcp_dst_port;当前整个功能已经实现,但是在测试功能的时候出现了意外问题及源码在UDP Server端,接收到消息后解析然后打印来查

2021-02-19 16:33:22 723

原创 字节序(大小端、网络字节序)

背景之前的工作中涉及到大小端,只是知道了大小端的具体格式以及转换方式,没有深究。这次在当前的项目中涉及到了不同主机上的raw data的解析,牵扯到了大小端和网络字节序,所以找了一些资料,加上自己的理解,写了这篇文章,可能有误,如有请留言或私信,谢谢什么是字节序字节序是数据的存储方式或者说是顺序,有大端和小端两种格式,本机的字节序只与CPU有关,与操作系统等无关;为什么会有字节序的概念?不同的CPU保存数据的格式不同以0x12345678(假设在内存中存储的起始地址是0x4000)为例:

2021-02-03 11:16:23 476 1

原创 linux下libpcap的安装和简单使用

背景当前的项目需求是通过raw socket来获取当前物理机上指定条件(ip和端口)的包。方法1:抓取所有的包,在用户态的recvfrom(or recv)后,再通过代码逻辑来进行过滤;方法2:通过设置,在底层实现过滤;从效率上来说,毫无疑问是方法2更好;方法2的实现,依赖libpcap和BPF;在此先简单介绍一下libpcap的安装和使用;安装参考链接:linux下安装libpcap需要先安装:1、安装GCC:yum -y install gcc-c++(由于我当前的环境docker

2021-01-27 20:14:18 7267 1

转载 windows下安装you-get的简要记录(转载)

原链接:windows下安装you-get的简要记录这是知乎上的介绍原链接:哪些命令行工具让你相见恨晚

2021-01-25 13:39:26 166

原创 关于c/c++中volatile的理解

背景昨天新公司有同事分享了一个关于线程调度的主题,其中的一个细节谈到多线程下的共享变量的访问问题。有一个同事说,两个或多个线程对同一个线程都能访问的变量之所以不符合预期(比如说有2个线程,每个线程都对同一个全局变量进行++操作10000次,那么最终结果不一定是20000),是因为数据缓存在cache,而线程做++操作时,不是从内存中读取,而是从cache中读取导致的。我不认可他的说法,我认为根本原因是++操作不是原子操作,不能保证做了一个小测试。测试直接看代码:#include <stdio

2021-01-22 09:40:15 148

原创 C++ =delete的使用

背景今天看公司的编程规范,其中有个原则:如果你的类不需要拷贝/移动操作,请显式的通过在public域中(private本身就是不能显式的直接调用的)使用 =delete 或其他手段禁用之;对其中的 =delete不了解,之前没用过,查了一下以此为记;=delete使用方式C++11中=delete的巧妙用法#include <cstdio>class TestClass{public: int func(int data)=delete;};那么如果使用时:i

2021-01-20 17:56:54 7433 3

原创 Win10下的docker安装及使用

背景新公司不像菊厂和快马,没有公共的linux服务器供使用——应该是也有,但目前还是算了,自己在本地安装一个Docker Desktop,这样的话,能够把Windows下的本机资源做虚拟化,然后使用;Docker Desktopwin10下安装Docker Desktop下载链接:Docker官方下载链接安装后不必注册——除非你想上传自己的镜像——主要遇到的大坑就是win10下的虚拟化开关,需要通过Bios设置来打开,而不同的机器下的Bios是完全不同的,基本是在CPU下面的虚拟化选项里来设置—

2021-01-19 19:55:20 672 1

原创 C++对象内存模型初探

前言周末看资料的时候,看到虚继承和虚函数(两者完全不是一码事,正在写一个简单的总结),进一步看到C++的类对象的内存模型,网上已有很多文章,自己也记录一下。简单模式研究问题从简单入手,一步步深入。我们先来看一个最简单的模式;class A{public:int a;};用测试程序可以发现,A的对象的大小是4字节,也就是a(int类型)的大小;继承:class E :public A { public: int e; };此时E的对

2020-11-16 23:34:29 95

原创 Windows下Java通过Jni调用C/C++(x64, 多层依赖)

前言客户(证券公司)要求把T2协议的适配改为windows版本,以方便添加GUI进行操作。我的工作等于说是基于恒生的T2的sdk的dll,生成我们自己的dll(依赖恒生的dll),供我们的同事编写的上层应用(java编写)调用windows下Java通过JNI调用C/C++可参考链接:Windows下使用Java Jni调用C/C++初探需要特别注意的问题有2个:1、需要在工程的配置里,引入jdk相关的头文件或者其目录;2、设置生成的dll的系统属性,就是dll是32位还是64位的,现在绝大部

2020-10-29 10:38:22 405

转载 来自Google的TCP BBR拥塞控制算法解析(转载)

大佬原链接:https://blog.csdn.net/dog250/article/details/52830576写本文的初衷一部分来自于工作,更多的来自于发现国内几乎还没有中文版的关于TCP bbr算法的文章,我想抢个沙发。本文写于2016/10/15! 本文的写作方式可能稍有不同,之前很多关于OpenVPN,Netfilter,IP路由,TCP的文章中,我都是先罗列了问题,然后阐述如何解决这个问题。但是本文不同!本文的内容来自于我十分厌恶的一个领域,其中又牵扯到我...

2020-09-09 18:02:46 1187

转载 TCP协议疑难杂症全景解析(转载)

前言:查阅资料时发现了大佬的博客,转载以供以后学习,原链接:https://blog.csdn.net/dog250/article/details/6612496说明:1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的3).针对对象:对TCP已经有了全面了解的人。因为本文不会解析TCP头里面的每一个字段或者3次握手的细节,也不会解释慢启动和快速重传的定义4).除了《TCP/IP详解》.

2020-09-09 17:59:47 302

exercises.rar

算法竞赛入门经典各章习题答案,就是清华的刘汝佳的那本书;非常经典的竞赛书,可以用于提高自己的算法水平,也可以用来面试,里面有很多的思路讲解

2021-06-07

常见算法面试宝典.pdf

常见算法面试宝典,原理+代码示例!

2021-06-04

JVM底层及深度调优面试宝典.pdf

JVM底层及深度调优面试宝典,很好的学习资料!!

2021-06-04

Java基础及集合面试宝典(三).pdf

Java基础及集合面试宝典,非常好的学习资料

2021-06-04

Java基础及集合面试宝典(二).pdf

Java基础及集合面试宝典,非常好的学习资料

2021-06-04

Java基础及集合面试宝典(一).pdf

Java基础及集合面试宝典,非常好的学习资料

2021-06-04

2021年社区团购研究报告.pdf

社区团购研究报告

2021-06-04

2021年低代码行业研究报告.pdf

低代码的行业研究报告,可以一看

2021-06-04

Alibaba分布式核心原理解析.pdf

阿里的分布式资料,值得学习

2021-03-19

N_m3u8DL-CLI_v2.9.6.exe

m3u下载辅助 用于解决IDM 无法下载m3u格式的问题

2021-03-17

ffmpeg-2021-03-14-git-1d61a31497-full_build.7z

ffmpeg 可解决IDM下载时的下载不了的问题,配合N_m3u8DL-CLI使用: http://www.360doc.com/content/20/0730/15/6658104_927631718.shtml ffmpeg环境变量设置 https://blog.csdn.net/qq_30091945/article/details/81154014

2021-03-17

WPE封包拦截工具

适合抓取网络数据,解析网络封包格式,小巧易用,入手较快

2018-05-02

单片机一步一步学,由入门到精通

单片机一步一步学,由入门到精通.压缩文件,附带所有源码

2009-06-02

路由协议培训资料(初级入门)

路由协议的简介以及入门,一个比较好的资料,希望能够对你有所帮助

2009-06-02

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

TA关注的人

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