java
石楠烟斗的雾
这个作者很懒,什么都没留下…
展开
-
新版Spring Security如何实现Basic Auth认证接口
新版Spring Security如何实现Basic Auth认证接口。原创 2023-06-14 10:53:31 · 932 阅读 · 0 评论 -
SpringBoot中jackson自定义序列化
SpringBoot中jackson自定义序列化以及空值序列化处理原创 2022-07-11 17:32:12 · 2248 阅读 · 0 评论 -
Redis实现可重入分布式锁
package com.geega.badge.service.lock;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.core.script.DefaultRedisScript;import org.springframework.ster.原创 2022-04-26 11:00:46 · 2895 阅读 · 2 评论 -
单机Clickhouse对JSONExtractString函数进行测试
1、Linux虚拟机4核32G2、一共1000万条,如下图3、其中的数据类型如下图,其中一个字段包括json格式的字符串,下面将对clickhouse提供的json相关函数的效率进行测试4、通过JSONExtractString函数对json类型字段进行条件判断5、通过测试千万级数据量下使用Json处理函数的效率也还是可以接受的,如果服务器的配置能更好的我想查询效率应该会更高,clickhouse不亏是OLAP界的翘楚。...原创 2021-04-26 15:35:43 · 2879 阅读 · 0 评论 -
记一次SpringBoot中使用Validated不生效的问题
其实没多大的问题就hibernate-validator包的版本不对,从7.0.0.Final -> 6.1.7.Final就好了!!!原创 2021-03-31 09:28:18 · 3221 阅读 · 0 评论 -
java命令执行jar包main方法指定相关依赖
1、Java命令运行jar包时,一般会直接使用-jar的参数去运行,这种方式是在jar包中有一个META-INF的目录下的MANIFEST.MF文件中指定了Main-Class,因此可以直接运行起来。Manifest-Version: 1.0Main-Class: com.alibaba.dubbo.container.Main2、如果在我们打包时并没有按照上述方式去打,并且很多依赖jar都打到同一级目录下,如下图所示, 如果此时需要去启动某个jar包中的某个Main主类,则需要通...原创 2021-03-11 16:39:20 · 1416 阅读 · 0 评论 -
Java通过selenium对动态网页进行数据爬取
1、浏览器驱动下载地址:http://npm.taobao.org/mirrors/chromedriver2、maven依赖 <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.4</ve原创 2021-02-05 17:13:33 · 1105 阅读 · 0 评论 -
Java通过selenium+ashot对网页进行长截屏
1、浏览器驱动下载地址:http://npm.taobao.org/mirrors/chromedriver2、maven依赖 <dependency> <groupId>ru.yandex.qatools.ashot</groupId> <artifactId>ashot</artifactId> <version>1.5.4</ve原创 2021-02-05 17:06:46 · 1651 阅读 · 0 评论 -
优化web请求三-异步调用【WebAsyncTask】
转载:优化web请求三-异步调用【WebAsyncTask】原创 2021-01-20 21:03:29 · 194 阅读 · 0 评论 -
Redis实现滑动窗口
1、当我们需要处理诸如接口限流或监控告警等功能时,会使用滑动窗口来使我们的统计会比较平滑,在单机应用下可以有很多办法实现,而分布式应用就无法使用前述办法了,不过也不必太担心,分布式下通过redis的zset数据结构能非常方便的实现滑动窗口。众所周知,zset存在分数score的概念,并可通过score进行一系列的操作,比如排序,区间查询等。因此我们可以将接口的请求时间戳作为zset的score,然后对zset进行操作。2、为了让一系列针对zset的操作满足原子性,我们需要使用lua脚本进行操作,具体如下原创 2021-01-14 23:04:59 · 3076 阅读 · 0 评论 -
Spring事务传播特性的几种嵌套结果探索
1、具体有哪几种传播特性这里就不赘述了,网上一搜一大把,本文的目的是通过实验的方式验证几种传播特性嵌套之后的执行结果的探索。 为了方便阐述,以下实验都将遵循,方法service1()中调用方法service2()或service3()的形式。2、方法1设置成默认的传播特性(REQUIRED),方法2设置成MANDATORY,这种情况下,如果两个方法都正常执行,那么都会进行提交, 这个有很好理解,因此MANDATORY指的是必须在一个事务中执行,如果有就使用当前事务,所以都得以提交。如...原创 2020-12-16 11:20:06 · 232 阅读 · 0 评论 -
一致性哈希算法与Java实现
一致性哈希算法与Java实现 =================================================.转载 2020-11-04 21:04:45 · 163 阅读 · 0 评论 -
Redis数据结构简单介绍
1、众所周知Redis有五大常见的数据类型,它们在Redis源码中由如下的结构体表示typedef struct redisObject{ //类型 unsigned type:4; //编码 unsigned encoding:4; //指向底层数据结构的指针 void *ptr; //引用计数 int refcount; //记录最后一次被程序访问的时间 unsigned lru:22; }ro原创 2020-07-08 21:31:44 · 183 阅读 · 0 评论 -
Java基于redis实现分布式锁
本文转载自:https://yq.aliyun.com/articles/307547分布式锁一般存在三种实现方式,1、通过数据库的乐观锁;2、redis 3、ZooKeeper。本文将介绍一下第二种方式,基于redis实现分布式锁,其实网上有很多代码,但都多多少少存在不同的问题,它们根本不能满足分布锁的要求。本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:互斥性。在任意时刻,只有一个客户端能持有锁。不会发生.转载 2020-06-29 11:41:10 · 745 阅读 · 0 评论 -
Java项目CPU占比100%排查步骤
这个问题如果写代码的时候注意点一般不会发生,常见的导致该问题的原因是程序出现死循环,另外就是在面试的时候经常会被问到,所以自己整理记录一下。1、通过linux的top命令查看哪个线程占用CPU比较高在我自己的阿里云服务器上操作了一下,如上图,但是系统中没有Java进程占用CPU比较高的,但是不妨碍接下来的操作,接下来就用上图中的进程PID为24896的Java项目来进行实验。2、使用 pidstat -p PID -u -t 命令来查看PID进程下的线程情况如上图所见通过上面的命..原创 2020-05-19 22:06:29 · 1627 阅读 · 0 评论 -
Feign使用okhttp的排坑之旅
1、由于项目需要远程调用http请求,因此就想到了Feign,因为真的非常的方便,只需要定义一个接口就行。但是feign默认使用的JDK的URLHttpConnection,没有连接池效率不好,从Feign的自动配置类FeignAutoConfiguration中可以看到Feign除了默认的http客户端还支持okhttp和ApacheHttpClient,我这里选择了okhttp,它是有连接池的...原创 2019-12-15 17:03:58 · 13081 阅读 · 4 评论 -
SpringBoot启动流程分析
从SpringBoot的主类进入SpringApplication的run()方法,然后接着往下分析1、首先启动一个StopWatch(秒表)2、配置awt相关configureHeadlessProperty();3、从所有的jar包下的META-INF/spring.factories文件中读取所有的org.springframework.boot.SpringApplica...原创 2019-12-09 22:51:06 · 259 阅读 · 0 评论 -
SpringBoot错误处理流程原理
1、根据SpringBoot的惯例或者说方法论,我们研究错误处理的话应该先找到错误处理的自动配置,赶巧,SpringBoot中确实有一个叫ErrorMvcAutoConfiguration的自动配置类,我们能看到它向Spring容器中注入了一系列的对象,包括DefaultErrorAttributes、BasicErrorController、ErrorPageCustomizer以及通过内部类D...原创 2019-12-09 00:25:26 · 428 阅读 · 0 评论 -
SpringBoot整合RabbitMQ
package com.dxy.rabbit;import org.springframework.amqp.rabbit.annotation.EnableRabbit;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApp...原创 2019-12-03 22:08:48 · 180 阅读 · 0 评论 -
SpringBoot配置RedisTemplate和RedisCacheManager
import com.dxy.cache.pojo.Dept;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;i...原创 2019-11-28 00:41:14 · 13435 阅读 · 4 评论 -
使用Jxcell和POI给Excel文件添加打开密码
使用Jxcell和POI给Excel文件添加打开密码原创 2017-10-27 17:37:59 · 3827 阅读 · 3 评论 -
为任务关键型Java应用优化垃圾回收(转载【写的很好】)
为任务关键型Java应用优化垃圾回收(上)为任务关键型Java应用优化垃圾回收(下)转载 2016-09-07 18:26:15 · 458 阅读 · 0 评论 -
Java通过openoffice将下载的文件转成pdf供前端预览
一、下载安装openoffice1、进入openoffice官网http://www.openoffice.org/download/index.html下载最新版RPM安装包Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz2、解压下载的文件tar zxxvfApache_OpenOffice_4.1.6_L...原创 2019-09-26 17:35:14 · 887 阅读 · 0 评论 -
如何通过Spring Boot配置动态数据源访问多个数据库(转)
&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; &转载 2018-12-11 15:36:25 · 689 阅读 · 3 评论 -
Java实现红包随机分配算法
闲来无事,突然想起来红包随机分配算法要怎么实现,经过一阵子思考,勉强用CAS操作和锁两种方式实现了该算法,但对于CAS实现的方式心里没底,我没办法证明算法的正确性,只能简单的重复执行该算法10000次这种恶劣的方式来验证。真心希望有这方面经验的朋友可以交流一下,互相学习。还有个问题是,我把两种算法分别执行10000次的记录耗时,结果发现锁方式比CAS快,这有点出乎意料之外。但事后又想想CAS方式在原创 2017-05-24 17:31:55 · 7280 阅读 · 1 评论 -
JVM垃圾收集器简要概括
1、Serial:单线程复制算法 新生代收集器2、ParNew:多线程复制算法 新生代收集器-XX:UseParNewGC :强制选择ParNew收集器-XX:ParallelGCThreads: 限制收集线程数3、Parallel Scavenge:多线程复制算法 新生代收集器 与其他收集器原创 2017-01-18 15:36:50 · 614 阅读 · 0 评论 -
简单的使用protobuf和protostuff
在我们的开发过程中,序列化是经常需要处理的问题,比如在做分布式访问数据时,或者是在做redis缓存存储数据时,如果我们涉及的知识面不够广的话,可能会简单的使用JDK的序列化,也即在需要序列化的类上implements Serializable接口去实现序列化,我想说的是这种方式在小系统中尚且可以用一用,如果是并发很大的系统会受到严重影响,这是由于JDK自带的序列化效率很低,不论是时间上还是空间上。原创 2016-12-20 19:32:53 · 17306 阅读 · 6 评论 -
JVM学习笔记
1、方法区的相关参数(1)、最小值:-XX:PermSize(2)、最大值:-XX:MaxPermSize2、堆大小相关参数(1)、最小值:-Xms 一般情况下是物理内存的1/64,但小于1G(2)、最大值:-Xmx 一般情况下是物理内存的1/4,但小于1G(3)、增大堆空间:-XX:MinHeapFreeRadio(4)、减小堆空间:-XX:MaxH原创 2016-12-20 17:52:05 · 441 阅读 · 0 评论 -
Java8中的Optional类学习笔记
Java8中加入的Optional类的主要作用是,为了让我们在编程中尽量去规避空指针异常。我仅仅是为了让自己对学习Optional类的记忆更加深刻而写这边博客,其实它很简单,可工作中还没用到Java8,所以更要记录一下了。1、5个初始化方法1):Optional(),构造方法,构造一个value为null的实例2):empty(), static方法,返回一个empty实例原创 2016-11-25 14:24:02 · 765 阅读 · 1 评论 -
POI导出Excel表格
在最近的工作中遇到了需要把数据导出打Excel表格的问题,在网上找了一圈,感觉POI比较合适,POI有两个不同的分支吧,我也不知道该叫两个版本还是叫两个分支,暂且就叫分支吧,一个是org.apache.poi.hssf包下的,大部分类以HSSF开头的,它主要是适用于Excel2003之前得版本,扩展名是.xls,另外有一个升级版本在org.apache.poi.xssf包下,里面的大部分类以XSS原创 2016-09-01 16:31:26 · 748 阅读 · 0 评论 -
Apache和tomcat实现负载均衡和集群
一、分布式实现原理 如上图所示,主要通过 Apache-Server 作为中转服务器,实现多个 tomcat 服务器之间的分布式处理,用户直接请求 Apache-Server ,然后 Apache-Server 会将请求分发到具体的 tomcat-server ,之后tomcat-server 响应客户请求并返回结果到 Apache-Server ,最后 Apa转载 2014-06-20 10:41:06 · 738 阅读 · 0 评论 -
jxl从html中的table中导出数据到execl
第一步:js从table中拿到数据原创 2014-05-14 11:47:52 · 1355 阅读 · 0 评论 -
JSTL中的常见方法,如截取字符串
可以截取,用fn函数:http://java.sun.com/jsp/jstl/functions" %>下面是JSTL中自带的方法列表以及其描述函数名 函数说明 使用举例 fn:contains 判定字符串是否包含另外一个字符串 fn:containsIgnoreCase 判定字符串是否包含另外一个字符串(大小写无关) fn:endsWith 判定字符串是转载 2014-04-08 21:35:32 · 1491 阅读 · 0 评论 -
一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现......
今天去了一个互联网公司面试Java开发岗位,笔试中有如下一题,我给出的算法代码如下,只是个人的想法不一定是最好的。一个整数数列,元素取值可能是0~65535中的任意一个数,相同数值不会重复出现。0是例外,可以反复出现。 请设计一个算法,当你从该数列中随意选取5个数值,判断这5个数值是否连续相邻注意: - 5个数值允许是乱序的。比如: 8 7 5 0 6 - 0可以通配任原创 2017-06-23 16:13:53 · 1794 阅读 · 0 评论 -
SpringBoot上传文件跟传统的SpringMVC的区别
在新项目中,项目组选择了之前重来没用过的SpringBoot。今天再处理文件上传时起初就照搬了之前项目中SpringMVC的配置和代码,结果总是报参数不存在的错误,改来改去弄了很久才在网上找到解决问题的办法,在此记录一下!一、先来看一下传统的SpringMVC处理文件上传怎么做的 commons-io commons-io 2.5原创 2017-07-04 16:14:33 · 9817 阅读 · 1 评论 -
Spring和SpringBoot项目中的WebSocket中引用对象的不同写法
在实际项目开发中发现不管是在普通Spring还是SpringBoot项目中的WebSocket主类中使用@Autowired都没办法注入想要的对象,现针对这两种情况记录一下解决办法。1、在普通Spring项目中的WebSocket主类中如何注入对象:IBusinessService businessService = (IBusinessService )ContextLoader.ge...原创 2018-12-11 15:20:58 · 898 阅读 · 0 评论 -
Spring事务传播机制详解
Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播,即协调已经有事务标识的方法之间的发生调用时的事务上下文的规则(是否要有独立的事务隔离级别和锁) 概述当我们调用一个基于Spring的Service接口方法(如UserService#addUser())时,它将运行于Spring管理的...转载 2018-08-24 10:18:05 · 247 阅读 · 0 评论 -
使用keytool命令生成证书并导入java的cacerts证书库
1、生成证书,其中-alias后是别名,-keystore后是证书路径和名称keytool -genkey -alias tomcat -keyalg RSA -keystore /etc/cas/keystore/tomcat.keystore提示时必须输入 https域名,如:sso.gudao.red,否则会报java.io.IOException: HTTPS hostna原创 2017-12-19 11:20:01 · 5279 阅读 · 0 评论 -
Spring的事务隔离级别和事务传播特性
一、事务隔离级别1、在数据库操作中,为了保证并发读取的正确性,继而提出了事务隔离级别。简单点,怎么让不同的事务相互之间不影响。Spring中定义了5种事务隔离级别:2、使用不同的隔离级别可以解决不同的问题:1)、ISOLATION_DEFAULT:这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别. 另外四个与JDB原创 2017-10-27 15:55:57 · 516 阅读 · 0 评论 -
单点服务器中的CAS3.4升级到5.1.x遇到的一些问题
最近需要对公司的单点服务器进行升级,该服务器使用了开源的CAS来进行单点认证,目前使用的是CAS4.3版本,打算升级到最新的5.1.x版本。现在的版本也不是我写的,然后之前对CAS也没了解过,但问题摆在眼前了,遂马上去网上找各种资料,但网上对于最新的CAS的资料甚少,不过还是找到两篇非常不错的,会在文章末尾将链接贴出来。这篇文章既然是要记录一下在升级的过程中遇到的问题,那么就不从最开始的下载CAS原创 2017-09-26 18:08:11 · 3194 阅读 · 2 评论