自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统总复习——清新版

第一章 概述操作系统是管理计算机硬件和软件资源,合理地组织计算机工作流程,并为用户使用计算机提供方便的程序和数据的集合。进程调度时间片用完/中断等待的事件发生等待事件就绪执行阻塞...

2020-06-09 15:49:23 5030 6

原创 Redis的数据类型

redis数据类型

2022-11-28 20:01:47 329 1

原创 Maven的生命周期

maven的生命周期

2022-11-28 18:12:54 3038

转载 红黑树详解

https://www.jianshu.com/p/e136ec79235c

2021-09-22 07:40:26 147

转载 ConcurrentHashMap

https://www.itqiankun.com/article/concurrenthashmap-principle

2021-09-21 19:20:48 94

原创 分布式锁 & 实现方式

分布式锁使用场景 :解决超卖问题,这里是指多⼈抢购同⼀商品的时候,多⼈同时判断是否有库存,如果只剩⼀个,则都会判断有库存,此时会导致超卖现象产生,也就是⼀个商品下了多个订单的现象,解决超卖问题可以使用分布式锁得方案。分布式锁应该具备哪些条件在分布式系统环境下,⼀个方法在同⼀时间只能被⼀个机器的⼀个线程执行;高可用的获取锁与释放锁;高性能的获取锁与释放锁;具备可重入特性;具备锁失效机制,防止死锁;具备非阻塞锁特性,即没有获取到锁将直接返回获取锁失败。实现方式1.基于数据库1.基于

2021-09-16 14:51:28 130

原创 数据库 ACID 的特性

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性指事务前后数据的完整性必须保持一致。隔离性指多个用户并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离。持久性是指一个事务一旦提交,它对数据库中数据的改变就是永久性的,即便数据库发生故障也不应该对其有任何影响。...

2021-09-11 16:39:37 159

原创 BIO VS NIO

BIO: Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。NIO: Non IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。BIO (Blocking I/O): 同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成。在活动连接数不是特别高(小于单机1000)的情况下,这种模型是比较不错的,可以让每一个连接专注于自己的 I/O 并且编程模型简单,也不用过多考虑系统.

2021-08-21 20:10:11 74

原创 ElasticSearch

ElasticSearchElaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。ElasticSearch对比SolrSolr 利用 Zookeeper 进行分布式管理,而 Elasticsearch

2021-07-31 18:26:07 131

原创 RabbitMQ

2007年,Rabbit 技术公司基于 AMQP 标准开发的 RabbitMQ 1.0 发布。RabbitMQ 采用 Erlang 语言开发。Erlang 语言专门为开发高并发和分布式系统的一种语言,在电信领域使用广泛。RabbitMQ 基础架构如下图:RabbitMQ 中的相关概念:Broker:接收和分发消息的应用,RabbitMQ Server就是 Message BrokerVirtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中

2021-07-28 16:17:54 236 1

原创 MQ(消息队列)概述

MQ概述MQ的优势:1、应用解耦2、任务异步处理3、削峰填谷如订单系统,在下单的时候就会往数据库写数据。但是数据库只能支撑每秒1000左右的并发写入,并发量再高就容易宕机。低峰期的时候并发也就100多个,但是在高峰期时候,并发量会突然激增到5000以上,这个时候数据库肯定卡死了MQ的劣势系统可用性降低系统引入的外部依赖越多,系统稳定性越差。一旦 MQ 宕机,就会对业务造成影响。如何保证MQ的高可用?系统复杂度提高MQ 的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现

2021-07-28 11:49:03 201

原创 Nginx

什么是NginxNginx 是⼀款⾼性能的 http 服务器/反向代理服务器及电⼦邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊⼽尔·⻄索夫(Igor Sysoev)所开发,官⽅测试 nginx 能够⽀撑 5 万并发链接,并且cpu、内存等资源消耗却⾮常低,运⾏⾮常稳定。应用场景1、http 服务器。Nginx 是⼀个 http 服务可以独⽴提供 http 服务,可以做⽹⻚静态服务器。2、虚拟主机。可以实现在⼀台服务器虚拟出多个⽹站。例如个⼈⽹站使⽤的虚拟主机。3、反向代理,负

2021-07-27 20:53:19 1224

原创 docker

