- 博客(46)
- 资源 (9)
- 收藏
- 关注
原创 C/C++内存对齐
C/C++内存对齐一、什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。...
2010-06-30 23:08:43
135
原创 遍历问题
题目如下:用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。 基本思路:1 把问题归结为图结构的遍历问题。实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路径就是最后对这6个数字的排列组合结果集。2 显...
2010-06-18 11:49:03
225
原创 java class 文件结构的分析
代码:public class test{ public static void main(String arg[]) { System.out.Println("Hello world"); }}生成class文件test Class File Structor:Magic Number----0XCafeBabe 四个字节Minor Version...
2009-11-22 17:57:54
171
原创 Java对象的强、软、弱和虚引用
在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就一直保留它,否则就把它扔到垃圾箱,由清洁工人收走。一般说来,如果物品已经被扔到垃圾箱,想再 把它捡回来使用就不可能了。 但有时候情况并不这么简单,你可能会遇到类似鸡肋一样的物品,食之无味,弃之...
2009-11-19 11:08:07
97
原创 java class文件格式解析(摘)
1.目的大型软件系统开发时,某些Java组件可能涉及到多种数据库或中间件系统的连接和应用,例如一个数据传递组件需要从DB2中读取数据,并将数据通过中间件 WebSphere MQ发送到其他系统,这类组件功能单一,但却需要连接多种第三方产品,使得程序员的单元测试变的非常不便,程序员不得不注视或修改部分源代码,或者在本地安装所需第三方产品。无疑这两种选择都是痛苦的。基于以上的不便,本文...
2009-11-14 10:48:18
148
原创 [C++对象模型][4]指针与字符串
开始之前必须明确strlen的含义,原型为size_t strlen( char *str ); strlen返回字符串的长度,即null(\0)之前的字符的数量。一 char* 与 char []实例加注释:Code [code="java"]void TestCharPointerAndArray() { char *c1 = "abc"; //ab...
2009-10-17 15:25:38
100
原创 Semaphore
[code="java"]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...
2009-10-12 11:58:23
93
原创 多线程之CountDownLatch
[code="java"]package projects.debug.learn;import java.util.concurrent.CountDownLatch;public class CountDownLatchTest{ public void CountDownLatchExa() throws InterruptedException { fin...
2009-10-12 10:58:31
82
原创 JDK5 concurrent 并行包之CyclicBarrier
[code="java"]package projects.debug.learn;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;public class part1{ /** * This static mehthod ...
2009-10-12 10:40:00
117
原创 原子变量(AtomicLong, AtomicInteger, AtomicReference)
J2SE 5.0提供了一组atomic class来帮助我们简化同步处理。基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增、减、赋值(更新)操作. 比如对于++运算符AtomicInteger可以将它持有的integer 能够atomic 地递增。在需要访问两个或两个以上 atomic变量的程序代码(或者是对单一的atomic变量执行两个或两...
2009-10-11 18:40:13
189
原创 yield(),sleep()以及wait()的区别
往往混淆了这三个函数的使用。 从操作系统的角度讲,os会维护一个ready queue(就绪的线程队列)。并且在某一时刻cpu只为ready queue中位于队列头部的线程服务。 但是当前正在被服务的线程可能觉得cpu的服务质量不够好,于是提前退出,这就是yield。 或者当前正在被服务的线程需要睡一会,醒来后继续被服务,这就是sleep。 sleep方法不推荐使用,可用wait...
2009-10-11 14:21:47
93
原创 Log4j使用总结
一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志...
2009-09-23 11:08:09
83
原创 java线程通信
不同线程间进行通信通常有两种简单方法: 方法一 通过访问共享变量的方式(注:需要处理同步问题) 方法二 通过管道流 其中方法一有两种实现方法,即 方法一a)通过内部类实现线程的共享变量 代码如下: Java代码 /** * 通过内部类实现线程的共享变量 * */ [code="java"]public class Innersharet...
2009-06-01 19:49:00
170
原创 Win32应用程序中进程间通信方法分析与比较
1 进程与进程通信 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据以及它可利用的系统资源(如文件、管道等)组成。多进程/多线程是Windows操作系统的一个基本特征。Microsoft Win32应用编程接口(Application Programming Interface, API)提供了大量支持应用程序间数据共享和交换的机制,这些机制行使的...
2009-06-01 19:47:49
90
原创 关于java内存分配问题
Java把内存划分成两种:一种是栈内存,另一种是堆内存。在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。 堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。在堆...
2009-05-31 14:12:59
107
原创 重写、覆盖、重载、多态几个概念的区别分析
override->重写(=覆盖)、overload->重载、polymorphism -> 多态 override是重写(覆盖)了一个方法,以实现不同的功能。一般是用于子类在继承父类时,重写(重新实现)父类中的方法。重写(覆盖)的规则: 1、重写方法的参数列表必须完全与被重写的方法的相同,否则不能称其为重写而是重载. 2、重写方法的访问修饰符一定要大于被重写方法的访问...
2009-05-31 10:59:33
96
原创 原型模式
关键字: prototype 一、原型模式定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节。 工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。 二、如何...
2009-05-22 10:55:52
90
原创 观察者模式
GoF说道:Observer模式的意图是“定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新”。从这段话里我们可以得到两个信息,如下: 1, 观察者(具体执行操作的对象,有多个) 2, 被观察者(顾名思义是被观察的对象,如果该对象发生某些变化则通知观察者执行对应的操) 在我们实现观察者模式的时候,我们的被观察者应该继承这个类,...
2009-05-22 10:40:54
74
原创 SWT 中实现最小化到托盘图标,并只能通过托盘的弹出菜单关闭程序
我们有些程序会想要托盘处显示图标,最小化到系统栏;关闭按钮不关闭程序,也是最小化到系统栏;点击托盘图标激活窗口,通过托盘图标的弹出菜单来退出程序。 [code="java"]package com.unmi; import org.eclipse.swt.*; import org.eclipse.swt.events.*; import org.e...
2009-05-21 14:47:07
123
原创 你真的了解JAVA里的String么
1. String str1 = "abc"; System.out.println(str1 == "abc"); 步骤: 1) 棧中开辟一块空间存放引用str1, 2) String池中开辟一块空间,存放String常量"abc", 3) 引用str1指向池中String常量"abc", 4) str1所指代的地址即常量"abc"所在地址,输出为true ...
2009-05-20 10:57:27
741
原创 CLR和JRE的运行机制的初步总结
概念比较: Java C# byte code IL(字节码,中间语言) jvm.dll mscrolib.dll,mscrojit.dll(虚拟机) JRE CLR(运行环境) JDK .Net Framework(开发框架) package assembly(类库,程序集) 一、关于类库的版本管理问题 Java和C#代码运行要依靠其运行环境(JRE,...
2009-05-18 21:05:51
132
原创 自动装箱和拆箱
自动装箱和拆箱基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(unboxing)是J2SE 5.0提供的新功能。虽然为您打包基本数据类型提供了方便,但提供方便的同时表示隐藏了细节,建议在能够区分基本数据类型与对象的差别时再使用。1) autoboxing和unboxing在Java中,所有要处理的东西几乎都是对象(Object),例如之前所使用的...
2009-05-17 13:05:55
226
原创 浅Copy深Copy
[code="java"]package HUST.Swt;public class Pather implements Cloneable{ public Person person; public String dept=""; public Pather() { } public Pather(Person person,String dept)...
2009-05-16 15:57:39
89
原创 中文与Unicode的转换
[code="java"]package HUST.Swt;public class Test{ public static void main(String[] args) { String s = "ab简介"; String tt = gbEncoding(s); System.out.println(decodeUnicode(tt)); }...
2009-05-15 16:48:36
101
原创 System.GC 算法
1、 引用计数法(Reference Counting Collector) 引用计数法是唯一没有使用根集的垃圾回收的法,该算法使用引用计数器来区分存活对象和不再使用的对象。一般来说,堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个变量时,引用计数器置为1。当对象被赋给任意变量时,引用计数器每次加1当对象出了作用域后(该对象丢弃不再使用),引用计数器减1,一...
2009-05-14 14:18:12
83
原创 Java内存管理特点
★ Java内存管理特点 Java一个最大的优点就是取消了指针,由垃圾收集器来自动管理内存的回收。程序员不需要通过调用函数来释放内存。 1、Java的内存管理就是对象的分配和释放问题。 在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 对象的释放是由GC决定和执行的。 ...
2009-05-14 10:16:44
83
原创 Java Collection
在 Java2中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也可以以这个集合框架为基础,定义更高级别的数据抽象...
2009-05-13 22:32:33
56
原创 彻底明白Java的多线程-进程间的通信
线程间的通信1.线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种: 1)产生(new):线程对象已经产生,但尚未被启动,所以无法执行。如通过new产生了一个线程对象后没对它调用start()函数之前。 2)可执行(runnable):每个支持多线程的系统都有一个排程器,排程器会从线程池中选择一个线程并启动它。当一个线程处于可执行状态时,表示它可能正处于线...
2009-05-13 21:51:14
79
原创 每一个JAVA初学者都应该搞懂的问题
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于优快云的经典老贴。 问题一:我声明了什么! String s = "Hello world!"; 许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容...
2009-05-12 09:23:23
109
从Java版QQ中想到的
前几天从网上Down了一个Java版的QQ的程序,看了一下觉得还行,里面有许多的东西还是可以学习的,对于C/S模式的编程来说,我主要从中看了以下四点:一、服务器端线程管理机制,服务器是用ServerSocket来进行线程的连接的,并且根据用户的ID和线程来进行管理。二、用户面板的管理机制,是一个HashMap,其主要的思想和上面一条是一致的三、文件的发送机制,谁接收谁负责建立服务的连接...
2009-05-11 11:45:43
72
原创 超长整数运算(大数运算)
[code="java"]package qinglin.learn.arithmetic;public class BigNumberCalculation{ public static void main(String[] args) { // TODO Auto-generated method stub int a[]=new int[]{5234,56...
2009-04-20 16:21:13
212
原创 蒙地卡罗法求 PI
[code="java"]package qinglin.learn.arithmetic;import java.util.Random;public class GetPi{ public static void main(String[] args) { int N=10000000; int sum=0; Random random =...
2009-04-20 11:05:32
103
原创 洗扑克牌(乱数排列)
[code="java"]package qinglin.learn.arithmetic;import java.util.Random;public class PokerRefreash{ public static void main(String[] args) { PokerRefreash refreash = new PokerRefreash()...
2009-04-20 10:52:26
184
原创 生命游戏
[code="java"]package qinglin.learn.arithmetic;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class LifeGame{ private boolean[][] map;...
2009-04-20 09:11:34
102
原创 各种排序
[code="java"]package qinglin.learn.arithmetic;public class SortsServices{ public static void main(String args[]) { SortsServices.sortIntoAction(1); } /** * 交换值,交换数组的两个值 * ...
2009-04-19 16:43:08
77
原创 快速排序
[code="java"]package qinglin.learn.arithmetic;public class QuickSort{ public static void quickSort(int[] a) { qSort(a, 0, a.length - 1); } /** * 对下标从s到t的元素进行快速排序。 */...
2009-04-19 16:42:32
74
原创 辗转相除法_最大公约数和最小公倍数
[code="java"]package qinglin.learn.arithmetic;public class GetMinMultiple{ @SuppressWarnings("static-access") public static void main(String[] args) { new GetMinMultiple().getMinMultipl...
2009-04-19 16:41:08
144
原创 背包问题_最优解法
[code="java"]package qinglin.learn.arithmetic;public class SackPro_02{ int p[] =new int[]{9,10,7,4}; int w[] =new int[]{3,5,2,1}; int cp[]=new int[p.length]; int cw[]=new int[w....
2009-04-19 16:39:18
382
原创 背包问题_完美解法
[code="java"]package qinglin.learn.arithmetic;public class SackPro_01{ public static void main(String[] args) { int[] src = { 2, 4, 5, 7, 10 }; select(18, src, 0, new int[src.length]);...
2009-04-19 16:38:42
226
libmemcached Windows 工程
2011-09-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人