- 博客(21)
- 收藏
- 关注
原创 CSAPP_cache_lab
参考https://www.cnblogs.com/zhiyiYo/p/16284866.htmlhttps://xcraft.tech/2021/04/13/ICS/CacheLab/
2024-01-06 15:37:58
570
原创 Python日志处理(logging模块介绍)
logging模块是Python的一个标准库模块,由标准库模块提供日志记录API的关键好处是所有Python模块都可以使用这个日志记录功能。第一种方式是使用logging提供的模块级别的函数。第二种方式是使用Logging日志系统的四大组件其实,logging所提供的模块级别的日志记录函数也是对logging日志系统相关类的封装而已。logging模块定义的模块级别的常用函数函数说明创建一条严重级别为DEBUG的日志记录创建一条严重级别为INFO的日志记录。
2024-01-02 20:06:07
1271
3
原创 CSAPP_06 存储器的层次结构
Modified,已修改Exclusive,独占Shared,共享,已失效已修改代表该上的数据已经被更新过,但是还没有写到内存里。而已失效状态,表示的是这个里的数据已经失效了,不可以读取该状态的数据。独占和共享状态都代表里的数据是干净的,也就是说,这个时候里的数据和内存里面的数据是一致性的。独占和共享的差别在于,独占状态的时候,数据只存储在一个CPU核心的Cache里,而其他CPU核心的Cache没有该数据。这个时候,如果要向独占的Cache写数据,就可以直接自由地写入,而不需要通知其他CPU。
2023-12-05 16:39:17
463
原创 C++完美转发
提到完美转发,就有必要说一下,什么是转发,什么样的转发才称得上是完美转发。在C++中,转发指的就是函数之间的参数传递(例如函数f1接收了一个参数a,而后又将此参数a传递给了其函数体内调用的另一个函数f2而完美转发指的就是在函数之间传递参数的过程中,参数在传递后的属性保持不变(如左值仍是左值,右值仍是右值,const修饰也会保留)。
2023-11-23 10:11:38
1228
原创 std::move源码分析
***/此函数用于将一个值转化为一个右值(注意这里没有说是左值还是右值)__t是任意类型的参数此函数最终会将__t转化为一个右值引用类型也是个函数模板,从名称上就比较好理解,即为移除引用。所以我们只想知道,它是如何移除引用的。我们来看下从上面的定义我们可以看到无论传入的是值类型(_Tp),左值引用类型(_Tp&)还是右值引用类型(_Tp&&),最终得到的都是_Tp类型,具体参考https://compiler-explorer.com/z/E86M68r3d。
2023-11-15 17:30:29
174
原创 shared_ptr和weak_ptr
参考实现简单的shared_ptrC++智能指针的enable_shared_from_this和shared_from_this机制用C++11 make_shared替代shared_ptr
2023-11-15 17:20:21
53
原创 《Effective Modern C++》学习笔记 - Item 9: 倾向于使用别名声明(alias declaration)而不是 typedef
typedefusingtypedefMyAlloc使用typedef,你就从头开始typedef的类型取决于T,是一个,编译器没理由确信它就一定会是个类型名。C++规定这种情况下要用关键字typename来声明其的确是类型。于是,typedef的解决方案相比typename和::type。
2023-11-14 15:12:31
97
原创 C++中的lambda表达式
在Lambda表达式中,如果以传值方式捕获外部变量,则函数体中不能修改该外部变量,否则会引发编译错误。那么有没有办法可以修改值捕获的外部变量呢?上面的例子,要么是值捕获,要么是引用捕获,Lambda表达式还支持混合的方式捕获外部变量,这种方式主要是以上几种捕获方式的组合使用。这些函数对象的一个用途是用作容器的排序条件。被捕获的值在lambda表达式创建的时候通过值拷贝的方式传入,因此随后对该变量的修改不会影响lambda的值。lambda可以使用其可见范围内的外部变量,但必须要在。
2023-11-10 17:42:46
49
原创 C++中的友元函数和友元类
结合着类的特性,可知:类具有封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的。非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公有的,这又破坏了隐藏的特性。友元是一种定义在类外部的普通函数,但它需要在类体内进行声明,为了与该类的成员函数加以区别,在声明时前面加以关键字friend。友元不是成员函数,但是它可以访问类中的私有成员。友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私有成员。
2023-11-10 09:19:01
44
原创 字节序,bit序以及位域
如果将一个32位的整数0x12345678存放到一个整型变量(int) 中,这个整型变量采用大端或者小端模式在内存中的存储由下表所示。
2023-10-26 17:49:23
149
原创 虚函数内存布局解析
主要在于功能解耦合以及规范化的需要。我们很多时候需要做到:**一个模块对达成某个功能(机制)有一组可替换的实现(策略)。也就是说,需要策略和机制分离。那么我们的模块就应该只依赖这个机制的接口,而非这个机制的具体实现。,这是怎么实现的呢?中更加完善,它会告诉妳这是一个接口。,这里如果我们想在业务中使用。都生成了非虚的析构函数,直接。的功能,那么我们就必须把。可能导致释放不完全。
2023-10-23 10:41:12
204
原创 《Effective Modern C++》学习笔记 - Item 17:理解特殊成员函数的生成
参考item-17学习笔记cpp基础item-17中文翻译
2023-10-20 16:28:17
133
原创 关于左值、将亡值和纯右值
在C++11之前,表达式的值分为左值和右值两种,其中右值就是我们理解中的字面值等。自C++11开始,表达式的值分为左值()、将亡值()、纯右值(
2023-10-20 11:41:18
72
原创 《Effective Modern C++》学习笔记 - Item 1: 理解模板类型推导
对于一个复杂系统的用户来说,很多时候他们最关心的是它做了什么而不是它怎么做的。在这一点上,C++中的模板类型推导表现得非常出色。数百万的程序员只需要向模板函数传递实参,就能通过编译器的类型推导获得令人满意的结果,尽管他们中的大多数在被逼无奈的情况下,对于传递给函数的那些实参是如何引导编译器进行类型推导的,也只能给出非常模糊的描述。如果那些人中包括你,我有一个好消息和一个坏消息。好消息是现在C++最重要最吸引人的特性auto是建立在模板类型推导的基础上的。
2023-10-09 20:38:14
164
原创 NumPy常用函数
NumPyThe BasicsNumPy 主要面向的对象是齐次多维数组。在NumPy中维度(dimension)被称为轴(axe)。轴的个数即为秩(rank)。例如,一个坐标为[1, 2, 1]的点的秩为1,因为它只有一个轴,并且这个轴的长度为3。下面这个例子,这个数组的秩为2。第一个轴的长度为2,第二个轴的长度为3[[1,0,0],[0,1,2]]NumPy的数组类
2018-01-21 11:40:06
2524
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人