dockerdocker是一种容器技术,解决容器款环境迁移问题Docker 是一个开源的应用容器引擎诞生于 2013 年初,基于 Go 语言实现,dotCloud 公司出品(后改名为Docker Inc)Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux 机器上。容器是完全使用沙箱机制,相互隔离容器性能开销极低。Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterp

2021-07-20 23:34:22 149 2

原创 Dubbo

DubboApache Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的、轻量级的开源Java RPC框架,可以和Spring框架无缝集成,2018年阿里巴巴把这个框架捐献给了apache基金会Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,服务自动注册和发现。Dubbo架构图虚线: 都是异步访问实线: 都是同步访问蓝色虚线: 在启动时完成的功能红色虚线(实线): 都是程序运行过程中执行的功能调用关系说明:服务容器负责启动,

2021-07-20 10:34:42 78

原创 SpringCloud完整体系结构

2021-07-19 21:54:47 158

原创 Eureka对比Zookeeper

Eureka对比ZookeeperRDBMS(Mysql, sqlServer, Oracle) --------->ACIDNoSQL(redis, MongoDB)--------->CAP.ACID:A(Atomicity):原子性C(Consistency):一致性I(Isolation):隔离性D(Durability):持久性.CAP:C(Consistency):强一致性A(Availability):可用性P(Partition tolerance):

2021-07-18 22:40:54 172

原创 Spring Cloud

Spring CloudSpring Cloud是Spring旗下的项目之一,官网地址:http://projects.spring.io/spring-cloud/Spring最擅长的就是集成,把世界上最好的框架拿过来,集成到自己的项目中。Spring Cloud也是一样,它将现在非常流行的一些技术整合到一起,实现了诸如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能。其主要涉及的组件包括:NetflixEureka:注册中心Zuul:服务网关Ribbon:负载

2021-07-17 15:57:38 69

原创 Eureka注册中心

Eureka注册中心网约车出现以前,人们出门叫车只能叫出租车。一些私家车想做出租却没有资格,被称为黑车。而很多人想要约车,但是无奈出租车太少,不方便。私家车很多却不敢拦,而且满大街的车,谁知道哪个才是愿意载人的。一个想要,一个愿意给,就是缺少引子,缺乏管理。此时滴滴这样的网约车平台出现了,所有想载客的私家车全部到滴滴注册,记录你的车型(服务类型),身份信息(联系方式)。这样提供服务的私家车,在滴滴那里都能找到,一目了然。此时要叫车的人,只需要打开APP,输入你的目的地,选择车型(服务类型),滴滴自动安排

2021-07-17 15:24:39 130

原创 分布式服务必然要面临的问题

分布式服务必然要面临的问题服务管理1 如何自动注册和发现2 如何实现状态监管3 如何实现动态路由服务如何实现负载均衡服务如何解决容灾问题服务如何实现统一配置

2021-07-17 15:14:25 79

原创 微服务架构

微服务架构微服务架构是使用一套小服务来开发单个应用的方式或途径,每个服务基于单一业务能力构建,运行在自己的进程中,并使用轻量级机制通信,通常是HTTP API,并能够通过自动化部署机制来独立部署。这些服务可以使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。 微服务结构图 :API Gateway网关是一个服务器,是系统的唯一入口。网关提供RESTful/HTTP的方式访问服务。而服务端通过服务注册中心进行服务注册和管理。微服务的特点单一职责:微服务中每一个服务都对应

2021-07-17 14:32:40 76

原创 RPC(远程过程调用)

RPCRPC,即 Remote Procedure Call(远程过程调用),是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。说得通俗一点就是:A计算机提供一个服务,B计算机可以像调用本地服务那样调用A计算机的服务。RPC调用流程图:...

2021-07-17 11:35:45 206

原创 Mybatis面试---------#{} 和 ${}的区别

#{}#{}:表示一个占位符,通知Mybatis 使用实际的参数值代替。并使用 PrepareStatement 对象执行 sql 语句, #{…}代替sql 语句的“?”。这个是Mybatis 中的首选做法,安全迅速。<select id="queryById" parameterType="int" resultType="com.kkb.pojo.Team"> select * from team where teamId=#{id}</select><!-

2021-05-21 14:58:25 162 2

原创 Redis缓存

