自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker compose简单入门

什么是Docker composeDocker-Compose 是用来管理容器的,类似用户容器管家,我们有N多台容器或者应用需要启动的时候,如果手动去操作,是非常耗费时间的,如果有了 Docker-Compose 只需要一个配置文件就可以帮我们搞定,但是 Docker-Compose 只能管理当前主机上的 Docker,不能去管理其他服务器上的服务。意思就是单机环境。使用docker compose的三个步骤为:使用 Dockerfile 定义应用程序的环境。使用 docker-compose.ym

2022-03-17 22:33:00 1356

原创 Dockerfile简单入门

什么是DockerfileDockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。如何使用Dockerfile例如,要构建一个nginx的镜像,且构建好的镜像内部会有一个index.html文件,可以在在一个新的Dockerfile文件,并在其中添加以下内容。FROM nginxRUN echo '这是一个本地构建的nginx镜像' > /usr/share/nginx/html/index.html这两行命令的作用后面会详细说明,这里只用知道定

2022-03-17 20:30:09 1131

原创 Docker常用命令总结

Docker容器的使用查看Docker的所有命令docker查看某个命令详细的帮助,用 --helpdocker command --help拉取镜像docker pull centos启动容器参数说明:i:交互式的操作t:中端/bin/bash 房子镜像名后面,是命令,在这里是一个交互式的Shelldocker run -it ubuntu /bin/bash使用该命令会在启动容器后进入ubuntu容器的内部,要退出可以用exit查看所有容器的命令如下:docker

2022-03-16 22:22:49 189

原创 MySql复习

继续复习MySql知识点数据库连接池该设置为多大?连接数 = ((核心数 * 2) + 有效磁盘数)公理:你需要一个小连接池,和一个充满了等待连接的线程的队列无需寻址和没有旋回耗时意味着更少的阻塞,所以更少的线程[更接近于CPU核心数]会发挥出更高的性能。只有当阻塞创造了更多的执行机会时,更多的线程数才能发挥出更好的性能。多字段的联合索引在查询单个字段时是否用到索引?查询时使用联合索引的一个字段,如果这个字段在联合索引中所有字段的第一个,那就会用到索引,否则就无法使用到索引。...

2022-02-25 14:43:00 108

原创 MySql知识点复习

最近为了准备找工作开始复习一些基础知识,在这里记录一下一些被遗忘的知识。Buffer Poll 和 Change Buff首先贴一张InnoDB的架构图:Buffer Pool是InnoDB存储引擎层的缓冲池,不属于MySQL的Server层,跟8.0删掉的“查询缓存”功能不是同一个概念,在内存中以页(page)为单位缓存磁盘数据,是一个链表的数据结构,用LRU来进行管理,减少磁盘IO,提升访问速度缓冲池大小默认128M,独立的MySQL服务器推荐设置缓冲池大小为总内存的80%。主要存储数据页、索引

2022-02-24 23:07:15 418

原创 MySql的行锁,表锁和全局锁

对记录加锁时,加锁的基本单位是 next-key lock,它是由记录锁和间隙锁组合而成的,next-key lock 是前开后闭区间,而间隙锁是前开后开区间。但是,next-key lock 在一些场景下会退化成记录锁或间隙锁:唯一索引等值查询:当查询的记录是存在的,next-key lock 会退化成「记录锁」。当查询的记录是不存在的,next-key lock 会退化成「间隙锁」。非唯一索引等值查询:当查询的记录存在时,除了会加 next-key lock 外,还额外加间隙锁,也就是会加两

2022-02-24 22:26:12 218

原创 手写一个简单的RPC框架

最近在学习Netty框架,为了学以致用,决定自己实现一个简单的RPC框架,目前已经实现了RPC框架的基本功能,其余的改进尚在进一步完善中,github地址:https://github.com/13350747533/HahaRpc在这里记录一下简单的思路:服务注册与发现:首先是服务的注册与发现,本项目使用的是zookeeper来作为注册中心,使用ZKClient来对zookeeper的节点进行管理。服务发现的代码:public String discovery(String serviceNam

2022-02-12 21:36:19 1953

