- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 SpringMVC的@ResponseBody与@RequestBody
内容参考自https://my.oschina.net/lichhao/blog/172562在SpringMVC中,可以使用@RequestBody与@ResponseBody完成报文到对象、对象到报文的转换。这就是依靠Spring3.0引入的消息转换器机制实现的:HttpMessageConverter/** * Strategy interface that specifies a converter that can convert from and to HTTP requests
2020-07-05 13:00:57
2205
原创 SpringMVC的DispatcherServlet处理请求的流程
内容参考https://my.oschina.net/lichhao/blog/104943SpringMVC请求的大致处理流程图1、请求的入口1.1、HttpServlet与FrameworkServlet从设计上看,SpringMVC是依托Servlet容器来设计的。在SpringMVC初始化之后,同样通过service()方法来接受、处理、返回。DispatcherServlet的service()方法是他的父类FrameworkServlet实现的。 prote.
2020-07-04 15:42:28
565
原创 SpringMVC分发器DispatcherServlet初始化
内容参考自https://www.cnblogs.com/fangjian0423/p/springMVC-dispatcherServlet.htmlDispatcherServlet处理请求的流程图 正在上传…重新上传取消正在上传…重新上传取消正在上传…重新上传取消 DispatcherServlet继承关系图一、HttpServlet及其父类隶属于org.apache.tomcat开发的jar包,定义了init()、ser...
2020-07-04 11:14:50
3772
原创 命令模式
如果你了解过数据库事务或者日志的实现过程,那你将很容易理解命令模式。当然命令模式只是可以实现这种目的的一种方式。事务为例事务要求一系列的操作一荣俱荣一毁俱毁。其实也可以理解为一系列的命令中如果有失败的命令,那么执行过的命令都再执行一次相反的命令。package com.ldy.designpattern.commandPattern;/** * 命令总接口 * 所有子命令都实...
2020-03-29 19:40:57
152
原创 观察者模式
package com.ldy.designpattern.ObserverPattern;import java.util.Observable;public class Class extends Observable { //学生数目 private int stuNumber ; //新增科目 private String subName;...
2020-03-22 10:58:29
261
原创 策略模式
原始场景:超类中定义了公共方法。但子类中可能经常要覆写父类中的方法,来处理不同的业务。子类越多时,这样继承的结构维护起来就越困难,整个继承体系变得没有伸缩性。并且当超类中添加了新的方法时,需要在所有子类中维护各种各样的算法。策略模式应用:将超类中的方法实现(也就是行为)单独定义成接口。超类中保留对接口的引用,通过该引用调用接口方法。子类中的算法实现则定义为接口的实现类,子类中...
2020-03-21 17:16:38
203
转载 JDK1.8下关于MethodHandle问题
转自https://blog.csdn.net/weixin_34252686/article/details/91657059
2020-01-09 21:14:13
357
原创 二进制字符与java基本类型互转
public static void main(String[] args) throws Exception { String s = Integer.toBinaryString(7);//将十进制数字转换为二进制 System.out.println(s); int i = Integer.parseInt(s, 2);//将二进制转...
2020-01-08 10:35:48
169
原创 虚拟机二:自动内存管理机制 之 运行时数据区域
一、运行时数据区域图片引用 周志明<深入理解Java虚拟机>1.1、程序计数器.class文件也叫字节码文件,是虚拟机解释运行的目标文件。程序计数器就是当前线程所执行的字节码的行号指示器,属于线程私有的一块小内存。当多线程来回切换时,使用程序计数器能正确的恢复到之前执行的位置。如果正在执行Java方法,则程序计数器记录的是正在执行的字节码指令的地址;如果是native方法...
2020-01-01 14:12:07
142
原创 虚拟机一:Java
展望Java的未来1、模块化:OSGI模块化、代码热替换、模块热部署2、混合语言:期待更多语言运行在Java虚拟机上3、多核并行4、进一步丰富语法5、64位虚拟机...
2020-01-01 11:48:46
118
原创 虚拟机七:类加载机制(二)之类加载器
类加载器:虚拟机加载阶段,“通过全限定名来获取此类的二进制字节流”这一动作交给外部实现,这个模块的实现称为 类加载器。一、类与类加载器的关系对于任意一个类,在虚拟机中的唯一性是依靠类本身与加载此类的类加载器一共决定的。简单理解就是:相同类通过不同的类加载器加载到虚拟机中,类的身份是不同的;在你使用equals()、isAssignableFrom()、isInstance()方法时可能...
2019-12-31 22:32:01
135
原创 虚拟机七:类加载机制(一)之类加载过程
虚拟机真正加载的是.class的二进制流,所以并不要求.class的来源必须是本地磁盘,也可以是网络或其他地方,这当然取决于使用怎样的类加载器。从简单的Applet、JSP到相对复杂的OSGI技术都依赖这样的特性。类的生命周期其中,加载、校验、准备与初始化是必要的步骤。步骤执行并非严格的顺序执行,是在执行一个阶段的同时也可能开始了后续的阶段。类加载的过程加载:虚拟机需要进行...
2019-12-31 11:54:37
232
1
原创 Class类文件格式
Class类文件格式 类型 名称 数量 描述 u4 magic 1 魔数。用来鉴别是不是class文件 u2 minor_version 1 jdk的支线版本号 u2 major_version 1 jdk的主线版本号 u2 constant_pool_count 1 常量池数量 cp_...
2019-12-30 21:42:25
211
原创 七、事务隔离级别和MVCC
transaction本意是买卖、交易。数据库世界为了强调数据的原子性,中译为 事务。SQL标准规定不同隔离级别下产生的问题不同,会出现脏读、幻读与不可重复读的现象。对应四种事务的隔离级别:Read UnCommitted 会出现脏读、幻读与不可重复读现象 ReadCommitted 只会出现幻读与不可重复读现象 Repeatable Read 只会出现幻读现象 Serializa...
2019-12-25 10:09:12
244
原创 六、Innodb的Buffer Pool
Innodb的缓存池主要是解决热点数据的IO资源消耗问题。没有缓存池时,每次数据请求,都通过IO将数据从磁盘读到内存里。对于频繁访问的数据,应该设计成少量次数或者一次读入,后续不更新此数据的话就避免IO的消耗,直接使用此数据。那就给Mysql独立分配一块内存当做缓存池。这样从表空间加载的数据先加载到缓存池中,数据请求缓存池,如果数据不在缓存池中,再通过IO加载文件。那么对于频繁访问和一...
2019-12-24 15:30:22
129
原创 五、Innodb的表空间
前面介绍过B+树索引,也知道通过B+树能快速的定位用户记录。那么我们就一定能快速的获取数据了吗?其实不然,Innodb查询数据分为两步:①定位记录的位置 ②读取记录。这两步B+树只能加快步骤①,步骤②它无能为力。 试想快递员收发信件,今天要收3号楼每一户共计30户的信件。他有两个方案收取信件:方案①按顺序从第1户一直收到第30户户方案②随机。那么现实情况下哪种方案更省时省力呢?...
2019-12-24 13:55:21
243
原创 四、如何使用B+树索引
根据前面所讲,我们应该比较熟悉B+树的属性:每个索引对应一棵B+树,Innodb引擎默认会为我们建立以主键为规则的聚簇索引 聚簇索引的叶子节点保存用户的完整记录 二级索引是索引列+主键的组合,与聚簇索引不同的是,二级索引不会保存用户的完整记录 B+树的每层页面都会按索引键升序排列,并会组成双向链表,用户的记录会组成单向列表1、索引的代价 每建立一个索引就会生成一棵B+树,就会...
2019-12-08 14:33:55
255
原创 三、索引-为了查的更快
先前讲过了Innodb的行格式以及页格式,以及页保存记录的规矩。你忘记了就回顾看看上篇文章,粉丝才能看哦。 Innodb向页中插入记录时,是按照主键的顺序排序的,记录组成了单向链表。页与页又组成了双向链表,每个页都有页号和记录的主键范围,这样其实就能完成基本的查找要求。 如果我们的每条记录都比较大,平均三条记录就占一个页。那页的链表就会很长,查找就会很慢了。本着追求更快的原则,...
2019-12-06 16:18:42
182
原创 二、InnoDB的页
InnoDB操作的基本单位是页,大小一般是16KB。也分诸多类型,我们最常接触的类型就是数据页(INDEX类型)。比如还有存放表空间信息的信息页,日志页。。。。。一、页的结构页的通用结构 字段名 中文名 长度 简单描述 作用 File Header 文件头部 38B 页的通用信息 起码能表明本页是属于哪个表空间的 Page Head...
2019-12-06 11:35:38
315
原创 一、InnoDB之一条记录的结构
一、页InnoDB将数据存储在磁盘上,真正处理数据的行为发生在内存里。所以操作数据时,需要将数据在磁盘与内存来回交换,Innodb采用页作为交换的基本单位,一页一般16KB大小。也就是说Innodb一次最少从磁盘里读取16KB的数据到内存中,同样最少写入16KB的数据到磁盘。二、InnoDB的行格式平时,我们哪知道Innodb操作的是一页一页的数据,看到的都是一行一行的。这种一行一行的...
2019-12-05 12:23:25
206
转载 Centos7安装mysql
关闭防火墙:避免远程连接受限制https://blog.csdn.net/t748588330/article/details/81736515安装:————————————————版权声明:本文为CSDN博主「仅此而已g」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/qq_37798548/...
2019-11-10 11:04:42
110
原创 Jvm4、GC收集器
我之前的文章介绍过GC的算法有标记-复制、标记-压缩等。也介绍到了GC工作时,堆内存中是如何进行复制与压缩的。现实情况中,JVM中是不断的有对象产生、灭亡的;这就对会GC行为中标记对象产生很大的冲突。总不能GC正标记对象呢,jvm里这些对象又一会儿活跃一会儿灭亡的。所以GC时,将会暂停jvm中的一切活动,直到垃圾回收完毕。也叫作 Stop the Wrold~stop the world 现象...
2019-04-15 22:47:14
355
1
原创 Jvm3、JVM和GC常用的参数
一、跟踪参数1、-verbose:gc -XX:+printGC 二者都可以打印GC的简要信息在Idea中设置VMoptions: 例如--> -verbose:gc。2、-XX:+PrintGCDetails 可以打印GC的详细信息-XX:+PrintHeapAtGC 每次GC时都打印堆信息3、-Xmx -Xms 指定堆内存的最大值和最小值...
2019-04-14 22:40:15
169
原创 Jvm2、JVM的内存模型与GC算法
1、内存模型 jvm会使用ClassLoader类加载器加载生成的XXX.class文件。将类信息、方法、对象、常量等进行保存在内存里。如此,jvm的内存模型变分为:方法区 Java堆 Java栈 本地方法区 同时,GC垃圾回收器就是针对这个内存进行工作的。方法区:保存类信息、各种类型的常量、类的字段、方法等。通常与永久区(Perm)关联在一起。Java...
2019-03-27 11:35:41
320
原创 Jvm1、初次认识JVM
您好,很感谢您接受我对您的访问。也非常感谢多年以来您对Coding界的支持。JVM:全程 Java Virtual Machine,Java虚拟机。是通过软件模拟、但具有完整硬件系统功能的一种环境。常见的其他的虚拟机还有VMware、VirtualBox等。JDK1.8时,Sun公司被Oracle收购。jvm已经优化为Hotspot VM为基础,并移植了JRockit的优秀特性。...
2019-03-26 20:56:46
174
原创 原型模式
Prototype Pattern与单例模式Singleton Pattern的目的相反。此模式旨在建立多个对象,并且让调用者不用重复的进行属性的setXxx操作,也不使用构造方法就能够建立一个新的对象。也叫作对象的copy或者clone;Spring中<bean scope="prototype">就是原型模式。关于对象的复制,有深浅之分。浅拷贝也叫浅克隆,指原对象的...
2019-03-16 10:49:38
154
原创 Java常见的设计模式总结
不要为了套用设计模式而使用设计模式,应该在遇到问题、想要进行代码优化时想到可不可以用设计模式作为一种解决方案。1、工厂模式2、单例模式3、原型模式4、代理模式...
2019-03-15 20:23:43
159
原创 单例模式
解释:确保一个类在任何情况下绝对只有一个实例,并提供一个全局访问点。例如:ApplicationContext、ServletContext。。。。。特点:隐藏构造方法。提供公共获取实例的方法。1、饿汉式单例不管用不用直接初始化,浪费内存空间。但是是线程安全的。package com.ldy.designpattern.simpleFactory.singlePattern;...
2019-03-15 20:21:52
197
原创 工厂模式
工厂模式我理解为 将一个对象的产生过程封装在工厂类里,而工厂对外提供一个公共的方法供外界调用。下面是工厂模式的一些写法,方法名字看不懂不重要。1、简单工厂接口实例化时,需要用不同的子类来返回不同的对象;需要多个对象就需要new出多个来。例如需要柠檬就需要 IFruits lemmon =new Lemmon();用工厂方法可以完成统一的调用,而且工厂方法本身是单例模式,省去ne...
2019-03-15 14:59:05
217
1
转载 分块查找 转载自https://www.cnblogs.com/Ming8006/p/8330481.html
感觉用不到 我就随便敲了敲代码。package com.ldy.arithmetic.search;import org.apache.tomcat.jni.Error;import java.util.ArrayList;import java.util.Arrays;public class BlockBinarySearch { private int[] i...
2019-03-15 12:33:46
618
原创 快速排序
Quick Sort的基本思想:先经过一次排序,将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。看不懂的可以参考更认真的博客:https://blog.csdn.net/qq_26122557/article/details/79458649package com.ldy.arithmetic.sort;...
2019-03-14 21:05:54
162
原创 插入排序
Insertion Sort的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到对应位置然后插入。我不太理解这玩意。。。。不过Arrays.sort(Int[] ints)方法中数组长度小于47时,使用的就是插入算法。算法描述:一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素...
2019-03-14 12:25:04
153
原创 选择排序
(Selection-sort)是一种简单的排序算法。首先在未排序的序列中找到最小(大)的元素,将他与序列第一位置的指进行交换,然后在剩下的序列中再找出最小值,放在序列第二位置,依次类推,直到所有的元素排序完毕。package com.ldy.arithmetic.sort;import java.util.Arrays;public class SelectionSort { ...
2019-03-14 11:20:56
139
原创 冒泡排序
冒泡排序(Bubble Sort)是一种简单的排序算法。他重复访问要排序的数列,每次比较两个元素,如果他们不相等就将他们交换。特点:每次遍历都能将最大或最小的元素放在正确的位置上。Arrays.sort()方法针对不同的数组有不同的排序算法。针对字符串排序和查找都使用到了compareTo()方法,而对于int[]类型则会根据数组长度等属性采用不同的排序算法。比如双轴快速排序,面试的时候没...
2019-03-14 10:49:14
208
原创 二分法查找
package com.ldy.arithmetic;import java.util.Arrays;public class BinarySearch { public static void main(String[] args) { String[] s={"1","2","3","4","5","6","7","
2019-03-14 08:48:16
204
原创 查找与排序算法
查找算法java中最常见的算法就是循环判断,也叫做顺序查找,这里就不写啦。引用http://www.cnblogs.com/Ming8006/p/8330481.html1、二分法查找2、分块查找排序算法:排序的算法很多种,我只写了我需要的。原文引用https://www.cnblogs.com/onepixel/articles/7674659.html1、冒泡...
2019-03-14 08:43:57
273
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人