1. 缓存雪崩产生原因缓存雪崩通俗简单的理解就是:由于原有缓存失效(或者数据未加载到缓存中),新缓存未到期间(缓存正常从Redis中获取)所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU和内存造成巨大压力,严重的会造成数据库宕机,造成系统的崩溃。解决方案:1: 在缓存失效后,通过加锁或者队列来控制读数据库写缓存的线程数量。比如对某个key只允许一个线程查询数据和写缓存,其他线程等待。虽然能够在一定的程度上缓解了数据库的压力但是与此同时又降低了系统的吞吐量。2: 分析用户的行为,不同

2021-05-12 11:14:51 104

原创 Redis---AOF与RDB区别

AOF与RDB区别RDB:RDB是在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。优点: 使用单独子进程来进行持久化,主进程不会进行任何IO操作,保证了redis的高性能缺点: RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候AOF:Append-only file,将“操作 + 数据”以格式化指令的方式追加到操作日志文件的尾部,在append操作返回后(已经写入到文件或者

2021-05-11 21:11:13 85 1

原创 JavaWeb面试问题

1.自定义 servlet 的三种方式,及区别?2.写出 Servlet 中的三大作用域,并分别说明各自的特点?3.filter 和 servlet 在生命周期上的区别4.表单提交的 2 种方式?及区别?5.jsp 有哪些内置对象? 作用分别是什么?6.谈谈你对 MVC 的理解7.表单的 action 属性,method 属性,name 属性值有什么作用?8.同步与异步的区别9.JSP 请求是如何被处理的10.说说你对 Cookie 与 Session 技术的理解?...

2021-04-12 11:15:26 157 2

原创 AJAX

AJAX用户名有效性验证案例Ajax的⼯作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用操作与服务器响应异步化。并不是所有的用户请求都提交给服务器。像—些数据验证和数据处理等都交给Ajax引擎自己来做,,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。index.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head

2021-04-04 10:46:57 95

原创 监听器与过滤器

1.监听器的编写步骤编写⼀个监听器类去实现监听器接口重写监听器的方法需要在web.xml中进行配置—注册import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class SessionListener implements HttpSessionListener { @Override public void sessionCreate

2021-03-27 20:45:16 113

原创 Session和Cookie的区别

Session和Cookie的区别(1)Cookie数据保存在客户端,Session数据保存在服务器端。(2)Session是由应用服务器维持的⼀个服务器端的存储空间,用户在连接服务器时,会由服务器生成⼀个唯⼀的SessionID,用该SessionID 为标识符来存取服务器端的Session存储空间。而SessionID这⼀数据则是保存到客户端,用Cookie保存的,用户提交页面时,会将这⼀SessionID提交到服务器端,来存取Session数据。这⼀过程,是不用开发人员干预的。所以⼀旦客户端禁用C

2021-03-27 19:03:29 105

原创 JSP原理&JSP内置对象

当浏览器访问http://localhost:8080/day9_1/index.jsp。服务器发现后缀为.jsp,它会根据路径找到index.jsp⽂件,会将index.jsp翻译成index_jsp.java⽂件,对这个java⽂件进⾏编译,产⽣⼀个index_jsp.class⽂件,将class⽂件加载运⾏。将JSP翻译成java⽂件,它是将JSP中的所有的HTML代码通过流进⾏输出,也就是说最终翻译成class,被虚拟机加载,它本质是servlet,它就会往回响应,响应回去就是把JSP中的HTML.

2021-03-25 09:52:28 292 1

原创 重定向和转发的对比

重定向和转发的对比重定向:response.sendRedirect()转发:request.getRequestDispatcher("/success.jsp").forward(request,response)相同点: 都用来跳转页面不同点:a. 转发一次请求一次响应,重定向两次请求两次响应(地址栏修改了两次)b. 重定向时地址栏会改变,requset中存储的数据可能会丢失;    转发时地址栏显示的是请求页面的地址,request数据可以保存

2021-03-22 09:42:30 105

原创 Servlet的生命周期

Servlet的生命周期当客户端发送第一次请求后,容器(web服务器)会去解析请求,根据请求找到对应的Servlet判断该类的对象是否存在,不存在则创建Servlet实例,调取init()方法进行初始化操作初始化完成后调取对应的service方法,由service()判断客户端的请求方式如果是get,执行doGet(),如果是post,执行doPost()处理方法完成后,做出相应结果给客户端 (响应)单次请求处理完毕当客户端发送第二次及以后的请求时,会判断servlet对象是否存在,但不

2021-03-21 15:15:56 59 3

原创 tomcat的⽬录

tomcat的目录1.bin该⽬录下存放的是⼆进制可执⾏⽂件,如果是安装版,那么这个⽬录下会有两个exe⽂件:tomcat9.exe、tomcat9w.exe,前者是在控制台下启动Tomcat,后者是弹出UGI窗⼝启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat⽂件,startup.bat⽤来启动Tomcat,但需要JDK的配置,shutdown.bat⽤来停⽌Tomcat;2.conf这是⼀个非常非常重要的目录,这个目录下有四个最为重要的文件:se

2021-03-21 09:07:23 189 2

原创 onload与ready()的区别?

区别window.onload$(document).ready()执行次数只能执行一次,如果执行第二次,第一次的执行会被覆盖可用执行多次,不会覆盖之前的执行执行时机必须等待网易全部加载挖完毕(包括图片等),然后再执行包裹的代码只需要等待网页中的DOM结果加载完毕就可以执行包裹的代码简写方式无$(function(){ });文档就绪事件,实际就是文件加载事件。这是为了防止文档在完全加载(就绪)之前运行 jQuery 代码,即在 DOM 加载完成后才可...

2021-03-17 17:05:20 136

原创 js-dom操作-添加-删除-替换

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <button onclick="createNewP()">动态添加</button> <button onclick="createNewP2()">动态添加2</butt

2021-03-16 14:50:44 219

原创 在进行数据库编程时,连接池有什么作用?

由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行TCP的三次握手,释放连接需要进行TCP四次握手,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。池化技术在Java开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于Java的开.

2021-03-10 22:24:35 79

原创 对比statement和PreparedStatement

对比statement和PreparedStatement;(1)statement属于状态通道,PreparedStatement属于预状态通道(2)预状态通道会先编译sql语句,再去执行,比statement执行效率高(3)预状态通道支持占位符?,给占位符赋值的时候,位置从1开始(4)预状态通道可以防止sql注入,原因:预状态通道在处理值的时候以字符串的方式处理...

2021-03-05 16:32:28 108

原创 JDBC

构建JDBC应用程序涉及以下六个步骤:导入包:需要包含包含数据库编程所需的JDBC类的包。大多数情况下,使用import java.sql.*就足够了。注册JDBC驱动程序:要求您初始化驱动程序,以便您可以打开与数据库的通信通道。执行查询:需要使用类型为Statement的对象来构建和提交SQL语句到数据库。从结果集中提取数据:需要使用相应的ResultSet.getXXX()方法从结果集中检索数据。释放资源:需要明确地关闭所有数据库资源,而不依赖于JVM的垃圾收集。import jav.

2021-03-05 16:13:48 104 1

原创 事务&事务隔离级别

事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。1.事务的语法start transaction; begin;commit; 使得当前的修改确认rollback; 使得当前的修改被放弃2. 事务的ACID特性原⼦性(Atomicity)事务的原⼦性是指事务必须是⼀个原子的操作序列单元。事务中包含的各项操作在⼀次执⾏过程中,只允许出现两种状态之一。(1)全部执行成功(2)全部执行失败事务开始后所有操作,要么全部做完,要么

2021-03-04 08:47:22 122 1

原创 数据库优化

1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.备注、描述、评论之类的可以设置为 NULL,其他的,最好不要使用NULL。3.应尽量避免在 where 子句中使用 != 或 <>

2021-03-03 22:05:04 83 2

原创 枚举 & 注解 & 反射

1、枚举JDK1.5引入了新的类型——枚举。在JDK1.5 之前,我们定义常量都是: public static fianl… 。很难管理。枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。用于定义有限数量的一组同类常量,例如:错误级别:低、中、高、急一年的四季:春、夏、秋、冬商品的类型:美妆、手机、电脑、男装、女装…在枚举类型中定义的常量是该枚举类型的实例。定义格式:权限修饰符 enum 枚举名称 {实例1,实例2,实例3,实例4;}publi

2021-02-27 18:02:28 118

空空如也

空空如也

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

TA关注的人

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