Java
超大板栗
这个作者很懒,什么都没留下…
展开
-
@Autowired和@Resource到底有什么区别
@Autowired和@Resource到底有什么区别原创 2023-03-02 11:36:00 · 905 阅读 · 0 评论 -
在什么场景下使用多线程技术?
业务分为两个执行过程,分别是A和B。当A业务发生阻塞情况时,B业务的执行不依赖A业务的执行结果,这时可以使用多线程技术来提高运行效率;如果B业务的执行依赖A业务的执行结果,则可以不使用多线程技术,按顺序进行业务的执行。一旦系统中出现了阻塞现象,则可以根据实际情况来使用多线程技术提高运行效率。原创 2023-02-20 17:46:33 · 726 阅读 · 0 评论 -
spring-boot 集成 keycloak 遇到的问题
spring-boot 集成 keycloak 遇到的问题原创 2023-01-02 23:57:20 · 795 阅读 · 1 评论 -
SpringBoot2.7.4集成Flowable6.7.2
SpringBoot集成Flowable工作流引擎SpringBoot集成Flowable-ui流程设计器原创 2023-01-02 23:32:42 · 1099 阅读 · 2 评论 -
spring项目在非Spring管理的类中注入Bean的方法
Spring项目在非Spring管理的类中注入Bean的方法原创 2023-01-02 23:28:08 · 672 阅读 · 0 评论 -
基于redis分布式锁的防止重复请求
核心就是相同的key会获取锁失败,此时可以抛出重复请求异常定义一个注解:NoRepeatSubmit:@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface NoRepeatSubmit { /** * 设置请求锁定时间 * * @return */ int lockTime() default 10;}AOP:.原创 2022-04-28 14:54:56 · 1897 阅读 · 0 评论 -
Java利用Mybatis进行数据权限控制
权限控制主要分为两块,认证(Authentication)与授权(Authorization)。认证之后确认了身份正确,业务系统就会进行授权,现在业界比较流行的模型就是RBAC(Role-Based Access Control)。RBAC包含为下面四个要素:用户、角色、权限、资源。用户是源头,资源是目标,用户绑定至角色,资源与权限关联,最终将角色与权限关联,就形成了比较完整灵活的权限控制模型。资源是最终需要控制的标的物,但是我们在一个业务系统中要将哪些元素作为待控制的资源呢?我将系统中待控制的资源分为三原创 2022-03-30 21:28:45 · 3511 阅读 · 0 评论 -
Spring事务七大传播机制与五个隔离级别
一、spring支持7种事务传播行为1、propagation_required(xml文件中为required)当前方法必须在一个具有事务的上下文中运行,如有客户端有事务在进行,那么被调用端将在该事务中运行,否则的话重新开启一个事务。(如果被调用端发生异常,那么调用端和被调用端事务都将回滚)2、propagation_supports(xml文件中为supports)当前方法不必需要具有一个事务上下文,但是如果有一个事务的话,它也可以在这个事务中运行3、propagation_ma.原创 2022-03-24 17:50:12 · 4005 阅读 · 0 评论 -
9.Java设计模式之空对象模式
以前写代码的时候没有专门的封装一个代表NULL的对象,而是直接返回了null封装一个代表NULL的对象,从业务场景来说比较符合天然的逻辑,符合面向对象的思想在空对象模式(Null Object Pattern)中,一个空对象取代 NULL 对象实例的检查(封装一个代表NULL的对象,从业务场景来说比较符合天然的逻辑,符合面向对象的思想)代码:AbstractCustomerpublic abstract class AbstractCustomer { ...原创 2022-03-23 19:30:21 · 1281 阅读 · 0 评论 -
Spring事务失效的几种原因分析
1、spring的事务注解@Transactional只能放在public修饰的方法上才起作用,如果放在其他非public(private,protected)方法上,虽然不报错,但是事务不起作用2、如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB引擎3、Spring团队建议在具体的类(或类的方法)上使用 @Transactional 注解,而不要使用在类所要实现的任何接口上。在接口上使用 @Transactional 注解,只能当你设置了基原创 2021-08-13 10:08:11 · 386 阅读 · 0 评论 -
Java设计模式之责任链模式(用来替代if语句)
一、责任链模式定义责任链模式(Responsibility Pattern), 是行为型设计模式之一。这种模型结构有点类似现实生活中铁链,由一个个铁环首尾相接构成一条链,如果这种结构用在编程领域,则每个节点可以看做一个对象,每个对象有不同的处理逻辑,将一个请求从链的首端发出,沿着链的路径依次传递每个节点对象,直到有对象处理这个请求为止,我们将这样一种模式称为责任链模式。二、责任链模式的使用场景1.多个对象可以处理同一个请求,但具体由哪个对象处理则在运行时动态决定2. 在请求处理者不明确的情况...原创 2021-04-13 14:55:27 · 1030 阅读 · 0 评论 -
关于Spring Security ignoring失效
// filter不能使用spring来管理,不然会让ignoring失效...只能new原创 2020-12-27 18:11:13 · 1117 阅读 · 0 评论 -
Spring Security 之自定义异常处理
1. Spring Security 中的异常Spring Security中的异常主要分为两大类:一类是认证异常,另一类是授权相关的异常。1.1 AuthenticationExceptionAuthenticationException是在用户认证的时候出现错误时抛出的异常。主要的子类如图:根据该图的信息,系统用户不存在,被锁定,凭证失效,密码错误等认证过程中出现的异常都由AuthenticationException处理。1.2 AccessDeniedExceptio...原创 2020-12-25 01:35:24 · 2185 阅读 · 3 评论 -
NoSql思维导图
NoSqlNoSql入门和概述入门概述1.互联网时代背景下大机遇,为什么用nosql1.单机MySQL的美好时代一个网站的访问量一般都不大,而且更多的是静态页面,动态交互类型的网站不多,用单个数据库完全可以轻松应对。上述架构下,数据存储的瓶颈是什么?数据量的总大小一个机器放不下时数据的索引(B+Tree)一个机器的内存放不下时访问量(读写混合)一个实例不能承受2.Memcached(缓存)+MySQL+垂直拆分随着访问量的上升,几乎发部分使用MySQL架构的网站在数据库上都原创 2020-12-15 14:02:29 · 1221 阅读 · 0 评论 -
Redis总结
黑马程序员 Redis教程P1:Redis介绍mysql数据库,数据库以“文件形式存储在硬盘”里边。Redis什么是RedisRedis是远程数据服务,内存高速缓存数据库,支持丰富的数据结构,如String、list、hash、set、sorted set,可持久化,保证了数据安全。Redis是做数据缓存的。缓存有两种类型:数据缓存、页面缓存使用缓存减轻数据库的负载。在开发的时候如果有一些数据在短时间之内不会发生变化,而他们还要被频繁的访问,为了提高用户的请求速度和降低网站的负载,原创 2020-12-15 13:59:48 · 414 阅读 · 0 评论 -
Rising Temperature
Table:Weather+---------------+---------+| Column Name | Type |+---------------+---------+| id | int || recordDate | date || temperature | int |+---------------+---------+id is the primary key for this table.T..原创 2020-12-01 21:44:50 · 165 阅读 · 0 评论 -
Delete Duplicate Emails
Write a SQL query todeleteall duplicate email entries in a table namedPerson, keeping only unique emails based on itssmallestId.+----+------------------+| Id | Email |+----+------------------+| 1 | john@example.com || 2 | bob@exam...原创 2020-12-01 21:25:06 · 125 阅读 · 0 评论 -
google protobuf数据类型
要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。Protobuf消息定义消息由至少一个字段组合而成,类似于C语言中的结构。每个字段都有一定的格式。字段格式:限定修饰符① | 数据类型② | 字段名称③ | = | 字段编码值④ | [字段默认值⑤]①.限定修饰符包含 required\optional\repeatedRequired: 表示是一个必须字段,必须相对于发送方,在发送消息之前.原创 2020-11-22 22:09:42 · 2379 阅读 · 0 评论 -
Netty IdleStateHandler心跳机制
Netty的IdleStateHandler心跳机制主要是用来检测远端是否存活,如果不存活或活跃则对空闲Socket连接进行处理避免资源的浪费;IdleStateHandler心跳检测实例服务端当客户端掉线时可以把连接给释放掉,节约资源 服务端添加IdleStateHandler心跳检测处理器,并添加自定义处理Handler类实现userEventTriggered()方法作为超时事件的逻辑处理; 设定IdleStateHandler心跳检测每五秒进行一次读检测,如..原创 2020-11-22 13:54:26 · 545 阅读 · 0 评论 -
基于netty的聊天室
ChatServer:package com.bool.test;import com.bool.initializer.ChatInitializer;import com.sun.corba.se.internal.CosNaming.BootstrapServer;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.*;import io.netty.channel.nio.NioEventLoopGro原创 2020-11-15 19:42:06 · 130 阅读 · 0 评论 -
Consecutive Characters
Given a strings, the power of the string is the maximum length of a non-empty substring thatcontains only one unique character.Returnthe powerof the string.Example 1:Input: s = "leetcode"Output: 2Explanation: The substring "ee" is of length...原创 2020-11-11 23:18:38 · 181 阅读 · 0 评论 -
Insertion Sort List
Sort a linked list using insertion sort.A graphical example of insertion sort. The partial sorted list (black) initially contains only the first element in the list.With each iteration one element (red) is removed from the input data and inserted in-pl原创 2020-11-11 23:18:00 · 160 阅读 · 0 评论 -
Convert Binary Number in a Linked List to Integer
Givenheadwhich is a reference node toa singly-linked list. The value of each node in the linked list is either 0 or 1. The linked list holds the binary representation of a number.Return thedecimal valueof the number in the linked list.Example 1...原创 2020-11-11 23:17:33 · 115 阅读 · 0 评论 -
jeecg代码阅读-使用shiro的例子
最近在阅读jeecg的shiro权限那块,话说jeecg写的真是棒。pom依赖: <!--JWT--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.7.0</version> </dependency> <!.原创 2020-11-06 14:05:45 · 2438 阅读 · 5 评论 -
Activiti集成Activiti Modeler
Activiti6.0.0及以上版本与activiti-modeler的maven引用有冲突,解决方法参考Activiti6.0.0及以上版本集成Activiti Modeler1.下载源文件activiti-5.22.0官方Demoactiviti5.22.0源码2.copy源文件(一)复制前端文件解压activiti-5.22.0官方Demo解压activiti-explorer.war复制editor-app,diagram-viewer文件夹...原创 2020-11-05 16:19:45 · 1739 阅读 · 2 评论 -
Netty中的三种Reactor(反应堆)
Netty的I/O线程NioEventLoop由于聚合了多路复用器Selector,可以同时并发处理成百上千个客户端SocketChannel。由于读写操作都是非阻塞的,这就可以充分提升I/O线程的运行效率,避免由频繁的I/O阻塞导致的线程挂起。另外,由于Netty采用了异步通信模式,一个I/O线程可以并发处理N个客户端连接和读写操作,这从根本上解决了传统同步阻塞I/O一连接一线程模型,架构的性能、弹性伸缩能力和可靠性都得到了极大的提升。高效的Reactor线程模型常见的Reactor线程模型有三种原创 2020-11-05 14:51:22 · 183 阅读 · 1 评论 -
BYTEBUFFER
A ByteBuffer is fundamental to both NIO APIs and, indeed,to Netty. A ByteBuffer can either be allocated on the heap or directly, which means it's stored outside of the Heap-Space. Usually, using a direct buffer is faster when passing it to the channel, bu.原创 2020-10-28 22:04:21 · 127 阅读 · 0 评论 -
Java用Modbus4J进行Modbus协议通信学习,利用Modbus Slave和Modbus Poll模拟器
Modbus协议比较简单,如果熟悉i/o操作的能很快上手。基本点:字节、字、位基本单位换算大端小端差异异步事件模型直接上代码:```javapackage com.bool.test;import com.serotonin.modbus4j.BatchRead;import com.serotonin.modbus4j.BatchResults;import com.serotonin.modbus4j.ModbusFactory;import com.serotonin.原创 2020-10-20 23:13:03 · 1031 阅读 · 0 评论 -
Android快速开发脚手架 + 常见的目录结构与多模块项目
Android快速开发脚手架与常见的目录结构与多模块项目整理了android开发中经常使用到的一些库,以及常见的工程结构。网络:okhttpretrofitrxjavacom.squareup.okhttp3:logging-interceptorrxjava适配器json转换器rxandroidfastjson代码简化:lombokbutterknife时间选择器:pickerView图片选择:takephoto_librarysql数据库原创 2020-10-14 16:40:11 · 1883 阅读 · 0 评论 -
一个常用的工具类
package com.yzs.plat.process.common.utils;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.BeanUtils;import javax.servlet.http.HttpServletRequest;import java.io.UnsupportedEncodingException;import java.lang.reflect.Field;import ja.原创 2020-06-04 16:48:32 · 168 阅读 · 0 评论 -
通过AOP+注解来实现参数的校验
在实际的java开发中,参数校验是个比较零碎繁琐的事情,但是却必不可少,本文通过aop来实现对参数的校验,可以节省大量的时间和提交代码的可读性与整洁性,方便更加集中的编写业务逻辑。代码:ParamCheckAop:package com.yzs.plat.process.common.aop;import com.yzs.plat.process.common.annotation.ValidateFiled;import com.yzs.plat.process.common.anno原创 2020-06-04 16:43:11 · 2788 阅读 · 0 评论 -
activiti监听器中注入spring bean
/** * 抄收主管审核监听器 */@Component("gasChargeCopySupervisorReviewListener")public class CopySupervisorReviewListener implements TaskListener { private static final long serialVersionUID = 6436489088014722180L; @Autowired private IActKeyValueProp.原创 2020-06-04 16:36:05 · 2324 阅读 · 0 评论 -
记一次队列的使用场景(Redis队列)
队列的特点:解耦,削峰,异步队列的使用场景主要用于异步处理耗时操作。前几天开发好了优惠券模块,在优惠券发放那里使用到了队列来进行异步处理,因公司规模较小,服务器配置只有2G,安装MQ占用了宝贵的内存资源,于是就使用了Redis自带的消息队列来实现。技术栈: Redis+Quartz定时任务过程:当创建了优惠券分发任务的时候就把任务id扔到redis的队列里面,然后直接返回结果,Qu...原创 2020-04-29 10:56:43 · 1608 阅读 · 0 评论 -
解决vue-cli脚手架在dev模式下app.js过大的问题
解决vue-cli脚手架在dev模式下app.js过大的问题在开发后台管理系统的时候,devServer部署在服务器端,devServer启动后每次的app.js非常大,达到了36M,每次打开后台管理系统的时候非常慢,下面介绍两种方法来解决:1.启动devServer的GZIP压缩devServer: { port: 3000, compress: true, #启动...原创 2020-04-29 10:45:10 · 2693 阅读 · 0 评论 -
利用Graphics画奥运五环
import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class newTest3 extends JFrame{ private final int OVAL_WIDTH = 80; private final int O转载 2016-12-26 19:13:41 · 1118 阅读 · 0 评论 -
利用双缓冲技术解决图像闪烁
我们看电视时,看到的屏幕称为OSD层,也就是说,只有在OSD层上显示图像我们才能看到。现在,我需要创建一个虚拟的、看不见但是可以在上面画图(比如说画点、线)的OSD层,我称之为offscreen(后台缓冲区)。这个offscreen存在于内存中,我们在上面画图,这个offscreen上面的东西可以显示在OSD层上,需要一个创建这个offscreen的函数,返回这个offscreen的句柄(整型指针原创 2016-12-31 12:36:29 · 2172 阅读 · 2 评论 -
检测点11.3
年初,走亲拜友,祭拜家祖,琐事甚多。学习一事,恒字当头,不敢怠慢,继续复习8086ASM.(1)补全下面的程序,统计F000:0处32个字节中,大小在[32,128]的数据个数。 mov ax,0f000h mov ds,ax mov bx,0 ;ds:bx指向第一个字节 mov dx,0 ;初始化累加器原创 2017-02-01 21:39:10 · 668 阅读 · 0 评论 -
java递归解析easyui treegrid json数据
时间:2017. july .29 sat 21:24ps:最近做一个项目需要解析easyui的treegrid的json数据,网上博客翻遍都没找到这方面资料,于是只有自己来写,花了一下午时间,包括熟悉json格式以及各个函数的用法,最近累成狗 了。对于tree递归是个不错的选择json数据:[ { "id":1, "name":"栏目一",原创 2017-07-29 21:29:53 · 1345 阅读 · 0 评论 -
java 将数据库中的数据转化为easyUI treegrid json格式
最近一直和json打交道,对于树形数据我一般都是递归操作。思路: /** * 需求:将数据库中数据转化为json tree数据格式 * 步骤:1.将数据通过id找到父子关系,建立tree * 2.将tree转换为json格式 * 需要写两个递归函数 */代码: public static Ma原创 2017-07-30 16:47:51 · 1120 阅读 · 0 评论 -
java 自己写的一个自动分析对象的mysql数据库操作工具
功能:利用反射机制,自动将传进来的class进行解析,对象名为表名,属性为字段,提供基本的CRUD,从而建立由对象->到数据库的操作,比传统的DAO模式效率提高了无数倍。代码:package com.bool.utils;import java.io.File;import java.io.IOException;import java.lang.reflect.Field;原创 2017-07-30 16:51:20 · 391 阅读 · 0 评论