代码改变世界

ThreadLocal

2012-12-14 17:10 by ggzwtj, 1850 阅读, 1 推荐, 收藏, 编辑
摘要:ThreadLocal和Thread的关系如下:这个结构还是非常清楚的,但是看网上的一些代码感觉很晕,下面来看为什么会晕,比如(下面的代码是根据网上的代码重写的):class MyThreadLocal extends ThreadLocal<Integer> { public Integer initialValue() { return 0; } public void incr() { Integer value = get(); if (value == null) { value = 0; ... 阅读全文

Spring

2012-12-13 13:07 by ggzwtj, 358 阅读, 0 推荐, 收藏, 编辑
摘要:FileSystemXmlApplicationContext创建的过程如下,感觉把这个过程读懂了就总体是大致了解的IOC是怎么设计的了:FileSystemXmlApplicationContext容器的构造函数;AbstractApplicationContext.refresh()。1、AbstractApplicationContext.prepareRefresh()设置好active状态。2、AbstractApplicationContext.obtainFreshBeanFactory取得一个新的BeanFactory。1、AbstractRefreshableApplicat 阅读全文

Java的垃圾回收

2012-12-11 16:31 by ggzwtj, 1485 阅读, 1 推荐, 收藏, 编辑
摘要:GC也是一种内存管理吧,也许是因为第一次在Java中听说这个名词,所以涉及到Java的很多时候会被人问起。首先,什么是垃圾? 直观上看垃圾就是没有用的东西,事实也是这样,前面分配过的内存如果在以后都不会被用到了那么就可以认为这类的内存是垃圾。从这个角度上看,任何在分配内存的地方都可能产生垃圾。大部分分配内存的行为都是为了对象,那么大部分的垃圾也就产生在堆上了。但是类的信息保存也需要内存啊(况且也会对应一个Class对象),所以方法区上也应该会有垃圾回收。 然后,如何识别垃圾? 很多的内存管理都是基于标记计数的(比如内核里面),在引用的时候+1,在释放的时候-1,在发现计数值为0的时候这块内.. 阅读全文

《现代体系结构上的UNIX系统》笔记

2012-11-22 14:18 by ggzwtj, 846 阅读, 0 推荐, 收藏, 编辑
摘要:高速缓存器是利用局部引用特性(在特定的时间段内程序和数据的一个相当小的子集被频繁地重复引用)来提高系统性能。存储器层次结构如下: 首先来看第一种高速缓存的组织:直接映射高速缓存 其实这种结构很好理解:为了能将所有的主存都有机会被Cache所以要有个散列函数,因为局部性原理所以缓存的是连续的数据,因为一个索引位置对应N个主存地址所以需要一个标记来区分。在真正的执行过程中可能并不总是会满足局部性原理,这时高速缓存反而会办倒忙:正常的访问:CPU->主存有高速缓存后的访问:CPU->访问高速缓存->主存->填充高速缓存一个简单的优化是将原来的一行增加成两行,这样如果程序重复依 阅读全文

String的一些细节

2012-11-14 12:40 by ggzwtj, 2492 阅读, 2 推荐, 收藏, 编辑
摘要:首先说明这里指的是Java中的String,虽然我已经决定转战C/C++了,但是因为今天碰到一个问题,还是来看一下。String的定义如下:public final class String{ private final char value[]; // 保存的字符串 private final int offset; // 开始的位置 private final int count; // 字符数目 private int hash; // 缓存的hash值 ......}在Debug的时候可以看到保存的值如下:需要说明一下的是:如果没有调用过hashCode(),那么hash的值... 阅读全文

《深入理解Java虚拟机》笔记

2012-11-11 23:25 by ggzwtj, 44690 阅读, 13 推荐, 收藏, 编辑
摘要:在C里面我们想执行一段自己编写的机器指令的方法大概如下:typedef void(*FUNC)(int);char* str = "your code";FUNC f = (FUNC)str;(*f)(0); 也就是说,我们完全可以做一个工具,从一个文件中读入指令,然后将这些指令运行起来。上面代码中“编好的机器指令”当然指的是能在CPU上运行的,如果这里我还实现了一个翻译机器:从自己定义的格式指令翻译到CPU指令,那么就可以执行根据自定义格式的代码了。那么上面这段代码是不是相当于最简单的一个虚拟机了?下面来看JVM的总体结构:ClassLoader的作用是装载能被JVM识别 阅读全文

train&predict

2012-11-02 14:01 by ggzwtj, 422 阅读, 0 推荐, 收藏, 编辑
摘要:主要是记录调试和训练的过程,以便时候反思。最重要的是通过哪些维度来衡量一个用户:一、评论相关因为统计所有的时间段的评论的特征没有想到很好的方法去做,所以下面的评论相关的特征是从对用户一天时间(或者是一段时间)内的评论计算得到的。更重要的是,想要去统计的是一天中用户的行为,所以。。0、发表评论的总数;1、评论的平均字数(去除掉HTML字符和HTML标签);2、评论对应的不同帖子的总数;3、评论对应的不同作者的总数;4、平均的间隔时间(先取到所有的间隔时间,然后去除最大的10%,不然这项指标就废掉了- -);5、字数平均差/平均字数;6、相同内容的评论数目/评论总数;7、特征的总数/评论总数;8、 阅读全文

玩一下显示数据页面

2012-10-24 15:43 by ggzwtj, 205 阅读, 0 推荐, 收藏, 编辑
摘要:<canvas id="circle" width="400" height="400">您的浏览器暂不支持Canvas</canvas> <hr> <input id="sumNumber" type="hidden" value="100"> <div style="margin-top:2px;margin-left:2px;"> <input id="number0&quo 阅读全文

LIBSVM用法

2012-10-23 23:36 by ggzwtj, 3540 阅读, 0 推荐, 收藏, 编辑
摘要:svm-train用来从样本数据中训练出用来判定的规则,其中的参数设置如下:options:-s svm_type : set type of SVM (default 0) 0 -- C-SVC 1 -- nu-SVC 2 -- one-class SVM 3 -- epsilon-SVR 4 -- nu-SVR-t kernel_type : set type of kernel function (default 2) 0 -- linear: u'*v 1 -- polynomial: (gamma*u'*v + coef0)^degree ... 阅读全文

支持向量机

2012-10-22 00:58 by ggzwtj, 530 阅读, 0 推荐, 收藏, 编辑
摘要:机器学习有很多种,大的区分上面有“有监督”、“无监督”和“半监督”。而支持向量机就属于有监督的:给定一个正样本点和负样本点,支持向量机的目的是寻找一个超平面来对样本进行分割,目的是使正例和反例之间的间隔最大。那么该平面可以表示为: wTx+b=0到这里大概就明白了,其实我们想要的是用一个规则去判断未知的节点的性质,但是不知道什么样的规则是准确的,SVM就是帮我门去根据一定的策略找到这条规则。其实判断切面的优劣很简单:分得越开越好,那么如何衡量间隔的大小。首先根据上面的切面来看判定函数: f(x)=wTx+b那么,|f(x)|越大,也就是说间隔也就越到。设y是节点对应的标志的值(这里说的比较.. 阅读全文