自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MVCC

MVCCMVCC(Multi-Version Concurrency Control) 多版本并发控制。为每次事务生成一个新版本的数据,在读数据时选择不同版本的数据可以实现对事务的完整性读取特点:每行数据都存在一个版本,每次数据更新时都更新该版本。修改时Copy出当前版本随意修改,各个事务之间无干扰。保存时比较版本号,如果成功(commit),则覆盖原记录;失败则放弃copy(rollback)以下数据库存储引擎默认使用Innodb三个隐藏字段InnoDB会为每个使用InnoDB存储引

2020-09-21 17:53:38 167

原创 RPC

RPCRPC( Remote Procedure Call Protocol ) 远程过程调用协议。就是用其他服务器方法实现需要的功能,而具体连接细节将被封装不需要了解底层协议。常用RPC框架Dubbo、Motan、Dubbox、rpcx、Hadoop、gRPC优缺点优点:提高系统可扩展性提升系统可维护性和持续交付能力实现系统高可用缺点:一个完善的RPC框架开发难度大,需要人员配置多RPC框架调用成功率受限于网络状况调用远程方法初学难度大结构Client

2020-09-20 21:21:38 105

原创 Netty(3)

Netty(4)TCP粘包和拆包TCP是个"流"协议,所谓流,就是没有界限的一串数据。类似于自来水管,其间是没有分界线的。但一般通讯程序开发是需要定义一个个相互独立的数据包的,比如用于登陆的数据包,用于注销的数据包。由于TCP"流"的特性以及网络状况,在进行数据传输时会出现以下几种情况。假设我们连续调用两次send分别发送两段数据data1和data2,在接收端有以下几种接收情况(当然不止这几种情况,这里只列出了有代表性的情况)。A.先接收到data1,然后接收到data2。B.先接收到data1

2020-08-20 17:14:55 147

原创 Netty(2)

Netty(2)Reactor模式通过一个或多个输入同时传递给服务处理器的模式(基于事件驱动)。服务器端程序处理传入的多个请求,并将它们同步分派到相应处理线程。使用IO复用监听事件,收到事件后,分发给某个线程(进程)。举例子:​ 有家独特的医院,当患者来了要门诊(请求Event),入口处前台服务员(ServiceHandler)先迎客,该服务员接着送这个顾客到空闲屋子处理业务进行门诊治疗(EventHandler)。单Reactor单线程Select是前面IO复用模型介绍的标准网络

2020-08-14 18:52:23 137

原创 Netty(1)

Netty(1)Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端。 BIO、NIO和AIO采用烧水的例子:**BIO:**叫一个线程停留在一个水壶那,直到这个水壶烧开,才去处理下一个水壶。**NIO:**叫一个线程不停的循环观察每一个水壶,根据每个水壶当前的状态去处理。**AIO:**每个水壶上装一个开关,当水开了以后会提醒对应的线程去处理。BIO方式:采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连

2020-08-13 18:06:32 143

原创 volatile和synchronized的区别

volatile和synchronized的区别volatile仅能使用在变量上,synchronized可以使用在变量和方法上;volatile仅能实现变量的可见性,不能保证原子性,synchronized可以保证变量的可见性和原子性;volatile不会造成线程阻塞,synchronized可能会造成线程阻塞(因为volatile只是将当前变量的值及时告知所有线程,而synchronized是锁定当前变量不让其它线程访问);volatile标记的变量不会被编译器优化(因为不能指令重排),syn

2020-08-13 11:38:02 517

原创 JVM

jvmjvm结构类加载机制加载:通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。存储在方法区中。链接阶段:验证: 目的是确保class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身安全。验证阶段主要包括四个检验过程:文件格式验证、元数据验证、字节码验证和符号引用验证。准备

2020-08-03 17:13:52 262

原创 JMM( Java Memory Model )

JMM( Java Memory Model )什么是JMM:​ 因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM特征原子性: 操作不可分割的最小单元。可见性: 当某个线程修改完某个变量之后,在其他的线程中,可以观察到该变量已经被修改。有序性: Java的有序性跟线程相关。如果

2020-08-03 17:08:21 103

原创 Mybatis缓存

Mybatis缓存1.缓存的概念什么是缓存存在于内存中的临时数据。为什么使用缓存减少和数据库的交互次数,提高执行效率适用情况:经常查询且不经常改变数据正确与否对最终结果影响不大的不适用情况:经常改变的数据数据的正确与否对最终结果影响很大的如:商品库存、银行汇率、股市牌价二、一级缓存概念:​ 存在于Mybatis中SqlSession对象中的缓存​ 执...

2019-12-20 15:57:37 97

原创 Servlet入门(三)

文章目录Servlet入门(三)一、cookie1.简介2.用法3.细节二、session1.简介2.用法3.原理4.细节Servlet入门(三)一、cookie1.简介​ Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户计算机暂时或永久保存的信息。2.用法...

2019-12-04 17:28:43 98

原创 MyBatis(一)

文章目录MyBatis(一)一、MyBatis简介二、MyBatis结构三、MyBatis配置MyBatis(一)一、MyBatis简介​ MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。​ MyBatis ...

2019-12-04 15:27:54 128

原创 EL表达式

文章目录EL表达式一、简介二、语法三、EL表达式的隐式对象EL表达式一、简介​ EL(Expression Language) 是为了使JSP写起来更加简单。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简化表达式的方法,让Jsp的代码更加简化。二、语法${域对象、域对象中的属性.属性.级联属性}.操作符:使用方便[]操作符:功能多,...

2019-12-03 15:49:36 111

原创 JSP