转载 进程的原语

原文链接:http://blog.sina.com.cn/s/blog_65127e430100h41d.html1.创建进程原语Create()参数说明:被创建进程的外部标识符n、初始CPU状态S0(包括CPU的工作方式、进程起始地址以及屏蔽码等)、进程优先数K0、初始内存M0以及所需资源的清单R0等、某进程运行的中间结果acc创建过程如下:首先,从PCB集合种索取一个空白PCB,并获得该PCB的内部标识符i ;然后,把调用者提供的参数,以及从执行过程EP中获得的调用者内部标识j ,填入该PCB

2022-01-02 23:12:32 3930

原创 操作系统实现互斥的几种方案

屏蔽中断在单处理器系统上,最简单的解决方案是让每个进程在进入临界区后立即屏蔽所有中断,并在离开临界区之前重新启用它们。屏蔽中断后,时钟中断也会被屏蔽。CPU 只有发生时钟中断或其他中断时才会进行进程切换。这样,在屏蔽中断后 CPU 不会切换到其他进程。所以,一旦某个进程屏蔽中断之后,它就可以检查和修改共享内存,而不用担心其他进程介入访问共享数据。这个方案可行吗?进程进入临界区域是由谁决定的呢?不是用户进程吗?当进程进入临界区域后,用户进程关闭中断,如果经过一段较长时间后进程没有离开,那么中断不就一直启用

2022-01-02 20:30:55 2062

原创 操作系统的中断功能

操作系统对中断信号处理的实现。操作系统对中断信号的处理实际是对硬件中断的一种模拟, 所以在在讨论这个问题之前, 先了解一下8086计算机硬件中断的原理。CPU在INTR引脚上接到一个中断请求信号,如果此时IF=1,CPU就会在当前指令执行完以后开始响应外部的中断请求,这时,CPU在INTA引脚连续发两个负脉冲,外设在接到第二个负脉冲以后,在数据线上发送中断类型码,接到这个中断类型码后,CPU做如下动作:1)将中断类型码放入暂存器保存;2)将标志寄存器内容压入堆栈,以保护中断时的状态;3)将IF和T

2022-01-01 21:10:57 897

转载 CPU密集与IO密集型区别

CPU 密集型(I/O bound)CPU密集型也叫计算密集型,指的是系统的硬盘、内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/内存),I/O在很短的时间就可以完成,而CPU还有许多运算要处理,CPU Loading很高。CPU密集的意思是该任务需要大量的运算,而没有阻塞,CPU一直全速运行。CPU密集任务只有在真正的多核CPU上才可能得到加速(通过多线程),而在单核CPU上,无论你开几个模拟的多线程该任务都不可能得到加速,因为CP

2022-01-01 21:09:38 473

转载 操作系统之陷阱,中断和异常

