JAVA
文章平均质量分 73
奕聪
最美的风景在路上,最好的人生在脚下
展开
-
项目体验:高并发httpclient和线程池的正确使用
ExecutorService、Executors线程池使用不合理导致的性能问题原创 2015-12-01 14:02:47 · 24740 阅读 · 2 评论 -
基于信号量的统一线程池机制
上次说要写一篇关于统一线程池的文章,拖了好久,下午就来写一写,温故而知新。线程池机制大家都很熟悉,把任务添加到池中,然后按照一定的机制使用多个线程来执行任务。在java中通常是使用newCachedThreadPool()来创建。再加上信号量,通过获取到许可来执行任务。原创 2016-03-01 09:55:08 · 1657 阅读 · 0 评论 -
Java中的五种单例模式实现方法
package singleton; /** * @author lei * 单例模式的五种写法: * 1、懒汉 * 2、恶汉 * 3、静态内部类 * 4、枚举 * 5、双重校验锁 * 2011-9-6 *//** *五、 双重校验锁,在当前的内存模型中无效 */class LockSingleton{ private volatile static Lock转载 2016-06-07 18:23:04 · 1113 阅读 · 0 评论 -
生产问题排查与程序设计的一些思考
最近处理生产上的一些问题,对程序设计和编程有了一些新的认识。浅谈一下。1、servlet这个东西,可以用来做对外服务的接口,发布一个上下文就可以使用http调用。也许很多时间我们只是简单地override了doGet和doPost方法,调用业务处理完print回去。如果这个业务处理很费时,那么这个servlet线程就会一直不能回收。我们知道一个tomcat能接受的最大并发是有限的。所以如果se原创 2017-06-01 23:13:51 · 553 阅读 · 0 评论 -
保护性拷贝和不可变视图的学习,更面向对象的设计
最近在阅读《Effective JAVA》,感谢它让我重温了很多知识点。不过有些章节不是一时半会就能全懂,也是要多回头再看,结合一些实际经验就好理解了。今天看到“必要时进行保护性拷贝”有感,记录一下。JAVA是一门面对向象的语言,对象作为主体。对象中可能有不少内部组件,比如List,map等。按照惯例,我们可能会为一些属性提供setter和getter。这个时候我们可能就越过了对象控制属性,而原创 2017-06-20 16:02:51 · 497 阅读 · 0 评论 -
mybatis启动不了,nested exception is org.xml.sax.SAXParseExceptionpublicId,文档类型声明包含或指向的标记声明必须格式正确。
今天遇到一个问题很是郁闷。一个项目在这边的虚拟机中运行得好好的,放到另一个地方就运行不起来了,日志打印如下。又是换jar包又是换tomcat都一个样。潘总出山了。这时为什么会出现这么一个ip : 192.168.255.66。?正常启动时日志里也没有出现ip的啊,但那些正常启动的tomcat所在的机器都是可以访问外网的,这一台却不行,是网络的问题吗?spring-mybatis.xml有这么一原创 2016-07-14 14:09:55 · 14184 阅读 · 0 评论 -
mybatis oracle获取插入的主键
今天用mybatis时需要获取insert后的主键,方法如下:public Integer genBizOrder(Map m); select seq_tab.nextval as id from dual insert into t_test t values(#{id}, #{custId}, #{seatSubmitTime}, '') 调用g原创 2016-05-18 14:21:30 · 2286 阅读 · 0 评论 -
jconsole远程监控Linux tomcat和weblogic
最近对程序进行了优化,准备拿到 Linux的虚拟机上做一下压力测试,碰到了一些问题,所以想看看程序的状况,想到了Jconsole。Linux上不方便看啊,所以只能远程。以前配置过,但感觉并不是对所有都适用。这里结合别人的整理一下。环境:Linux WebLogic12c1、修改WLS配置文件windows修改 E:\bea\user_projects\domains\bas转载 2017-04-17 16:40:08 · 1429 阅读 · 0 评论 -
多个应用共享一套配置文件怎么做
海客户上线的这个产品直到现在都还有很多可以记录的东西。今天来说点多套应用多套配置文件的事情。 产品有多个应用,每个应用的配置文件还挺多的。客户要求应用集群化,我们的做法是部署多套应用,数据共享。比如我有一个wsp应用,8个节点,那就要8个工程包。其实我们有3种应用,总共就是要24个工程包(捂脸....),所以客户说这样不行,到时运维就很麻烦。也是的,单种应用的代码全都相同的,就是若干配置原创 2017-02-08 13:55:08 · 1629 阅读 · 2 评论 -
各种OutOfMemoryError的解决(待补充)
问题描述Exception in thread "main" java.lang.OutOfMemoryError: Java heap space解决方案一直都知道可以设置jvm heap大小,一直用eclipse写/调试java程序。一直用命令行or console加参数跑程序。现象:在eclipse的配置文件eclipse.ini中设置-vmargs -Xms500m -Xmx1转载 2016-01-28 10:29:20 · 1812 阅读 · 0 评论 -
原子类与多线程中变量的累加问题
java并发包中的原子类的知识和多线程中对变量累加的同步操作原创 2016-02-26 16:58:15 · 2153 阅读 · 0 评论 -
java synchronized死锁的好例子
关于java死锁的一个好demo。要避免dead-lock,就应该控制同步的数量和可能共用的资源的访问(代码源于网上,略加修改)/** * @author yicong * @date 2016年3月22日 下午1:44:32 * @todo 死锁的经典例子 */public class DeadLock { public static void main(String[] ar原创 2016-03-22 14:09:32 · 1000 阅读 · 0 评论 -
websocket的负载均衡
今天来说一说负载均衡的东西。 我们知道负载均衡在IT中是个很重要的概念,尤其是在互联网行业中,很多的产品都是web形式,提供基于http请求的服务。而单个服务器的处理能力是有限的,往往我们会用到集群。集群环境下,http请求是根据配置的策略来分发到指定的服务节点上的,一般在各个机器的性能都一致情况下,请求分发到每个结点的机率都一样。负载均衡的实现,有硬件上的,也有软件上的。硬件的有昂贵的原创 2017-07-20 14:37:40 · 8872 阅读 · 0 评论 -
一些经典面试题的思考与解析
这里把遇到的一些面试题拿来分析分析,因为如果不仔细想,很容易得出错的答案。public class Test10 { static StringBuilder a = new StringBuilder("A"); static StringBuilder b = new StringBuilder("B"); public static void main(String[] s原创 2016-04-28 11:39:56 · 855 阅读 · 0 评论 -
项目迁移到Linux WebLogic遇到的问题与解决
部门的产品之前都是在tomcat中开发的,上线也是使用tomcat,但现在这个客户要求高,要在wls上部署,过程中就遇到不少问题了。在这里一一记录。1、Log4j这是第一件头疼的事,实际上这和项目在wls上的部署方式有关。只是当前是用war包的,所以才碰到。最开初web.xml中的配置是 log4jConfigLocation WEB-原创 2016-10-09 12:33:00 · 3684 阅读 · 0 评论 -
Spring 无法注入静态变量,直接在静态方法中获取bean
Spring 无法注入静态变量,直接在静态方法中获取bean原创 2016-01-12 12:19:28 · 14351 阅读 · 2 评论 -
Mycat分库分表的初次学习
针对单表大数据量的情况,学习Mycat分库分表的相关知识以备不时之需原创 2016-02-23 16:10:52 · 7055 阅读 · 0 评论 -
HashMap的元素hash散列均匀必要性及算法优化
之前看过HashMap的一些东西,时间一久就容易忘,而已一些要点理解得不深入,今天看到这篇文章很不错,具有相同hashcode(称为hash冲突)的对象会放在同一下标的数组元素中,如果冲突的元素多,那么同一链表的长度就会越来越长,这样在遍历的时候就费时,所以就要让存进来的对象相对均匀地放入在所有的链表中。 通过源码可以知道,indexFor(hash, table.length)方法用来转载 2016-04-27 14:36:37 · 5717 阅读 · 0 评论 -
jspSmartUpload上传路径不存在
今天改造一个上传的Jsp成servlet,其实就是一回事。用到了jspSmartUpload,执行到 file.saveAs("/upload/ChatFile/" + fileName); 的时候,一直报java.lang.IllegalArgumentException: This path does not exist (1135). at com.jspsmart.upload.Sm原创 2016-04-25 18:05:50 · 6928 阅读 · 1 评论 -
Quartz的简化(只要一张表,动态启停任务)
spring-quartz,一张表配置、动态启停Job原创 2016-01-04 14:07:20 · 4111 阅读 · 3 评论 -
ThreadPoolExecutor中运行线程名称的修改
项目中使用到了ThreadPoolExecutor,这个是挺好的东西,线程池的实现。但有一点不太爽的是,用Jprofiler调试由它创建的线程的时候,看到的都是pool-1-thread-1\2\3\4之类的。这是它自身的默认规则产生的,pool代表这是池,-1-代表是第几个ThreadPoolExecutor产生的,-thread-1是递增的。所以每次我都要点 Thread Dumps 去查原创 2016-03-21 15:35:17 · 30789 阅读 · 4 评论 -
一次线程池有关的性能调优之旅
最近在做的项目,在调试时打开了top,发现CPU一直是90%以上的,这让我们感觉奇怪。一般来说写得好的程序,CPU不应该满负载运行。大家决定查找原因。原创 2015-12-15 13:33:12 · 4469 阅读 · 1 评论 -
如何解决包冲突,类加载错误的一个方法
包冲突时如何找到类的路径,和如何改变加载顺序原创 2015-09-08 18:37:47 · 3978 阅读 · 0 评论 -
Servlet 3.0特性详解
Servlet 3.0作为Java EE6规范体系中一员,随着Java EE6规范一起发布。之前51CTO也曾报导过《Java EE 6新特性之Servlet 3.0的异步处理》的相关内容,而本文将比较全面的、并结合代码实例介绍Servlet 3.0的新特性。关于Java EE 6平台的更多内容,51CTO推荐阅读:Java EE 6平台指南异步处理支持:有转载 2016-06-04 17:12:48 · 849 阅读 · 0 评论 -
Spring注解与扫描,NoUniqueBeanDefinitionException
Spring中可以使用注解机制,代替传统的在xml中配置一个bean。如@Componentpublic class LoadMessageJob { // code}和是等效的。@Component默认类名的第一个字母小写成为bean的id,最后两者都需要扫描包以生效,。这样才能在实现了ApplicationContextAware的类中使用getBean("id")原创 2016-01-18 23:04:09 · 43600 阅读 · 7 评论 -
线程池 threadPoolExecutor详解
这种文章写得很不错,让我对threadPoolExecutor有了更深入的了解!ThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, Thread转载 2016-01-22 09:05:23 · 798 阅读 · 0 评论 -
两个重要的多线程辅助类之CyclicBarrier和CountDownLatch的用法
最近在做在线客服系统的并发测试,由于没有很专业的测试人员,所以手写了一个小程序来模拟并发。使用jetty-io模拟浏览器与服务端之间的websocket。现在想要的一个场景就是,看看系统在大并发下的情况。这就决定了socket不能是一个个new出来的,而是要在某一个时间点统一start。使用JUC下的CyclicBarrier即可实现这种效果。package com.yicong.kisp原创 2017-02-28 11:08:13 · 529 阅读 · 0 评论 -
Http Session丢失
近段时间,客户生产环境遇到了一个问题。在点击一些按钮进入新页面时,偶尔会出现空白页面。这个空白页面,是因为后台收到请求后,需要获取HttpSession里的一些参数进行判断,session中少了参数,自然是进不去的。程序中使用 req.getSession() 来获取session对象,req.getSession()其实就是req.getSession(true),如果有指定id的sessi原创 2017-08-10 12:28:11 · 1750 阅读 · 0 评论