自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 5 listener

5 listener监听器编写流程监听器三大域对象监听器ServletContextListenerServletSessionListenerServletRequestListener三大作用域属性变化(通用)电子邮件监听器事件源:被监听的对象,三个域对象 request session servletContext监听器:监听事件源对象 事件...

2020-04-01 20:45:05 249

原创 4 Servlet

4 Servletservlet步骤RequestRequest对象传递数据RequestDispatcher接口Response发生状态码的方法发送响应头相关的方法发送响应消息体相关的方法文件下载会话CookieSessionServlet三个作用域总结Servlet生命周期servlet配置ServletContextServletCon...

2020-04-01 20:44:29 580

原创 2.3 泛型、序列化、复制

2.3 泛型、序列化、复制泛型序列化复制直接赋值复制浅拷贝深拷贝泛型泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数泛型方法public static <E> void function(E[] input){ ...}泛型类clas...

2020-04-01 17:09:09 343

原创 2.2 注解与动态代理

2.2 注解与动态代理注解注解类型JDK提供的注解元注解jdk7以后添加的注解自定义注解Annotation架构注解解析代理静态代理动态代理Proxy API注解是一种代码级别的说明注解是写给计算机看的作用:编译检查:通过代码标志注解,让编译器实现基本的编译检测代码分析编写文档注解类型JDK提供的注解Deprecated ...

2020-03-31 17:53:22 385

原创 2.0 反射机制

2.0 反射机制理论基础反射包ConstructorModifierMethodfield优缺点java.lang.Class理论基础编译器:把源码交给编译器编译成计算机可以执行的文件的过程,也就是把 Java 代码编成 class 文件的过程运行期:把编译后的文件交给计算机执行,直到程序运行结束反射:在运行状态中,对于任意一个类,都能够知道这个类的所有属性...

2020-03-31 15:51:05 136

原创 4 MySQl优化

4 MySQl优化大表优化限定数据的范围禁止不带任何限制数据范围的查询条件读/写分离数据库拆分,主库负责写,从库负责读垂直分区数据表列的拆分,把一张列比较多的表拆分为多张表优点:可以使列数据变小,在查询时减少读取的Block数,减少I/O次数;还可以简化表的结构,易于维护缺点:主键会出现冗余并会引起join操作,可以在应用层进行join来解决;会让事务更加复杂...

2020-03-21 21:29:48 121

原创 3 MySQL索引

3 MySQL索引索引存储结构SQL语句数据结构及算法B-TreeB+Tree为什么使用B-Tree(B+Tree)MySQL索引实现MyISAMInnoDB索引使用策略及优化查询优化索引选择性和前缀索引索引存储结构存储结构(InnoDB)(16kB)File Header(38字节)Page Header(56)Infir...

2020-03-21 21:29:09 172

原创 2 MySQL存储引擎

2 MySQL存储引擎SQL命令MyISAMInnodb物理结构底层存储结构SQL命令查看所有存储引擎:show engines;MySQL默认存储引擎是InnoDB,是事务性存储引擎查看默认存储引擎:show variables like ‘%storage_engine%’;查看表的存储引擎:show table status like ‘tableName...

2020-03-21 21:27:42 214

原创 1 MySQL初级

1 MySQL初级1 基础2 数据库完整性3 数据类型4 sql命令1、Mysql指令2、数据库级别操作3、数据表级别操作4、表内级别增删改查curd查询插入更新删除5 mysql函数字符串函数日期函数数学函数6 视图和索引视图索引7、事务事务四大特性(ACID)事务命令并发事务存在的问题事务隔离级别8、账户管理...

2020-03-21 21:26:36 846

原创 Struts2 1

Struts2 1前端控制器struts2开发步骤配置文件加载顺序Action配置action控制类实现常量配置分模块开发配置前端控制器将所有的请求都先经过一个前端控制器,在前端控制器中实现框架的部分代码,剩下的具体操作提交到具体的Actionstruts2开发struts2基本开发包文件名说明asm-3.3.jar提供字...

2020-03-16 21:18:03 274

原创 Struts2 2

