![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
秋招
Kevin_cai09
无情的bug maker
展开
-
mybatis(一)基本执行流程
mybatis(一)基本执行流程文章目录mybatis(一)基本执行流程一,mybatis组件二,mybatis基本执行流程2.1 构建SqlSessionFactory2.2 构建SqlSession2.3 利用sqlSession执行数据库交互2.4 执行数据库操作1.查询一,mybatis组件SqlSessionFactoryBuilder根据XML配置文件或者Java代码生成SqlSessionFactorySqlSessionFactory使用它生成Sqlsession是一定原创 2020-09-16 11:51:28 · 797 阅读 · 0 评论 -
计网&os复习
基础文章目录基础计算机网络TCP & UDPTCP过程流量控制 & 拥塞控制TCP首部TCP分段 & IP分片Http & HttpsHttpHttps操作系统基础中断进程管理存储管理存储结构内存分配虚拟内存计算机网络TCP & UDPTCP过程特性:TCP是一种面向连接的,可靠的字节流传输服务TCP只能用于点对点的通信,不能用于广播和多播TCP使用校验和,确认机制和重传机制来保证可靠传输TCP使用滑动窗口机制来进行流量控制,动态改变发送窗口来进行原创 2020-09-08 11:03:24 · 383 阅读 · 1 评论 -
IO多路复用
IO多路复用IO多路复用就是服务端用来处理大量客户端同时连接的情况,select,poll,epoll都是IO多路复用的机制文章目录IO多路复用IO多路复用操作系统知识补充用户态和内核态进程切换文件描述符FDIO模型BIONIOAIO多路复用模型selectpollepoll总结redis IO模型IO多路复用何为IO多路复用?IO多路复用就是一个线程或者一个进程同时监视多个文件描述符,一旦某个或某几个文件描述符准备就绪(读写就绪),就通知程序进行相应的读写操作。所以,这里的多路是指有多个网络原创 2020-09-05 10:34:47 · 353 阅读 · 0 评论 -
spring-bean生命周期
spring-bean生命周期文章目录spring-bean生命周期一,整体流程二,Bean创建的过程2.1 bean实例化时机2.2 bean生命周期2.3 bean循环依赖2.4 bean实例化过程2.5 代理对象生成一,整体流程二,Bean创建的过程2.1 bean实例化时机bean实例化时机分为两类情况:如果使用BeanFactory来实例化bean,那么所有的bean都是在第一次使用该bean的时候实例化如果使用ApplicationContext来实例化beanbean的s原创 2020-09-03 16:01:38 · 257 阅读 · 0 评论 -
Redis-持久化
Redis-持久化文章目录Redis-持久化RDB简介触发缺点AOF简介过程重写触发条件重写过程RDB-AOF优缺点AOFredis和memcache的一个区别就在于数据的持久化,因为数据是保存在内存的,一旦重启,数据就会丢失,那么为了增强数据的可靠性,redis实现了数据的持久化,持久化有两种,一直是rdb,一种是aof,redis4.0后开启了两种混用的持久化方式RDB简介RDB持久化是通过快照的形式进行持久化,当符合一定条件save m n以save 900 1为例,表明当900秒内原创 2020-08-02 23:27:25 · 157 阅读 · 0 评论 -
Redis事务
Redis事务文章目录Redis事务redis事务简介事务原理redis watch机制**实现原理**redis事务简介redis事务的本质:一组命令的集合,一个事务中的所有命令都会被序列化,在事务执行过程中,都会被顺序执行redis事务特性:一次性,顺序性,排他性(事务在执行期间不会被主动中断,执行完事务中的所有命令之后才会继续处理其他客户端的其他命令)redis事务中没有隔离性事务中的命令只有在exec后才开始执行redis单条命令是保证原子性的,但是redis的事务是不保证原子原创 2020-08-02 23:26:53 · 151 阅读 · 0 评论 -
Redis-数据类型
Redis-数据类型文章目录Redis-数据类型StringSDS与C字符串的区别HashrehashListSetZSetGeo**HyperLogLog**Bitmaps**Pub/Sub**Stringredis中的字符串String结构是底层采取SDS来实现:// 3.0struct sdshdr { // 记录buf数组中已使用字节的数量,即SDS所保存字符串的长度 unsigned int len; // 记录buf数据中未使用的字节数量 unsigne原创 2020-08-02 23:23:39 · 246 阅读 · 0 评论 -
Redis-为什么要用缓存
Redis-为什么要用缓存文章目录Redis-为什么要用缓存为什么要用缓存?什么是Redis为什么要用缓存?单机MySQL时,数据量不大的情况下,单个MySQL即可应付瓶颈:数据量太大一个mysql放不下当数据量超过300w时,必须建立索引,索引太大,一个机器放不下访问量上去了,一个服务器承受不了数据库读写分离缺陷:针对相同的查询,不应该反复查询数据库,访问量增大,数据库磁盘IO压力也随着增大加缓存层,减轻读数据库的压力分库分表+MySQL集群上面加了原创 2020-08-02 23:23:09 · 508 阅读 · 0 评论 -
JVM-虚拟机字节码执行引擎
文章目录虚拟机字节码执行引擎运行时栈桢结构局部变量表操作数栈动态链接方法调用解析分派虚拟机字节码执行引擎执行引擎是Java虚拟机核心的组成部分之一。“虚拟机”是一个相对于“物理机”的概念,这两种机 器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层 面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执 行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。解释执行:通过解释器执行,每次都需要解释,时间较快编译执行:原创 2020-07-26 17:03:20 · 151 阅读 · 0 评论 -
JVM-类加载
文章目录类加载的时机类加载过程加载类加载器双亲委派模型连接初始化类加载的时机一个类从被加载到虚拟机内存中开始,到被卸载出内存为止,他的整个生命周期会经历:加载 -》 连接 -》 初始化 -》 使用 -》 卸载6种情况下必须立即对类进行初始化,初始化只会执行一次遇到new,getstatic,putstatic,invokestatic四个字节码指令时,如果没有执行过初始化则先触发其初始化new对象读/写一个类的静态字段(除开final修饰的)调静态方法反射,没有初始化,必须先触发原创 2020-07-23 21:48:22 · 116 阅读 · 0 评论 -
JMV-GC
文章目录GC一,哪些内存需要回收引用计数法可达性分析法二,如何回收分代收集垃圾收集算法垃圾收集器三,对象内存分配和回收GC一,哪些内存需要回收判断对象是否存活有两个方法:引用计数法可达性分析法引用计数法流程:在对象中添加一个引用计数器,每当有一个地方引用他,计数器值就+1,每当引用失效,计数器值就-1,任何时刻计数器为0的对象就是不可能在被使用的。优缺点:优点:即使计数器占用一定内存,但是判定效率高缺点:无法解决循环依赖的引用计数判断,导致依赖对象永远无法回收可达性分析法基原创 2020-07-22 11:16:51 · 311 阅读 · 0 评论 -
JVM-Java内存区域
文章目录Java内存区域线程私有程序计数器虚拟机栈线程共享堆对象创建Java内存区域Java虚拟机会在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域线程私有线程私有区域是随着线程的创建而创建,随着线程的销毁而销毁,每个线程各自独立,互不干扰程序计数器作用:当前线程执行的字节码的行号指示器程序控制流的指示器此区域是唯一不会出现OOM的区域虚拟机栈虚拟机栈是Java方法执行的线程内存模型每个方法执行时,Java虚拟机栈都会同步创建一个栈桢(存储局部变原创 2020-07-22 11:14:23 · 284 阅读 · 0 评论 -
并发编程-线程池
文章目录线程池线程池原理线程池分类线程池为什么需要使用线程池?线程的创建和销毁都需要消耗系统资源,线程池可以复用已有的线程线程也是对象,线程池可以复用线程对象,减低内存消耗可以控制并发数量,并发数量过多,可能会导致资源消耗过多可以对线程进行统一管理线程池原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SmBclC3n-1595301423983)(https://raw.githubusercontent.com/chenxiao19920206/Red原创 2020-07-21 11:17:21 · 120 阅读 · 0 评论 -
并发编程-并发容器
文章目录并发容器阻塞队列BlockingQueue实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueuecopyOnWrite容器CopyOnWriteArrayList并发Map并发容器阻塞队列BlockingQueue是JUC包下的重要数据结构,区别于普通队列,BlockingQueue提供了线程安全的队列访问方式,并发包下很多高级同步类都是基于BlockingQueue实现的Blocking原创 2020-07-21 10:56:40 · 193 阅读 · 1 评论 -
并发编程-AQS
AQS文章目录AQS一,简介二,AQS数据结构三,主要方法源码分析四,AQS实现类顶层锁接口ReentrantLockReentrantReadWriteLock一,简介AQS是抽象队列同步器抽象:抽象类,只实现了一些主要逻辑,有些方法由子类实现队列:使用先进先出队列存储数据同步:可以实现同步功能AQS是用来构建锁和同步器的框架,JUC包中很多同步工具类都基于AQS实现二,AQS数据结构AQS内部使用一个volatile变量state来作为资源的标识,同时定义了几个获取和修改sta原创 2020-07-20 17:31:39 · 205 阅读 · 0 评论 -
并发编程-Threadlocal
文章目录Threadlocal原理解析内存关系图主要方法内存泄漏原因Threadlocalthreadlocal是一个创建线程局部变量的类threadlocal创建的变量只能被当前线程访问,其他线程无法访问和修改原理解析内存关系图每个thread内部有一个threadlocalMap ThreadLocal.ThreadLocalMap threadLocals = null;threadLocalMap内部其实是由entry数组构建的map,每个entry的key是threadloc原创 2020-07-20 11:07:38 · 140 阅读 · 0 评论 -
并发编程-基础
并发基础一,进程和线程1.1 进程和线程的定义进程是程序的一次执行过程,程序是静态的,进程是动态的线程是一个比进程更小的执行单位,一个进程在执行过程中可以产生很多线程,每个线程都有自己独立的程序计数器,栈,也可以共享进程内的堆和方法区,进程之前的切换开销比线程大1.2 进程和线程的关系,区别关系操作系统内存中可以存在多个进程,让操作系统并发成为了可能线程在进程内可以存在多个,同时处理多个进程子任务,让进程内部并发成为了可能区别:进程拥有独立的内存地址空间,进程和进程之间的内存地原创 2020-07-19 01:37:28 · 420 阅读 · 0 评论 -
并发编程-JMM
Java内存模型一,并发编程痛点并发编程有两个痛点问题需要解决:线程通信:线程之间通过何种机制来实现数据交互线程同步:线程通过何种机制来保证线程之间操作的相对顺序二,JMM2.1 JMM基础JMM定义了线程和主内存之间的抽象关系:(类似于操作系统中主内存和CPU缓存和CPU的关系)Java线程之间的通信由JMM控制JMM定义了一套规范:共享变量都存放在主内存,每个线程拥有自己的工作内存,线程和线程之间的工作内存不可以互相访问,线程之间的通信必须通过主内存线程只能对自己工作内存中原创 2020-07-19 00:40:48 · 210 阅读 · 0 评论 -
并发编程-volatile
volatile前言复习volatile实现原理之前先复习下JMMCPU缓存和主内存的关系模型:CPU为了解决其运算速度和内存读写速度不匹配的矛盾,CPU运算速度比内存读写快超级多解决方法:高速缓存cpu附近有L1,L2,L3三级缓存,之后就是主内存,引入了三级缓存带来的就是缓存的一致性问题,需要用到缓存一致性协议去解决缓存一致性问题,如MESI缓存行在总结MESI缓存一致性协议前先看看缓存行的定义:缓存是分段的,一个段代表一个存储空间,即缓存行,也是CPU缓存中可分配的最小单原创 2020-07-19 00:36:40 · 138 阅读 · 0 评论 -
并发编程-synchronized
synchronized字节码层面Java提供了两种语义级同步:synchronized修饰方法synchronized代码块public class SyncTest { public void syncBlock(){ synchronized (this){ System.out.println("hello block"); } } public synchronized void syncMethod()原创 2020-07-18 16:26:49 · 127 阅读 · 0 评论 -
网易互联网,网易互娱 2021届校招内推开始啦
网易互联网,网易互娱 2021届校招内推均已开启,早投递早面试,欢迎各位加入网易的大家庭雷火 互娱 互联网是分开招聘的 互不冲突 机会也更大 冲呀~查进度可以通过私人邮箱:caikeren@corp.netease.com或者牛客私信或者在帖子下评论留言同时欢迎大家找我Java后端开发相关的问题,我这边也会在空闲时间积极回复大家!...原创 2020-07-16 11:18:51 · 849 阅读 · 0 评论 -
分布式锁
文章目录分布式锁一,为什么需要分布式锁二,分布式锁实现2.1 Redis实现分布式锁加锁解锁原理实现深入探索Redisson加锁解锁原理不足2.2 zookeeper实现分布式锁加锁解锁原理实现优缺点分布式锁一,为什么需要分布式锁在单台服务器系统中,我们在解决并发问题时常用本地锁(synchronized,lock)去处理,但是在集群部署下,本地锁只能在单实例下起作用,服务和服务之前不能保证并发线程安全,所以,针对分布式环境下的并发问题就需要用到分布式锁去解决。分布式锁特性:**互斥性:**分布原创 2020-07-15 12:41:37 · 178 阅读 · 0 评论 -
String
文章目录String概述字符串常量池String, StringBuffer and StringBuilderString概述String在Java中是不可变类,被final修饰,因此他不可被继承。(Integer 等包装类也不能被继承,也是不可变类)JDK8中String的底层实现是char数组public final class String implements java.io.Serializable, Comparable<String>, CharSequence原创 2020-06-26 11:38:47 · 189 阅读 · 0 评论