自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 GCC系列_ __attribute__((visibility(““)))

GCC系列: __attribute__((visibility(““)))性质

2022-07-05 00:07:38 420

原创 lock_guard和unique_lock

锁锁用来在多线程访问同一个资源时防止数据竞险,保证数据的一致性访问。多线程本来就是为了提高效率和响应速度,但锁的使用又限制了多线程的并行执行,这会降低效率,但为了保证数据正确,不得不使用锁,它们就是这样纠缠。主要讨论 c++11 中的两种锁:lock_guard 和 unique_lock。这两种锁都可以对std::mutex进行封装,实现RAII的效果。绝大多数情况下这两种锁是可以互相替代的,区别是unique_lock比lock_guard能提供更多的功能特性(但需要付出性能的一些代价)结合锁进行

2022-04-29 22:06:05 9141 2

原创 01Linux的基础

一、Linux内核的整体架构1、宏内核2、微内核3、对比(1)宏内核的优点:设计简洁,性能比较好(2)微内核的优点:稳定性和实时性二、Linux内核的体系架构linux的内核体系架构如下:三、Linux内核的特征1、linux内核组织形式为整体式结构2、进程调度方式简单有效3、支持内核线程(或称为守护进程)4、支持多种平台的虚拟内存管理5、虚拟文件系统6、模块机制(使内核之间相互独立,方便模块的移植)7、增加了系统调用8、面向对象1.Linux内核在系统中的位置2

2022-01-07 00:12:03 609

原创 哈夫曼树(Huffman树)实现

哈夫曼树(Huffman树)原理分析及实现1 构造原理假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,则哈夫曼树的构造规则为:  (1) 将w1、w2、…,wn看成是有n 棵树的森林(每棵树仅有一个结点);  (2) 在森林中选出两个根结点的权值最小的树合并,作为一棵新树的左、右子树,且新树的根结点权值为其左、右子树根结点权值之和;  (3)从森林中删除选取的两棵树,并将新树加入森林;  (4)重复(2)、(3)步,直到森林中只剩一棵树为止,该树即为所

2022-01-05 08:21:29 1454

原创 golang中time.Format()方法时间显示不对的问题

golang中time.Format()方法时间显示不对的问题在使用golang的time.Format()方法时,需要导入一个时间的模板,最开始的一直以为这个模板只要是我们自己的设置的模板,golang即可按照我们设置的模板就行识别,但是最终显示的时间始终不对,如下图第一条是系统的时间,第二条是自己的设置的模板,代码如下:fmt.Println(time.Now())ret := time.Now().Format("2006-10-10 12:00:00.000")return ret修

2021-10-10 11:21:31 3771

原创 C/C++函数调用的几种方式总结

C/C++函数调用的几种方式总结在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结

2021-10-07 10:45:29 10495

转载 CPU缓存一致性协议MESI

CPU缓存一致性协议MESICPU高速缓存(Cache Memory)CPU为何要有高速缓存CPU在摩尔定律的指导下以每18个月翻一番的速度在发展,然而内存和硬盘的发展速度远远不及CPU。这就造成了高性能能的内存和硬盘价格及其昂贵。然而CPU的高度运算需要高速的数据。为了解决这个问题,CPU厂商在CPU中内置了少量的高速缓存以解决I\O速度和CPU运算速度之间的不匹配问题。在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就被称为局部性原理。时间局部性(Temp

2021-10-07 10:40:10 178

转载 Linux C/C++编程:likely和unlikely(__builtin_expect)

Linux C/C++编程:likely和unlikely(__builtin_expect)看linux源码或者一些优秀组件的源码,经常碰到likely和unlikely, 其实很简单,无非就是显式告诉编译器怎么去优化。#define likely(x) __builtin_expect((x), 1)#define unlikely(x) __builtin_expect((x), 0)使用if( likely(val)) if( unlikely (val))那么为什么要这样

2021-10-06 12:03:32 558

原创 C/C++函数调用方式总结

在C语言中,假设我们有这样的一个函数:int function(int a,int b)调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。栈是一种先进后

2021-10-06 11:44:14 2679

原创 Markdown文档常用字体及颜色设置

Markdown文档常用字体及颜色设置1、字体、字号、颜色设置<font face="黑体">我是黑体字</font><font face="微软雅黑">我是微软雅黑</font><font face="STCAIYUN">我是华文彩云</font><font color=red>我是红色</font><font color=#008000>我是绿色</font><fo

2021-09-30 00:56:41 1264

原创 conda的安装和的使用

conda的安装和的使用一、conda的安装和基本命令1.conda的安装(1)conda安装方式一$ curl -Ls https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh > miniconda.sh$ bash miniconda.sh -b -p "$HOME"/conda &> /dev/null$ touch "$HOME"/conda/conda-meta/pinne

2021-05-04 11:17:26 816

原创 cmake的基础使用

一、cmake的使用依赖以及安装一、cmake的安装$ cmake_version="3.5.2"$ target_path=$HOME/Deps/cmake/${cmake_version}$ cmake_url="https://cmake.org/files/v${cmake_version%.*}/cmake-${cmake_version}-Linux-x86_64.tar.gz"$ mkdir -p "${target_path}"$ curl -Ls "${cmake_url

2021-03-14 22:18:56 2921

转载 protobuf详细介绍和使用

protobuf详细介绍和使用一、protobuf初识(一)protocol buffers 是什么?protocol buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小、更快、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏根据旧数据结构编译而成并且已部署的程序。(二)它是如何工作的?你可以通过在 .proto 文件中定义 proto.

2021-03-10 01:06:03 18192

原创 ubuntu下samba安装

# 安装sudo apt-get install samba samba-common# 卸载sudo apt-get autoremove samba#添加Samba用户把当前用户添加为Samba用户,或者新建一个ubuntu用户作为Samba用户也可以$ sudo smbpasswd -a sheen设置Samba用户的密码,可以为空。# 创建Samba文件夹目录sudo mkdir /home/username# 授予可写权sudo chmo...

2021-02-06 11:07:45 327

原创 windows安装clang,并在clion配置

一、安装msys2首先需要msys2的安装包,可以去官网下载安装包官网地址:http://www.msys2.org/本次下载的是 msys2-x86_64-20180531.exe注意:1.msys2不可以安装在FAT*分区   2.msys2不能安装在win XP系统上1.双击msys2-x86_64-20180531.exe,并点击下一步选择安装文件夹路径要短,不能有空格,只能用ASCII字符,不能用单引号然后下一步直到开始安装2.安装完成后点击完 成退出安装程序注.

2021-02-06 09:35:40 3138 3

空空如也

空空如也

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

TA关注的人

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