09 2021 档案

摘要:Reactor线程模型详解 简介 一、单Reactor单线程 二、单Reactor多线程 三、主从Reactor多线程 简介 在目前的线程模型中一种是传统阻塞的I/O模型,一种是Reactor线程模型。Reactor模型根据Reactor的数量和处理资源线程池的数量不同又分为三种Reactor线程模 阅读全文

posted @ 2021-09-20 10:32 清烟无瘾 阅读(3022) 评论(0) 推荐(0)

摘要:select、poll、epoll本质上是对I/O复用模型的一种封装。 Java nio 本质上select()模型,可以检查/jre/bin/nio.dll得知。至于Java服务器为什么效率还不错,可能是因为设计的比较好。 select 底层:I/O多路复用技术。 1、每个连接对应一个描述。sel 阅读全文

posted @ 2021-09-20 09:40 清烟无瘾 阅读(432) 评论(0) 推荐(0)

摘要:前言 I/O 一直是很多小伙伴难以理解的一个知识点,这篇文章我会将我所理解的 I/O 讲给你听,希望可以对你有所帮助。 I/O 何为 I/O? I/O(Input/Outpu) 即输入/输出 。 我们先从计算机结构的角度来解读一下 I/O。 根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控 阅读全文

posted @ 2021-09-20 09:23 清烟无瘾 阅读(147) 评论(0) 推荐(0)

摘要:一、TCP/IP UDP是什么? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。UDP(User Data Protocol,用户数据报协议)是与TCP相 阅读全文

posted @ 2021-09-20 08:44 清烟无瘾 阅读(886) 评论(0) 推荐(0)

