自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

BadSheepC

尽吾志也而不能至者,可以无悔矣,其孰能讥之乎?此余之所得也。

  • 博客(97)
  • 资源 (2)
  • 收藏
  • 关注

原创 人类简史,从动物到上帝

农业革命:赫拉利在本章节中的主要观点是:“尽管农业革命促进了智人人口数和小麦、牛等共同进化物种的数量的增长,但农业革命令智人及其驯化、豢养动物的生活方式及饮食变得更为单调无趣,使得绝大多数智人及豢养动物的生活质量,与智人狩猎采集社会时代相比,反而出现了恶化”。人类的融合统一:这一章节的主题则是智人在历史进程中,在政治与经济上逐渐走向融合与统一。科学革命:赫拉利认为起源于欧洲的科学革命,基于当时的精英们一种创新的观点:愿意承认人类的无知,并希望通过以观察和数学为中心的科学研究,补救他们的无知、获得新的能力。

2023-02-19 19:34:50 627

原创 小谈解决方案

在具体细节中可能包括潜在需求的挖掘,市场竞争,客户需求的提取与引导,力争将客户已知需求有效提取,未知需求高效挖掘,将模糊的、抽象的需求变得具象化,可执行。根据客户需求或行业需求,设计解决方案及创新应用,在保证需求精准定位的前提下,确保方案的竞争力,打造行业创新项目的成功案例,理应以数据做背书,寻求定制化、科学化的可执行方案。每一份好的答卷,即是好的宣传,品牌效应在当前数字化的商业模式中已凸显出重要作用,让好的方案由点到面,继而将好的产品解决方案在各行业商业化落地,正向反馈层层递进。

2023-02-14 11:52:41 405

原创 【笔试必会】ACM输入输出练习(C++)一套搞定

