自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言读取网络信息

C语言读取网络信息

2023-01-03 12:12:59 209

原创 C语言:va_list

C语言 va_list 用法

2023-01-03 11:59:39 311

翻译 Makefile 特殊内置目标

Makefile 特殊内置目标

2023-01-01 20:50:51 139

原创 vim配置

vim C++ 配置

2022-09-15 08:24:32 207

原创 C++赋值运算符重载

C++赋值运算符重载

2022-07-25 16:30:56 550

原创 C++ shared_ptr的线程安全性

C++ shared_ptr的线程安全性

2022-07-17 15:56:56 3936

转载 两个线程各执行100次i++,得到的可能值

两个线程各执行100次i++的可能结果

2022-06-18 22:34:31 550

原创 protobuf

编码Base 128 Variant这是一种基于 7 bit(即 128)的变字节长度的编码。小端存储(least significant group first)。最高有效位( most significant bit,MSB):1 表示下一个字节也用来表示该数,0 表示这是该数的最后一个字节。Message Structurekey-value :二进制表示为 key-value-key-value-... 。field number - wire type:参考[1] pro

2022-05-25 20:13:06 139

原创 C++ 模板

C++模板

2022-04-29 21:07:01 1128

原创 C++虚函数

C++构造函数为什么不能是虚函数

2022-04-28 19:48:49 1507

原创 C++合成的构造函数

C++合成的构造函数

2022-04-11 22:48:29 1304

原创 C++ enable_shared_from_this 解析

C++ enable_shared_from_this 类解析

2022-04-10 20:45:00 973

原创 C++函数指针

C++函数指针

2022-04-09 15:24:01 743

原创 c/c++判断NULL指针