在操作系统中,陷阱,中断和异常是常见的术语,它们贯穿操作系统学习的始终,这篇文章主要区分它们之间的不同。陷阱计算机有两种运行模式:用户态, 内核态。 其中操作系统运行在内核态,在内核态中,操作系统具有对所有硬件的完全访问权限,可以使机器运行任何指令;相反,用户程序运行在用户态,在用户态下,软件只能使用少数指令,它们并不具备直接访问硬件的权限。这就出现了问题,假如软件需要访问硬件或者需要调用内核中的函数该怎么办呢,这就是陷阱的作用了。陷阱指令可以使执行流程从用户态陷入内核(这也就是为什么叫做陷阱,而不是捕

2022-01-01 20:13:12 1987

转载 X86汇编指令集

为了方便总结整理,本文直接转载了大佬文章,如有不妥,本人会立即删除。原文链接:https://blog.csdn.net/bjbz_cxy/article/details/79467688X86和X87汇编指令大全(有注释)---------- 一、数据传输指令 ----------------------------------------------------它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展

2022-01-01 17:31:11 232

转载 CPU中的主要寄存器

最近在重新学习计算机基础,为了方便整理,这里直接转载了大佬的文章。原文链接:https://blog.csdn.net/qq_36838191/article/details/83216837在CPU中至少要有六类寄存器:指令寄存器(IR)、程序计数器(PC)、地址寄存器(AR)、数据寄存器(DR)、累加寄存器(AC)、程序状态字寄存器(PSW)。这些寄存器用来暂存一个计算机字,其数目可以根据需要进行扩充。数据寄存器数据寄存器(Data Register,DR)又称数据缓冲寄存器,其主要功能是作

2022-01-01 17:20:54 9905

原创 计算机硬件介绍之内存

计算机中第二个主要的组件就是内存。理想情况下,内存应该非常快速(比执行一条指令要快,从而不会拖慢 CPU 执行效率),而且足够大且便宜,但是目前的技术手段无法满足三者的需求。于是采用了不同的处理方式,存储器系统采用一种分层次的结构。存储结构层次图:图片上传失败??顶层的存储器速度最高,但是容量最小,成本非常高,层级结构越向下,其访问效率越慢,容量越大,但是造价也就越便宜。1.寄存器存储器的顶层是 CPU 中的寄存器,它们用和 CPU 一样的材料制成,所以和 CPU 一样快。程序必须在软件中自行管理

2022-01-01 17:13:39 325

原创 操作系统概念与计算机硬件介绍之CPU

一句话介绍操作系统:架在用户与底层系统之间的桥梁。软件中最基础的部分是操作系统,它运行在 内核态 中,内核态也称为 管态 和 核心态。操作系统具有硬件的访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在 用户态 下。用户接口程序(shell 或者 GUI) 处于用户态中,并且它们位于用户态的最低层,允许用户运行其他程序,例如 Web 浏览器、电子邮件阅读器、音乐播放器等。管态和目态:是什么1 . 管态又叫特权态,系统态或核心态。CPU在管态下可以执行指令系统的全集。通常,操作系统在管态下

2022-01-01 16:27:41 1754

原创 操作系统学习笔记

从今天开始系统学习操作系统的知识,简单记录一下几个要点。1.父进程与子进程的资源关系子进程得到的是除了代码段是与父进程共享的以外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。,两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行。(采用写时复制技术)从理论上父进程创建子进程以后,子进程就拥有了自己的进程表和堆栈空间,数据段空间,仅仅代码段与父进程相同。感觉好像堆栈空间,数据段空间与父进程一旦脱离,此时,

2021-12-30 00:15:43 330

原创 记一道算法题12.27

剑指 Offer 11. 旋转数组的最小数字把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一次旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0解法:class Solution { publ

2021-12-27 23:48:14 75

原创 Java并发-笔记及要点(一)

1Java实现并发的两种基本方式 :1)实现Runnable接口,并实现run()方法,创建一个Thread对象,将Runnable的实现类作为参数传入构造方法,启动Thread对象的start()方法2)直接继承Thread类,重写run()方法,调用start()方法。 !!!!此方法不在推荐,应该讲要并行运行的任务与运行机制解耦。2直接调用run()方法,只会执行同一个线程中的任务,不会启动新任务。3 interrupt()对每一个线程调动interrupt()方法时,线程的中断状态

2021-03-27 14:56:40 92

原创 Zookeeper环境搭建和简单使用

Zookeeper学习笔记(1)环境搭建单机环境搭建(1)解压后,在目录下创建data目录(2)在conf目录下,把zoo_simple.cfg改名为zoo.cfg,并进入该文件,把dataDir改为你创建的data的路径。(3)修改admin.serverPort,确认其端口号没有被占用。集群环境搭建(1)安装多次zookeeper,每个zookeeper都在按照单机模式配置好后再zoo.cfg最下面追加配置:server.myid=ip:通信端口号:选举端口号server.1=0.0.

2021-03-20 21:18:25 204

原创 zookeeper的leader选举算法

ZAB协议当整个集群启动过程中,或者当 Leader 服务器出现网络中弄断、崩溃退出或重启等异常时,Zab协议就会 进入崩溃恢复模式,选举产生新的Leader。当选举产生了新的 Leader,同时集群中有过半的机器与该 Leader 服务器完成了状态同步(即数据同步)之后,Zab协议就会退出崩溃恢复模式,进入消息广播模式。这时,如果有一台遵守Zab协议的服务器加入集群,因为此时集群中已经存在一个Leader服务器在广播消息,那么该新加入的服务器自动进入恢复模式:找到Leader服务器,并且完成数据同步

