自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Golang】 堆heap的使用

Go语言的heap包使用方法

2022-07-31 22:13:43 627 1

原创 【MySQL个人笔记】MySQL的语句执行顺序

MySQL的语句执行顺序

2022-06-17 17:05:30 128

原创 【Golang】二维切片的创建与初始化

Go语言创建二维切片的三种情况

2022-06-16 10:13:51 805

原创 【Golang】sort包的排序使用

sort包Go有sort包,可以对内置以及用户定义的数据类型进行排序sort包内部实现了四种基本排序算法:插入排序(insertionSort)、归并排序(symMerge)、堆排序(heapSort)、快速排序(quickSort);sort包会根据实际数据自动选择排序算法,我们仅考虑实现 sort.Interface类型就行接口:type Inerface interface { Len() int //Len方法返回集合中的元素个数 Less(i, j int) bool //i

2022-05-20 15:48:10 957

原创 【C++】 string类型、char *类型、char []类型之间的相互转换

string类型转其它类型string类型转char *类型c_str()函数//c_str()转换得到的是char const *类型string str = "abcd";char const *chPtr1 = str.c_str(); //该类型不能修改里面的字符//可以通过关键字const_cast<typeName>进行常量强装char *chPtr2 = const_cast<char*>(str.c_str());//这样chPtr2变量就可以修

2022-05-17 21:01:15 274

原创 【C++】 bitset类型及其相关函数的使用

【C++】bitset类型及其相关函数的使用头文件引用#include <bitset>常用定义{ bitset<4> bit1; //长度为4,默认每一位为0,即0000 bitset<8> bit2(12); //长度为8,二进制保存,前面用0填补,即00001100 string s1 = "100101"; bitset<10> bit3(s); //长度为10,即0000100101 char s2[]

2022-04-28 09:35:00 763

原创 【C++】string类型 与 char数组 之间的相互转换

string类型 转 char数组使用strcpy_s函数进行转换;注意,在C++中无法使用strcpy函数,它被认为是不安全的;strcpy_s函数需要输入三个参数;参数1,存放复制的字符串,类型为char *;参数2,被复制的字符串的个数;参数3,被复制的字符串,类型为char *;因为参数3类型为char *,需要用到c_str()函数进行转换;using namespace std;#include <iostream>#include <string

2022-04-22 22:31:13 5383

原创 【计算机网络】HTTPS 系列详解

HTTPS 详解一:附带最精美详尽的 HTTPS 原理图文章来源网址:https://segmentfault.com/a/1190000021494676HTTPS详解二:SSL / TLS 工作原理和详细握手过程文章来源网址:https://segmentfault.com/a/1190000021559557Cookie和Session、SessionID详解文章来源网址:https://blog.csdn.net/weixin_43625577/article/details/9239

2022-03-27 14:44:50 6124

转载 【C++】cin、cin.get()、cin.getline()、getline()的区别

转载博客原址:https://blog.csdn.net/a3192048/article/details/80303547 测试平台g++ 5.4.0和VS2015社区版。 输入原理简述: 程序的输入都建有一个缓冲区,即输入缓冲区。每次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据(cin读取数据是从第一个非空白字符开始到下一个空白字符结束)。正因为

2022-03-27 10:06:25 1014

原创 【C++】 snprintf()函数与vsnprintf()函数

snprintf()函数将格式化的数据写入字符串int snprintf(char *buffer, int n, char *format, ...);buffer:存储格式化字符串;n:指定格式化字符串的大小,包括\0;format:指定需要格式化字符串的形式;…:可变参数;返回值:期望字符串的长度,不包括\0;vsnprintf()函数功能与snprintf()函数一致,只是可变参数换成了va_list类型;int vsnprintf(char* buffer, i

2022-03-21 10:32:55 1183

原创 【C++】关于可变参数函数、vsprintf()函数、stdarg.h的宏函数使用

可变参数函数C++允许定义形参个数和类型不确定的函数;在声明不确定形参可以使用省略号 ... 代替;故在函数调用是,不检查形参类型你是否与实参类型相同,也不检查参数个数;实例void func(int i, ...);需要注意的是,编译器需要检查第一个参数,故第一个参数不可省略;对于可变参数的函数,需要进行特殊的处理。首先需要引用 <stdarg.h>头文件,然后利用va_list类型和va_start、va_arg、va_end 3个宏读取传递到函数中的参数值。&l

2022-03-19 11:17:24 1175

原创 【C++】 strcat()函数

将src指向的字符串追加到dest指向的字符串的结尾声明#include <string.h>char *strcat(char *dest, const char *src);dest – 指向目标数组,该数组包含了一个 C 字符串,且足够容纳追加后的字符串。src – 指向要追加的字符串,该字符串不会覆盖目标字符串。该函数返回一个指向最终的目标字符串 dest 的指针。实例char *dest = "abc";char *src = "efg";strcat(d

2022-03-18 16:04:03 6656

原创 【C++】 strchr()函数 和 strrchr()函数

strcgr()函数根据对应字符c,在字符串sttr中搜索第一次出现的位置;#include <string.h>char *strchr(const char *str, int c);返回值为第一次出现字符c的位置(指针);如果没有找到该字符则返回NULL;实例char *str = "http://www.noBlackstone.com";char c = '.';char *ret;ret = strchr(str, c);cout << r

2022-03-17 19:34:44 632

原创 【C++】strspn()函数 检索字符串第一个不存在的字符的下标

strspn()函数#include <string.h>size_t strspn(const char *ste1, const char *str2);返回值:返回str1中第一个不存在字符串str2中出现的字符下标;char *s1 = "abcdefghi";char *s2 = "abcd";int len = strspn(s1, s2);cout << len << endl;/*结果为4*/......

2022-03-17 17:13:06 764

原创 【C++】字符串比较函数使用

字符串比较函数使用strcmp()函数比较字符串(区分大小写)#include <string.h>int strcmp(const char *s1, const char *s2);若s1与s2相同,则返回0;若s1大于s2,则返回大于0的值;若s1小于s2,则返回小于0的值;strcasecmp()函数比较字符串(不区分大小写)#include <string.h>int strcasecmp(const char *s1, const

2022-03-17 17:06:37 2758 1

原创 【C++】strpbrk() 字符串检索函数

strpbrk() 字符串检索函数需要包含头文件 string.h;声明char *strpbrk(const char *str1, const char *str2);检索str1中第一个匹配str2中字符的字符,不包含空结束字符;若没有,则返回NULL;实例char *str1 = "abcd1234";char *str2 = "23";char *ret;ret = strpbrk(str1, str2);cout << *ret << en

2022-03-17 16:21:49 722 1

原创 【C++】c_str()函数 与 srtcpy()函数的使用

c_str()函数 与 srtcpy()函数的使用 c_str()函数使用标准库的string类提供了三个成员函数使一个string得到c类型的字符数组,其中就有 c_str() 函数;这个数组应该是string类内部的数组;需要包含cstring头文件//string --> char *//c_str()函数返回一个指向C风格字符串的指针//C风格字符串是一个字符数组,它是临时的,与string内容绑定char *c;string s = "aaa";c = s.c_st

2022-03-16 20:32:30 496

原创 【网络编程】 关于epoll中的LT、ET模式和阻塞、非阻塞情况说明

关于epoll中的LT、ET模式和阻塞、非阻塞情况说明共含有8种组合,组合元素如下LT触发和ET触发阻塞和非阻塞监听套接字Lfd和读写套接字Cfd下述情况的代码中没有循环 阻塞的Lfdepoll_wait()函数返回的是已就绪的连接,无论是否阻塞accept()函数,都会立即返回;设置阻塞的Lfd,当客户端发起连接请求时,由于服务器繁忙未及时accept(),此时客户端自行断开,若刚好服务器空闲到达accept(),就会出现阻塞; LT触发的Lfd非阻塞模式正常访问,

2022-03-13 21:40:30 2674

原创 【算法学习笔记】 Notes of Algorithm —— KMP算法

KMP算法目录KMP算法KMP 介绍KMP的匹配表匹配表获取匹配表使用案例KMP 介绍KMP 算法是一种改进的字符串匹配算法;算法核心是利用匹配失败后的信息,尽量减少模式串和文本串的匹配次数,以达到快速匹配的目的;算法的时间复杂度为 O(m+n)O(m + n)O(m+n),而暴力破解的时间复杂度为 O(mn)O(mn)O(mn);区别于暴力破解,KMP 在匹配过程中,如果出现错误的字符,会先判断文本串和模式串的是否有相同的最大相等前缀,并将指针移动到该前缀的末尾,然后继续匹

2022-01-15 09:35:28 242

原创 STL中sort函数的自定义排序

1、默认排序默认是升序排序less<typeName>(),也可以使用降序排序greater<typeName>()//实例1vector<int> vec{2, 1, 3, 4, 6, 5};sort(vec.begin(), vec.end());for (int v : vec) { cout << v << " ";}cout << endl;/*输出为1 2 3 4 5 6*///实例2vec.

2021-11-16 15:02:29 739

原创 【OS操作系统】Operating System 第十二章:文件系统

OS操作系统系列文章目录目录OS操作系统系列文章目录第十二章:文件系统基本概念文件系统与文件文件系统的功能文件和块文件描述符目录文件别名文件系统的种类虚拟文件系统数据缓存打开文件的数据结构文件分配空闲空间列表多磁盘管理 —— RAID磁盘调度第十二章:文件系统 基本概念 不同的操作系统,有不同的文件系统,还可能有多个文件系统; 文件系统与文件 文件系统:一种用于持久性存储的系统抽象;在存储器上:组织、控制、导航、访问和检索数据;大多数计算机系统都包含文件系统;个人电脑、

2021-11-13 09:07:19 838

原创 【OS操作系统】Operating System 第十一章:死锁与进程通信

OS操作系统系列文章目录目录OS操作系统系列文章目录第十一章:死锁与进程通信死锁问题系统模型死锁特征死锁处理办法死锁预防&死锁避免死锁预防 —— 让死锁不会出现死锁避免 —— 申请资源前判断银行家算法死锁检测&死锁恢复死锁检测死锁恢复IPC概述信号、管道、消息队列与共享内存信号管道消息队列共享内存第十一章:死锁与进程通信 死锁问题 死锁现象流量只在一个方向;桥的每个部分可以看作一个资源;如果死锁,可能通过一辆车倒退可以解决(抢占资源和回滚);如果发生死锁,可能几辆

2021-11-13 09:07:11 1033

原创 【OS操作系统】Operating System 第十章:信号量与管程

OS操作系统系列文章目录目录OS操作系统系列文章目录第十章:信号量与管程背景信号量信号量的使用信号量的实现管程基本概念使用管程的两种实现方式经典同步问题1 —— 读者与写者问题读者优先情况(信号量实现)写者优先情况(管程实现)经典同步问题2 —— 哲学家就餐问题第十章:信号量与管程 背景 利用信号量和管程解决同步互斥的问题并发问题:竞争/竞态条件多程序并发存在大的问题; 同步线程共享公共数据的协调条件;包括互斥和条件同步;互斥:在同一时间内只有一个线程可以执

2021-11-11 20:44:43 469

原创 【OS操作系统】Operating System 第九章:同步互斥问题

OS操作系统系列文章目录目录OS操作系统系列文章目录第九章:同步互斥问题背景基本概念临界区的属性方法1:禁用硬件中断方法2:基于软件的解决方案方法3:更高级的抽象——基于原子操作第九章:同步互斥问题 背景 独立的线程:不和其它线程共享资源或状态;确定性:输入状态决定结果;可重现:能够重现起始条件,IO;调度顺序不重要; 合作的线程:在多个线程中共享状态;存在不确定性;无法可重现; 不确定性和不可重现意味着bug可能是间歇性发生的; 进程/线程

2021-11-11 20:36:25 326

原创 【OS操作系统】Operating System 第八章:处理机调度

OS操作系统系列文章目录目录OS操作系统系列文章目录第八章:处理机调度背景调度原则调度算法FCFS 先来先服务SRT 短剩余时间优先HRRN 最高响应比优先Round robin 轮循Multilevel feedback queues 多级反馈队列Fair share scheduling 公平共享调度不同调度模型的评价准则各调度算法的比较实时调度多处理器调度与优先级反转多处理器调度优先级反转第八章:处理机调度 背景 上下文切换:切换CPU的当前任务,从一个进程/线程转换到另一个进程

2021-11-11 20:32:13 219

原创 【OS操作系统】Operating System 第七章:进程与线程

OS操作系统系列文章目录目录OS操作系统系列文章目录第七章:进程与线程进程(process)的描述进程的状态进程的生命周期管理进程的状态变化模型进程的挂起状态队列线程(Thread)为什么使用线程线程的基本概念线程的实现用户线程内核线程轻量级进程上下文切换第七章:进程与线程 进程(process)的描述 进程的定义:一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程; 进程的组成:程序的代码;程序处理的数据;程序计数器中的值,指示下一条将运行的指令;一组通用

2021-11-11 20:27:09 454 1

原创 【OS操作系统】Operating System 第六章:页面置换算法

OS操作系统系列文章目录目录OS操作系统系列文章目录第六章:页面置换算法页面置换的功能和目标局部页面置换算法最优页面置换算法(OPT)先进先出算法(FIFO)最近最久未使用算法(LRU)时钟页面置换算法二次机会法最不常用算法(LFU)算法比较全局页面置换算法工作集模型工作集常驻集两个全局页面置换算法抖动问题第六章:页面置换算法 页面置换的功能和目标 功能:当缺页中断发生,需要调入新的页面而内存已满时,选择内存中合适的物理页面被置换; 目标:尽可能地减少页面的换进换出次数(即缺

2021-11-11 20:20:36 249

原创 【OS操作系统】Operating System 第五章:虚存技术

OS操作系统系列文章目录目录OS操作系统系列文章目录第五章:虚存技术虚拟内存的起因覆盖技术交换技术覆盖技术和交换技术的对比虚拟内存管理技术第五章:虚存技术 虚拟内存的起因 起因:经常出现内存不够的情况;且程序规模的增长远大于存储器容量的增长速度; 理想的存储器:更大、更快、更便宜、非易性存储; 实际的存储器 同时,也会把硬盘的空间也用上,不常用的信息存储在硬盘上,常用的存储在内存上; 在OS中,面对多道程序运行的情况,可能会出现内存不够的问题,解决办

2021-11-11 20:15:29 280

原创 【OS操作系统】Operating System 第四章:非连续内容分配

OS操作系统系列文章目录目录OS操作系统系列文章目录第四章:非连续内容分配非连续内存分配的必要性非连续内存的分配分段(Segmentation)分页(Paging)页表和快表转换后备缓冲区(快表TLB)二级页表和多级页表二级页表多级页表反向页表基于页寄存器(Page Registers)的实现方案基于关联内存(Associative Memory)的实现方案基于哈希的实现方案第四章:非连续内容分配非连续内存分配的必要性连续内存分配的缺点:分配给一个程序的物理内存是连续的;内存利用率低;

2021-11-11 20:10:08 357

原创 【OS操作系统】Operating System 第三章:连续内存分配

OS操作系统系列文章目录目录OS操作系统系列文章目录第三章:续内存分配内存的分层体系地址空间与地址生成连续内存的分配内存碎片的整理方法第三章:续内存分配 计算机体系的主要结构:CPU(程序执行);内存(执行程序的代码、数据存放在这);I/O(设备);  内存的分层体系 内存:运行内存(主存):主存是在运行程序时,所需要保存的数据空间;磁盘(虚拟内存):用于持久化数据保存的数据空间;CPU可以访问的内存:寄存器;cache:L1缓存;L2缓

2021-11-11 20:01:18 713

原创 【OS操作系统】Operating System 第二章:启动、中断、异常和系统调用

OS操作系统系列文章目录目录OS操作系统系列文章目录第二章:启动、中断、异常和系统调用计算机的启动过程中断、异常、系统调用中断(异步)异常(同步)系统调用(异步或同步)区别第二章:启动、中断、异常和系统调用 计算机的启动过程 CPU、I/O、内存 通过总线连接; Disk(硬盘):存放OS和Bootloader; BIOS(基于I/O处理系统):开机自检外设,并加载相应的软件进行执行; Bootloader:加载OS,将OS从硬盘放入到内存中;位于磁盘的第一个引导扇区;会

2021-11-11 19:53:24 691 4

原创 【OS操作系统】Operating System 第一章:操作系统的概述

OS操作系统系列文章目录目录OS操作系统系列文章目录第一章:操作系统的概述操作系统的定义操作系统的内外部第一章:操作系统的概述操作系统的定义用户角度:操作系统是一个控制软件;管理应用程序;为应用程序提高服务;杀死应用程序;程序角度:操作系统是资源管理器;管理外设、分配资源;抽象:将CPU抽象成进程;将磁盘抽象成文件;将内存抽象成地址空间;操作系统的内外部操作系统的界面和内核:Linux, Windows, Android的界面属于外壳(She

2021-11-11 19:48:51 2034

原创 【数学基础】 foundation of mathematics :Jensen不等式

数学基础系列文章目录目录数学基础系列文章目录什么是置信区间、置信度什么是置信区间、置信度  统计学有个核心思想就是用样本估计总体  一般地,用到置信度这个概念是为了求得真值,而真值就是我们只能估计的总体参数;我们取得数据是样本数据,点估计就是样本参数的真实值。  如图,假设在样本数目不变的情况下,做了一百次实验,其中有95个置信区间包含了总体真值,则置信度为95%。其中大虚线表示为总体参数真值,是不知道且想要估计的值,因为100个置信区间中有95个置信区间包含了真实值,所以当我们只做一次置信

2021-10-29 21:25:48 139

原创 【数学基础】 foundation of mathematics :拉格朗日优化和对偶

数学基础系列文章目录目录数学基础系列文章目录拉格朗日乘子法与KKT条件一、无约束优化二、带约束优化定义三、等式约束不等式约束五、约束优化总结拉格朗日对偶性一、对偶的可用性二、原始问题三、对偶问题四、原始问题和对偶问题的关系拉格朗日乘子法与KKT条件一、无约束优化  对于无约束优化,如果目标函数是凸函数,可直接通过令目标函数的梯度为零求得全局最优值;为避免陷入局部最优值,一般进行优化的目标函数采用凸函数;  凸集定义:在欧氏空间中,对于集合中任意两点的连线,连线上的点都在集合中,则该集合为凸集合

2021-10-29 21:18:48 397

原创 【数学基础】 foundation of mathematics :NPC问题

数学基础系列文章目录目录数学基础系列文章目录前提P类问题NP类问题NPC类问题NP难问题前提多项式定义:形如anxn+an−1xn−1+⋯+a1x1+a0=0a_nx^n+a_{n-1}x^{n-1}+\cdots+a_1x^1+a_0=0an​xn+an−1​xn−1+⋯+a1​x1+a0​=0的式子称为多项式;时间复杂度:表示算法运行得到解所需的时间;例子:冒泡排序法,有nnn个数需要排序,至多需要(n2−n)/2(n^2-n)/2(n2−n)/2次比较才能完成排序,当n→∞时,除了n2

2021-10-29 20:21:18 448

原创 【数学基础】 foundation of mathematics :Jensen不等式

数学基础系列文章目录目录数学基础系列文章目录Jensen 不等式Jensen 不等式凸函数中有一个性质,存在定义域中任意两点x1x_1x1​和x2x_2x2​,且有0⩽t⩽10\leqslant t\leqslant 10⩽t⩽1,得到t×f(x1)+(1−t)×f(x2)⩾f[tx1+(1−t)x2]t\times f(x_1) + (1-t)\times f(x_2)\geqslant f[tx_1 + (1 - t)x_2]t×f(x1​)+(1−t)×f(x2​)⩾f[tx1​+(1−t)

2021-10-29 20:14:37 159

原创 【MySQL和数据库】MySQL & database 第十一章:流程控制结构

MySQL和数据库系列文章目录目录MySQL和数据库系列文章目录流程控制结构的分类分支结构IF函数CASE函数ELSEIF函数循环结构综合案例流程控制结构的分类分类:顺序结构:程序从上到下依次执行;分支结构:程序从两条或多条路径中选择一条去执行;循环结构:程序在满足一定条件的基础上,重复执行一段代码;分支结构IF函数功能:实现简单的双分支;语法:if(表达式1,表达式2,表达式3);执行顺序:如果表达式1成立,则返回表达式2的值,否则返回表达式3的值;

2021-10-29 08:35:14 319

原创 【MySQL和数据库】MySQL & database 第十章:函数的学习

MySQL和数据库系列文章目录目录MySQL和数据库系列文章目录函数创建语法调用语法查看函数删除函数函数含义:一组预先编译好的SQL语句的集合,理解成批处理语句;特点:提高代码的重用性;简化操作;减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率;区别:存储过程:可以有零个或多个返回参数,适合批量插入、批量更新;函数:有且仅有 1 个返回参数,适合做处理数据后返回一个结果;创建语法delimiter $create function 函数名(参数列表)

2021-10-28 23:36:46 117

原创 【MySQL和数据库】MySQL & database 第九章:存储过程的学习

MySQL和数据库系列文章目录目录MySQL和数据库系列文章目录存储过程存储过程含义:一组预先编译好的SQL语句的集合,理解成成批处理语句;特点:提高代码的重用性;简化操作;减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率;创建语法create procedure 存储过程名(参数列表)begin 存储过程体(一组合法的sql语句)end参数列表包含三部分:参数模式、参数名、参数类型举例:in stuname varchar(20);参

2021-10-28 23:34:52 146

原创 【MySQL和数据库】MySQL & database 第八章:MySQL中的变量

MySQL和数据库系列文章目录目录MySQL和数据库系列文章目录变量的分类系统变量全局变量会话变量自定义变量用户变量局部变量变量的分类系统变量:全局变量;会话变量;自定义变量:用户变量;局部变量;系统变量说明:变量由系统提供的,不是用户定义,属于服务器层面;注意:如果不说明是全局变量还是会话变量,则默认是会话变量;语法:查看所有的系统变量show global variables;show session variables;查看满足条件

2021-10-28 23:33:10 193

空空如也

空空如也

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

TA关注的人

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