自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习笔记之网络基础

OSI七层网络参考模型 应用层:为应用程序提供服务,如文件服务;电子邮件等服务。数据单元:数据,协议:STMP电子邮件协议,FTP文件传输协议,HTTP超文本传输协议等 表示层:处理信息的表示方法,提供如压缩和恢复,加密解密,格式转换等功能。数据单元:数据 会话层:维护两个节点的连接,确保点到点传输不中断。数据单元:数据 传输层:提供可靠的端到端的服务,负责信息的传输,向上层屏蔽了下层数据通信的细节。数据单元:数据段,协议:TCP UDP 网络层:为两个节点创建逻辑链路,通过路由选择算法选择最适合的路径,

2020-05-21 18:14:13 100

原创 Redis并发问题及解决方案

双写一致性问题 设置过期时间只能保证缓存和数据库的最终一致性,更新缓存的策略也只能降低数据不同步的几率不能完全保证强一致性。因此,需要保证强一致性的数据不应放到redis中。 缓存雪崩 缓存雪崩描述的是在同一时间大量的key失效,导致大量请求直接打到数据库上,最终导致数据库连接异常。解决方法: 1.通过设置过期时间时加上一个随机时间,使失效时间均匀分布,防止大量key同时失效。 2.如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。 3.设置热点数据永远不过期。 4.加锁,防止大量请求直

2020-05-17 18:22:09 406

原创 学习笔记之Redis

学习笔记之Redis Redis是一款将数据通过键值对(k,v)存储并支持多种数据结构的内存存储系统,也可以称之为No-SQL型数据库,Redis的读速度可以达到10W+QPS,写速度可以达到8W+QPS。 支持的数据结构 1.String,字符串类型是redis中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。 2.Hash,类似于Java中的hashmap,是一个key+Entry的数据结构 3.List,有序的字符串列表,能从list的头部或尾部添加删除元素。 4.Set,类似于Java中

2020-05-15 19:16:52 104

原创 学习笔记之GC

GC即Grabage Collection,是java的垃圾回收机制。程序运行时的内存是有限的,所以我们需要一个机制,及时把失去作用的对象清理释放内存,防止发生内存溢出错误。要理解GC机制,我们需要搞清楚几个问题:GC发生的区域,GC回收什么对象,GC发生的时机,GC做了什么。 GC发生的区域 JVM内存模型中程序计数器,虚拟机栈,本地方法栈都是线程私有的,随着线程的销毁或方法的完成而自动清理释放...

2020-04-17 07:50:52 88

原创 学习笔记之JVM内存模型

    根据JVM规范,JVM内存(运行时数据区)分为程序计数器,虚拟机栈,本地方法栈,Java堆,方法区(为了与堆区分也称非堆)五大部分。以下分别介绍各部分的作用: 程序计数器(线程私有)     程序计数器是jvm内存中很小一部分 ,是线程执行字节码的行号指示器。如果执行的是java方法则通过改变程序计数器的值选取下一条语句,如果执行的是native方法则为空。 虚拟机栈(线程私有)     ...

2020-04-13 00:12:27 48

原创 学习笔记之Java异常体系结构

    Throwable是Java所有异常或错误的父类,意思是可抛出的。Throwable包含了Error和Exception两部分,分别表示错误和异常。其中Exception异常包括运行时异常(RuntimeException)和非运行时异常,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。 Error和Exception    ...

2020-04-07 15:16:22 124

原创 学习笔记之BIO&NIO&AIO

传统的BIO     BIO是同步阻塞IO,在IO连接建立到IO完成这个过程中线程都处于阻塞状态即一个连接对应一个线程。例如常用的基于字节流的InputStream和OutputStream以及基于字符流的Reader和Writer。由于每个连接都需要一个线程处理,在高并发的情况下需要创建很多线程,BIO不适合处理高并发的情况。 NIO     NIO是同步非阻塞IO,与传统BIO不同,NIO基于...

2020-04-06 20:31:01 120

原创 学习笔记之Java多线程(三)

    Java锁机制保证了线程安全,读到了很多文章中都提到了以下集中锁: 可重入锁 独占锁&共享锁 互斥锁&读写锁 悲观锁&乐观锁 分段锁 偏向锁&轻量级锁&重量级锁 自旋锁     以上这些锁的名词,有的描述的是锁的性质,有的是锁的设计,有的是锁的状态。其实真正用到锁就是synchronized,Lock接口的锁还有ReadWriteLock接口下的锁...

2020-04-05 22:13:45 78

