自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis5.0数据淘汰策略

redis5.0为我们提供了八个不同的内存置换策略。很早之前提供了6种。(1)volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰。(2)volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰。(3)volatile-random:从已设置过期时间的数据集中任意选择数据淘汰。(4)volatile-lfu:从已设置过期时间的数据集挑选使用频率最低的数据淘汰。(5)allkeys-lru:从数据集中挑选最近最少使用的数据淘汰(6)al.

2020-08-04 22:02:50 425

原创 Redis 持久化机制

Redis是一种高级key-value数据库。数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis为了保证效率,数据缓存在内存中,Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以保证数据的持久化。Redis是一个支持持久化的内存数据库,可以将内存中的数据同步到磁盘保证持久化。Redis的持久化策略:2种

2020-08-01 17:56:44 253

原创 Zookeeper分布式锁

1.获取锁首先,在Zookeeper当中创建一个持久节点ParentLock。当第一个客户端想要获得锁时,需要在ParentLock这个节点下面创建一个临时顺序节点Lock1。之后,Client1查找ParentLock下面所有的临时顺序节点并排序,判断自己所创建的节点Lock1是不是顺序最靠前的一个。如果是第一个节点,则成功获得锁。这时候,如果再有一个客户端Client2前来获取锁,则在ParentLock下载再创建一个临时顺序节点Lock2。Cl...

2020-08-01 17:45:05 321

原创 mysql:Explain执行计划

Explain有什么用当Explain与SQL语句一起使用时,MySQL会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。 表的加载顺序 sql的查询类型 可能用到哪些索引,哪些索引又被实际使用 表与表之间的引用关系 一个表中有多少行被优化器查询 ..... Explain有哪些信息Explain执行计划包含字段信息如下:分别是id、select_type、tab...

2020-08-01 00:09:09 167

原创 mysql:MVCC的实现原理

MVCC,中文叫多版本并发控制,它是通过读取历史版本的数据,来降低并发事务冲突,从而提高并发性能的一种机制。它的实现依赖于隐式字段、undo日志、快照读&当前读、Read View,因此,我们先来了解这几个知识点。隐式字段对于InnoDB存储引擎,每一行记录都有两个隐藏列DB_TRX_ID、DB_ROLL_PTR,如果表中没有主键和非NULL唯一键时,则还会有第三个隐藏的主键列DB_ROW_ID。DB_TRX_ID,记录每一行最近一次修改(修改/更新)它的事务ID,大小为6字节; DB

2020-07-28 22:28:08 254

原创 JMM 内存间交互操作

Java内存模型规定了所有的变量都存储在主存中,每个线程都有自己的工作内存,工作内存中保存了该线程要用到的主存中变量的副本,线程对变量的操作都是在工作内存中完成,不能直接操作主存,线程之间也无法直接访问其他线程的工作内存,线程间变量值的传递需要通过主存来完成,这就涉及到了主存与工作内存间的交互操作。Java内存模型中定义了8种操作来完成,虚拟机保证了每种操作都是原子的。lock(锁定):作用于主存的变量,把一个变量标识为一条线程独占状态。 unlock(解锁):作用于主存变量,把一个处于锁定状态的

2020-07-23 23:37:45 468 2

原创 JVM:System.gc

