自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池

线程池1>.**降低资源消耗。**通过复用已存在的线程,降低线程创建\关闭的次数来尽可能降低系统性能损耗;2>.**提升系统响应速度。**通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度;3>.**提高线程的可管理性。**线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。...

2021-04-28 22:18:26 156

原创 经典查找算法一览无余(C++)

静态查找:只做查找操作,而不改动表中数据元素;顺序查找从表中的最后一个数据元素开始,逐个同记录的关键字做比较,如果匹配成功,则查找成功;反之,如果直到表中第一个关键字查找完也没有成功匹配,则查找失败。//顺序查找--O(n)--遍历数组\链表int test_sequential_search(int a[], int n, int keyval){ for (int i = 0; i < n; i++) { if (a[i] == keyval)

2021-03-12 09:57:39 330

原创 经典、常用的排序算法(C++)

大话C++排序//对数组a排序int main(int argc, char* argv[]){ int a[] = { 1,2,3,0,5,99,100 }; int length = sizeof(a) / sizeof(a[0]); //test_insertsort(a,length); //test_bubblesort(a, length); //test_selectionsort(a, length); //test_qsort(a, 0

2021-03-02 22:20:11 331

转载 mysql高级

mysql高级

2020-12-30 10:49:12 194

原创 MySQL基础学习笔记

尚硅谷MySQL基础学习笔记学习视频连接:https://www.bilibili.com/video/BV12b411K7Zu?p=10原文连接:https://blog.csdn.net/qq_21579045/article/details/98111827

2020-12-22 16:40:53 446

原创 网络编程二(UDP)

网络编程二(UDP)UDP可能出现缓冲区被填满,再次接收数据会出现丢包的情况.UDP没有滑动窗口机制,所以靠以下方法解决:1>在服务器应用层设计流量控制,控制发送数据的速度;2>使用setsockopt()函数修改缓冲区大小.#include<sys/socket.h>//原型:int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t optlen);int n 220*1024sets

2020-12-18 10:15:35 231

原创 linux网络编程-高并发服务器