结论只有通过指针读取指针时,编译器才会判断指针的有效性。实验offsetof()函数struct A { int x; char y; long z;};int main() { int offset = ((struct A*)NULL)->y; // 即 offsetof()的实现方法 printf("offset of y: %d\n", offset); // 打印 4,不会报错}以上就是c语言的宏函数offsetof的原理,其定义如下:#define of

2021-12-17 21:53:32 1876

原创 shell exit命令及父子进程的理解

实验情形1直接在终端中执行exit:$ exit 1这时候,终端会直接退出(logout)。情形2我们新建一个文件 test.sh,写上以下内容:exit 1然后再在终端中执行:$ bash test.sh这时候,终端不退出,并且能够捕获上一次命令的执行状态:$ echo $?结果:1。情形3还是执行上述test.sh文件,但是我们不使用bash命令,而改用source命令:source test.sh结果:终端退出。分析情形1和情形2的区别在哪里呢

2021-11-16 17:42:56 2630

原创 Android异步消息机制

异步消息机制MessageMessage是在线程之间传递的消息,可以在内部携带少量信息。成员:what, arg1, arg2Handler用于发送和处理消息。成员方法:sendMessage()handleMessage()MessageQueue消息队列,用于存放所有通过Handler发送的消息。每个线程中只有一个MessageQueue对象。Looper每个线程中的MessageQueue管家。调用Looper的loop()方法后,就会进入一个无限循环,然后每当发现Mess

2021-11-16 15:12:44 1907

原创 Linux权限管理

Linux权限的概念

2021-11-09 20:24:34 762

原创 查看windows文件名的编码

dir > encode.txt然后用 sublime txt3 软件打开文件 encode.txt快捷键 Ctrl+` (此为1左边的‘~’键)然后输入view.encoding(),即会显示当前文档编码,即为 Windows 文件名。在 Windows10 家庭版上测试结果为:'UTF-16 LE with BOM'...

2021-11-07 22:07:41 3203

原创 管道与命令结合不生效的原因

以下命令将不会生效:find . -name "*.txt" | ls -l 原因:因为从管道接收的是数据流,不是参数。正确做法:find . -name "*.c" | xargs ls -l {}最后的{}可以不要。或:ls -l `find . -name "*.c"` 参考:https://www.coder.work/article/5128709...

2021-11-05 21:49:45 648

原创 linux正则表达式踩坑

假设一个文件file.txt,其内容如下:1323.23.24.11213.211.d12.3.4命令(加上引号):grep "[0-9]\.[0-9]" file.txt结果:2. 命令(不加引号):grep [0-9]\.[0-9] file.txt结果:解释:这是因为bash中\有特殊含义。正确的写法如下:grep [0-9]\\.[0-9] file.txt得到正确结果:...

2021-11-05 18:01:21 139

原创 算术移位 VS 逻辑移位

定义逻辑左移(LLS,Logical Left Shift):低位补零。逻辑右移(LRS,Logical Right Shift):高位补零。算术左移(ALS,Arithmetic Left Shift):低位补零。算术右移(ARS,Arithmetic Right Shift):高位补符号位。**注意:**以上4种定义,所有位(包括符号位)要同步移动。结论1. 不论正数还是负数,逻辑左移与算术左移完全相同。2. 正数:逻辑右移与算术右移完全相同。3. 负数:逻辑右移与算术右移不同。

2021-09-04 18:40:01 10880 6

原创 C++ const说明

C++ const说明直接上代码"顶层const"和"底层const"总结直接上代码#include <iostream>using namespace std;class A {public: int m1 = 1, m2 = 2;};int main() { A a, b; const A ca; const A * p1 = &a; // 被指向的对象不能改变 //p1->m1 = 10; // wrong,因为被指对象不能改变 p1 = &

2021-07-18 23:26:04 114 2

原创 Java多线程

Java多线程volatile作用新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入volatile作用保证线程可见性java堆内存是线程间共享的,除此之外各线程有自己的独享内存.线程读写共享的内存时,会有经历"复制

2021-07-18 16:59:51 93

原创 vim命令

:vs filename 文件对比

2021-06-25 16:47:28 77

原创 Android Makefile

命令call用于调用其它函数, 参数以逗号分隔,函数原型:$(call <expression>,<parm1>,<parm2>,<parm3>,…)当make执行这个函数时,<expression>参数中的变量,如$(1),$(2),$(3)等,会被参数<parm1>,<parm2>,<parm3>依次取代。Makefile函数调用形式:$(<function> <argume

2021-05-07 20:11:28 404

原创 换行“\n“与回车“\r“

换行"\n"与回车"\r"我们以Linux的`printf`命令来测试:分析:我们以Linux的printf命令来测试:$ printf "123\n"123$ printf "123\r\n"123$ printf "123"123$ ^C$ printf "123\r"$ printf "123\r\r\n"123分析:printf "123" 输出"123",没有换行。printf "123\n" 输出"123",再加上一个换行。printf "123\r" 没有输出!

2021-04-29 16:14:37 132

原创 Android HAL 接口定义语言

首先请阅读该文章:https://blog.csdn.net/qq_19923217/article/details/88398660下表列出了 Android 所有软件包前缀和位置:软件包前缀 位置 android.hardware.* hardware/interfaces/* android.frameworks.* frameworks/hardware/interfaces/* android.system.* system/hardware/...

2021-03-16 16:09:11 1485

原创 文件IO与进程

问题:1. 进程为什么会自动打开0, 1, 2三个文件描述符?答:shell进程启动时,会自动打开这三个文件描述符;shell利用fork()开启用户进程(子进程),该子进程复制父进程shell的所有文件描述符,并且共享文件表项;所以,子进程对文件状态标志(读、写、同步或非阻塞等)的修改,将会影响父进程。测试:void pr_fl(int fd); // 自定义函数:打印文件状态标志void set_fl(int fd, flags); // 自定义函数:设置文件状态标志in...

2020-07-30 22:30:12 357

原创 终端与shell

1. 在前台执行命令:$ ps -o pid,ppid,pgid,sid,tpgid,comm | cat PID PPID PGID SID TPGID COMMAND21818 21811 21818 21818 21827 bash21827 21818 21827 21818 21827 ps21828 21818 21827 21818 21827 cat从TGPID可以看出,bash不是终端进程,反而ps是终端进程。2. 在后台执行命令:$ ps .

2020-07-14 22:56:37 249

原创 C语言申请堆栈的限制

内存空间:32位程序:内存空间不得超过4G,其中4G是最大unsigned int表示的范围(2^32-1),见下图。64位程序:内存空间应该最大是(2^64-1)。这从malloc函数的声明可以看出:void* malloc (size_t size);其中:size_t在64位下为int64,在32位下为int32。栈空间:Linux:据说不能超过2MB,没有测试(`TODO`:待测试)。在linux下可以使用`ulimits`命令查看。Windows

2020-05-20 14:30:22 972

原创 doxygen安装与使用

环境:Ubuntu 18.04安装:sudo apt-get install doxygen如果要使用图形工具,则sudo apt-get install doxywizardsudo apt-get install graphviz如果doxywizard使用时报错,cannot find dot,就是没有安装graphviz,可以在doxywizard的“Wiza...

2020-04-25 15:40:17 1022

原创 C++11: vector::push_back和vector::emplace_back的区别

vector::push_back()的输入参数是对象本身;vector::emplace_back()的输入参数是构造函数的参数,它可以根据这些参数自动构造一个对象。#include <iostream>#include <vector>using namespace std;class A{public: explicit A(int x):x_...

2020-04-25 12:20:40 616

原创 Unix学习笔记

第一章 基础知识1.2 UNIX体系结构由外到内:应用程序(shell、公共函数库)、系统调用、内核1.3 登录1.3.1 登录名口令文件/etc/passwd:口令文件中的登录项由7个以冒号分隔的字段组成,即:登录名:加密口令:数字用户ID:数字用户ID:注释字段:起始目录:shell程序root:x:0:0:root:/root:/bin/bashabc:x...

2019-11-17 15:54:29 182

原创 安装ubuntu和windows10双系统

一、先安装windows10:1.制作启动盘:在微软官网上,下载U盘制作工具,然后用该工具下载windows10,傻瓜式。2.开始安装:启动电脑,在Asus(华硕主板)徽标出现之后,立即不断按esc,选择从U盘启动:这里有两个U盘启动项,选择带"UEFI:Partition1"的,也就是用UEFI的方式安装win10。3.分区:全部删掉重建(这样会删除所有数据)。ssd上新...

2019-11-02 15:42:34 329

原创 git本地新建仓库并推送到远程

$ git init$ git add README.md$ git commit -m "first commit"$ git remote add origin https://github.com/bi-an/stl-source.git$ git push -u origin mastererror: src refspec master does not match any...

2019-08-31 16:59:31 1457

原创 Python作用域

Python有函数作用域:def fun(): x = 1print(x) # error: 找不到xPython没有块作用域:if True: x = 1print(x) # 打印1Python闭包:闭包closure类似于C++的class的简化版,没有private、public、protected这些作用域符,并且外界只能访问其方...

2019-08-20 16:54:21 146

原创 python 数据类型

Python数据类型 C++数据类型 list 列表 定义:list1 = ['physics', 'chemistry', 1997, 2000] 访问元素:list1[0]、list1[2:4] tuple 元组 + list 列表 dict 字典 定义:dict = {'a': 1, 'b': 2, 'b':...

2019-08-20 16:10:52 134

原创 Python的json函数

json.load读取文件(file),解析为json对象(dict类型);json.loads读取字符串(string),解析为json对象;json.dump写文件(file),将json对象写入文件;json.dumps写字符串,将json对象写成string。import jsonimport osjson_obj = { 'name':'Michael'...

2019-08-20 16:04:10 660

原创 QtCreator(qt5)在ubuntu下不能输入中文

1. 安装fcitx-frontend-qt5:sudo apt-get install fcitx-frontend-qt52. 这时候可以找到libfcitxplatforminputcontextplugin.so文件,我的路径是这里:/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplat...

2019-08-02 17:36:08 201

原创 C++11 智能指针

shared_ptr, weak_ptr, unique_ptr

2019-08-02 15:16:50 222

空空如也

空空如也

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

TA关注的人

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