- 博客(86)
- 资源 (4)
- 收藏
- 关注
原创 HuTool工具包实现Excel文件的上传、下载以及修改文件名称
加载依赖文件 <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.6.1</version> </dependency> <dependency> .
2021-07-02 18:52:10
6656
1
原创 解决方法 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath
场景Springboot 2.5.1集成 mybatis-plus-boot-starter 3.3.2 报错Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you have database settings to be loaded from a particular profile you may need .
2021-06-24 21:04:30
16869
原创 Java实现链表(Java算法和数据结构总结笔记)[5/20]
什么是链表数组和链表是数据结构的基础,链表是物理存储单元上非连续的、非顺序的存储结构,它是由一个个结点,通过指针来联系起来的,其中每个结点包括数据和指针
2021-06-05 16:29:13
310
2
原创 Java数组实现循环队列(Java算法和数据结构总结笔记)[4/20]
队列是一种特殊的线性表,循环队列是将向量空间想象为一个首尾相接的圆环。1、队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。2、循环队列是将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列。在顺序队列中,当队尾指针已经到数组的上界,不能再有入队操作,但其实数组中还有空位置,这就叫做“假溢出”,解决假溢出的途径----采用循环队列。...
2021-06-03 13:44:50
1384
原创 数据结构数组、栈和队列(Java算法和数据结构总结笔记)[3/20]
数组的概念数组(Array)是有序的元素序列。[1]若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式。[1]这些有序排列的同类数据元素的集合称为数组。数组是用于储存多个相同类型数据的集合...
2021-05-31 13:23:01
1304
原创 选择排序和插入排序(Java算法和数据结构总结笔记)[2/20]
选择排序两层循环数组,从第二层数组中找到最小的一个元素与第一层数组中的第一个元素交换; 接下来第一个元素外,从剩下未排序的数组序列中找到最小值,再与数组第二个元素交换; 总共N-1趟,每趟都从第二层数组中找到未排序的最小值,放到第一层已排序的数组序列后面。代码实现 public static void selectSort1(int[] arr){ // 遍历数组 for (int i = 0; i < arr.length; i++).
2021-05-26 13:07:24
1643
7
原创 Mybatis分页插件Pagehelper不生效的原因汇总
Pagehelper在SpringBoot2中的使用1、在pom文件正确引入pagehelper-spring-boot-starter <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> .
2021-05-25 10:52:05
20125
6
原创 线性查找算法(Java算法和数据结构总结笔记)[1/20]
简单的线性查找算法/** * 线性查找算法 */public class LinearSearch { /** * 获取target在数组中的下标 */ public static int linearFind(int[] data,int target){ for (int i = 0; i < data.length; i++) if (data[i] == target) .
2021-05-24 16:15:18
2018
5
原创 Executors和ThreadPoolExecutor详解
概述在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了资源的开销。而线程池不允许使用Executors去创建,而要通过ThreadPoolExecutor方式,这一方面是由于jdk中Executor框架虽然提供了如newFixedThreadPool()、newSingleThreadExecutor()、newCachedThreadPool().
2021-05-08 11:25:15
4518
原创 Redis的数据结构和底层实现原理
Redis的数据结构和底层实现原理、字符串(String)、字典(Hash)、列表(List)、集合(Set)、有序集合(Zset)、基数统计(HyperLogLog)、地理地图(GEO)、流(Stream)
2021-04-15 16:03:00
3250
原创 MySQL从入门到精通(上)基础篇
MySQL的使用注:之前文章在ProcessOn Mind上整理的,发表在CSDN上,需要费用转换,所以,直接上图!
2020-10-30 11:48:01
3731
原创 RocketMQ详解入门到实战总结(一)
1、为什么要使用RocketMQRocketMQ是一款分布式、队列模型的消息中间件,支持严格的消息顺序,优点:应用解耦:如果系统A、系统B、系统C,都直接依赖于系统X,那么系统之间的耦合度就非常高;如果在系统X之前加上RocketMQ,就实现了系统之间的解耦。流量削峰:如果用户的每次访问都是直接连接到应用上的话,服务器的承受的访问压力就会非常大,达到服务器的承受上限时就可能会崩溃...
2020-04-29 12:16:14
5388
原创 解决eclipse启动could not find tools.jar in the active jre错误
错误提示简要: could not find tools.jar in the active jre解决:复制C:\Program Files\Java\jdk1.8.0_191\lib\tools.jar 到C:\Program Files\Java\jre1.8.0_201\lib 文件夹下
2020-03-12 20:02:59
2605
原创 Springboot集成WebSocket+Thymeleaf+Echarts完成数据的实时推送
完成效果图:项目准备提要:<!-- 分页插件 --><dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <...
2019-12-06 11:59:28
5201
2
原创 AngularJs 多选单选以及取消选中复选框时从数组中删除值
复选框获取值和移除值html页面实现:<tr ng-repeat="item in dataList.invdata" ng-class="{'disabled':item.status == -1}"> <td> <div class="checkbox"> <label> ...
2019-11-25 16:08:35
1109
原创 Java知识点汇总(一)
1、varchar与char的区别varchar存储可变长字符串,小于255字节时需要1个额外字节(大于255需要2个额外字节)存储长度,最大长度为65532字节(所有列总和);char存储定长(right padding),读取时会截断末尾空格,长度最大为255字符;char 与varchar都是用来存储字符串的,只是他们的保存方式不一样,char有固定的长度,而varchar属于可变长...
2019-10-24 10:35:23
313
原创 使用HttpServletRequestWrapper向Filter过滤器中的ServletRequest对象添加额外的参数
先看一下最后的执行结果:发起请求添加额外参数后的返回结果请求的接口及控制台打印的信息 @PostMapping("/user/userInfo") public JSONObject findUserInfo(@RequestBody JSONObject jsonObject){ logger.info("最终请求的参数:【{}】", j...
2019-09-21 13:18:06
4389
原创 检测线程是否执行完成并获取线程Thread的返回值
1、使用executor.isTerminated()判断线程池中的线程是否执行完成/** * @author chuan * @title: ThreadResultTest * @description: TODO(获取Thread的返回值) */public class ThreadResultTest implements Runnable{ /** *...
2019-08-29 17:45:39
2842
原创 计算表达式JexlEngine和ScriptEngine执行JS脚本的使用
1、JexlEngine计算表达式/** * @author chuan * @title: JexlEngineTest * @description: TODO(JexlEngine表达式判断) */public class JexlEngineTest { public static Object convertToCode(String jexlExp, Map...
2019-08-29 14:48:20
6594
1
原创 使用Mybatis的@MapKey注解返回Map集合案例
1、Mybatis@MapKey注解的使用场景在多值查询的时候,通常要把方法返回类型设置为Map<String,Object>类型,Mybatis为我们提供了另一种解决方式,通过K-V的形式将查询结果保存在Map中,这种实现方式只需要在方法上标注为@Mapkey即可。2、代码@Mapperpublic interface TbUserInfoMapper { ...
2019-08-29 14:25:11
11797
原创 Mybatis详解(二)Mybatis XML方式的基本用法
1、使用XML方式MyBatis的真正强大之处在于它的映射语句,由于他的映射语句异常强大,映射器的XML文件就显得相对简单。而MyBatis3.0相比2.0版本的一个最大变化,就是支持使用接口的来调用方法。我们使用的是SqlSession通过命名空间调用MyBatis方法,我们需要用到命名空间和方法id组成的字符串来调用相应的方法。而当参数多于1个的时候,需要将参数放到一个Map对象中。...
2019-08-29 11:04:52
1638
1
原创 Spring4详解系列(十)通过Spring和JDBC征服数据库
1、了解Spring的数据访问异常体系这里有一个关于跳伞运动员的经典笑话,这个运动员被风吹离正常路线后降落在树上并高高 地挂在那里。后来,有人路过,跳伞运动员就问他自己在什么地方。过路人回答说:“你在离地 大约20尺的空中。”跳伞运动员说:“你一定是个软件分析师。”过路人回应说“你说对了。你是 怎么知道的呢?”“因为你跟我说的话百分百正确,但丝毫用处都没有。这个故事已经听过很多遍了,每次...
2019-08-26 11:00:35
639
原创 Spring4详解系列(九)保护Web应用Spring Security的使用
1、什么是Spring SecuritySpring Security是为基于Spring的应用程序提供声明式安全保护的安全性框架。Spring Security提供了完整的安全性解决方案,它能够在Web请求级别和方法调用级别处理身份认证和授权。因为基于Spring框架,所以Spring Security充分利用了依赖注入(dependency injection,DI)和面向切面的技术。...
2019-08-19 14:13:31
4387
原创 基于Redis、Redission、ConcurrentHashMap实现企业级分布式锁
1、为什么需要分布式锁在微服务系统中,一个请求存在多级跨服务调用,往往需要牺牲强一致性老保证系统高可用,比如通过分布式事务,异步消息等手段完成。但还是有的场景,需要阻塞所有节点的所有线程,对共享资源的访问。比如并发时“超卖”和“余额减为负数”等情况。分布式锁特性:排他(互斥)性:在任意时刻,只有一个客户端能持有锁。 安全性:只有加锁的服务才能有解锁权限。 阻塞锁特性:即没有获取到...
2019-08-16 17:38:35
5447
原创 Spring4详解系列(八)使用Spring Web Flow
1、什么是Spring Web FlowSpring Web Flow 是 Spring 的一个子项目,其最主要的目的是解决跨越多个请求的、用户与服务器之间的、有状态交互问题。最新版本为 2.0 ,相比于 1.x 版的 Spring Web Flow ,有以下几个值得注意的新特性。(现在Java中还不支持Spring Web Flow的配置,我们别无选择,只能在XML中配置)2、Spr...
2019-08-16 10:16:48
6968
原创 Spring4详解系列(七)SpringMVC的高级技术
1、自定义DispatcherServlet的配置SpitterWebinitializer实现了AbstractAnnotationConfigDispatcherServletInitializer抽象类,并重写了三个必须的方法,实际上还可对更多方法进行重写,以便实现额外的配置。如对customizeRegistration方法进行重写,该方法是AbstractDispatcherS...
2019-08-15 10:57:55
838
原创 Mybatis详解(一)配置Mybatis集成SpringBoot
1、在pom.xml配置文件中引用常用的Jar包的坐标<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoc...
2019-08-14 17:18:08
1082
原创 Spring4详解系列(六)渲染Web视图
1、理解视图解析将控制器中请求处理的逻辑和视图中的渲染实现解耦是Spring MVC 的一个重要特性。如果控制器中的方法直接负责产生HTML的话,就很难在不影响请求处理逻辑的前提下,维护和更新视图。控制器方法和视图的实现会在模型内容上达成一致,这是两者的最大关联,除此之外,两者应该保持足够的距离。但是,如果控制器只通过逻辑视图来了解视图的话,那Spring该如何确定使用哪一个视图实现来渲染模...
2019-08-14 10:49:48
984
原创 Spring4详解系列(五)构建Spring Web应用程序
1、Spring MVC的请求流程在请求离开浏览器时,会带有用户所请求内容的信息,至少会包含请求的URL,但是还可能带有其他信息。请求的第一站是前端控制器DispatcherServlet。SpringMVC所有的请求都会通过这个前端控制器,前端控制器是常用的Web应用程序模式,在这里是一个单实例的Servlet将请求委托给应用程序的其他组件来执行实际的处理。 Dispatcher...
2019-08-13 11:50:36
881
原创 Spring4详解系列(四)面向切面的Spring
1、什么是面向切面编程AOP(Aspect-Oriented Programming), 即面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) 相辅相成, 提供了与 OOP 不同的抽象软件结构的视角,也可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立...
2019-08-12 17:16:35
936
原创 Spring4详解系列(三)高级装配
1.环境与profile不同的环境下,应用程序的配置项也不同,例如数据库配置、远程服务地址等。以数据库配置为例子,在开发环境中你可能使用一个嵌入式的内存数据库,并将测试数据放在一个脚本文件中。例如,在一个Spring的配置类中,可能需要定义如下的bean:@Configurationpublic class Spring4ConfigTest { //@Bean(des...
2019-08-09 09:24:52
1014
原创 Spring4详解系列(二)装配Bean
1.Spring提供了三种装配bean的方式:Spring容器负责创建应用程序中的Bean并通过DI来协调这样对象之间的关系。Spring主要提供了三种主要的装配机制:在XML中进行显示配置 在Java中进行显示配置 隐式的Bean的发现机制和自动装配2.自动化装配BeanSpring从两个角度来实现自动化装配:组件扫描(Spring自动发现应用中上下文所需要的创建的...
2019-08-08 11:24:01
1003
原创 Spring4详解系列(一)Spring之旅
1.Spring的核心Spring可以做很多事,提供了很多企业级开发的功能,但是这些功能的底层都依赖于它的两个核心特性:①DI(Dependency Injection)依赖注入,指容器复制创建和维护对象之间的依赖关系,而不是通过对象本身复制自己的创建和解决自己的依赖。控制反转是通过依赖注入实现的。依赖注入能够让相互协作的软件组件保持松耦合。其实IOC和DI在Spring中是一个等...
2019-08-08 09:35:27
1310
原创 配置Hystrix的隔离策略、解决RequestContextHolder.getRequestAttributes()空指针异常
Hystrix有隔离策略和RequestContextHolderHystrix有隔离策略包括:THREAD和SEMAPHORE当隔离策略为THREAD时,是没办法拿到ThreadLocal中的值的。例如下面这段代码,我要使用Feign调用某个远程的方法,但是获取的(RequestAttributes requestAttributes = RequestContextHolder....
2019-07-26 18:38:50
11333
1
原创 为什么说ArrayList是线程不安全的,使用并发集合类解决集合不安全问题
点开ArrayList 的 add 方法的源码 /** * Appends the specified element to the end of this list. * * @param e element to be appended to this list * @return <tt>true</tt> (as...
2019-07-19 16:13:59
2920
2
原创 JAVA中使用Google Guava的CacheBuilder类写一个定时缓存
关于CacheBuilderCacheBuilder是Guava用于创建LoadingCache、Cache实例的构建类导入Maven依赖<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <...
2019-07-16 16:34:25
3239
原创 一文看透Java回调机制
核心点拨1. 声明一个回调接口2. A类中要实现这个声明接口(用于接收B类的返回结果)3. A类中要调用B类的一个有参数为(CallBack callback)的方法(可以理解为向B类传输消息的通道)4. B类要实现一个有参数为(CallBack callback)的方法(用于调用A类中实现的回调方法,返回数据)代码实例(一)声明一个回调接口/** * @C...
2019-03-14 18:12:47
1224
原创 SpringBoot集成Netty+WebSocket聊天案例
在SpringBoot项目中启动NettyServicepublic class ApplicationStart implements CommandLineRunner { private static Logger logger = LoggerFactory.getLogger(ApplicationStart.class); @Autowired private ...
2018-12-10 19:15:30
6168
8
SyntaxHighlighter代码格式化高亮插件
2018-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