- 博客(28)
- 收藏
- 关注
原创 maven使用小结(一)
在eclipse中使用maven需要安装m2eclipse插件(http://download.eclipse.org/technology/m2e/releases help->install new software即可)1. 创建一个简单的mvn项目mvn archetype:create -DgroupId="com.yaojiank.app" -Dartifac
2013-06-16 22:49:43
596
原创 ConcurrentHashMap与FutureTask的使用
问题:许多应用的计算过程会相当久,因而会采用某种形式的缓存,重用之前的计算结果以降低延迟、提高吞吐量。例如因数分解,其计算过程可能会相当长,采用缓存将是一种不错的选择。但是如果计算过程是一个并发的行为,那么需要考虑多线程之间的同步。如何解决该问题?首先我们定义一个需要计算很久的接口,如下所示,其中A是输入类型,V是输出类型package cache;public int
2013-05-06 21:55:33
1271
原创 java容器
> —— > —— ArrayList 使用数组来实现 | |—— LinkedList 使用链表来实现 | |—— Vector —— Stack 线程同步
2013-05-05 20:18:56
598
原创 java CopyOnWriteArrayList
CopyOnWriteArrayList是一个线程安全的链表,特别适用于管理监听器列表。Vector或Collections.synchronizedList(List)虽然在列表上add(),remove()和get()方法现在对线程是安全的,但列表中的元素如果是可变的,那么遍历时仍然会抛出ConcurrentModificationException!而CopyOnWriteArrayLi
2013-04-24 21:57:32
1806
转载 无锁的数据结构(Lock-Free)及CAS(Compare-and-Swap)机制
当同时存在读写线程时,默认情况下是不保证线程安全的,因而需要利用信号量来进行线程同步(Synchronization),如关键代码段、互斥体等,同时操作系统也提供了相应的API。然而同步并不总是满足条件的且有效率的,比如陷入内核时会有性能损失、死锁、活锁以及资源浪费等。于是Lock-Free和Wait-Free的思想出现了,由于此时不存在读写线程的同步,因而在写线程运行时,读线程也在运行(多核
2013-04-17 22:56:16
835
转载 Java 理论与实践: 正确使用 Volatile 变量
简介:Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。Java
2013-03-20 14:45:21
388
转载 linux内核的经典书籍
《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必读的书籍。新人得有此书,足矣!《深入理解Linux内核》 简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。 前面这两本,一本提纲挈领,一本全面深入。
2012-12-29 23:07:42
440
原创 SICP习题解答2.17-2.23
#lang racket; exercise 2.17(define (last-pair l) (cond ((null? l) null) ((null? (cdr l)) l) (else (last-pair (cdr l)))))(last-pair (list 23 72 149 34))(last-pair '(1))(last-pai
2012-09-01 12:59:41
1180
原创 SICP习题解答2.7-2.16
ex2.7-2.16#lang racket; exercise 2.7(define (make-interval a b) (cons a b))(define (upper-bound interval) (max (car interval) (cdr interval)))(define (lower-bound interval) (min (car interval
2012-08-31 10:46:19
768
原创 SICP习题解答2.1-2.6
ex2.1-2.4#lang racket; exercise 2.1(define (make-rat n d) (define g (gcd n d)) (let ((g1 (if (< d 0) (- g) g))) (cons (/ n g1) (/ d g1))))(define (gcd a b) ;; 返回正最大公约数 (if (= b 0)
2012-08-21 22:20:25
1288
原创 SICP第一章小结
Lisp作为函数式语言,目前来看语法简单,使用起来相当方便。起初看Lisp是因为Hadoop编程借口是函数式的(Map/Reduce方法),所以想学习一下函数式语言。现在花了4天时间把终于第一章看完了,简单的小结一下。第一章讲的是Lisp的过程,里面有几个比较重要的特性:Lisp的代换模型:正则序(先代入再求值)、应用序(先求值再代入)。Scheme默认是应用序,这样可以简化计算。
2012-08-20 10:15:40
482
原创 SICP习题解答1.40-1.46
ex1.40#lang racket; exercise 1.40(define (newtons-method g guess) (fixed-point (newton-transform g) guess))(define (newton-transform g) (lambda (x) (- x (/ (g x) ((deriv g) x)))))(define (d
2012-08-19 20:44:10
668
原创 SICP习题解答1.29-1.39
ex1.29#lang racket; exercise 1.29(define (integ f a b n) (define h (/ (- b a) n)) (define (term k) (define y (f (+ a (* k h)))) (cond ((or (= k 0) (= k n)) y) ((even? k) (*
2012-08-19 13:53:22
822
原创 SICP习题解答1.20-1.28
ex1.20-1.22#lang racket; exercise 1.20;; 正则序求值(gcd 206 40) 18次(判断14次 求值4次);; 应用序4次; exercise 1.21(define (smallest-divisor n) (find-divisor n 2))(define (find-divisor n test-divisor) (co
2012-08-18 10:59:18
1096
原创 SICP习题解答1.9-1.19
ex1.9-1.10#lang racket; exercise 1.9;; 第一个是递归计算过程,第二个是迭代计算过程; exercise 1.10(define (A x y) (cond ((= y 0) 0) ((= x 0) (* 2 y)) ((= y 1) 2) (else (A (- x 1) (A x (-
2012-08-17 19:32:16
2146
原创 SICP习题解答1.1-1.8
ex1.1-1.5#lang racket; exercise 1.110(+ 5 3 4)(- 9 1)(/ 6 2)(+ (* 2 4) (- 4 6))(define a 3)(define b (+ a 1))(+ a b (* a b))(= a b)(if (and (> b a) (< b (* a b))) b a)(con
2012-08-16 15:57:12
569
转载 利用FS寄存器获取KERNEL32.DLL基址算法的证明
<br /><br />FS寄存器指向当前活动线程的TEB结构(线程结构)<br />偏移 说明<br />000 指向SEH链指针<br />004 线程堆栈顶部<br />008 线程堆栈底部<br />00C SubSystemTib<br />010 FiberData<br />014 ArbitraryUserPointer<br />018 FS段寄存器在内存中的镜像地址<br />020 进程PID<br />024 线程ID<br />02C 指向线程局部存储指针<b
2010-09-04 15:47:00
604
原创 uva100 The 3n + 1 problem
<br />这是一题比较简单的模拟题,只要先预处理把所有的结果计算出来,然后求解就可以了。(当然可以用rmq来求最大值,也可以线段树,但我用rmq来求时,最后的时间反而更长了,汗~~~应该是大多数时间花在了初始化上面)<br />题目中有trick,要注意i<=j不一定成立,还有在输出的时候i,j要保持原来的顺序,不能是交换后的~~~<br />#include <iostream>#include <cmath>using namespace std;const int N = 10000
2010-08-21 21:11:00
516
转载 汇编中的test和cmp指令
看过破解教程,都知道test,cmp是比较关键,可是我一直不清楚它们究竟是怎么比较的,最后下决心找了很多资料,和大家一起把它们弄清楚.首先看看:状态寄存器(即标志寄存器) PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示: 15 14 13 12 11 10 9 8 7 6 5 4 3 2
2009-12-19 22:46:00
32328
转载 同步、异步、阻塞和非阻塞的概念
在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 Sen
2009-11-28 17:59:00
440
转载 一篇介绍JMF的文章
Java媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。本指南主要通过使用工作的例子提供一个JMF的一些主要的特征的概述。阅读完本指南后,你将会明白JMF体系结构中的主要播放功能。你同样能正确的使用JMF,使用现存的例子和可为更多特殊功能扩展的源代码。本指南包含着以下主题:· 下载和安装JMF· 主要的JMF类以及它们在JMF
2009-11-06 11:17:00
847
转载 int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i cout cin>>i; re
2009-10-28 22:24:00
509
转载 区别:static _cast、dynamic _cast、reinterpret_cast和const_cast
C-style cast举例: int i; double d; i = (int) d; 上面的代码就是本来为double类型的d,通过(int)d将其转换成整形值,并将该值赋给整形变量i (注意d本身的值并没有发生改变)。这就是典型的c-style类型转换。下面是一个简单的程序:#include using namespace std; int main
2009-10-25 21:30:00
355
原创 线性筛法求素数(C/C++版)
#includeusing namespace std;const long MAXP = 200000;long prime[MAXP] = {0},num_prime = 0;int isNotPrime[MAXP] = {1, 1};int main(){ for(long i = 2 ; i < MAXP ; i ++) {
2009-10-09 12:42:00
4046
转载 职场生存法则和处世之道
一,永远要跟比自己强的人交流,而且要跨行业。这一点,非常非常重要,这样你将得到大量信息,对你的未来产生重大影响,因为你在人生道路上会遇到很多十字路口,你必须做出选择,而这些信息,将帮你做出正确选择,有些信息将给你带来商机。我直到今天才彻头彻尾的明白这一点,大彻大悟,希望不会太晚。与比自己高明的人交流!!不管是朋友,同事,熟人,还是陌生人,总之你要想尽办法去交流。什么人是比你高明的人,什
2009-10-08 20:57:00
598
原创 刚到北京的日子
终于来到了北京,一切又将是新的开始。北京果然很干燥,没过几分钟嘴就干了,有点郁闷。搬进北航的宿舍后才发现原来工大的宿舍是多么的美好,在这里连个独立的卫生间也没用,悲剧啊;洗澡还要去澡堂,有点不习惯。不过平时就待在实验室,也没什么大的问题。过几天打算出去逛逛,避过国庆的人流高峰。
2009-10-07 21:46:00
462
原创 学习MFC
前几天下载了孙鑫的MFC视频教程,现在刚看完前4集,感觉收获颇多。原先对MFC总是处于一知半解的状态,现在终于找到了一扇可以进入MFC的大门了。加上这几天在看《windows程序设计》,发现MFC对windows编程的很多内容都进行了封装,原来要写的许多很繁的代码都已经为我们写好了,用起来相当方便。微软果然很强大,现在把wnd学好,以后进微软工作也不错,哈哈~~~
2009-08-31 01:11:00
321
原创 Windows程序设计第5天
由于保研,暑假里就清闲了很多,闲着没事,过了一个月的猪狗生活,越发觉得实在愧对还在认真复习的同学们。所以,在一个闷热的晚上,我终于又产生了要学习的强烈冲动。可是,问题来了,该学习些什么内容好呢? 随手拿来一本《网络原理》,这个大二学的,不过差不多忘了,于是又翻了起来。看着看着,突然对网络编程产生了兴趣,本来上课的时候也没多少在意,现在发现自己竟然对网络编程一无所知!猛的一股劲就上
2009-08-28 20:01:00
374
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人