自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 Shell、bash、sh和linux命令的关系

shell 首先检查命令是否是内部命令,不是的话再检查是否是一个应用程序,这里的应用程序可以是Linux本身的实用程序,比如ls rm,然后shell试着在搜索路径($PATH)里寻找这些应用程序。sh【Bourne shell,其中Bourne是该软件的owner】、bash【Bourne Again shell,是sh的扩展,并对sh完全向后兼容】是具体的shell程序。bash是linux中的一个应用程序,所以用man bash的方式了解更多bash的信息,比如bash中的变量。

2023-07-11 20:43:14 377

原创 字符串分割strtok和strtok_r

strtok()函数将字符串str根据delim分解为零或多个非空标记的token。

2023-04-24 14:24:51 187

原创 当const, int遇到*

还有一种不是那么常见的定义int *const p,根据右结合性,p是const的,也就是说在后续使用p时不能对它进行修改的。如果尝试通过p=a的方式尝试把int *a传递给p,编译器会报错“assignment of read-only variable”,提示你正在对一个只读变量进行赋值操作。p,目的让编译器帮助程序员在该函数的编写过程中不要通过p来修改p所执行的内容。左边的是对*p的修饰,说明其中的内存是const int或者int const的。函数接口定义时常常遇到的是const int。

2023-04-23 10:17:47 267

原创 getenv()和环境变量

Note3:可以通过https://www.runoob.com/cprogramming/c-function-getenv.html了解getenv();Note2:可以通过https://www.runoob.com/linux/linux-comm-export.html了解Linux的相关命令。Note4:有参考https://blog.csdn.net/wuxiaopengnihao1/article/details/126021961。

2023-04-20 14:22:24 316

原创 malloc, calloc和realloc

Note3: 想进一步了解Linux 的虚拟内存,参考https://blog.csdn.net/wangcg123/article/details/79582118?(1)通过realloc()验证了:这三个函数通常是在堆内存中分配内存,当申请的内存超过MMAP_THRESHOLD字节(默认是128kB)时,glibc的三个内存分配函数会通过mmap()作为私有匿名映射来分配内存。(3)calloc分配出来的内存有初始化为0;(2)malloc分配出来的内存没有初始化;

2023-04-19 17:12:04 115

原创 driver用户态学习记录3----多线程(2)POSIX信号量sem_t

创建6个存钱线程,每天存100块,创建3个取钱线程,每天取100块,执行36500次,如果开启信号量保护模块ENABLE_SEMAPHORE,能得到正确的结果。在linux的线程中,其实是没有任何资源关联到信号量对象需要释放的,因此在linux中,销毁信号量对象的作用仅仅是测试是否有线程因为该信号量在等待。功能:被用来阻塞当前线程直到信号量sem的值大于0,解除阻塞后将sem的值减1【即信号量的value永远不应该

2023-04-18 15:12:34 104

原创 driver用户态学习记录2----多线程(1)pthread_create, pthread_once, pthread_self和pthread_join

【代码】driver用户态学习记录2----多线程(1)pthread_create, pthread_once, pthread_self和pthread_join。

2023-04-17 10:02:00 71

原创 std::shared_ptr和std::weak_ptr学习记录

