<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <link xmlns="http://www.w3.org/2005/Atom" rel="hub" href="https://overblog.superfeedr.com"/>
        <link xmlns="http://www.w3.org/2005/Atom" rel="self" href="https://alex2012-c-j.overblog.com/rss" type="application/rss+xml"/>
        <title><![CDATA[JI CAI Tech 博客]]></title>
        <link>https://alex2012-c-j.overblog.com/</link>
        <generator>Overblog - https://www.over-blog.com</generator>
        <description><![CDATA[]]></description>
                    <item>
    <title><![CDATA[5 个学习SQL的网站]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/06/5-sql.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/06/5-sql.html</guid>
    <pubDate>Fri, 26 Jun 2015 11:32:55 +0200</pubDate>
    <description><![CDATA[1. http://sqlzoo.net/ 2. https://lagunita.stanford.edu/courses/DB/SQL/SelfPaced/courseware/ch-sql/seq-vid-introduction_to_sql/ 3.https://www.khanacademy.org/computing/computer-programming/sql 4.http://sqlbolt.com/ 5.http://www.essentialsql.com/ ref:h... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Spring AOP 在工作中的使用，MultiCustomer不同需求管理]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/03/spring-aop.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/03/spring-aop.html</guid>
    <pubDate>Mon, 15 Jun 2015 23:29:25 +0200</pubDate>
    <description><![CDATA[使用请注明出处：http://alex2012-c.j.overblog.com/ 很多项目使用了Spring，其中AOP（面向切面编程）是很重要的思想。 AOP用处很多，比如事务管理，日志管理等。AOP的使用是为了以更加灵活的方式来解决问题。 工作开发内容是实现多机场管理，不同机场有不同的需求，我们对客户所需要的功能进行了一些parameter的定义，对于哪个机场激活哪些parameter？ 此时引进了AOP功能，设计了Feature函数，用Feature来实现对不同机场不同需求的控制。 例如，在系统中定义了function1,function2,function3作为parameter。实际应用中，慕尼黑机场使用到了1和3，尼斯机场使用到了2和3，哥本哈根机场使用了2。... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Iterator 遍历问题]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/01/iterator.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/01/iterator.html</guid>
    <pubDate>Tue, 05 May 2015 22:51:16 +0200</pubDate>
    <description><![CDATA[实例CODE ：
结果如下 ： Original contents of al: FlightA FlightB FlightC FlightD Modified contents of al: FlightA+ FlightB+ FlightC+ FlightD+ Modified list backwards: FlightD+ FlightC+ FlightB+ FlightA+ ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Hibernate 中拷贝Object数据的问题]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/01/hibernate-object.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/01/hibernate-object.html</guid>
    <pubDate>Wed, 22 Apr 2015 22:22:42 +0200</pubDate>
    <description><![CDATA[有以下数据表格 Flight Table : FlightID FlightNumber Timing Table : TimingID FlightID TimingName TimingValue 由以上结构看出来，flightID是flight表格的key，timingID是timing表格的key，flightID是timing表格的foreign key。 有object：FlightA（12，FR123） FlightB（13，FR456） TimingA（90，12，LandingTime，12:00）... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[GET / POST 区别]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/03/get-post.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/03/get-post.html</guid>
    <pubDate>Sat, 21 Mar 2015 19:32:45 +0100</pubDate>
    <description><![CDATA[在rest service中， 有get、post两种请求模式。有时候可以达到同样的效果。但是背后却有区别。 １． 表达： GET /blog/?name1=value1&name2=value2 HTTP/1.1 Host: XXXX.com POST /blog/ HTTP/1.1 Host: XXXX.com name1=value1&name2=value2 ２． GET的好处 GET requests can be cached GET requests can remain in the... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Jackson serialization unexpected field ]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/03/jackson-serialization-unexpected-field.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/03/jackson-serialization-unexpected-field.html</guid>
    <pubDate>Sun, 15 Mar 2015 16:50:37 +0100</pubDate>
    <description><![CDATA[Jackson 在转换JSON的时候，有时候会有unrecognized field，原因是因为在Object Class 中加入了一个method来判断这个Object是否空。 在serialization的时候， Jackson发现一个新的attribute “NOTEMPTY” public boolean isNotEmpty() { return NullCheckUtil.isValueNotEmpty(unit) || NullCheckUtil.isValueNotEmpty(qualifier)... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[处理文件字符串中的mapping]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/02/mapping.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/02/mapping.html</guid>
    <pubDate>Mon, 02 Feb 2015 22:09:25 +0100</pubDate>
    <description><![CDATA[假定有一个文件，每一行对应着两个String，每当遇到逗号前的String，我希望得到逗号后面的String。类似于一个翻译dictionary。此时可以建立一个dictionary mapping。code如下 ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[equals hashcode 注意事项]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/10/equals-hashcode.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/10/equals-hashcode.html</guid>
    <pubDate>Sat, 20 Dec 2014 23:51:20 +0100</pubDate>
    <description><![CDATA[在java中比较两个instance，有两个函数非常重要equals和hashcode，这里也会出现很多问题。工作中就有很多bug是来自于这两个函数。 总结了一下注意事项。 重写equals函数的时候 在覆盖equals方法的时候，你必须要遵守它的通用约定。下面是约定： 自反性。对于任何非null的引用值x，x.equals(x)必须返回true。 对称性。对于任何非null的引用值x和y，当且仅当y.equals(x)返回true时，x.equals(y)必须返回true 传递性。对于任何非null的引用值x、y和z，如果x.equals(y)返回true，并且y.equals(z)也返回true，那么x.equals(z)也必须返回true。... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Java中遍历list删除特定元素]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/12/java-list.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/12/java-list.html</guid>
    <pubDate>Fri, 05 Dec 2014 22:18:52 +0100</pubDate>
    <description><![CDATA[在项目开发中，我们可能往往需要动态的删除ArrayList中的一些元素。 最容易，最简单也是错误的方法是： for(int i = 0 , len= list.size();i<len;++i){ if(list.get(i)==XXX){ list.remove(i); } } 上面这种方式会抛出如下异常： Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 at java.util.ArrayList.RangeCheck(Unknown... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[kanban 看板管理法]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/11/kanban.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/11/kanban.html</guid>
    <pubDate>Tue, 25 Nov 2014 13:44:28 +0100</pubDate>
    <description><![CDATA[严禁转载，使用请注明出处：http://alex2012-c.j.overblog.com/ 作为Agile Master，我们组使用了看板管理方法。并有详细的规定。 kanban管理方法和敏捷开发有着很多的类似之处。工作中，每天都有standup组会，向大家介绍自己的工作进度。 我们有一个板子，板子上有很多的便利贴，代表不同的任务，板子分为5列: to do/analyse/dev/test/done 每列有自己的标准 Content In Kanban, the main item used... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[DTO/Domain converter]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/11/converter.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/11/converter.html</guid>
    <pubDate>Wed, 05 Nov 2014 13:41:28 +0100</pubDate>
    <description><![CDATA[在大型Web Service的项目中，从客户端接收到的信息格式和app内部处理信息的格式是不同的，此时需要有一层converter来转换。 但是长期的项目，使得converter很难维护，有些重复，也有些是无用的，造成了一些bug。 网上查找，有两种解决方案比较合适，有待继续研究： http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping 通过比较更有利于项目的可能是： Dozer和ModelMapper... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[UI framework]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2015/12/ui-framework.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2015/12/ui-framework.html</guid>
    <pubDate>Fri, 24 Oct 2014 22:16:47 +0200</pubDate>
    <description><![CDATA[Mail from team mate : Just wanted to share something with you. In case you have some interest in UI development. Here below a I list of UI frameworks/tools that I am using for personal projects and which I believe represent (together) a very strong set-up... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[HQL-hibernate 管理]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/10/hql.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/10/hql.html</guid>
    <pubDate>Sat, 04 Oct 2014 23:50:55 +0200</pubDate>
    <description><![CDATA[使用请注明出处：http://alex2012-c.j.overblog.com/ 使用hibernate用java对数据库进行操作，通常在一个DAO中会有很多很多HQL的查询语句，长期下去语句越来越多，不断的修改，导致有些语句已经不用了，但是还是依然在代码中。对代码的维护造成了很大的麻烦。 在这里提出一个建议，可以把每一个语句建为一个class，这样非常有利于维护。建议文档，以airport IT application为例： Context When you are working with... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[amadeus 工作模式]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/02/amadeus.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/02/amadeus.html</guid>
    <pubDate>Wed, 24 Sep 2014 13:25:18 +0200</pubDate>
    <description><![CDATA[在amadeus工作了一年多了，很喜欢这里的工作环境，我们组是分为两个部分的，九个人在法国，其中一个实习生，七个人在印度。所以经常需要电话或者视频会议，或者单独的电话，chat讨论东西。 每天都在学习着新的知识。每天都有着不同的挑战。 我们所使用的开发语言是java。 技术关键字： Hibernate，Spring，Maven，Oracle，Drool，Jekins.... Amadeus是很成熟的软件开发公司，对很多流程都有着很成熟的步骤。比如Win@proach来追踪bug处理进度，可能是测试团队发来bug，也可能是客户直接发来。比如Jekins来负责日常构建，跑测试，部署等。比如Git/Stash来进行版本开发。比如ErrorViewer来观测不同平台的错误信息。比如Sentinel来检测报警信息等。... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[functional tests multi thread 多线程运行测试程序]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/08/functional-tests-multi-thread.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/08/functional-tests-multi-thread.html</guid>
    <pubDate>Wed, 10 Sep 2014 16:40:17 +0200</pubDate>
    <description><![CDATA[为保证系统正常运行，实际工作中经常需要写功能测试Functional Tests。但是随着系统的成熟，test case越来越多，所以所需要的test越来越多。 例如我们的系统有将近1000+个测试程序。有些测试程序需要wait，pause等，如果单线程运行程序可能会花十几个小时，甚至几十个小时。所以必须使用多线程。 使用maven只需要在pom文件中进行简单的配置即可。 <build></build>中定义<execution>进行配置。 所有测试程序分为三类： 1.可以并行执行 2.不可以并行执行（会对其他测试进行影响）... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Java中的toString]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/08/java-tostring.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/08/java-tostring.html</guid>
    <pubDate>Sat, 16 Aug 2014 19:29:27 +0200</pubDate>
    <description><![CDATA[Q：toString() 方法实现了什么功能？ A：toString() 方法将根据调用它的对象返回其对象的字符串形式，通常用于 debug。 Q：当 toString() 方法没有被覆盖的时候，返回的字符串通常是什么样子的？ A：当 toString() 没有被覆盖的时候，返回的字符串格式是 类名@哈希值，哈希值是十六进制的，举例说，假设有一个 Employee 类，toString() 方法返回的结果可能是 Empoyee@1c7b0f4d. Q：能提供一个正确覆盖 toString() 方法的例子吗？... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Oracle 效率 Cost Based Optimizer （第二部分）]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/07/oracle-2.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/07/oracle-2.html</guid>
    <pubDate>Thu, 14 Aug 2014 23:38:24 +0200</pubDate>
    <description><![CDATA[严禁转载，使用请注明出处：http://alex2012-c.j.overblog.com/ 参加公司Oracle Optimization的三天培训，总结了报告。第二部分。
CBO and execution plans Execution plan & statistics Plan to access the data (access path), Oracle evaluate several and selects the cheapest (cost based). Time shown... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Oracle 效率 Cost Based Optimizer （第一部分）]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/07/oracle.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/07/oracle.html</guid>
    <pubDate>Fri, 04 Jul 2014 23:34:35 +0200</pubDate>
    <description><![CDATA[严禁转载，使用请注明出处：http://alex2012-c.j.overblog.com/ 参加公司Oracle Optimization的三天培训，总结了报告。第一部分。
Anti patterns or performance pitfalls Implicit conversions (e.g. data defined as VARCHAR but queried with a numeric value => the VARCHAR will always be converted)... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[MongoDB training report]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/10/mongo.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/10/mongo.html</guid>
    <pubDate>Tue, 10 Jun 2014 13:40:39 +0200</pubDate>
    <description><![CDATA[严禁转载，使用请注明出处：http://alex2012-c.j.overblog.com/ 有机会参加了两天的MongoDB training，写了一下报告（报告节选一部分）： You will find here the notes that I’ve taken during the “Advanced MongoDB” training. First the overall impression I’ve had about Mongo as a DB solution for airport... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[linux 基础 grep]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/05/linux.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/05/linux.html</guid>
    <pubDate>Sat, 24 May 2014 23:33:25 +0200</pubDate>
    <description><![CDATA[在工作中，最常用的指令是less和grep用来查看日志信息。 Linux系统中grep命令是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹 配的行打印出来。grep全称是Global Regular Expression Print，表示全局正则表达式版本，它的使用权限是所有用户。 grep的工作方式是这样的，它在一个或多个文件中搜索字符串模板。如果模板包括空格，则必须被引用，模板后的所有字符串被看作文件名。搜索的结果被送到标准输出，不影响原文件内容。 grep可用于shell脚本，因为grep通过返回一个状态值来说明搜索的状态，如果模板搜索成功，则返回0，如果搜索不成功，则返回1，如果搜索的文件不存在，则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[oracle index]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/05/oracle.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/05/oracle.html</guid>
    <pubDate>Sun, 04 May 2014 23:31:50 +0200</pubDate>
    <description><![CDATA[基本知识： 1.index需要储存空间和I/O操作。 2.index的目的是加快select的速度的。 3.insert,update,delete数据oracle会同时对索引进行相应的调整，因此会增加一定的消耗。 4.使用index一定能加快select速度吗？不是的，数据少和巨大时index会影响select的速度，因此如果查询速度可以满足，就不要建index。 5．Index 对null 无效。 创建index时的注意事项： 1.balance query and DML needs: 索引的目的是为了提高查询速度，但它会加重DML的负担。... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[apache story]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/08/jboss.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/08/jboss.html</guid>
    <pubDate>Tue, 15 Apr 2014 23:42:25 +0200</pubDate>
    <description><![CDATA[跟apache（阿帕奇）相关的软件名词随处可见，例如： 1 hadoop:2 tomcat:3 s4: 那么apache是个什么样的存在呢？一个软件工具或者框架是apache项目意味着什么？ 首先，他是一个维护开源软件项目的非盈利组织。也就是说，这个叫阿帕奇组织的团队，维护了很多开源项目，包括开源代码管理，项目补丁，升级等。这些项目都称为阿帕奇的顶级项目或者孵化器项目。至于为什么会有这样一个组织，他是怎么来的。可以打一个比方，说一个故事来说明： 原来有一群技术达人，设计出了一款跑车（apache... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[xsd中的继承关系如果写？]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/03/xsd.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/03/xsd.html</guid>
    <pubDate>Thu, 06 Mar 2014 21:20:39 +0100</pubDate>
    <description><![CDATA[在实习写xsd文件时候，通常需要有继承关系。 下面是我们组的一个继承关系的例子。以及代码。 首先看如下类图
下面是部分xsd代码： LegDataType.xsd:
FlightLegDataType.xsd:
GroundLegDataType.xsd:
下面是生成的java代码： ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[java 设计模式]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/01/java.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/01/java.html</guid>
    <pubDate>Sat, 25 Jan 2014 08:24:25 +0100</pubDate>
    <description><![CDATA[在工作或者学习中用到的 java 设计模式 的总结：
1、工厂方法模式（Factory Method） 11、普通工厂模式 ，就是建立一个工厂类，对实现了同一接口的一些类进行实例的创建。最常用的。 首先，创建二者的共同接口： public interface Sender { public void Send(); } 其次，创建实现类： public class MailSender implements Sender { @Override public void Send() { System.out.println("this... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
                    <item>
    <title><![CDATA[Spring中transaction]]></title>
    <link><![CDATA[https://alex2012-c-j.overblog.com/2014/01/spring-transaction.html]]></link>
    <guid>https://alex2012-c-j.overblog.com/2014/01/spring-transaction.html</guid>
    <pubDate>Sat, 04 Jan 2014 23:23:18 +0100</pubDate>
    <description><![CDATA[Spring中transaction // 如果有事务,那么加入事务,没有的话新建一个(不写的情况下) @Transactional(propagation=Propagation.REQUIRED) // 容器不为这个方法开启事务 @Transactional(propagation=Propagation.NOT_SUPPORTED) // 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务 @Transactional(propagation=Propagation.REQUIRES_NEW)... ]]></description>
        <dc:creator><![CDATA[]]></dc:creator>
    </item>
            </channel>
</rss>