Struts2 2访问Servlet结果页面的配置数据封装属性驱动模型驱动封装集合类型的数据封装到List集合中封装到Map集合访问ServletActionContext类:是action执行的上下文对象方法描述void put(String key, Object value)模拟HttpServletRequest的setA...

2020-03-16 21:17:27 307

原创 struts2 3

struts2 3OGNL值栈获取值栈堆栈操作值栈OGNL对象图导航语言支持对象方法调用支持静态方法调用和值访问支持赋值操作和表达式串联访问OGNL上下文操作集合对象OGNL结构三要素:表达式(expression)、根对象(root Object)、上下文环境(context)在表达式中访问Context中的对象需要使用 **“#”**加上...

2020-03-16 21:16:28 195

原创 struts2 4

struts2 4拦截器实现原理struts2执行流程自定义拦截器拦截器的配置拦截器用于在某个方法或字典被访问之前或者之后进行拦截,是AOP的一种实现策略拦截器是动态拦截action调用的对象实现原理大部分时候,拦截器通过代理的方式来调用,当请求到达struts2的ServletDispatcher时,struts2会查找配置文件,并根据其配置实例化相...

2020-03-16 21:15:58 230

原创 04 树

04 树树树的存储结构树的遍历森林与树的转换森林转换为二叉树二叉树转换为森林树转换为二叉树二叉树转换为树二叉树满二叉树完全二叉树树有且仅有一个特定的根节点,根节点只有直接后继,没有直接前驱树的存储结构双亲表示法双亲域:保存结点的双亲所在位置数据域#define MAX_TREE_SIZE 100;//结点结构typedef st...

2020-03-14 19:58:46 304

原创 Hibernate 3 关系映射

Hibernate 3 关系映射映射文件配置一对多相关操作多(A)对多(B)映射文件配置//one-to-many映射文件配置<set name = "少的一方的属性名" cascade=“save-update”> <key colume="多的一方的属性名"></key> <one-to-many class="多的一方的类...

2020-03-12 23:56:11 201

原创 Hibernate 4

Hibernate 4检索方式导航对象图检索OID检索HQL检索QBC检索SQL检索查询优化抓取策略延迟加载批量抓取检索方式导航对象图检索根据已经加载的对象导航到其关联对象OID检索指session的get和load方法Customer c = (Customer)session.get(Customer.class,1);HQL检索...

2020-03-12 23:55:39 246

原创 Hibernate 1

Hibernate 11 映射文件2 Hibernate核心配置文件测试代码相关API1 映射文件映射文件指明实体类映射到数据库的哪个表一般以xxx.hbm.xml结尾<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibern...

2020-03-11 23:00:39 210

原创 hibernate 2

hibernate 2持久化类缓存一级缓存事务控制其他APIQueryCriteriaSQLQuery持久化类持久化:将内存中的数据永久存储到关系型数据库编写规则提供无参构造方法:因为底层需要使用反射生成类的实例属性私有,对私有属性提供公有的get和set方法:因为底层会将查询到的数据进行封装属性尽量使用包装类的类型:因为包装类默认值与基本...

2020-03-11 22:59:18 306

原创 1.9 异常

1.9 异常产生异常的原因异常分类产生异常的原因java内部错误发生异常,java虚拟机产生的异常程序代码中存在错误通过throw产生的异常异常分类Throwable 是 Java 语言中所有错误或异常的超类。下一层分为 Error 和 ExceptionErrorError 类是指 java 运行时系统的内部错误和资源耗尽错误。应用程序不会抛出该类对象。如果...

2020-03-06 00:37:34 179

原创 2 Java并行程序基础

2 Java并行程序基础新建线程://Thread t1 = new Thread(RunnableClass);Thread t1 = new Thread();t1.start();////run相当于普通方法,调用时不会创建一个新的线程终止线程stop():强行把执行到一半的线程终止(很暴力)并立即释放所持有的锁线程中断让目标线程停止执行,不会立即退出,而是给线...

2020-03-05 21:29:08 138

原创 1 高并发–概念

