自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux后台执行命令nohup和&

如果仅仅使用nohup命令,程序的输出就会默认重定向到一个nohup.out文件下。于是,标准错误和标准输出都重定向到指定的out.txt文件中,从此终端真正清净了。如果使用nohup后,程序还是自己结束了,可能是因为账户非正常退出。在命令的末尾加个&,程序可以在后台运行,但是一旦当前终端关闭,该程序就会停止运行。这样,test程序就会在后台运行了。但是log依旧不停的输出在终端上。我们要让程序test在后台运行,并且不要把log输出到终端上。可以使用nohup命令,no hang up就是不挂起的意思。

2023-04-12 16:24:42 351

原创 谈谈C++函数std::bind

bind函数可以看作一个通用的函数适配器。bind函数接受一个可调用对象,生成一个新的可调用对象来适配原对象。

2023-04-12 15:54:10 118

原创 谈谈C++中std::random_device、std::mt199937和std::uniform_int_distribution

随机数引擎使用种子seed来作为熵源生成伪随机数,也有好几种随机数引擎配接器,它们使用另一个随机数引擎作为自己的熵源,通常用来改变原来引擎的频谱特性。人是无法自行判断一组数据的随机性的,只能通过一些检验来判定一列数据是否由某种分布组成。某种意义上,只要通过了检验就可以被认为是随机的。std::mt19937是伪随机数产生器,用于产生高性能的随机数,返回值是unsigned int。伪随机就是由算法生成的随机数,真随机就是真正随机的数。用于生成随机数,定义在头文件中。随机生成一个整数,均匀分布。

2023-04-12 15:33:52 1052

原创 谈谈socket的使用

getsockname获取sockfd对应的本端socket地址,并将其存储于address参数指定的内存中,该socket地址的长度则存储于address_len参数指向的变量中。name参数指定目标主机的主机名,addr参数指定目标主机的IP地址,len参数指定addr所指IP地址的长度,type参数指定addr所指IP地址的类型,其合法取值包括AF_INET(用于IPv4地址)和AF_INET6(用于IPv6地址)。分别代表被绑定的是受保护的地址,仅超级用户能够访问和被绑定的地址在使用中。

2023-04-12 10:39:18 324

原创 谈谈socket地址API

inet_pton函数将用字符串表示的IP地址src(用点分十进制字符串表示的IPv4地址或用十六进制字符串表示的IPv6地址)转换成用网络字节序整数表示的IP地址,并把转换结果存储于dst指向的内存中。所有专用socket地址(以及sockaddr_storage)类型的变量在实际使用时都需要转化为通用socket地址类型sockaddr(强制转换即可),因为所有socket编程接口使用的地址参数的类型都是sockaddr。因此,大端字节序又称为网络字节序。但是不同的协议族的地址值具有不同的含义和长度。

2023-04-10 16:46:59 55

原创 谈谈C++中条件变量condition_variable

条件变量std::condition_variable定义在头文件#include<condition_variable>中。条件变量用于阻塞一个或多个线程,直到某个线程修改线程间的共享变量,并通过condition_variable通知其余阻塞线程,从而使已阻塞线程可以继续处理后续的操作。用于通知已阻塞线程,共享变量已改变。用于阻塞某一线程,直至该线程被唤醒。

2023-04-07 16:10:02 144

原创 谈谈C++中mutex,unique_lcok和lock_guard

mutex又称互斥量,C++11中与mutex相关的类(包括锁类型)和函数都声明在#include头文件中。mutex提供了独占所有权的特性,即不支持递归地对std::mutex对象上锁。

2023-04-07 15:23:07 137

原创 谈谈C++中关键字decltype

auto,用于通过一个表达式在编译时确定待定义的变量类型,auto所修饰的变量必须被初始化,编译器需要通过初始化来确定auto所代表的类型,及必须要定义变量。若仅希望得到类型,而不需要定义变量时,可以使用decltype关键字,用来在编译时推导出一个表达式的类型。

2023-04-07 14:27:11 37

原创 谈谈C++中Lambda表达式

Lambda表达式是在调用或作为函数参数传递的位置处定义匿名函数对象的便捷方法。通常,Lambda表达式用于封装传递给算法或异步方法的几行代码。捕获列表mutable throw() -> 返回类型 {函数体}捕获列表。Lambda函数可以通过捕获列表访问一些上下文的数据。参数列表。和普通函数的参数列表一致,如果不需要参数传递,可以把()一起省略。可变规格。默认情况下,Lambda函数总是一个const函数,mutable修饰符可以取消其常量性。

2023-04-07 14:17:17 60

