随笔分类 -  java

摘要:httpclient使用了连接池,如果没有设置keep-alive策略,PoolingHttpClientConnectionManager会默认使用永久连接。 最近在调用京东api时,发现一个请求开始是可以获取到数据的,但隔了两分钟后再请求就会出现read timeout异常。对比请求成功和请求失 阅读全文
posted @ 2017-09-29 19:20 涂墨留香 阅读(12841) 评论(0) 推荐(0) 编辑
摘要:RestTemplate是Spring提供的用于访问Rest服务的客户端,提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。RestTemplate 默认使用J2SE提供的方式(既java.net包提供的方式)创建底层的Http请求连接(SimpleClientHttpRequ 阅读全文
posted @ 2017-07-17 15:44 涂墨留香 阅读(5215) 评论(0) 推荐(0) 编辑
摘要:今天在做字符串替换时忽略大小写,网上找到了一个非常简便的方法,使用String的replaceAll方法。 java.lang.String.replaceAll(String regex, String replacement) 第一个参数是正则表达式,可以使用(?i)来忽略字符串大小写。例子如下 阅读全文
posted @ 2017-06-07 10:41 涂墨留香 阅读(9724) 评论(0) 推荐(0) 编辑
摘要:protobuf对象不能直接使用jsonlib去转,因为protobuf生成的对象的get方法返回的类型有byte[],而只有String类型可以作为json的key,protobuf提供方法进行转换。引用maven依赖: com.googlecode.protobuf-java-format... 阅读全文
posted @ 2015-11-05 17:35 涂墨留香 阅读(9358) 评论(0) 推荐(0) 编辑
摘要:使用json默认反序列化接口反序列化对象时,对象的类型必须的确定的,比如不能是抽象类型,否则会报无法实例化对象的异常如有下列类定义: 1 public abstract class AbstracObj { 2 3 private String propCommmon; 4 5 ... 阅读全文
posted @ 2015-07-01 20:31 涂墨留香 阅读(1211) 评论(0) 推荐(0) 编辑
摘要:有时候需要根据实际情况将某个值解释成一个枚举,而不是根据枚举的名称。如有时0是枚举Gender.MALE的值,1是枚举Gender.FEMALE的值;有时0、1又可以是另一个枚举的值,比如0表示CertType.IDENTITY_CARD,1表示CertType.PASSPORT。特别是查询数据库转... 阅读全文
posted @ 2015-04-08 11:43 涂墨留香 阅读(1388) 评论(0) 推荐(0) 编辑
摘要:假设有个对象里有一个list listProperty 属性,要获取Object的类型:Class typeClass = field.getType();if (List.class.isAssignableFrom(typeClass)) { Type fieldType = fiel... 阅读全文
posted @ 2015-04-08 10:52 涂墨留香 阅读(580) 评论(0) 推荐(0) 编辑
摘要:Class clazz = sourceObj.getClass();1、获取所有属性BeanInfo beanInfo = Introspector.getBeanInfo(clazz); PropertyDescriptor[] pds = beanInfo.getProp... 阅读全文
posted @ 2015-04-08 10:43 涂墨留香 阅读(1159) 评论(0) 推荐(0) 编辑
摘要:最近在做城觅网的信息抓取,发现城觅网上海与北京的url是一样的。那怎样才确定信息的来源呢?折腾了半天,才发现城觅网是使用cookie的,如果你把网站的cookie禁用了,就无法在上海与北京之间切换了。于是便想到了请求时将cookie带上。方法如下:第一步,拿到上海或者北京的cookieMap coo... 阅读全文
posted @ 2014-08-25 19:06 涂墨留香 阅读(13470) 评论(0) 推荐(0) 编辑
摘要:最近代码中需要对两个数组求交,想当然便用到了List中的retainAll函数,但要将将数组转换成list。代码如下:String[] abc = new String[] { "abc", "acd", "add" }; String[] abd = new String[] {"acd", "cd", "de"}; List abcList = Arrays.asList(abc); List abdList = Arrays.asList(abd); abcList.r 阅读全文
posted @ 2014-03-17 00:15 涂墨留香 阅读(3080) 评论(0) 推荐(0) 编辑
摘要:最近在做一个查询优化时,考虑到一次查询耗时较多,所以打算用多线程来做,之前是串行查询。比如一个用户查询触发50个线程,在只有一个用户的情况下,性能比串行查询确实提高了许多,但当多个用户同时触发查询的时候,CPU却飙高得很厉害,比串行查询好不了多少。 因为一次查询是同步查询,即要等待所有的线程完成后才返回结果,所以一开始想到的办法是每次查询都起一个线程池,这个线程池里面有50个线程,这个线程池阻塞等待所有的线程完成然后返回结果,从而造成50个用户同时查询时起了50个线程池,cpu资源消耗殆尽。能不能做到所用用户查询触发的线程统一由一个线程池控制呢?百度后终于找到了解决办法。 1 imp... 阅读全文
posted @ 2013-06-23 00:05 涂墨留香 阅读(2579) 评论(0) 推荐(0) 编辑