- 博客(123)
- 收藏
- 关注
原创 操作系统之进程同异步、互斥
1、由迪杰斯特拉提出信号量机制;2、信号量是一种变量,表示系统中的一种变量;3、使用一对原语来对信号量进行操作,wait(s)原语和signal(s)原语,可以把原语比做一个函数,括号里面的s其实就是函数调用的时候传入的一个参数;一般把原语简称为 P,V操作;
2023-05-02 18:10:46
2840
原创 操作系统之内存管理
虚拟内存最大容量是计算机地址结构确定的虚拟内存的实际容量=min(内存和外存容量之和,CPU寻址范围)eg:某计算机地址结构为32位,按字节编址,内存大小为512MB,外存大小为2GB.则虚拟内存的最大容量为 2^32B=4GB虚拟内存的实际容量=min(2^32B,512MB+2GB)=2GB+512MB多次性:无需在作业运行时一次性全部装入内存,而是允许被分成多次调用内存对换性:在作业运行时无需一直常驻内存,而是允许在作业运行过程中,将作业换入换出。
2023-04-30 22:37:24
1806
原创 操作系统的进程调度
一、操作系统的调度时机1、什么时候进行进程调度?主动放弃(进程正常终止、运行过程中发生异常而终止、进程主动请求阻塞)被动放弃(分给进程的时间片用完、有更紧急的事需要处理、有更高优先级的进程进入就绪队列)2、什么时候不能进行进程调度?(1)处理中断;(2)访问临界区(临界区:在操作系统内核中,临界区是指一个程序段,它需要独占地访问某个共享资源,例如硬件设备或共享数据结构,以避免并发访问所导致的不一致性和错误。当一个进程进入临界区时,其他进程必须等待该进程退出临界区才能访问共享资源);
2023-04-30 17:51:04
2308
原创 操作系统之线程
最开始的并发,只能更具切换进程的方式去交替执行进程来宏观上并发,但是切换进程需要切换执行进程的环境,有很大的系统开销,所以产生了线程,让其可以不用频繁的切换进程,使得线程成为CPU执行的基本的单位。线程分为用户级线程(UTL)和内核级线程(KTL),用户级线程就是用户视角能看到的线程,内核级线程就是操作系统视角能看到的线程;同一进程中的线程切换,不会引起进程切换。不同进程中的线程切换,会引起进程切换。同一进程的不同线程间共享进程的资源。切换同进程内的线程,系统开销很小。n个ULT映射到n个KLT。
2023-04-30 17:18:40
1192
原创 操作系统进程概述、通信
原语的执行具有原子性,即执行过程只能一气呵成,所以有开中断和关中断,在开中断和关中断之间,如果存在其他的中断信号,不会去执行其他的中断信号;引起进程切换的事件:当前进程事件片到、有更高优先级的进程到达、当前进程主动阻塞、当前进程终止。就绪状态:已经具备运行条件,但是没有空闲的CPU,暂时不能运行(CPUX,其它资源√)引起进程阻塞的事件:需要等待系统分配某种资源、需要等待相互合作的其他进程完成工作。(1)直接传递:进程对进程,直接标注PID指出发送给那个进程;1、进程控制就是实现进程的状态转换;
2023-04-30 17:05:26
910
原创 内核中断体系
由于程序的运行,操作系统会将CPU的主动权让给应用程序,当操作系统想收回CPU的主动权的时候,就需要使用中断信号来将运行的应用程序中断,使其从用户态转换为内核态;不同的中断信号,需要不同的中断处理程序来处理,当CPU检测到中断信号的时候,去查询中断向量表,找到相对应的中断处理程序来处理中断。(1)陷入:应用程序想请求操作系统内核的服务,此时会执行一条特殊的指令,陷入指令,该指令会引起内部中断信号;(2)故障:由错误的条件引起的,可能被内核程序修复,内核程序修复后会将CPU的使用权还给操作系统;
2023-04-30 14:23:25
252
原创 操作系统概述
一、简单描述1、系统资源的管理者;2、最接近硬件的一层软件;3、向上层提供方便容易使用的服务;二、提供的功能1、处理机管理;2、储存器管理;3、文件管理;4、设备管理;举例说明:打开QQ的时候,需要找到安装的位置(文件管理),双击打开qq的时候需要将qq放入到内存中去(储存器管理),qq程序被处理机处理,开qq视频的时候需要获取摄像头的权限(设备管理);三、封装思想。
2023-04-29 23:52:27
1779
原创 前端控件相关问题
前端控件相关问题一、select框动态加载后只能使用一次change函数解决办法:(不能直接使用change函数) $("#document").on('click','#id',function (){ //执行方法 }二、Table框出现display后乱序问题解决办法:display属性block换成table-row $("tr[name=hpshow]").css("display","table-row")后续继续更新...
2021-09-27 00:30:36
125
原创 go语言网页的模板技术
go语言网页的模板技术一、循环{{range $i, $v := $.AtkTeam}}{{$v}}{{end}}{{range $i, $v := . }}{{$v}}{{end}}注意传值的时候需要结构体字段大写,设置为公有字段二、判断{{if eq .var1 .var2}} {{end}} //等于{{if ne .var1 .var2}} {{end}} //不等于{{if lt .var1 .var2}} {{end}} //小于{{if gt .va
2021-09-26 00:54:00
247
原创 SSH连接失败,远程登录错误解决办法
Linux远程登录错误解决办法一、远程连接1、ssh连接出现了错误2、需要删除known_hosts(在/home/ubuntu/.ssh)ssh-keygen -R IP地址 //删除相关的信息3、Rsync传文件失败问题解决:忘记加-R如果看完对自己有所帮助,请点赞支持...
2021-09-25 22:22:54
1420
原创 开发环境配置
开发环境配置一、ubuntu的安装1、更换apt-get的源为阿里云源(1)复制原文件备份sudo cp /etc/apt/source.list /etc/apt/source.list.bak(2)将原来的列表删除,添加如下内容sudo vim /etc/apt/source.list(3)添加如下内容#deb包deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiversedeb h
2021-09-13 22:57:45
124
原创 NAT与桥连接的区别
NAT与桥连接的区别NAT相当于是局域网中的局域网,把192.168.21.1当作外网ip,重新划分了一个网关(192.168.33.x)网桥只是把网络桥接起来,还是原来的网关(192.168.21.x),虚拟机相当于和宿主机是平行关系...
2021-09-13 21:20:24
240
原创 Swagger的生成接口文档
Swagger的生成接口文档一、背景前后端之间约定好使用Restful风格的API进行数据通信,此时如果我们能够提供一份清晰明了的接口文档,能够极大的提高效率二、安装1、2、使用三步骤(1)按照swagger要求给接口代码添加声明式注释,具体参照声明式注释格式;(2)使用swag工具扫描代码自动生成API接口文档数据;(3)使用gin-swagger渲染在线接口文档页面;...
2021-07-27 20:23:38
935
原创 Air监听代码神器
Air监听代码神器一、作用在使用Go语言的gin框架在本地做开发调试的时候,经常需要在变更代码之后频繁的按下Ctrl+C停止程序并重新编译再执行,这样就不是很方便。二、安装AirGogo get -u github.com/cosmtrek/airMaccurl -fLo air https://git.io/darwin_airLinuxcurl -fLo air https://git.io/linux_airWindowscurl -fLo air.exe https://
2021-07-15 23:42:14
352
原创 Makefile介绍
Makefile介绍一、作用借助Makefile我们在编译过程中不再需要每次手动输入编译的命令和编译的参数,可以极大简化项目编译过程,比如go build等等编译命令。二、Make工具make是一个构建自动化工具,会在当前目录下寻找Makefile或makefile文件。如果存在相应的文件,它就会依据其中定义好的规则完成构建任务。三、MakeFile结构[target] : [prerequisites]<tab>[command]targets:规则的目标prerequis
2021-07-15 23:12:38
208
原创 Gin实现论坛(一)
Gin实现投票论坛本项目使用CLD的分层一、用户建表二、分布式ID生成器1、雪花算法go的实现(1)第一种轻量雪花算法实现(2)索尼公司雪花算法的实现三、注册业务的逻辑路由根据地址->Controller控制器(进行参数校验、跳转业务处理(跳转到logic层)、返回响应),同理在处理logic层的时候可能需要dao层的mysql数据注册流程的实现:1、router包跳转路由;2、controller包获取参数进行数据验证(validator库进行校验,翻译器
2021-07-15 22:54:13
560
1
原创 GoWeb脚手架的搭建
GoWeb脚手架的搭建以下内容搭建一个Go Web较为通用的脚手架模板一、加载配置文件在init中使用Viper加载配置文件(包含mysql,redis,app,log等配置),最好使用结构体,这样容易交接二、初始化配置文件初始化日志log(zap日志系统)、初始化mysql配置,初始化redis操作三、注册路由将Gin中注册路由信息,返回r四、优雅关机与平滑重启...
2021-07-13 20:29:00
521
1
原创 Linux下安装redis
Linux下安装redis一、redis相关资源:Redis 官网:https://redis.io/Redis 在线测试:http://try.redis.io/Redis菜鸟教程: https://www.runoob.com/redis/redis-tutorial.html二、安装过程1、输入命令下载redis sudo apt-get install redis-server //下载redis ps -aux|grep redis //查看redis是否安装成功2、
2021-07-12 15:41:56
99
原创 Linux环境下安装Git
Linux环境下安装Git一、官网查看最新版本https://github.com/git/git/releases二、步骤1、下载tar压缩包或者直接命令下载wget https://github.com/git/git/archive/v2.17.0.tar.gz2、解压下载的git压缩包tar -zxvf v2.17.0.tar.gz3、安装源码所需依赖yum install curl-devel expat-devel gettext-devel openssl-devel
2021-07-08 10:12:01
539
原创 Go语言的Zap日志库
Go语言的Zap日志库一、为什么使用?1、对于go内置的log库,只有print级别,不存在多级别的日志,并且错误日志Fatal和panic也是调用了os.Exit(0)会直接退出程序,所以需要使用Zap的日志库;2、Uber-go zap提供了结构化日志记录和Printf风格的日志记录;二、使用1、定义...
2021-07-08 02:20:40
712
原创 Gin框架源码解析
Gin框架源码解析一、Radix树的介绍1、基本概念:基数树又被称为PAT树,是一种更省空间的前缀树,对于基数树的每个节点,如果节点是唯一的子树的话,就和父节点合并,比如如下的字母,都有r开头,所以r为总父节点,然后依次排序下去。应用:关键词猜想(输入字就联想),屏蔽一些关键词二、Gin中请求处理路由路径的实现根据Get方法的路由,按照PAT树的规则来寻找路径由此可以看处Gin就是一棵树,通过PAT树一层一层的寻找到三、请求方法树底层解析定义了容量为9的切片,里面储存http获取请求的
2021-07-06 00:07:42
422
原创 Beego开发博客
Beego开发博客一、bee工具的使用1、安装bee工具go get -u github.com/beego/bee/v2//安装完成后直接在终端输入bee获取环境安装完之后,bee 可执行文件默认存放在 $GOPATH/bin 里面,所以您需要把 $GOPATH/bin 添加到您的环境变量中,才可以进行下一步。2、new命令new 命令是新建一个 Web 项目,我们在命令行下执行 bee new <项目名> 就可以创建一个新的项目。但是注意该命令必须在 $GOPATH/src
2021-07-05 20:55:28
551
1
原创 Linux下docker的安装
Linux下docker的安装一、一键安装1、解开缓存锁sudo rm /var/lib/dpkg/lock-frontend参考文章:https://www.jianshu.com/p/2cf59e3d99fc2、使用官方一键安装curl -sSL https://get.daocloud.io/docker | sh后续继续更新相关操作...
2021-06-20 11:45:58
107
原创 Linux环境go环境搭建与安装
Linux环境go环境搭建与安装一、Ubant与Vm官网下载1、Ubantu下载网址https://releases.ubuntu.com/20.04/2、版本的区别Desktop image,Server install CD,Alternate install CD分别对应:桌面版,服务器版,订制版二、ubuntu的安装1、参考网址:https://www.linuxidc.com/Linux/2020-03/162547.htm2、安装好之后修改分辨率就可以全屏显示;三、golan
2021-06-20 11:19:24
234
原创 Vue学习(三)
Vue学习(三)一、脚手架搭建vue二、路由设置三、子路由四、Vue传参1、URL传参发送接收2、声明式传参四、Vuex1、store方法,储存现有状态2、模块化modoule
2021-06-18 23:58:15
76
原创 Vue学习(二)
Vue学习(二)一、method方法二、computed方法相当于更新dat中的数据,对数据进行预处理四、watch选项当数据发生变化的时候触发深度监听单独针对某个对象监听五、filters选项过滤器将数据转换格式展示给用户,将输入的值首字母大写...
2021-06-18 23:57:57
109
原创 Vue学习(一 )
Vue基础学习一、HelloWord以及插值表达式二、vue双向绑定自动去空格三、vue的常用指令1、v-if,v-else2、v-show没有执行的时候标签就会渲染,v-if不会渲染。3、v-for4、v-bind绑定绑定class绑定style5、v-on点击事件6、简单分页操作7、v-text覆盖标签的内容8、把内容渲染成html9、v-pre不想被渲染10、v-once只渲染一次四、vue的生命周期五、vue的组件1、全局组件
2021-06-18 23:57:43
98
原创 Gin学习
Gin学习一、导入包进行初始服务package mainimport "github.com/gin-gonic/gin" //引入gin包func main() { r := gin.Default() r.GET("/pings", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.Run() // listen and serve on 0.0.0.0:8080}二、发送请
2021-06-18 23:54:46
266
原创 Grom学习之路
Grom学习之路(一)一、orm的背景1、作用(1)通过操作结构体对象,来达到操作数据库表的目的;(2)通过结构体对象,来生成数据库表;2、优点:二、grom的连接数据库,建表1、因为grom只能对表进行操作,所以需要搭配sql语句来...
2021-06-18 02:22:04
1389
1
原创 微服务之gRPC
微服务之gRPC一、gRPC基础作用:Protobuf在编译的时候,不会自动编译服务,要想使之编译,需要使用gRPC。编译指令:使用上述的编译方式,编译出来的就是RPC的封装服务的思想二、gRPC的环境配置三、grpc的使用1、服务端的使用2、客户端的使用如果看完对自己有所帮助,请点赞支持,谢谢大家...
2021-06-13 17:23:53
492
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人