摘要:主动初始化: ①遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。生成这4条指令的最常见的Java代码场景是:使用new关键字实例化对象的时候、读取或设置一个类的静态字段(被final修饰、已在编译期把结果放 阅读全文

posted @ 2021-09-19 22:39 清烟无瘾 阅读(154) 评论(0) 推荐(0)

摘要:普通类: 静态变量 静态代码块 普通变量 普通代码块 构造函数 继承的子类: 父类静态变量、父类静态代码块 子类静态变量、子类静态代码块 父类普通变量、父类普通代码块 父类构造函数 子类普通变量、子类普通代码块 子类构造函数 抽象的实现子类: 接口 - 抽线类 - 实现类 接口静态变量 抽象类静态变 阅读全文

posted @ 2021-09-19 22:03 清烟无瘾 阅读(52) 评论(0) 推荐(0)

摘要:Java中类初始化顺序: 1、父类的静态代码块、静态变量 2、子类的静态代码块、静态变量 3、父类的普通变量、普通代码块 4、父类的构造函数 5、子类的普通变量、普通代码块 6、子类的构造函数 在调用子类的构造函数时,总是先调用父类的构造函数,如果子类的构造方法没有显示指明调用父类的哪个构造方法,子 阅读全文

posted @ 2021-09-19 22:01 清烟无瘾 阅读(50) 评论(0) 推荐(0)

摘要:java异常分为两大类,Checked异常和Runtime异常,Checked异常都是在编译阶段可以被处理的异常。 Checked异常和Runtime异常的区别和联系 Checked异常都是可以被处理的异常,在程序中必须显式地处理Checked异常,如果没有处理,那么编译就会报错。而Runtime异 阅读全文

posted @ 2021-09-19 21:36 清烟无瘾 阅读(56) 评论(0) 推荐(0)

摘要:原子性:事务是一组不可分割的操作单元,这组单元要么同时成功要么同时失败(由DBMS的事务管理子系统来实现); 一致性:事务前后的数据完整性要保持一致(由DBMS的完整性子系统执行测试任务); 隔离性:多个用户的事务之间不要相互影响,要相互隔离(由DBMS的并发控制子系统实现); 持久性:一个事务一旦 阅读全文

posted @ 2021-09-18 09:26 清烟无瘾 阅读(309) 评论(0) 推荐(0)

摘要:什么是网关? 网关(协议转换器;网间转换器)能够实现跨网络传输(跨网是指不同体系结构的网络或者不同协议之间网络)。网关可以实现协议转化**,路由选择,数据交换等网络兼容功能的设施。 不同协议网络/不同体系结构的网络不能通信的原因在于数据格式,语言,通信协议不同,因此需要一种翻译器进行翻译,网关就是起 阅读全文

posted @ 2021-09-17 08:26 清烟无瘾 阅读(727) 评论(0) 推荐(0)

摘要:TCP粘包、拆包属于网络底层问题,在数据链路层、网络层、传输层都有可能出现。日常的网络应用开发大多数在传输层出现,而UDP是由消息保护边界的,不会发生粘包、拆包问题,只发生在TCP协议中。假设客户端向服务端发送了两个连续的数据包Packet1、Packet2; 在这个过程中可能会出现3种情况: 1 阅读全文

posted @ 2021-09-16 22:23 清烟无瘾 阅读(552) 评论(0) 推荐(0)

摘要:类的生命周期 一个类的完整生命周期如下: 类加载过程 Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚拟机是如何加载这些 Class 文件呢? 系统加载 Class 类型的文件主要三步:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 详见:jvm规范5.4 。 加载 阅读全文

posted @ 2021-09-16 16:46 清烟无瘾 阅读(76) 评论(0) 推荐(0)

摘要:jvm原理 深入解析强引用、软引用、弱引用、幻象引用(虚引用) 关于强引用、软引用、弱引用、幻象引用的区别,在很多公司的面试题中经常出现,可能有些小伙伴觉得这个知识点比较冷门,其实大家在开发中经常用到,如new一个对象的时候就是强引用的应用。 在java语言中,除了原始数据类型(boolean、by 阅读全文

posted @ 2021-09-16 16:44 清烟无瘾 阅读(253) 评论(0) 推荐(0)

摘要:方法的重写发生在子类中 遵循两同两小一大原则: 方法名相同 参数列表相同 父类方法的返回类型是引用类型的话,父类方法返回类型的子类型;如果父类方法的返回类型是void 和 基本类型,则方法返回值重写时是不可以修改的。 重写方法的异常要比父类小 访问权限不能小于父类的访问权限 阅读全文

posted @ 2021-09-16 09:52 清烟无瘾 阅读(50) 评论(0) 推荐(0)

摘要: 阅读全文

posted @ 2021-09-16 09:20 清烟无瘾 阅读(15) 评论(0) 推荐(0)

摘要:前言:Byte、Short、Integer、Long这几个类的valueOf方法实现类似的。所以在[-128,127]区间内,==比较的时候,值总是相等的(指向的是同一对象),在这个区间外是不等的。 原因:上述四个包装类回先创建[-128,127]区间内的对象放入堆中。如果发生基本类型自动装箱的范围 阅读全文

posted @ 2021-09-16 09:18 清烟无瘾 阅读(43) 评论(0) 推荐(0)

摘要:抽象类: 1、抽象类和普通类的主要有三点区别: 1. 抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。 2. 抽象类不能用来创建对象; 3. 如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。 阅读全文

posted @ 2021-09-16 09:09 清烟无瘾 阅读(319) 评论(0) 推荐(0)

摘要:JDK动态代理 JDK动态代理是使用 java.lang.reflect 包下的代理类来实现. JDK动态代理动态代理必须要有接口 CGLIB动态代理 JDK动态代理必须要有接口, 但如果要代理一个没有接口的类该怎么办呢? 这时我们可以使用CGLIB动态代理. CGLIB动态代理的原理是生成目标类的 阅读全文

posted @ 2021-09-15 23:21 清烟无瘾 阅读(36) 评论(0) 推荐(0)

摘要:1、Mybatis中会将<select>、<update>、<delete>、<insert>转换为MapperStatement对象 2、同一个 namespace 下的 mapper接口 与 XML文件中会维护一个Map,以接口 + 方法名 作为 key、以方法名与id值相同的MapperSta 阅读全文

posted @ 2021-09-15 23:16 清烟无瘾 阅读(291) 评论(0) 推荐(0)

摘要:JDK 监控和故障处理工具总结 JDK 命令行工具 jps:查看所有 Java 进程 jstat: 监视虚拟机各种运行状态信息 jinfo: 实时地查看和调整虚拟机各项参数 jmap:生成堆转储快照 jhat: 分析 heapdump 文件 jstack :生成虚拟机当前时刻的线程快照 JDK 可视 阅读全文

posted @ 2021-09-14 23:26 清烟无瘾 阅读(76) 评论(0) 推荐(0)

摘要:回顾一下类加载过程 类加载过程:加载->连接->初始化。连接过程又可分为三步:验证->准备->解析。 一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通 阅读全文

posted @ 2021-09-14 23:25 清烟无瘾 阅读(56) 评论(0) 推荐(0)

摘要:类文件结构 一 概述 二 Class 文件结构总结 2.1 魔数(Magic Number) 2.2 Class 文件版本号(Minor&Major Version) 2.3 常量池(Constant Pool) 2.4 访问标志(Access Flags) 2.5 当前类(This Class)、 阅读全文

posted @ 2021-09-14 23:21 清烟无瘾 阅读(63) 评论(0) 推荐(0)

摘要:Java 内存区域详解 写在前面 (常见面试题) 基本问题 拓展问题 一 概述 二 运行时数据区域 2.1 程序计数器 2.2 Java 虚拟机栈 2.3 本地方法栈 2.4 堆 2.5 方法区 2.5.1 方法区和永久代的关系 2.5.2 常用参数 2.5.3 为什么要将永久代 (PermGen) 阅读全文

posted @ 2021-09-14 23:20 清烟无瘾 阅读(62) 评论(0) 推荐(0)

摘要:JVM 垃圾回收 写在前面 本节常见面试题 本文导火索 1 揭开 JVM 内存分配与回收的神秘面纱 1.1 对象优先在 eden 区分配 1.2 大对象直接进入老年代 1.3 长期存活的对象将进入老年代 1.4 动态对象年龄判定 1.5 主要进行 gc 的区域 2 对象已经死亡? 2.1 引用计数法 阅读全文

posted @ 2021-09-14 23:17 清烟无瘾 阅读(105) 评论(0) 推荐(0)

摘要:答:还有很多标签,<resultMap>、<parameterMap>、<sql>、<include>、<selectKey>、再加上9中动态标签<trim>、<where>、<if>、<choose>、<foreach>、<when>、<otherwise>、<set>、<bind> 阅读全文

posted @ 2021-09-14 23:14 清烟无瘾 阅读(318) 评论(0) 推荐(0)

摘要:${}是 Properties 文件中的变量占位符,它可以用于标签属性值和 sql 内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是 sql 的参数占位符,MyBatis 会将 sql 中的#{}替换为?号,在 sql 执行前会使用 阅读全文

posted @ 2021-09-14 23:06 清烟无瘾 阅读(405) 评论(0) 推荐(0)