`
文章列表
默认情况下 1 阿里的json转换工具,将抛弃对象为空的属性包括包装类型的对象,原子类型按默认值给出值,并对属性进行排序   2 net.sf的json工具对包装类型数据,按照0处理,非包装类型对象,如果是null,则为null,原子类型按默认值给出,字符串按照空串,并对属性进行排序,但是该处理工具可以通过JsonConfig进行一些额外处理。   3 jackjson工具对包装类型数据,按照null处理,废包装类型对象,按照null处理,原子类型默认值处理,字符串,如果是null则给出null,如果是空串,则给空串,并且不对属性排序
以前公司使用的是o数据库,最近在折腾mysql,有个小需求,需要写个存储过程来实现,折腾半天,终于搞定了,特意给记下来   DELIMITER // CREATE PROCEDURE test() BEGIN DECLARE aa INT(11) DEFAULT 0;  SELECT COUNT(*) INTO aa FROM o WHERE order_id = 100001012;  SELECT aa; IF (aa > 0)  THEN  UPDATE o SET oo= 11541 WHERE id = 100001012; ELSE  UPDATE o ...

java 数组拷贝

    博客分类:
  • java
java中大多数用到list作为数组集合非常多,如果对其进行拷贝,一般分几种情况   调用自身的clone方法,这个方法能到数组的拷贝值,不是引用值   利用Arrays.copy()这个工具类提供的   System.copyarray()   如果看一下Arrays.copy方法就会发现,他的底层调用也是使用System.copyarray()方法实现拷贝的
今天有同事问我,两个Integer类型的数值进行比较的时候,为什么老是不相等,之前也接触过,只是记得不太清楚了,好像是包装类型缓存了一个字节的数值吧,然后直接让他换成compareTo进行比较,闲下来,自己又翻了下api,直接贴一下源码了   Integer和Long的包装类型,自己缓存了一个字节的数值,如果进行比较的时候,是调用其valueOf方法,返回对象进行比较,如果这个时候,数值正好在-128---127之间,那么返回的是缓存中的数值,这样进行比较能看到正常的效果,也就是我们用原子类型比较的结果,如果超过这个数值,则是new了一个对象出去,这个时候用==进行比较则是对象直接比较了, ...
深入研究java.lang.ThreadLocal类    http://lavasoft.blog.51cto.com/62575/51926 一、概述   ThreadLocal是什么呢?其实ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是threadlocalvariable(线程局部变量)。也许把它命名为ThreadLocalVar更加合适。线程局部变量(ThreadLocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是Java中一种较为特殊的线程绑定机制,是每一个线程都可以独立地改变自己的副本,而不会和其它 ...
今天在将服务部署到正式环境时,有一个定时发送邮件的功能,老是包 javax.mail.MessagingException: 501 Syntax: HELO hostname异常,后来查了下api,发现javamail在发送邮件的时候,会获取   va在发送邮件的时候,如果是linux环境,提取本地的hostname的时候,会改hostname,然后改ip发送邮件,由于hostname对应的ip地址linux无法解析到本机的hostname的ip,在win下面开发的时候,win是可以解析的,所以开发没有测试出来,解决方案   1 重写hosts文件 2 将javamail升级到1 ...
1.尽量在合适的场合使用单例 使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 控制资源的使用,通过线程同步来控制资源的并发访问; 控制实例的产生,以达到节约资源的目的; 控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2.尽量避免随意使用静态变量 要知道,当某个对象被定义为stataic的变量所引用,那么GC通常是不会回收这个对象所占有的内存,如 public class A{ static B b = new B();} 此时静态变量b的生命周期与A类同步,如果 ...
java虽然是自动回收内存,但是应用程序,尤其服务器程序最好根据业务情况指明内存分配限制。否则可能导致应用程序宕掉。举例说明含义:-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try...catch捕捉。PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象 ...
/** * 获取当前月的第一天,无小时 *  * @date 2014-8-23 * @time 上午10:25:49 * @return * @return Date *  */ public static Date getFistMonthDay() { // 获取前月的第一天 Calendar cal = Calendar.getInstance();// 获取当前日期 cal.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天 cal.set(Calendar.HOUR_OF_DAY, ...
java 打开Eclipse的Window菜单,然后Preferences->Java->Code Style->Formatter->Edit/Show(根据不同版本可用的按钮会不一样) ->Line Wrapping->Maximum line width:由默认的80改成自己想要设定的长度   xml window-preferences-xml-xml file-editor   line width 将默认改掉即可  

comparable和comparator

    博客分类:
  • java
开发肯定会涉及到排序,在java中,普通的数值排序直接使用一系列的算法即可,如果是对象的复杂排序,则可以使用comparable和comparator两个接口来实现,他们两者的区别如下   1 comparable是java.lang包下面的,是使得对象本身即可排序,将对象实现该接口,实现compareTo方法即可,比较该对象本身和传递对象的顺序,通过指定的字段进行比较,如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。比较时,对象可以放在一个数组或者其他集合中,数组使用Arrays.sort(array),集合使用Collections.sort(list)。   2 ...
mysql对数据库的链接有一定的维护时间,默认的是8个小时,同样c3p0对于空闲链接的销毁也有时间限制,如果c3p0的时间设置大于mysql的wait_timeout或是interactive_timeout,当客户端使用数据库链接时,c3p0直接抛出这个链接,但是数据库已经断开的这个链接,从而导致出异常。 解决方案: 1 将c3p0的空闲链接超时设置小于mysql的默认cpool.maxIdleTime=60*60*7 2 定时使用c3p0的空闲链接 cpool.preferredTestQuery='select 1' cpool.idleConnectionTestPeriod ...
如果是list集合,collection直接配置list即可 <foreach item="id" index="index" collection="list" open="(" separator="," close=")">     #{id,jdbcType=INTEGER}  </foreach>   如果是数组,collection配置array  <foreach item="id" index=&q ...

可变集合求交集

    博客分类:
  • java
今天在设计一个接口的时候,接口传递过来的是一个数组,根据数组中的参数去库中查询是否可变更,将可变更的参数再以数组的形式返回给对方。用到了集合求交集的一些东西   首先直接获取的是一个数组,并以数组去库中查询,获取的是一个list,没办法,只有将以前的数组用Arrays.asList转换成一个list,利用list.retainAll(dbList)获取两个集合的交集。这个时候抛出了UnsupportedOperationException的异常。反过来使用dbList.retainAll(list)就没有问题了,后来查了一下api发现Arrays.asList是返回一个指定大小的list, ...
现在网站的主流做法都是nginx作为前端服务器,后面一群应用服务器做负载,这里简单介绍下nginx,tomcat,mem做负载的配置 首先下载nginx,tomcat,mem,以及谷歌做session复制的几个jar   nginx安装非常简单,直接解压即可用,由于是自己的台式机,直接下了一个win环境的,解压后,在文件的根目录下面有一个nginx.exe的文件,启动即运行了nginx,非常简单,主要说一下nginx的配置,打开config目录下面的nginx.conf worker_processes  1;     error_log  logs/error.log; er ...
Global site tag (gtag.js) - Google Analytics