当我们调用System.gc()的时候,其实并不会马上进行垃圾回收,甚至不一定会执行垃圾回收,查看系统源码可以看到 /** * Indicates to the VM that it would be a good time to run the * garbage collector. Note that this is a hint only. There is no guarantee * that the garbage collector will ac

2020-07-23 23:05:45 123

原创 JVM:对象什么时候会进入老年代

JVM堆中有新生代、老年代两块区域,因为使用分代回收策略新生代还会划分为Eden和两个Survivor区,JVM堆大概是这样子:程序运行过程中新产生的对象都会分配在Eden区,随着时间的推移Eden区也是会满的,那么这个时候就会进行Minor GC进行清理,清理过程有的对象被清除,有的对象会继续存活下去。那Java对象啥时候会进入老年代呢?根据对象年龄JVM会给对象增加一个年龄(age)的计数器,对象每“熬过”一次GC,年龄就要+1,待对象到达设置的阈值(默认为15岁)就会被移移动到老年代.

2020-07-22 23:24:55 4398

原创 JVM: G1和CMS的区别

CMS:以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现过程:1、初始标记:独占PUC,需要STW(Stop the world),仅标记GCroots能直接关联的对象,速度很快。2、并发标记:可以和用户线程并行执行,无需STW,标记所有可达对象3、重新标记:独占CPU(STW),为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录。这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的时间要短。4、并发清理:可以和用户线程并行执行,

2020-07-22 22:55:24 3838

原创 线程池的三种队列区别:SynchronousQueue、LinkedBlockingQueue 和ArrayBlockingQueue

1.SynchronousQueueSynchronousQueue没有容量,是无缓冲等待队列,是一个不存储元素的阻塞队列,会直接将任务交给消费者,必须等队列中的添加元素被消费后才能继续添加新的元素。拥有公平(FIFO)和非公平(LIFO)策略,非公平侧罗会导致一些数据永远无法被消费的情况?使用SynchronousQueue阻塞队列一般要求maximumPoolSizes为无界(Integer.MAX_VALUE),避免线程拒绝执行操作。2.LinkedBlockingQueue..

2020-06-13 22:24:08 1015

原创 JAVA中的五种线程池,四种拒绝策略,三种阻塞队列

三种阻塞队列:BlockingQueue<Runnable> workQueue = null;workQueue = new ArrayBlockingQueue<>(5);//基于数组的先进先出队列,有界workQueue = new LinkedBlockingQueue<>();//基于链表的先进先出队列,无界workQueue = new SynchronousQueue<>();//无缓冲的等待队列,无界四...

2020-06-13 22:19:14 510

原创 HashSet实现原理

1.是基于HashMap实现的,默认构造函数是构建一个初始容量为16,负载因子为0.75 的HashMap。封装了一个 HashMap 对象来存储所有的集合元素,所有放入 HashSet 中的集合元素实际上由 HashMap 的 key 来保存,而 HashMap 的 value 则存储了一个 PRESENT,它是一个静态的 Object 对象。2.当我们试图把某个类的对象当成 HashMap的 key,或试图将这个类的对象放入 HashSet 中保存时,重写该类的equals(Object obj)方

2020-06-05 23:15:06 285

原创 Enumeration接口和Iterator接口的区别

Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能够修改正在被iterator遍历的集合里面的对象。同时,Iterator允许调用者删除底层集合里面的元素,Enumeration不行。函数接口不同:Enumeration只有2个函数接口。通过Enumeration,我们只能读取集合的数据,而不能对数据进行修改。Iterator只有3个函数接口。Iterator除了能读取集合的数据之外,也能数据进...

2020-06-05 23:03:28 745

原创 JAVA锁有哪些种类,以及区别

JAVA会涉及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。对于JavaReentrantLock而言,通过构造函数指定该锁是否是公平锁,.

2020-06-01 21:45:06 379

原创 Java注解的理解

java注解:注解,也叫元数据。可以声明在包、类、字段、方法、局部变量、方法参数等前面,来对这些元素进行说明,注释等。元注解:java提供了四个元注解,所谓元注解就是负责注解其他注解。1.@Target :规定注解所修饰的对象范围。ElementType.CONSTRUCTIR; 构造器声明ElementType.FIELD; 成员变量,对象,属性(包括enum实例)ElementType.LOCAL_VARIABLE; 局部变量声明ElementType.METHOD ; 方法声

2020-06-01 21:33:10 185

原创 Spring boot集成@Retryable实现重连机制

1.pom引入相关依赖: <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency>2.在启动类加入:@EnableRetry注解3....

2020-04-08 12:49:30 531

原创 在Spring boot中使用@Async注解

@Async顾名思义就是异步调用的意思,使用线程在Spring boot中使用方便。1.在启动类加入@EnableAsync注解/** * springboot启动器 * @author zsy */@EnableAsync@MapperScan(basePackages = "com.ismartgo.*.mapper")@SpringBootApplication...

2020-03-08 22:06:14 761

原创 Spring Cloud Feign的继承特性

SpringCloudFeign提供了继承特性,可以进一步减少编码量,并提高可读性。创建api工程:命名为hello-service-apipom.xml文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xs...

