自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zzzgd_666的博客

还在寻找遗失的美好

原创 slf4J输出mybatis日志的方法(非stdout方式)

slf4J输出mybatis日志的方法(非stdout方式)前言依赖配置slf4j配置mybatis配置效果其他几种配置附 前言 现在很多项目中都是直接用的@Slf4j的注解来打印日志,然后又想看mybatis的日志,自己之前也各种网上找方法,配置的东西很多然而又不一定有效。 这个算是已经在自己项...

2020-07-06 21:00:46 31 0

原创 代码实现用直观的方式来检查锁Lock是否线程安全
原力计划

代码实现用直观的方式来检查锁Lock是否线程安全代码操作读写文件的任务类测试类测试不加锁加锁补充 这几天在看分布式锁,照着博客手写一个分布式锁也好, 直接用框架也好,怎么验证写的是否保证线程安全? 有个传统的就是多线程循环对一个int变量进行 i++,然后看最后的结果是否符合预期。 int n=0...

2020-06-30 18:56:24 76 0

原创 SpringBoot+Thymeleaf, 页面上嵌入groovy的demo
原力计划

SpringBoot+Thymeleaf, 页面上嵌入groovy的demo说明代码依赖前端页面Controllerdto试用无参有参 说明 因为项目中使用到了groovy做一个比较轻量级的前端公式脚本,所以闲来无事也自己做了一个。 groovy和java整合的方式有三种 GroovyClass...

2020-06-23 21:03:19 79 0

原创 SpringBoot监控Actuator,关闭redis监测

SpringBoot监控Actuator,关闭redis监测方法 方法 当我们导入了spring-boot-starter-actuator这个依赖后, SpringBoot会默认去监测一些信息。其中就包括redis、 会根据redis的默认初始配置, localhost:6379 尝试连接red...

2020-05-28 10:20:53 345 0

原创 分享三个网页访问(点击)统计脚本,展示访问来源地图分布
原力计划

分享三个网页访问/点击统计脚本,展示访问来源地图分布1. Flag Counter2. Revolvermaps3. 蝴蝶计数器总结 首先简单展示一下三个脚本的效果; 左边的是FlagCounter,中间的是revolvermaps,右边的是蝴蝶计数器,差不多可以理解是FlagCounter国内...

2020-04-21 22:24:05 258 0

原创 CSV导入导出简单的工具类

CSV导入导出简单的工具类 import com.google.common.collect.Lists; import com.opencsv.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4...

2020-04-08 19:29:08 101 0

原创 使用navicat将mysql表结构导出表设计文档

使用navicat将mysql表结构导出表设计文档一、查表结构sql二、导出word 一、查表结构sql SELECT TABLE_NAME 表名, COLUMN_NAME 列名, COLUMN_COMMENT 注释, COLUMN_TYPE 数据类型, CASE WHEN COLUMN_DEF...

2020-03-30 10:21:54 122 0

原创 log4j.properties 设置特定包/类按级别输出到特定文件

log4j.properties 设置特定包/类按级别输出到特定文件 比如我们有一个这样的info和debug输出级别配置 log4j.rootLogger=INFO,I,D log4j.appender.I= org.apache.log4j.DailyRollingFileAppender ...

2020-03-18 12:09:46 481 0

原创 多种情况下jar包获取文件的路径,读取文件

多种情况下jar包获取文件的路径代码一、idea运行情况二、jar包运行情况三、总结 代码 代码中,分别使用 AppMain.class.getResource AppMain.class.getClassLoader().getResource new File System.getPrope...

2020-02-18 15:46:00 314 0

原创 druid监控一些配置,以及自定义过滤URI监控

druid监控一些配置,以及自定义过滤URI监控一,使用druid监控1.1 依赖1.2 配置二、自定义过滤URI监控 一,使用druid监控 1.1 依赖 druid连接池相信大家并不陌生了。但是有一个功能我也是最近才知道,就是druid的sql监控以及一些请求uri监控,这些能方便我们去对系统...

2020-02-11 18:02:11 532 0

原创 【踩坑】Shiro和Mybatis整合,事务失效 will not be managed by Spring