2021-03-19 16:03:11 158

原创 SpringBoot使用注解简单整合Dubbo

服务提供者引入maven依赖</properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <gro

2021-03-18 20:39:08 195

原创 阿里云服务器上安装zookeeper踩坑

配置完成后启动失败,报错Failed to Start,使用./zkServer.sh start-foreground查看启动报错的原因。org.apache.zookeeper.server.admin.AdminServer$AdminServerException: Problem starting AdminServer on address 0.0.0.0, port 8080 and command URL /commands at org.apache.zookeeper.

2021-03-07 16:45:45 279

原创 SSM三大框架的整合

核心思想:用Spring来管理持久层框架和表现层框架。1.Spring整合SpringMVC:Spring和SpringMVC整合不需要引入用于整合的jar包,只需要配置一个监听器,监听servletcontext对象的创建,一旦创建就将其注入到容器中。(该容器是SpringMVC管理的IOC子容器)。<!-- 整合spring和springmvc,配置监听器监听servletcontext的创建--> <listener> <listener-class&

2020-09-15 08:19:42 154

原创 SSM学习-Spring第三天

AOP的相关概念aop的作用:在程序运行期间,不修改源码的情况下对方法进行增强,减少重复代码,降低代码间耦合,提高开发效率,方便维护。实现的原理:动态代理技术。AOP的相关术语:Joinpoint(连接点): 所谓连接点是指那些被拦截到的点。在 spring 中,这些点指的是方法,因为 spring 只支持方法类型的 连接点。Pointcut(切入点): 所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义。Advice(通知/增强): 所谓通知是指拦截到 Joinpoin

2020-08-31 13:38:39 115

原创 SSM学习记录-Spring第二天

Spring常用注解介绍要使用注解,必须先在配置文件中进行配置,告知 spring 创建容器时要扫描的包<!-- 告知 spring 创建容器时要扫描的包 --> <context:component-scan base-package="com.xmj"></context:component-scan>用于创建对象的注解(相当于:<bean id="" class="")@Component作用: 把资源让 spring 来管理。相当于在 x

2020-08-21 16:44:18 109

原创 SSM学习-Spring第一天

Spring学习第一天Spring是分层的 Java SE/EE应用 full-stack 轻量级开源框架,以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核,提供了展现层 Spring MVC 和持久层 Spring JDBC 以及业务层事务管理等众多的企业级应用技术。IOC:通过 Spring提供的 IoC容器,可以将对象间的依赖关系交由 Spring进行控制,避免硬编码所造 成的过度程序耦合。内

2020-08-17 12:09:51 138

原创 SSM学习-Mybatis第三天

Mybatis的标签使用和动态SQL1.配置别名:<typeAliases> <!--用于配置别名--> <typeAlias type="com.xmj.domain.User" alias="user"></typeAlias> <!--该包下的实体类对会被注册别名,不在区分大小写--> <package name="com.xmj.domain"/> &l

2020-07-29 13:28:21 96

原创 SSM学习记录-Mybatis第二天

使用Mybatis实现增删改查及其他操作实现mybatis的各种SQL操作需要在对用接口的Mapper文件中增加对应的标签1.查询全部操作<select id="findAll" resultType="com.xmj.domain.User"> <!--id的值必须和对应打方法名一致--> select * from user </select>其中id属性的值必须与对应接口中的全类名相对应,resultType属性的值是将返

2020-07-24 13:13:50 87

原创 SSM学习记录-Mybatis第一天

mybatis的基本使用mybatis是一个优秀的持久层框架,使用mybatis需要以下步骤:在maven项目中引入mybatis依赖(同样要引入JDBC依赖)-》配置主配置文件 -》写实体类和接口 -》为接口创建配置文件 -》将接口的配置文件注入到主配置文件一.mybatis的依赖坐标:<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId&g

2020-07-22 15:34:39 82

空空如也

空空如也

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

TA关注的人

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