- 博客(46)
- 收藏
- 关注
原创 分布式任务调度平台xxl-job生产实际应用
1.背景之前项目中存在不少定时任务,一般是统计和转发任务,在凌晨或者指定时间内,对数据进行统计然后转发到客户服务器中,原本技术栈使用的是ssm项目,所以定时业务都写在里面,随着业务扩展,定时任务不断增加,时而出现任务异常导致数据没有按时处理,程序状态也无法监控,随之引进xxl-job解决。2.主角XXL-JOBXXL-JOB是一款分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用,有自带的可视化界面、监控定时任务状况、实时更新任务状
2021-12-03 20:00:13
1034
原创 CompletableFuture实际工作中使用提高业务处理效率
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-11-24 11:20:53
857
原创 通过parallelStream多线程异步任务执行提高代码运行效率
1.前言日常工作中,我们大部分代码都是串行化运行的,在目前主流的springboot还是ssm中,一个请求一般对应一个线程去处理,假设这个接口处理的业务量比较大时,会导致响应特别慢,这时候我们可以使用并行的思想去优化代码,即在串行化代码块中,将大量业务的处理交给多个线程去处理,提高运行效率。2.主角parallelStreamparallelStream提供了流的并行处理,它是Stream的另一重要特性,其底层使用Fork/Join框架实现。简单理解就是多线程异步任务的一种实现。3.parallel
2021-11-22 15:25:31
2228
原创 springboot下shiro和jwt的整合使用
首先shiro做安全框架,将JWT整合到shiro的认证和授权中进行使用,最终的目的就是用户在进行登录的时候,验证成功则返回一个token,后面该用户可以通过这个token是访问自己有权限的接口,启动缓存功能,只有第一次认证需要查询DB,后续访问都是访问缓存(分两种,单机版应用使用EhCache,分布式使用redis)整合思路:1.构建一个springBoot项目,引入核心依赖并展示核心代码目录 <!--引入ehcache依赖(单机版本缓存用) --> <depen
2021-06-18 21:34:06
2459
3
原创 使用springMVC实现上传下载图片
上传多张图片代码:public static final String PICTUREURL = "/mnt/pic/";//图片路径public static final String PC_PICTUREURL = "E:\\pic";//图片路径@RequestMapping("/uploadPics.do") public RetObj uploadPics(@Param("file") MultipartFile[] files,@Param("trendId") Integer
2020-05-16 10:30:08
1123
原创 linux常用指令
记录一些常用的类型指令,以备不时之需常用基本命令-进程类centos6和centos7有稍微的不同centos6:用方便统一的管理方式(常用的方法)service 服务名 startservice 服务名 stopservice 服务名 restartservice 服务名 reloadservice 服务名 status查看某个服务 chkconfig --list|grep...
2020-02-05 16:13:07
154
原创 MyBatis时间判断使用年月日
数据库使用的是Oracle,这里简单展示一下代码就能明白用法 <if test="applyStartDate != null and applyEndDate !=null"> AND TO_DATE(TO_CHAR(SU.CREATE_DATE,'yyyy-mm-dd'),'yyyy-mm-dd') BETWEEN TO_DATE(...
2019-09-18 00:14:02
2646
原创 JAVA数据结构与算法的学习——折半查找和插值插值
折半查找又称二分查找,前提是线性表中的记录必须是关键码有序(通常从小到大有序)思路图解:实现代码:public class Test { static int Binary_search(int[] a, int key) { int low; // 定义最低位下标 int high; // 定义最高位下标 int mid; // 中间位 low = 0; hi...
2019-08-20 23:13:02
193
原创 Spring boot 下WebSocket的使用
前端js代码:<script> var websocket = null; if('WebSocket' in window) { websocket = new WebSocket('ws://localhost:8080/sell/webSocket'); }else { alert('该浏览器不支持websocket!')...
2019-07-06 22:34:41
124
原创 Spring boot 下redis缓存的使用@EnableCaching、@CacheConfig、@Cacheable、@CacheEvict、@CachePut
使用redis缓存数据库首先先在项目Application类上添加@EnableCaching注解,作用是使缓存生效在要用缓存的类上添加@CacheConfig(cacheNames = “product”),相当于作用域是product在类中要使用缓存的方法上添加@Cacheable(key = "#sellerId",condition = "#sellerId.length() &g...
2019-07-05 11:46:22
1888
原创 秒杀功能(分布式锁和synchronized关键字的使用)
环境:Spring Initialize创建的SpringBoot项目引入redis依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data...
2019-07-04 21:35:30
1411
原创 Postman测试接口传递对象参数
url:使用的是post方式请求在Headers设置:在Body写入对象信息,主要红线的地方:后台:这样后台就能成功接收到参数了
2019-06-27 09:33:47
51722
3
原创 设计模式学习--代理模式
一个接口,两个类体现代理模式接口:public interface BuySpicyStrips { public void buySpicyStrips() ;}代理类://代理类public class Friend implements BuySpicyStrips { private BuySpicyStrips buySpicyStrips; public F...
2019-06-24 22:44:18
103
原创 JAVA数据结构与算法的学习——冒泡排序
冒泡排序大致分为三种第一种: int[] a = {9,1,5,8,3,7,4,6,2}; /** * 第一种冒泡(降序) * 思路是将最大的数换到最前面位置,依次类推 * 严格上来说不是冒泡排序,因为没有冒泡的特点。。。 */ for(int i =0;i<a.length;i++ ) { for(int j =0;j<a.length;j++) {...
2019-06-24 22:35:49
178
原创 测试时java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use
java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=…) with your test原因是springboot启动类没找到,你需要把启动类在根目录下,不能放到其他包中...
2019-06-16 10:28:28
202
原创 IDEA常用快捷键+模板
1 执行(run) alt+r2 提示补全 (Class Name Completion) alt+/3 单行注释 ctrl + /4 多行注释 ctrl + shift + /5 向下复制一行 (Duplicate Lines) ctrl+alt+down6 删除一行或选中行 (delete line) ctrl+d7 向下移动行(move statement down) alt+d...
2019-06-10 23:20:15
231
原创 linux下redis的相关配置(IP访问、打开端口,jedis使用等)
redis安装:redis是C语言开发,安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境。如果没有gcc环境,需要安装gcc:yum install gcc-c++第一步:先把redis-3.0.0.tar.gz拷到/usr/local下第二步:解压文件tar –zxvf redis-3.0.0.tar.gz第三步: 编译redis (编译,将.c文件编译为.o文件...
2019-06-07 17:50:38
11592
原创 shiro多权限@RequiresPermissions注释
@RequiresPermissions多权限是分两种的,这里要注意第一种:必须全部符合(默认不写或者在后面添加logical = Logical.AND)@RequiresPermissions(value={“studentMan:find_record_list”,“teacher:find_record_list”})上面这种情况是默认当前对象必须同时全部拥有指定权限第二种:符合其...
2019-06-01 08:31:28
4432
原创 tomcat配置redis管理(缓存)session包括设置session在redis中的生命周期
原本是tomcat管理session,现在配置redis来管理session安装redis缓存数据库,修改配置文件vi /etc/redis.conf将bind的127.0.0.1修改为本机地址(修改成图片那样),否则只能本机访问了导入redislib中三个jar包到tomcat所在目录下lib中在\tomcat\conf\context.xml中加入两行配置代码<Valve ...
2019-05-31 09:21:45
2655
原创 Redis学习-redis命令
redis命令-String命令【重点】赋值:set key value:设定key持有指定的字符串value,如果该key存在则进行覆盖操作。总是返回”OK”如果赋予相同的key,新的value会覆盖老的value取值:get key:获取key的value。如果与该key关联的value不是String类型,redis将返回错误信息,因为get命令只能用于获取String value...
2019-05-27 17:01:37
194
原创 linux安装-CentOS
下面用图片演示安装过程,虚拟机用的是VMware Workstation,需要做选择时我都会用红色线标注点击自定义硬件注意红色线点击使用ISO映像文件,ISO文件为CentOS-6.5-i386-bin-DVD1.iso,可以百度下载按回车按键盘选择右边,然后回车点击左边是,忽略所以数据给你的计算机命名点击配置网络自动连接勾上确保IPv4里面...
2019-05-26 10:10:20
210
原创 SSM项目搭建所需要的jar包和环境准备
下面是SSM项目中所用上的jar包,数据库驱动为mysql| 下面是环境准备,主要有七个配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...
2019-05-26 09:29:50
3791
原创 java.io.NotSerializableException: XXX
在服务器重启的时候报错一般的服务器停止的时候都会将session钝化,将其写入到文件中,并且在重新启动的时候再将其锐化,恢复重启前的session信息,所以如果你放入session中的类没有实现jNotSerializableException的话,服务器启动的时候就会出现这个异常所以要在对应po类上实现Serializable,还要生成serialVersionUID还有一种情况就是开...
2019-05-25 21:38:54
714
原创 shiro框架学习5--自定义realm检查用户拥有权限
shiro框架学习记录,不对之处还请各位不吝赐教第一步:自定义permissionRealm继承AuthorizingRealm 重写getName、doGetAuthorizationInfo、doGetAuthenticationInfo三个方法第二步:配置ini文件第三步:测试注意第一条红线,为ini文件路径,名字也不能错结果:该用户的确有role1角色和user:de...
2019-05-14 20:06:41
311
原创 云计算Tengine学习-用户认证
云计算Tengine学习-用户认证,在访问nginx服务器时,需要进行账号密码的认证官方文档:安装httpd创建保存账户密码文件/opt/userpasswd 账号lw 密码123456打开**/opt/userpasswd 文件 ,可以看到账号为lw,密码是已经加密过的**接下来对nginx进行配置在server中的location中,配置两条红色线代码,第一条相当于一...
2019-05-14 15:30:57
199
原创 云计算Tengine学习-IP访问控制
云计算Tengine学习-IP访问控制IP访问控制可以限制一些IP访问的你nginx服务器,相当于禁止他们访问,deny all 是禁止所以IP访问,allow IP 是允许所设定的IP访问,不设置相当于所以IP都可以访问,这里演示禁止自己访问nginx服务器编辑配置文件在server下的location中,添加红色一条代码,该代码作用为禁止该IP访问服务器(我自己的IP是192.16...
2019-05-14 14:49:31
269
原创 shiro框架学习4--ini方式检查用户拥有角色和对应权限
shiro框架学习记录,不对之处还请各位不吝赐教第一步,配置文件shiro-permission.ini第二步,测试用户是否拥有角色红线的依次意义:配置文件名、第一套API(主要是返回true,false),第二套API(抛异常)第三步,结果异常的显示在JUnit里,就不放出来了,大家可以自己测试一遍...
2019-05-14 12:01:10
187
原创 shiro框架学习3--自定义加密realm登录登出
shiro框架学习记录,不对之处还请各位不吝赐教第一步,自定义realm,重写三个方法getName、doGetAuthorizationInfo、doGetAuthenticationInfo第一条红线是模拟数据库拿出来的密码(已经是加密后的密文)第二条红线是加密算法中的“盐”第二步,配置文件这里使用的是md5算法加密,散列次数为3,黑色线值得的自定义加密realm的位置第三步,...
2019-05-14 11:14:56
277
原创 shiro框架学习2--登录登出流程
shiro框架学习记录,不对之处还请各位不吝赐教登录登出流程的分析通过打断点在subject.login(token)代码上源码的追踪就是自己在debug模式下一步一步执行下去,这里就不列出详细过程整个过程用一张图概括...
2019-05-14 10:54:55
403
原创 shiro框架学习1--使用ini完成认证
shiro框架学习记录,不对之处还请各位不吝赐教创建maven工程项目目录,没用上的暂时不用看导入需要用的jar包,无需自己手打,可以在https://mvnrepository.com/ 上查找到对应的版本号,然后复制粘贴shiro.ini文件,主要放用户的账户密码配置文件路径不能错,登录成功会打印true,失败则是false登录成功的结果错误分两种情况,分别是没有找到该...
2019-05-13 18:19:10
121
原创 云计算Tengine学习-session一致性会话保持(memcached缓存数据库)
云计算Tengine学习-session一致性会话保持(memcached缓存数据库),继上次提供了一种不可靠发解决方法,这次使用一种可靠性的memecached缓存数据库来解决session一致性问题,原理主要是,memcached将tomcat的session集中管理,即服务器在分发请求到了一台机器的时候,会先去session缓存数据库查看是否有该用户的session,如果有则取出,否则新建一...
2019-04-29 17:36:40
309
原创 云计算Tengine学习-session一致性会话保持(粘滞模式)
云计算Tengine学习session一致性会话保持(粘滞模式)是一种解决session一致性的方法,其原理是tengine提供了cookie保持功能,基客户端访问一台服务器后,始终指向该台服务器,相当于粘滞在一起,从而保证了session一致如图:在HTTP上下文中加入红线的配置配置相当简单,就这两句,然后重启nginx访问IP此时刷新应该会在192.168.17.3:8080和19...
2019-04-29 16:06:28
577
原创 云计算Tengine学习-keepalived的高可用问题解决
关于云计算的keepalived的高可用问题解决场景主要是后端服务器有多台,但是前端服务器(nginx)只有一台,这样的可用性就不高,也不可靠。因为如果前端服务器宕机了,这样会导致所以后端服务器无法工作,即整个系统都无法工作,为了保证系统能够正常工作,keepalived是应用是一个很好的解决方法,就是配置两台以上包括两台前端服务器,这里前端服务器指的是物理服务器。以两台为例,让其中一台前...
2019-04-28 14:14:52
476
原创 云计算Tengine学习-反向代理
关于云计算的反向代理Tengine提供了在运行时动态解析upstream中server域名的功能,反向代理即访问Tengine服务器,它会转发到其他路后端服务器我们先看看官方文档我本地准备了两台服务器,分别安装的tomcat,为了区分这两台服务器,所以对两台tomcat服务器的首页进行了简单的修改,修改其webapp/ROOT/index.jsptomcat1如图:其他标签不看先,主...
2019-04-26 12:27:25
376
原创 云计算Tengine学习-检查后端服务器的健康状况
关于云计算的健康检查Tengine提供主动式后端服务器健康检查的功能。先来看看官网的教程,一切以官网为主,不对之处还请各位不吝赐教对一些参数的意义,看文档会更好,然后我本地的设置就稍微删除了一些无关紧要的参数,下面是我的配置(对该目录/opt/sxt/soft/tengine-2.1.0/conf/nginx.conf进行配置,这是我的路径,这个要按自己实际路径来)图片的上下文是ht...
2019-04-25 23:53:39
412
原创 org.apache.ibatis.binding.BindingException Parameter 'stu_num' not found.已解决
在项目开发过程中遇到这样的问题根据业务需要对数据库进行更新,但是报错了(从日志上也能看出是传进的参数拿不到)先看看Dao层的配置先经过检查,好像没啥问题呀,参数名称类型都没错,怎么报找不到参数呢,上面的方法没报错正常运行,为啥下面的方法就报错了,只是后面的方法多了一个参数而已,后面自己百度了一下,发现问题就是在后面多了一个参数才会报错,上面的方法参数为一个对象或者一个参数时,它会按#{}...
2019-04-24 23:17:45
11873
原创 JAVA数据结构与算法的学习——单链表的实现
今天用JAVA实现数据结构中的单链表,思路就不重复了,大家仔细品味代码。第一步,在包里建立LinkList类,用于定义链表和一下操作链表的方法LinkList类:public class LinkList { public Node head; //头引用 public Node rear; //尾引用 public Node point;//临时引用 public int len...
2019-03-08 22:54:29
329
原创 JAVA数据结构与算法的学习——顺序表的实现
今天用JAVA实现数据结构中的顺序表,思路就不重复了,大家仔细品味代码,不对之处还请各位不吝赐教。第一步,在包里创建一个SqList类SqList类代码如下:public class SqList { protected int[] data; protected int last;//数组最后一位下标 public SqList() { super(); } public...
2019-03-04 21:53:45
428
原创 JAVA数据结构与算法的学习——判断数组中第K大的元素
我们来讲讲判如何判断数组中第K大的元素这个经典问题,不对之处还请各位不吝赐教。看到这个问题,大家应该会觉得很简单,来个冒泡排序然后取第K位元素不就得了,嗯,对的,的确可以这么做,如果你有看我上一篇文章的话,你应该会考虑一下如何降低算法的复杂度。冒泡排序用法:for循环嵌套一个for循环,复杂度就是n的平方资源图:从资源图可以看出,n的平方随着内容的增加系统资源的利用可直冲冲的升,显然...
2019-01-20 21:04:43
368
原创 JAVA数据结构与算法的学习——求和
在数据结构与算法中,我们来讲讲求和这个经典问题,不对之处还请各位不吝赐教。求:1+2+3+…+100的和想必大家都会想这个太简单的了吧,用一个for循环不就得了,的确是可以这样但是你有想过这样做的复杂度是多少吗?我们算法的精湛就是要复杂度越小越好,资源利用的越少越好先上for循环的代码://求1+2+3+....+100的和public class Main1 { public st...
2019-01-19 21:05:09
653
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人