自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (3)
  • 收藏
  • 关注

原创 SpringBoot 集成Redis,修改序列化方法

首先看一下源码:public class RedisTemplate<K, V> extends RedisAccessor implements RedisOperations<K, V>,BeanClassLoaderAware { //声明了key,value的各种序列化方式,初始值为null @Nullable private RedisSerializer keySerializer = null; @Nullable private RedisSerial

2020-11-06 19:35:21 305

原创 Spring MVC笔记

Spring MVC笔记Spring MVC是Spring提供给我们的一个简化web开发的框架第一部分Spring MVC 应⽤第一节Spring MVC 简介1.1Spring MVC 简介三层架构我们的开发架构⼀般都是基于两种形式,⼀种是 C/S 架构,也就是客户端/服务器;另⼀种是 B/S 架构,也就是浏览器服务器。在 JavaEE 开发中,⼏乎全都是基于 B/S 架构的开发。那么在 B/S 架构中,系统标准的三层架构包括:表现层、业务层、持久层。三层架构在我们的实际开发中使⽤的⾮常多

2020-11-02 21:30:07 207

原创 Spring笔记

第一部分 Spring概述第1节Spring简介Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。Spring 官⽅⽹址:http://spring.io/我们经常说的 Spring 其实指的是Spring Framework(spring 框架)。第2节Spring 发展

2020-10-25 01:20:47 266

原创 Mybatis笔记

一、自定义持久层框架JDBC存在问题数据库连接创建、释放频繁造成系统资源浪费,从而影响系统性能Sql语句在代码中硬编码,造成代码不易维护,实际应用中Sql变化可能较大,sql变动需要改变java代码使用preparedStatement向占位符传参存在硬编码,因为sql语句的where条件不一定,可能多页可能少,修改sql还要修改代码,系统不易维护对结果集存在硬编码(查询列明),sql变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析会更加方便问题解决思路使

2020-10-24 16:01:24 233

原创 java手写简单实现ioc、aop事务demo

java手写简单实现ioc、aop事务demo下载地址:https://download.csdn.net/download/Author1thy/12972060

2020-10-19 21:22:10 154

原创 java 自定义持久层框架代码

java 自定义持久层框架代码下载地址:https://download.csdn.net/download/Author1thy/12952333

2020-10-18 00:44:55 97

原创 JVM垃圾回收器

GC分类与性能指标分类按线程数分,可以分为串行垃圾回收器和并行垃圾回收器。按工作模式 分,可以分为并发式垃圾回收器和独占式垃圾回收器。按碎片处理方式分,可分为压缩式垃圾回收器和非压缩是垃圾回收器。按工作的内存空间分,可分为年轻代垃圾回收器和老年代垃圾回收器。指标- 吞吐量:运行用户代码的时间占总时间的比例垃圾收集开销:吞吐量的补数,垃圾收集时间与总运行时间的比例- 暂停时间:执行垃圾收集时,程序的工作线程被暂停的时间STW收集频率:相对于程序执行,收集操作发生的频率- 内存占用:

2020-09-22 01:46:02 124

原创 JVM垃圾回收相关概念

System.gc()的理解在默认情况下,通过System.gc()或者Runtime.getRuntime.gc()的调用,会显示触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存然后System.gc()调用附带一个免责声明,无法保证堆垃圾收集器的调用JVM实现者可以通过System.gc()调用来决定JVM的GC行为。而一般情况下,垃圾回收应该自动进行,无需手动触发,否则太过麻烦。在一谢特殊情况下,如我们正在编写一个性能基准,我们可以在运行之间调用System.gc

2020-09-20 20:53:11 97

原创 JVM垃圾回收相关算法

标记阶段:引用计数算法对每个对象保存一个整型的引用计数属性,用于记录被引用的情况,引用+1,引用失效-1优点:实现简单,垃圾对象便于识别;判定效率搞,回收没有延迟性缺点:它需要独立的字段存储计数器,这样的作法增加了存储空间的开销每次赋值都需要更新计数器,伴随着加法和减法的操作,增加了时间开销引用计数器又一个严重的问题,即无法处理循环引用的情况。这是一条致命缺陷,导致在Java的垃圾回收器中没有使用该算法java使用的不是引用计数算法(Python使用了)标记阶段:可达

2020-09-20 15:48:11 108

原创 JVM垃圾回收概述

什么是垃圾垃圾是指在运行程序中没有认合指针指向的对象,这个对象就是需要被回收的垃圾,如果不及时对内存中的垃圾进行清理,那么这些垃圾对象所占用的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。为什么需要GC对于高级语言来说,一个基本认知是如果不进行垃圾回收,内存迟早都会被消耗完,因为不断分配内存空间而不进行回收,就好像不停地生产生活垃圾而不打扫一样除了释放没用的对象,垃圾回收也可以清楚内存里的记录碎片。碎片整理所占用的堆内存移到堆的的一段,以便将整理出的内

2020-09-20 00:13:33 99

原创 JAVA String

String常量池在字符串常量池中生成:直接使用双引号声明List item使用intern()方法位置:所有字符串都在堆中,和其他普通对象一样。String拼接常量与常量拼接的结果在常量池,编译期优化常量池中不会存在内容相同的常量只要其中一个是变量,结果就在堆中。变量拼接的源里是StringBuider如果拼接的结果调用intern()方法,则主动将常量池中没有的字符串对象放入池中,并返回此地址 public static void main(String[] arg

2020-09-18 01:17:56 121

原创 JVM执行引擎,解释器,即时编译器(

解释器(Interpreter): 解释器解释字节码的速度很快,但执行缓慢。缺点是: 当一个方法被多次调用时,每次都需要新的解释。即时编译器(JIT Compiler): JIT编译器消除了解释器的缺点。执行引擎使用解释器来帮助转换字节码,但是发现热点代码(重复执行代码) ,它将使用JIT,将热点代码编译成本机机器码 。机器码直接用于重复的方法调用,从而提高系统性能。...

2020-09-17 00:40:22 129

原创 JVM运行时数据区

程序计数器记录当前线程正在执行的字节码指令地址,是线程独享的不存在垃圾回收和OOM栈一个方法在栈中是一个栈帧,一个栈帧中包含局部变量表、操作数栈、动态连接和方法返回地址等,不存在垃圾回收,存在OOM局部变量表:存放编译期可知的各种基本数据类型,对象引用和返回类型操作数栈:方法中运算产生的变量动态连接:每个栈帧中都包含一个指向运行时常量池中该栈帧所属方法的引用方法出口:正常的return和异常的抛出方法区/元空间JDK1.8之后改为元空间,使用本地内存,用于存储类信息、常量、静态变量,即

2020-09-17 00:34:18 104

原创 JVM类加载器

类加载过程一、加载将class文件加载到内存之中,class文件来源有本地文件、JAR包、网络、动态编译java源文件。类加载器除了JVM提供的(bootstrap 等)之外可以通过继承ClassLoader类来创建自己的类加载器二、链接验证:检查被加载的累结构是否正确,可以防止恶意入侵,确保Class文件中包含的信息符合当前虚拟机的要求。主要包括文件格式验证,元数据验证,字节码验证,符号引用验证文件格式验证:验证字节流是否符合Class文件格式规范元数据验证:对字节码描述的信息进行语

2020-09-16 23:59:50 542

原创 jvm堆常用设置

-XX:+PrintFlagsInitial :查看所有的参数默认初始值-XX:+PrintFlagsFinal :查看左右参数的的最终值,修改后的值具体查看某个参数的指令:jps:查看当前运行中的进程jinfo -flag 查看的参数 进程id-Xms:初始化堆空间内存(默认为物理内存的1/64)-Xmx:最大堆空间内存(默认为物理内存的1/4)(建议最大最小值一致,较少系统动态调整空间二浪费性能)-Xmn:设置新生代的大小。(初始值及最大值)-XX:NewRatio:配置新生代与老年代在堆

2020-09-13 18:57:09 156

原创 java马踏棋盘实现,回溯+贪心

思路:正常回溯算法,通过贪心算法优先走剩余可走位置少的,因为可能之后再也走不到了代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;/** * 回溯算法,贪心算法实现马踏棋盘问题 */public class TheHorseStepBoard { static final int[] dx = {-2, -1, 1, 2, 2, 1, -1, -2}; // x方向的增量 stat

2020-09-02 22:54:16 174

原创 JAVA实现弗洛伊德算法,求顶点之间的最短距离

思路:A通过B到C的距离可能比直接从A到B的距离更短,挨个比较更新到距离表中代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;public class FloydAlgorithm { private static int MAX = 1000; public static void main(String[] args) { //构建图 int[][]

2020-09-01 23:19:42 311

原创 java实现迪杰斯特拉算法

思路:从起始点出发,广度遍历,记录到该点距离最短的顶点,记录下来,再广度遍历剩余的顶点,直到确定所有顶点都为最短时结束代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;public class Dijkstra { private static int MAX = 1000; public static void main(String[] args) { //构建图

2020-09-01 02:04:54 549

原创 java斐波那契查询

代码:package com.wangyq.datastructrue.search;import java.util.Arrays;public class FibonacciSearch { public static void main(String[] args) { int[] ints = {1, 6, 18, 19, 37, 50, 61, 69, 76, 81, 83, 99, 108, 113, 114, 121, 124, 156, 180, 197};

2020-09-01 00:01:37 95

原创 java克鲁斯卡尔算法

思路:依次取最短路径,如果可以两个顶点美豆都联通则连接该路径直到所有顶点全都链接代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;public class Kruskal { public static void main(String[] args) { //构建图 int[][] ints = new int[7][7]; for (int[]

2020-08-31 23:55:04 159

原创 java普利姆算法实现最短路径问题

思路:1.先确认一个点查找他连接的最短路径的顶点,然后记录下该顶点,然后查到这两个顶点连接最短路径的顶点,不能出现回路,然后在判断这个三个依次累计,直到所有顶点全部连接代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;/** * 普利姆算法- 修路问题 ,最小生成树 */public class PrimAlgorithm { public static void main(String

2020-08-31 21:16:32 265

原创 java贪心算法实现广播电台覆盖问题

代码:package com.wangyq.datastructrue.arithmetic;import java.util.*;/** * 贪心算法-广播站 */public class GreedyAlgorithm { public static void main(String[] args) { //存储一共要覆盖哪些城市 List<String> areaList = new ArrayList<>();

2020-08-31 00:13:11 302

原创 java KMP字符串匹配算法实现

代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;public class KMP { public static void main(String[] args) { String str = "abcabaabaabcacb"; String matchStr = "abaabcac"; int index = kmp(str, matchStr)

2020-08-30 23:41:07 117

原创 java动态规划,背包问题

代码:package com.wangyq.datastructrue.arithmetic;public class DynamicPlanning { public static void main(String[] args) { //初始化参数 //物品重量 int[] weight = {1, 2, 5, 3}; //物品价值 int[] value = {1, 2, 4, 5}; //

2020-08-30 19:54:54 138

原创 JAVA实现汉罗塔问题

代码:package com.wangyq.datastructrue.arithmetic;import java.util.Arrays;import java.util.Stack;/** * 分治算法-汉罗塔 */public class DivideAndConquer { public static void main(String[] args) { //定义一个汉罗塔 TowerofHanoi towerofHanoi = new T

2020-08-30 16:48:10 356

原创 java实现公式解析加运算,可自定义函数

代码:package com.wangyq.datastructrue.calculator;import java.lang.reflect.Method;import java.math.BigDecimal;import java.util.*;class Test { public static void main(String[] args) { //要计算的公式 //认为公式为正确的不需要校验 String equation

2020-08-30 14:49:23 5427 1

原创 java图,创建,广度优先遍历,深度优先遍历

图:代码:package com.wangyq.datastructrue.map;import java.util.Arrays;class Test { public static void main(String[] args) { //初始化图 Map map = new Map(5); //设置联通 map.setEdge(1, 2); map.setEdge(1, 3); map.

2020-08-30 12:03:03 118

原创 java平衡二叉树

代码:package com.wangyq.datastructrue.tree;class BalancedBinaryTreeTest { public static void main(String[] args) { int[] ints = {1, 65, 64, 561, 213, 5479, 87465, 13, 9, 7984, 31, 234, 56, 13, 4, 7, 7, 8, 123, 12, 456, 567, 231, 41, 234, 6874,

2020-08-24 20:38:16 96

原创 Java有序二叉树

代码:package com.wangyq.datastructrue.tree;public class OrderedTree { private static OrderedTreeNode rootNode; public static void main(String[] args) { int[] ints = {65, 64, 561, 213, 5479, 87465, 13, 9, 7984, 31, 6874, 51, 321, 84, 651,

2020-08-24 11:57:10 221

原创 Java实现哈夫曼编码压缩解压文件

压缩:1.将文件中读到的字节进行整理,统计各个字节出现次数2.将次数与值添加到List中,并进行排序3.根据List生成哈夫曼树4.根据哈夫曼树生成哈夫曼编码5.对应哈夫曼编码生成新的bytes,并将bytes和哈夫曼编码一同输出到压缩文件中解压:1.先读取数据和哈夫曼编码2.反转哈夫曼编码(key,value互换)3.对应反转后的哈夫曼编码恢复原来文件3.输出恢复好的文件注意:当生成的压缩后编码最后一位中时0开头时,转换byte会数据丢失,所以特殊处理,将bytes的第一位存储丢失的

2020-08-23 17:22:04 412

原创 java归并排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class MeagerSort { public static void main(String[] args) { //待排序数组 int[] ints = {65, 64, 561, 213, 5479, 87465, 13, 9, 7984, 31, 6874, 51, 321, 84, 651, 23, 6

2020-08-20 21:46:09 181

原创 java堆排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class HeapSort { public static void main(String[] args) { int[] ints = {65, 64, 561, 213, 5479, 87465, 13, 9, 7984, 31, 6874, 51, 321, 84, 651, 23, 68, 56, 52, 416, 1,

2020-08-20 21:10:21 158

原创 java二叉树前中后序遍历,查询

代码:package com.wangyq.datastructrue.tree;public class BinaryTree { public static void main(String[] args) { //定义6个节点 Node node1 = new Node(1, "小李"); Node node2 = new Node(2, "小赵"); Node node3 = new Node(3, "小钱");

2020-08-12 17:03:54 104

原创 java插值排序

代码:package com.wangyq.datastructrue.search;import java.util.Arrays;public class InterpolationSearch { public static void main(String[] args) { int[] ints = {1, 6, 18, 19, 37, 50, 61, 69, 76, 81, 83, 99, 108, 113, 114, 121, 124, 156, 180, 1

2020-08-10 19:19:08 224

原创 java二分查找

代码:package com.wangyq.datastructrue.search;import java.util.Arrays;public class Binarysearch { public static void main(String[] args) { int[] ints = {1, 6, 18, 19, 37, 50, 61, 69, 76, 81, 83, 99, 108, 113, 114, 121, 124, 156, 180, 197};

2020-08-10 16:32:27 117

原创 java基数排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class Cardinal { public static void main(String[] args) { //定义排序前数组,随机数100个 int[] ints = new int[20]; for (int i = 0; i < 20; i++) { int

2020-08-09 22:25:39 106

原创 java希尔排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class Shell { public static void main(String[] args) { //定义排序前数组,随机数100个 int[] ints = new int[20]; for (int i = 0; i < 20; i++) { ints[i

2020-08-09 17:28:34 118

原创 java快速排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class Speediness { public static void main(String[] args) { //定义排序前数组,随机数100个 int[] ints = new int[100]; for (int i = 0; i < 100; i++) {

2020-08-09 15:46:31 323

原创 java插入排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class Insertion { public static void main(String[] args) { int[] ints = {5, 34, 7, 834, 75, 23, 345, 78908, 2, 3}; System.out.println("排序前:" + Arrays.toString(

2020-08-08 17:11:12 117

原创 java选择排序

代码:package com.wangyq.datastructrue.sort;import java.util.Arrays;public class Bubbling { public static void main(String[] args) { int[] ints = {0,34, 7, 834, 75, 23, 345, 78908, 2, 3}; System.out.println("排序前:" + Arrays.toString(in

2020-08-08 16:46:39 121

手写简单Spring MVC

手写简易SpringMVC 附测试demo

2020-11-02

手写简单实现ioc、aop事务demo

手写简单实现ioc、aop事务demo,实现事务回滚,使用到了,工厂模式,动态代理

2020-10-19

java 自定义持久层框架代码

java 实现自定义持久层框架代码,解析配置文件,手动封装返回结果,使用到了构建者模式、工厂模式、代理模式

2020-10-18

空空如也

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

TA关注的人

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