原创 学习笔记之Java多线程(二)

    在学习笔记之Java多线程(一)中学习了多线程的基本概念以及怎么使用多线程,但是在使用多线程的过程中,如果多个线程同时访问一个变量,那么有可能发生程序异常。     比如抢票问题,当只剩下1张票时,AB两个线程同时抢票,AB线程都读取到还有余票,并且执行抢票成功,这就出现了bug,要解决这类问题就需要对多线程进行同步处理。 多线程同步的方法 1. 使用synchronized 2. 使用同...

2020-04-04 21:18:40 73

原创 学习笔记之Java多线程(一)

在学习Java多线程之前,需要先了解以下基本概念。 基本概念 进程 进程是程序的一次执行过程,是资源分配的基本单位,有独立的内存空间。 线程 线程是调度执行的基本单位,是程序的一条执行路径。 并行 多个处理器同时执行任务,是真正的同时进行,如4核cpu可以同时处理4个任务。 并发 单个处理器通过调度算法,间断地切换并执行多个任务,由于时间片很短,看起来像是同时执行,是逻辑上的同时。 为什么使用...

2020-04-03 12:47:47 55

原创 学习笔记之SpringAOP

什么是AOP?     AOP即面向切面编程,可以说是面向对象编程OOP的一个补充和完善。OOP允许我们纵向定义纵向的关系(类-属性-方法),不适合定义横向关系。例如日志,权限等功能,这些功能横向分布在很多对象之中,这种横向散布的通用代码导致了大量代码重复,不利于复用。     AOP采用“横切”技术,剖开对象内部,把那些通用的代码封装成一个可重用模块,称为切面。简单说就是把那些与业务无关,却被业...

2020-04-02 20:41:52 45

原创 学习笔记之Spring中的IoC&DI

    Spring是为了降低企业级应用开发复杂性而开发的框架,IoC控制反转和DI依赖注入是Spring的核心部分。 IoC:控制反转     IoC其实是一种思想,让我们从繁琐的对象交互中解脱出来,更注重于对象本身。就是把创建对象和管理对象依赖关系的权力交给IoC容器管理,这种控制权的转移被形象的称为控制反转。 DI:依赖注入     依赖注入是指Spring 创建对象的过程中,将对象依赖属性...

2020-04-01 21:16:33 67

原创 学习笔记之Java集合(二)Map

    Map接口没有继承Collection接口,用于保存具有映射关系的数据。Map中保存了key和value,它们都可以使任何引用类型的数据,但是key不能重复。通过指定的key可以取出对应的value。 Map接口的实现类包括: HashMap HashMap底层是一个动态数组,数组的每一项是链表。默认容量时16,默认加载因子0.75,每次扩容1倍。HashMap通过计算key的hashC...

2020-04-01 18:07:22 106

原创 学习笔记之Java集合(一)Collection

    Collection是Java集合中的重要接口,主要包括List,Set,和Queue。其中最常用的时List和Set,因此重点研究List和Set。 一丶List     List接口继承自Collection接口,其中元素有序并且可以重复。包括常用的ArrayList和LinkedList还有不常用的Vector。 ArrayList底层采用数组实现,该数组是一个动态数组,可自动扩容...

2020-03-31 14:29:02 93

原创 学习笔记之SpringMVC工作原理

SpringMVC工作原理图 SpringMVC工作流程 1.用户发送请求到前端控制器DispatcherServlet。 2.DispatcherServlet遍历所有HandlerMapping查找request相应的handler。 3.HandlerMapping返回handler到DispatcherServlet 4.DispatcherServlet查找能处理该handler的Ha...

2020-03-30 15:46:37 75

原创 学习笔记之Mybatis总结

前两章学习和分析了Mybatis部分源码,现在对其进行总结。 Mybatis工作流程:(以一次查询为例) 1.加载配置文件,创建SqlSessionFactory 2.通过SqlSessionFactory获取SqlSession对象(此处开启事务) 3.通过getMapper方法获取Mapper接口的动态代理对象 4.通过代理对象访问数据库 5.结果集映射到Java对象 6.提交事务 Mybat...

2020-03-29 16:07:29 85

原创 学习笔记之Mybatis源码(二)

Mybatis执行器Excutor源码分析及Excutor执行查询操作的过程分析。

2020-03-29 15:34:01 77

原创 学习笔记之Mybatis源码(一)

Mybatis加载配置文件,Mybatis动态代理Mapper接口源码分析

2020-03-29 12:19:30 108

空空如也

空空如也

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

TA关注的人

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