<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/meng_lin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; meng_lin]]></copyright><item><title><![CDATA[C/C++内存对齐]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83663921</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83663921</guid><author>meng_lin</author><pubDate>Wed, 30 Jun 2010 23:08:43 +0800</pubDate><description><![CDATA[C/C++内存对齐

一、什么是字节对齐,为什么要对齐?
    现代计算机中内存空间都是按照byte划分的，从理论上讲似乎对任何类型的变量的访问可以从任何地址开始，但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问，这就需要各种类型数据按照一定的规则在空间上排列，而不是顺序的一个接一个的排放，这就是对齐。
    对齐的作用和原因：各个硬件平台对存储空间的处理上有很大的不同。...]]></description><category></category></item><item><title><![CDATA[遍历问题]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83644591</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83644591</guid><author>meng_lin</author><pubDate>Fri, 18 Jun 2010 11:49:03 +0800</pubDate><description><![CDATA[题目如下：用1、2、2、3、4、5这六个数字，用java写一个main函数，打印出所有不同的排列，如：512234、412345等，要求：&quot;4&quot;不能在第三位，&quot;3&quot;与&quot;5&quot;不能相连。

  基本思路：
1 把问题归结为图结构的遍历问题。实际上6个数字就是六个结点，把六个结点连接成无向连通图，对于每一个结点求这个图形的遍历路径，所有结点的遍历路径就是最后对这6个数字的排列组合结果集。
2 显...]]></description><category></category></item><item><title><![CDATA[java class 文件结构的分析]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83492788</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83492788</guid><author>meng_lin</author><pubDate>Sun, 22 Nov 2009 17:57:54 +0800</pubDate><description><![CDATA[代码：
public class test
{
 public static void main(String arg[])
 {
  System.out.Println(&quot;Hello world&quot;);
 }
}
生成class文件
test Class File Structor:
Magic Number----0XCafeBabe 四个字节
Minor Version...]]></description><category></category></item><item><title><![CDATA[Java对象的强、软、弱和虚引用]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83491566</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83491566</guid><author>meng_lin</author><pubDate>Thu, 19 Nov 2009 11:08:07 +0800</pubDate><description><![CDATA[在JDK1.2以前的版本中，当一个对象不被任何变量引用，那么程序就无法再使用这个对象。也就是说，只有对象处于可触及状态，程序才能使用它。这 就像在日常生活中，从商店购买了某样物品后，如果有用，就一直保留它，否则就把它扔到垃圾箱，由清洁工人收走。一般说来，如果物品已经被扔到垃圾箱，想再 把它捡回来使用就不可能了。

    但有时候情况并不这么简单，你可能会遇到类似鸡肋一样的物品，食之无味，弃之...]]></description><category></category></item><item><title><![CDATA[java class文件格式解析(摘)]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83489635</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83489635</guid><author>meng_lin</author><pubDate>Sat, 14 Nov 2009 10:48:18 +0800</pubDate><description><![CDATA[1．目的

大型软件系统开发时，某些Java组件可能涉及到多种数据库或中间件系统的连接和应用，例如一个数据传递组件需要从DB2中读取数据，并将数据通过中间件 WebSphere MQ发送到其他系统，这类组件功能单一，但却需要连接多种第三方产品，使得程序员的单元测试变的非常不便，程序员不得不注视或修改部分源代码，或者在本地安装所需第三方产品。无疑这两种选择都是痛苦的。

基于以上的不便，本文...]]></description><category></category></item><item><title><![CDATA[[C++对象模型][4]指针与字符串 ]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83470832</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83470832</guid><author>meng_lin</author><pubDate>Sat, 17 Oct 2009 15:25:38 +0800</pubDate><description><![CDATA[开始之前必须明确strlen的含义，原型为size_t strlen( char *str ); strlen返回字符串的长度，即null(\0)之前的字符的数量。

一 char* 与 char []

实例加注释：

Code 
[code=&quot;java&quot;]void TestCharPointerAndArray() 
{ 
    char *c1 = &quot;abc&quot;; //ab...]]></description><category></category></item><item><title><![CDATA[Semaphore]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83468497</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83468497</guid><author>meng_lin</author><pubDate>Mon, 12 Oct 2009 11:58:23 +0800</pubDate><description><![CDATA[[code=&quot;java&quot;]package projects.debug.learn;

import java.util.Collection;
import java.util.Iterator;
import java.util.Queue;
import java.util.concurrent.Semaphore;

public class SyncQueue implem...]]></description><category></category></item><item><title><![CDATA[多线程之CountDownLatch]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83468441</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83468441</guid><author>meng_lin</author><pubDate>Mon, 12 Oct 2009 10:58:31 +0800</pubDate><description><![CDATA[[code=&quot;java&quot;]package projects.debug.learn;

import java.util.concurrent.CountDownLatch;

public class CountDownLatchTest
{
	public void CountDownLatchExa() throws InterruptedException
	{
		fin...]]></description><category></category></item><item><title><![CDATA[JDK5 concurrent 并行包之CyclicBarrier ]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83468426</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83468426</guid><author>meng_lin</author><pubDate>Mon, 12 Oct 2009 10:40:00 +0800</pubDate><description><![CDATA[[code=&quot;java&quot;]package projects.debug.learn;

import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

public class part1
{

	/**
	 * This static mehthod ...]]></description><category></category></item><item><title><![CDATA[原子变量(AtomicLong, AtomicInteger, AtomicReference) ]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83468274</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83468274</guid><author>meng_lin</author><pubDate>Sun, 11 Oct 2009 18:40:13 +0800</pubDate><description><![CDATA[J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值（更新）操作. 比如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递增。在需要访问两个或两个以上 atomic变量的程序代码（或者是对单一的atomic变量执行两个或两...]]></description><category></category></item><item><title><![CDATA[yield(),sleep()以及wait()的区别]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83468209</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83468209</guid><author>meng_lin</author><pubDate>Sun, 11 Oct 2009 14:21:47 +0800</pubDate><description><![CDATA[往往混淆了这三个函数的使用。 

从操作系统的角度讲，os会维护一个ready queue（就绪的线程队列）。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。 但是当前正在被服务的线程可能觉得cpu的服务质量不够好，于是提前退出，这就是yield。 或者当前正在被服务的线程需要睡一会，醒来后继续被服务，这就是sleep。  

sleep方法不推荐使用，可用wait...]]></description><category></category></item><item><title><![CDATA[Log4j使用总结]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83463215</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83463215</guid><author>meng_lin</author><pubDate>Wed, 23 Sep 2009 11:08:09 +0800</pubDate><description><![CDATA[一、介绍 
Log4j是Apache的一个开放源代码项目，通过使用Log4j，我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等；我们也可以控制每一条日志的输出格式；通过定义每一条日志信息的级别，我们能够更加细致地控制日志的生成过程。 
Log4j由三个重要的组件构成：日志信息的优先级，日志信息的输出目的地，日志...]]></description><category></category></item><item><title><![CDATA[java线程通信]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83402162</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83402162</guid><author>meng_lin</author><pubDate>Mon, 01 Jun 2009 19:49:00 +0800</pubDate><description><![CDATA[不同线程间进行通信通常有两种简单方法: 
方法一 通过访问共享变量的方式(注:需要处理同步问题) 
方法二 通过管道流 

其中方法一有两种实现方法,即 
方法一a)通过内部类实现线程的共享变量 
代码如下: 
Java代码 
/**  
 * 通过内部类实现线程的共享变量  
 *  
 */  
[code=&quot;java&quot;]public class Innersharet...]]></description><category></category></item><item><title><![CDATA[Win32应用程序中进程间通信方法分析与比较 ]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83402161</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83402161</guid><author>meng_lin</author><pubDate>Mon, 01 Jun 2009 19:47:49 +0800</pubDate><description><![CDATA[1 进程与进程通信 

 

　　进程是装入内存并准备执行的程序，每个进程都有私有的虚拟地址空间，由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制，这些机制行使的...]]></description><category></category></item><item><title><![CDATA[关于java内存分配问题]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83401659</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83401659</guid><author>meng_lin</author><pubDate>Sun, 31 May 2009 14:12:59 +0800</pubDate><description><![CDATA[Java把内存划分成两种：一种是栈内存，另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配，当在一段代码块定义一个变量时，Java就在栈中为这个变量分配内存空间，当超过变量的作用域后，java会自动释放掉为该变量分配的内存空间，该内存空间可以立即被另作它用。 堆内存用来存放由new创建的对象和数组，在堆中分配的内存，由java虚拟机的自动垃圾回收器来管理。在堆...]]></description><category></category></item><item><title><![CDATA[重写、覆盖、重载、多态几个概念的区别分析]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83401580</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83401580</guid><author>meng_lin</author><pubDate>Sun, 31 May 2009 10:59:33 +0800</pubDate><description><![CDATA[override-&gt;重写(=覆盖)、overload-&gt;重载、polymorphism -&gt; 多态
 
override是重写（覆盖）了一个方法，以实现不同的功能。一般是用于子类在继承父类时，重写（重新实现）父类中的方法。
重写（覆盖）的规则：
   1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载.
   2、重写方法的访问修饰符一定要大于被重写方法的访问...]]></description><category></category></item><item><title><![CDATA[原型模式]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83399187</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83399187</guid><author>meng_lin</author><pubDate>Fri, 22 May 2009 10:55:52 +0800</pubDate><description><![CDATA[关键字: prototype 
一、原型模式定义
     用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.

     Prototype模式允许一个对象再创建另外一个可定制的对象，根本无需知道任何如何创建的细节。

     工作原理是:通过将一个原型对象传给那个要发动创建的对象，这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。

 

二、如何...]]></description><category></category></item><item><title><![CDATA[观察者模式]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83399177</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83399177</guid><author>meng_lin</author><pubDate>Fri, 22 May 2009 10:40:54 +0800</pubDate><description><![CDATA[GoF说道：Observer模式的意图是“定义对象间的一种一对多的依赖关系，当一个对象的状态发生改变时，所有依赖于它的对象都得到通知并被自动更新”。从这段话里我们可以得到两个信息，如下： 

1， 观察者（具体执行操作的对象，有多个） 
2， 被观察者（顾名思义是被观察的对象，如果该对象发生某些变化则通知观察者执行对应的操） 

在我们实现观察者模式的时候，我们的被观察者应该继承这个类，...]]></description><category></category></item><item><title><![CDATA[SWT 中实现最小化到托盘图标，并只能通过托盘的弹出菜单关闭程序]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83398927</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83398927</guid><author>meng_lin</author><pubDate>Thu, 21 May 2009 14:47:07 +0800</pubDate><description><![CDATA[我们有些程序会想要托盘处显示图标，最小化到系统栏；关闭按钮不关闭程序，也是最小化到系统栏；点击托盘图标激活窗口，通过托盘图标的弹出菜单来退出程序。 

[code=&quot;java&quot;]package com.unmi;    
   
import org.eclipse.swt.*;    
import org.eclipse.swt.events.*;    
import org.e...]]></description><category></category></item><item><title><![CDATA[你真的了解JAVA里的String么]]></title><link>https://blog.youkuaiyun.com/meng_lin/article/details/83398418</link><guid>https://blog.youkuaiyun.com/meng_lin/article/details/83398418</guid><author>meng_lin</author><pubDate>Wed, 20 May 2009 10:57:27 +0800</pubDate><description><![CDATA[1. String str1 = &quot;abc&quot;; 
  System.out.println(str1 == &quot;abc&quot;); 

步骤： 
1) 棧中开辟一块空间存放引用str1， 
2) String池中开辟一块空间，存放String常量&quot;abc&quot;， 
3) 引用str1指向池中String常量&quot;abc&quot;， 
4) str1所指代的地址即常量&quot;abc&quot;所在地址，输出为true 
...]]></description><category></category></item></channel></rss>