学习笔记
文章平均质量分 62
黑化草莓熊
交叉学科研究生,机械、仪器、化工、医疗、软件开发,日常分享
展开
-
人类简史,从动物到上帝
农业革命:赫拉利在本章节中的主要观点是:“尽管农业革命促进了智人人口数和小麦、牛等共同进化物种的数量的增长,但农业革命令智人及其驯化、豢养动物的生活方式及饮食变得更为单调无趣,使得绝大多数智人及豢养动物的生活质量,与智人狩猎采集社会时代相比,反而出现了恶化”。人类的融合统一:这一章节的主题则是智人在历史进程中,在政治与经济上逐渐走向融合与统一。科学革命:赫拉利认为起源于欧洲的科学革命,基于当时的精英们一种创新的观点:愿意承认人类的无知,并希望通过以观察和数学为中心的科学研究,补救他们的无知、获得新的能力。原创 2023-02-19 19:34:50 · 372 阅读 · 1 评论 -
小谈解决方案
在具体细节中可能包括潜在需求的挖掘,市场竞争,客户需求的提取与引导,力争将客户已知需求有效提取,未知需求高效挖掘,将模糊的、抽象的需求变得具象化,可执行。根据客户需求或行业需求,设计解决方案及创新应用,在保证需求精准定位的前提下,确保方案的竞争力,打造行业创新项目的成功案例,理应以数据做背书,寻求定制化、科学化的可执行方案。每一份好的答卷,即是好的宣传,品牌效应在当前数字化的商业模式中已凸显出重要作用,让好的方案由点到面,继而将好的产品解决方案在各行业商业化落地,正向反馈层层递进。原创 2023-02-14 11:52:41 · 255 阅读 · 0 评论 -
【笔试必会】ACM输入输出练习(C++)一套搞定
每组数据一行,每行的第一个整数为整数的个数n(1原创 2022-08-30 23:59:02 · 540 阅读 · 0 评论 -
HTTP1.0,1.1,2.0
1996年5月,HTTP/1.0 版本发布,为了提高系统的效率,HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。也就是说,老板可以同时下达多个命令,员工也可以收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。目前,主流的HTTP协议还是HTTP/1.1 和 HTTP/2。...原创 2022-08-10 01:00:26 · 324 阅读 · 0 评论 -
C++ STL 常见容器查找、删除和增添的时间复杂度
上述四种容器采用哈希表实现,不同操作的时间复杂度为插入O(1),最坏情况O(N)上述四种容器采用红黑树实现,红黑树是平衡二叉树的一种。容器的时间复杂度取决于其底层实现方式。查看O(1),最坏情况O(N)删除O(1),最坏情况O(N)插入O(logN)查看O(logN)删除O(logN)...原创 2022-07-17 22:24:28 · 5021 阅读 · 0 评论 -
C++ nullptr 和 NULL用哪个初始化指针好?
传统意义上来说,c++把NULL、0视为同一种东西,有些编译器将NULL定义为((void*)0),有些将其定义为0.如果NULL被定义为0,func(NULL)会去调用voidfunc(int),这是不合理的。c++不允许直接将void*隐式的转化为其他类型,但是如果NULL被定义为((void*)0),nullptr的类型为nullptr_t,能够隐式的转换为任何指针。所以引入nullptr,专门用来区分0、NULL。当编译char*p=NULL;NULL只好被定义为0。...原创 2022-07-15 15:10:53 · 220 阅读 · 0 评论 -
C++ static_cast、reinterpret_cast、const_cast 和 dynamic_cast 强制类型转换运算符
C++将类型名作为强制类型转换运算符。C++引入了四种功能不同的强制类型转换运算符以进行强制类型转换static_cast、reinterpret_cast、const_cast和dynamic_cast。强制类型转换是有一定风险的,有的转换并不一定安全,如把整型数值转换成指针,把基类指针转换成派生类指针,把一种函数指针转换成另一种函数指针,把常量指针转换成非常量指针等。C++引入新的强制类型转换机制,主要是为了克服C语言强制类型转换的以下三个缺点。...原创 2022-07-15 10:22:49 · 217 阅读 · 0 评论 -
C++ template 模板详解
在这里,type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。其中template和class是关键字,class可以用typename 关键字代替,在这里typename 和class没区别,括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空。一但声明了模板函数就可以用模板函数的形参名声明类中的成员变量和成员函数,即可以在该函数中使用内置类型的地方都可以使用模板形参名。模板形参需要调用该模板函数时提供的模板实参来初始化模板形参...原创 2022-07-14 12:34:05 · 2731 阅读 · 0 评论 -
return exit(0) exit(1) exit(-1) 区别
exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;exit(-1):非正常运行导致退出程序,与1类似;return():返回函数,若在主函数中,则会退出函数并返回一值。详细说: 1. return返回函数值,是关键字; exit 是一个函数。 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 3. return是函数的退出(返回);exit是进程的退出。 4. return是C语言提供的,exit是操作系统原创 2022-07-14 11:11:24 · 561 阅读 · 0 评论 -
深刻理解 C++多态
多态的定义简单来说就是使一条语句有多种状态。实现方式多态的实现方式分为三块:重载、重写、重定义。下面我们来谈一谈他们各自的实现方式和实现原理。实现方式重载是在同一作用域内(不管是模块内还是类内,只要是在同一作用域内),具有相同函数名,不同的形参个数或者形参类型。返回值可以相同也可以不同(在函数名、形参个数、形参类型都相同而返回值类型不同的情况下无法构成重载,编译器报错。这个道理很简单,在函数调用的时候是不看返回值类型的)。实现原理重载是一种静态多态,即在编译的时候确定的。C++实现重载的方式是跟编译器原创 2022-07-14 00:18:47 · 160 阅读 · 0 评论 -
线程局部 thread_local[C++]
thread_local变量是C++ 11新引入的一种存储类型。它会影响变量的存储周期(Storage duration),C++中有4种存储周期:有且只有thread_local关键字修饰的变量具有线程周期(thread duration),这些变量(或者说对象)在线程开始的时候被生成(allocated),在线程结束的时候被销毁(deallocated)。并且每 一个线程都拥有一个独立的变量实例(Each thread has its own instance of the object)。 可以和 与原创 2022-07-13 18:43:29 · 1400 阅读 · 0 评论 -
&1的用法
其实这是判断n的奇偶性的小方法当n是偶数时候,二进制的末尾一定是0,那么&1的结果一定是false,同理当n是奇数时候,二进制末位一定是1,那么结果一定是true原创 2022-07-02 10:43:48 · 2128 阅读 · 0 评论 -
int, long long, double 等数据类型的长度及范围整理
(1)整数类型:byte、short、int、long(2)小数类型:float、double(3)字符类型:char(4)布尔类型:boolean先附上一个比较直观的表,长度表示字节:byte: 字节 bit: 位1. 短整型short: 所占内存大小:2byte=16bit; 所能表示范围:-32768~32767;(即-2^15~2^15-1)2. 整型int: 所占内存大小:4byte=32bit; 所能表示范围:-21...原创 2022-05-18 10:47:39 · 35846 阅读 · 0 评论 -
Redis数据持久化—RDB持久化与AOF持久化
大家都知道Redis数据库之所以快,很大的原因是因为它运行在服务器的内存中,但一旦服务器进程退出,服务器中的数据库状态也会消失,为了解决这个问题,Redis提供了两种数据持久化的机制:这俩本质上都是将数据库状态保存到磁盘里,然后下次取出来加载到内存中还原数据库,但是实现角度有所不同RDB持久化RDB持久化可以手动执行,也可以配置定期自动执行,该功能可以将某个时间点上的数据库的状态保存到一个RDB文件中(说白了就是数据库中一个个的键值对),只要导入RDB文件,就能还原到之前时刻数据库的状态RDB.原创 2022-04-15 19:31:02 · 624 阅读 · 0 评论 -
FASTDFS的STORAGE SERVER
STORAGE SERVER的状态通常有七种:# FDFS_STORAGE_STATUS:INIT :初始化,尚未得到同步已有数据的源服务器# FDFS_STORAGE_STATUS:WAIT_SYNC :等待同步,已得到同步已有数据的源服务器# FDFS_STORAGE_STATUS:SYNCING :同步中# FDFS_STORAGE_STATUS:DELETED :已删除,该服务器从本组中摘除# FDFS_STORAGE_STATUS:OF...原创 2022-04-05 22:50:09 · 289 阅读 · 0 评论 -
sscanf和scanf符号输入用法详解
搞懂sscanf和scanf的符号输入用法,format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}原创 2022-03-31 20:39:23 · 1234 阅读 · 0 评论 -
printf,sprintf,fprintf的区别
在写代码过程中总会遇到printf和sprintf,既然这两个都遇到了,那么不妨再加一个fprintf吧.他们三个都是将格式化字符串输出,区别就是他们输出的目标不一样.printf(1)printf,是把格式化字符串输出到标准输出(一般是屏幕).printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。函数原型 int printf ( const char * format, ...转载 2022-03-29 19:36:32 · 267 阅读 · 0 评论 -
Linux代码文件中的中文乱码
windows平台下编辑的内容传到linux平台出现中文乱码的解决办法原创 2022-03-29 17:10:37 · 2133 阅读 · 2 评论 -
error while loading shared libraries ,Linux中动态库无法使用的问题
error while loading shared libraries: xxx.so.0:cannot open shared object file: No such file or directory情况一:安装动态库的时候,我们可以指定路径,如果使用了 --prefix ,就可能会出现这种问题,例如:要执行配置./configure, 检测安装环境, 生成makefile.执行./configure的时候也可以指定路径, ./configure --prefix=/usr/..原创 2022-03-28 18:40:18 · 3705 阅读 · 0 评论 -
zip: stdin: unexpected end of file tar: 归档文件中异常的 EOF tar: 归档文件中异常的 EOF tar: Error is not recoverable
问题出现原因:我在WIN电脑里的文件网虚拟机传输的时候发现解压失败,文件传输不完整zip:stdin: unexpected end of filetar: 归档文件中异常的 EOFtar: 归档文件中异常的 EOFtar: Error is not recoverable: exiting now解决方法:将文件直接拖拽至终端可以看到文件真实位置使用mobaxterm传输文件,或者文件采用更高效的压缩方式,最好的是直接在虚拟机系统的浏览器里直接下载相关文件...原创 2022-03-28 16:22:38 · 2869 阅读 · 0 评论 -
pthread_cond_signal与pthread_cond_broadcast的使用区别
弄清楚pthread_cond_signal与pthread_cond_broadcast的区别原创 2022-03-27 17:14:18 · 1179 阅读 · 0 评论 -
Ubuntu Linux环境下VSCode无法键入中文
解决Ubuntu Linux环境下VSCode无法输入中文原创 2022-03-26 17:01:45 · 3730 阅读 · 0 评论 -
Ubuntu上配置 VS Code 编译和运行C/C++
要想在VS Code上编辑代码后像IDE一样直接运行,需要做一些额外的配置。以下介绍在Ubuntu 20.04 LTS上如何配置Visual Studio Code,并使其能够编译与运行C和C++代码原创 2022-03-25 18:34:16 · 1523 阅读 · 0 评论 -
module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘
这是由于你没有安装 opencv-contrib-python 库导致的,解决方法:先卸载你的opencvpip uninstall opencv-python / pip3 uninstall opencv用sift和suft特征提取的时候,xfeature2d在opencv-contrib库中再装上opencv-contrib-pythonpip install opencv-contrib-python==3.4.1.15(制定版本,不然还是不能用)然后调试成...原创 2022-03-24 20:13:59 · 6416 阅读 · 0 评论 -
c++优先队列(priority_queue)用法详解
既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的和队列基本操作相同:top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容定义:p转载 2022-03-23 17:01:14 · 9740 阅读 · 0 评论 -
阻塞非阻塞与同步异步的区别
“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结...转载 2022-03-22 16:56:01 · 71 阅读 · 0 评论 -
C输入输出与文件读写
C输入 & 输出当我们提到输入时,这意味着要向程序填充一些数据。输入可以是以文件的形式或从命令行中进行。C 语言提供了一系列内置的函数来读取给定的输入,并根据需要填充到程序中。当我们提到输出时,这意味着要在屏幕上、打印机上或任意文件中显示一些数据。C 语言提供了一系列内置的函数来输出数据到计算机屏幕上和保存数据到文本文件或二进制文件中。标准文件C 语言把所有的设备都当作文件。所以设备(比如显示器)被处理的方式与文件相同。以下三个文件会在程序执行时自动打开,以便访问键盘和屏幕。标.转载 2022-03-21 13:36:28 · 1389 阅读 · 0 评论 -
如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目标主机实现通信?
在跨网段通信过程中有以下过程:1、判断地址是否同一网段2、查询目的IP地址的mac(发送arp请求)此外需注意点:1、ARP请求以广播发送、以单播回应2、路由器隔离广播。每一个网段都是独立的广播域3、跨越网段通信需要使用网关的mac地址不同网段的主机通信时,主机会封装网关(通常是路由器)的mac地址,然后主机将数据发送给路由器,后续路由进行路由转发,通过arp解析目标地址的mac地址,然后将数据包送达目的地。具体过程分析如下:如上图,主机A、B通过路由器连接,属于两个不同的转载 2022-03-19 20:25:53 · 2997 阅读 · 0 评论 -
网络名词术语解析(路由,路由器,交换机等)
网络编程中的一些名词解释原创 2022-03-19 15:24:40 · 1846 阅读 · 0 评论 -
C++ String 中的substr用法
搞懂substr()函数的用法原创 2022-03-18 11:53:13 · 14732 阅读 · 2 评论 -
生产者消费者模型的C实现(条件变量+互斥锁,信号量)(Linux Ubuntu)
生产者的工作是制造数据,只有缓冲区没满时,生产者才能把消息放入到缓冲区,否则必须等待; 同时,只有缓冲区不空时,消费者才能从中取出消息,一次消费一段数据(即将其从缓存中移出),否则必须等待。由于缓冲区是临界资源,它只允许一个生产者放入消息,或者一个消费者从中取出消息,同时只允许一个生产者进行制造,多个生产者不能同时制造,也只允许一个消费之进行消费,多个消费者不能同时进行消费条件变量+互斥锁实现生产者消费者模型条件本身不是锁!但它也可以造成线程阻塞。通常与互斥锁配合使用。给多线程提...原创 2022-03-16 16:30:05 · 1352 阅读 · 0 评论 -
rand()和srand((unsigned)time(NULL))详解
一文搞定C/C++随机数函数rand()和srand()!!!原创 2022-03-15 20:59:46 · 969 阅读 · 0 评论 -
Linux sleep和 usleep睡眠函数的使用
sleep()是以秒为单位的sleep(100);即程序在此停留100susleep()是以微秒级别为单位的 usleep(100);即程序在此停留100us#include <time.h>#include <stdio.h>#include <iostream>#include <unistd.h>using namespace std;int main(int argc, char *argv[...原创 2022-03-15 19:29:54 · 5319 阅读 · 0 评论 -
计算机网络(图解前三层)
让读者能抓住网络传输 物理层、数据链路层、网络层这前三层协议的真正核心思想转载 2022-03-15 16:46:45 · 463 阅读 · 0 评论 -
并发和并行 面试必问基础题 轻松应对
并发(concurrency)和并行(parallellism):并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 并行是在多台处理器上同时处理多个任务。如 hadoop 分布式集群,并发是在一台处理器上“同时”处理多个任务。所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能;并行是利用多处理器同时处理多项任务,下面具体说说:并行(parallel):指在同一时刻,有多条指令在多原创 2022-03-15 11:12:31 · 269 阅读 · 0 评论 -
break、continue、goto、return和exit在循环结构中的区别
循环结构中break、continue、goto、return和exit的区别原创 2022-03-14 19:46:39 · 480 阅读 · 0 评论 -
Linux PCB(进程控制块) 详解
进程在操作系统中都有一个户口,用于表示这个进程。这个户口操作系统被称为PCB(进程控制块),在linux中具体实现是 task_struct数据结构,/usr/src/linux-headers-4.4.0-96/include/linux/sched.h文件中可以查看struct task_struct 结构体定义(系统版本可能不同linux-headers-4.4.0-96会有一定差别)。其内部成员有很多,我们重点掌握以下部分即可:进程id。系统中每个进程有唯一的id,在C语言中用p...原创 2022-03-14 14:37:02 · 9625 阅读 · 1 评论 -
sizeof()和strlen()的区别和使用方法
sizeof和strlen的区别:sizeof操作符的结果类型为size_t(The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t.)(它在头文件用typedfe定义为unsigned int类型),计算的是分配空间的实际字节原创 2022-03-13 10:31:23 · 128 阅读 · 0 评论 -
linux下gdb调试方法与技巧整理
linux下gdb调试方法与技巧整理,GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c/c++程序员,gdb是必不可少的工具原创 2022-03-12 19:33:49 · 483 阅读 · 0 评论 -
安装Ubuntu Linux系统时硬盘分区
无论是安装Windows还是Linux操作系统,硬盘分区都是整个系统安装过程中最为棘手的环节,网上的一些Ubuntu Linux安装教程一般都是自动分区,给初学者带来很大的不便,下面我就根据多年来在装系统的经验谈谈安装Ubuntu Linux系统时硬盘分区最合理的方法。在讲硬盘分区之前,我先来普及一下硬盘的相关分类,硬盘一般分为IDE硬盘、SCSI硬盘和SATA硬盘三种,在Linux系统中,IDE接口的硬盘被称为hd,SCSI和SATA接口的硬盘则被称为sd,其中IDE硬盘基本上已经淘汰,现在市面上最常转载 2022-03-12 16:44:24 · 3981 阅读 · 0 评论