原创 《Effective C++》笔记 条款41-条款55

当我们编写一个class template,而它所提供之“于此template相关的”函数支持“所有参数之隐式类型转换”时,请为那些函数定义为“class template内部的friend函数”。

2023-04-06 15:39:17 251

原创 《Effective C++》笔记 条款31-条款40

non-virtual函数是静态绑定的。由于pB被声明为一个pointer-to-B,通过pB调用的non-virtual函数永远是B所定义的版本,即使pB指向一个类型为“B派生之class”的对象。virtual函数是动态绑定的,不管是通过pB还是PD调用,都会导致调用派生类的PD所指向的函数。对象的静态类型,就是它在程序中被声明时所采用的类型。绝对不要重新定义一个继承而来的缺省参数值,因为缺省参数值都是静态绑定,而virtual函数-你唯一应该覆写的东西-却是动态绑定。

2023-04-06 09:58:50 140

原创 谈谈C++中关键字protected

保护成员的可访问范围比私有成员大,比公有成员小。能够访问私有成员的地方都能访问保护成员。

2023-04-03 15:37:59 54

原创 谈谈C++中函数abort()和exit()函数和关键字noexcept

如果声明了noexcept(true)则返回true,如果声明了noexcept(false)则返回false。运行时开销指的是编译器需要为代码生成一些额外的代码来包裹原始代码,当出现异常时可以抛出一些相关的堆栈错误信息、这里面包含错误位置、错误原因、调用顺序和层级路径等信息。当使用noexcept声明一个函数不会抛出异常时,编译器就不会去生成这些额外的代码,直接减少了生成文件的大小,间接优化了程序的运行效率。参数为0一般表示程序成功终止。(2)noexcept(true) 表示函数不会抛出异常。

2023-04-03 15:13:19 771

原创 《Effective C++》笔记 条款21-条款30

尽可能延后定义式的出现。这样做可以增加程序的清晰度并改善程序效率。

2023-04-03 14:10:30 138

原创 谈谈C++中智能指针

weak_ptr是一种不控制对象生命周期的智能指针,它指向一个shared_ptr管理的对象。进行该对象的内存管理的是那个强引用的shared_ptr,weak_ptr只是提供了对管理对象的一个访问手段。shared_ptr存在内存泄漏的问题:当两个对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。weak_ptr只可以从一个shared_ptr或者另一个weak_ptr对象构造,它的构造和析构不会引起引用计数的减少或增加。如已经释放,返回Ture;

2023-04-03 11:12:58 42

原创 《Effective C++》笔记 条款11-条款20

此时,使用指针,就不会有这种问题。当你编写一个copying函数,确保(1)复制所有的local成员变量,(2)调用所有base classes内的适当的copying函数。如果发现copy构造函数和copy assignment操作符有相近的代码,可以建立一个新的成员函数给两者调用,一般被命名为init。上述代码看起来是合理的,但是如果this和rhs是同一个对象,那么它们的属性pb都会被删除,导致rhs.pb指向一个被删除的对象。复制的时候,要么复制底部资源,要么转移底部资源的拥有权。

2023-04-03 10:31:41 282

原创 谈谈C++中四种cast类型转换

C++中有四种显式类型转换,分别为static_cast, dynamic_cast, const_cast, reinterpret_cast。

2023-03-31 16:04:10 98

原创 TCP/IP协议族总结

TCP/IP协议总结

2023-03-30 16:22:44 53

原创 谈谈C++中关键字explicit

关键字explicit

2023-03-30 15:36:12 41

原创 《Effective C++》笔记 条款01-条款10

阅读《effective C++》的笔记

2023-03-30 15:07:16 150

原创 谈谈C++中关键字extern

由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加入到编译后的代码中额,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包含函数名。头文件放的是对函数、参数、变量的说明,只放声明,不放定义。如果放定义,头文件被多次引用就会造成多次定义的错误。如果我想访问其他文件的变量或者函数,直接#include其他的头文件就可以嘛,为啥要用extern关键字?由于函数的声明和定义是很容易区分的,即有没有函数体。所以extern是可省略的。

2023-03-29 10:14:27 73

原创 谈谈C++中关键字static

c++关键字static

2023-03-29 08:46:03 28

原创 使用Python自动化帮你开始每一天的工作

使用Python自动化帮你开始每一天的工作,开机自启动很多网页和程序。 selenium和win32api入门使用

2022-10-26 08:56:34 634

原创 Python中sqlalchemy+click

Python中sqlalchemy+click,用cmd命令行实现对数据库的操作

2022-08-25 11:09:04 190

空空如也

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

TA关注的人

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