- 博客(40)
- 资源 (6)
- 收藏
- 关注
BlockQueue之ArrayBlockingQueue源码解析
前面我们介绍的LinkedBlockingQueue的源码,这篇文章我们一起研究下ArrayBlockingQueue的源码 (1)LinkedBlockingQueue源码解析(2)ArrayBlockingQueue源码解析 从语义上看,ArrayBlockingQueue底层是基于数组实现的,而LinkedBlockingQueue底层是基于链表实现的(实际是封装为N...
2016-04-28 15:48:03
333
原创 欢迎使用CSDN-markdown编辑器
最近在研究blockqueue的源码,从今天开始,和大家分享一下我看源码的一些心得体会 LinkedBlockingQueue实现了BlockingQueue接口以及Serializable接口,是有序的FIFO队列,构造函数中,可传入一个最大容量值,如果没有传入,则默认是Integer.MAX_VALUE 一 首先看一下重要的几个类变量:、、、private final At
2016-04-28 07:23:32
169
BlockQueue之LinkedBlockingQueue源码解析
最近在研究blockqueue的源码,从今天开始,和大家分享一下我看源码的一些心得体会 (1)LinkedBlockingQueue源码解析 (2)ArrayBlockingQueue源码解析 LinkedBlockingQueue实现了BlockingQueue接口以及Serializable接口,是有序的FIFO队列,构造函数中,可...
2016-04-27 18:45:01
243
mongo实践-通过js shell操作mongo
保存命令:j={name:"wangjingjing",age:15}db.user.save(j); 查询命令:var cursor = db.user.find();while(cursor.hasNext())printJson(cursor.next()); printJson(cursor[4]); var arr = cursor.toArr...
2013-02-26 16:57:00
168
原创 为什么人们对mongo感兴趣
假象我们在制作一个电子商务网站,如果我们使用关系型数据库,比如说mysql,那么一个product我们将会分别在几个表中保存,如果我们想要获得一个产品的全部信息,就不得不做很多的join,所以在设计数据库时候我们就需要考虑数据最好以什么样的结构来保存。但是如果我们使用非关系型数据库,比如说mongo,我们完全可以将一个produce的数据存储在一个document中,一样也可以进行查询,而...
2013-02-26 16:54:07
105
原创 数据结构学习第四天
1、单链表的整表删除思路:(1)声明一结点q、p(2)将第一个结点赋给p(3)循环 将下一结点赋给q 释放p 将q赋值给p 2、静态链表3、循环链表:最后一个结点的指针指向头结点,形成闭合的单向环路4、双向链表:既有前驱,也有后继 对于后面几种像静态链表,循环链表,双向链表,以前在大学也学过,这次又回忆了一下,感觉有了新的认识,链表暂且告一段落 ...
2012-12-21 09:06:57
88
jvm学习第四天
继续jvm的学习,昨天学习了根据十六进制的class文件分析还原类结构,今天学习类加载的过程一、类加载的过程1、加载(类加载过程中的其中一个过程)(1)通过一个类的全限定名来获取定义此类的二进制字节流(2)将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构(3)在java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口 ...
2012-12-20 22:29:07
74
数据结构学习第三天
昨天在链表的顺序结构基础上对链表链式存储即单链表做了简单的介绍,今天继续。1、单链表的读取获得链表第i个元素的思路(1)声明一个结点p指向链表的第一个结点,初始化j从1开始(2)当j<1时,就遍历链表,让p的指针向后移动,不断指向下一结点,j累加1(3)若到链表末尾p为空,说明第i个元素不存在(4)若查找成功,返回结点p的数据可见,单链表的查找确实不如顺序表来的快...
2012-12-20 08:20:26
106
原创 jvm学习第三天
今天工作有点忙,没时间学习了,赶紧补上吧。昨天开始学习class文件结构,今天继续。一、class类文件结构Class文件是一组以8位字节为基础单位的二进制流。根据java虚拟机的规定,Class文件格式采用一种类似于C语言结构体的微结构来存储,这种伪结构只有两种数据类型:无符号数和表。 1、魔数与Class文件的版本,下面是从ue中拷贝出来的十六进制片段 p...
2012-12-19 23:29:22
67
数据结构学习第二天
继续昨天的知识,学习线性表的删除算法。1、删除算法的思路:(1)如果删除位置不合法,抛出异常(2)取出删除元素(3)从删除位置开始,元素逐一向前移动一个位置(3)表长减1 我们可以得出线性表的顺序存储机构读数据的时间复杂度是O(1),而插入和删除的时间复杂度都是O(n)。 顺序存储结构的优缺点:优点:(1)无须为表中元素之间的逻辑关系而增加额外的存储空间...
2012-12-19 07:48:58
75
原创 jvm学习第二天
今天是jvm学习的第二天,继续坚持吧,才刚刚开始。 一、垃圾收集算法,由于垃圾收集算法涉及大量的程序细节,而且每个平台的虚拟机操作内存的方法又各有不同,所以只介绍几种垃圾收集算法的思想。 (1)标记清除算法:先标记处需要回收的对象,然后统一收集,这种方法不好的地方是会产生大量不必要的碎片,当以后程序运行过程中需要分配较大的内存空间时无法找到足够连续的内存单元,从而引发新一轮的垃圾回...
2012-12-18 22:21:30
94
原创 数据结构学习第一天
昨晚想看看高性能mysql,但是发现数据结构是绕不开的,所以是得好好学学数据结构了,选了一本入门教材《大话数据结构》,就当做读书笔记提炼精华了,今天是第一天,看看能坚持多久。 第一章 绪论 一、基本概念和术语数据:描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整...
2012-12-18 18:15:08
86
原创 jvm学习第一天
与c和c++不同,java的虚拟机拥有自动垃圾回收的机制,使得程序员不必去关注垃圾回收的具体过程,然而或许也正因为如此,一旦出现了java内存泄露或者内存溢出时,排查工作讲变的麻烦,所以,理解jvm还是很有意义的。 一、jvm运行时数据区域:分为方法区,栈(本地方法栈、虚拟机栈),程序计数器,堆。 程序计数器:由于cpu处理线程时采用的是轮询的方式,所以,计数器会帮助cpu完成下一...
2012-12-17 23:28:10
91
原创 12.17日记
一、一直觉得用户请求和struts处理请求之间有一些空白的知识点,所以,今天准备看看tomcat。其实像struts这类的控制层框架都是实现了servlet api,然后对一些业务进行进一步封装后的产物,但是它也只是负责处理业务的,那么用户的请求怎么就到达控制层呢?这就是servlet容器的作用了,tomcat作为开源的servlet容器,也实现了servlet api,在用户请求到来时,会为...
2012-12-17 17:17:15
77
原创 12.14日记
一、昨天看的是文件上传,今天看了下文件下载我们一般做文件下载时都是直接在a标签中写文件在服务器端的路径,这样做有两个问题:(1)遇到中文的文件名时,可能会因为编码的问题而造成不能下载(2)有些时候可能会遇到权限问题,比如控制用户的下载 这时候,我们就要用到struts的下载了。 <action name="uploadByStruts" class="c...
2012-12-14 11:39:03
81
原创 struts2源码学习一验证框架
struts的验证框架项目中用的可能比较少,我们用的比较多的方式是在页面前端使用js的验证框架来对表单进行初步的验证,然后可能利用异步技术对数据进行有效性验证。所以这部分只是我们只知道怎么用感觉就可以了,需要学习的就是验证拦截器的工作方式,以及国际化的处理。 验证可以采取两种方式,如果我们的Action继承了ActionSupport,那么就默认实现了Validateable接口。...
2012-12-13 13:59:24
86
原创 配置android开发环境
我使用的是eclipse作为开发工具,所以就以eclipse作为开发环境做android开发的配置 http://developer.android.com/sdk/installing/index.html 在这个官网上,我们可依找到android sdk tools的下载路径,下载并安装。 安装完成后,我们需要安装eclipse的adt插件,这个插件可以帮助我们很好的很方便的使用...
2012-12-11 16:56:30
80
原创 struts2源码学习一 FilterDispatcher
这个filter是struts中最重要的filter,主要完成以下四个功能:1、处理action2、清理ActionContext3、处理静态资源4、触发指定请求生命周期内的拦截器链这个filter是武断性的,也就是说它通过ActonMapper来寻找特定的action,如果找到了,那么其他剩下的filter就不会再被引用,转而去处理action,这意味着其他过滤器需要放...
2012-12-05 17:56:03
130
原创 Android 应用程序之间数据共享—ContentProvider
在Android 应用程序之间数据共享—-ContentResolver中,已经说明了Android是如何实现应用程序之间数据共享的,并详细解析了如何获取其他应用程序共享的数据。ContentProviders存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。那么如何将应用程序的数据暴露出去?通过以前文章的学习,知道ContentResolver是通过...
2011-05-10 17:36:22
148
原创 Android 应用程序之间数据共享—ContentResolver
Android是如何实现应用程序之间数据共享的?一个应用程序可以将自己的数据完全暴露出去,外界更本看不到,也不用看到这个应用程序暴露的数据是如何存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例如:添加(insert)、删除(delete)、查询(query)、修改(update),当然需要一定的权限...
2011-05-10 17:35:23
77
原创 android之sqliteDatabase,sqliteOpenHelper,ContentProvider
在Android中,对于数据的存贮,有几种方式,有文件方式,有文件式数据库方式,Android自带了一个SQLite数据库,做嵌入开发的人对这个跨平台的本地文件数据库一定不会陌生,在Android对于数据的访问,提出了新的方式,ContentProvider方式,类似于MS的ContentProvider方式的,OLEDB,及ODBC统一的数据方式。我们首先来看看SQLite在 Android中的...
2011-05-10 13:13:59
97
原创 java.lang.OutOfMemoryError: PermGen space
内存溢出。如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下使用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。解决方法: 手动设置MaxPermSize大小修改TOMCAT_HOME/bin/catalina.sh...
2011-04-11 14:52:03
56
zk框架之Event Forwarding
Event Forwarding in Java我们可以使用composerpublic class MyComposer extends GenericForwardComposer{ private static final long serialVersionUID = -6441175297617827574L; public void onClick$hi(){...
2011-04-10 13:45:13
88
zk框架之Event Firing
时间的触发源有两种,常见的是通过组件来触发,其实应用本身也可以触发事件触发时间的方式有三种:post、send、echo Post an EventPosting是触发时间最常见的一种方式,同过posting,触发的事件被放到系统时间的最末端,储存在事件序列里的事件会按照先进先出的顺序一个一个被处理,每个desktop都有一个事件序列。Events.postEvent("onC...
2011-04-09 17:01:32
159
zk框架之Event Handling
event是用来抽象事件的,在这里我们将讨论怎么去操纵event,比如说listening,posting,forwarding Event Listening有两种方式可以监听事件:Event Hanler and Event Listener。 Listen by use of an Event Handler我们可以在zk page中将handler指定为一个属性或者...
2011-04-09 15:35:47
207
zk框架之Macro Component
Define Macro Component任意的ZUML page 都可以作为一个macro component我们在web-inf下新建macro,并新建一个username.zul<?page title="new page title" contentType="text/html;charset=UTF-8"?><zk> <hlay...
2011-04-09 14:05:07
107
zk框架之Richlet
richlet是一段java小程序,它可以形成UI,也可以为用户的请求服务。当用户的url请求到来时,zk会根据web.xml中的url-pattern来检查这是要请求一个zul或者是richlet。当用户的请求是一个zul的时候,就和我们前面所讲的一样。如果用户的请求是一个richlet,那么zk loader 会将处理任务交给richlet,这时,ui的形成就全部由richlet决定。...
2011-04-09 13:36:33
176
zk框架之On-demand Evaluation
默认情况下,zk都是根据我们在zuml文档中的定义来构造组件,然而,我们也可以根据需要来加载需要的组件。比如说,我们可以将一个zuml文档分割成几块,然后根据需要来加载指定的模块。这种功能提高了服务器端和客户端的性能,为了实现这个功能,zk提供了一个基本的evaluation,叫做fulfill来简化这个功能的实现。 Load-on-Demand with the fulfill attr...
2011-04-08 14:32:53
123
框架之Iterative Evaluation
默认的情况下,zk会将每一个元素实例化,如果你想生成组件的集合,那么就要使用foreach <?page title="new page title" contentType="text/html;charset=UTF-8"?><zk><window title="new page title" border="normal">
2011-04-08 13:30:27
122
zk框架之Condition Evaluation
If and Unless我们可以通过if和Unless来控制widget的显示与否<button if="${param.readOnly=='true' }"></button><button unless="${param.readOnly=='true' }"></button> Switch and Case...
2011-04-08 11:27:06
138
zk框架之Scripts in ZUML
ZUML允许在页面中嵌入script脚本,有两种类型的脚本:server端的和client端的,我们先讨论服务器端的脚本。 在ZK提供的文档里,说明了server-side的脚本有两种嵌入方式:the zscript element、the event handler。前者当页面加载完成后执行,后者是在事件触发时执行。 我们可以想见,在ZUML page中嵌入脚本对于应用程序执行是...
2011-04-08 11:04:47
298
zk框架之Connecting to Java World
一、EL表达式在页面上被访问到时会被当做server,因此它可以访问下面的:1、Components by using its id2、variables defined in zscript3、隐含对象 <window title="EL"> <textbox id="tb" value="${self.parent.title}"/> ${t...
2011-04-07 19:20:15
106
zk框架之XML
一、A XML Element Represents a Component每个XML元素都代表一个component,除了特殊的<zk><attribute>,因此,下面的ZUML将创建三个component<window> <textbox/> <button/></window> 在上面的ZU...
2011-04-07 18:21:10
183
zk框架之ZUML
ZUML是zk user interface markup language的缩写,它是基于xml的,也正因为它是基于xml的,所以有些标点符号必须用符号代替。使用<![CDATA[]]>可以将代码执行,而不是已文本的形式显示。<zscript> <![CDATA[ void myFunc(int a){ alert(a); }]]>...
2011-04-07 17:00:30
336
zk框架之ID Space
我个人理解,ID Space就是为了解决页面中id的管理问题,如果在一个页面中有很多component,我们如果为每一个component都添加唯一的一个id,那么对于开发人员来说无疑是冗杂而繁琐的,所以zk给我们的解决方案是可以把一个页面分成若干个,然后分别维护各自的id space,这样就不必担心有过多的id,也不会担心出现冲突。 tree of ID Space:window 、pa...
2011-04-07 16:29:52
304
zk框架之desktop、page、component
page是component的集合,只有添加到page中的component对于client才是可用的,显然如果把他们从page中移除之后,他们就是不可见的。desktop是page的集合,比如说我们创建了一个index.zul页面,在这个页面,包含了两个zul,分别是booklist.zul和cart.zul,当用户点击某个按钮发送请求的时候,desktop就发挥作用了,它相当于一个独立的r...
2011-04-07 14:56:24
185
zk框架之UI Composing
我们知道zk框架是基于组件的,每个UI对象都对应的一个component,所以,对UI的装配实际上就是修改component的状态和他们之间的关系。对于UI的修改,zk提供了两种方式:xml-based approach 和 pure-java approach我们可以对比下面两种方式:一、xml-based approach: <window title="hello ...
2011-04-07 14:43:35
131
zk处理流程
现在我们总结一下zk框架的处理流程,包括:加载页面的处理流、对于ajax请求的处理流 加载页面的处理流大概分下面的几个步骤:1、用户发送url请求,如果这个url和zk中我们定义的url相吻合,那么zk加载器就会引用这个请求。2、zk加载器负责加载指定的页面,并在服务器端将这些页面转化成java可操控的component。3、当加载完页面后,zk加载器会将结果以html的形式发...
2011-04-07 13:49:05
176
zk框架的component和widget
zk里面的每个对象都是由两部分组成的:component和widget。component是一个java对象,它运行在server端,是一个指向ui对象的引用,它拥有ui对象的属性只不过是抽象的,是看不见的。而widget是一个js对象,运行在client端,它指向的是和用户交互的ui对象,因此是可以看得见得。component和widget的关系是一对一的,然而,当componenti没...
2011-04-07 13:26:15
331
原创 初识zk框架
ZK是一套以 AJAX/XUL/Java 为基础的网页应用程序开发框架,用于丰富网页应用程序的使用界面。最大的好处是,在设计AJAX网络应用程序时,轻松简便的操作就像设计桌面程序一样。 ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性的引擎,同时还提供了丰富多样、可重复使用的XUL与HTML组件,以及以 XML 为基础的使用介面设计语言 ZK Use...
2011-04-07 12:21:30
136
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人