![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机基础
文章平均质量分 72
lqw198421
这个作者很懒,什么都没留下…
展开
-
7个示例科普CPU CACHE——from 酷壳
Cache Friendly转载 2023-06-08 16:41:45 · 162 阅读 · 0 评论 -
Windows C/C++ 开发环境搭建
Windows C/C++ 开发环境搭建原创 2022-07-14 16:50:23 · 2532 阅读 · 0 评论 -
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 · 840 阅读 · 0 评论 -
mmap的 Bus error问题及解决
前言新交易系统中,通过mmap来实现持仓和订单的本地持久化,之前未用过mmap,在本次实现中遇到了一些问题,仅记录Bus error问题;实现基本逻辑OM或者PM在启动时,先通过本地的持久化文件来恢复订单或者持仓:如果是当日的第一次的正常启动,那么是没有持久化文件的,这个时候,PM需要从别的地方来获取初始化的持仓(当天还没有开始交易,没有订单,OM不需要做处理);如果不是当天的第一次正常启动,那么是有持久化文件的,OM或者PM就需要从本地的持久化文件来获取订单和持仓,完成初始化;问题持久原创 2021-07-01 08:43:54 · 3033 阅读 · 2 评论 -
分布式之数据库和缓存双写一致性方案解析(转载)
原链接:分布式之数据库和缓存双写一致性方案解析引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成1、讲解缓存更新策略2、对每种策略进行缺点分析转载 2021-04-29 14:09:37 · 165 阅读 · 0 评论 -
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 · 5839 阅读 · 0 评论 -
“我的”Bug大全(转载)
背景搜索资料时发现了这个链接,作者跟我做的事情有些像:记录自己的每一个bug(最好加上反思和回溯,确定自己犯错的根本原因,方便后面针对性的改进),所以转载过来。我的BUG大全Bug记录buff溢出后,把栈破坏了,这个线程也没崩溃,一直死循环在一小段不可知的代码里。调用getaddrinfo很多次以后,getaddrinfo报错:No address associated with NAME。非常地奇怪呀~~后来把同样的程序部署到比较旧的linux上,报错: Too many open files转载 2021-03-18 10:39:25 · 351 阅读 · 0 评论 -
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 · 178 阅读 · 1 评论 -
字节序(大小端、网络字节序)
背景之前的工作中涉及到大小端,只是知道了大小端的具体格式以及转换方式,没有深究。这次在当前的项目中涉及到了不同主机上的raw data的解析,牵扯到了大小端和网络字节序,所以找了一些资料,加上自己的理解,写了这篇文章,可能有误,如有请留言或私信,谢谢什么是字节序字节序是数据的存储方式或者说是顺序,有大端和小端两种格式,本机的字节序只与CPU有关,与操作系统等无关;为什么会有字节序的概念?不同的CPU保存数据的格式不同以0x12345678(假设在内存中存储的起始地址是0x4000)为例:原创 2021-02-03 11:16:23 · 489 阅读 · 1 评论 -
关于c/c++中volatile的理解
背景昨天新公司有同事分享了一个关于线程调度的主题,其中的一个细节谈到多线程下的共享变量的访问问题。有一个同事说,两个或多个线程对同一个线程都能访问的变量之所以不符合预期(比如说有2个线程,每个线程都对同一个全局变量进行++操作10000次,那么最终结果不一定是20000),是因为数据缓存在cache,而线程做++操作时,不是从内存中读取,而是从cache中读取导致的。我不认可他的说法,我认为根本原因是++操作不是原子操作,不能保证做了一个小测试。测试直接看代码:#include <stdio原创 2021-01-22 09:40:15 · 151 阅读 · 0 评论 -
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 · 7466 阅读 · 3 评论 -
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 · 99 阅读 · 0 评论 -
来自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 · 1213 阅读 · 0 评论 -
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 · 311 阅读 · 0 评论 -
Linux系统调用(syscall)原理(转载)
转载链接:http://gityuan.com/2016/05/21/syscall/ 引言:分析Android源码的过程中,要想从上至下完全明白一行代码,往往涉及app、framework、native一直到kernel,可能迷失到代码世界,明白了系统调用原理,或许能帮你峰回路转,找到进入kernel函数的入口。本文主要讲解ARM架构相关源码:/bionic/libc/kernel/uapi/asm-arm/asm/unistd.h/bionic/libc/arch-arm转载 2020-09-09 15:49:01 · 1583 阅读 · 0 评论 -
异常、调试、ptrace的过程和原理
前言从今年上半年开始,一直在利用ptrace做plt hook的一些工作。在此之前,对ptrace并没有什么了解。在工作开始后,为了能尽快出成果,也只是快速的翻了一下ptrace的相关接口函数,然后根据查阅到的资料,在较短时间内达成了项目目标。对其中的原理,并未做深入研究。今天看了一些资料,做个简单总结,以此为记。异常什么是异常异常是异常控制流的一种形式,一部分由硬件实现,一部分由操作系统实现;它是控制流中的突变,用来相应处理其状态中的某些变化;——《深入理解计算机系统》可以用下图来简单表示:原创 2020-09-09 15:11:05 · 625 阅读 · 0 评论 -
虚拟存储器和高速缓存总结(转载)
转载链接:https://blog.csdn.net/chen98765432101/article/details/54881652### 概述为了更加有效的管理存储器并且少出错,现代操作系统提供了一种对主存的抽象,叫做虚拟存储器。虚拟存储器是被应用程序所意识和使用的。也就是说,它是被抽象出来的,虚拟出来的主存。所以,从应用程序的层面,程序看到的和使用的虚拟地址都是属于虚拟存储器转载 2020-09-09 11:57:53 · 604 阅读 · 0 评论