文章目录JSP一、JSP是什么二、JSP指令三、JSP脚本元素和内置对象JSP一、JSP是什么​ JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为...

2019-11-29 20:48:58 2143

原创 Servlet入门(二)

文章目录Servlet入门(二)一、requestRequest容器Request的相关方法:二、responseResponse容器Response对象的相关方法:Servlet入门(二)一、requestRequest容器Resquest容器对象,每次用户请求服务器的时候web容器就会给创建这容器对象(还有Response),Request除了有一个容器对象的角色,他还有一个角色就是R...

2019-11-29 15:42:21 570

原创 Servlet入门(一)

文章目录Servlet入门(一)一、什么是Servlet二、Servlet体系结构三、Servlet容器四、Servlet生命周期Servlet入门(一)一、什么是Servlet​ Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。​ 使用 Servlet...

2019-11-27 15:02:05 148

原创 Spring

Spring1.Spring 是什么Spring是分层的JavaSE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control;反转控制)和AOP(Aspect Oriented Programming;面向切面编程)为内核,提供了展现层Spring MVC和持久层Spring JDBC 以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三...

2019-11-22 17:46:29 147

原创 排序算法

排序算法排序算法的种类排序算法种类冒泡排序冒泡排序其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。冒泡排序的时间复杂度为O(n^2)。稳定的排序算法选择排序选择排序是通过对整体的选择。其实选择排序可以看成冒泡排序的优化,因为其目的相同,只是选择排序只有在确定了最小数的前提下才进行交换,大大减少了交换的次数。选择排序的时间复杂度为O(n^2)。不稳定排序算法。...

2019-11-22 14:38:32 123 1

原创

堆堆内存大小可以调节堆存储类、方法、常变量保存所有引用类型的真实信息堆结构1.新生区:伊甸区、幸存0区、幸存1区2.养老区3.永久存储区伊甸区 GC新生代清空后幸存者 会到幸存者0区 幸存者1区 反复清空留下后 最终到养老区养老区满了就会出现异常JAVA堆1)java堆是java虚拟机管理的内存最大的一块2)java堆是被所有线程共享的3)java堆的主要作用是存放对象...

2019-11-19 21:47:22 131

原创 jvm栈

jvm栈栈管运行,堆管存储栈主管Java程序的运行,是在线程创建时创建,它的生命周期等同线程。不存在垃圾回收问题。八种基本类型变量、对象的引用变量、实例方法都是在函数的栈中分配栈帧:是一个内存区块,是一个数据集,是一个有关方法和运行期数据集栈帧结构方法索引(method index)输入输出参数(Parameters)本地变量(Local vars)类(Class)父帧(Retu...

2019-11-19 21:46:10 133

原创 JVM

JVMjvm结构类加载器相关知识1.类加载器概念​ Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件与文件系统。学习类加载器时,掌握Java的委派概念很重要2.虚拟机自带的加载器1.启动类加载器(Bootstrap)C++2.扩展类加载器...

2019-11-10 16:46:28 121

原创 生产者和消费者

生产者和消费者多线程的经典模型两个角色:生产者和消费者线程公共变量(判断条件)第一种方式用synchronizedclass AirCondition{ private int number =0; public AirCondition() {} public int getNumber() {return number;} ...

2019-11-07 23:54:04 137

原创 设计模式之工厂模式

设计模式之工厂模式简介工厂模式:工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂模式使一个类的实例化延迟到其子类。 这相当于是把原本会因为业务代码而庞大的简单工厂类,拆分成了一个个的工厂类,这样代码就不会都耦合在同一个类里了。 也就是工厂模式的优点。​ 工厂模式还分普通工厂模式和抽象工厂模式,这里讲的是抽象工厂模式。工厂模式两个点是工厂和产品,在面对复杂的产品时需要不同的...

2019-11-05 15:30:40 135

原创 设计模式之装饰者模式

设计模式之装饰者模式简介​ 装饰模式是在不使用继承和不改变原类文件的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。注意其中三点:1,不改变原类文件。2,不使用继承。3,动态扩展。优点:装饰者模式与继承关系的目的都是要扩展对象的功能,但是装饰者可以提供比继承更多的灵活性。通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创...

2019-11-05 14:44:50 199

原创 集合不安全

集合不安全​ 大家很容易知道哪些集合安全哪些不安全,但是很多时候都是局限于知道,而不清楚细节。所以这就是展示一些细节的地方。先说结论:List、Set、Map都不安全以List为例private static void ShowList(){ //看源码 List<String> list = new ArrayList<>(); ...

2019-11-04 22:26:12 254

原创 设计模式之建造者模式

设计模式之建造者模式简介​ 在制作产品如盖楼房时,不同产品会有不同的方法,如盖普通房子和高楼大厦差别还是相当大的更别说地标性建筑了。那么在建造时如此大的差别该要如何设计模式完成呢。这就要用建造者模式了。​ 首先要建房子肯定要有个产品类House;接着是建造者HouseBuilder,HouseBuilder会建造的所有方法,但是不一定每个方法都要实现,所以用抽象类来表示;然后就是具体的建造方...

2019-11-04 15:58:58 97

原创 设计模式之单例模式

设计模式之单例模式单例模式定义:Ensure a class has only one instance, and provide a global point of access to it.(确保某一个类只有一个实例,而且自行实例化并向这个系统提供这个实例)。下面展示7种正确范例和一个错误示范。1.饿汉式(静态)/** * 饿汉式(静态) * 优点:写法简单,类装载就完成实例化,...

2019-11-04 14:59:55 105

空空如也

空空如也

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

TA关注的人

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