- 博客(49)
- 收藏
- 关注
原创 Redis数据结构
文章目录Redis数据结构五种数据结构String与Hash的选择String 字符串类型实战场景:使用:Hash (哈希)实战场景:使用:List 链表实战场景:使用:Set 集合实战场景:使用:zset 有序集合实战场景:使用:Redis数据结构其他: https://blog.youkuaiyun.com/xpsallwell/article/details/84030285五种数据结构所有的key都是字符串String与Hash的选择如果对这个对象只有存取的操作,最好使用json。如果在
2020-05-26 22:07:42
318
原创 jvm内存分配与回收策略
文章目录内存分配与回收策略GC触发时机minorgc触发时机fullgc触发时机jvm默认垃圾收集器查看当前使用的垃圾收集器jdk默认垃圾收集器内存分配与回收策略对象优先在Eden分配大对象直接进入老年代长期存活的对象将进入老年代,默认15动态对象年龄判定如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代空间分配担保在发生Minor GC之前,虚拟机必须先检查老年代最大可用的连续空间是否大于新生代所有对象总空
2020-05-09 23:05:25
297
原创 JVM内存及其对并发的优化
本篇博客主要内容来自《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》文章目录自动内存管理jvm运行时数据区域程序计数器Java虚拟机栈本地方法栈Java堆方法区运行时常量池直接内存垃圾收集器与内存分配策略HotSpot虚拟机的垃圾收集器对象已死?引用计数算法可达性分析算法再谈引用强引用软引用弱引用虚引用回收方法区垃圾收集算法分代收集理论标记-清除算法标记-复制算法标记-整理算法...
2020-04-22 22:45:54
502
原创 使用mybatis拦截器对like后面的参数进行转义
在sql中,like后面参数里面会有’’,’%‘等通配符,项目中的很多搜索功能就无法根据’‘或者’%'来搜索,可以在搜索接口手动进行sql参数的转义.下面的是另外一种方式,通过mybatis拦截器来修改like后面的参数.import org.apache.ibatis.executor.Executor;import org.apache.ibatis.mapping.BoundSql;i...
2020-04-22 22:17:36
1495
原创 Mac编译OpenJDK12
最近在阅读《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》参照图书,在自己的Mac上进行OpenJDK12的编译.环境准备MAC参数xcode记得安装Command Line Toolsxcode-select --install## openjdk12源码下载[https://hg.openjdk.java.net/jdk/jdk12/,然后点击左边菜单...
2020-04-09 23:23:59
1504
3
原创 Bellman-Ford算法及其队列优化-单源最短路径
图片摘自《啊哈!算法》/** * @author zc * @version 1.0 * @date 2020/3/29 4:10 下午 * @desc Bellman-Ford算法 * 时间复杂度O(MN) */public class BellmanFord { /** * 5 5 * 2 3 2 * 1 2 -3 ...
2020-03-29 17:40:31
213
原创 Dijkstra-单源最短路径
图片摘自《啊哈!算法》以下代码用数组索引0-5,代替点1-6/** * @author zc * @version 1.0 * @date 2020/3/26 8:56 下午 * @desc 时间复杂度 O(N^2) * todo 可以进一步优化 * 不能处理负权边 */public class Dijkstra { public static void main...
2020-03-26 22:18:55
143
原创 JWT单点登录及token的处理
注意:秘钥和算法是用来生成签名的,令牌本身不可读仅是因为base64url编码,可以直接解码,密钥仅可以用来校验token是否有效.用户登录之后,会给前端颁发token,每次请求,都会颁发新的token,并且密钥里的任意信息改变都会导致token失效. <dependency> <groupId>com.auth0</grou...
2020-03-23 17:15:06
1218
原创 MyBatis-Spring 初始化的流程(源码)
基于以下版本MyBatis-Spring-2.0.4MyBatis-3.5.4@MapperScan可以根据org.mybatis.spring.sample.SampleEnableTest这个单元测试来进行调试指定需要扫描的包,这里主要是引入了MapperScannerRegistrar这个类@Retention(RetentionPolicy.RUNTIME)@Target...
2020-03-22 16:13:22
399
原创 Floyed-Warshall算法-多源最短路径
找出任意两点之间的最短路径核心思想是:从i号到达j号只经过前k号地点的最短路径参考以下代码/** * @author zc * @version 1.0 * @date 2020/3/18 9:20 下午 * @desc Floyed-Warshall算法 * 时间复杂度O(N^3) * 无法解决负权回路 */public class FloyedWarshall { ...
2020-03-18 21:56:15
182
原创 深度优先搜索--输出1到n的全排列
package zmpress.algorithm.search;import java.util.Arrays;/** * @desc 深度优先搜索 * 关键在于解决当下是怎么做,而不是下一步该怎么做 */public class DepthFirstSearch { private static int count = 0; public static ...
2020-03-17 20:48:39
236
原创 Docker启动SpringBoot项目传递参数
SpringBoot项目我们需要在启动项目时传递参数# 方式1java -Dxxx=xx zzz=zzz xxx.jar# 方式2java xxx.jar --xxx=xxx --zzz=zzz-D和–可以同时使用,但是-D要写在xx.jar前面如果通过Docker启动Dockerfile# 指定基础镜像,本地没有会从dockerHub pull下来 FROM java:...
2020-03-15 16:15:25
2554
原创 SpringBoot项目xxx.jar中没有主清单属性
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin<...
2020-03-15 13:39:30
376
原创 Spring 的@Transactional或者切面不生效的坑
Spring的声明式事务和切面都是通过aop进行动态代理实现的所以直接通过this来调用方法的话,将不会触发事务和切面示例package com.oneconnect.sg.service.impl;@Servicepublic class UserManagerServiceImpl implements UserManagerService { @Override ...
2020-03-12 14:49:26
1230
1
原创 快速排序的递归与非递归实现
平均时间复杂度O(NlogN)最差时间复杂度O(N^2)public class SortUtil { public static int[] randomArray(int length){ Random random = new Random(); int[] ints = new int[length]; for (int i =...
2020-03-11 21:20:59
188
原创 冒泡排序的递归与非递归实现
时间复杂度O(N^2)public class SortUtil { public static int[] randomArray(int length){ Random random = new Random(); int[] ints = new int[length]; for (int i = 0; i < ints.le...
2020-03-11 21:17:19
475
原创 Spring AOP源码解析
AOP流程先看这个方法org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBean(java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.lang.Object[])...
2020-03-09 14:33:57
877
原创 Redis多database(数据源)
Redis哨兵模式切换database为了实现数据隔离注册多个RedisTemplate实现了BeanFactoryAware接口,会在Bean初始化阶段执行其方法多个Redis实例也可使用这种方式get(String topOrg) 方法可以根据topOrg去BeanFactory中获取对应的redisTemplatetopOrg可以存在ThreadLocal或者其他地方@Co...
2020-03-04 22:25:59
1868
原创 Spring-Bean的生命周期
Bean的实例化过程所调用的部分后置处理器1. InstantiationAwareBeanPostProcessorpostProcessBeforeInstantiationorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBean(java.lang.String, ...
2020-02-21 22:31:34
479
原创 Spring-Cloud之hystrix
hystrix是什么Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比 如超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分 布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调 用方返回一个符合预期的、可处理的备...
2020-02-11 14:38:02
214
原创 Docker镜像创建
Docker生成镜像的两种方式有时候从Docker镜像仓库中下载的镜像不能满足要求,我们可以基于一个基础镜像构建一个自己的镜像两种方式:更新镜像:使用 docker commit 命令构建镜像:使用 docker build 命令,需要创建Dockerfile文件更新镜像先使用基础镜像创建一个容器,然后对容器内容进行更改,然后使用 docker commit 命令提交为一个新的镜像(以...
2020-02-06 21:33:21
222
原创 Docker简介
背景开发和运维之间因为环境不同而导致的矛盾集群环境下每台机器部署相同的应用DevOps(Development and Operations)简介Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到 任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。...
2020-02-06 21:32:09
165
原创 Spring生命周期回调三种方式及源码分析
文章目录三种方式代码示例执行结果@Scope("singleton")--单例@Scope("prototype")--原型源码分析初始化方法销毁方法三种方式@Bean指定初始化和销毁方法实现InitializingBean和DisposableBean@PostConstruct&@PreDestroy代码示例以下将三种方式一起使用,以便看出他们的执行顺序/**...
2020-01-17 23:15:25
347
原创 SpringMVC统一处理返回异常--@ControllerAdvice
自定义一个异常自定义若干个运行时异常,可以根据不同的错误类型定义多个public class TestException extends RuntimeException { private String code; public TestException(String code) { this.code = code; } publ...
2020-01-15 17:03:55
330
原创 SpringMVC源码,拦截器
文章目录流程图源码handlerMappingRequestMappingHandlerMappingBeanNameUrlHandlerMappingRouterFunctionmapping拦截器和过滤器流程图ps:4和7应该是DispatcherServlet和handlerAdapter之间的网上找的图就不重画了…源码首先SpringMVC得核心是DispatcherS...
2020-01-12 21:01:36
188
原创 SpringBoot启动模拟
结合Tomcat不使用web.xml加载Springmvcpom <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context<...
2020-01-12 16:27:05
433
原创 Tomcat不使用web.xml加载Springmvc
文章目录servlet3新特性演示依赖如下实现ServletContainerInitializer启动配置tomcat7:run启动启动springmvc启动配置类spring对上面配置类的处理重点servlet3新特性演示依赖如下<dependencies> <dependency> <groupId>org...
2020-01-12 15:50:48
998
原创 Spring5日志体系
文章目录Spring4Spring5Spring4Spring4采用的原生jcl(commons-logging)是从如些下的数组中去找对应的jar包,找到就通过反射实例化Spring5贴一部分代码这是spring-jcl的寻找顺序private static final LogApi logApi;static { if (isPresent(LOG4J_SPI)) { ...
2020-01-11 14:49:35
509
原创 java日志体系
文章目录日志框架类型日志门面框架日志实现框架图示实现jcl(common-longging)slf4j绑定器桥接器日志框架类型日志门面框架不是具体的日志解决方案,它只服务于各种各样的日志系统jcl(common-longging)slf4j日志实现框架打印日志的具体实现框架log4jjul(jdklog)logback…图示实现jcl(co...
2020-01-11 14:48:55
115
原创 Spring循环依赖源码解析
构造器循环依赖示例@Componentpublic class RoleService { private UserService userService; public RoleService(UserService userService) { this.userService = userService; }}@Component()...
2020-01-10 17:06:02
149
原创 git不常用命令总结(施工中)
git库所在的文件夹中的文件大致有4种状态删除untracked files# 删除 untracked filesgit clean -f # 连 untracked 的目录也一起删掉git clean -fd # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)git clean -xfd # 在用...
2020-01-07 17:21:45
356
原创 @Autowired注入Map,List
@Autowired可以自动注入Map和Listpublic interface UserService {}@Order(2)@Component("userServiceA")public class UserServiceA implements UserService{}@Order(1)@Component("userServiceB")public class...
2020-01-07 14:55:14
1207
原创 Spring创建Bean的6种方式
方式一xml方式二@Component@Service@Controller@Repository...不多说明方式三@Bean@Configurationpublic class RedisConfig { @Bean public RedisUtil redisUtil(RedisTemplate<String, Object> re...
2020-01-05 14:42:43
828
原创 浅析ClassLoader--jdk1.8
文章目录什么是ClassLoaderClassLoader类型BootstrapClassLoaderExtensionClassLoaderAppClassLoaderURLClassLoaderClassLoader 传递性双亲委派模式自定义ClassLoader双亲委派模式的优势类的生命周期分工与合作Thread.contextClassLoader本文部分内容参照以下https://...
2019-12-20 11:02:32
207
原创 FactoryBean和BeanFactory
文章目录区别BeanFactoryFactoryBean案例分析区别BeanFactory是接口,提供了OC容器最基本的形式,给具体的IOC容器的实现提供了规范.FactoryBean也是接口,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式BeanFactoryBeanFactory是spr...
2019-12-16 21:48:11
108
原创 构造方法,静态代码块,普通代码块执行顺序
public class SuperClass { static { System.out.println("SuperClass 静态代码块"); } { System.out.println("SuperClass 普通代码块"); } public SuperClass() { System.out.p...
2019-12-16 15:41:58
80
原创 静态代理和jdk动态代理,cglib
文章目录代理设计模式什么是代理java实现代理静态代理继承聚合动态代理代理设计模式什么是代理增强一个对象的功能java实现代理静态代理继承代理对象继承目标对象,重写需要增强的方法;缺点:会代理类过多,非常复杂聚合目标对象和代理对象实现同一个接口,代理对象当中要包含目标对象。缺点:也会产生类爆炸,只不过比继承少一点点动态代理...
2019-12-10 16:43:28
308
1
原创 Java Arrays.asList()简介及替代
场景基本数据类型int[] arr = {1, 2, 3, 4, 5};List<int[]> ints = Arrays.asList(arr);ints.forEach(System.out::println);结果:[I@402a079c由于Arrays.ArrayList参数为可变长泛型,而基本类型是无法泛型化的,所以它把int[] arr数组当成了一个泛型...
2019-12-02 10:44:34
2195
原创 Spring IOC简介
文章目录Spring IOCIOC简介为什么要使用iocspring编程的风格注入的两种方式自动装配Bean的作用域Singleton Beans with Prototype-bean DependenciesBean的生命周期的回调Spring IOCIOC简介控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的...
2019-11-24 17:53:25
123
原创 编译安装libsodium
当我们在自己的VPS服务器上面使用某些数据传输协议的时候,可能会采用到chacha20算法等加密算法,这时候便需要安装 libsodium扩展才能够支持这些加密算法,本文将为大家介绍如何编译安装 libsodium扩展!# 首先安装必备工具yum -y groupinstall "Development Tools"# 获取libsodium的源文件#自行前往https://down...
2019-11-24 17:51:54
1611
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人