- 博客(263)
- 资源 (1)
- 收藏
- 关注
原创 Missing artifact com.sun:tools:jar:1.5.0解决办法
前一阵子下了最新的JavaEE版本的eclipse,导入maven工程之后,pom文件一直报Missing artifact com.sun:tools:jar:1.5.0。很纳闷,tools.jar是jdk自带的jar包。查了一下pom依赖图,原来是struts-core依赖了这个jar包。 试了网上的各种方法,只有把jdk的tools.jar复制到本地仓库,报错才消失。
2014-05-04 18:49:24 12591 3
原创 没有spring框架下,读取properties文件的办法
给项目组搭了一个solr4.6的应用。新加入了一个配置文件,其中保存了项目的一些重要信息。这个时候还没有用到spring的框架。如果仅仅为了获取properties文件的内容而去引入spring的框架,感觉不划算。于是暴力一点,直接读项目代码里的properties文件。 public void contextInitialized(ServletContextEvent sce) {
2014-04-18 18:55:37 1961
原创 js的for in循环和java里的foreach循环的区别
js里的for in循环定义如下: for(var variable in obj) { ... } obj可以是一个普通的js对象或者一个数组。如果obj是js对象,那么variable在遍历中得到的是对象的属性的名字,而不是属性对应的值。如果obj是数组,那么variable在遍历中得到的是数组的下标。 遍历对象实验:var v = {};v.field1
2014-04-18 18:41:22 7747
原创 spring+ibatis框架下事务代码的编写示例
最近在做项目的账号管理这一块儿的功能。每一项账号操作相关的功能,都要涉及到多张表的读写。这个时候自然联想到用数据库的事务进行操作。否则,一处发生异常,将导致脏数据的产生。 ibatis+spring框架下事务的代码写法有两种方式:注解方式和声明事务起始点。 需要的spring的配置文件如下:<bean id="transactionManager" class="org...
2014-04-04 18:53:16 5926
原创 Solr4.6,搜索不区分大小写的配置
有些字段搜索的时候不需要区分大小写。这个时候需要做简单的过滤,建索引和搜索的时候把输入都转换成小写即可。配置如下: 配置中使用的过滤器工厂类LowerCaseFilterFactory的wiki定义如下:
2014-04-04 18:24:14 8947 2
原创 ibatis传入数组或List类型参数小结
小结一下ibatis框架下,传入参数为数组类型或者是List类型的sql写法。特别说明,iterate标签仅支持数组和List类型,如果传入Set,Map或其它集合类型,Ibatis会抛异常。 1. 传入数组类型,不需要标明parameterClasss,数组和List类型对象一样都可以用<iterate>标签进行遍历。<select id="selectOrgI...
2014-03-25 22:51:10 73226 7
原创 Arrays.asList()源码剖析
将一个数组转化为一个List对象,一般会想到Arrays.asList()方法,这个方法会返回一个ArrayList类型的对象。但是用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。 public static List asList(T... a) { return new ArrayList(a); }
2014-03-20 19:18:27 4302 1
原创 zTree框架添加节点示例
今天写web的代码卡在这里一个多小时,总结一下。 zTree的addNodes(parentNode, newNodes, isSilent)方法的参数说明太具迷惑性了。如图: 于是我认为这个地方用的是json串,可能是后台代码写太多了,思维定势吧。用JSON.stringify()方法把父节点对象和子节点对象序列化之后,再传入addNodes()方法,提示表达式格式有
2014-03-18 19:56:43 35490 4
原创 编译安装Nginx-1.5.9
1.上nginx官网下载最新的nginx-1.5.9.tar.gz 2.执行解压缩命令:tar -zxvf nginx-1.5.9.tar.gz 3.进入解压后的文件夹,执行:./configure --prefix=/export/servers/nginx-1.5.9。发现报错:./configure: error: the HTTP rewrite module r
2014-01-27 17:26:04 3247
原创 Solr4.6 Expected content type application/octet-stream but got text/html 解决办法
自从用nginx-1.2.3为solr4.6做负载均衡之后,只要是删除操作,就报如下堆栈:org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Expected content type application/octet-stream but got text/html. 411 Length Requi
2014-01-27 16:44:14 10234 4
原创 Solr4.6,用builder模式构建查询参数对象
Solr搜索的条件有8个左右,界面式搜索条件如下: 8个参数,封装成一个参数对象,属性有点多。是提供构造器方式设置属性还是提供java bean的方式好呢? 如果提供构造器方式,那么你不得不提供多个构造器以满足必选参数和多个可选参数的组合。 如果是java bean模式,虽然构造一个请求参数bean十分容易,但是如果少了一个必选属性呢?比如少了关键字。
2014-01-20 18:21:29 2456 2
原创 solr4.6关于schema.xml版本号的问题
前天在服务器上搭建一主一从的solr4.6的服务器,建core的时候,抛弃了以前从solr4.6下载包里面的配置文件。而是上这个文件夹拿配置文件:F:\solr\solr-4.6.0\example\multicore\core0\conf。这个文件夹给的配置文件是最简单的!只需一个schema.xml和solrconfig.xml就可以迅速搭建一个core出来。 搭建好之后,基本的CR
2014-01-16 10:36:59 5571 2
原创 Solr4.6主从同步配置
今天在两台不同的测试服务器上搭建了solr4.6的服务器。验证两台solr启动正常之后,参照solr的wiki的主从配置方案进行主从配置,这是solr的wiki上给出的主从同步方案:http://wiki.apache.org/solr/SolrReplication solr的主从同步是按core进行配置的,每个core的solrconfig.xml都需要进行主从的配置。 主
2014-01-13 18:51:10 7607 5
原创 ./startup.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录 解决办法
把windows下的tomcat7.0.27.zip上传到linux上之后,执行./startup.sh,这个错: ./startup.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录 解决办法 执行vim startup.sh,输入:set ff?,发现文件格式是dos,果断执行再输入:set ff=unix,然后保存一下。但是光该这个文件是
2014-01-10 18:36:33 11980
原创 Solr4.6从数据库导数据的步骤
Solr4.6有从数据库导数据的功能。导入步骤如下: 1.将下载下来的solr4.6的dist文件夹下的solr-dataimporthandler-4.6.0.jar和solr-dataimporthandler-extras-4.6.0.jar放入tomcat该路径下:F:\solr\tomcat7.0.27\webapps\solr\WEB-INF\lib 2.修改sol
2014-01-03 18:44:37 7629 6
原创 为Solr4.6添加新的核
从solr4.6的管理界面上,始终没能成功添加核心,不是少这个文件就是少那个文件: 不得已,采用手工的方式来建立新的核心。两种方式: 1.把solr下载包里面的F:\solr\solr-4.6.0\example\solr\collection1这个文件夹复制一份,放在你的solr运行环境里面,改下文件夹的文字,同时改一下文件夹下的core.properties里面的n
2014-01-02 16:57:32 2070 2
原创 编写重启tomcat7的bat文件
今天反复点tomcat7的shutdown.bat和startup.bat,我在想能不能写一个bat文件,一次将这两个文件运行完。试写了一个restart.bat:shutdown.batstartup.bat 但是运行这个bat文件之后,只有shutdown.bat起作用了。baidu了下如何在bat文件里调用其他bat文件,原来需要在文件前加call,重新修改了下restart.b
2014-01-02 15:08:14 4859
原创 Solr4.6用csv文件导入数据
上周安装好了solr4.6,今天尝试了下给collection1核用csv文件批量导入数据。 首先写好csv文件(book.csv),这个文件的路径随意放。我的路径是:E:/book.csv。并注意文件的编码,我的编码是GB2312,一会儿上传的时候要用,如果错了,中文会乱码。id;title;content16;"除夕";"某主席上台了,除夕就不放假了。"17;"钓鱼岛";"钓
2013-12-30 14:43:22 4979
原创 Tomcat7.0.27下安装Solr4.6.0
应项目经理要求,我们项目需要做搜索的功能。搜索这块的任务交给了我,技术方案是Solr。于是花了一下午时间在比较新的tomcat下装起了一个目前最新的solr。 安装步骤: 首先弄到tomcat和solr4.6的包,这自不必说!然后将solr解压在:F:\solr\solr-4.6.0这下面,将tomcat解压在:F:\solr\tomcat7.0.27。同时新建一个solr运行
2013-12-26 21:00:54 6218 3
原创 《Java核心技术》读书笔记:CyclicBarrier的使用示例
考虑这么一个情景:当多个线程运行到某处的时候,需要将所有的线程的计算结果汇总。那如何控制这些线程计算子问题结束后,在汇总的代码处等待其它线程尚未计算完的线程呢?可以考虑使用CountDownLatch和CyclicBarrier。CountDownLatch只能使用一次,CyclicBarrier作为线程集结点 ,却可以循环使用。“cyclic”循环的意思。 当跑的快的线程运行到Cycl
2013-12-25 23:34:54 1999
原创 mysql大表更新sql的优化策略
问题sql背景:项目有6个表的要根据pid字段要写入对应的brand_id字段。但是这个其中有两个表是千万级别的。我的worker运行之后,线上的mysql主从同步立刻延迟了!运行了一个多小时之后,居然延迟到了40分钟,而且只更新了十几万行数据。问题sql如下:<!-- 根据商品id更新品牌id --><update id="updateBrandIdByPid" pa...
2013-12-19 21:38:42 16481 4
原创 NIO与普通IO文件读写性能对比
最近在熟悉java的nio功能。nio采用了缓冲区的方式进行文件的读写,这一点更接近于OS执行I/O的方式。写了个新旧I/O复制文件的代码,练练手,顺便验证一下两者读写性能的对比,nio是否真的比普通I/O更快了。 拿来测试复制性能的文件是104MB的视频问加你,测试代码如下:package nio;import java.io.FileInputStream;import j
2013-12-15 21:29:14 6991 5
原创 ServiceConstructionException的解决办法
线上调用WebService的线程报错: javax.xml.ws.WebServiceException: org.apache.cxf.service.factory.ServiceConstructionException at org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:317) at org.apache.c
2013-11-21 09:24:39 35160 4
原创 Map对象用JSON反序列化的方法
我们项目组的A系统依靠B系统写入Redis中的数据对象工作。这个对象是一个Map对象,Map对象写入Redis很简单,先JSON化,然后Set入Redis即可。但是用JSON提供的反解析方法的时候,得到的是Map 类型,而我希望得到的是Map类型。也就是DDRouteRuleEntry类型并没有被正确的解析。只好顺应这个结果进行反序列化,然后将每个JSONObject对象再次反序列化成DDRo
2013-11-12 17:57:54 16841 1
原创 对JQuery进行下标操作得到的是js对象
产生问题的代码:function sendNewList2Server(clientType, clientVer, ulDom){ var lis = $(ulDom).children(); var domains = ""; for(var i=0; i<lis.length; ++i){ if(i == 0) { domains = lis[i].attr("id"
2013-11-11 18:27:39 9825
原创 多mysql实例下开发需要注意主从同步延迟
今天晚上服务器上线测试,遇到了一个问题!往数据库写了一条数据之后,再读取该记录,居然读不出来,报空指针。十分费解,喊来开发组长定位问题。他的解释是:写操作用的是主库,而读操作用的是从库。在写库写完之后,该条记录并不会立刻出现在读库,数据同步到写库需要一定的时间。于是出现了我的空指针异常。回来看了很多网上的介绍主从同步机制。大致是这样的,主库执行完sql写命令之后,将日志写至binlog。从
2013-10-29 17:05:31 1762
原创 Spring框架下的单元测试方法
介绍在Spring的框架下,做单元测试的两种办法。 一、使用spring中对Junit框架的整合功能 除了junit4和spring的jar包,还需要spring-test.jar。引入如下依赖:<dependency> <groupId>org.springframework</groupId> <artifactId>...
2013-08-06 15:36:24 55386
原创 nginx修改上传文件大小限制
新装了一台服务器,用nginx做代理。突然发现上传超过1M大的客户端文件无法正常上传,于是修改了下nginx的配置。 cd /export/servers/nginx/conf/nginx.conf,在这个配置文件里面的server段里面的location / { root html; index index.html index...
2013-07-31 11:44:22 175910 2
原创 如何给一个私有方法做单元测试
给类的公有方法做单元测试,很简单,new一个对象,设好入口参数后,调用这个方法,比较期望值和实际值即可。给一个类的私有方法做单元测试,也不麻烦,先通过反射获取这个方法,然后将这个方法的可访问性强制设为true,这样的话,这个私有方法就可以被调用了。目标方法:private Double format(Double fileSize){ Double size = fileSize; s...
2013-07-18 18:05:00 15714 2
原创 使用QRCode生成二维码
我们项目的安卓客户端开发出来了,下载页面上要呈现出二维码以方便移动端以方便移动端用户下载。QRcode是日本人94年开发出来的。首先去QRCode的官网http://swetake.com/qrcode/java/qr_java.html,把要用的jar包下下来,导入到项目里去。qrcode需要设置一个版本号,这个版本号代表你生成的二维码的像素的大小。版本1是21*21的,版本号每增加1,边长增加...
2013-07-17 18:15:20 25943 8
原创 根据复选框后面的描述文字进行选择的技巧
最近做的一个页面,含有很多复选框。但是现在的效果只能用鼠标去点击小小的复选框进行反选。用户体验很不好,于是想到如果点击复选框后面的文字也可以进行反选,对用户来讲肯定要方便很多。实现很简单,分享下我的代码。页面:(勾选后启用)$(function() { $(".tick").click(function(){ $(this).prev().attr("check
2013-06-20 15:48:29 3048 1
原创 jquery-ui的sortable插件使用示例
首先把这三个资源下载下来:然后页面初始化的时候,调用这个js方法:$( "#sortable" ).sortable();如果希望把序列的值返回给后台的话,需要把ul元素的id写成key_value的形式,实例如下: #foreach($bean in $!{attr.abtEntryMap.keySet()}) $!be
2013-06-03 14:20:45 13653
原创 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
用XAMPP装装好mysql之后,mysql -uroot 连不上,报这个错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 在mysql的配置文件里,/opt/lampp/etc/my.cnf, 发现了这样的配置:# The
2013-05-11 13:08:31 2653
原创 对多个tomcat部署同一个应用的认识
我做的客户端自动升级系统需要在内存或缓存中维持一根可用客户端产品的列表。考虑到在内存中进行读取的速度更快,于是选择在内存中存储一份可用客户端产品的列表。这个列表用一个静态列表对象保存。当新增,修改,淘汰客户端产品时,会对从数据库向这个内存对象中进行同步。这个设计是完全没有问题的。但是应用到多个tomcat部署这样的同一个实例的时候,问题就出来了。这也是今天上线的积累到的一个教训。上线之后发现,
2013-05-10 06:19:23 2285
原创 454 Authentication failed, please open smtp flag first!用QQ邮箱测试报错
我用QQ邮箱测试javamail发送邮件的功能,用户名密码设置正确,却总是发不出邮件。开启下QQ邮箱的smtp服务器设置即可。
2013-04-05 17:36:17 7910 2
原创 用正则表达式统计关键词信息
要为项目150余个代码点添加统一监控。监控点的key是按规律定义的,以chat3打头,alert结尾。我必须先把这150余个key从代码中搜索出来,然后在统一监控中按key逐个添加监控。如果用Eclipse自带的搜索功能搜索文本,可以,但是必须逐个去文件夹树里找,略显麻烦。 324/2,一共162个监控点,逐个点进去找到自己要的信息实在太麻烦!为什么不写代码统计呢?!深搜文件...
2013-03-21 18:46:51 2096
原创 《effective java》读书笔记:尽量返回容量为0的数组或集合
今天测试3.0的后台代码时,遇到了一个空指针的bug,是由于调用的方法返回的是集合,由于实际返回的是null,后头有调用了这个对象的方法,导致空指针。这段代码的质量需要改善,如果返回容量为0的集合,则完全可以避免空指针。先贴错误代码。public Result queryStoreServiceAttendList(AttendParamVo vo) { Result result ...
2013-03-13 18:47:15 2928 1
原创 Linux下XAMPP装完之后,Navicat无法连上数据库的问题的解决
Linux下装完XAMPP之后,mysql是自带装好了的,这个时候,mysql的root用户没有密码。首先进入mysql,输入命令:mysql -uroot -p。输入密码时直接回车。设置密码:set password =password('123456');设置完密码之后,用本地的Navicat连接这个mysql,发现连不上,而且出现一个很奇怪的现象,弹出框显示,另一个ip下的roo
2013-03-11 18:46:27 7306
原创 Chrome浏览器未受理ajax请求
问题描述如下:一个A标签,点击的时候执行两个操作,下载一个资源并且同时发出ajax请求。在Chrome浏览器下,ajax请求被cancel掉了,但是firefox很正常。代码如下:下载function insertDownloadLog(fileType){ $.ajax({ url:"/download/insertDownloadLog.action?rand=" + ne
2013-03-07 18:07:38 4894
原创 SQL去重的办法
做会话统计报表的时候,需要对pin去重,存在这样的情况,相同的pin存在不同的技能组。如果在java代码里去重,有多种方法 1,排序后一趟遍历,注意收尾工作。 2,哈希法,简单的做法是重写hashcode()方法,然后把所有的对象纳入hashSet, 3,暴力枚举,复杂度是O(n^2) 4,覆盖equal()方法,然后把所有的对象纳入tree
2013-02-25 18:13:48 7750
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人