posts - 339,  comments - 95,  views - 178万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
08 2013 档案
SimpleDateFormat的线程安全问题与解决方案
摘要:1. 原因SimpleDateFormat(下面简称sdf)类内部有一个Calendar对象引用,它用来储存和这个sdf相关的日期信息,例如sdf.parse(dateStr), sdf.format(date) 诸如此类的方法参数传入的日期相关String, Date等等, 都是交友Calenda... 阅读全文
posted @ 2013-08-29 23:52 ZimZz 阅读(66685) 评论(18) 推荐(8) 编辑
未解决问题备份
摘要:1. 对于重复类的问题依然不太明确 记得当时上课的时候说过一些,但是不太记得了,是否是这样?如下:当我们有两个不同的jar包 test-1.0.jar test-2.0.jar, 而这两个jar包定义了相同的全限定类,并且两个jar同时存在与classpath时,jvm在使用哪个jar包的同名类上是不确定的,可能因不同的JVM而异,例如会使用先加载的那个jar包 而这样造成的问题就是不确定性,有可能test-1.0里的类与test-2.0里的同名类存在不兼容的问题,例如类内的方法可能实现已经不一样了 而我们在实现项目的时候实际上也有重复类的现象,例如qsso和jcl-over-slf4... 阅读全文
posted @ 2013-08-29 01:02 ZimZz 阅读(627) 评论(0) 推荐(0) 编辑
手动项目发布流程
摘要:1. 申请建立数据库2. 使用rz将war打包到跳板机3. 使用scp将war传到开发机4. 在 /home/q/www 里复制项目模板带自定义文件夹testproject5. 修改testproject里的conf/server.xml里面的server shutdown port和connector port6. 使用 /home/q/tools/bin/start_tomcat.sh /home/q/www/testproject 来启动项目7. 完工 阅读全文
posted @ 2013-08-28 00:24 ZimZz 阅读(511) 评论(0) 推荐(0) 编辑
Maven 命令速记
摘要:1. 创建项目1) 创建父目录mvn archetype:generate -DgroupId=com.qunar.training -DartifactId=training -Dversion=1.0.0 -DinteractiveMode=false -DarchetypeGroupId=or... 阅读全文
posted @ 2013-08-27 15:33 ZimZz 阅读(576) 评论(0) 推荐(0) 编辑
MyBatis+Spring SQL效率测试报告
摘要:1. 数据库结构2. insert 测试insert 的测试包括1) 批量拼接values()插入2) 有事务for循环插入3) 无事务for循环插入测试 SQL: ( #{post.title}, #{post.content}, #{post.author}, #{post.status}, #{post.created} ) 测试代码... 阅读全文
posted @ 2013-08-26 23:27 ZimZz 阅读(4639) 评论(0) 推荐(0) 编辑
Java NIO
摘要:Java NIO 是Java新的IO类库(相对于旧IO来说),它的目的是提高速度.虽然旧IO已经使用NIO重新实现过,但是显示使用NIO对于文件IO和网络IO的速度还是有很大提升.NIO的体系结构比较简单,主要围绕的是FileChannel和ByteBuffer来使用FileChannel相当于IO... 阅读全文
posted @ 2013-08-26 00:44 ZimZz 阅读(2661) 评论(1) 推荐(0) 编辑
Endianess(字节次序)简介
摘要:1. 基础在解释Endianess前,需要先明白几个基础定义1) 数据的高位与低位是什么以1001001为例,则从左边算起是 高位 -> 低位, 简而言之就是左边是高位,右边是低位而内存中一般来说是以字节为单位来表示数据,所以对于数字 int 型 0x12345678 来说如下2) 多字节数据在内存中的存储地址表示一般来说我们表示某个数据的内存地址都是取它的内存地最低位置地址表示,例如a = 0x1234567占据了内存的地址0x100,0x101,0x102,0x103四个字节,则a的内存地址为0x1002. Endianess的定义Endianess指的是字节在在内存中的存储次序,一 阅读全文
posted @ 2013-08-25 14:55 ZimZz 阅读(3571) 评论(0) 推荐(0) 编辑
Maven重复类的解决
摘要:1. 设置仓库,我的Settings里设置使用了公司的Nexus D:\mavenrepo snapshots snapshots xxx 664 775 releases xxx Nexus Releases xxxx false snapshots ... 阅读全文
posted @ 2013-08-23 12:05 ZimZz 阅读(10936) 评论(0) 推荐(0) 编辑
[转]Unicode和UTF-8的关系
摘要:Unicode和UTF-8的关系作者:张军原文地址:http://blog.renren.com/blog/284133452/485453790今天中午,我突然想搞清楚Unicode和UTF-8之间的关系,于是就开始在网上查资料。结果,这个问题比我想象的复杂,从午饭后一直看到晚上9点,才算初步搞清楚。下面就是我的笔记,主要用来整理自己的思路。但是,我尽量试图写得通俗易懂,希望能对其他朋友有用。毕竟,字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两 阅读全文
posted @ 2013-08-22 22:38 ZimZz 阅读(328) 评论(0) 推荐(0) 编辑
Java IO 体系结构
摘要:参考文章地址:http://blog.csdn.net/oracle_microsoft/article/details/2634231Java IO体系结构看似庞大复杂,其实有规律可循,要弄清楚其结构,需要明白两点:1. 其对称性质:InputStream 与 OutputStream, Reader 与 Writer,他们分别是一套字节输入-输出,字符输入-输出体系2. 原始处理器(适配器)与链接流处理器(装饰器)其结构图如下:InputStream-OutputStream体系Reader-Writer体系1. 基类InputStream与OutputStream是所有字节型输入输出流的 阅读全文
posted @ 2013-08-19 22:08 ZimZz 阅读(6555) 评论(0) 推荐(0) 编辑
建造者模式(Builder)
摘要:建造者模式是对象创建型设计模式之一,他主要用于构造复杂对象,而这个复杂对象则可以由多组不同的产品族构成,其结构原理图如下:其中关键部件有两个1. BuilderBuilder定义了生产复杂对象的组件的抽象接口(BuildPart)和获取这个复杂对象的方法(GetResult),但他自己本身并不装配对象,简言之Builder是生成复杂对象部件的接口提供者2. DirectorDirector定义了装配复杂对象的接口,它使用Builder提供的生产复杂对象组件的方法来生成组件,并将其装配起来,最后调用GetResult返回该复杂对象例子:ComponentBody组件族public abstrac 阅读全文
posted @ 2013-08-18 17:00 ZimZz 阅读(536) 评论(0) 推荐(0) 编辑
MyBatis使用Collection查询多对多或一对多结果集bug
摘要:情况描述:当使用JOIN查询,如果SQL查询出来的记录不是按id列排序的,则生成的List结果会有问题案例:1) 数据库模型简而言之一个Goods包含多个Goods_Img2) Java BeanGoods.javapublic class Goods { private Integer goodsId; private String goodsName; private Integer goodsStorageNum; private Integer goodsScore; private GoodsStatus goodsStatus; private ... 阅读全文
posted @ 2013-08-16 22:08 ZimZz 阅读(86716) 评论(8) 推荐(7) 编辑
Bug集
摘要:1. Spring MVC 双请求问题viewresolver一定要放在servlet-dispatcher.xml里,否则会导致在请求成功后以后渲染页面,然后又发一次请求的状况,最后导致页面无法显示.例如以下Controller方法@RequestMapping("loginPage")public String loginPage() { return "loginView"; }会造成如下log输出00:31:30.836 [http-bio-8080-exec-8] DEBUG o.s.web.servlet.DispatcherServlet 阅读全文
posted @ 2013-08-16 18:11 ZimZz 阅读(5202) 评论(0) 推荐(0) 编辑
利用MyBatis的动态SQL特性抽象统一SQL查询接口
摘要:1. SQL查询的统一抽象MyBatis制动动态SQL的构造,利用动态SQL和自定义的参数Bean抽象,可以将绝大部分SQL查询抽象为一个统一接口,查询参数使用一个自定义bean继承Map,使用映射的方法构造多查询参数.在遇到多属性参数(例如order by,其参数包括列名,升序降序类型,以及可以多个列及升降序类型凭借在order by之后)无法使用简单的key-value表示时,可以将参数单独抽象为一个类.将要用到的beanpackage com.xxx.mybatistask.bean;import com.xxx.mybatistask.support.jsonSerializer.Js 阅读全文
posted @ 2013-08-09 14:17 ZimZz 阅读(27767) 评论(5) 推荐(0) 编辑
MyBatis 物理分页
摘要:MyBatis使用RowBounds实现的分页是逻辑分页,也就是先把数据记录全部查询出来,然在再根据offset和limit截断记录返回为了在数据库层面上实现物理分页,又不改变原来MyBatis的函数逻辑,可以编写plugin截获MyBatis Executor的statementhandler,重写SQL来执行查询参考资料:http://blog.csdn.net/hupanfeng/article/details/9265341下面的插件代码只针对MySQLplugin代码package plugin;import java.sql.Connection;import java.sql.P 阅读全文
posted @ 2013-08-07 13:53 ZimZz 阅读(24409) 评论(1) 推荐(0) 编辑
MyBatis Lazy Loading
摘要:MyBatis的Lazy Loading可以实现延迟查询Bean里的嵌套成员类,控制lazy loading的属性有lazyLoadingEnabled: lazy loading开关,默认为trueaggressiveLazyLoading: 侵略性 lazy loading 开关, 默认为true, 这个属性比较搞笑,如果为true则当你访问任何一个属性都会加载所有的其他lazy load属性,即使你根本没有调用哪个lazy load属性,说白了就是aggressiveLazyLoading=true,则lazy load等于没用,所以要使用lazy load还是将其设为false一个使用 阅读全文
posted @ 2013-08-06 17:49 ZimZz 阅读(7209) 评论(0) 推荐(0) 编辑
DAO,Service接口与实现类设计
摘要:DAO接口为每个DAO声明接口的好处在于1. 可以在尚未实现具体DAO的时候编写上层代码,如Service里对DAO的调用2. 可以为DAO进行多实现,例如有JDBCDAO实现,MyBatisDAO实现,而不需要更改上层代码,只需要简单的在Spring的IoC配置里修改一下注入的DAO实现Service接口1. 可以在尚未实现具体Service情况下编写上层改代码,如Controller对Service的调用2. Spring无论是AOP还是事务管理的实现都是基于动态代理的,而动态代理的实现依赖于接口,所以必须有接口的定义才能使用这些功能3. 可以对Service进行多实现总的来说,接口的优势 阅读全文
posted @ 2013-08-06 01:20 ZimZz 阅读(6401) 评论(0) 推荐(0) 编辑
MyBatis 缓存
摘要:MyBatis缓存分为一级缓存和二级缓存一级缓存MyBatis的一级缓存指的是在一个Session域内,session为关闭的时候执行的查询会根据SQL为key被缓存(跟mysql缓存一样,修改任何参数的值都会导致缓存失效)1)单独使用MyBatis而不继承Spring,使用原生的MyBatis的SqlSessionFactory来构造sqlSession查询,是可以使用以及缓存的,示例代码如下public class Test { public static void main(String[] args) throws IOException { String conf... 阅读全文
posted @ 2013-08-05 23:37 ZimZz 阅读(76002) 评论(5) 推荐(8) 编辑
MyBatis 查询示例
摘要:环境搭建数据库schema1)datasource.xml配置 2.applicationContext.xml --> 3. log4j.propertie... 阅读全文
posted @ 2013-08-05 16:05 ZimZz 阅读(14752) 评论(0) 推荐(0) 编辑
MyBatis-Spring 执行SQL语句的流程
摘要:1. 从SqlSessionDaoSupport开始通常我们使用MyBatis会让自己的DAO继承SqlSessionDaoSupport,那么SqlSessionDaoSupport是如何运作的呢,下面是SqlSessionDaoSupport的源代码/* * Copyright 2010 The myBatis Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the 阅读全文
posted @ 2013-08-03 23:24 ZimZz 阅读(15575) 评论(0) 推荐(2) 编辑
MySQL 查询缓存
摘要:MySQL查询缓存可以跳过SQL解析优化查询等阶段,直接返回缓存结果给用户,查询缓存的工作流程如下:命中条件缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中.如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的工作流程1. 服务器接收SQL,以SQL和一些其他条件为key查找缓存表(额外性能消耗)2. 如果找到了缓存,则直接返回缓存(性能 阅读全文
posted @ 2013-08-03 11:02 ZimZz 阅读(26210) 评论(0) 推荐(3) 编辑
从原型模式(Prototype Pattern)到 Clone
摘要:前面提到抽象工厂的实现,这里说说抽象工厂的原型实现,与工厂方法的实现不同,原型实现有他自己的优点和缺点原型的优点:1. 效率:clone是native方法,比new的效率高,当使用复杂循环嵌套对象是尤为明显2. 不需要为每一个新增的product创造一个具体factory缺点:1. 如果需要深复制,则需要手写所有包含循环引用对象的类的clone方法,因为需要手动在clone方法里对引用对象进行clone,否则是浅复制2. 当需要改变一个克隆实例内部的值时,由于clone方法是无参方法,只能在clone完以后手动调用改变值得方法,且如果这个值是一个类的引用,则克隆应该建立在深复制的前提下,否则会 阅读全文
posted @ 2013-08-01 15:20 ZimZz 阅读(412) 评论(0) 推荐(0) 编辑
抽象工厂(Abstract Factory),工厂方法(Factory Method),单例模式(Singleton Pattern)
摘要:在谈工厂之前,先阐述一个观点:那就是在实际程序设计中,为了设计灵活的多态代码,代码中尽量不使用new去实例化一个对象,那么不使用new去实例化对象,剩下可用的方法就可以选择使用工厂方法,原型复制等去实例化这个对象,好处就是客户端并不知道这个实例化的对象的实际实现,从而可以将这个对象随意替换成我们需要的不同实现工厂方法(Factory Method)概念:定义一个用于创建对象的接口,让子类决定实例化哪个类.它使一个类的实例化延迟到其子类结构图:抽象工厂(Abstract Factory)概念: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类.结构图:单例模式(Singleto 阅读全文
posted @ 2013-08-01 15:11 ZimZz 阅读(715) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示