[速记] 踩坑 今天一下午都在找这个bug,发现平时用的好好的mybatis,居然突然就事务失效了、 当然我想大家第一反应就是@Transaction注解的一些注意要点,这些我也简单在这贴一下吧: spring管理的事务,其实就是靠aop来对数据库操作方法的前后进行处理。 我理解的spring做的...

2020-01-06 21:27:59 195 0

原创 使用guava和redis两种方式来实现限流器

使用guava和redis两种方式来实现限流器1. redis方式2. guava限流器3. 两者整合切换yml配置aop注解aop切面两个限流器,实现一个接口 1. redis方式 redis方式主要是靠incr这个操作,通过过期时间和递增数来判断是否允许通过请求。 public void ...

2020-01-02 20:38:12 724 1

原创 Jedis工具类,使用后释放连接

Jedis工具类,使用后释放连接代码为什么要释放连接 代码 import com.alibaba.fastjson.JSON; import com.google.common.collect.ImmutableList; import lombok.extern.slf4j.Slf4j; i...

2019-12-26 15:45:21 149 0

原创 测试查询ip地理位置的api调用情况

尝试多个查询ip地理位置的api 首先看代码: public static void main(String[] args) throws UnsupportedEncodingException { long l = System.currentTimeMillis(); for (in...

2019-11-26 15:13:37 141 0

原创 Mysql中正则匹配的坑,和java中正则的不同之处

前不久要写一个处理存量数据的脚本,当时为了筛选出身份证号,我的sql的where条件加上了正则匹配: select * from t_idcard where f_idcard regexp '^[0-9]{17}[0-9Xx]|[0-9]{15}$' 看上去好像并没有问题。...

2019-11-21 16:03:33 179 0

原创 关于使用线程池,main方法跑完后程序仍在运行

前一段时间,使用线程池写了个脚本跑存量数据,测试了下方法,抛出异常后发现程序并没有终止,等了很久也还是一样,最后手动关闭了程序。后面发现是因为线程池。 原因 线程池内部有一个类似于死循环的方法,这个循环是非守护线程(用户线程),而jvm对于非守护线程,如果不终止的话,程序是不会结束的,main方法...

2019-11-11 16:34:56 652 0

原创 表单多行实体数据提交,重复的参数名,测试各种情况看SpringMVC后台能不能接收

0. 总结 先把总结写在前面。 下面提到的情况都是: 表单提交而不是ajax提交,也就是 content-Type是 application/x-www-form-urlencoded 而不是json类型 , 模拟多个参数名一样, 多行实体提交的情况 1.后台接收,controller的形参...

2019-10-31 21:10:58 138 0

原创 前后端分离,后台java配置前端域名处理跨域问题

前后端分离的话,经常是前端代码部署的服务器和后台部署的服务器不一样,域名也不一样。这个时候就会有跨域问题。我们可以通过前端的处理方式jsonp(基于js的无视域名调用和callback回调封装),但是这里只说后台java 的处理方式 代码: 跨域问题是浏览器控制台虽然会抛异常,但是仍然会发起这个请...

2019-10-16 19:04:51 560 0

原创 简单总结Linux上排查JVM问题,cpu飙升或者内存不足

前言 首先建议先简单了解JVM的内存机制,以及GC垃圾回收机制 初步了解jvm的内存分配,gc以及简单的jvm内存配置 以下j开头的命令基本都是java命令,如果没有设置全局环境变量,需要加上${java_home}全路径。如/usr/local/jdk8/java/bin/jmap pid 一...

2019-09-12 20:40:21 827 0

原创 初步了解jvm的内存分配,gc以及简单的jvm内存配置

一、jvm常见问题 1、内存不足,这里主要是指堆内存不足,会引发OOM,out of memory 2、cpu飙升,系统卡顿 二、简单了解jvm内存和gc 在此之前,我们应该对jvm的内存分配,以及基本的gc机制有一定的了解。 简单说,jdk8以后,堆区就分为新生代和老年代,图中的Perman...

2019-09-12 19:37:27 152 2

原创 使用二进制位来控制权限,表设计

前言 最近在自己搭建一个管理后台,到了权限角色的时候,按常规涉及了以下几张表: 也是相当常见的模型了。 但是随机我发现一个不大不小的问题,当权限表/资源表稍微大一点的时候,角色关联权限tbl_role_permission 就会有大量数据 这才一个角色,很伤脑筋。于是我想到了上个项目中用到的二...

2019-09-10 20:53:15 674 1

原创 自定义Appender类让log4j.properties配置日志文件根据时间和文件大小切分,限制最大日志数自动删除

一、单一根据时间或大小切分日志文件 根据时间,这个相信大家都知道,主要是 log4j.appender.D = org.apache.log4j.DailyRollingFileAppender 就可以了,自然会根据日期来切分日志文件. 根据大小也简单 log4j.appender.debug...

2019-08-26 09:51:41 1456 0

原创 java使用谷歌的zxing生成二维码,带logo,更改背景色的二维码工具类

需要注意的点: 1、这是基于java8以上的代码 2、默认生成的图片是png的,不过测试Path路径写jpg的后缀也可以的 一、工具类 需要导入zxing的依赖 <dependency> <groupId>com.google.zxing</...

2019-08-16 16:35:46 665 2

原创 HttpClient使用时Timeout waiting for connection from pool,maxConnTotal和maxConnPerRoute

一、为什么会报Timeout waiting for connection from pool 首先我们需要知道,HttpClient是不建议每次使用都创建的,因为它本身就带一个连接池。如果我们使用频繁的话,频繁创建HttpClient对象也不是明智的。 我在使用HttpClient的时候,在一个...

2019-08-16 11:54:33 1937 0

原创 解决Tomcat的Catalina日志中文乱码

网上很多解决方案,有说该server.xml的,有说该log4j.properties的 不过我按这些改了都没生效。不过我也确实是改了上面的两个文件,至于对修改成功的结果有没有起到作用我也不知道,所以大家如果按我这个方法没用的话再试试其他的吧 在Tomcat的/bin目录下,打开catalin...

2019-08-07 15:40:53 5210 0

转载 Linux中重定向输出>/dev/null 2>&1

Unix/Linux默认情况下,总是有三个文件处于打开状态, 标准输入(键盘输入)、标准输出(输出到屏幕)、标准错误(也是输出到屏幕),它们分别对应的文件描述符是0,1,2 ; 下面的来看看这几种重定向方法的区别: 第一种:>/dev/null 2>&1 应该等同于这样: ...

2019-08-02 14:40:43 441 0

原创 图解debug——实例化一个HashMap,初始化容量到底应该设置多大

一、结论 首先先放出结论,根据阿里巴巴java开发规范中,第一章第五节第9点; 【推荐】集合初始化时,指定集合初始值大小。 说明:HashMap 使用 HashMap(int initialCapacity) 初始化, 正例:initialCapacity = (需要存储的元素个数 / 负载因子...

2019-08-01 11:14:53 644 2

原创 从数据安全的角度解决高并发下秒杀问题(以及redis连接池并发下问题)

从数据安全的角度解决高并发下秒杀问题 这个是博主自己闲的无聊的时候想写个demo玩玩,并不算最好的解决方案,当然也是阉割了很多东西的简化版,现实业务肯定比这个复杂 这里的话不考虑高并发带来的性能问题,什么负载均衡,限流,分发请求等。就考虑如何保证商品的库存不会超卖。 一、思路 秒杀下的数据安全,无...

2019-07-30 19:28:08 1036 0

原创 记录sharding-jdbc导致的sql子查询问题,多出AS sharding_gen_1

本来有个要求,就是查询出同一组F_process_key 下,版本F_deployment_version 最高的数据,我的sql如下: SELECT wd.* FROM table_wd wd WHERE wd.F_id = ( SELECT F_id FROM table_wd ...

2019-07-26 19:33:03 1495 1

原创 下载文件时,响应Response设置,浏览器弹出下载框

在你潇洒的写下InputStream转到response的时候,需要先设置下Response,否则浏览器并不会弹出下载框 预处理 "Content-Type", "application/octet-stream"是内容类型,告诉浏览器这个是什么,可以参照对...

2019-07-25 14:10:16 3940 0

原创 将SpringBoot+SpringSecurity改造为前后端分离+Jwt的权限认证系统,Token过期刷新问题

前言 一般来说,我们用SpringSecurity默认的话是前后端整在一起的,比如thymeleaf或者Freemarker,SpringSecurity还自带login登录页,还让你配置登出页,错误页。 但是现在前后端分离才是正道,前后端分离的话,那就需要将返回的页面换成Json格式交给前端处理...

2019-07-18 20:00:23 4781 8

原创 Fastjson转换json到带泛型的对象(如Map)报错解决

1 问题出现 在跑demo的时候,写了个读取json,然后转换成HashMap的代码,结果发现fastjson报了类型转换异常: private static HashMap<String,ErrorDto> errorCodeCache; static { String...

2019-07-18 15:10:58 5705 0

原创 不开新数组,一串英文字符串,去除重复的字符

思路 英文字符,也就是a-z,A-Z 分别对应的ascii码是 97-122,65-90 总共加起来48个字符,如果按照平时相反,两层for循环,外面一层遍历字符串,里面一层开一个新数组,判断当前字符在数组中有没有,没有就存,有就跳过 但是不让开新数组,这时候可以考虑使用bit位。正好一个long...

2019-06-21 21:05:09 196 0

原创 Oracle存储过程和存储函数

1.存储过程 将一段已经编译好的代码,封装到数据库中 1. 作用 : 提高了代码的复用性 因为以及编译好了,可以提高了执行效率 关键字 - procedure /prə’siːdʒə/ 过程,程序,手续 2. 语法: create [or replace] procedure 过程名...

2019-06-18 12:08:52 375 0

原创 笔记-关于Redis集群和Redis持久化

一. redis 1.1 redis的哈希槽 在redis集群中,怎么确定新增的数据添加到哪个实例中去呢? 这个时候就涉及到哈希槽的概念。 1.1.1 集群中的哈希槽分配 redis默认初始化了16384(2的14次方)个哈希槽。在新增一个key-value的时候,redis会计算key的哈希值(...

2019-06-17 20:22:23 190 0

原创 Tomcat,Nio和Servlet的一些笔记

一. servlet 1.1 什么是servlet? servlet是一个java的服务端应用程序。类似一个java组件或者小插件,用来处理客户端和服务端之间的请求和响应。需要依赖servlet容器,由容器来实例化和调用service方法 servlet让客户端和服务器端不仅仅是进行简单的静态资源...

2019-06-15 12:53:41 339 0

原创 mysql的索引innodb和myisam, 以及B+Tree和B-Tree详解

一. mysql的索引 mysql常用的索引有以下几种: hash索引 hash索引通过hash值来匹配对应的数据,类似键值对的形式,查找的时候可以精准一次定位,但是对于范围查询,排序效率不高,并且hash索引不能避免全表扫描,因为hash值并不能完全保证一个hash值匹配一个数据(hash冲...

2019-05-31 19:47:10 721 0

转载 高并发下解决秒杀问题的思路

转载 https://www.jianshu.com/p/718b1147ee3a

2019-05-08 15:51:33 301 0

原创 Java8环境下使用restTemplate单/多线程下载大文件和小文件

0. 准备工作 下面使用的restTemplate, 都是使用整合了HttpClient连接池的restTemplate, 关于整合可以看我的上一篇文章 ,当然直接使用原生的也是可以的 我这里还使用了VisualVm Launcher的idea插件,来查看运行时的内存够和线程 1. 简单的下载文...

2019-03-30 17:30:52 4586 2

原创 SpringBoot的restTemplate整合HttpClient连接池及配置

1. 为什么要整合HttpClient RestTemplate是Spring自带的一个调用rest服务的客户端,它提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。 RestTemplate默认是使用JDK原生的URLConnection,默认超时为-1, 也就表示是没有超...

2019-03-27 23:15:05 9373 0

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