自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 551

原创 ConcurrentHashMap与FutureTask的使用

问题:许多应用的计算过程会相当久,因而会采用某种形式的缓存,重用之前的计算结果以降低延迟、提高吞吐量。例如因数分解,其计算过程可能会相当长,采用缓存将是一种不错的选择。但是如果计算过程是一个并发的行为,那么需要考虑多线程之间的同步。如何解决该问题?首先我们定义一个需要计算很久的接口,如下所示,其中A是输入类型,V是输出类型package cache;public int

2013-05-06 21:55:33 1191

原创 java容器

> —— > —— ArrayList           使用数组来实现                       |                        |——  LinkedList       使用链表来实现                       |                        |——  Vector   —— Stack    线程同步

2013-05-05 20:18:56 552

原创 java CopyOnWriteArrayList

CopyOnWriteArrayList是一个线程安全的链表,特别适用于管理监听器列表。Vector或Collections.synchronizedList(List)虽然在列表上add(),remove()和get()方法现在对线程是安全的,但列表中的元素如果是可变的,那么遍历时仍然会抛出ConcurrentModificationException!而CopyOnWriteArrayLi

2013-04-24 21:57:32 1766

转载 无锁的数据结构(Lock-Free)及CAS(Compare-and-Swap)机制

当同时存在读写线程时,默认情况下是不保证线程安全的,因而需要利用信号量来进行线程同步(Synchronization),如关键代码段、互斥体等,同时操作系统也提供了相应的API。然而同步并不总是满足条件的且有效率的,比如陷入内核时会有性能损失、死锁、活锁以及资源浪费等。于是Lock-Free和Wait-Free的思想出现了,由于此时不存在读写线程的同步,因而在写线程运行时,读线程也在运行(多核

2013-04-17 22:56:16 788

转载 Java 理论与实践: 正确使用 Volatile 变量

简介:Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。在这期的Java 理论与实践 中,Brian Goetz 将介绍几种正确使用 volatile 变量的模式,并针对其适用性限制提出一些建议。Java

2013-03-20 14:45:21 357

转载 linux内核的经典书籍

《Linux内核设计与实现》 简称LKD,从入门开始,介绍了诸如进程管理、系统调用、中断和中断处理程序、内核同步、时间管理、内存管理、地址空间、调试技术等方面,内容比较浅显易懂,个人认为是内核新人首先必读的书籍。新人得有此书,足矣!《深入理解Linux内核》 简称ULK,相比于LKD的内容不够深入、覆盖面不广,ULK要深入全面得多。 前面这两本,一本提纲挈领,一本全面深入。

2012-12-29 23:07:42 401

原创 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 1110

原创 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 681

原创 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 1234

原创 SICP第一章小结

Lisp作为函数式语言,目前来看语法简单,使用起来相当方便。起初看Lisp是因为Hadoop编程借口是函数式的(Map/Reduce方法),所以想学习一下函数式语言。现在花了4天时间把终于第一章看完了,简单的小结一下。第一章讲的是Lisp的过程,里面有几个比较重要的特性:Lisp的代换模型:正则序(先代入再求值)、应用序(先求值再代入)。Scheme默认是应用序,这样可以简化计算。

2012-08-20 10:15:40 446

原创 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 618

原创 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 777

原创 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 1044

原创 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 2096

原创 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 537

转载 利用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 574

原创 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 465

转载 汇编中的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 32101

转载 同步、异步、阻塞和非阻塞的概念

在进行网络编程时,我们常常见到同步、异步、阻塞和非阻塞四种调用方式。这些方式彼此概念并不好理解。下面是我对这些术语的理解。同步  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 Sen

2009-11-28 17:59:00 411

转载 一篇介绍JMF的文章

 Java媒体架构(JMF)是一个令人激动的通用的API,它允许Java开发者用许多不同的方法处理媒体。本指南主要通过使用工作的例子提供一个JMF的一些主要的特征的概述。阅读完本指南后,你将会明白JMF体系结构中的主要播放功能。你同样能正确的使用JMF,使用现存的例子和可为更多特殊功能扩展的源代码。本指南包含着以下主题:· 下载和安装JMF· 主要的JMF类以及它们在JMF

2009-11-06 11:17:00 800

转载 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 492

转载 区别: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 334

原创 线性筛法求素数(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 3921

转载 职场生存法则和处世之道

一,永远要跟比自己强的人交流,而且要跨行业。这一点,非常非常重要,这样你将得到大量信息,对你的未来产生重大影响,因为你在人生道路上会遇到很多十字路口,你必须做出选择,而这些信息,将帮你做出正确选择,有些信息将给你带来商机。我直到今天才彻头彻尾的明白这一点,大彻大悟,希望不会太晚。与比自己高明的人交流!!不管是朋友,同事,熟人,还是陌生人,总之你要想尽办法去交流。什么人是比你高明的人,什

2009-10-08 20:57:00 535

原创 刚到北京的日子

终于来到了北京,一切又将是新的开始。北京果然很干燥,没过几分钟嘴就干了,有点郁闷。搬进北航的宿舍后才发现原来工大的宿舍是多么的美好,在这里连个独立的卫生间也没用,悲剧啊;洗澡还要去澡堂,有点不习惯。不过平时就待在实验室,也没什么大的问题。过几天打算出去逛逛,避过国庆的人流高峰。

2009-10-07 21:46:00 418

原创 学习MFC

    前几天下载了孙鑫的MFC视频教程,现在刚看完前4集,感觉收获颇多。原先对MFC总是处于一知半解的状态,现在终于找到了一扇可以进入MFC的大门了。加上这几天在看《windows程序设计》,发现MFC对windows编程的很多内容都进行了封装,原来要写的许多很繁的代码都已经为我们写好了,用起来相当方便。微软果然很强大,现在把wnd学好,以后进微软工作也不错,哈哈~~~

2009-08-31 01:11:00 293

原创 Windows程序设计第5天

    由于保研,暑假里就清闲了很多,闲着没事,过了一个月的猪狗生活,越发觉得实在愧对还在认真复习的同学们。所以,在一个闷热的晚上,我终于又产生了要学习的强烈冲动。可是,问题来了,该学习些什么内容好呢?    随手拿来一本《网络原理》,这个大二学的,不过差不多忘了,于是又翻了起来。看着看着,突然对网络编程产生了兴趣,本来上课的时候也没多少在意,现在发现自己竟然对网络编程一无所知!猛的一股劲就上

2009-08-28 20:01:00 344

空空如也

空空如也

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

TA关注的人

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