自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 资源 (7)
  • 收藏
  • 关注

转载 JVM栈

Java中的栈每当启用一个线程时,JVM就为他分配一个Java栈,栈是以帧为单位保存当前线程的运行状态。某个线程正在执行的方法称为当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量池。当线程执行一个方法时,它会跟踪当前常量池。每当线程调用一个Java方法时,JVM就会在该线程对应的栈中压入一个帧,这个帧自然就成了当前帧。当执行这个方法时,它使用这

2014-11-27 12:47:43 1531

转载 C语言函数调用栈剖析

理解调用栈最重要的两点是:栈的结构,EIP/EBP/ESP寄存器的作用。1.栈结构首先必须明确一点也是非常重要的一点,栈是向下生长的,所谓向下生长是指从内存高地址->低地址的路径延伸,那么就很明显了,栈有栈底和栈顶,那么栈顶的地址要比栈底低。2.EIP/EBP/ESP寄存器对x86体系的CPU而言,在函数调用过程中,系统会用到下面三种寄存器:1.EIP寄存器里存

2014-11-26 21:16:55 966

转载 Linux下常用的函数调用栈规范

我们都应该知道,高级语言的函数调用过程中,有“栈”这么一个概念,被调用函数的局部变量是存放在栈中的,函数调用的参数也是通过栈传递的。那么,调用函数是怎么把各种数据压入栈中,被调用函数又是怎么对栈进行操作以获取必要的数据呢?函数调用发生完毕之后,谁又负责清理这个栈?这就用到了函数调用栈规范!函数调用栈规范是指编译器的一中“约定”,他规定了调用者如何传递参数,被调用者如何获取参数,调用完成后怎

2014-11-25 20:41:30 1040

原创 Java协程框架--Kilim工作原理

Kilim协程框架中最核心需要解决的问题:如何暂停处理当前任务,转而处理其他任务?如何恢复任务继续执行?也即如何实现协程本身的 yield / resume的语义特性。

2014-11-23 18:07:25 13764 2

原创 Java协程框架--Kilim源码分析

Kilim 是一个用于在Java 中使用协程的框架,Kilim 中的关键概念,Kilim 框架图如下:1. Task可以认为Task 就是Actor,使用方式和Java Thread 基本相同,只是继承的为Task,覆盖的为execute 方法,启动也是调用task 的start 方法。 public Task start() { if (sche

2014-11-23 17:36:15 7465

原创 协程简介

关于协程的概念,其实由来已久,在介绍协程的概念之前先简单回顾下我们通常使用到的例程。例程(Subroutine)例程的概念类似于函数,但含义更为丰富一些。例程是某个系统对外提供的功能接口或服务的集合。比如操作系统的API、服务等就是例程;C语言运行时提供的标准库函数等也是例程。Pthreads库提供的一套线程相关的API也属于例程。通俗的理解,一个子例程就是一次子函数调用,

2014-11-23 17:14:13 1988 1

转载 剖析Disruptor为什么会这么快?神奇的缓存行填充

计算机入门我喜欢在LMAX工作的原因之一是,在这里工作让我明白从大学和A Level Computing所学的东西实际上还是有意义的。做为一个开发者你可以逃避不去了解CPU,数据结构或者大O符号 —— 而我用了10年的职业生涯来忘记这些东西。但是现在看来,如果你知道这些知识并应用它,你能写出一些非常巧妙和非常快速的代码。因此,对在学校学过的人是种复习,对未学过的人是个简单介绍。

2014-11-12 00:20:12 1093

转载 从Java视角理解伪共享

从前一篇博文中, 我们知道了CPU缓存及缓存行的概念, 同时用一个例子说明了编写单线程Java代码时应该注意的问题. 下面我们讨论更为复杂, 而且更符合现实情况的多核编程时将会碰到的问题. 这些问题更容易犯, 连j.u.c包作者Doug Lea大师的JDK代码里也存在这些问题.MESI协议及RFO请求从前一篇我们知道, 典型的CPU微架构有3级缓存, 每个核都有自己私有的L1, L

2014-11-12 00:18:36 1114

转载 内存屏障

本文我将和大家讨论并发编程中最基础的一项技术:内存屏障或内存栅栏,也就是让一个CPU处理单元中的内存状态对其它处理单元可见的一项技术。CPU使用了很多优化技术来实现一个目标:CPU执行单元的速度要远超主存访问速度。在上一篇文章 “Write Combing (合并写)”中我已经介绍了其中的一项技术。CPU避免内存访问延迟最常见的技术是将指令管道化,然后尽量重排这些管道的执行以最大化利用缓存

2014-11-12 00:13:33 757

转载 C/C++刁钻问题各个击破之细说sizeof

摘要:Sizeof的作用非常简单:求对象或者类型的大小。然而sizeof又非常复杂,它涉及到很多特殊情况,本篇把这些情况分门别类,总结出了sizeof的10个特性:(0)sizeof是运算符,不是函数;(1)sizeof不能求得void类型的长度;(2)sizeof能求得void类型的指针的长度;(3)sizeof能求得静态分配内存的数组的长度!(4

2014-11-06 12:57:55 1083

转载 协程、线程和执行上下文

摘要: 本文介绍协程、线程及它们执行的上下文等概念,同时给出注意事项。协程是用户级的任务调度,线程是内核级的任务调度,而任务调度过程都涉及到上下文切换(保存与恢复),本文将从较为深刻的角度来阐述这些概念,及其相互关系。协程和线程线程在现代的系统里扮演的角色很重要,几乎一个现代一点的,稍微复杂大型一点的程序,往往都会引入线程,实现某种意义的并行。线程存在广泛的支持,从操作系统,到编译

2014-11-03 00:16:55 2521

转载 JVM字节码指令集简介

Java 虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。虚拟机中许多指令并不包含操作数,只有一个操作码。如果忽略异常处理,那 Java 虚拟机的解释器使用下面这个伪代码的循环即可有效地工作:12345do {   自动计算 PC 寄存器以及从 PC 寄存器的位置取出操作码;

2014-11-03 00:02:48 3275

转载 JVM字节码

栈和局部变量操作 将常量压入栈的指令 aconst_null         将null对象引用压入栈 iconst_m1         将int类型常量-1压入栈 iconst_0         将int类型常量0压入栈 iconst_1         将int类型常量1压入栈 iconst_2         将int类型常量2压入栈 iconst_3    

2014-11-02 23:52:32 974

嵌入式Linux知识培训

非常经典哦 言简意赅 不用多说! 主要包括以下四部分内容: 一、嵌入式Linux开发的基本知识 二、Linux下使用C语言进行系统开发 三、面向嵌入式Linux的GUI系统的体系结构及二次开 发 四、基于Linux OS Smart Phone的体系结构及开发内容

2009-02-17

基于Agent的智能搜索平台

我们所做的电影DVD的在线购物系统是基于Agent的智能搜索平台,它为顾客提供海量信息的搜索和个性化的偏好智能筛选服务。 每当一个顾客注册时,我们便为该顾客创建一个记录,记录顾客注册的信息和网上购物的行为。在日后的使用过程中,他不断变化的真实的偏好将反映在实际的购物行为上,通过对其进行分析,挖掘潜在的数据,来判断顾客的兴趣所在,并且系统将试图不断的修正现有的偏好记录来模拟顾客的行为。

2009-02-17

空空如也

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

TA关注的人

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