
java
文章平均质量分 56
三3三
编码梦想,守护创新 —— 用Java编织安全的数字世界。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
布隆过滤器和布谷鸟过滤器详解
布隆过滤器和布谷鸟过滤器实现原理详解原创 2023-02-16 18:23:03 · 3770 阅读 · 0 评论 -
多线程环境下的伪共享
多线程下的伪共享及解决方案原创 2023-02-09 20:01:00 · 897 阅读 · 0 评论 -
Redis多路复用及内核中的请求数据结构分析
Redis多路复用及内核中的请求数据结构分析原创 2022-10-26 12:00:46 · 794 阅读 · 0 评论 -
Netty运行原理简述
netty运行原理简述,有流程图有文字分析原创 2022-06-17 17:53:12 · 425 阅读 · 0 评论 -
Dubbo底层网络服务框架调用结构分析
3分钟了解Dubbo里使用的网络服务框架简单的架构原创 2022-02-06 21:24:47 · 748 阅读 · 0 评论 -
Dubbo底层原理架构图
3分钟了解dubbo底层调用流程原理原创 2022-02-06 21:24:01 · 1785 阅读 · 0 评论 -
策略模式优化写法
该模式比较简单,但相对一般策略模式更优雅,供大家参考。因为写法简单,就不过多赘述,大家还是直接看代码吧1.抽象类public abstract class AbstractStrategyComponent { /** * 苹果 */ static final String APPLE = "APPLE"; /** * 香蕉 */ static final String BANANA = "BANANA"; /** * 梨 */ stat原创 2022-01-15 15:43:58 · 410 阅读 · 0 评论 -
通过责任链模式+单例模式+工厂模式实现多流程处理
最近有个需求,是关于权限认证的,由于需要对传过来的用户信息进行多级处理,才得知该用户所拥有的权限。因此我决定采用责任链的模式来实现上述需求。1.什么是责任链模式?责任链(Chain of Responsibility)模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,于是将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。在责任链的模式中,我们只需要将请求发送到责任链的头处理对象中,然后就不需要关心具体的处理细原创 2022-01-15 15:32:30 · 1915 阅读 · 0 评论 -
java 二叉树实现原理及代码实现基础操作
近两天用空闲时间研究了二叉树,略有心得,写此博客,记录一下,顺便加深记忆,梳理思路。(代码纯手敲,望各位观阅的朋友点个赞)二叉树的相关概念,如,树高度,节点层数,节点度数,路径,叶节点,分支节点,根节点,父节点,左节点,右节点,兄弟节点,祖先节点,子孙节点,左子树,右子树等基本概念,不再赘述,这里重点讲述有关二叉树的各种操作现有二叉树如下:1.查找2.插入节点(这里不考虑数值相等的情况,正规二叉树不允许出现相同数值)3.前序遍历递归操作4.前序遍历非递归操作5.中序遍历递归操作6原创 2021-04-22 13:44:15 · 353 阅读 · 0 评论 -
java 观察者模式的实现及应用场景
最近项目中有个合同拆分功能,涉及到多个参数的联动,为了能更高效的实现该功能,我决定用观察者设计模式来完成这个功能。之前只是在网上了解过,具体实现细节已经忘光了,在这里写个小demo简单回忆一下1.首先创建被观察者:import java.util.ArrayList;import java.util.Observable;/** * @Des: 被观察者 * @Author: liut * @Date: 2021/3/22 17:12 */public class ContractDa原创 2021-03-22 17:25:16 · 935 阅读 · 0 评论 -
jpa 通过Specification实现复杂查询demo
jpa常用复杂查询demo,后期使用方便回忆public List<DependenceResult> dependence(String order, String name, String source, Long createId, Long entId) { List<DependenceResult> list = new ArrayList<>(); Specification<DataSourceBean> sp原创 2021-02-01 10:51:08 · 226 阅读 · 0 评论 -
java 通过EasyExcel读取文件流,获取excel文件数据
这里展示两种读取方式,读取文件和网络文件1.读取文件 /** * @Des: 获取excel文件类型信息 * @Author: liut * @Date: 2021/1/19 14:53 */ public Map getLocalFileInfo(MultipartFile file,String sheetNum){ Map<String, Object> map = new HashMap<>();原创 2021-01-19 15:45:33 · 8315 阅读 · 0 评论 -
java 定时给指定微信好友发送情话 (¬_¬)瞄
package com.chat.api.wx;import cn.hutool.http.HttpUtil;import java.awt.*;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.event.KeyEvent;import java.util.原创 2020-12-11 14:57:26 · 2389 阅读 · 16 评论 -
Springboot集成shiro
闲来无事,研究了下springboot集成shiro,写此博客记录一下。版本:springboot2.0+shiro1.2.5;源码地址:已上传至码云相较于spring security,shiro是个轻量级的安全框架,使用起来十分方便快捷,只需要两个类就可以集成到springboot中:1 shiroconfig:设置过滤条件与跳转条件2 shirorealm:进行角色认证和权限认证具体实现代码如下:pom文件:<?xml version="1.0" encoding="UTF-8"?原创 2020-10-29 16:17:39 · 163 阅读 · 0 评论 -
SpringBoot配置多数据源
闲来无事,在网上查找资料,练习配置多数据源,成功之后,写此博客记录一下。已上传至码云: 源码地址技术点:SpringBoot+JPA+Mysql一、application.yml文件配置spring: jpa: hibernate: ddl-auto: create naming: physical-strategy: org.springframework.boot.orm.jpa.hibernate.SpringPhysicalNamingSt原创 2020-10-23 09:25:40 · 211 阅读 · 0 评论 -
基于redis实现分布式锁
今天看博客看到了一条关于实现分布式锁的标题,正好有空闲时间,便自己动手简单实现基于redis的分布式锁;大体实现思路:1.在redis中设置一个(key,value),并赋予其过期时间,防止死锁,将这个(key,value)当做一个锁,并将value返回,当释放锁的时候进行判断。2.获取锁的时候同样设置一个过期时间,如果超时,则停止获取锁。3.释放锁的时候,先对比判断标识,如果符合条件,则删除key,达到释放锁的目的。具体代码:package com.chat.api.test.redisLoc原创 2020-10-20 16:23:42 · 188 阅读 · 0 评论 -
java 定时启动window程序、自动滑动鼠标
马上要放10.1假期了,结果公司通知5-8号加班,需要远程办公,本人项目模块已经编写完成,预计加班任务很少,为了更好的远程办(划)公(水),特地写了这个脚本。脚本介绍:程序启动后,会一直执行,每天的8:50自动打开企业微信,之后每间隔10秒移动一次鼠标(企业微信中,如果长时间不进行操作会有挂机提示),这样就可以防止电脑睡眠,并且企业微信不会有挂机提示,有了这个程序,然后(✪ω✪)。。。。。下面是完整代码:public class HappyOnHook { private static i原创 2020-09-30 11:16:43 · 2254 阅读 · 6 评论 -
JPA接收数据与数据库查询数据不一致问题记录
昨天一个关于jpa数据接收的问题让我十分疑惑,至今未找到答案,在此记录,若有人看到该问题并作出有效解答,不胜感激问题如下:jpa sql(这里为了方便阅读简化了sql)select count(*) id,ent_id,name,unit,sum(given_invest) givenInvest,create_by from cm_excel_check where unit like '%外协单位%' and ent_id =590599156901351424查询结果如下:在jav原创 2020-08-07 16:44:50 · 2048 阅读 · 2 评论 -
SpringBoot+Scheduling实现定时任务
近期有个数据报表查看的需求,考虑到数据量太大,决定舍弃实时查看的方案,采用每天更新数据的方案,于是就写了一个定时任务的方法,特此记录先上代码:/** * @Description 可视化定时任务 * @Date 2020/7/1 **/@Configuration@EnableSchedulingpublic class ScheduleConfig implements SchedulingConfigurer { @Autowired private ScheduleCo原创 2020-07-21 09:55:14 · 445 阅读 · 0 评论 -
JPA sum函数如何接收问题
近期在开发过程中有数据分析的数据,因此写了一些sum函数的sql,但是在用bean接收的时候出现了问题,在此记录一下,希望能为遇到同样问题的朋友提供一点帮助:一下是我搜索数据用的sql语句(敏感字段已经修改):select sum(total) total,sum(list_amount) list_amount,sum(append_list) append_list,sum(change_palaver) change_palaver,sum(other) other from cm_contrac原创 2020-07-21 09:11:39 · 1443 阅读 · 0 评论 -
使用shardingjdbc实现分库分表
近期有个开发消息中心的需求,考虑到数据量大,决定采用分库分表的处理方式,这里选用shardingjdbc来实现分库分表。github源码下载地址下面是整体的架构:1 首先配置多数据源application.yml文件spring: shardingsphere: datasource: names: db0,db1 db0: databaseName: db0 type: com.alibaba.druid.pool.Druid原创 2020-06-02 17:23:40 · 1120 阅读 · 0 评论 -
通过java反射机制进行vo、po值的传递
近期在项目中有多个vo需要进行vo、po值的转换,之前都是在vo里写个方法,进行值传递,但是这次涉及的vo较多,属性值较多,如果要对每个vo都写个传值方法,显然是费时又费力的。正好想到了之前在网上看到了运用反射机制的值传递操作,便想到了用反射机制来实现vo和po传值。大体思路是通过反射来获取所有字段的值、getter、setter方法,然后用invoke方法调用setter方法,将vo的值一个一个的set到po里代码如下:private void setValueVoToPo(Object obj,原创 2020-05-28 17:10:28 · 1717 阅读 · 0 评论 -
使用Aop记录用户操作日志
近期有个日志记录的需求,近期已使用AOP将其实现,在此记录一下,也希望能帮助到有同样需求的码友。大体思路是用AOP+自定义注解,在增删改的方法执行之前或之后,进行数据库日志记录。一 定义一个自定义注解:这里我定义了两个参数,description:对操作的详细描述(可以定义成json串,对数据进行规范处理)operateType(操作类型)。这里可以根据自己业务需求对参数数量、类型进行自定义设置import javax.interceptor.Interceptor;import java.l原创 2020-05-28 15:45:07 · 1931 阅读 · 2 评论 -
java 用ExcelUtils读取Excel
通过java代码读取excel表,将数据保存到数据库主要通过cn.hutool.poi.excel.ExcelUtil工具类1. String basePath = “E:\文件.xlsx” 设置文件路径2. ExcelReader reader = ExcelUtil.getReader(basePath) 获取文件3. List<List> read = reade...原创 2020-04-23 11:28:37 · 5454 阅读 · 0 评论 -
java JPA 更新字段返回影响行数,但是数据未更新问题
今天遇到一个离奇的bug,问题如下:用jpa更新数据库中的两个字段,通过debug确认更新字段都成功传入,并且返回影响行数为1,但是数据库中的字段确未更新。改方法在service中有两处调用,其中一个可以正常更新,但是另一个却出现上述问题,令我十分困解。。。后来在网上查找类似问题的解决方法,得以完美解决:修改如下:只是设置了@Modifying(clearAutomatically ...原创 2020-04-09 11:30:12 · 3263 阅读 · 0 评论 -
java中操作Stream流进行匹配查询
上一篇讲到如何用Specification进行复杂查询,这篇就简单说下本人更喜欢的操作Strem进行复杂查询。话不多说,先上代码: //自定义条件查询 Long proId = ParamUtil.getLongParameter(entity.getProjectId(), -1L); //定义匹配字段 String nu...原创 2020-04-07 17:35:39 · 3239 阅读 · 0 评论 -
JPA 通过Specification实现复杂查询
JPA中继承BaseRepo之后,可以使用最基本的增删改查,如果想实现复杂查询,则需要借助Specification来完成这个功能:下面就简单介绍一下Specification的使用public void findAll(ConstructPlanPageReqEntity constructPlanPageReqEntity) { Integer pageNum = page.getPag...原创 2020-04-07 16:53:33 · 1110 阅读 · 0 评论 -
HashTable和ConcurrentHashMap的区别
HashTableHashTable使用synchronized来保证线程的安全,但是在线程竞争激烈的情况下HashTable的效率非常低下。当一个线程访问HashTable的同步方法,其他方法访问HashTable的同步方法时,会进入阻塞或者轮询状态。如果线程1使用put进行元素添加,线程2不但不能用put方法添加于元素同是也无法用get方法来获取元素,所以竞争越激烈效率越低。Concurr...原创 2020-02-26 10:25:47 · 226 阅读 · 0 评论 -
帮你搞懂Java中重写equals方法为什么要重写hashcode方法
转载: 帮你搞懂Java中重写equals方法为什么要重写hashcode方法.简单明了转载 2020-02-26 10:05:48 · 209 阅读 · 0 评论 -
java 使用jacob将word和excel转换成pdf格式文档
1.word转pdf格式/** * word转成为PDF * @param fileName * @param toFileName * @return */ public static int word2Pdf(String fileName,String toFileName){ System.out.println(...原创 2020-01-16 14:17:11 · 623 阅读 · 0 评论 -
基于redis实现单点登录
通过redis实现单点登录1登录(controller)/** * 登录 * @param username * @param password * @param url * @param request * @param response * @return */ @RequestMapping(valu...原创 2020-01-16 14:09:44 · 813 阅读 · 0 评论 -
java对redis的常用操作指令
System.out.println("======================key=========================="); // 清空数据 System.out.println("清空库中所有数据:"+jedis.flushDB()); // 判断key否存在 System.out.println("...转载 2020-01-14 16:18:27 · 179 阅读 · 0 评论 -
java 文件下载的多种形式
java 文件下载的多种形式1.复制本地文件/** * 复制本地文件 * @param sourcePath * @param newPath */ public static void copyFile(String sourcePath, String newPath){ File fileSource = new File(...原创 2019-12-05 14:38:15 · 434 阅读 · 0 评论