- 博客(73)
- 收藏
- 关注
原创 Lua学习笔记(一)
1: 高效的,轻量级的,嵌入式脚本语言;2: Lua是一个语言标准;3: 脚本语言有对应的解释器(虚拟机),解释器有两个分支: 官方lua, LuaJIT(高效,即时编译技术);
2022-09-07 10:34:17
1721
原创 Erlang笔记
erlang所有的语句都要加句号(.)英文点,比如查看当前目录。win+r 中输入”cmd“ 打开控制台,输入werl。官网下载64位安装包,将bin目录放到环境变量中。打开erlang命令行工具。创建一个test.erl。控制台输入ctrl+g。数值(整数和浮点数)
2022-09-05 17:31:40
591
原创 文件的异步读写
4异步可以同时处理多个请求,发出请求后,等待所有的这些事件,随着他们的结束再处理,继续等待;1普通的读写文件打开文件都是同步的,比如C的fopen,fclose,fread等;2创建一个OVERLAPPED对象,传递给OS,携带一个事件,当读完成后,触发事件;4高性能的服务器,提高并发,读写文件都会采用异步的模式。2在内核等的同步,灵活度不够,真只能等一个,但是简单;1都是要等,一个是在用户面来控制,一个是在内核控制;3用户来控制等待,可以同时等多个处理;...
2022-07-31 21:11:30
2114
原创 WIN32下Socket最简单的实现,Select模型,IOCP_demo
1IOCP是windows针对高性能服务器做的IO的管理模式,又叫完成端口;3socket的读和写仍然是同步的,我们发送和接受数据的时候会等在网卡上面;1性能不好,每次有事件的时候都要遍历所有的句柄,然后查是哪个句柄的事件;2能够管理的句柄的数目是有限制的,2048个。上述方法一次只能接入一个连接.下面使用select。...
2022-07-30 20:50:18
942
原创 C++后台面试题汇总---持续更新中
从以下几个方面去讨论static的作用修饰的对象: 变量, 函数使用场景:作用是避免了命名重复, 对其他源文件隐藏该变量和隔离错误的作用,有利于模块化程序const关键字的作用:修饰变量两种:全局const和局部const,**注意:**在C语言中,局部const是可以通过指针进行修改的,而在C++中,会把const修饰的所有常量会加载到符号表当中,每次获取const常量都会在符号表中查询,因此C++中的局部const成员无法修改,而全局const不管C/C++都不能通过指针修改另外,关于const
2022-07-04 22:06:17
761
原创 算法---贪心算法
贪婪算法(贪心算法) 是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有 利)的选择,从而希望能够导致结果是最好或者最优的算法。 请看下面案例,假设有如下课程,希望尽可能多的将课程安排在一间教室里:这个问题看似要思考很多,实际上算法很简单:贪婪算法所得到的结果往往不是最优的结果(有时候会是最优解),但是都是相对近似(接近)最 优解的结果。 贪婪算法并没有固定的算法解决框架,算法的关键是贪婪策略的选择,根据不同的问题选择 不同的策略。基本思路...
2022-06-15 10:06:56
222
原创 算法---动态规划
一个楼梯有n个台阶,一次可以上1级台阶,也可以上2级台阶,求总共有多少走法?如图: 假如台阶有3级(n=3)第一种走法: 一次走1级二: 先走2级,再走1级三: 先走1级,再走2级共有3种走法.当然,随着台阶的增多,走法会越来越多,如果用常规的算法,一步一步去试的话,台阶越多越麻烦.分治法: 从上往下分析问题, 大问题可以分解为子问题, 子问题还有更小的问题例: 比如现在总共有5级台阶求多少种走法,由于每次可以走一级或者两级台阶,那么就可以拆分成两种情况:将求n级台阶共有多少走法用f(n)f
2022-06-10 17:59:34
155
原创 数据结构和算法的基本概念, 算法复杂度,时间,空间复杂度
目录概念大O时间复杂度表示法看几个例子(加法规则)(乘法规则)例子算法时间复杂度计算规则常见算法时间复杂度O(1)O(1)O(1):常数阶O(log2n)O(log_2^n)O(log2n):对数阶O(O(O(nnn ×\times× log2n)log_2^n)log2n):线性对数阶O(n2)O(n^2)O(n2):平方阶O(m∗n)O(m*n)O(m∗n)O(m+n)O(m+n)O(m+n)最好、最坏、平均情况时间复杂度总结排序空间复杂度概念a)数据结构:是研究数据之间组织结构的一门学科。数
2022-05-04 15:33:25
1044
1
原创 同步IO和异步IO, 五种网络IO模式,select/poll/epoll
同步IO和异步IO场景1: 小明去打开水,而开水塔此时没有水,小明在现场一直等待开水到来,或者不断的轮询查看是否有开水,直到有开水取到水为止,这是同步IO的一种案例!同步IO的特点:同步IO指的是用户进程触发I/O操作并等待或者轮询的去查看I/O操作是否就绪。同步IO的执行者是IO操作的发起者。同步IO需要发起者进行内核态到用户态的数据拷贝过程,所以这里必须阻塞场景2: 小明去打开水,而开水塔此时没有水,开水塔的阿姨叫小明把水壶放到现场,来水后会帮他打好水,并打电话叫他来取,这是异步IO的一种案
2022-04-24 14:25:25
1358
原创 版本控制----Git
目录安装Git创建仓库初始化一个裸仓库从中央服务器的数据拉倒本地来git的原理---git的四个区域实操用add加到暂存区中再从暂存区放到本地仓库通过git log查看提交信息推送到远端仓库逆向操作从暂存区退到工作区从本地仓库退回reset命令参数说明整理操作安装GitGit安装连接无脑下一步即可创建仓库安装完成后,在电脑上找一个地方新建文件夹,进入,在当文件夹下,右键->选择"Git Bash Hare"当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,
2022-04-07 19:58:13
679
原创 Epoll
目录Epoll - IO多路复用怎么理解创建Epoll向EPOLL对象中添加、修改或者删除感兴趣的事件收集在epoll监控的事件中已经发生的事件完整代码Epoll - IO多路复用怎么理解类比快递员寄快递,传统方式是快递员挨家挨户上楼敲门现,在改为用快递柜子的方式,比如丰巢类似,现在这里有两个集合。1.住户所有人是一个集合。2.丰巢是一个子集,比如今天要寄快递的住户。epoll就是管理这两个集合。epoll_create相当于一栋楼,聘请了一个快递员,创建一栋楼epoll_ctl往楼里搬住
2022-04-03 22:47:40
1702
原创 Ubuntu18.04 配置VSCode远程 密钥登录
Ubuntu18.04 配置VSCode远程 密钥登录在cmd中首先本地机器得先安装了ssh,用于生成密钥ssh-keygen -t rsa -b 4096修改远程 Ubuntu系统的ssh配置文件sudo vim /etc/ssh/sshd_config这里最重要的是我们要把PubkeyAuthentication配置为yes允许使用基于密钥认证的方式登录。最后,将客户端的公钥id-rsa.pub文件上传到对应用户根目录的.ssh文件夹下,进入.ssh中将公钥的内容拷贝到authorize
2022-03-30 18:41:01
2147
原创 win10WSL--Linux LTS安装报错(Error Code: 0x8007019e,0x8000000D)
错误一:Error Code: 0x8007019eWslRegisterDistribution failed with error: 0x8007019e是因为系统未安装Windows子系统支持。解决方法:键盘行按键win+x,选择Windows PowerShell(管理员)输入Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux回车输入Y并重启。 重启打开Ubu
2022-03-30 16:47:29
8666
3
原创 在win10中安装linux--使用WSL
目录WSL安装安全性配置WSL linux的重启Ssh服务器怎么安装和启动:WSL安装控制面板->程序->启用或关闭Windows功能:勾选下边的 适用于Linux的Windows子系统并单击确定按钮。重启电脑完成请求。勾选下边的 适用于Linux的Windows子系统并单击确定按钮。重启电脑完成请求。进入windows商店:安装WSL创建一个新的用户名密码/mnt目录里的c,d,e就是win10下的盘符。装完后,装到了C:\Users\WPC4\AppData
2022-03-29 17:06:22
1794
原创 select()
目录fdset()原型fdset()#include <sys/select.h> int FD_ZERO(fd_set *fdset); int FD_SET(int fd, fd_set *fd_set); int FD_ISSET(int fd, fd_set *fdset);int FD_CLR(int fd, fd_set *fdset); (1)执行FD_ZERO(&fdset),则set用位表示是00000000,就是所有位都清空成0,一般刚
2022-03-23 20:18:05
678
原创 g++编译参数---CMake详细使用教程---Linux--基于VSCode和CMake实现C/C++开发--笔记
目录一:软件安装二:g++编译过程1.预处理-Pre-Processing (.i文件)2.编译-Compiling (.s文件)3.汇编-ASSembling (.o文件)4.链接-LinKing三: g++重要编译参数-g 编译带调试信息的可执行文件-O[n] 优化源代码-l 和 -L 指定库文件 | 指定库文件路径-I 指定头文件搜索目录-Wall 打印警告信息-w 关闭警告信息-o 指定输出文件名-D 定义宏四:编译实战1.直接编译 2
2022-03-22 00:00:47
3753
原创 vscode常用操作
目录vscode常用操作改字体Ubuntu18.04 配置VSCode远程 密钥登录设置主题vscode常用操作滚轮调整字体大小:设置里,打开settings.json文件"editor.mouseWheelZoom": true改字体这个要先下载Source Code Pro, 'Source Code Pro', Source Code Pro重启sshservice ssh --full-restartUbuntu18.04 配置VSCode远程 密钥登录首先本地机器得
2022-03-14 23:26:56
815
原创 进程间通信(4)---共享内存
目录共享内存机制两种常用共享内存方式System V版本的共享内存 shmm文件映射 mmap共享内存操作ftok()shmget()shmat()共享内存机制是允许两个或多个进程(不相关或有亲缘关系)访问同一个逻辑内存的机制。它是共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。两种常用共享内存方式System V版本的共享内存 shmm1.多个进程直接共享内存原理: 利用共享内存完成进程间通信,两个进程都通过虚拟地址空间到用户页表,然后通过用户级页表映射到
2022-03-13 23:01:04
1675
原创 Nginx的安装(Ubuntu)以及常用简介
Nginx安装安装前提gcc:pcre库:函数库,支持解析正则表达式apt-get install libpcre3-devzlib库:压缩解压缩apt-get install libz-devopenssl库: ssl功能相关库,用于网站加速更安全的SSL协议传输http,使用MD5,SHA1等散列函数,也需要安装(不懂,书上写的,装就是了)apt-get install libssl-dev源码下载nginx官网 http://www.nginx.org版本介绍mai
2022-03-12 18:59:50
3946
原创 进程间通信(3)---信号量
目录信号量引入什么是信号量信号量的使用semget()原型:功能:参数:返回值:信号量的操作semop()原型:功能:参数: 返回值:信号量的控制semctl()原型:功能:参数:可自定义如下:信号量引入红绿灯,通过灯的红灯绿灯亮起通知横向纵向的汽车,这种形式就是信号量程序中,有时存在一种特殊代码,最多只允许一个进程执行该部分代码。这部分区域,称为“临界区”然而在多进程并发执行时,当一个进程进入临界区,因某种原因被挂起时,其他进程就有可能也进入该区域(只能一个进程进), 所以这里期望它不要进来, 所
2022-03-10 21:17:04
787
原创 数据结构---队列
队列队列一. 队列(1)队列定义(2)顺序存储实现1.元素类型2.判断队列3.初始化队列4.元素插入5.遍历队列一. 队列(1)队列定义队列图示队列是一种受限制的线性结构只允许在表的前端(front)进行删除操作, 而在表的后端(rear)进行插入操作(2)顺序存储实现入队满队列1.元素类型#define MaxSize 5 //最大容量typedef int DataType; //元素类型typedef struct Queue{ Da
2022-03-10 10:08:52
960
原创 数据结构---顺序表
目录顺序表原理顺序表的算法实现顺序表的初始化顺序表增加元素顺序表插入元素顺序表删除元素顺序表销毁顺序表遍历完整代码顺序表原理顺序表是简单的一种线性结构,逻辑上相邻的数据在计算机内的存储位置也是相邻的,可以 快速定位第几个元素,中间不允许有空值,插入、删除时需要移动大量元素。顺序表的三个要素:用elems记录存储位置的基地址分配一段连续的存储空间size用length记录实际的元素个数,即顺序表的长度顺序表的算法实现顺序表的初始化#include <stdio.h>#
2022-03-06 18:26:57
1078
原创 进程间通信(2)---管道
目录进程间通信(2)管道管道使用方法实例1:单进程使用管道进行通信实例2:多进程使用管道进行通信实例3:子进程使用exec启动新程序时管道的使用实例4:关闭管道的读端/写端实例5 把管道作为标准输入和标准输出进程间通信(2)管道IPC 有多种方式, 管道是IPC的最基本的方式.(IPC指进程间通信)管道是“半双工”的,即是单向的。如图,如果线程A,B互相通信,则需要两个管道管道是FIFO(先进先出)的。我们把从一个进程连接到另一个进程的一个数据流称为一个管道,而管道是以文件的方式完成的进程通
2022-03-06 00:56:35
623
原创 进程/进程分类/进程间通信(1)--信号
目录进程创建进程销毁进程多进程高并发设计孤儿僵尸守护进程孤儿进程:僵尸进程:守护进程进程间通信信号信号由谁产生?常见信号表信号的处理进程创建进程创建进程,直接调用fork函数:#include <unistd.h> pid_t fork(void);负值:创建子进程失败。0:返回到新创建的子进程。正值:返回给父亲或调用者。该值包含新创建子进程的进程ID。#include <unistd.h>#include <stdio.h>int main()
2022-03-05 16:27:50
132
原创 项目日志/stdin, stdout, stderr/重定向/Log4cpp
项目日志stdin/stdout/stderr重定向Log4cppstep 1 : 安装log4cpp step 2 : 包含头文件step 3 : 初始化日志输出的目的地(appenders)step 4 : 设置日志输出的格式 step 4 : 设置类别输出的(category)和日志优先级(priority) step 5 : 定义一个宏 step 6 : 使用宏定义记录日志工程应用:stdin/stdout/stderr在通常情况下,Linux/UNIX每个程序在开始运行的时刻,都会打开3个已
2022-03-02 00:13:17
1296
原创 模板与泛型
目录模板定义函数模板定义形式模板说明函数定义函数模板调用非类型模板参数类模板的使用为什么需要类模板类模板作为函数参数类模板函数的三种表达描述方式所有的类模板函数写在类的内部所有的类模板函数写在类的外部,在一个cpp中所有的类模板函数写在类的外部,在不同的.h和.cpp中模板定义函数重载的例子#include <iostream>using namespace std;int Max(int a, int b){ return a>b ? a:b;}char Max(c
2022-02-28 15:53:16
863
原创 智能指针的用法shared_ptr
目录智能指针shared_ptr共享的智能指针shared_ptr的基本用法1.初始化reset成员函数make_sharedswap()函数2. 获取原始指针(get())3. 指定删除器使用shared_ptr要注意的问题1.慎用智能指针不要用一个原始指针初始化多个shared_ptr通过shared_from_this()返回this指针。补充: new\delete和malloc\freehttps://blog.youkuaiyun.com/A_With_better/article/details/12
2022-02-27 21:44:15
1876
原创 系统调用的概述
目录相关概念操作系统操作系统内核Linux操作系统Linux 的运行空间系统调用什么是系统调用为什么设置系统调用?系统调用实现原理执行系统调用的方法glibc库函数syscall调用相关概念操作系统管理计算机硬件与软件资源的软件,是用户与系统交互的操作接口,为它上面运行的程序提供服务。操作系统内核操作系统的核心。负责管理系统的进程、内存、设备驱动程序、文件和网络系统。一个内核不是一套完整的操作系统,如Linux。Linux操作系统基于Linux 内核的操作系统。通常由Linux内核、shel
2022-02-27 21:43:46
2133
原创 new和malloc的区别/其他补充calloc()/realloc()
目录malloc()calloc()realloc()new和malloc的区别malloc()#include <stdlib.h>void *malloc(size_t size)参数size – 内存块的大小,以字节为单位。返回值该函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。示例 char *str; str = (char *) malloc(15);补充两个其他C库函数calloc()描述C 库函数 voi
2022-02-26 15:04:17
178
原创 类成员函数指针
目录类成员函数指针普通成员函数虚成员函数静态成员函数类成员函数指针普通成员函数类被需要的时候会被载入内存,当然类成员函数也会被载入内存,所以类的成员函数是有真正的内存地址的,这个地址一般跟具体的类对象没有什么关系类成员函数指针,通俗的讲,是一个指针,指向类成员函数使用方法如下示例#include <iostream>#include <string.h>using namespace std;class CT{public: void func(int
2022-02-22 23:33:46
3196
原创 移动构造函数/移动赋值运算符/合成的移动操作
目录移动构造函数演示移动赋值运算符移动构造函数演示#include <iostream>using namespace std;class B{public: B() :m_bm(100) { cout << "执行了类B的构造函数" << endl; } B(const B& tmp) : m_bm(tmp.m_bm) { cout << "执行了一次类B的拷贝构造函数" << endl; } virtual ~B
2022-02-22 22:49:44
482
原创 Linux--文件操作
目录Linux的文件结构Linux的文件结构root:该目录为系统管理员(也称作超级管理员)的用户主目录。bin:bin是Binary的缩写, 这个目录存放着最经常使用的命令。boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。dev:dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。etc:所有的配置文件, 所有的系统管理所需要的配置文件和子目录都存放在这里。home:用户的
2022-02-22 22:16:44
746
原创 Makefile编写入门/CMake安装/简单介绍
目录程序的编译和链接传统方法示例Make 工作原理Makefile写法规则简单示例Make 总结Make 变量Make 自动推导程序的编译和链接使用C、C++编写可执行程序,首先要把源文件编译成中间代码文件,Linux下是 .o 文件,即 Object File,这个动作叫做编译(compile)。然后再把大量的Object File合成执行文件,这个动作叫作链接(link)。一个项目,拥有成百上千的源程序文件,编译链接这些源文件都是由规则的,而Makefile确定整个工程的编译规则,只需要一个mak
2022-02-18 22:37:09
925
原创 产生临时对象的情况和性能优化
目录产生临时对象的情况和解决方案1.以传值的方式给函数传递参数2.类型转换生成的临时对象/隐式类型转换以保证函数调用成功3.函数返回对象的时候产生临时对象的情况和解决方案1.以传值的方式给函数传递参数执行以下案例:传值时的赋值操作#include <iostream>using namespace std;class CTempValue{public: int val1; int val2;public: CTempValue(int v1 = 0, int
2022-02-11 23:13:26
511
原创 左值/右值/左值引用/右值引用/move的用法介绍
目录问题左值和右值概念总结:需要用到左值的运算符:问题什么是左值和右值?什么是左/右值引用?左/右值引用的作用是什么?move的用法?左值和右值声明:这里只做理解性介绍一般来讲,需要名字(变量名)来表示内存中的某些数据,如int i = 100;这里, “i"是一个整形变量, 也可以叫做对象, 对象指的就是一块存储区域.左/右值解释:左值,从字面意思来讲就是:“能用在赋值语句等号左侧的内容”,(它得代表一个地址),为了把左值这个概念阐述的更清楚, 又定义了"右值"的概念,他是为了对
2022-02-10 19:05:00
1073
原创 win10连不上samba解决办法,共享文件夹能ping通但是连不上,解决办法
关于共享文件夹网上的很多方法都不对,尝试失败的可以试试这个方法修改Windows安全配置(win+R),运行(输入)gpedit.msc管理面板->网络->lanman工作站->启用不安全的来宾登录选择启用并保存.连接成功...
2022-02-09 23:00:43
3465
原创 source insight使用---tab补齐提示,大括号对齐
目录大括号自动缩进问题tab补齐提示其他大括号自动缩进问题主要就是设C Source File和C++ Source File,选好后点右边中间的Auto Indent调整缩进。单选里一定要点Smart,右边有两个复选框Indent Open Brace和Indent Close Brace,把两个复选框都取消掉。然后点OK.完成tab补齐提示vs用户习惯tab补齐提示内容,这里原本是回车.其他...
2022-01-14 10:37:45
3452
2
原创 dynamic_cast的详细用法,typeid运算符简介
RTTIdynamic_cast详细用法dynamic_cast详细用法代码演示:下面根据这个例子讲:father.h#pragma once#include <iostream>using namespace std;class Father{public: Father(); virtual ~Father(); virtual void play();};father.cpp#include "Father.h"Father::Father(){
2021-12-14 16:17:11
2096
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人