
编程语言
文章平均质量分 79
等风来啊
好久没有更新博客了,兄弟们我回来,后续每周定时为大家分享大数据技术
10年磨一剑,每天进步一点点
展开
-
Java 学习最佳途径(一)---工具篇
申明:本文来自http://blog.youkuaiyun.com/lc4ever/archive/2007/03/14/1528792.aspx,本人只是个人借鉴,希望jlc4ever原谅,并对原文稍做修改,为了自己学习更加方便.一、 JDK (Java Development Kit) JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆转载 2012-03-01 21:59:54 · 489 阅读 · 0 评论 -
Java 最佳学习途径(二)----书籍篇
学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握。需要有一个循序渐进的阅读过程。我推荐Oreilly出版的Java系列书籍。 在这里我只想补充一点看法,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物。《Thinking in Java》并不是在完整的介绍Jav转载 2012-03-01 22:00:48 · 634 阅读 · 0 评论 -
语言只是工具,最重要的是系统架构,没有了架构,就会变成代码机器人。
首先你要有一本好的JAVA书,如果你是刚刚学,我推荐你一本不错的书>,如果你已经学的不错了,可以去看那本>呵,不过,初学者千万不要看啊至于J2ME和J2EE,哪个好,现在如果你是为了找工作,J2EE应该好些吧,呵java入门教程《21天学通java2》第三版《Java编程思想》(thinking in java)第三版TOMCAT HOME是指安装tomcat的主目录,并非转载 2012-03-01 22:06:42 · 826 阅读 · 0 评论 -
java学习书籍推荐
1. Java语言基础 谈到Java 语言基础学习的书籍,大家肯定会推荐Bruce Eckel 的《Thinking in Java 》。它是一本写的相当深刻的技术书籍,Java 语言基础部分基本没有其它任何一本书可以超越它。该书的作者Bruce Eckel 在网络上被称为天才的投机者,作者的《Thinking in C++ 》在1995 年曾获SoftwareDeve转载 2012-03-01 22:08:50 · 907 阅读 · 0 评论 -
java堆栈溢出
本贴来自于http://www.iteye.com/topic/459000java.lang.OutOfMemoryError: Java heap space在java程序运行中可能会报如上的错误,通常是在运行过程中内存占用了没有别释放造成的。以前可能没法跟踪可能是很痛苦的事情,现在好了,我们有一个调试软件可以用了,在生产环境下使用的jRockit软件进行调试,是oracle公司出转载 2012-03-07 18:14:34 · 2595 阅读 · 0 评论 -
Java内存模型三
提纲:1、版权声明2、前言3、正文4、结论5、附注6、参考资料=======================================================1、版权声明: 本文作者:little,原始出处:用"堆栈区数据复制"理解Java赋值和参数传递机制的心得 ([link]http://java.learndiary.com/dis转载 2012-03-07 21:18:12 · 499 阅读 · 0 评论 -
JAVA学习,你必读的5本JAVA书籍
给广大JAVA爱好者推荐JAVA教程,很多人学习Java是从《Thinking in Java》这本书入手的,但是我认为这本书是不适合初学者的。我认为正确的使用这本书的方法应该是作为辅助的读物,第四版翻译的已经不错了,其实如果英文OK的人还是读原版比较好。《JAVA编程思想》第四版下载地址:http://115.com/file/e7fzi0fm如果说中文的最好的JAVA书,《JA原创 2012-03-07 21:48:48 · 916 阅读 · 0 评论 -
彻底明白Java的IO系统
Input和Output1. stream代表的是任何有能力产出数据的数据源,或是任何有能力接收数据的接收源。在Java的IO中,所有的stream(包括Input和Output)都包括两种类型:1.1 以字节为导向的stream以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息。以字节为导向的stream包括下面几种类型:I转载 2012-03-07 21:59:25 · 418 阅读 · 0 评论 -
Java内存模型一
开始学习JAVA,对于该语言在内存分配上,不是很了解,所以查阅了许多资料,浏览了大量网页,现在开始整理出来。。。JAVA中的数据存储(堆及堆栈) 在JAVA中,有六个不同的地方可以存储数据: 1. 寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中转载 2012-03-07 20:58:32 · 487 阅读 · 0 评论 -
Java内存模型二
今天复习了一下这些知识,顺便做了下笔记.1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆:存放所有new出来的对象。4. 静态域:存放静态成员(static定义的)5. 常量池:存放字符串常量和转载 2012-03-07 21:01:02 · 401 阅读 · 0 评论 -
Java内存模型四
转载于:http://java.chinaitlab.com/advance/801201.html 1 . 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地点 。与C++不同,Java自动管理栈和堆,程序员不能直接地配置 栈或堆。 2 . 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵转载 2012-03-07 21:32:24 · 448 阅读 · 0 评论 -
Java大量线程运行时,减少内存占用量方法
项目发布到Production服务器上,经过一段时间跟踪发现服务器上项目的内存占有量在缓慢增长,但是在本地做压力时却没有发现这个问题,或者虽然做了压力测试单由于环境的差异内存增长不明显所以没有注意。于是就下载了JProfilter安装到本地的测试服务器上,运行测试发现有些类的个数竟然大于并发线程的个数,很是奇怪,经分析发现原来这并发线程都使用New Class来实现一些对底层数据或对象的操作,原创 2013-07-06 23:39:04 · 2509 阅读 · 0 评论 -
为什么Java程序占用的内存比实际分配给它的要多
摘要:对于Java程序员来说,要想准确知道Java运行时所占的内存,并不是一件简单的事情,要想知道Java程序将会占用多少内存,你需要考虑哪些因素呢?很多人错误的认为运行Java程序时使用-Xmx和-Xms参数指定的就是程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。要更好的理解你的Java程序将会占用多大的内存需要先了解转载 2013-07-06 23:47:21 · 694 阅读 · 0 评论 -
JAVA多线程编程陷阱总结一
陷阱1:在构造函数中启动线程在构造函数中启动一个线程,类似这样: public class A { public A() { this.x=1; this.y=2; this.thread=new MyThread();原创 2013-08-19 23:41:23 · 687 阅读 · 0 评论 -
JAVA多线程编程陷阱总结二
陷阱7:正确使用静态同步方法Java语言规定:任何线程进入同步方法,同步代码块之前,必须先获取同步方法,同步代码块对应的同步监视器。对于同步代码块而言,程序必须显示为它指定同步监视器;对于同步非静态方法而言,该方法的同步监视器是this-即调用该方法的Java对象;对于静态的同步方法而言,该方法的同步监视器不是this,而是该类本身。class SynchronizedStatic i原创 2013-08-20 00:23:29 · 660 阅读 · 0 评论 -
Eclipse导入Tomcat源码
想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug)。这里参考了网上一些资料,将自己操作过程记个流水账。准备:1.Tomcat源码下载这个里下载tomcat-6.0.33源码。2.ant安装,用于编译tomcat的源码。ant下载解压后将其bin添加到系统环境path中。3.IDE——选用Eclipse原创 2013-08-21 02:43:47 · 640 阅读 · 0 评论 -
tomcat源码安装并调试(一)
参考资料:http://tomcat.apache.org/tomcat-6.0-doc/building.htmlhttp://blog.youkuaiyun.com/huxin1/archive/2008/04/13/2289140.aspx本次安装在基于myeclipse8.0,JDK1.5。tomcat源码是用subversion管理,首先要安装subversion插件。1.安装s转载 2013-08-22 01:01:33 · 834 阅读 · 0 评论 -
Tomcat 系统架构与设计模式,第 1 部分: 工作原理
简介: 这个分为两个部分的系列文章将研究 Apache Tomcat 的系统架构以及其运用的很多经典设计模式。本文是第 1 部分,将主要从 Tomcat 如何分发请求、如何处理多用户同时请求,还有它的多级容器是如何协调工作的角度来分析 Tomcat 的工作原理,这也是一个 Web 服务器首要解决的关键问题。本文以 Tomcat 5 为基础,也兼顾最新的 Tomcat 6 和 Tomcat 4。转载 2013-08-26 23:32:20 · 643 阅读 · 0 评论 -
Tomcat 全攻略
tomcat 是 jakarta 项目中的一个重要的子项目,其被 JavaWorld 杂志的编辑选为 2001 年度最具创新的 java 产品 (Most Innovative Java Product),同时它又是 sun 公司官方推荐的 servlet 和 jsp 容器 ( 具体可以见 http://java.sun.com/products/jsp/tomcat/),因此其越来越多的受到软件转载 2013-08-26 23:56:50 · 668 阅读 · 0 评论 -
Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析
面设计模式门面设计模式在 Tomcat 中有多处使用,在 Request 和 Response 对象封装中、Standard Wrapper 到 ServletConfig 封装中、ApplicationContext 到 ServletContext 封装中等都用到了这种设计模式。面设计模式的原理这么多场合都用到了这种设计模式,那这种设计模式究竟能有什么作用呢?顾名思义,转载 2013-08-26 23:59:26 · 514 阅读 · 0 评论 -
阻塞队列的性能对比
主要是比较offer跟poll两个方法的性能,开N个线程,每个线程往队列里写或者取500个整数。线程数20501002005001000LinkedBlockingQueue 15,031,1532,1663,32203,47563,110A转载 2013-08-27 09:50:33 · 797 阅读 · 0 评论 -
Java多线程设计模式之线程池模式
前序: Thread-Per-Message Pattern,是一种对于每个命令或请求,都分配一个线程,由这个线程执行工作。它将“委托消息的一端”和“执行消息的一端”用两个不同的线程来实现。该线程模式主要包括三个部分: 1,Request参与者(委托人),也就是消息发送端或者命令请求端 2,Host参与者,接受消息的请求,负责为每个消息分配一个工作线程。 3转载 2013-08-28 00:18:01 · 780 阅读 · 0 评论 -
线程池模式比较-------ICE线程池模型------L/F领导者跟随者模式
线程池模式一般分为两种:L/F领导者与跟随者模式、HS/HA半同步/半异步模式。HS/HA半同步/半异步模式 :分为三层,同步层、队列层、异步层,又称为生产者消费者模式,主线程处理I/O事件并解析然后再往队列丢数据,然后消费者读出数据进行应用逻辑处理;优点:简化编程将低层的异步I/O和高层同步应用服务分离,且没有降低低层服务性能。集中层间通信。缺点:需要线程间传输数转载 2013-08-28 00:20:12 · 691 阅读 · 0 评论 -
并发危险-解决多线程代码中的11个常见的问题
目录数据争用忘记同步粒度错误读写撕裂无锁定重新排序转载 2013-08-28 00:33:40 · 704 阅读 · 0 评论 -
多核系统上的 Java 并发缺陷模式(bug patterns)
对于多线程编程经验较少的程序员而言,开发多核系统软件将面临两个方面的问题:首先,并发会给 Java 程序引入新的缺陷,如数据速度和死锁,它们是非常难以复现和发现的。其次,许多程序员并不知道特定多线程编程方法的微妙细节,而这可能会导致代码错误。为了避免给并发程序引入缺陷,Java 程序员必须了解如何识别缺陷在多线程代码中很可能出现的关键位置,然后才能够编写出没有缺陷的软件。在本文中,我们将帮转载 2013-08-28 00:37:05 · 602 阅读 · 0 评论 -
关于 java.util.concurrent 您不知道的 5 件事,第 1 部分
Concurrent Collections 是 Java™ 5 的巨大附加产品,但是在关于注释和泛型的争执中很多 Java 开发人员忽视了它们。此外(或者更老实地说),许多开发人员避免使用这个数据包,因为他们认为它一定很复杂,就像它所要解决的问题一样。事实上,java.util.concurrent 包含许多类,能够有效解决普通的并发问题,无需复杂工序。阅读本文,了解 java.util转载 2013-08-28 00:41:43 · 640 阅读 · 0 评论 -
关于 java.util.concurrent 您不知道的 5 件事,第 2 部分
并发 Collections 提供了线程安全、经过良好调优的数据结构,简化了并发编程。然而,在一些情形下,开发人员需要更进一步,思考如何调节和/或限制线程执行。由于java.util.concurrent 的总体目标是简化多线程编程,您可能希望该包包含同步实用程序,而它确实包含。本文是 第 1 部分 的延续,将介绍几个比核心语言原语(监视器)更高级的同步结构,但它们还未包含在 Coll转载 2013-08-28 00:43:56 · 555 阅读 · 0 评论 -
关于多线程编程您不知道的 5 件事
虽然很少有 Java™ 开发人员能够忽视多线程编程和支持它的 Java 平台库,更少有人有时间深入研究线程。相反地,我们临时学习线程,在需要时向我们的工具箱添加新的技巧和技术。以这种方式构建和运行适当的应用程序是可行的,但是您可以做的不止这些。理解 Java 编译器的线程处理特性和 JVM 将有助于您编写更高效、性能更好的 Java 代码。在这期的 5 件事 系列 中,我将通过同步方法、v转载 2013-08-28 00:48:27 · 529 阅读 · 0 评论 -
关于 Java Collections API 您不知道的 5 件事,第 1 部分
对于很多 Java 开发人员来说,Java Collections API 是标准 Java 数组及其所有缺点的一个非常需要的替代品。将 Collections 主要与 ArrayList 联系到一起本身没有错,但是对于那些有探索精神的人来说,这只是 Collections 的冰山一角。关于本系列您觉得自己懂 Java 编程?事实上,大多数程序员对于 Java 平台都是浅尝转载 2013-08-28 00:50:29 · 632 阅读 · 0 评论 -
理解多线程设计模式
多线程设计模式:1.Single Threaded Execution Pattern[同一时刻只允许一个线程操作]比喻:三个挑水的和尚,只能同一时间一个人过桥,不然都掉河里喂鱼了。总结:在多个线程同时要访问的方法上加上synchronized关键字。2.Immutable Pattern[变量赋值一次后只能读取,不能改变。]比喻:一夫多妻制,多个妻子共享一转载 2013-08-28 01:13:29 · 642 阅读 · 0 评论 -
Java内存管理机制
1package com.***.widget;23//: SoftHashMap.java4import java.util.*;5import java.lang.ref.*;67import android.util.Log;89publicclass SoftHashMap extends AbstractMap { 10/**转载 2013-09-09 01:39:40 · 698 阅读 · 0 评论 -
Java内存泄露
很多人知道C++的内存泄露,但并不知道Java的内存泄露问题。实际上,虽然JVM拥有GC,但是GC不是万能的,GC只有在判断一个对象不再拥有有效引用时才进行回收。如果一个对象不再被需要,但是对其的有效引用又没有被完全释放,这种情况下就会出现Java的内存泄露,但它的表现与C++不同。JAVA是如何管理内存为了判断Java中是否有内存泄露,先了解Java是如何管理内存的。Java的内原创 2013-09-09 01:38:02 · 847 阅读 · 0 评论 -
Java内存管理的几个技巧
从理论上来讲java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么N多理由来证明它确实占内存呢?两个字,陋习。本文将介绍几则Java内存管理的小技巧,让你告别陋习,为自己所编写的Java程序提速。AD: 2013云计算架构师峰会超低价抢票中Java做的系统给人的印象是什么?占内存!说道这句话就会有N多人站出来为java辩护,并举出一堆的性转载 2013-09-09 02:11:08 · 686 阅读 · 0 评论 -
小谈Java内存泄露的小题大做和避重就轻
今天一哥们接到了淘宝的电话面试,其中一题问到Java的内存泄露。面试之后,我们在群里稍微讨论了一下,结果他认为我的看法不对,让我再去看看资料。在网上看了一些资料,并且翻阅了《疯狂Java》中的“内存管理”章节之后,我反而觉得我的看法更加正确了。我的看法是:对于一般的强引用,并不需要特别刻意地去处理它,GC已经能够做得很好了,需要注意的是Java的类定义中隐藏的对象引用。对于Java的内存泄转载 2013-09-09 02:13:50 · 782 阅读 · 0 评论 -
Java需要了解的几个开源协议
开源自然是指源码公开,你可以去下载,去学习它的源码,但“天下没有免费的午餐”,开源软件并不意味着我们就可以免费的使用这些软件。如果不了解开源背后的法律,等待我们的就是法律的制裁。很多开源软件使用起来限制非常大,一旦使用了这些开源软件,你的源码就必须也跟着开源,否则别人就可以利用法律手段索赔,或者你就要去购买它的商业授权。下面的图详细说明了使用了哪些开源Liecense,你的代码也必须开源(对于国防转载 2013-09-10 00:41:58 · 4155 阅读 · 0 评论 -
理解Heap Profling名词-Shallow和Retained Sizes
所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size.这是两个在平时不太常见的名词,本文会对这两个名词做一个详细的解释。Shallow Size对象自身占用的内存大小,不包括它引用的对象。针对非数组类型的对象,它的大小就是对象与它所有的转载 2013-12-06 23:15:17 · 774 阅读 · 0 评论 -
Java Reference概念整理,初级
Share with you.Strong Reference, 强引用,即java标准的引用方式,表示GC从 Root Set 开始向下扫描,可以找到对应的 Strong Reference。Referent,被包装为 Weak, Soft, Phantom Reference的对象引用称之为 referent。后面的内容会多次提到这个名词。Weak Referenc转载 2013-12-07 23:54:09 · 537 阅读 · 0 评论 -
java 对象模型(转 32位系统)
在Sun JVM中,(除了数组之外的)对象都有两个机器字(words)的头部。第一个字中包含这个对象的标示哈希码以及其他一些类似锁状态和等标识信息,第二个字中包含一个指向对象的类的引用。另外,任何对象都是8个字节为粒度进行对齐的。这就是对象内存布局的第一个规则:规则1:任何对象都是8个字节为粒度进行对齐的。比如,如果调用new Object(),由于Object类并没有其他没有其他转载 2013-12-08 21:42:14 · 764 阅读 · 0 评论 -
Java对象占用内存大小
new Object()将占用多少bytes的内存空间? 原生类型(primitive type)的内存占用Primitive Type Memory Required(bytes)—————————————————————boolean 1byte 1转载 2013-12-08 23:09:55 · 1713 阅读 · 0 评论 -
Java偏向锁实现原理(Biased Locking)
阅读本文的读者,需要对Java轻量级锁有一定的了解,知道lock record, mark word之类的名词。可以参考我的一篇博文:Java轻量级锁原理详解(Lightweight Locking)Java偏向锁(Biased Locking)是Java6引入的一项多线程优化。它通过消除资源无竞争情况下的同步原语,进一步提高了程序的运行性能。轻量级锁也是一种多线程优化,它与偏转载 2013-12-09 00:19:19 · 709 阅读 · 0 评论