摘要: 一.Java并发基础当一个对象或变量可以被多个线程共享的时候,就有可能使得程序的逻辑出现问题。 在一个对象中有一个变量i=0,有两个线程A,B都想对i加1,这个时候便有问题显现出来,关键就是对i加1的这个过程不是原子操作。要想对i进行递增,第一步就是获取i的值,当A获取i的值为0,在A将新的值写入A... 阅读全文
posted @ 2015-10-21 22:10 W&L 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 简介ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本... 阅读全文
posted @ 2015-10-21 22:09 W&L 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 你是否正打算优化hashCode()方法?是否想要绕开正则表达式?Lukas Eder介绍了很多简单方便的性能优化小贴士以及扩展程序性能的技巧。最近“全网域(Web Scale)”一词被炒得火热,人们也正在通过扩展他们的应用程序架构来使他们的系统变得更加“全网域”。但是究竟什么是全网域?或者说如何确... 阅读全文
posted @ 2015-10-21 22:08 W&L 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 这两天在看一本书《Java测试新技术TestNG和高级概念》,作者是 TestNG 的创始人,了解了不少关于 TestNG 的知识,看了一篇文章基本把这本书的几个观点都体现了,那我就直接翻译原文就好,省得自己总结。这两天要不是等原作者的授权的话可能周末本文就发布了,没经过人家许可翻译人家文章应该的确... 阅读全文
posted @ 2015-10-21 22:05 W&L 阅读(215) 评论(0) 推荐(0) 编辑
摘要: Java日志基础Java使用了一种自定义的、可扩展的方法来输出日志。虽然Java通过java.util.logging包提供了一套基本的日志处理API,但你可以很轻松的使用一种或者多种其它日志解决方案。这些解决方案尽管使用不同的方法来创建日志数据,但它们的最终目标是一样的,即将日志从你的应用程序输出... 阅读全文
posted @ 2015-10-21 22:03 W&L 阅读(1135) 评论(0) 推荐(0) 编辑
摘要: 谁在关心toString的性能?没有人!除非当你有大量的数据在批量处理,使用toString产生了许多日志。然后,你去调查为何如此之慢,才意识到大部分的toString方法使用的是introspection,它其实是可以被优化的。不过,首先让我们一起看看Javadoc回忆下Object.toStri... 阅读全文
posted @ 2015-10-21 22:00 W&L 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。Java 提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行 Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在 java.util 这个... 阅读全文
posted @ 2015-10-21 21:58 W&L 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 本文延续前一篇文章,继续介绍简单基本的Gson用法。这篇文章我们将介绍如何将复杂的JSON对象解析为Java对象,其中Java对象的结构可以与JSON对象不一致。我们还会看到如何使用Gson反序列化器(JsonDeserializerJava文档)将JSON对象映射为Java对象。观察请注意,文中解... 阅读全文
posted @ 2015-10-21 21:54 W&L 阅读(2365) 评论(0) 推荐(0) 编辑
摘要: 通过调用 Gson API 可以把 Java 对象转换为 JSON 格式的字符串(项目主页)。在这篇文章中,我们将会讲到如何通过 Gson 默认实现和自定义实现方式,将 Java 对象转换为 JSON 字符串。对于那些不熟悉 Gson 的读者,建议在读本篇文章之前读一下这两篇文章:简单 Gson 实... 阅读全文
posted @ 2015-10-21 21:53 W&L 阅读(1865) 评论(0) 推荐(0) 编辑
摘要: GSON是Google开发的Java API,用于转换Java对象和Json对象。本文讨论并提供了使用API的简单代码示例。更多关于GSON的API可以访问:http://sites.google.com/site/gson/.本文是GSON系列文章的第一篇。本文是其他文章的基础,因此不需要任何GS... 阅读全文
posted @ 2015-10-21 21:52 W&L 阅读(207) 评论(0) 推荐(0) 编辑
摘要: HashSet 内部用一个HashMap对象存储数据,更具体些,只用到了key,value全部为一dummy对象。HashSet这个类太简单了,我不打算单独写文章介绍。今天介绍个比较实用的类——LinkedHashMap。签名123public class LinkedHashMapextends ... 阅读全文
posted @ 2015-10-21 21:51 W&L 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 签名(signature)123public class TreeMapextends AbstractMapimplements NavigableMap, Cloneable, java.io.Serializable可以看到,相比HashMap来说,TreeMap多继承了一个接口Navigab... 阅读全文
posted @ 2015-10-21 21:50 W&L 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 签名(signature)123public class HashMapextends AbstractMapimplements Map, Cloneable, Serializable可以看到HashMap继承了标记接口Cloneable,用于表明HashMap对象会重写java.lang.Ob... 阅读全文
posted @ 2015-10-21 21:49 W&L 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 最近被陆陆续续问了几遍HashMap的实现,回答的不好,打算复习复习JDK中的集合框架,并尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一套优雅高效的类库,提升编程能力。在介绍具体适合类之前,本篇文章对Java中的集合框架做一... 阅读全文
posted @ 2015-10-21 21:48 W&L 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 我们先要记住三者的特征:String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)一、定义查看 API 会发现,String、StringBuffer、StringBuilder 都实现了 CharSequence 接口,内部都是用一... 阅读全文
posted @ 2015-10-21 21:43 W&L 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题。为了解决这些性能压力带来问题,我们需要在Web系统架构层面搭建多个层次的缓存机制。在不同的压力阶段,我们会遇到不同的问题,通过搭建不同的服务和架构来解决。W... 阅读全文
posted @ 2015-10-21 21:36 W&L 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 编写需求文档,在嵌入式开发领域是非常普遍的。需求文档被用来定义开发任务,协调大规模的研发计划。对于最终的产品,需求文档扮演着开发者行为和消费者行为之间沟通纽带的角色。当需求文档书写正确的时候,便可以发挥巨大的作用。然而,如果你在嵌入式开发领域工作的时间足够长,你就会很快发现,这个领域里不合格的需求文... 阅读全文
posted @ 2015-10-21 21:34 W&L 阅读(233) 评论(0) 推荐(0) 编辑
摘要: “任何可能出错的事情,最后都会出错。”这就是人们为什么喜欢进行“防错性程序设计”的原因。偏执的习惯有时很有意义,有时则不够清晰也不够聪明,也许当你想到这样写的人的时候还会觉得有点怪异。下面是我列出的的个人感觉最有用而又偏执的 10 项 Java 编程技巧。请看:1. 把字符串常量放在前面通过把字符串... 阅读全文
posted @ 2015-10-21 21:33 W&L 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 实例数据id name id name-- ---- -- ----1 Pirate 1 Rutabaga2 Monkey 2 Pirate3 Ninja 3 Darth Vader4 Spaghetti 4 Ninja1、内联合(inner join)SELEC... 阅读全文
posted @ 2015-10-21 21:30 W&L 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 1、 为什么两个(1927年)时间相减得到一个奇怪的结果?如果执行下面的程序,程序解析两个间隔1秒的日期字符串并比较:public static void main(String[] args) throws ParseException {SimpleDateFormat sf = new Sim... 阅读全文
posted @ 2015-10-21 21:21 W&L 阅读(163) 评论(0) 推荐(0) 编辑