自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (7)
  • 收藏
  • 关注

原创 Json字符串内容比较-超实用版

json 内容动态对比

2023-09-06 09:23:29 3662

原创 Thread、Runnable、Callable、Future、FutureTask,谈谈他们的关系?

Thread、Runnable、Callable、Future、FutureTask 关系

2023-03-24 09:48:04 347

原创 数据库设计规范详解

数据库建表规范

2022-12-31 21:51:56 522

原创 JVM数据结构一览及分析

JVM整体数据结构

2022-12-22 09:17:24 414

原创 深入Java线程池:从设计思想到源码解读

深入Java线程池:从设计思想到源码解读

2022-12-16 10:09:33 281

原创 guava 线程池使用并处理异常

guava 线程池,线程池如何处理异常

2022-10-14 09:51:41 421

原创 MySQL 中实现可重复读(RR)的原理--MVCC

MVCC,多版本并发控制(Multi-Version Conncurrency Control)是mysql中基于乐观锁原理实现的隔离级别的方式。用于实现读已提交和可重复读取隔离级别。对于MVCC,是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间(事务ID),一个保存行的删除时间(回滚指针),当然存储的并不是实际的时间值,而是系统版本号(system version number).每开始一个新的事务,系统版本号都会自动递增,事务开始时刻的系统版本号会作为事务的版本号,用来和

2021-06-18 14:32:22 1211 1

原创 spring统一异常处理的三种方式

第一种:@ControllerAdvice 注解使用import com.alibaba.fastjson.JSON;import com.common.constants.ResEnum;import com.common.entity.ResponseMsg;import com.common.exception.ServiceException;import com.t...

2020-04-14 17:39:38 630

原创 雪花算法生成id -- Snowflak 。简易实用

