Java的垃圾回收 引言 Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。一般来说,堆的是由垃圾回收来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的
Java内存泄露的理解与解决 Java内存管理机制在C++ 语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由GC(garbage colle
synchronized 与 Lock 的异同 最近在做一个监控系统,该系统主要包括对数据实时分析和存储两个部分,由于并发量比较高,所以不可避免的使用到了一些并发的知识。为了实现这些要求,后台使用一个队列作为缓存,对于请求只管往缓存里写数据。同时启动一个线程监听该队列,检测到数据,立即请求调度线程,对数据进行处理。 具体的使用方案就是使用同步保证数据的正常,使用线程池提高效率。 同步的实现当然是采用锁了,java中使用锁的两个基本工具是
ConcurrentHashMap原理分析 最近在分析Mybatis源码,其中有很多集合类使用的是ConcurrentHashMap,即可进行并发读写的HashMap,发现好文一篇,分享给大家.一.Java并发基础 当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想
RESTful APIs 介绍说RESTful之前,先说说其它的问题。网站定位?CS软件,我们称之为软件,不涉及到RPC时,对数据和业务都是用面向对象的方式处理,那么网站算不算软件?面向对象?Java语言本身是面向对象的,经过Hibernate、Mybatis等ORM框架,数据操作也是面向对象的,还有什么没有被OO?不觉得http://ip:host/deleteUserByCidAndName?cid=xx&name
MySQL server has gone away 问题的解决方法 mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。 造成这样的原因一般是sql操作的时间过长,或者是传送的数据太大(例如使用insert ... values的语句过长, 这种情况可以通过修改max_allowed_packed的配置参数来避免,也可以在程序中将数据分
如何更好地学习dubbo源代码 Dubbo的官方首页在这里:http://code.alibabatech.com/wiki/display/dubbo/Home 很荣幸,作为这样一款业界使用率和好评率出众的RPC框架的维护者,今天这个文章主要是想帮助那些热爱开源的同学,更好的来研究dubbo的源代码。一、Dubbo整体架构 1、Dubbo与Spring的整合 Dubbo在使用上可以做到非常简单,不管是
MySQL的语句执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。 下面我们来具体分析一下查询处理的每一个阶段:FORM:
MyBatis 入门到精通(一) 了解MyBatis获取SqlSession 初识 MyBatis是一款一流的支持自定义SQL、存储过程和高级映射的持久化框架。MyBatis几乎消除了所有的JDBC代码,也基本不需要手工去设置参数和获取检索结果。MyBatis能够使用简单的XML格式或者注解进行来配置,能够映射基本数据元素、Map接口和POJOs(普通java对象)到数据库中的记录。简介 每个MyBatis应用程序主要都是使用SqlS
前端工程与性能优化 每个参与过开发企业级web应用的前端工程师或许都曾思考过前端性能优化方面的问题。我们有雅虎14条性能优化原则,还有两本很经典的性能优化指导书:《高性能网站建设指南》、《高性能网站建设进阶指南》。经验丰富的工程师对于前端性能优化方法耳濡目染,基本都能一一列举出来。这些性能优化原则大概是在7年前提出的,对于web性能优化至今都有非常重要的指导意义。 然而,对于构建大型we
浏览器内部工作原理 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers一、介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么。 将讨论的浏览器 今天,有五种主流浏览器——IE、Firefox、Safari、
Code Review工具Jupiter的使用 Jupiter里,代码评审(code review)分为4个流程Configuration(配置):review发起者设置“Review ID”,指定要评审的代码,参与代码评审的人员,要讨论的问题等等。Individual review(个人评审):每个人独自审查代码,把可能出现问题的代码加入checklistTeam review(团队评审):大家在一起讨论之前检查出的问题代码,并决定如
Quartz Cron 如果想要使用定时任务如Quartz,则必须了解其Cron表达式。与正则表达式规定字符串格式类似,Cron以一种十分简洁的方式,定义了时间间隔的规则:在哪个时刻,或者,隔了多长时间。如果使用过类似谷歌日历等事件管理的软件,你会发现Cron实际上更像谷歌日历中事件触发规则的抽象表达。CronTrigger CronTriggers往往比SimpleTrigger更有用,而非Simpl
memcached基础 memcached是什么?memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在
Java集合中对象排序 Java API针对集合类型排序提供了两种支持:java.util.Collections.sort(java.util.List)java.util.Collections.sort(java.util.List, java.util.Comparator) 第一个方法要求所排序的元素类必须实现java.lang.Comparable接口;第二个方法要求实现一个java.u
Hibernate对比MyBatis 最近做了一个Hibernate与MyBatis的对比总结,希望大家指出不对之处。第一章 Hibernate与MyBatisHibernate 是当前最流行的O/R mapping框架,它出身于sf.net,现在已经成为Jboss的一部分。 Mybatis 是另外一种优秀的O/R mapping框架。目前属于apache的一个子项目。MyBatis 参考资料官网:http://w