每组数据一行,每行的第一个整数为整数的个数n(1

2022-08-30 23:59:02 722

原创 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 426

原创 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 6710

原创 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 318

原创 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 285

原创 C++ template 模板详解

在这里,type 是函数所使用的数据类型的占位符名称。这个名称可以在函数定义中使用。其中template和class是关键字,class可以用typename 关键字代替,在这里typename 和class没区别,括号中的参数叫模板形参,模板形参和函数形参很相像,模板形参不能为空。一但声明了模板函数就可以用模板函数的形参名声明类中的成员变量和成员函数,即可以在该函数中使用内置类型的地方都可以使用模板形参名。模板形参需要调用该模板函数时提供的模板实参来初始化模板形参...

2022-07-14 12:34:05 3021

原创 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 851

原创 深刻理解 C++多态

多态的定义简单来说就是使一条语句有多种状态。实现方式多态的实现方式分为三块:重载、重写、重定义。下面我们来谈一谈他们各自的实现方式和实现原理。实现方式重载是在同一作用域内(不管是模块内还是类内,只要是在同一作用域内),具有相同函数名,不同的形参个数或者形参类型。返回值可以相同也可以不同(在函数名、形参个数、形参类型都相同而返回值类型不同的情况下无法构成重载,编译器报错。这个道理很简单,在函数调用的时候是不看返回值类型的)。实现原理重载是一种静态多态,即在编译的时候确定的。C++实现重载的方式是跟编译器

2022-07-14 00:18:47 220

原创 线程局部 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 1478

原创 力扣 2.两数相加 989. 数组形式的整数加法 通用思想模板

整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。例如,对于 num = 1321 ,数组形式是 [1,3,2,1] 。给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式 。 思路: 没走完就填当前数,走完填0, 和 = 当前值A+当前值B+进位 迭代:进位 = 和/10 ;返回值当前位=和%10 2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个

2022-07-12 14:07:41 253

原创 力扣54 59 2326 885 螺旋矩阵[中等](优雅解法)

一文搞定螺旋矩阵类问题

2022-07-11 22:05:19 497

原创 力扣34在排序数组中查找元素的第一个和最后一个位置(二分法哈希表法)

给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 思路:数组时有序的,所以可以使用二分法,在区间[i,j]中找到target第一次出现的位置(左边界),和最后一次出现的位置(右边界) 左边界:由于是有序数组,从

2022-07-05 17:33:22 419

原创 力扣295.数据流的中位数[困难]

中位数是有序列表中间的数。如果列表长度是偶数,中位数则是中间两个数的平均值。例如,[2,3,4] 的中位数是 3[2,3] 的中位数是 (2 + 3) / 2 = 2.5设计一个支持以下两种操作的数据结构: 解法一:堆实现(B大顶堆和S小顶堆分别存放小数、大数) 分析:使用优先队列保持有序结构,设元素总数为 N = m + n ,其中 m 和 n 分别为 S和 B 中的元素个数。解法二:有序队列+双指针 我们把有序集合看作自动排序的数组,使用双指针指向有序集合中的中位

2022-07-02 12:04:35 412

原创 &1的用法

其实这是判断n的奇偶性的小方法当n是偶数时候,二进制的末尾一定是0,那么&1的结果一定是false,同理当n是奇数时候,二进制末位一定是1,那么结果一定是true

2022-07-02 10:43:48 2405

原创 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 47062

原创 剑指 Offer 34. 二叉树中和为某一值的路径||力扣113. 路径总和 II

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。分析: 要找从根节点到叶子节点的数值和等于目标值,难免要遍历所有节点,使用深度优先遍历(DFS),从头遍历到为,只要达到目标值就,存储为数组,遍历结束,即可返回结果程序中使用了sum累减直至等于0区判断,也可以使用累加,达到目标值class Solution {public: vecto...

2022-05-16 00:01:50 273

原创 剑指 Offer 32 . 从上到下打印二叉树

(1) 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。分析:层序遍历class Solution {public: vector<int> levelOrder(TreeNode* root) { vector<int> res; if(root==nullptr) return res; queue<TreeNode*> que; que.push(root

2022-05-15 22:55:04 320

原创 剑指 Offer 28. 对称的二叉树 ||力扣101. 对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。分析:这个树是否为轴对称的,只需要检验,这棵树的左右子树是否是相同的即可class Solution {public: bool isSymmetric(TreeNode* root) { if(root==nullptr)return true; return recur(root->left,root->right); } bool recur(TreeNode* .

2022-05-15 15:33:27 248

原创 剑指 Offer 27. 二叉树的镜像||力扣226. 翻转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。分析:该题比较简单,在该节点及左右节点存在的情况下只需要交换当前节点的左右节点,循环迭代即可方法一:递归法根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像。递归解析:终止条件:当节点 root 为空时(即越过叶节点),则返回 null ;递推工作:...

2022-05-15 14:32:27 333

原创 剑指 Offer 26. 树的子结构

输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。方法一(DFS深度优先前序遍历,迭代)分析:既然是要找到A树中是否有B树这样子树,即找到A树中的子结构nA,判断其和B树相同,可以分为两个步骤:(1)遍历A树找到一个节点nA,其节点和树B的头节点相同,如果找不到nA,就说明,B树不是A树的子结构(2)(递归)将nA与B树进行节点遍历,检查所有节点是否相同具体做法:step 1:...

2022-05-15 13:50:04 163

原创 剑指 Offer 13. 机器人的运动范围

地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+8=19。请问该机器人能够到达多少个格子?示例 1:输入:m = 2, n = 3, k = 1输出:3示例 2:输入:m = 3

2022-05-14 16:29:29 173

原创 剑指 Offer 12|| 力扣79. 单词搜索||矩阵中的路径

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。提示:m == board.lengthn = board[i].length1 <= m, n <= 61 <= word.length <= 15board 和 word

2022-05-14 14:49:04 215

原创 Redis数据持久化—RDB持久化与AOF持久化

大家都知道Redis数据库之所以快,很大的原因是因为它运行在服务器的内存中,但一旦服务器进程退出,服务器中的数据库状态也会消失,为了解决这个问题,Redis提供了两种数据持久化的机制:这俩本质上都是将数据库状态保存到磁盘里,然后下次取出来加载到内存中还原数据库,但是实现角度有所不同RDB持久化RDB持久化可以手动执行,也可以配置定期自动执行,该功能可以将某个时间点上的数据库的状态保存到一个RDB文件中(说白了就是数据库中一个个的键值对),只要导入RDB文件,就能还原到之前时刻数据库的状态RDB.

2022-04-15 19:31:02 687

原创 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 348

原创 sscanf和scanf符号输入用法详解

搞懂sscanf和scanf的符号输入用法,format可以是一个或多个 {%[*] [width] [{h | l | I64 | L}]type | ' ' | '\t' | '\n' | 非%符号}

2022-03-31 20:39:23 1399

转载 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 339

原创 Linux代码文件中的中文乱码

windows平台下编辑的内容传到linux平台出现中文乱码的解决办法

2022-03-29 17:10:37 2333 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 3886

原创 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 3187

原创 pthread_cond_signal与pthread_cond_broadcast的使用区别

弄清楚pthread_cond_signal与pthread_cond_broadcast的区别

2022-03-27 17:14:18 1459

原创 Ubuntu Linux环境下VSCode无法键入中文

解决Ubuntu Linux环境下VSCode无法输入中文

2022-03-26 17:01:45 4076

原创 Ubuntu上配置 VS Code 编译和运行C/C++

要想在VS Code上编辑代码后像IDE一样直接运行,需要做一些额外的配置。以下介绍在Ubuntu 20.04 LTS上如何配置Visual Studio Code,并使其能够编译与运行C和C++代码

2022-03-25 18:34:16 1625

原创 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 6517

原创 剑指 Offer 60. n 个骰子的点数

把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。

2022-03-24 14:34:07 179

原创 剑指 Offer 49. 丑数 || 力扣 264. 丑数 II

思路:做题之前,要知道什么是丑数,按照百度百科的说法是,1和2,3,5他们的倍数x属于1到无穷大,他们的集合就是{1,5*x,2*x,3*x},有一点丑数必须由一个丑数和另一个因子相乘得到,如7,14不是丑数丑数的性质: 丑数只包含因子 2, 3, 5,因此有 “丑数 == 某较小丑数 × 某因子” (例如:10 =5×2)。得出这么些丑数不是难点,难点是:精准的去重(举例x =3 ,5*3=15,当x=5,3*5 =15;随着遍历会得到两个15),取出第n个大的丑数方法一:最小堆...

2022-03-23 20:27:33 1079

转载 c++优先队列(priority_queue)用法详解

既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的和队列基本操作相同:top 访问队头元素empty 队列是否为空size 返回队列内元素个数push 插入元素到队尾 (并排序)emplace 原地构造一个元素并插入队列pop 弹出队头元素swap 交换内容定义:p

2022-03-23 17:01:14 10088

原创 剑指 Offer 48. 最长不含重复字符的子字符串 || 力扣3. 无重复字符的最长子串

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。方法一:动态规划+哈希表//使用动态规划+哈希表//状态定义:dp[j]为以s[j]字符结尾的最长字符字串的长度,dp[j-1]是以s[j-1]为结尾的字符字串的长度//转移方程:i是满足s[i]=s[j]的,且最靠近j的角标,现在就需要比较j和i之间的差值,来判断dp[j-1]所囊括的子字符串是否将s[i]包含在内// if dp[j-1]<j-i;说明以s[j]字符结尾的最长字符字串的长...

2022-03-23 15:32:48 961

转载 阻塞非阻塞与同步异步的区别

“阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在发出一个*调用*时,在没有得到结果之前,该*调用*就不返回。但是一旦调用返回,就得到返回值了。换句话说,就是由*调用者*主动等待这个*调用*的结果。异步则是相反,*调用*在发出之后,这个调用就直接返回了,所以没有返回结...

2022-03-22 16:56:01 113

mythtype嵌入word之中

科研人必备

2022-01-17

计算机应用软件__窗口置顶工具

计算机应用软件窗口置顶工具

2022-03-12

空空如也

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

TA关注的人

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