linux网络编程-高并发服务器1.多进程\多线程版高并发服务器(使用与客服端数量不多的情况,不适用与大型开发,该方法需要自己监听\处理对系统资源消耗太大.应用比如智能家居系统.)2.多路I\O转接服务器(多任务I\O服务器)核心思想:不再由应用程序自己监听客服端的连接,由内核替代.主要的实现方法有三种:1> select2> poll3> epoll1.多进程\多线程版高并发服务器1>.多进程版/**********************************

2020-12-03 19:47:53 373 1

原创 网络编程一(C/S-TCP模型)

协议1>预备知识1>网络数据流采用大端字节序(高对高);(补充:x86系统采用小端字节序(低对低))因此,在socket编程时需要将主机字节序转换为网络字节序(如果主机采用大端模式,则不需要转换)(路由传输(大端),链路层\网络层)/******************************************************** *函数4:htonl()\htons()\ntohl()\ntohs *头文件:#include <arpa/inet.h> *格式.

2020-12-02 09:06:47 395

原创 c\c++带精度数据类型比较大小

c\c++带精度数据类型比较大小float占4byte,精度是6-7位,double占8byte,精度是15~16位。double(双精度)、float(单精度)类型都是有精度的,当达到精度最大位数的后一位采样四舍五入的方法。因此带有精度的数据不能直接使用"==“进行比较大小,要转化为”>=“或者”<="进行。例如:当第8位小于5时,输出1,认为相等,大于等于5时,认为不相等。(精度:范围值)正确做法:const double EPS = 1e-6; //一般这样子就

2020-11-29 12:27:39 2033

原创 linux-线程\进程同步

线程\进程同步线程同步1>同步概念:协同步调,按预定先后顺序访问共享数据.2>访问共享数据的所有线程都硬加锁.(不加锁就可以直接访问)1.互斥量(互斥锁)(mutex)1>访问共享资源后应立即解锁(保证加锁粒度最小)2>死锁问题:1:对同一个锁加锁两次,第二次就会阻塞等待(解决办法:细心);2:两个线程同时去加锁对方已经加锁的锁时,双方均会阻塞等待.使用trylock一样(解决办法:当线程不能索取全部锁时,主动放弃所有的锁让对方加锁完成访问后释放锁)3>实现 #include&

2020-11-28 14:18:51 132

原创 linux-线程

linux线程- 线程的概念1>linux的线程与windos的线程区别很大(win的线程比较完善,进程不行,linux的进程发展的更早)2>每一个进程都会分配0-4G的虚拟空间地址,而线程共享0-4G的虚拟地址空间,但每一个线程有自己不同的pcb.但pcb中指向内存资源的三级页表是相同的三级页表(mmu映射虚拟地址到物理内存的过程)3>线程是最小的执行单位(抢占cpu的最小单位(根据线程的LWP号(使用ps -Lf pid//查看指定的线程LWP号))),进程是最小的资源分配单位(0-4G资

2020-11-25 15:46:38 233

原创 Linux 终端-进程组-会话-守护进程

- 终端1>ctrl+alt+(1-6)文字终端,7是图形终端文字终端(bash)的启动流程- 网络终端- 进程组(作业)1>进程组ID=第一个进程ID(组长ID)2>kill -SIGKILL -进程组ID(负的) //杀死进程组内的全部进程3>进程组生命周期:进程组创建到最后一个进程结束(注意:组长进程结束,该进程并不会结束)4>进程组操作函数#include<stdio.h>#include<unistd.h>#include<stdlib.h&

2020-11-19 22:02:58 134

原创 Linux-信号

信号掌握知识点:- 1.信号1>信号的概念共性:1简单;2不能携带大量信息(比如:不能携带结构体);3满足某个条件才发送.2>每个信号都是内核处理3>信号的两种状态:1.递达;2.未决(阻塞(屏蔽)造成的)4>信号处理的三种方式:1执行默认动作;2忽略(丢弃)(不是不处理,是处理方式是丢弃.);3捕捉(不执行默认动作,调用用户定义的函数)5>信号四要素:1编号,2名称;3事件;4默认处理 ;其中默认处理包括下图五项:man 7 signal //查看man文档,如果编号有三个的事件l

2020-11-19 15:43:51 205 1

原创 Linux 常规信号一览表

Linux 常规信号一览表SIGHUP:本信号在用户终端结束时发出,通常是在终端的控制进程结束时,通知同一会话期内的各个作业,这时他们与控制终端不在关联。比如,登录Linux时,系统会自动分配给登录用户一个控制终端,在这个终端运行的所有程序,包括前台和后台进程组,一般都属于同一个会话。当用户退出时,所有进程组都将收到该信号,这个信号的默认操作是终止进程。此外对于与终端脱离关系的守护进程,这个信号用于通知它重新读取配置文件。SIGINT:程序终止信号。当用户按下CRTL+C时通知前台进程组终止进程。SI

2020-11-13 14:33:42 178

原创 Linux进程控制4-进程间通信(IPC)

进程控制4-进程间通信(IPC)进程间的全局变量独立,另一个进程无法获得,因此要交换数据必须通过内核.(在内核区建立一块缓冲区,进程1把数据从用户空间写入内核缓冲区,进程2再从内核缓冲区读取数据称为IPC)常见的进程间的通信方式:1>管道(使用简单)2>信号(系统开销最小)3>共享映射区(无血缘关系)4>套接字(最稳定)1.管道解释:a:伪文件:文件类型包含:普通文件(-),目录(d),符号链接(l),套接字(s),块设备(b), 字符设备(c),管道(p),其中套接字(s),块设备(

2020-11-06 20:25:04 209

原创 Linux进程控制1-创建子进程

Linux进程控制-创建进程/进程共享创建子进程#include<unistd.h>#include<stdio.h>#include<stdlib.h>int main(){ printf("*****************\n"); /******************************************************* *函数:fork()  *头文件:#include <unistd.h> *格式

2020-11-06 10:29:10 326

原创 Linux进程控制2-exec函数族

exec函数族fork子进程后,父子进程使用的是同一代码,要想子进程执行父进程以外的代码,就需要调用exec函数族来实现.execlp()1>该函数通常用来调用系统程序:ls;date;cp…2>实现#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdio.h>#include <unistd.h>#include&lt

2020-11-05 17:40:03 277

原创 Linux进程控制3-子进程回收

Linux进程控制

2020-11-05 15:48:34 262

原创 linux系统环境变量

linux系统环境变量linux系统:多用户多任务(并行)的开源操作系统.环境变量1>环境变量:指定操作系统运行环境的参数.2>本质:字符串(NULL结尾)3>格式: 名称=值1:值24>环境变量表 (extern char ** environ) 命令行:env也可查看.#include<stdio.h>extern char** environ;/********************************************************输出当前进

2020-11-04 15:20:02 123

原创 进程相关的概念

进程相关的概念程序:编译好的二进制文件,(在磁盘上,不在内存上),不占用系统资源(cpu,内存,打开的文件,设备,锁…)进程:活跃的程序,占用系统资源.在内存中执行.并发:一个时间段有多个进行在运行,但在一个时间点只有一个进程在运行.1>区别单道程序设计模式与多道程序设计模式单道程序设计模式:一个cpu,多个任务,但计算机是一个任务运行完后再运行下一个任务(比如DOS系统)多道程序设计模式:一个cpu,多个任务,通过时钟中断分派cpu的运行时间给不同的进程.可以实现并行运行.(将cpu的运行时

2020-11-04 11:10:09 166

原创 linux系统I/O函数

linux系统I/O函数注意:调用系统函数注意返回值的判断对错误进行输出和形参的选择open()查看man文档:man 2 open //2 -第二章#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<stdio.h>#include <unistd.h>#include<stdlib.h>int main(){ int

2020-11-03 16:19:37 242

原创 虚拟地址空间

虚拟地址空间(用户区和内核区)a.out开始运行,系统就会分配0-4G的虚拟地址空间(32位(2^32=4G))(分了4G,用户用了多少磁盘才少多少空间,4G只是用户可用的)虚拟地址空间的作用:a:虚拟地址空间与物理地址空间映射,可以使虚拟地址空间访问一系列不连续的物理地址空间b:方便进程之间的隔离(不同进程的虚拟地址彼此隔离)c:方便系统使用内存(因为内存很小,数据和代码方便在内存与磁盘之间移动)用户区(0-3G)1>最底层受保护地址:比如NULL指针地址就是在这里.不允许占用.2>.

2020-11-01 16:31:48 491

原创 C库函数

- c库函数FILE *就是一个结构体.1>文件读写指针位,当我们写文件时,有一个指针进行位置索引,当我们要读文件时就要考虑当前文件读写指针的位置,如果在写文件时就开始读,读出来的数据是写入文件后的值.2>I/O缓冲区,作用:提升读写效率(硬盘的寻道时间(ms)与内存读写(ns)之间(缓存)的差距)3>通常通过fflush和fclose的方法来刷新缓存....

2020-11-01 15:28:02 250

原创 sudo rosdep init 问题

sudo rosdep init 问题:ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.办法:1>root权限打开/etc/hostssudo gedit /etc/hosts2>最后一行加上以下内容151.101.8

2020-10-30 16:03:00 163

原创 makefile

makefile(代码编译管理工具)命名方式1>makefile //全部小写2>Makefile //首字母大写makefile 的规则(三要素 :目标,依赖,命令)目标:依赖条件(table缩进)命令app是终极目标,:后面的是生成app所需要的依赖table换行然后写具体的实现命令 不直接写gcc -o app的好处是通过下面的几个语句,生成对应的.o文件,下一次编译的时候makefile会检查对应的依赖文件的修改时间,如果都晚于app的修改时间就不用编译,只编译时间早于app的

2020-10-29 20:46:39 373

原创 静态库,共享库(动态库)

静态库命名方式lib+库名字+.aeg:libMytest.a制作静态库步骤1>把所有的.c文件生成.o的二进制文件(防止用户看见源码)gcc *.c -c2>将生成的.o文件打包ar rcs 生成静态库的名字(libMytest.a) 依赖的所有.o文件发布制作的静态库和头文件(包含函数的接口)//这样用户就只有接口和二进制代码,规避了源码实现的方法.调用静态库的方式:1>gcc main.c -I include -L lib -l Mytest -o my

2020-10-28 11:44:52 137

原创 gcc编译的四个过程

1.gcc编译的四个过程

2020-10-27 10:06:00 185

原创 linux其他命令

linux其他命令man manecho “xx” eg: echo $ PATH($取地址)sudo poweroff(关机)sudo reboot(重启)sudo shutdown

2020-10-26 14:35:45 87

原创 linux ftp\nfs\ssh服务器搭建

linux ftp\nfs\ssh服务器搭建1.ftp服务器的搭建(vsftpd)作用:文件的上传和下载服务端(serve)1>安装 sudo apt-get install vsftpd(vsftpd需要安装)2>修改配置文件进入/etc/vsftdp.conf 进行相关的配置3>重启服务sudo service vsftdp restart客服端(client)1>安装 sudo apt-get install vsftpd(vsftpd需要安装,默认的服务

2020-10-23 16:15:14 172

原创 进程管理

进程管理1.who

2020-10-22 09:49:08 86

原创 linux打包压缩

linux打包压缩与常用的服务器1. 压缩包管理

2020-10-22 09:33:50 129

原创 Linux文件、目录操作

Linux文件操作目录1Linux文件操作1.命令解析器2.快捷键3.Linux系统目录(tree)4.用户目录5.文件和目录的操作(tree或ls)1.命令解析器shell-----unix系统bash-----linux系统本质:根据输入的命令去调用对应的可执行程序(bin目录里面)2.快捷键1.ctrl+b(f)光标快速左右移动 ctrl+a光标直接移动到头部 ctrl+e光标直接移动到尾部 ctrl+u删除光标前面的所有字符3.Linux系统目录(tree)/

2020-10-20 17:20:42 88

空空如也

空空如也

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

TA关注的人

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