自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (12)
  • 收藏
  • 关注

原创 Improper Publish

There is an example in > 3.5 which demonstrates improper publish.public class Holder{    private int n;    public Holder(int n){this.n = n;}    public void assertSanity(){        if(n !=

2014-06-18 09:29:13 642

原创 对《JCP》"3.4.2"的理解

This chapter explain publishing immutable objects using "Volatile".The example codes are class OneValueCache {    private final BigInteger lastNumer;    private final BigInterger[] lastFactors

2014-06-18 09:26:57 647

原创 同步环境下使用变量的注意点

同步块内或者不可变对象的引用变量必须是“本类的”,不能指向外部对象引用,也不能向外部发布对象引用。《Java Concurrency in Practice》中有两个例子:1. 例子1:public class CachedFactorizer implements Servlets {    @GuardedBy("this") private BigInteger last

2014-05-20 17:44:28 755

原创 线程安全中的不变性(Invariant)

多线程环境下,一个类的几个变量之间存在不变性(Invariant)。不变性是几个变量之间的逻辑关系(logical assertion),不管按照什么顺序,不管哪个线程操作后,这个关系要保持不变,否则程序就会出错。在>举了一个例子。一个类设计来求解一个整数的因式分解,多个线程会访问这个类,为了提高响应,存放了最近的整数和因素分解的结果。class CachedFactori

2014-04-21 13:19:38 1482

原创 Finalizer attack

Finalizer攻击:在构造函数中抛出异常,目的是创建对象失败时当对象抛出异常后,对象会被垃圾清理器回收。而当垃圾清理器准备释放对象的内存时,它首先调用finalize方法,然后再回收内存。Finalizer攻击就是重载finalize方法,在这个方法内保存这个对象。这个对象是部分初始化对象,它应该被清除,但是没有,导致它已经初始化的信息泄漏,并且获取对象后可以调用其方法,如果对象包含一些操

2014-04-17 09:22:21 1016

原创 Java创建对象的顺序

创建一个类C的对象: 1. 加载所有得类。 2. 执行静态初始化。 3. 分配内存,并初始化为零。 4. 处理调用的C的构造函数的参数。 6. 处理隐式或者显式的构造函数( this()或者super())。 7. 初始化C中的变量。 8. 执行C的“instance initialization”。 9. 执行调用的C的构造函数。

2014-04-15 21:26:57 1148

原创 Enusre Chained Methods are thread-safe

https://www.securecoding.cert.org/confluence/display/java/VNA04-J.+Ensure+that+calls+to+chained+methods+are+atomic在上面这篇讲Java安全代码的文章中提到两段代码。第一不是线程安全的;第二个是。final class USCurrency {  // Change requ

2014-04-11 14:54:31 715

原创 Character Encoding Summary

Brief Evolution History  Bits Number        Lang&Standard7-Bits8-BitsLanguagesEnglishEnglish,Some European languagesAll Languages

2014-01-20 09:28:55 1057

原创 组件图小结

1. What is the component?In UML2.0,components are considered autonomous, encapsulated units within a system or subsystem that provide one or more interfacescomponents are now strictly logical, d

2013-11-19 11:03:48 960

原创 Serialization 简单小结

1. 我们要把对象保存到硬盘或者通过网络传输,就需要把对象状态保存下来,这个过程就是对象串行化。Java 中的序列化机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需要的时候,可以根据字节流中的信息来重构一个相同的对象。2.Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致

2013-11-04 09:14:28 646

原创 演示2-3树删除时为什么空节点只有一个子节点

演示删除时,为什么空节点下都只有一个子节点?自己好像是能想明白,但隔一段时间,再看时,又有点迷茫。所以尝试着下来,加深理解。1. 初始空节点的产生 要删除的关键字要么就是在叶节点;要么交换中序排列中后一个关键字后到了叶节点。总之最终要删除的关键字都会落到叶节点中。 如果叶节点是3-node,删除这个关键字,3-node变为2-node,就没有空节点。 如果叶节点是2-n

2012-12-13 16:41:37 1490

原创 对2-3-4树的简单想法

2-3树插入时,我们首先从根节点开始,从上到下找到待插入的叶节点;然后再从叶节点开始从下到上,执行插入操作。 而2-3-4树插入时,同样首先我们也从根节点开始,从上到下找待插入的叶节点但是与2-3树插入不同的是,在这个寻找过程中遇到4-node,我们就把可以把4-node分裂成2个2-node,重新链接到其父节点。这个操作不会改变2-3-4树的任何性质。最后找到待插入的叶节点时,这个叶

2012-12-11 11:28:14 2278

原创 2-3树删除和插入操作的小结

学习2-3的操作后,感觉插入和删除的思想都不是特别复杂,但就是比较啰嗦。特别是删除,要处理很多种情况,本质上删除就是“合并”和“调整关键字的分布”,但不同情况编程的细节上有点差别。用图小结几个典型的情况。(一)2-3树的插入空树的插入最简单,创建一个节点即可。 对于非空树,首先查找到一个叶节点,沿着这个叶节点向上执行插入操作。1.叶节点是2-node,直接把值插入到

2012-12-10 13:27:41 11600 1

原创 学习UKK后缀树构造算法

学习了UKK构建后缀树的算法,挺不好理解。努力写下自己的理解。I 基本思想构建后缀树的基本思想:假设 T[0..i-1] 的后缀树已经建好了,那么在 T[0..i-1] 的每个后缀 T[0..i-1], T[1..i-1] .. T[j..i-1] .. T[i-1..i-1],””(空字符串),的后面加上字符 T[i] 就可以得到 T[0..i] 的后缀树了。注意,有一个底节点“bott

2012-07-12 16:52:29 5352 1

原创 火车运煤问题

网上有一道火车运煤的问题。题目:你是山西的一个煤老板,你在矿区开采了有3000吨煤需要运送到市场上去卖,从你的矿区到市场有1000公里,你手里有一列烧煤的火车,这个火车最多只能装1000吨煤,且其能耗比较大——每一公里需要耗一吨煤。请问,作为一个懂编程的煤老板的你,你会怎么运送才能运最多的煤到集市? 开始看到题目觉得没有解,火车运1000吨,到终点后,什么也没有了,都在路上消耗

2012-06-18 16:37:26 3492 3

原创 Shell脚本中的文件名扩展和判断条件中的空格

要从server库里下载一些文件,就写脚本。在写的过程中遇到两个问题。1. 文件名扩展#!/bin/shA="core"if [ "$A" == c* ];then  echo "OK"fi运行脚本时,报错“[: too many arguments”。查了网上的一些资料知道是文件名扩展(File globbing)的原因。运行脚本的目录下有这样几个文件:cmd

2012-06-11 18:09:16 900

转载 虚函数表博文总结

对虚函数实现方式的理解:1.每个有虚函数的类都有虚函数表,记录了继承的虚函数、自己重载的虚函数的地址。2.多重继承时,有多个虚函数表,每继承一个父类产生一个虚函数表。3.构造函数构造对象时,在对象所在内存的首地址放置虚函数表的地址;如果这个类有多个虚函数表就放置多个虚函数表的地址。4.虚函数表是在编译时生成的。如果某个类,在程序中就没有被使用,也就是没有实例化类,那么这个类的虚表就

2012-04-17 15:33:39 629

原创 PLT学习

I. 动态链接中延迟绑定(Lazy binding)的基本思想和方法基本思想:函数第一次用到时才进行绑定(符号查找,重定位等),如果不用则不进行绑定。方法:使用PLT(Procedure Linkage Table)的方法来实现。它使用了一些精巧的指令序列。II. 理解PLT方法涉及的几个对象1.调用外部函数的代码代码里调用外部函数时,转向去调用PLT部分的代码

2012-04-09 11:09:23 1003

转载 十四项心理定律

好文章,转载:以下是十四项心理定律,你可以应用它们在任何的领域里。无论是销售沟通、还是设立目标、时间管理、领导组织都可以应用这些原理和定律。   1、坚信定律   当你对某件事情抱着百分之一万的相信,它最后就会变成事实。   2、期望定律   期望定律告诉我们,当我们怀着对某件事情非常强烈期望的时候,我们所期望的事物就会出现。   3、情绪定律   情绪定律告诉

2012-03-01 20:30:43 449

原创 调皮的宏

《编程珠玑》第九章一道题目:n是数组最大尺寸的正整数,下面的递归C函数返回数组x[0...n-1]中的最大值:float arrmax(int n){    if(n==1){        return x[0];    }else{        return max(x[n-1],arrmax(n-1));    }}  max是一个宏:#de

2012-02-28 13:04:11 488

原创 二分法找元素第一次出现位置

常见的二分法找一个元素出现的位置(随机的)是://x[0...n-1]是升序排列。找到元素t出现的一个位置(不一定是第一次出现的位置)l=0;u=n-1;loop    if l>u        p = -1; break;    m = (l+u)/2;    case        x[m]         x[m] ==t: p=m; break

2012-02-26 21:17:33 1137

转载 西蒙学习法介绍

摘录关于西蒙学习法的一篇博文。  http://blog.csdn.net/wudiyi815/article/details/7195302。 概述为了形象地说明,把西蒙学习法比做一把锥子。正如居里夫人所说,“知识的专一性像锥尖,精力的集中好比是锥子的作用力,时间的连续性好比是不停顿地使锥子往前钻进。” 西蒙学习法所支配的学习活动,呈现出一种尖锐猛烈、持续不断的态

2012-01-13 17:45:37 3258

原创 求序列的最大子序列

看《编程珠玑》一书,讲解求序列的最大子序列。问题: 给定一个实数序列x1,x2,…,xn(不必是正数),寻找一个连续的子序列xi,x(i+1),…,xj,使得其数值之和在所有连续子序列数值之和中是最大的。 算法1思路:比较所有连续序列数值的和,找到最大的。1. maxsofar=0;2. for i=[0,n)3.   sum=0;4.   for j=[i,n)

2012-01-07 21:54:46 1054

原创 取一个集合的前n个最大或最小值

《编程珠玑》第十四章的一个问题是:在具有10亿个数值的文件中找出最大的100万个数组。 使用堆解决这个问题的思路1. 取10亿个数值中的最初的100万个,放到一个堆中,初始化这个堆为小顶堆。2. 依次取剩下的每个数值,用取出的这个值和小顶堆的最小值比较:   如果大于最小值,用这个值替换小顶堆的最小值,调整堆使得它还是小顶堆。   如果小于或者等于最小值,则继续取下一个

2011-12-29 17:44:24 3101

原创 理解败者树的初始化

利用败者树进行外部排序时,要根据叶节点构造败者树。仔细理解了这个构造的过程。I.一个直接的思路就是类似我们手工构造一个败者树的过程。开始初始化所有败者树的节点值为-1。依次填含有叶节点的节点。A包含叶节点,比较A的左右孩子节点(左孩子可能不是叶节点,右孩子是叶节点),败者填入A。胜者与A的父节点B比较,如果B没有填值,则胜者填入B;如果B已经填值,用胜者值与B的值比较,败者值填入B,然后又

2011-12-14 14:40:14 3366

原创 理解堆排序

复习外排序算法时,设计到败者树,而这个又和堆排序相关。刚好忙完一个项目,有时间复习一下堆排序,加深理解。堆就是满足下列条件的一个数组,一个数组A[n],A[i]=A[2i+1],A[i]>=[2i+2],0=1),A[j]=1),A[j]>=A[i],1根据堆的定义,第一个元素一定是最大或者最小的。将一个数组A[0...n-1]调整为堆,把第一个元素和最后一个元素调换,A[n-1]是最

2011-12-05 17:11:39 732

原创 外排序时间估计和趟数计算的理解

学习一个算法题过程中涉及到外排序,就把外排序的知识复习一遍。复习中对趟数计算,我似乎觉得应该很好理解,但又好像不能透彻的理解,就问自己能不能给出一个清晰的证明。尝试了进一步的理解。I估计外排序的时间。某文件共10000个记录,设每个物理块可以容纳200个记录,内存缓冲区可以容纳5个物理块1)经过10次内排序后得到10个初始归并段R1~R102)采用两路归并,需四趟可以得到排好序

2011-11-20 16:53:34 1519

原创 参数++

<!--table.MsoNormalTable {font-size:10.5pt; font-family:"Calibri","sans-serif"}-->STL 有一段代码template typename list::iteratorlist::erase(iterator __first,

2011-02-16 17:17:00 428

原创 Simple summary of virtual memory

Search some materials on internet and books.  Summary the virtual memory simply.

2011-01-08 17:21:00 887

原创 QuickSort

Read Hoar's article "quicksort" published in "the computer journal". Try to understand quicksort algorithm further.I.Stratgy:The quicksort is based on the principle of resolving a problem into t

2010-12-25 19:56:00 558

原创 Counting 1-bits

练习统计正整数中1的个数。两个经典的算法 int OneNum_MnsOne(unsigned int aInt){    int num=0;    while(aInt != 0){        num++;        aInt = aInt & (aInt - 1);    }    return num;}int OneNum_DvdC

2010-12-18 22:31:00 419

原创 练习-打印正整数的二进制

看程序时,碰到一个问题,解决之余想起练习打印正整数的二进制。  //Convert an integer (>0) to a binary and print.void prn(char *p){    while(*p=='0') p++;    while(*p != '/0'){        printf("%c ",*p);        ++p;

2010-12-14 21:42:00 608

原创 Deep copy and shadow copy

When copying a class instance to another,we think about the deep copy and shadow copy. If just assiging tha value to each class data member and ignoring resource reallocation (if there are resoures, s

2010-08-10 16:07:00 933

原创 Use ImageMagick to Capture the screen

ImageMgaick capture screen

2010-06-30 09:21:00 607

原创 类相互引用

a.hclass A;class B{  public:    int i;    A a;}; class A{  public:    int k;    B b;};nest.cpp#include "A.h"int main(){  A a;  B b;  return 1;}A error "field `a

2010-06-23 09:55:00 395

原创 NTP summary

NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。    同样,也有很多免费的NTP客户端可供Windows使用,你可以用它们来同步你windows的系统时间。I.下载和安装     在RedHat9.0上安装时间服务器,如果想获得NTP的最新版本,你可以下载t

2010-03-05 09:06:00 707

原创 Lua 与C交互

Lua和C之间的交互(一)           Lua调C函数 1.       什么样类型的函数可以被Lua调用 typedef int (*lua_CFunction) (lua_State *L); 2.       符合类型的函数怎样处理后才可以被Lua调用使用lua_register或者 lua_pushfunction和lua

2008-06-27 18:15:00 11972 5

原创 lua调c动态库

Lua脚本调c动态库函数时开始调不成功,通过Lua官方的Mail List才知道:c动态库里的注册函数和Lua脚本的打开库的方式要一致。1.c动态库的代码:static int lua_msgbox(lua_State* L){    const char* message = luaL_checkstring(L, 1);    const char* caption

2008-06-24 14:02:00 1814 1

原创 开通CSDN Blog

以前在MSN上写blog,今天开通csdn的blog!

2008-06-24 10:00:00 513

严蔚敏数据结构

经典的数据结构书,每次复习都有新的收获。

2011-12-07

HelloAndroid.pdf

好的开发入门,有一些示例代码,不错的文档

2010-12-11

Android平台應用軟體開發.ppt

android开发介绍,介绍了android的架构

2010-12-11

glib_2.10 源代码

c lib source. Read the codes to study c.

2010-02-02

iphone development PPT

iphone 开发介绍Ppt,概述了Iphone开发过程

2009-12-20

Core java2

core java2. 非常好的java学习资料。

2009-06-20

write secure code.CHM

如何写安全的代码,作者微软的。

2008-05-27

pattern_examples.pdf

设计模式,以例子介绍了一些设计模式

2008-05-27

vc.net技术内幕

vc.net技术内幕

2007-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除