废话不多说,代码走起。import java.lang.management.ManagementFactory;import java.net.InetAddress;import java.net.NetworkInterface;/** * @description: 雪花算法生成id **/public class SnowFlakeIDGenerator { ...

2020-03-31 15:48:56 686

原创 主线程控制子线程运行完成

主线程控制10个子线程运行完成后,输出,主要用到的知识点countDownLunch代码简易实现如下 : public static void main(String[] args) throws Exception { //控制10个子线程都运行完 CountDownLatch countDownLatch = new CountDownLatch(10);...

2020-03-27 17:14:39 397

原创 多线程生产者、消费者模式中,如何停止消费者

多线程生产者、消费者模式中,如何停止消费者 ?多生产者情况下对“毒丸”策略的应用生产者、消费者模式是多线程中的经典问题。通过中间的缓冲队列,使得生产者和消费者的速度可以相互调节。发散:一个主线程控制多个子线程,多个主线程控制多个子线程(countDownLunch使用理解)对于比较常见的单生产者、多消费者的情况,主要有以下两种策略: 通过volatile boolean prod...

2020-03-27 16:48:08 2785 1

原创 推荐 Java 程序员使用 Google Guava 编程

DK提供的String还不够好么? Joiner/Splitter CharMatcher Ints Multiset Multiset Code unmodifiable defensive copies Immutable ImmutableMap Multimap BiMap ...

2020-03-06 10:55:33 334

原创 docker安装及使用阿里云安装nginx

阿里云Docker镜像仓库(Docker Registry)镜像仓库申请地址:https://cr.console.aliyun.com/cn-hangzhou/instances/repositories一、创建命名空间例如moss-hub二、创建镜像仓库例如moss-docker三、使用镜像仓库1. 登录阿里云Docker Registry...

2020-02-14 16:19:59 1722

原创 nginx缓存防刷简易思路

线上环境 很多接口 如果不做缓存 可能导致有人拿到url 每秒几万次的访问后台程序,导致系统down机.此处, nginx可以加一层缓存. expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求要配置expires,可以在http段中或者server段中或者location段中加入PS. 可以限制单个接口的访问,,比如限制/user 开头的接口...

2020-02-13 10:45:19 461

原创 linux文件权限8进制详解--一看就懂了

使用八进制(0-7)数字表示权限法 权限 二进制值 八进制值 描述 --- 000 0 没有任何权限 --x 001 1 只有执行权限 ...

2020-02-12 16:05:12 11653 1

原创 api防刷简易实现

注解类:import java.lang.annotation.Retention;import java.lang.annotation.Target;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.RetentionPolicy.RUNTIME; ...

2019-12-03 08:58:00 325

原创 RequestContextHolder简析

在Web开发中,service层或者某个工具类中需要获取到HttpServletRequest对象还是比较常见的。一种方式是将HttpServletRequest作为方法的参数从controller层一直放下传递,不过这种有点费劲,且做起来不是优雅;还有另一种则是RequestContextHolder,直接在需要用的地方使用如下方式取HttpServletRequest即可,使用代码如下:...

2019-11-27 10:02:28 1366

原创 mysql脏读,幻读,不可重复读以及间隙所解决幻读

1、数据脏读事务a修改了某条数据,然后事务b读取了事务a修改的该条数据,然后事务a由于某些原因,事务a回滚了,这样事务b读到的数据就和回滚的数据不同了,这时事务b读取的数据就是脏数据。概况一句话就是一个事务读取了另一个事务未提交的数据。2、数据幻读事务a按一定条件读取了该表的一些数据,然后事务b想该表插入了一些满足事务a查询条件的数据,当事务a再次以相同条件查询数据时,会发现多出来一些数据...

2019-11-07 11:08:06 2661 1

原创 OOM排查与定位

某Java服务(假设PID=19813)出现了OOM,最常见的原因为:有可能是内存分配确实过小,而正常业务使用了大量内存某一个对象被频繁申请,却没有释放,内存不断泄漏,导致内存耗尽某一个资源被频繁申请,系统资源耗尽,例如:不断创建线程,不断发起网络连接三种情况:1 “本身资源不够”2 “申请资源太多”3: “资源耗尽”。更具体的,可以使用以下工具逐一排查。jps列出所有...

2019-11-05 15:45:50 4063

原创 Cloud中feign异常无法传递的问题

重写feign 全局异常处理方法:分析:因为cloud内部抛出异常不进行处理,Feign获取spring默认包装异常结果如下:{ "timestamp": "2017-12-27 15:01:53", "status": 500, "error": "Internal Server Error", "exception": "com.keruyun.loya...

2019-04-24 14:28:01 5806

原创 springboot自动装配原理详解

1)传统ssm整合redis的时候 需要在xml的配置文件中 进行大量的配置Bean我们在这里使用springboot来代替ssm的整合,通过xml的形式来整合redis第一步:加入配置<dependency> <groupId>org.springframework.data</groupId> <artifactId>sp...

2019-04-01 17:45:46 367

转载 @RequestParam、@RequestBody和@ModelAttribute区别

一、@RequestParamGET和POST请求传的参数会自动转换赋值到@RequestParam 所注解的变量上1. @RequestParam(org.springframework.web.bind.annotation.RequestParam)用于将指定的请求参数赋值给方法中的形参。例:(1) get请求:url请求:http://localhost:8080/WxProg...

2019-04-01 17:23:04 121

原创 spring 动态 注册bean的两种方式

1:通常用实现 BeanDefinitionRegistryPostProcessor 实现bean注册,代码如下@Configurationpublic class NetsDaoBeanConfig implements BeanDefinitionRegistryPostProcessor { private BeanNameGenerator beanNameGenera...

2019-02-22 14:13:05 7164 1

原创 EXPLAIN分析sql详解--超详细--一篇就够

  id列id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按选择出现的顺序增长的.MySQL将选择查询分为简单查询(SIMPLE)和复杂查询(PRIMARY) 。  2. select_type列select_type表示对应行是简单还是复杂的查询,如果是复杂的查询,又是上述三种复杂查询中的哪一种。1)简单:简单查询查询不包含...

2018-10-09 16:59:42 1749 1

转载 jdk8 Optional 的正确姿势

我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代码就开始这么写了  Optional&lt;User&gt; user = ......   if (user.isPresent()) {   return u...

2018-09-28 18:01:44 475

原创 web项目实行自定义banner

springboot中支持自定义banner,只要在resource下放置一个banner.txt的文件,里面输出一些自定义信息即可,那如果在传统的web项目中如何实现,自定义banner呢?  其实用监听器即可简单实现,废话不多说,直接上代码:web.xml中配置监听器:&lt;listener&gt; &lt;listener-class&gt;com.xx.xx.*.xx.My...

2018-09-28 17:45:34 1591

转载 正则表达式基础入门看这一篇就够了

https://mp.weixin.qq.com/s/ejtbumkNZpaPSc4AP2XsoA 摘自java 团长正则表达式在几乎所有语言中都可以使用,无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支持正则表达式。但很神奇的是:无论你大学选择哪一门计算机语言,都没有关于正则表达式的课程给你修,在你学会正则之前,你只能看着那些正则大师们,写了一串外...

2018-09-28 10:16:34 5790 4

转载 运行java飞行记录器JFR(java flight recorder)

JFR上面讲到的工具都是作为快速的查看诊断工具的。如果要深入分析问题,可以选择使用内置的Java飞行记录器:Java Mission Control。 转储JFR需要三步:1. 创建一个包含了你自己配置的JFR模板文件。运行jmc, 然后Window-&gt;Flight Recording Template Manage菜单。准备好档案后,就可以导出文件,并移动到要排查问题的环境...

2018-09-28 10:01:57 7634

原创 disruptor 资料整理

disruptor的优缺点: 没有竞争=没有锁=非常快。 所有访问者都记录自己的序号的实现方式,允许多个生产者与多个消费者共享相同的数据结构。 在每个对象中都能跟踪序列号(ring buffer,claim Strategy,生产者和消费者),加上神奇的cache line padding,就意味着没有为伪共享和非预期的竞争。 Disruptor 为什么快1. 不使用锁。通过...

2018-09-28 09:22:45 273

转载 docker资料

 Docker问题集合 好想雨的云 2018-04-30 00:46 阅读:18 评论:0  Docker安装和状态查询指令 好想雨的云 2018-04-30 00:40 阅读:14 评论:0  Docker镜像加速 好想雨的云 2018-04-22 23:36 阅读:48 评论:0  linux上安装Docker(非常简单的安装方法) 好想雨的云 2018-04-22 21:06...

2018-09-28 09:19:06 145

原创 InheritableThreadLocal 实现原理

介绍 InheritableThreadLocal 之前,假设对 ThreadLocal 已经有了一定的理解,比如基本概念,原理,如果没有,可以自行百度java多线程 ThreadLocal了解原理。这里再复习下 ThreadLocal 的原理,因为会对 InheritableThreadLocal 的理解 有重大的帮助:每个线程都有一个 ThreadLocalMap 类型的 thread...

2018-08-24 17:37:42 308

原创 基于quartz +springboot 的实时调度框架,可实时启动,运行,添加job

这个是之前在项目中写的一个quartz调度,可实时启动,运行,添加job,现将代码及思想做简要笔记整理:使用quartz +springboot1:在数据库创建job运行调度表,创建脚本如下:DROP TABLE IF EXISTS `manage_ip_schedule_task`;CREATE TABLE `manage_ip_schedule_task` ( `id` c...

2018-08-09 09:24:18 4956 1

转载 ListenableFuture异步多线程代码实现

      本文以多次查询数据库为例进行说明。为了能够模拟查询数据库,这里会事先创建一个map,将查询条件和查询结果封装到map中。           在batchExec方法中,传入带有泛型的查询条件集合,核心操作是遍历查询条件集合,将每一个查询条件传给SingleTask(业务实现类),SingleTask必需要实现callable接口,在call方法中实现查询业务,这里使用上面创建好的m...

2018-08-07 11:15:28 4414

转载 Tomcat 连接数与线程池详解

前言 在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。 在前面的文章 详解Tomcat配置文件server.xml 中写到过:Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据;然后分配线程让Engine(也就是Servlet容器)来处理这...

2018-07-18 08:54:29 171

原创 mysql截取逗号之间的字符

mysql 截取第4个逗号到第5个逗号之间的字符,思路如下以字符0,1.5,2,0,2.5,2,2,0为例1:先截取0到第5个逗号之间的字符SUBSTRING_INDEX('0,1.5,2,0,2.5,2,2,0,',',5);如图:2:然后从右边截取到第一个出现逗号的位置 position  为负数表示从右边开始截取 SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(...

2018-06-30 14:37:15 11115 2

转载 Intellij IDEA让人爱不释手的快捷键

快速找到Controller方法如果你的项目里有非常多的controller,里面有非常多的http或者resful方法。如何快速找到这些方法呢?这个时候,ctrl+alt+shift+n就可以派上用场了。比如说,你依稀记得入账单相关的接口,都有个bill的url路径,那么使用ctrl+alt+shift+n后,直接输入/bill即可。如何阅读又长又臭的代码由于历史原因,项目里总会存在那种无法理解...

2018-06-12 08:45:18 5264

转载 jdk8 Optional 的正确姿势

我们知道 Java 8 增加了一些很有用的 API, 其中一个就是 Optional. 如果对它不稍假探索, 只是轻描淡写的认为它可以优雅的解决 NullPointException 的问题, 于是代码就开始这么写了Optional&lt;User&gt; user = ......if (user.isPresent()) {return user.getOrders();} els...

2018-05-03 17:39:57 179

转载 int与Integer的区别

1 int与Integer的基本使用对比(1)Integer是int的包装类;int是基本数据类型; (2)Integer变量必须实例化后才能使用;int变量不需要; (3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ; (4)Integer的默认值是null;int的默认值是0。2 int与Integer的深入对比(1)由于Integer变量实际上是...

2018-05-03 17:11:47 163

原创 java反射与动态代理

一、反射JAVA反射机制定义: JAVA反射机制是java程序在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 反射就是把Java类中的各种成分映射成相应的Java类。Java反射机制主要提供了以下功能: 1、在运行时判断任意一个对象所属的类;2、在运...

2018-05-03 17:10:18 148

转载 Java强引用、软引用、弱引用、虚引用(幻象引用)详解

一、概述:众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就...

2018-05-03 17:07:38 4166

Spark快速大数据分析 (图灵程序设计丛书)-[美] 卡劳(Holden Karau)[美] 肯维尼斯.pdf

Spark快速大数据分析 (图灵程序设计丛书) Spark大数据处理:技术、应用与性能优化-笔记,适合于spark提高,大数据优化,及PB级架构设计。

2019-07-02

zookeeper-3.4.6.tar.gz

zookeeper-3.4.6.tar.gz下载文件,有需要的朋友可以自行下载哦。

2018-06-12

正则表达式快速入门

正则表达式快速入门 让你30分钟快速掌握正则以应付实际开发!

2014-08-05

Hadoop权威指南

扫描的Hadoop权威教程,希望对大家学习能有所帮助。

2014-05-22

java连as400数据库

java连400数据库

2014-05-22

ejb3.0入门经典教程

ejb3.0入门经典,深入浅出EJB3.0 ejb3.0入门经典,深入浅出EJB3.0 ejb3.0入门经典,深入浅出EJB3.0 ejb3.0入门经典,深入浅出EJB3.0

2009-05-31

Struts2经典教材:深入简出Struts2

深入简出Struts2,Struts2入门教程,Struts2经典。 一本难得的好书,希望和大家一起分享。

2009-05-31

空空如也

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

TA关注的人

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