2019-10-09 21:55:11 393

原创 Spring cloud初识Feign

fegin整合了hystrix和ribbon。在ribbon中我们通过使用RestTemplate来实现对远程服务的调用,但是在代码的编写上并不美观,Spring Cloud给出了另一套方案,也即是本篇中提到的Feign,Spring Cloud Feign 是基于Netflix Feign 实现的。下面通过搭建一个通过feign调用服务的例子:服务提供方:pom.xml:&lt...

2019-10-08 21:56:22 146

原创 SpringBoot根据响应状态跳转到自定义页面

在启动类注册相关bean @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer() { @Override public void ...

2019-09-05 13:58:29 927

原创 使用Redis实现分布式lock

/** * Redis分布式锁 * 使用 SET resource-name anystring NX EX max-lock-time 实现 * <p> * 该方案在 Redis 官方 SET 命令页有详细介绍。 * http://doc.redisfans.com/string/set.html * <p> * 在介绍该分布式锁设计之前,我们先来看一下在...

2019-08-23 15:30:31 5528

原创 使用redis实现手机验证码的一个例子

@PostMapping("getYzm") @ResponseBody public Result getYzm(HttpServletRequest request) { String mobile = HttpParameterUtil.getString(request, "mobile"); Integer sguserid = CampSessionDataHelper...

2019-08-23 15:22:40 2311

原创 @ControllerAdvice自定义异常返回格式

@ControllerAdvicepublic class EpExceptionHandler { @ExceptionHandler(value = Exception.class) @ResponseBody public Map<String, Object> allExceptionHandler(Exception e){ Map&l...

2019-08-23 15:19:17 987

原创 Spring boot配置redis共享session

配置类:import org.springframework.context.annotation.Configuration;import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;/** * 使用redis共享session的配置(暂不使用),使用...

2019-08-23 15:17:06 172

原创 Spring boot整合出现Circular view path [error]: would dispatch back to the current handler URL问题

这个问题主要是Spring boot整合jsp时出现的问题把jsp放到webapp文件夹还需要在pom加入<resources> <resource> <directory>src/main/webapp</directory> 注意jsp必须...

2019-08-17 12:50:00 6574

原创 HttpURLConnection怎么设置请求头

在调用application/json格式的接口时经常用到HttpURLConnection,HttpURLConnection设置请求头通过setRequestProPerty(name,value)方法,就能向header里添加信息。

2019-08-17 12:45:31 38992

原创 身份证脱敏工具类

import org.apache.commons.lang3.StringUtils;public class IdCardUtils { //身份证前三后四脱敏 public static String idEncrypt(String id) { if (StringUtils.isEmpty(id) || (id.length() < 11))...

2019-08-13 20:53:45 2403

原创 手机号码脱敏工具类

import org.apache.commons.lang3.StringUtils;public class PhoneUtils { /** * 手机号格式校验正则 */ public static final String PHONE_REGEX = "^1(3[0-9]|4[57]|5[0-35-9]|7[0135678]|8[0-9])...

2019-08-13 20:52:49 2699

原创 元转分工具类

import java.math.BigDecimal;import java.text.DecimalFormat;public class MoneyUtil { private final static DecimalFormat NF_YUAN = new DecimalFormat("#####################0.00"); private final st...

2019-08-13 20:51:25 446

原创 Spring如何注入静态的bean

在日常开发中某些工具类的静态方法需要使用到service或者dao,而java的语法要求静态方方法的只能调用静态变量,下面为注入静态bean的例子。/** * @author zsy */@Componentpublic class WxghOnceMsgHelper { private static EpMsgSendRecordMapper msgSendRecordMapp...

2019-08-13 20:48:27 584

原创 Spring cache常用注解

上面文章从spring boot + spring cache + redis搭建了一个例子,这篇文章主要讲解spring cache常用注解的使用。而spring cache的常用注解有:@Cacheable、@CachePut、@CacheEvict。@Cacheable、@CachePut、@CacheEvict 注释介绍通过上面的例子,我们可以看到 spring cache 主...

2019-08-13 20:44:21 249

原创 Spring boot+Spring cache+Redis

目前spring cache是比较流行的缓存开发架构,通过spring进行统一管理,可以很好的更换缓存产品而无需修改业务代码,下面举个栗子。pom.xml文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta...

2019-08-13 20:41:26 138

原创 数据库索引之B+树

什么是B+树B+树,如上图,仍是m叉搜索树,在B树的基础上,做了一些改进:(1)非叶子节点不再存储数据,数据只存储在同一层的叶子节点上;(2)叶子之间,增加了链表,获取所有节点,不再需要中序遍历;这些改进让B+树比B树有更优的特性:(1)范围查找,定位min与max之后,中间叶子节点,就是结果集,不用中序回溯;画外音:范围查询在SQL中用得很多,这是B+树比...

2019-07-14 21:25:47 651

原创 数据库索引之B树

什么是B树B树,如上图,它的特点是:(1)多叉结构;(2)叶子节点,非叶子节点,都存储数据;(3)中序遍历,可以获得所有节点;B树被作为实现索引的数据结构被创造出来,是因为它能够完美的利用“局部性原理”。什么是局部性原理局部性原理的逻辑是这样的:(1)内存读写块,磁盘读写慢,而且慢很多;(2)磁盘预读:磁盘读写并不是按需读取,而是按页预读,一次会...

2019-07-14 20:55:32 187

原创 数据库索引初识

数据库索引很多人都知道是加快数据查询速度的,但是对其原理却是一知半解。首先抛出问题数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《数据库原理》这本书,如果一本一本地查,要查到什么时候?于是,图书管理员设计了一套规则:(1)一楼放文学类,二楼放科技类,三楼放计算机类…(2)计算机类,又分软件类,硬件类…(3)软件类,又按照书名音序排序…通过这种方式能快速找...

2019-07-14 20:50:06 100

原创 Spring cloud Hystrix实例

前面文章讲述了Hystrix相关内容,这篇文章主要是搭建一个Hystrix实例。pom文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache....

2019-07-10 18:15:48 631

原创 设计模式的六大原则

1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原则是面...

2019-07-08 15:31:49 126

原创 策略模式实例

本文主要通过一个使用策略模式的实例来帮助读者了解策略模式。策略模式体现了面向对象程序设计中非常重要的两个原则:封装变化的概念。编程中使用接口,而不是使用的是具体的实现类(面向接口编程)。类图:其优点:1.上下文和具体策略是松耦合关系。因此上下文只知道它要使用某一个实现Strategy接口类的实例,但不需要知道具体是哪一个类。2.策略模式满足“...

2019-07-07 22:17:29 2496

原创 服务雪崩效应

服务雪崩效应的定义服务雪崩效应是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程。服务雪崩效应形成的原因 我把服务雪崩的参与者简化为服务提供者和服务调用者, 并将服务雪崩产生的过程分为以下三个阶段来分析形成的原因: 服务提供者不可用 重试加大流量 服务调用者不可用 服务雪崩的每个阶段都可能由不同的原因造成, 比如造成...

2019-07-07 22:05:32 1308

原创 Spring cloud Hystrix设计原则和特性

Hystrix设计原则  1.防止单个服务的故障,耗尽整个系统服务的容器(比如tomcat)的线程资源,避免分布式环境里大量级联失败。通过第三方客户端访问(通常是通过网络)依赖服务出现失败、拒绝、超时或短路时执行回退逻辑 2.用快速失败代替排队(每个依赖服务维护一个小的线程池或信号量,当线程池满或信号量满,会立即拒绝服务而不会排队等待)和优雅的服务降级;当依赖服务失效后又恢复正...

2019-07-02 16:31:25 374

inception-master最新版.rar

 MySQL语句审核工具inception_web.zip 和 inception-master.zip的最新版

2019-07-02

jsMind思维导图整合Easyui的鼠标右键菜单

添加了一个鼠标右键菜单进入,让操作更加鲜明。能满足多种情况

2019-03-29

Apache-cxf 2.2.8压缩包

Apache-cxf 2.2.8 安装文件夹下的bin文件下的wsdl2java.bat(请提前下载apache-cxf,并且解压缩),把安装路径配置为全局变量

2018-05-28

空空如也

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

TA关注的人

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