笔记
李不难
咸鱼一只,有错误请指正,谢谢(*°∀°)=3
展开
-
linux 下C++文件读写
最近在linux下,想将指令得出的结果输入到文件中,再做数据处理输出。现在复习下文件读写。原创 2022-10-24 09:23:53 · 770 阅读 · 1 评论 -
ECU学习记录
关于ECU的学习简介转载 2022-09-30 11:01:22 · 553 阅读 · 0 评论 -
惊群效应简介
惊群效应简介当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。简单地说:就是扔一块食物,所有鸽子来抢,但最终只一个鸽子抢到了食物。语义分析:食物只有一块,最终只有一个鸽子抢到,但是惊动了所有鸽子,每个鸽子都跑过来,消耗了每个鸽子的能量。(这个很符合达尔文的进化论,物种之间的竞争,适者生存。)操作系统的惊群:在多进程/多线程等待同一资源时,也会出现惊群。即转载 2021-10-24 15:01:33 · 799 阅读 · 0 评论 -
跳表(2020-08-07)每天一个小知识点
被问到一个问题,来记载一下;链表特别长,我要怎么改善增删改查的效率?一亿个数据?------跳表跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳表列表的平均查找和插入时间复杂度是O(logn)。快速查询是通过维护一个多层次的链表,且每一层链表中的元素是前一层链表元素的子集,一开始时,算法在最稀疏的层次进行搜索,直至需要查找的元素在该层两个相邻的元素中间。这时,算法将跳转到下一个层次,重复刚才的搜索,直到找到需要查找的元素为止。跳表是用空间来换时间:跳表的效率比链表转载 2021-08-07 21:48:36 · 111 阅读 · 0 评论 -
2021-07-05
三次握手和四次挥手机制三次握手三次握手是 TCP 连接的建立过程。在握手之前,主动打开连接的客户端结束 CLOSE 阶段,被动打开的服务器也结束 CLOSE 阶段,并进入 LISTEN 阶段。随后进入三次握手阶段:① 首先客户端向服务器发送一个 SYN 包,并等待服务器确认,其中:标志位为 SYN,表示请求建立连接;序号为 Seq = x(x 一般为 1);随后客户端进入 SYN-SENT 阶段。② 服务器接收到客户端发来的 SYN 包后,对该包进行确认后结束 LISTEN 阶段,并返回一段转载 2021-07-05 14:05:05 · 64 阅读 · 0 评论 -
深度、广度优先
深度优先(栈)广度优先(队列)原创 2020-12-25 10:29:24 · 72 阅读 · 0 评论 -
二叉树遍历递归、非递归
\二叉树代码、建树void BTree::buildTree(vector<int>&a)//创建{ if (a.size() == 0) { return; } root = new TreeNode(a[0]); for (int i = 1; i < a.size(); i++) { TreeNode *newNode = new TreeNode(a[i]); TreeNode *node = root; while (node) {原创 2020-12-19 16:33:48 · 86 阅读 · 1 评论 -
归并、快排、堆排序
优化void fall(vector&arr, int heapSize, int fallIndex){int l = fallIndex * 2 + 1;int r = fallIndex * 2 + 2;if (r < heapSize)//右节点的序号小于数组大小{int maxChild = arr[l] > arr[r] ? l : r;if (arr[fallIndex] < arr[maxChild]){swap(arr[fallIndex]..原创 2020-12-15 17:08:25 · 67 阅读 · 0 评论 -
桶排序
桶排序适用于均匀的数据排列桶排序主要三步1.建桶2.排序3.还原void sort_bucket(vector<int>&arr, int bucketNum) { int maxN = max(arr, 0, arr.size()); int minN = min(arr, 0, arr.size()); int everyNum = ((maxN - minN + 1) / bucketNum) + 1; vector<vector<int&g原创 2020-12-11 20:11:03 · 125 阅读 · 0 评论 -
排序算法(选择、计数、冒泡、插入、希尔排序)
void sort_selection(vector<int>&arr)//选择{ for (int j = 0; j < arr.size() - 1; j++) { int maxpos = j; for (int i = j + 1; i < arr.size(); i++) { if (arr[i] > arr[maxpos]) { maxpos = i; } } swap(arr[j], arr[maxpos原创 2020-12-10 22:11:43 · 70 阅读 · 0 评论 -
数组指针、指针数组
数组指针数组指针是指针;int(*p)[10];//p是指针变量printf("%d", sizeof§);int array[10];//1.array代表数组首元素地址//2.array代表的是数组的地址p = &array ;*p=&array ;*p; //array 数组首元素地址int darray[3][10];//1.darray 代表首行首列的地址p=darray;*p;//数组首行首元素的地址**指针数组**指针数组是数组;int *p原创 2020-10-24 23:11:25 · 128 阅读 · 0 评论 -
视频拼接
本题要求从一系列视频子区间中选出尽可能少的一部分,使得这部分视频子区间能够重新剪出一个完整的视频。我们可以这样理解:给定区间 [0,T)[0,T) 的一系列子区间(可能重叠),要求从中选出尽可能少的子区间,使得这些子区间能够完全覆盖区间 [0,T)[0,T)。动态规划int videoStitching(int** clips, int clipsSize, int* clipsColSize, int T) { int dp[T + 1]; memset(dp, 0x3f, size.转载 2020-10-24 18:08:10 · 315 阅读 · 0 评论 -
ASP.NET
希望明年能理所应当过个1024使用ADO.NET技术开发数据库功能实现代码public void aa() { SqlConnection con; con = new SqlConnection("Data Source=.;Initial Catalog=stu.mdf;User ID=sa;Password=123456"); SqlCommand cmd = new SqlCommand(); cmd.CommandT.原创 2020-10-24 00:00:33 · 91 阅读 · 0 评论 -
文件读取!!
#include<stdio.h>int main(){FILE* fr = fopen(“C:\Users\l’x’y\Desktop\homework\新建文本文档.txt”, “r”);FILE* fw = fopen(“C:\Users\l’x’y\Desktop\homework\新建文本文档.txt”, “r”);if (fr == NULL || fw == NULL){printf(“文件打开失败\n”);return 0;}char buffer[1024];原创 2020-10-19 22:05:34 · 84 阅读 · 0 评论 -
宏定义(没有参数类型的函数)
#include<stdio.h>#define Max(a,b) if(a>b){printf("%d",a);}else{printf("%d",b);}int main(){Max(10, 20)//不用分号!!!return 0;}原创 2020-10-19 20:06:38 · 977 阅读 · 0 评论 -
软件工程知识点(复习笔记)
3周6节课,1.2倍速的语速讲到第六章。我的脑瓜吃不消啊!原创 2020-09-22 15:00:54 · 742 阅读 · 0 评论 -
嵌入式系统(复习笔记)
宿主机交叉开发方式JTAG嵌入式系统,嵌入式计算机系统ARM处理器,RISC,r0-r15、CPSR通用计算机系统X86,CISC,AX、BX、CX、DX、PSWIntel8086、ASIC处理器只能到内存中取指令并执行指令地址线、数据线Cache寄存器RO base:ReadOnly base,内存中可执行程序的起始地址。基于ARM处理器的源程序经编译、链接生成的程序。RW base:ReadWrite base,存储数据的内存单元的起始地址,即变量的地址。Entry poi原创 2020-09-22 14:28:46 · 479 阅读 · 0 评论 -
软件工程理论知识
(1)什么是软件危机?其典型表现是是什么?为什么会出现软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题绝不仅仅是不能运行的软件才具有的,实际上,几乎所有的软件都不同程度地存在这些问题。典型表现:①对软件开发成本和进度的估计不准确。实际成本比估计成本有可能高出一个数量级,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。这种现象降低了软件开发组织的信誉。而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量,从而不可避免地会引起用户的不满。②用户对“原创 2020-09-04 20:12:39 · 1663 阅读 · 0 评论 -
阶乘之和(算法竞赛入门)
输入n,计算S=1!+2!+3!+…+n!的末6位(不含前导0)。n≤106,n!表示 前n个正整数之积。样例输入: 10样例输出: 37913这个任务并不难,引入累加变量S之后,核心算法只有“for(int i=1;i<=n;i++)S +=i!”。不过,C语言并没有阶乘运算符,所以这句话只是伪代码,而不是真正的代码。 事实上,还需要一次循环来计算i!,即“for(int j=1;j<=i;j++)factorial*=j;”。代码如下:#include<stdio.h> int m原创 2020-07-16 16:31:23 · 2798 阅读 · 1 评论 -
近似计算(算法竞赛入门)
看算法书,偶然看到这个,觉得当初学校上课时候做过,当初觉得很难,现在也没一下就能想出解法,还是需要多加练习,放假惰性太强,害,慢慢打卡!重复计算,因此可以用循环实现。但不同的是,只有算完一项之后才知道它是否小于10-6。也就是说,循环终止判断是在计算之后,而不是计算之前。 这样的情况很适合使用do-while循环。代码: #include<stdio.h> int main() { double sum = 0; for(int i = 0; ; i++) { d.原创 2020-07-16 16:17:33 · 1291 阅读 · 0 评论 -
三位数反转(算法竞赛入门)
输入一个三位数,分离出它的百位、十位和个位,反转后输出。样例输入: 127 样例输出: 721首先将三位数读入变量n,然后进行分离。百位等于n/100(注意这里取的是商的整数部 分),十位等于n/10%10(这里的%是取余数操作),个位等于n%10。程序如下:#include<stdio.h>int main(){int n;scanf("%d", &n);printf("%d%d%d\n", n%10, n/10%10, n/100);return 0;}运行结果原创 2020-07-15 15:33:13 · 2581 阅读 · 0 评论 -
归并排序(算法竞赛入门)
归并排序按照分治三步法,对归并排序算法介绍如下。划分问题:把序列分成元素个数尽量相等的两半。递归求解:把两半元素分别排序。合并问题:把两个有序表合并成一个。前两部分是很容易完成的,关键在于如何把两个有序表合成一个。void merge_sort(int* A, int x, int y, int* T){ if(y-x > 1) { int m = x + (y-x)/2; //划分 int p = x, q = m, i = x; me原创 2020-07-15 15:10:59 · 191 阅读 · 0 评论 -
快速排序(算法竞赛入门)
快速排序是最快的通用内部排序算法。它由Hoare于1962年提出,相对归并排序来说不 仅速度更快,并且不需辅助空间(还记得那个T数组吗)。按照分治三步法,将快速排序算 法作如下介绍。划分问题:把数组的各个元素重排后分成左右两部分,使得左边的任意元素都小于或 等于右边的任意元素。递归求解:把左右两部分分别排序。合并问题:不用合并,因为此时数组已经完全有序。但事实上,快速排序本来就不是只有一种实现方法。“划分过程”有多个不同的版本,导致快速排序也有不同版本。快速选择问题。输入n个整数和一个正整数k转载 2020-07-15 14:43:02 · 215 阅读 · 0 评论 -
折半查找(算法竞赛入门)
定义:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好,占用系统内存较少;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。折转载 2020-07-11 15:44:07 · 1200 阅读 · 0 评论 -
C++ Primer Plus(整理重点笔记)
前些天入手936页的C++ Primer Plus,害怕自己不能坚持读完,写笔记来督促自己。打卡学习!原创 2020-06-28 11:28:17 · 2223 阅读 · 0 评论