Java
woshi811
简单
展开
-
log4j2 远程代码执行漏洞
本地稳定复现 无效的措施3台机器2win 1linux提供思路 关闭lookup将log4j.xml里面的 %m %msg %message替换为%message{nolookups}%msg{nolookups}%m{nolookups}原创 2021-12-10 17:37:10 · 5369 阅读 · 0 评论 -
LRU的实现(根据LinkedHashMap)
public class LRUCache<K, V> extends LinkedHashMap<K, V> { private static final long serialVersionUID = 8133043885074421707L; private final int CACHE_SIZE; public LRUCache(int cacheSize) { //true 访问多的移动到链表尾部 false插入顺序 super((int) Math.原创 2020-10-19 11:44:22 · 180 阅读 · 0 评论 -
jvm GC 各个分代内存大小配置
回忆一下日志工具上网搜下各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。活跃数据的大小是指,应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full GC后堆中老年代占用空间的大小。可以通过GC日志中Full GC之后老年代数据大小得出,比较准确的方法是在程序稳定后,多次获取GC数据,通过取平均值的方式计算活跃数据的大小。活跃数据和各分区之间的比例关系如下总堆:3-4倍老年代活跃数据大小新生代:1-1.5倍老年代跃数据数据.原创 2020-08-14 14:10:49 · 694 阅读 · 0 评论 -
No outbound converter found for XXX
No outbound converter found for XXX 这是DWR抛出的一个错误。 原因是因为你在DWR的服务层return了一个对象。所以要在dwr.xml中声明该对象。 <convert converter="bean" match="com.XXX.entity.Shops"> <param name="include" value="id,spType"原创 2017-12-08 14:13:06 · 1964 阅读 · 0 评论 -
java 反射比较两个类型相同的对象 内部的变量是否相等
反射遍历System.Reflection.PropertyInfo[] mPi = typeof(InfoModel).GetProperties(); for (int i = 0; i { System.Reflection.PropertyInfo pi = mPi[原创 2017-10-19 14:41:10 · 2692 阅读 · 0 评论 -
关于静态变量编译的问题
在更新web的时候,我们往往只去替换修改过的class。但是,遇到修改静态变量(String的值),则会出现问题。 例如public class A{ private static String TEXT= "之前的";}public class B{ public void out(){ System.out.print(A.TEXT); }}这样在原创 2017-07-30 16:44:02 · 610 阅读 · 0 评论 -
Java 虚拟机 GC 的过程
1)大多数对象在创建后很短的时间内就会没有任何对象再使用它了,即未被其它对象引用。 2)大多数一直被使用的对象(老对象)很少引用新创建的对象。 绝大部分对象的创建后是被放到eden区,为什么说是绝大部分,因为会有一些对象创建后直接被old区区。 因为在eden区全部都是新生对象,所以大部分对象会很快失去引用 。被回收后会获得大量的空间。 当经历了一次回收后红色的被回收原创 2017-06-13 22:32:50 · 1787 阅读 · 0 评论 -
Spring MVC + Mbatis + RabbitMQ 整合(2)
接下来该配置我们的工程 首先附上pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://mav原创 2017-06-30 19:24:59 · 5989 阅读 · 9 评论 -
invalid comparison: com.XXX.shop.util.PageUtil and java.lang.String
invalid comparison: com.XXX.shop.util.PageUtil and java.lang.String今天重构别人的代码的时候发现每一个list页面都会出现invalid comparison: com.XXX.shop.util.PageUtil and java.lang.String 大概就是说有错误的比较类型吧,查了一下mapper映射文件原代码<if te原创 2017-06-30 14:06:36 · 582 阅读 · 0 评论 -
深入理解post和get请求。
最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。HTTP协议是基于TCP/IP协议的。所以GET和POST的底层也是基于TCP/IP协议,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。get请求长度问题就不说了。没啥意思、GET和PO原创 2017-12-29 11:06:17 · 1171 阅读 · 0 评论 -
记录下数据库备份 不保证能用
数据库一般备份命令:[html] view plain copy// 1.导出结构不导出数据 // mysqldump --opt -d 数据库名 -u root -p > xxx.sql // 2.导出数据不导出结构 // mysqldump -t 数据库名 -uroot -p > xxx.sql // ...转载 2018-03-02 09:54:22 · 185 阅读 · 0 评论 -
No live SolrServers available to handle this request
环境描述jdk:1.7solr:4.10.1zookeeper:3.4.7搭建的solrcloud 集群因为原来项目里面使用的就是solr 4.10.1 为了系统稳定 没有采取对solr进行版本升级。问题现象问题1:为了方便,只建了一个shard,然后一主一备当你同时启动两台tomcat的时候,8081和8082的时候。启动成功后,发现两台tomcat不在一个集群里,登录8081显示8082为Go...原创 2018-04-17 17:56:54 · 6656 阅读 · 5 评论 -
crypto-js加密对接jdk SecretKeyFactory解密 小程序使用
jdk1.7.0_15问题描述已经在用的接口服务器,接收另一个web端传来的des对称加密的信息,然后接口解密再进行处理。最近小程序上线,也需要调用改接口,需要用js进行参数加密进行接口调用。如果上述第一种情况,都可以使用java 的SecretKeyFactory进行参数加密解密那么如何使用js进行des的参数对称加密首先要搞明白SecretKeyFactory关键的加密方法,如下图指定为des...原创 2018-05-11 17:20:21 · 1468 阅读 · 0 评论 -
PKIX path building failed
主要是htpp和https 协议的问题之前项目里面用的PostMethod org.apache.commons.httpclient.methods.PostMethod 包下面的用PostMethod进行post提交就会遇到PKIX path building failed ,这个需要把对应的ca证书放到jdk下面大概,具体操作可以百度也可以使用 org.apache.http.c...原创 2019-01-11 18:42:55 · 645 阅读 · 0 评论 -
jacoco 覆盖率测试和报告
写完代码先自测一下web项目或者接口一般先跑findbug,再跑jacoco。其实我一直在寻找一个在浏览器里面操作web项目,ide里面的代码颜色就会告诉你哪一行执行过,哪一行没有执行过。还在研究中,有用过这样插件的或者有这样想法的可以私信我。因为不是专业测试,懒得写测试case,jacoco可以省心很多。在代码业务比较繁琐的时候,可以在web中直接操作所有的功能,jacoco就可...原创 2019-02-21 16:33:36 · 2369 阅读 · 0 评论 -
sonar登陆后显示项目不正常(现象少项目)
成因sonar曾经连接过两个数据库,导致项目启动时候会生成两份es索引文件,会影响到sonar的正常显示解决停掉项目D:\811\sonarqube-6.7.7\data\es5\nodes\0 删除该目录下的所有文件重启项目...原创 2019-07-09 09:46:12 · 1228 阅读 · 1 评论 -
关于静态编译引发的问题NoSuchException
发生的环境 jdk7 tomcat7问题描述。1.改了一个实体类A中某一个成员变量的类型,以及受影响的引用的修改。2.但是其中一个B类引用了实体类A,但是情况特殊,并没有受到影响报错,就没有修改该类。3.因为迟迟不能上线,现在要对B类进行修改,修改过后,将B类的class文件单独打包上服务器。启动正常,调用修改过A类变量的时候报错。4.也就是说实体类A在服务器上还是旧的,但是有...原创 2019-08-18 14:23:12 · 403 阅读 · 0 评论 -
Semaphore 允许多个线程同时访问
/** * * @author beiyaoyao */public class SemaphoreDemo implements Runnable { //设置有几个线程可以进入执行的代码段 final Semaphore semaphore = new Semaphore(5); @Override public void run() {原创 2017-04-27 16:23:33 · 369 阅读 · 0 评论 -
java的线程生命周期
定义了一个枚举类型,Thread.State,主要是来阐述一个线程在生命周期的各个阶段的状态。 NEW:线程被实例化,但并未.start(); RUNNABLE:线程正在运行; BLOCKED:线程中止运行,因为在等待获得一个锁,以便进入声明为Synchronized的方法或者代码块; WATING:线程中止运行,因为他调用了Object.wait()或者Thread.join(); TI原创 2017-04-27 15:43:57 · 168 阅读 · 0 评论 -
Lucene单字分词
之前使用的CJKAnalyzer分词器只能进行2字以上的搜索,比如说搜索中国可以搜出结果,但是搜索中,就没有结果。 因为CJKAnalyzer是二元分词,所以说单字搜索失效。 所以换做一元分词StandardAnalyzer或者ChineseAnalyzer 上面两个一元分词器虽然大体一样,但是区别就是ChineseAnalyzer会把文字中的数字给过滤掉。代码块下面是Sprin原创 2015-04-20 16:24:47 · 961 阅读 · 0 评论 -
java.lang.IllegalStateException: Cannot map handler
java.lang.IllegalStateException: Cannot map handler 'alMyController' to URL path [/m/alUserScoreController]: There is already handler 'alUserScoreController' mapped.项目启动的时候报错。一般是@RequestMapping中的Url重复,原创 2015-07-06 11:06:01 · 838 阅读 · 0 评论 -
抽象工厂
抽象工厂早就久闻抽象工厂的大名,以前查阅过很多资料,烦烦索索讲的很多,搞得人头晕脑胀,今天自己总结了一下。有什么不对希望指出。抽象工厂的好处就是,新加的功能不需要对原有的代码进行改动,可以提升程序的可维护性。先看如下代码:package b811.action;//先生成一个动作接口,这里以"吃"的动作为例public interface Eat { //提供一个动作(吃)的接口,让别人原创 2015-05-11 15:55:41 · 364 阅读 · 0 评论 -
关于hibernate 注解 OnetoOne 或 ManyToOne 写法
关于hibernate 注解 OnetoOne 或 ManyToOne 写法当主表中有子表的外键。 这种相对简单,直接把主表中子表的id换成子表的实体即可 /*菜品表主键/ /**子表表主键*/// private java.util.Date alDinningCookId; /**替换成子表的实体或者子表的list 取决于一对一 还是一对多/ pri原创 2015-07-06 10:48:23 · 2342 阅读 · 0 评论 -
ReentrantReadWriteLock 读写锁
/** * 读写锁ReentrantReadWriteLock * 读写分离可以有效地减少锁的竞争 * 在ReentrantLock中如果给读线程加锁,那么写线程就需要等待 * 给写线程加锁,那么读线程就得等待 * 这显然是不合理的,因为读操作不会对数据的完整性破坏。 * 所以在读的次数远远大于写的次数的时候,使用读写锁子 * @author beiyaoyao */public原创 2017-04-28 08:42:34 · 219 阅读 · 0 评论 -
CountDownLatch 计数器门闩
我只能说中华文化博大精深,最开始的时候还是不认识闩字的,百度了一下, 闩[shuān]。 从型上分析,就是门上插把棍子,锁住什么东西。CountDownLatch 就是把线程关起来,不许出来,得先干完活。CountDownLatch 计数器门闩/** * CountDownLatch 计数器门闩 * 该任务是如果完成了5个任务,那么才去执行发工资的事情 * * @author be原创 2017-04-28 09:15:22 · 234 阅读 · 0 评论 -
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe
org.apache.catalina.connector.ClientAbortException: java.io.IOException: Broken pipe at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:396) at org.apache.tomcat.uti原创 2017-05-11 11:53:12 · 1353 阅读 · 0 评论 -
HashMap工作原理
首先看源码 /** * An empty table instance to share when the table is not inflated. */ static final Entry<?,?>[] EMPTY_TABLE = {}; /** * The table, resized as necessary. Length MUST A原创 2017-05-15 17:18:20 · 228 阅读 · 0 评论 -
为什么Set会去重
Set之所以会去重,和map有很大的关系。 看源码你会发现HashSet底层使用HashMap存储 TreeSet底层使用TreeMap存储 LinkedHashSet底层使用LinkedHashMap存储拿HashSet为例子,我们查看add()方法的源码 public boolean add(E e) { return map.put(e, PRESENT)==null;原创 2017-05-15 17:34:31 · 5811 阅读 · 2 评论 -
ArrayList的基本工作原理详解add
ArrayList其实就是一个长度可变的数组,看源码就是知道,就是是一个Object[]。 ArrayList是unsynchronized。 因为底层由数组承载,那么需要连续的内存空间,所以空间复杂度是O(n)。 如果按下标直接去get(index)或者直接add(e)到数组的尾部,那么时间复杂度是O(1)。 如果要remove(index),或者add(index,e)那么时间复杂度为O原创 2017-05-16 11:09:44 · 4480 阅读 · 0 评论 -
ArrayList的基本工作原理详解remove
其实remove(index),add(index,e)类似去操作下标增加或者删除的。其实用ArrayList挺费劲的。 下面就看看费劲在哪。 拿remove来说 public E remove(int index) { //第一步先判断是否有越界,如果越界直接IndexOutOfBoundsException rangeCheck(index);原创 2017-05-16 12:02:38 · 1333 阅读 · 0 评论 -
HotSpot 是啥?
顾名思义,热点热地区之类意思吧。Hotspot ,为java1.3开发的jvm ,现在仍在使用中。JVM首先识别程序中那一部分被调用的最频繁,,这一部分也叫“热点方法”,然后跳过JVM解释器,直接把这一部分编译成机器码。 在一般的java程序生命周期中,从java源码开始,源码经过javac命令处理后,得到java的字节码,新的类文件,也就是.class文件,新的类文件通过类的加载机制载入到虚拟原创 2017-04-25 16:25:26 · 2270 阅读 · 0 评论 -
空接口是什么?
经常看到某个类实现了XXX接口比如public class School implements Serializable {}接口源代码//上面巴拉巴拉一大堆注释//宗旨就是说 java.io.Serializable是标记接口,目的是为了告诉//ObjectOutputStream类这个类的实例可以安全的序列化。package java.io;public interface Serializ原创 2017-04-25 16:39:41 · 766 阅读 · 0 评论 -
java内存泄漏易发场景
内存泄露是指无用对象(不再使用的对象)持续占有内存 无用对象的内存得不到及时释放 容易发生内存泄漏的场景 1. 静态集合类引起内存泄露,像HashMap这些静态变量的生命周期和应用程序一致,他们所引用的所有的对象Object也不能被释放,因为他们也将一直被Vector等引用着。 2. 当集合里面的对象属性被修改后,再调用remove()方法时不起作用。当remove不掉set中的对象时,原创 2017-04-25 16:41:35 · 298 阅读 · 0 评论 -
LinkedList运行原理
LinkedList和ArrayList都闲了List接口。因为LinkedList基于链表结构,所以插入,删除某一个节点会比ArrayList效率高,但随即访问某一个元素,效率不如ArrayList。 因为是链表结构,所以在初始化的时候不需要连续的内存,只需要见缝插针,记录next,prev就可以。所以在空间复杂度上比ArrayList强。//LinkedList的Add过程 public b原创 2017-05-17 15:40:40 · 254 阅读 · 0 评论 -
ReentrantLock 重入锁
/** * ReentrantLock 重入锁 * Re-Entrant-lock * 对于某一个线程可以反复给该线程加锁 * 但是记得释放锁,要不会产生死锁 * @author beiyaoyao * */public class ReenterLock implements Runnable { public static int i = 1; //重入锁原创 2017-04-27 15:13:33 · 243 阅读 · 0 评论 -
Condition
** * Condition 条件 * 利用Condition对象,可以让线程再合适的地方时间等待,活在某一个条件下得到通知,继续执行。 * @author beiyaoyao * */public class ReenterLockCondition implements Runnable { public static int i = 1; //重入锁 publ原创 2017-04-27 15:39:52 · 201 阅读 · 0 评论 -
什么是抽象类,以及用法
什么是抽象类,怎么运用原创 2015-04-20 17:55:42 · 439 阅读 · 0 评论