<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ 痞子的solitude专栏]]></title><description><![CDATA[nothing is impossible , just do it.]]></description><link>https://blog.youkuaiyun.com/ab654126</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ab654126]]></copyright><item><title><![CDATA[hibernate 过滤器]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39552073</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39552073</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 15:08:57 +0800</pubDate><description><![CDATA[Hibernate过滤器（filter）是全局有效的、具有名字、可以带参数的过滤器，对于某个特定的Hibernate session您可以选择是否启用（或禁用）某个过滤器。
    Hibernate3的过滤器可以进行预定义，并可绑定在类和集合层。那么什么叫预定义过滤器呢？就是可以定义象"where"子句的限制性子句，但这些 子句是相对类和不同集合的元素的。除了这些过滤器条件可以被参数化外。系统]]></description><category></category></item><item><title><![CDATA[hibernate 配置大全]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39552017</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39552017</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 15:05:19 +0800</pubDate><description><![CDATA[在J2ee应用中，如果采用Hibernate框架，可以自动建立数据库实体与Java实体类的映射关系，大大方便Java程序进行持久化对象访问和操作，从而明显提高企业应用开发效率，减轻Java程序与后台数据库的依赖性。

但是，有时候如果操作不慎，可能造成映射关系不完整（特别是存在外键链接的时候），造成访问数据库对象时程序有Bug。这时，可以通过参数配置，让 Hibernate在每次需要从数据库查]]></description><category></category></item><item><title><![CDATA[Hibernate 高级查询技巧——集合过滤与子查询]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39551945</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39551945</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 15:01:56 +0800</pubDate><description><![CDATA[1、集合过滤：
     对于一个已经加载的Customer对象，假设对它的orders集合采用延迟加载机制，那么当调用customer.getOrders().iterator()时，Hibernate就会初始化orders集合，然后到数据库中去加载Customer对象所关联的Order对象，并且填充orders集合，但是很多时候我们其实只是需要关联对象中符合某些条件的一部分对象，而并不需要加]]></description><category></category></item><item><title><![CDATA[Hibernate高级查询方法]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39551899</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39551899</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 14:58:34 +0800</pubDate><description><![CDATA[投影查询——过滤部分字段
返回的List集合元素为Object[]
Query query = session.createQuery("select c.cname, c.csex from Customer c");
List list = query.list();
Iterator iter = list.iterator();
Object[] objs = null;
wh]]></description><category></category></item><item><title><![CDATA[hibernate 延迟加载]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39551875</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39551875</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 14:58:33 +0800</pubDate><description><![CDATA[Hibernae 的延迟加载是一个非常常用的技术，实体的集合属性默认会被延迟加载，实体所关联的实体默认也会被延迟加载。Hibernate 通过这种延迟加载来降低系统的内存开销，从而保证 Hibernate 的运行性能。

下面先来剖析 Hibernate 延迟加载的“秘密”。

集合属性的延迟加载

当 Hibernate 从数据库中初始化某个持久化实体时，该实体的集合属性是否随持久化]]></description><category></category></item><item><title><![CDATA[关于hibernate的缓存使用]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/39551849</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/39551849</guid><author>ab654126</author><pubDate>Thu, 25 Sep 2014 14:55:24 +0800</pubDate><description><![CDATA[1.    
关于hibernate缓存的问题：
1.1.1.     
   基本的缓存原理
Hibernate缓存分为二级，第一级存放于session中称为一级缓存，默认带有且不能卸载。
 
第二级是由sessionFactory控制的进程级缓存。是全局共享的缓存，凡是会调用二级缓存的查询方法都会从中受益。只有经正确的配置后二级缓存才会发挥作用。同时在进行条件查询时必须使用相应的方]]></description><category></category></item><item><title><![CDATA[Java synchronized详解]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/38870093</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/38870093</guid><author>ab654126</author><pubDate>Wed, 27 Aug 2014 14:24:21 +0800</pubDate><description><![CDATA[第一篇：
使用synchronized

在编写一个类时，如果该类中的代码可能运行于多线程环境下，那么就要考虑同步的问题。在Java中内置了语言级的同步原语－－synchronized，这也大大简化了Java中多线程同步的使用。我们首先编写一个非常简单的多线程的程序，是模拟银行中的多个线程同时对同一个储蓄账户进行存款、取款操作的。
在程序中我们使用了一个简化版本的Account类，代表了一]]></description><category></category></item><item><title><![CDATA[PHP内核探索：Zend虚拟机]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775837</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775837</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:55:03 +0800</pubDate><description><![CDATA[通过前面的学习，我们了解到一个PHP文件在服务器端的执行过程包括以下两个大的过程：

递给php程序需要执行的文件， php程序完成基本的准备工作后启动PHP及Zend引擎， 加载注册的扩展模块。初始化完成后读取脚本文件，Zend引擎对脚本文件进行词法分析，语法分析。然后编译成opcode执行。 如过安装了apc之类的opcode缓存， 编译环节可能会被跳过而直接从缓存中读取opcode执行。]]></description><category></category></item><item><title><![CDATA[PHP内核探索：PHP脚本的执行细节]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775659</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775659</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:53:08 +0800</pubDate><description><![CDATA[众所周知，计算机的CPU只能执行二进制的机器码，每种CPU都有对应的汇编语言，汇编语言编译器将汇编语言翻译成二进制的机器语言，然后CPU开始执行这些机器码。汇编语言作为机器语言与程序设计者之间的一个层，给我们带来了很多方便，程序员不需要用晦涩的01数字来书写程序，当然人们并不满足这样的一个进步，于是在汇编语言之上又多了一个层——C语言，C语言更贴近人类熟悉的“自然语言”，程序设计者可以通过C语言编]]></description><category></category></item><item><title><![CDATA[PHP内核探索：如何执行PHP脚本]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775543</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775543</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:51:42 +0800</pubDate><description><![CDATA[前面介绍了PHP的生命周期，PHP的SAPI，SAPI处于PHP整个架构较上层，而真正脚本的执行主要由Zend引擎来完成， 这一小节我们介绍PHP脚本的执行。

目前编程语言可以分为两大类：

第一类是像C/C++， .NET， Java之类的编译型语言， 它们的共性是：运行之前必须对源代码进行编译，然后运行编译后的目标文件。第二类比如PHP， Javascript， Ruby， Pyth]]></description><category></category></item><item><title><![CDATA[PHP内核探索：Apache模块介绍]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775299</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775299</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:49:11 +0800</pubDate><description><![CDATA[Apache概述

Apache是目前世界上使用最为广泛的一种Web Server，它以跨平台、高效和稳定而闻名。按照去年官方统计的数据，Apache服务器的装机量占该市场60%以上的份额。尤其是在X（Unix/Linux）平台上，Apache是最常见的选择。其它的Web Server产品，比如IIS，只能运行在Windows平台上，是基于微软.Net架构技术的不二选择。

Apache支]]></description><category></category></item><item><title><![CDATA[PHP内核探索：再次探讨SAPI]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775179</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775179</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:48:15 +0800</pubDate><description><![CDATA[在PHP的生命周期的各个阶段，一些与服务相关的操作都是通过SAPI接口实现。 这些内置实现的物理位置在PHP源码的SAPI目录。这个目录存放了PHP对各个服务器抽象层的代码， 例如命令行程序的实现，Apache的mod_php模块实现以及fastcgi的实现等等。

在各个服务器抽象层之间遵守着相同的约定，这里我们称之为SAPI接口。 每个SAPI实现都是一个_sapi_module_stru]]></description><category></category></item><item><title><![CDATA[PHP内核探索：Zend引擎]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775089</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775089</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:46:28 +0800</pubDate><description><![CDATA[相信很多人都听说过 Zend Engine 这个名词，也有很多人知道 Zend Engine 就是 PHP 语言的核心，但若要问一句：Zend Engine 到底存在于何处？或者说，Zend Engine 究竟是在什么时候怎么发挥作用让 PHP 源码输出我们想要的东西的？

Zend引擎是PHP实现的核心，提供了语言实现上的基础设施。例如：PHP的语法实现，脚本的编译运行环境， 扩展机制以及内]]></description><category></category></item><item><title><![CDATA[PHP内核探索：多进程/线程的SAPI生命周期]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24775009</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24775009</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:45:26 +0800</pubDate><description><![CDATA[多进程的SAPI生命周期

通常PHP是编译为apache的一个模块来处理PHP请求。Apache一般会采用多进程模式， Apache启动后会fork出多个子进程，每个进程的内存空间独立，每个子进程都会经过开始和结束环节， 不过每个进程的开始阶段只在进程fork出来以来后进行，在整个进程的生命周期内可能会处理多个请求。 只有在Apache关闭或者进程被结束之后才会进行关闭阶段，在这两个阶段之间]]></description><category></category></item><item><title><![CDATA[PHP内核探索：单进程SAPI生命周期]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24774925</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24774925</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:44:23 +0800</pubDate><description><![CDATA[CLI/CGI模式的PHP属于单进程的SAPI模式。这类的请求在处理一次请求后就关闭。也就是只会经过如下几个环节： 开始 - 请求开始 - 请求关闭 - 结束 SAPI接口实现就完成了其生命周期。



单进程多请求则如下图所示：]]></description><category></category></item><item><title><![CDATA[PHP内核探索：一次请求生命周期]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24774871</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24774871</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:43:25 +0800</pubDate><description><![CDATA[我们从未手动开启过PHP的相关进程，它是随着Apache的启动而运行的。PHP通过mod_php5.so模块和Apache相连（具体说来是SAPI，即服务器应用程序编程接口）。

PHP总共有三个模块：内核、Zend引擎、以及扩展层。

PHP内核用来处理请求、文件流、错误处理等相关操作；Zend引擎（ZE）用以将源文件转换成机器语言，然后在虚拟机上运行它；扩展层是一组函数、类库和流，PH]]></description><category></category></item><item><title><![CDATA[PHP内核探索：一次请求的开始与结束]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24774761</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24774761</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:41:49 +0800</pubDate><description><![CDATA[PHP开始执行以后会经过两个主要的阶段：

处理请求之前的开始阶段请求之后的结束阶段

开始阶段有两个过程：

第一个过程是模块初始化阶段（MINIT）， 在整个SAPI生命周期内（例如Apache启动以后的整个生命周期内或者命令行程序整个执行过程中）， 该过程只进行一次。

第二个过程是模块激活阶段（RINIT），该过程发生在请求阶段， 例如通过url请求某个页面，则在每次请求之]]></description><category></category></item><item><title><![CDATA[PHP内核探索：从SAPI接口开始]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24774583</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24774583</guid><author>ab654126</author><pubDate>Wed, 30 Apr 2014 10:40:19 +0800</pubDate><description><![CDATA[SAPI:Server Application Programming Interface 服务器端应用编程端口。研究过PHP架构的同学应该知道这个东东的重要性，它提供了一个接口，使得PHP可以和其他应用进行交互数据。 本文不会详细介绍每个PHP的SAPI，只是针对最简单的CGI SAPI，来说明SAPI的机制。

我们先来看看PHP的架构图：



SAPI指的是PHP具体应用的编程]]></description><category></category></item><item><title><![CDATA[MySQL主从同步设置和同步错误处理]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24730271</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24730271</guid><author>ab654126</author><pubDate>Tue, 29 Apr 2014 17:32:13 +0800</pubDate><description><![CDATA[MySQL主从同步设置和同步错误处理  


注意：
1、两台服务器数据库版本应一致，如果不一致，从服务器的版本要高于主服务器的版本。
2、MySQL进行实时数据同步，本质上是将mysql动作同步到Slave服务器，而不是对实质的数据进行同步。所以同步开始前，两端的数据要保持一致。
Master服务器：192.168.0.1
Slave服务器：192.168.0.2


===]]></description><category></category></item><item><title><![CDATA[JVM分代垃圾回收策略的基础概念]]></title><link>https://blog.youkuaiyun.com/ab654126/article/details/24705401</link><guid>https://blog.youkuaiyun.com/ab654126/article/details/24705401</guid><author>ab654126</author><pubDate>Tue, 29 Apr 2014 11:57:20 +0800</pubDate><description><![CDATA[JVM分代垃圾回收策略的基础概念

由于不同对象的生命周期不一样，因此在JVM的垃圾回收策略中有分代这一策略。本文介绍了分代策略的目标，如何分代，以及垃圾回收的触发因素。

文章总结了JVM垃圾回收策略为什么要分代，如何分代，以及垃圾回收的触发因素。



为什么要分代
分代的垃圾回收策略，是基于这样一个事实：不同的对象的生命周期是不一样的。因此，不同生命周期的对象可以采取不同的]]></description><category></category></item></channel></rss>