1 高并发–概念同步和异步并发(交替运行)和并行临界区(共享资源)阻塞和非阻塞死锁、饥饿和活锁(互相释放资源)并发级别阻塞(悲观策略)(blocking)无饥饿(starvation-free)无障碍(乐观策略)(obstruction-free)当发现数据竞争时,线程回滚修改,确保数据安全无锁(lock-free)无锁的并发保证必然有一个...

2020-03-05 21:28:35 125

原创 1 JDBC

JDBC单元测试JDBC开发步骤PreparedStatement完整代码可能存在的问题生产环境中的JDBC–properties配置文件JDBC连接池自定义连接池DBCP连接池C3P0JavaBeanDButils单元测试常用注解:@Test:用于修饰需要执行的方法Before:测试方法前执行的方法After:测试方法执行后的方法...

2020-02-27 22:21:53 382

原创 06 类加载机制

06 类加载机制类加载过程类加载器双亲委派类加载过程过程:加载:在内存中生成一个代表这个类的 java.lang.Class 对象,作为方法区这个类的各种数据的入口注意这里不一定非得要从一个 Class 文件获取这里既可以从 ZIP 包中读取(比如从 jar 包和 war 包中读取)也可以在运行时计算生成(动态代理),也可以由其它文件生成(比如将 JSP 文件转换...

2020-02-27 20:50:10 111

原创 3.3 Java NIO

3.3 Java NIO多路复用NIONIO缓冲区NIO非阻塞ChannelBufferSelector多路复用NIONIO: 在多路复用 IO模型(NIO)中,会有一个线程不断去轮询多个 socket 的状态,只有当 socket 真正有读写事件时,才真正调用实际的 IO 读写操作核心: Channel(通道),Buffer(缓冲区), SelectorNIO 基...

2020-02-23 17:23:03 130

原创 3.0 IO模型

3.1 IO模型传统IO非阻塞IO模型多路复用IO模型(NIO)信号驱动IO模型异步IO模型传统IO在读写数据时会发生阻塞,当用户线程发出 IO 请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出 CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除 block 状态非阻塞IO模...

2020-02-23 17:20:26 216

原创 2.1 访问控制符详解

2.1 访问控制符详解权限控制符staticfinal修饰符常用访问限制符publicprivateprotectedfinalabstractstatictransientvolatile权限控制符类的控制符:空或者public方法和属性控制符:public、private、protected、friendly(即没有用任何描述符描述)访问...

2020-02-23 17:19:32 312

原创 1.8 继承和多态

1.8 继承和多态继承super对象类型转换:上转型和向下转型方法重载和方法重写多态关键字instanceof抽象类接口内部类实例内部类静态内部类局部内部类匿名类Lambda表达式继承类的继承不改变类成员的访问权限子类不能获得父类的构造方法要使用父类的构造方法使用super()父类有带参构造方法但没有重写无参构造方法,子类必须有带参构造方法并...

2020-02-23 17:18:38 119

原创 1.7 面向对象

1.7 面向对象基础概念this创建对象对象的销毁null对象注释可变参数构造方法折构方法包基础概念类:封装共有属性和方法,可以理解为现实世界的类别实体的抽象,如人可以抽象为一个类对象:一个类的实例,比如小明是人的一个实例,是一个对象对象特点:特有属性和行为唯一性面向对象的三大核心特性:封装:封装共有属性和行为继承多态类...

2020-02-23 17:17:53 111

原创 1.6 数组

1.6 数组数组创建分配空间获取数组元素Arrays工具类静态方法java8新增功能数组与字符串的转换数组操作数组特性:一致性:数组保存类型相同的元素有序性:数组中的元素是有序的,通过下标访问不可变性:数组一旦初始化,长度不可变数组创建一维数组type[] arrayName;type[]与type是不同类型,type[]是引用类型,t...

2020-02-23 17:16:57 182

原创 1.5 内置包装类

1.5 内置包装类Object类Integer类Float类Double类Number类Character类BooleanByte类System类Object类没有指定时,Java的类默认继承自Object常用方法:方法说明Object clone()创建与该对象的类相同的新对象boolean equals(Object)比较两对象是...

2020-02-23 17:11:58 169

原创 1.4 数字和日期处理

1.4 数字和日期处理Math类random和random类数字格式化大数字运算Java Date类、Valendar类日期格式化Math类静态常量E和PI静态常用方法绝对值:static 基本数据类型 abs(基本数据类型 a)最大值:static 基本数据类型 max(基本数据类型 a,基本数据类型 b)最小值:static 基本数据类型 min...

2020-02-23 17:09:35 154

原创 1.3 正则表达式

1.3 正则表达式基础字符Java.util.regex基础字符特殊字符特殊字符说明$匹配一行的结尾。要匹配 $ 字符本身,请使用$^匹配一行的开头。要匹配 ^ 字符本身,请使用^()标记子表达式的开始和结束位置。要匹配这些字符,请使用(和)[]用于确定中括号表达式的开始和结束位置。要匹配这些字符,请使用[和]{}用于标记...

2020-02-23 17:07:43 473

原创 1.2 Java 字符串基础

1.2 Java 字符串基础String构造方法常用方法String与整型int的相互转换String字符串拼接String补充StringBuffer类构造方法常用方法String与StringBuffer和StringBuilder类的区别String创建后不可变,但可以使用其他变量赋值的方式更改内容构造方法String():创建一个空的...

2020-02-23 17:06:16 145

原创 1.1 Java基础概念

1.1 Java基础概念标识符注释基本数据类型算术运算符标识符规则:标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线关键字:数据类型:boolean、int、lon...

2020-02-21 23:19:42 123

原创 05 GC垃圾收集器

05 GC垃圾收集器5.1 Serial 垃圾收集器 (单线程、 复制算法)5.2 ParNew 垃圾收集器 (Serial+ 多线程)5.3 Parallel Scavenge 收集器 (多线程复制算法、高效)5.4 Serial Old 收集器 (单线程标记整理算法 MSC)5.5 Parallel Old 收集器 (多线程标记整理算法)5.6 CMS 收集器 (...

2020-02-21 23:03:21 196

原创 04 GC分代收集算法 和 分区收集算法

04 GC分代收集算法 和 分区收集算法4.1 分代收集算法4.2 分区收集算法4.1 分代收集算法在新生代-复制算法每次垃圾收集都能发现大批对象已死, 只有少量存活. 因此选用复制算法, 只需要付出少量存活对象的复制成本就可以完成收集.在老年代-标记整理算法因为对象存活率高、没有额外空间对它进行分配担保, 就必须采用“标记—清理”或“标记—整理”算法来进行回收, 不必进行内...

2020-02-21 23:00:39 675

原创 03 四种引用类型

03 四种引用类型强引用:把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存泄漏的主要原因之一软引用:软引用需要用 SoftReference 类来实现,对于只有软引用的对象来说,当系统内存足够时它不会被回收,当系统内存空间不...

2020-02-21 23:00:06 159

原创 02 垃圾回收算法

02 垃圾回收算法1 垃圾辨别1.1 引用计数法1.2 可达性分析2 标记清除算法(Mark-Sweep)3 复制算法4 标记整理算法(Mark-Compact)5 分代收集算法5.1 新生代与复制算法5.2 老年代与标记复制算法1 垃圾辨别1.1 引用计数法一个对象如果没有任何与之关联的引用,即他们的引用计数都不为 0,则说明对象不太可能再被用到,...

2020-02-21 22:59:30 502 4

原创 01 JVM基本概念与内存区域

01 JVM基本概念与内存区域1 基本概念2 内存区域程序计数器(线程私有)虚拟机栈(线程私有)本地方法区(线程私有)堆(heap线程共享)-- 运行时数据区新生代老年代方法区/永久代(线程共享)Java8与元数据1 基本概念JVM:是可运行Java代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域运行...

2020-02-21 22:55:16 205

原创 10 redis高级

10 redis高级HyperLogLog命令基数:不重复的数据个数Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的只计算基数个数,但不存储元素本身pfadd key element:添加指定元素到HyperLogLog中pfcount key:计算基数个...

2020-02-14 21:18:45 126

空空如也

空空如也

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

TA关注的人

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