开发高性能并发应用不是一件容易的事情.这类应用的例子包括高性能Web服务器.游戏服务器和搜索引擎爬虫等.这样的应用可能需要同时处理成千上万个请求.对于这样的应用,一般采用多线程或事件驱动的 架构 .对于Java来说,在语言内部提供了线程的支持.但是Java的多线程应用开发会遇到很多问题.首先是很难编写正确,其次是很难测试是否正确,最后是出现 问题时很难调试.一个多线程应用可能运行了好几天都没问题,然后突然就出现了问题,之后却又无法再次重现出来.如果在正确性之外,还需要考虑应用的吞吐量和性能优化的…
在Java进阶知识的学习中,JVM都是避不过去的一关,我个人对于JVM的理解其实就是相当于在操作系统的外层再加了一层中间层,从来屏蔽了具体硬件之间的不同实现,使得Java实现了最重要的特性:一次编译,处处运行.本分类中的内容都是基于<深入理解Java虚拟机>中的内容以及网络上面博客整理,外加自己的理解. 今天的内容是JVM中的基础:JVM内存模型 JVM内存模型 JVM中的内存模型主要分为五大块:程序计数器,虚拟机栈,本地方法栈,堆,方法区. 其中,方法区与堆是所有线程共享使用的区域,而虚拟机…
.基础概念 SQL术语/概念 MongoDB术语/概念 说明 database database 数据库 table collection 数据表/集合 row document 数据记录行/文档 column field 数据字段/域 index index 索引 table joins   表连接,MongoDB不支持 primarg key primary key 主键 二.数据库 一个mongodb中可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在da…
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来 垃圾收集概述 Java内存模型中的堆和方法区是垃圾收集技术所需要关注的终点,因为其他的区域会跟随线程的结束而自动回收. 而需要解决垃圾收集的首要目标便是解决如何判断一个对象已经不需要了从而自动进行回收:判断对象是否可以进行回收的算法可以分为引用计数算法与可达性分析算法. 对于Redis有一些了解的同学应该知道Redis的对象内存回收算法便是使用的引用计数算法:而JVM都是使用的可达性分析算法…
public class TestJVM { // 运行时数据区[方法区.堆.程序计数器.虚拟机栈.本地方法栈] private static int _1M = 1024 * 1024; public static void main(String[] args) { byte[] alloc1, alloc2, alloc3, alloc4, alloc5, alloc6, alloc7, alloc8; alloc1 = new byte[1 * _1M]; alloc2 = new by…
本文我们一起讨论Java类的加载.链接和初始化. Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是 java.lang.Class类 的对象.一个Java类从字节代码到能够在JVM中被使用,需要经过加载.链接和初始化这三个步骤.这三个步骤中,对开发人员直接可见的是Java类的加 载,通过使用Java类加载器(class loader)可以在运行时刻动态的加载一个Java类:而链接和初始化则是在使用Java类之前会发生的动作.本文会详细介绍Java类的加载.…
转自:http://developer.51cto.com/art/201009/227812.htm JVM栈解决程序的运行问题,即程序如何执行,或者说如何处理数据;JVM堆解决的是数据存储的问题,即数据怎么放.放在哪儿,另外JVM堆中存的是对象.JVM栈中存的是基本数据类型和JVM堆中对象的引用. JVM基础概念:JVM堆与JVM栈 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型.基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值.“引用值…
SQL 基础学习(2) Joining 可以同时关联(joining)多张表进行复杂的查询. 相比于用Rails捞出数据再用Ruby进行过滤组合,使用SQL更加高效,节能. 以下是 users has_many events的情景,打开DB Browser for SQLite 并新建一个文件demo2.db. 在terminal中执行sqlite3 demo2.db CREATE TABLE events (id INTEGER NOT NULL PRIMARY KEY AUTOINCREME…
最近开始了全面的JAVA生态环境学习,因此,JVM的学习是必不可少的一个环节.和.NET的CLR一样,一起的JAVA应用均跑在JVM虚拟机上,不过相对我们只能干看看的CLR,JVM有很大的灵活性,可以通过配置优化JVM的性能,同时针对JVM相关的监控软件也非常丰富.这部分知识有一些晦涩,为了成为一名合格的JAVA程序员,再硬的骨头也要啃下来,由于自身对这部分没有特别多的心得,将借鉴参考资料中标注的文章进行学习. 首先通过数据类型来引入一个高级语言的核心概念,堆和栈.JAVA的基本类型包括:byt…
目录 尚学堂JAVA基础学习笔记 写在前面 第1章 JAVA入门 第2章 数据类型和运算符 第3章 控制语句 第4章 Java面向对象基础 1. 面向对象基础 2. 面向对象的内存分析 3. 构造方法 4. 垃圾回收机制(Garbage Collection) 5. this关键字 6. static 关键字 7. 静态初始化块 8. 参数传值机制 9. 包 第5章 Java面向对象进阶 1. 继承 2. Object类 3. super关键字 4. 封装 5. 多态(polymorphism)…