- 博客(50)
- 资源 (18)
- 收藏
- 关注
原创 部署SSL的一些总结
今天同事在客户现场部署SSL,遇到了一些问题,最后都得以解决。排查问题过程中有很多值得学习的地方,特此记录。机器A部署ssl时,如果tomcat成功启动,在外网却访问不了A的ssl端口(如8443),排查如下:1、在本机A telnet 8443,通则说明本机能访问2、在机器B telnet 机器A的8443,不通检查A的防火墙,是否对外屏蔽了84433、如果内网也通,外网不通,检
2017-10-27 12:00:00
969
原创 Http Session丢失
近段时间,客户生产环境遇到了一个问题。在点击一些按钮进入新页面时,偶尔会出现空白页面。这个空白页面,是因为后台收到请求后,需要获取HttpSession里的一些参数进行判断,session中少了参数,自然是进不去的。程序中使用 req.getSession() 来获取session对象,req.getSession()其实就是req.getSession(true),如果有指定id的sessi
2017-08-10 12:28:11
1823
原创 websocket的负载均衡
今天来说一说负载均衡的东西。 我们知道负载均衡在IT中是个很重要的概念,尤其是在互联网行业中,很多的产品都是web形式,提供基于http请求的服务。而单个服务器的处理能力是有限的,往往我们会用到集群。集群环境下,http请求是根据配置的策略来分发到指定的服务节点上的,一般在各个机器的性能都一致情况下,请求分发到每个结点的机率都一样。负载均衡的实现,有硬件上的,也有软件上的。硬件的有昂贵的
2017-07-20 14:37:40
8955
原创 保护性拷贝和不可变视图的学习,更面向对象的设计
最近在阅读《Effective JAVA》,感谢它让我重温了很多知识点。不过有些章节不是一时半会就能全懂,也是要多回头再看,结合一些实际经验就好理解了。今天看到“必要时进行保护性拷贝”有感,记录一下。JAVA是一门面对向象的语言,对象作为主体。对象中可能有不少内部组件,比如List,map等。按照惯例,我们可能会为一些属性提供setter和getter。这个时候我们可能就越过了对象控制属性,而
2017-06-20 16:02:51
539
原创 生产问题排查与程序设计的一些思考
最近处理生产上的一些问题,对程序设计和编程有了一些新的认识。浅谈一下。1、servlet这个东西,可以用来做对外服务的接口,发布一个上下文就可以使用http调用。也许很多时间我们只是简单地override了doGet和doPost方法,调用业务处理完print回去。如果这个业务处理很费时,那么这个servlet线程就会一直不能回收。我们知道一个tomcat能接受的最大并发是有限的。所以如果se
2017-06-01 23:13:51
605
转载 jconsole远程监控Linux tomcat和weblogic
最近对程序进行了优化,准备拿到 Linux的虚拟机上做一下压力测试,碰到了一些问题,所以想看看程序的状况,想到了Jconsole。Linux上不方便看啊,所以只能远程。以前配置过,但感觉并不是对所有都适用。这里结合别人的整理一下。环境:Linux WebLogic12c1、修改WLS配置文件windows修改 E:\bea\user_projects\domains\bas
2017-04-17 16:40:08
1456
原创 两个重要的多线程辅助类之CyclicBarrier和CountDownLatch的用法
最近在做在线客服系统的并发测试,由于没有很专业的测试人员,所以手写了一个小程序来模拟并发。使用jetty-io模拟浏览器与服务端之间的websocket。现在想要的一个场景就是,看看系统在大并发下的情况。这就决定了socket不能是一个个new出来的,而是要在某一个时间点统一start。使用JUC下的CyclicBarrier即可实现这种效果。package com.yicong.kisp
2017-02-28 11:08:13
564
原创 多个应用共享一套配置文件怎么做
海客户上线的这个产品直到现在都还有很多可以记录的东西。今天来说点多套应用多套配置文件的事情。 产品有多个应用,每个应用的配置文件还挺多的。客户要求应用集群化,我们的做法是部署多套应用,数据共享。比如我有一个wsp应用,8个节点,那就要8个工程包。其实我们有3种应用,总共就是要24个工程包(捂脸....),所以客户说这样不行,到时运维就很麻烦。也是的,单种应用的代码全都相同的,就是若干配置
2017-02-08 13:55:08
1686
原创 Linux和Windows之间的各种挂载方式
很久不见了,年关已近。今天想记录的是有关于共享文件夹和挂载的一些事。平常的开发中,涉及到文件上传的,基本都是在一台windows的电脑上,配置个目录,程序写到指定的位置就是了。上了生产就不是了,也许不只有你一个程序,其他应用也要读取你上传的文件。所以就需要一个公共的存储目录,放在单独的机器上。分3种情况1、同windows如果所有的服务器系统都是win的,server A的D:\chat做为公共存
2017-01-18 17:38:56
3056
原创 websocket经过F5无法发送到服务端
这个项目做到要上线了,真是累。在这个关头,又冒出了一个新问题。我们做的是在线客服的产品,客户端页面中会使用websocket与服务端实时通讯,起先我们在nginx上做了转发规则,一切正常。到了生产,网络层面就没有那么简单了,又是双卡绑定,又是F5负载,网络一直是我的软肋。长话短说,js中创建ws的上下文是这样的 ws://cc.com/wsp/ws/websocket,cc.com是F5 ip
2016-11-22 01:02:07
8734
1
原创 同一个url重复调用无效,加随机数的解决
今天协助搞一个验证码的问题,点击图片本来应该重新生成一个码,但是老是没发出请求,一直以为是js语法错误,然而并不是。后来才知道,是浏览器的缓存,当我们在重复使用同一个url的时候,可以这样子解决:1:在url后面加时间戳。 $('#validateCodeImg').click(function() { var src = 'validateCodeServ
2016-10-20 19:39:01
2613
原创 项目迁移到Linux WebLogic遇到的问题与解决
部门的产品之前都是在tomcat中开发的,上线也是使用tomcat,但现在这个客户要求高,要在wls上部署,过程中就遇到不少问题了。在这里一一记录。1、Log4j这是第一件头疼的事,实际上这和项目在wls上的部署方式有关。只是当前是用war包的,所以才碰到。最开初web.xml中的配置是 log4jConfigLocation WEB-
2016-10-09 12:33:00
3771
原创 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
14294
转载 Tomcat Server.xml 配置详解
网站网页目录:/web/www 域名:www.test1.com 论坛网页目录:/web/bbs URL:bbs.test1.com/bbs 网站管理程序:$CATALINA_HOME/wabapps URL:manager.test.com 允许访问地址:172.23.136.* conf/s
2016-06-23 16:33:13
724
转载 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
1145
转载 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
888
原创 Ajax跨域和JSONP
这几天做一个服务,主要是提供api给别人调用,首先我在自己的机器上调通了接口,然后把api给了他们,自然地像 http://localhost:8081/bizcenter/servlet/fileUpload 的url,要把localhost改成我的ip,比如 http://172.16.30.61:8081/bizcenter/servlet/fileUpload,结果就出现了“跨域”的问题。
2016-05-25 15:20:48
1273
原创 <input type='file'>选择文件后自动上传文件
想要一个选择了文件就自动上传的效果,但之前的 都是写在form表单中来提交的。借助jquery的ajaxfileupload.js,可以这样子弄:正面:function uploadFile(obj, type) { $.ajaxFileUpload({ url : "http://localhost:8081/ws2/servlet/fileUpload", secur
2016-05-22 10:36:09
59612
4
原创 访问其他机器的资料
Html中的是很常见的,作用是显示一张图片。如果是本地的图片,可以这样写 ,如果要显示其他电脑上的图片呢?那就要靠服务器了。显示其他电脑上的图片相当于访问他人的资源,要通过server提供服务,没有 192.168.1.2/D/a/b.jpg这样的写法。所以是这样。启一台tomcat,在webapps/app下建一个img文件夹,图片放里面,就可以访问到了。同样的,视频、doc、mp3
2016-05-19 18:36:04
551
原创 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
2320
原创 web项目启动提示class path resource does not exist(eclipse构建classes)
今天想搭建一个web工程,参考以前项目的结构,配置文件一般都会放到conf文件夹中,conf与src是同级的关系。刚开始只是建了一个conf,把配置文件丢进去了,部署到tomcat时却提示class path resource [config.xml] cannot be opened because it does not exist,就是说在classes中找不到config.xml。打开
2016-05-15 00:54:26
5785
转载 javascript逻辑运算符“||”和“&&”
许久没有搞JS,有些东西忘了,比较alert(||和&&)。一、先来说说||(逻辑或),从字面上来说,只有前后都是false的时候才返回false,否则返回true。alert(true||false); // truealert(false||true); // truealert(true||true); // truealert(false||fa
2016-05-10 14:34:47
953
原创 一些经典面试题的思考与解析
这里把遇到的一些面试题拿来分析分析,因为如果不仔细想,很容易得出错的答案。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
907
转载 HashMap的元素hash散列均匀必要性及算法优化
之前看过HashMap的一些东西,时间一久就容易忘,而已一些要点理解得不深入,今天看到这篇文章很不错,具有相同hashcode(称为hash冲突)的对象会放在同一下标的数组元素中,如果冲突的元素多,那么同一链表的长度就会越来越长,这样在遍历的时候就费时,所以就要让存进来的对象相对均匀地放入在所有的链表中。 通过源码可以知道,indexFor(hash, table.length)方法用来
2016-04-27 14:36:37
5874
原创 Nginx loaction配置和Tomcat部署方式
昨天写了一个servlet,调试的过程学习到了不少东西。首先前端和服务端是分开的。前端项目放在nginx中,http请求通过nginx转发。一个表单的action=‘’/ka_upload“,nginx conf中配置为location /ka_ { proxy_pass http://localhost:8080/kmgw/access/post; prox
2016-04-26 14:13:28
2490
原创 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
7021
1
转载 oracle select into null的问题
今天遇到一个问题,oracle中一个select into 语句报错,说未找到记录。select into 还有大学问。简单说就是表有记录但字段为空,可以into;表无记录,into会报错。详见转载的帖子。今天一朋友问及我这个问题,当记录不存在,会提示 no data 的错误,下面是网上这类问题的解决方法。当在PL_SQL中执行SELECT … INTO …语句时,如果返回结果集为
2016-04-22 13:49:06
16400
转载 Linux Tomcat远程调试
一. 应用场景在实际的测试过程中,可能会遇到由于程序执行的不间断性,我们无法构造测试场景来验证某个功能的正确性,只有通过代码级的调试才能验证功能是否正确。然而开发本地调试的话,不具有说服力,这时我们测试人员必须连接到linux下的基线版本代码进行远程调试 二.调试步骤1、部署服务工程到Linux系统下的Tomcat中,本文档重点是远程调式,为了防止文档
2016-04-20 15:27:37
748
原创 Oracle存储过程的commit和rollback,sqlerrm
最近ld说要把之前写得好好的一套存储过程说改成java,什么意思听起来不对劲呀。意思是不要用proc了,改成mybatis的sql,达到屏蔽差异性的效果。。。哈哈不是这么回事啊,首先proc里肯定用到了很多db的内置函数,这个不同的db都不一样的。比如oracle中的wm_concat,mysql中的group_concat,msserver的wmsys.wm_concat。另外自定义的函数是定义
2016-04-19 15:12:03
13607
1
原创 nginx直接返回
前几日使用微信公众号平台,开发者工具中可以配置回调地址,微信将一些事件通过该地址回推给开发者。第一次配置时需要对url进行认证。简单说就是发一串字符串到url指定的服务器上,然后服务器必须返回字符串中的某一串,就是echostr。我这边用的是Nginx,ng再转到tomcat,所以直接在ng把echostr返回就可以了。具体配置:location /kmgw/{ proxy_
2016-04-11 14:28:57
2291
原创 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
1031
原创 ThreadPoolExecutor中运行线程名称的修改
项目中使用到了ThreadPoolExecutor,这个是挺好的东西,线程池的实现。但有一点不太爽的是,用Jprofiler调试由它创建的线程的时候,看到的都是pool-1-thread-1\2\3\4之类的。这是它自身的默认规则产生的,pool代表这是池,-1-代表是第几个ThreadPoolExecutor产生的,-thread-1是递增的。所以每次我都要点 Thread Dumps 去查
2016-03-21 15:35:17
30977
4
原创 基于信号量的统一线程池机制
上次说要写一篇关于统一线程池的文章,拖了好久,下午就来写一写,温故而知新。线程池机制大家都很熟悉,把任务添加到池中,然后按照一定的机制使用多个线程来执行任务。在java中通常是使用newCachedThreadPool()来创建。再加上信号量,通过获取到许可来执行任务。
2016-03-01 09:55:08
1699
转载 两机只能单向Ping通的原因、ping的原理
今天遇到一个问题,本机ping通虚拟机,但是虚拟机ping不通本机。请教后才知道是我的防火墙开了,挡掉了。特此学习一个ping一、什么是 PING: 它是用来检查网络是否通畅或者网络连接速度的命令,使用ICMP(Internet控制报文协议)。 它所利用的原理是这样的:网络上 的机器都有唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个同 样大小
2016-01-28 14:42:10
35404
1
转载 各种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
1844
原创 分开的两个程序使用共同的mysql,一端更新了表,另一端怎么及时更新缓存,使用mybatis
目前项目中由于业务系统和管理系统是分开的,管理端只负责对数据库表的CRUD,而业务系统也需要交互db。现在就存在一个问题,在管理端上改了某个表的值,业务端是无从得知的。因为业务端一直用相同的语句查询db,mybatis的二级缓存会缓存这些数据,不会真正发sql去查询真实数据。所以就需要管理端在修改表的时候,通知一下业务端是更新二级缓存,这样才能及时使用新值。起初在想mybatis的sqlSes
2016-01-26 17:49:31
682
转载 线程池 threadPoolExecutor详解
这种文章写得很不错,让我对threadPoolExecutor有了更深入的了解!ThreadPoolExecutor的完整构造方法的签名是:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue workQueue, Thread
2016-01-22 09:05:23
838
原创 Spring注解与扫描,NoUniqueBeanDefinitionException
Spring中可以使用注解机制,代替传统的在xml中配置一个bean。如@Componentpublic class LoadMessageJob { // code}和是等效的。@Component默认类名的第一个字母小写成为bean的id,最后两者都需要扫描包以生效,。这样才能在实现了ApplicationContextAware的类中使用getBean("id")
2016-01-18 23:04:09
43681
4
Apache Tomcat 6的全部源码,能在eclipse打开!
2013-12-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人