- 博客(38)
- 资源 (10)
- 收藏
- 关注
原创 Java中wait、notify、signal的区别
wait与notify、notifyAll: --属于Object类的方法,一个对象只能提供一个同步控制-- 与synchronize搭配使用wait与signal、signalAll:-- 属于Condition类的方法,一个锁可以提供多个Condition同步控制-- 与Lock.lock()、unlock()搭配使用以生产者消费者为例,说明两者的使用情景/** * 生产者父类 */public abst...
2022-01-12 21:28:33 1850
原创 使用java进行SSL证书的签名与签验
一、签名与签验的含义签名:客户端使用私钥对字符串加密,得到一个加密后的字符串签验(签名验证):服务端使用公钥对字符串加密,验证加密后的字符串是否和客户端签名后一样二、创建私钥、证书等文件在linux中执行一下命令,生成所需的各个文件1.手动生成私钥pri.keyopenssl genrsa -des3 -passout pass:123456 -out pri.key 20482.生成pkcs8openssl pkcs8 -topk8 -in pri.key...
2022-01-11 22:34:08 4576 1
原创 struts2 在jdk11环境下报404错误的问题解决
首先说明一下,struts2报404的情况很多,不一定你的问题和我的问题一样。要先判断是不是同一个问题。 我这里的struts2版本是2.5.18。struts2报404,是因为日期格式参数在jdk11环境下解析失败。 假如你在前台有一个日期参数A,A格式是字符串的日期,如“2021-05-01 00:00:00”,然后对应后台接收的参数不是String,而是Timestamp,那这时候struts2就需要进行类型转换。struts2...
2021-07-07 17:33:34 584
原创 sigar在win10+jdk11环境下崩溃
sigar.jar架包在采集cpu信息的时候,如果java的运行环境是win10+jdk11的话,java会崩溃错误信息如下EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000000100147c4, pid=3844, tid=1044
2021-06-07 17:20:24 1087 1
原创 使用SpringAOP来捕获异常
当我们在开发程序的时候,经常遇到方法抛异常,而有时候异常打印出来的信息又不够完整,这时候,可以通过AOP,自动在抛异常的时候将方法传入的参数给打印出来。实现步骤:1.自定义注解作为连接点(当然也可以用其他方式指定连接点,我觉得使用注解是个不错的注意)2.定义一个AOP切面3.在需要捕获异常的方法上面,添加注解自定义注解/** * 异常自动捕获 * 注解在方法上,当方法中抛出异常的时候,打印出方法以及方法的参数,方便排查 * @see ExceptionCatchAop.
2020-05-11 20:41:33 3488 3
原创 使用SpringAOP统计运行时间
实现步骤只需要3步:1.自定义注解2.定义一个AOP切面3.在需要统计时间的方法上,添加注解。自定义一个注解。使用value来定义方法的名称,方便读日志。定义一个阈值,运行时间超过阈值,才会记录下来。/** * 统计方法运行的时间,单位毫秒 * @see CountTimeAop */@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface C.
2020-05-11 20:26:40 517
原创 @Cacheable有效性检查
在使用springboot开发项目的时候,我们经常会用到缓存,一般就是通过注解@Cacheable来进行缓存设置。我们代码是写了@Cacheable,我们以为能生效,但有时候因为一些原因,导致缓存不生效,程序也能正常运行,而我们却蒙在鼓里。如果是redis,虽然可以通过客户端去登录服务器查看有没有缓存,但也十分麻烦。为了省点事,所以想到使用AOP来自动进行缓存检查,如果没有生效,就打印一些信息提示我们。实现步骤很简单,只需要在springboot工程中添加上一个AOP类即可,并在配置文件中添加c
2020-05-11 20:12:23 1388 2
原创 使用AOP+mybatis+分页插件PageHelper分批查询数据库
有时候,数据库中的内容太多,无法一次查询出来,这时候就需要分批查询。如果在每个需要分批查询的地方,都去修改原来的代码,实现分批,这样会很麻烦。而Mybatis的分页插件,正好可以配合AOP来进行无侵入式分页,不需要修改原有的代码。下面介绍一下实现步骤:环境:springBoot+mybatis1.在工程中引入mybatis的分页插件compile("com.baomidou:mybatis-plus-boot-starter:2.3")compile group: 'com.github.p
2020-05-11 19:32:01 869
原创 非侵入式mybatis多数据库切换实践
环境:springboot+mybatis数据库:mysql+oracle需求:一个程序中,一部分数据从mysql中查,一部分数据从oracle中查。使用AOP来实现数据库动态切换参考网上的mybatis动态数据源,并额外扩展使用AOP步骤:1.先定义不同的数据库连接类型,用来表示mysql数据库和oracle数据库,如果还有多个数据库,继续定义(这里cms表示oracle数据库,hms表示mysql数据库)public enum DataSourceTypeEnum { .
2020-05-11 19:04:31 295
原创 记录一次Java内存溢出排查过程
这两天公司的一个程序出现问题,频繁出现内存溢出错误OutOfMemory:GC overhead limit exceeded.虽然知道这个错误的原因是因为Java虚拟机在频繁进行垃圾回收,使用了98%的时间进行垃圾回收,但是实际回收了不到2%的内存。但结合到代码中,还是无法知道为什么会出现这个问题。程序的内存设置为3G,6G都不行,快的话10分钟就内存溢出。没有办法,只能给Java程序加...
2020-04-23 17:32:02 684
原创 Failed to get nestedarchive for entry BOOT-INF/lib/axis2-1.6.2.pom
gradle工程使用bootjar打包出jar之后,使用java -jar命令运行jar,然后程序报错Exception in thread "main" java.lang.IllegalStateException: Failed to get nestedarchive for entry BOOT-INF/lib/axis2-1.6.2.pom at org.spri...
2020-03-23 17:24:23 2621
原创 hibernate报错 Parameter index out of range (2 > number of parameters, which is 1)
今天遇到一个hibernate报错,在查询的时候,报了一个错误org.hibernate.HibernateException: java.sql.SQLException: Parameter index out of range (2 > number of parameters, which is 1)然后我把sql语句和传递的变量都反复查了很多遍,sql里面明明只有一个问号,...
2020-03-13 17:15:07 339
原创 tomcat 启动失败,提示循环引用
tomcat启动的时候,提示如下的错误java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/web...
2020-03-02 15:09:07 606
原创 JAVA数组深拷贝实现代码
在使用org.apache.commons.lang.ArrayUtils进行数组拷贝的时候,发现其只能实现数组的浅拷贝,而且不支持泛型经过改造,我自己重新实现了数组的深拷贝,同时支持多重数组拷贝。因为Object的clone方法声明成protected,在使用泛型的时候,无法调用clone方法,所以我们自己重新定义个克隆的接口package demo;public interf...
2020-01-02 17:15:28 1645
原创 log4j2 配置文件样例
提供一个log4j2的配置文件样例,样例会把日志按照级别,分别打印在各自的文件中,并且按照每天进行划分,每天最多分割10个文件。另外,还有一个单独的日志,会记录特定的日志。样例代码如下import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;public class Main ...
2019-12-30 16:22:40 682
原创 《HeadFirst设计模式》迭代器和组合模式的错误原因分析和解决办法
关于《HeadFirst设计模式》一书中,迭代器和组合模式中有一部分代码是错误的,错误的类是CompositeIterator,使用这个类,再打印素食菜单的时候,有一些菜单会被重复打印。如以下菜单菜单: 早餐:[豆浆,馒头,玉米] 午餐:[烧腊,荷叶饭] 晚餐:[面,粉 加料:[萝卜,咸菜, 加料2:[萝卜2,咸菜2] ] ]在这个菜单中,如果使用书中的代码打印...
2019-12-24 21:11:54 256 1
原创 tomcat启动闪退解决方法
有时候,我们在启动tomcat的时候,tomcat的cmd窗口会闪退,这样我们就看不了闪退原因。这时,我们可以修改tomcat的启动文件来让cmd窗口停下来。操作如下:1.用文本方式打开tomcat的startup.bat文件,在最后一行输入pause2.还是startup.bat,找到call "%EXECUTABLE%" start %CMD_LINE_ARGS%修改...
2019-12-23 18:46:50 1119
原创 Spring security后台使用自定义注解进行权限控制
最近在使用spring security进行编码,在实际使用的过程中,遇到的问题记录一下。背景:在一个项目中,我使用spring security进行权限控制。不仅前台控制页面和按钮的显示,还在后台对没有权限的请求进行过滤。因为每个需要进行权限控制的后台请求,都需要写相同的代码,如果一个两个还好,写多了就开始想能不能减少代码量。先看看没有使用自定义注解的时候是怎么在后台进行权限控制的...
2019-11-25 21:44:00 4805 1
原创 springSecurity重定义Bad credentials信息
Springboot整合了SpringSecurity进行登录控制在实际使用的过程中,发现用户密码如果输错了,界面会提示“Bad credentials”这个提示可能不明显,我们需要重定义这个提示信息这时候,我们可以通过定义messge配置文件来修改1.在代码中配置一个bean,这个bean指定国际化资源文件@Beanpublic ReloadableResour...
2019-11-17 14:25:46 3124
原创 Java多线程模拟运动比赛
Java的并发包中有各种并发类,今天通过这个例子来熟悉使用CyclicBarrier类。CyclicBarrier类就像一个起跑线,定义了赛道的大小,当所有运动员(多线程)同时在起跑线,那么CyclicBarrier就会触发起跑动作。以下是Java使用CyclicBarrier模拟运动比赛的例子新建一个gradle工程,目录结构如下在build.gradle中引入sprin...
2019-08-13 21:42:04 1697
原创 log4j2 自定义日志输出文件
目的最近用到一个项目,需要在一个类中,将日志区分打印到不同的日志文件中比如同一个地方打印两条日志“receive message from port[123]”,"receive message from port[456]"这两条日志的内容一样的,只不过里面的参数port不一样。工程实现在这里,我们使用gradle工程来实现,总体目录如下工程的gradle.build...
2019-08-13 15:21:18 4982
原创 使用idea和gradle打包可运行jar,包含lib架包
首先我们需要知道,使用的是shadow来帮助我们打包jar需要在build.gradle中加入以下几个部分buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } de...
2019-06-11 10:37:58 4095
原创 wireshark过滤端口范围
在wireshark中,如果我们要过滤端口范围,比如过滤1000到2000端口的数据网上给的表达式都是tcp.port < 20000 and tcp.port >10000,然而,我们会发现这个表达式并不能过滤出我们要的数据包,过滤端口范围的表达式无效正确的表达式应该是tcp.dstport < 20000 and tcp.dstport >10000...
2019-05-31 16:33:31 9204
原创 使用java编写snmp inform 发送与接收示例
环境:java+gradle+snmp4j编译器idea进入正题首先,我们编写一个snmp接收类package main.snmp.util;import org.snmp4j.*;import org.snmp4j.mp.StateReference;import org.snmp4j.mp.StatusInformation;import org.snmp4j.sm...
2019-05-13 20:08:39 1505 1
原创 使用idea创建gradle的springboot工程
这篇文章给没有使用过idea,gradle,springboot的人参考一下怎么使用这三个创建工程。idea软件的安装,gradle的安装和环境配置我就不在这里写了。注意jdk的版本需要是1.8,否则springboot和idea可能用不了首先我们打开idea,创建一个新的工程选择gradle中的java,选择jdk版本为1.8点击next,填写groupId和artifa...
2019-05-12 14:55:32 2083
原创 gradle创建springboot的helloworld工程的配置文件
buildscript { repositories { maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' } } dependencies { //这里引入了spring-boot的版本管理,所以后面引入的sprin...
2019-05-12 14:45:19 556
原创 Jboss4.2之前版本修复安全漏洞
jboss作为一个老古董,有些服务是已经部署了十年以上,后来漏洞不断出现,就要不断升级修复漏洞jboss在4.0.5版本之前,会引入tomcat组件jbossWeb-tomcatxx.sar。但是在4.0.5之后,换成了jboss-web.deployer。特别想吐槽的是,jboss4/5/6/7各版本之间差别很大,boss开发人员完全不考虑外场应用的部署情况,各版本jboss之间无法直接...
2019-04-25 16:04:51 1319 1
原创 hibernate调用save方法,不update而是create一条新纪录
今天,在调用hibernate的save方法遇到一件奇怪的事:使用load方法从数据库中读取出一个对象,然后更新这个对象的一个字段,再重新save回数据库,按道理,hibernate会更新数据库中的记录,而不是新建一条记录。但是,hibernate就是一直插入一条新的记录。//正常代码User user = session.load(User.class, Integer.valueOf(...
2018-11-18 18:41:31 790
原创 struts2.5.16新版本升级
这次struts2版本升级,也是因为要修复安全漏洞CVE-2018-1327。在旧版本升级新版本的过程中,遇到了不少问题,在这里记录一下。struts2.5.16版本下载链接:http://mirrors.hust.edu.cn/apache/struts/2.5.16/struts-2.5.16-all.zipjackson-dataformat-xml-2.1.2.jar下载链接:http:/...
2018-04-12 22:40:08 8613 2
原创 ie11下页面显示不正常,hight获取不正确
在前一阵子,公司的网站需要兼容ie11。在刚开始的时候,网站在ie11浏览器下显示会有异常,本应该是填充满整个浏览器的页面,现在高度只有250左右。刚开始以为是html元素的css设置不对,一直在改样式,添加了各种height=100%都不能解决问题,后来使用代码获取元素的高度,发现这个高度一直是250,但是只要页面呈现出来后,再来获取高度,高度就变成正常了。然后我尝试着在onload事件里面
2015-12-02 20:16:31 2667
原创 关于jsp中的Unable to compile class for JSP解决
jsp 读取xml 出现错误The type org.gjt.xpp.XmlPullParserException cannot be resolved(或Unable to compile class for JSP)的解决办法
2015-12-02 20:06:32 9619
原创 NorthStar选择MultiFLEX2-AVR控制器时无法编译的解决办法
在使用NorthStar图形化编译器的时候,我选择了MultiFLEX2-AVR控制器,然后在编译工程的时候,总是提示make:Interrupt/Exception caught (code = 0xc00000fd, addr = 0x421963),然后就编译失败了。后来发现我的NorthStar软件安装路径是C:\Program Files (x86)\Uptech。因为安装路径中包含
2015-03-11 23:09:42 2146 3
转载 解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused
由于现在google网址被墙,使用SDK Manager安装SDK的时候,无法下载相对应的组件,并且提示Connection to https://dl-ssl.google.com refused。网上提供的修改host文件的方法已经失效了,我找了很久,找到以下的方法,简单,有效。1.启动 Android SDK Manager ,打开主界面,依次选择「Tools」、「Opt
2015-02-09 17:54:46 1635
原创 iframe中内嵌div的width为100%出现的不兼容现象
今天发现,一个内嵌在iframe中的div,当样式宽度设置为width=100%时,出现ff和ie不兼容的情况。ff中这个div宽度超过iframe的宽度而ie中这个div宽度不足iframe的宽度经过百度,发现是因为不同浏览器中width=100%有不同的定义。ff中width=100%是整个iframe的外部宽度,也就是iframe宽度为多少,div宽度也是多少
2014-05-10 00:33:09 3840
win10 .NET Framework 3.5功能安装 SXS安装包
2020-09-18
apacheds-2.0.0-M20.zip
2020-01-09
static.zip
2019-11-08
spring-boot-cli-2.1.5.RELEASE-bin.zip
2019-05-30
jboss4版本修复Apache Tomcat DIGEST身份验证多个安全漏洞(CVE-2012-3439)升级包
2019-04-25
ecilpse启动计时插件及其代码
2018-11-03
CentOS7下的libcrypto.so.6+libexpat.so.0+libssl.so.6文件
2018-11-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人