std::shard_ptr是智能指针,通过引用计数的方式共享对象的所有权,在引用计数为0时自动释放对象占用的内存。int main(){ int *p = new int(10); std::shared_ptr<int> a(p, [](int* p) {std::cout << "[deleter called]\n"; delete p;}); std::cout << "p=" << p <...

2022-04-30 16:57:58 488

原创 std::mutex和std::lock_guard

互斥锁是一种可锁定的对象,它被设计用来在关键代码段需要独占访问时发出信号,防止具有相同保护的其他线程并发执行并访问相同的内存位置。互斥对象提供独占性,不支持递归性(也就是说,一个线程不应该锁定它已经拥有的互斥对象,否则会导致死锁)。 构造函数:仅支持默认构造函数,不支持拷贝和移动构造函数。完成构造后,处于unlock状态。互斥锁的构造本身不是原子的:在构造时访问对象可能会引发数据竞争。 lock():调用线程锁住互斥对象,必要时阻塞,互斥对象被作为原子操作访问/修改(不会导致数据竞争)。 ...

2022-04-27 17:18:05 8541 1

原创 std::thread的join()和detach()

std::thread:代表单独的线程对象。同一进程中的线程共享同一个地址空间。一个初始化的thread对象代表一个激活的线程,该对象是joinable的,有唯一的线程id。一个只构造但没有初始化的线程对象是non-joinable的线程,所有non-joinable的线程的id都是一样的。对joinable的线程执行join()或者detach()操作后,该线程就变成non-joinable的了。构造函数:default (1) thread() noexcept;initialization (

2022-04-27 10:45:30 402

原创 C++的特殊成员函数(Special members)与关键字default和delete

特殊成员函数是在特定情况下隐式定义为类成员的成员函数。有如下六个:一、默认构造函数:如果类申明时没有显示定义任何构造函数,则编译器假定该类具有隐式定义的默认构造函数。例如申明如下的类:class Example {public:int total;void accumulate (int x) { total += x; }};编译器会假定有一个默认构造函数:Example() {},因此通过如下语句直接定义一个变量是能编译过的Example ex;一旦类有显示申明的构造函数,编译器就不

2022-02-21 13:55:51 824

原创 win10护眼色修改

参考https://glarminy.com/2016/07/29/change-text-background-color-windows-10/修改office软件,IE,google chrome等的背景色:设置-》个性化-》颜色-》高对比度-》从“选择主题”下来框下选择一个主题,然后修改“选择才是矩形以自定义高对比度颜色”中的背景色、文本色等-》点击应用,把颜色保存下来-》下拉框中选择刚刚保存的主题并应用即可。Notepad++颜色修改:设置->语言格式设置->选择主题

2022-01-28 11:05:06 660

原创 c++中的 for_each 函数

C++ 学习过程中可以参考http://www.cplusplus.com/referencefor_each()是一个模板函数,源码如下:template<class InputIterator, class Function>Function for_each(InputIterator first, InputIterator last, Function fn){while (first!=last) {fn (*first);++first;}return fn;

2022-01-24 15:48:44 419

原创 C++和C的编译

1. C++编译文件:g++ -g -Wall -std=c++11 -o test test.cpp-g是加编译信息,方便后续可以用gdb调试;-Wall,提供比较详细的warning信息;-std=c++11,支持c++11的语法;2. C编译文件:gcc -o test test.cpp

2022-01-21 14:04:41 812

原创 C++的Lambda表达式学习记录

C++的Lambda表达式转自https://www.cnblogs.com/jimodetiantang/p/9016826.html,稍作修改(对代码进行验证,并提供输出结果)。概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}Lambda 主要分为五个部分:[函数对象参数]、(操作符重载函数参

2022-01-21 11:22:35 65

原创 FFMPEG学习记录

FFMPEG学习记录本文仅仅是学习雷神blog的记录而已。一、下载源码并解压在http://ffmpeg.org/download.html 中下载源码ffmpeg-snapshot.tar.bz2;通过tar -jxvf ffmpeg-snapshot.tar.bz2解压二、编译配置在ffmpeg根目录下执行:./configure –help了解相关配置,可以参考https://blog.csdn.net/qq373432361/article/details/7068043执行配置

2022-01-18 10:52:16 1449

原创 GDB使用记录

GDB使用记录使用GDB调试记录:准备工作:编译时增加-g选项,保留调试信息;gdb ./可执行文件名;如果可执行文件需要带参数,在(gdb)的命令行中通过set args添加;通过break 函数名打断点;如果是调试动态库,发现断点打不上去,就用xxx.cpp:行号的方式;设置后可以通过info break查看一下设置断点的信息;...

2019-11-26 15:20:37 128

interface of asb

interface of asb

2024-04-14

interface of asb

interface of asb

2024-04-13

interface of asb

interface of asb

2024-04-13

interface of asb

interface of asb

2024-04-13

interface of asb

interface of asb

2024-04-13

14496-1、14496-12、14496-14

14496-1_2010(system)、14496-12_2012(ISO base media file format)、14496-14_2003(MP4 file format)。为了学习MP4文件封装格式而整理的文档,建议有时间就按照1-12-14的顺序看文档;如果项目比较紧急也建议先看12再看14。因为14只是对12的实例化而已。

2019-01-30

空空如也

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

TA关注的人

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