- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 C++输出编译器名称和版本以及编译器位数、C/C++常见编译器
(GNU Compiler Collection):GCC是一个广泛使用的编译器套件,支持多种编程语言,包括C、C++、Objective-C等。:Open Watcom是一个开源的C/C++编译器和工具集,支持多种平台和操作系统,包括DOS、Windows和Linux。它适用于嵌入式系统和资源受限的环境。:IBM公司开发的C/C++编译器,主要用于IBM的AIX和IBM Power Systems平台。:一个基于GCC的Windows平台上的C/C++编译器套件,提供了MinGW和MSYS的支持。
2023-07-10 21:23:53 1097
原创 深入理解connect()、listen()、accept()、backlog参数的含义
这个图将三个函数的关系描述的很清楚各种资料都说listen()是监听客户端连接,等待连接请求,,我一直蒙在鼓里,一直想不透,我感觉这样说就有误导性!下面是我的理解:backlog的理解:他根本就不是监听,说监听会让我以为它会阻塞在那监听,但是它阻塞个屁呀,一点都没阻塞直接就执行过去了,它的第二个参数backlog就是告诉内核完成队列的长度(完成三次握手的队列的长度)然后内核和connect()完成三次握手,在第一次握手的时候放入半连接的队列里,完成三次握手后从半连接队列里放到完成队列里, 之后ac
2021-01-11 10:15:52 492
原创 I/O多路复用---select/poll/epoll
I/O多路复用(I/O multiplexing)multiplexing一词其实多用于通信领域,为了充分利用通信线路,希望在一个信道中传输多路信号,要想在一个信道中传输多路信号就需要把这多路信号结合为一路,将多路信号组合成一个信号的设备被称为Multiplexer(多路复用器),显然接收方接收到这一路组合后的信号后要恢复原先的多路信号,这个设备被称为Demultiplexer(多路分用器)。所谓I/O多路复用指的是这样一个过程:1)我们拿到了一堆文件描述符(不管是网络相关的、还是磁盘文件相关等等,
2021-01-05 20:31:08 162
原创 剑指 5.用两个栈实现队列
链接题目思路push操作:把数据正常插入到stack1中pop操作:是把stack1中的数据全部导入到stack2中以后再弹出stack2的头部,因此如果stack2不空就直接弹出stack2的栈顶元素否则就先把stack1的元素导入过来模拟一下就清楚了代码class Solution {public: void push(int node) { stack1.push(node); } int pop() { int ret
2021-01-05 15:37:55 74
原创 剑指 4.根据前序遍历和中序遍历重建二叉树
链接题目思路前序遍历第一个数肯定是根节点 root然后在中序遍历中找到根节点,根节点左侧就是左子树右侧就是右子树,记录下根节点在中序遍历中位置或长度。这样就能从前序遍历和中序遍历中分离出左子树的前、中序遍历===> root->left右子树的前、中序遍历===> root->right代码/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode
2021-01-05 15:05:24 77
原创 C/C++内存管理--栈区、堆区、数据区、代码区
非常nice的一篇文章!在计算机系统中,运行程序 A 将会在内存中开辟程序 A 的内存区域 1,运行程序 B 将会在内存中开辟程序 B 的内存区域 2,内存区域 1 与内存区域 2 之间逻辑分隔。在程序 A 开辟的内存区域 1 会被分为几个区域,这就是内存四区,内存四区分为栈区、堆区、数据区与代码区。栈区指的是存储一些临时变量的区域,临时变量包括了局部变量、返回值、参数、返回地址等,当这些变量超出了当前作用域时将会自动弹出。该栈的最大存储是有大小的,该值固定,超过该大小将会造成栈溢出。堆区
2021-01-04 21:22:41 354
原创 剑指 3.从尾到头打印链表
链接题目思路遍历一遍放到vector中,再反转一下即可代码class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> ArratList; ListNode *p = head; while (p) { ArratList.push_back(p->val);
2021-01-04 16:42:12 62
原创 剑指 2.替换空格
链接题目思路字符串有足够的空余内存先统计空格的个数替换后的长度 = 原长度 + 空格长度 * 2从尾部到头部开始移动源码class Solution {public: void replaceSpace(char *str,int length) { int spacenum = 0, len = strlen(str); for (int i = len - 1; i >= 0; i--) { if (str[i] ==
2021-01-04 15:46:46 66
原创 剑指 1.二维数组中的查找
题目链接题目思路暴力求解不说题目说每行每列都是递增的,先用左下角的数和target比较大于target的话,那么当前这一行这个数后面的数全部都大于target,所以直接去看上一行(row--)小于target的话,就比较当前行这个数后面的数(col++)也可以从右上角开始比较代码class Solution {public: bool Find(int target, vector<vector<int> > array) { in
2021-01-04 13:36:12 64
原创 计算机网络
数据传输过程封装解封装网络层协议ARP协议地址解析协议(Address Resolution Protocol),通过对方IP地址获取对方的MAC地址
2021-01-03 11:23:32 105 1
原创 LeetCode 206. 反转链表--多种解法
LeetCode 206. 反转链表使用虚拟头节点/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) {
2021-01-01 20:21:46 99
原创 LeetCode 707. 设计链表
LeetCode 707. 设计链表class MyLinkedList {public: struct ListNode { int val; ListNode *next; ListNode(int val) : val(val), next(nullptr) { } }; /** Initialize your data structure here. */ MyLinkedList() { __he
2021-01-01 15:33:45 62
原创 Latex报错 I can‘t find the format file `pdflatex.fmt‘!
总结一下我安装Latex及简单使用过程中遇到的错误安装过程安装比较简单,但是太慢,别人装一个小时就完事而我装了俩小时可以参考这篇文章Latex安装教程(安装教程挺多的)使用排版的时候大概是报这样的错…fmtutil [WARNING]: inifile pdflatex.ini for pdflatex/pdftex not found.fmtutil [INFO]: Disabled formats: 6fmtutil [INFO]: Not selected formats: 43
2020-11-20 09:25:14 9019 11
原创 史上最详细最简单最全WSL,win10安装windows的ubuntu子系统,Linux详细配置
一、打开linux子系统功能打开控制面板2. 勾选上适用于Linux的windows子系统,然后重启 二、下载Ubuntu打开微软商店搜索Linux下载 ubuntu400多M,下载完,直接启动, 这里装的是20.04启动进入这个界面,等待一会,然后让你输入一个用户名(创建用户, 假设为user),再输入俩次密码,用户创建成功修改root的密码sudo passwd root测试一下:su - root、su - user 查看是否切换成功三、配置Ubuntu安装
2020-09-13 15:37:03 3275 2
原创 Linux、Ubuntu 修改目录文件显示的颜色、背景色
dircolors命令查看颜色的配置cd 回到家目录dircolors -p > .dircolors 将配置写入配置文件打开配置文件.dircolors根据下面的数值修改上面的值即可样式:00 — Normal (no color, no bold)01 — Bold //粗体前景颜色30 — Black //黑色31 — Red //红色32 — Green //绿色33 — Yellow //黄色34 — Blue //蓝色35 — Magenta //洋红色.
2020-09-06 15:04:32 4198
原创 git、github、ssh免密链接、git push
生成密钥对ssh-keygen -t rsa -C "william.lian.fang@gmail.com"复制./ssh/id_rsa.pub 到 github/account/ssh添加全局设置git config --global user.email “william.lian.fang@gmail.com”git config --global user.name “williamlfang”进行一次验证操作(确认时输入yes)ssh -T git@github.com参考文.
2020-09-06 12:41:05 165
原创 运算符重载
简易cout、cin的实现//自己写一个命名空间namespace myspace {class istream {public: //返回对象的引用:为了一直使用这个cin对象,避免再拷贝一份 istream &operator>>(int &n) { //参数传引用,避免再拷贝一份n std::cin >> n; //可以用scanf来实现 return *this; }privat
2020-07-31 23:53:06 119
原创 继承
继承继承,父类中的所有属性都会包含进子类中子类在内存中的存储,前半部分是存储父类的信息,后半部分是存储的本身的属性。所以子类对象的地址可以看成一个父类对象的地址继承-子类的访问权限子类无论是public继承、protected继承 还是private继承,他都无法访问到父类中private中的东西。但是父类中的public、protected都可以访问继承-对外的访问权限==继承权限影响的是 外部对 子类中的 继承自父类的 属性和方法的访问权限 ==这些权限只能缩小不能放大.....
2020-07-30 14:31:37 95
原创 类与对象
成员属性与方法每个对象都有自己的一份属性和方法访问权限public :公共访问属性。protected : 私有访问属性。孩子们和自己可以访问属性,其他的不可以private:受保护的访问权限。friend :是类外的一个函数,类中将一函数声明为friend,该函数就可以访问类中的成员#include <iostream>#include <cstdio>#include <cstdlib>#include <vector>#inclu
2020-07-27 18:09:24 137
原创 彻底卸载MySql
第一步:控制面板卸载掉第二步:找到安装目录,(如果在C盘,应该在Program Files中),看看还有没有MySql文件夹,有的话删除掉 。第三步(关键):在C盘中查看隐藏的ProgramDate文件夹,打开找到MySql删除掉!第四步(关键):搜索regedit打开注册表按路径找到MySql,将整个文件夹删掉!补充一下:...
2020-06-30 23:13:01 2108
原创 快速幂
a的b次方#include <iostream>using namespace std;int main(){ long long a, b, p; cin >> a >> b >> p; long long ans = 1 % p; //这一步一定要注意初始化为1,要么下面全都是0。 while(b) { if(b & 1) ans = ans * 1ll * a % p; a = a * 1ll * a % p; b &
2020-05-24 23:31:50 132
原创 Manacher马拉车算法--求最大回文子串
转载:作者:windliang链接:链接来源:力扣(LeetCode)看了这位大佬的题解明白了马拉车求原字符串下标用 P 的下标 i 减去 P [ i ],再除以 2,就是原字符串的开头下标了。例如我们找到 P[ i ] 的最大值为 5,也就是回文串的最大长度是 5,对应的下标是 6,所以原字符串的开头下标是(6 - 5 )/ 2 = 0。所以我们只需要返回原字符串的第 0 到 第(5 - 1)位就可以了。求每个 P [ i ]接下来是算法的关键了,它充分利用了回文串的对称性。我们用
2020-05-19 23:18:27 169
原创 货仓选址
货仓选址这道题货仓的位置就是中位数这样才能保证距离之和最小这道题虽然不难但是这里面推导的一个公式很重要!∑i=1n∣Ai−pos∣\sum_{i=1}^{n}|A_i - pos|∑i=1n∣Ai−pos∣要使这个式子值最小,pospospos就得是序列的中位数还会有题会得出这个式子代码:#include <iostream>#include <vector>using namespace std;int main() { int n; c
2020-05-18 21:54:19 331
原创 区间最大平均值
最大平均值涉及知识点前缀和,二分判定等思路求最大区间平均值,可以先想求又没有区间平均值大于一个固定值A即在这个序列里a1 a2 a3 .... ai ... aj ..... an ..a_1\ a_2 \ a_3 \ .... \ a_i \ ... \ a_j \ ..... \ a_n \ ..a1 a2 a3 .... ai ...
2020-05-18 18:50:43 2092
原创 LeetCode378 杨氏矩阵二分判定
二分判定,有最大最小值,判定 <=mid 的个数与k的关系,如果个数小于k说明mid最大排名也不会超过k,如果个数大于等于k说明mid还可以减小就变成了0000000001111111111类型判定技巧找杨氏矩阵中小于等于mid的个数看代码class Solution {public: int check(vector<vector<int>>& matrix, int mid, int n, int k) { int j = n, c.
2020-05-17 23:25:50 153
原创 位运算求两数平均值
参考公式1 (x & y) + ((x ^ y) >> 1) 结果时向下取整这样求X,Y的平均值时就不会出现int或long long超出范围的情况了,并且精度不丢失若先x+y可能会超出范围在二分时求mid = (l + r) / 2, 用这种方法很好!推导因为二进制数字都是一串0和1,那么可以把整数x和y都看作是一个有很多不同的0和1组成的集合。求这两个集合的平均值就是 交集+差集的一半交集:x&y差集的一半:x^y >>1公式2 (x
2020-05-17 21:45:07 373
原创 网络层(上)
哈尔滨工业大学计算机网络(李全龙 、聂兰顺)MOOC链接PPT来自中国大学生MOOC哈尔滨工业大学李全龙 、聂兰顺老师的计算机网络,我感觉两为老师讲的很好,ppt截图方便复习。网络层服务虚电路网络与数据报网络IPV4协议...
2020-05-08 19:29:57 134
原创 HZOJ最近点对
最近点对思路如果是求一组点中的倆个点的最小距离:把这一组点按横坐标从小到大排列好,分成两半,分别求最小距离,选倆者间小的设为d。但这不一定是答案,有可能两侧各选一个点,这倆个点的距离可能最小。所以在mid 两侧d的范围内各找一点计算距离,得出答案。两个组的话,只需加个变量标记属于哪个组即可代码#include <iostream>#include <algorit...
2020-05-06 21:28:09 226
原创 Linux提示符设置颜色及其他设置
颜色设置点击参考直接输入命令PS1=.....只是临时生效,再次登陆就不管用了想永久生效需要修改/etc/bashrc文件,第45行是原始的,46行是我修改过的
2020-05-03 23:29:19 133
原创 项目google测试框架
google测试框架1.创建目录project2.在github下载 https://github.com/google/googletest 到project3.解压后打开googletest-master文件4.输入cmake ./ 编译CMake什么东西,再输入make编译makefile, 如果直接有makefile的话就不用输入cmake ./ 直接输入make就行5.将goo...
2020-04-25 09:33:58 455
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人