TAG: java

ConcurrentHashmap 解析

concurrentHashmap是为了高并发而实现,内部采用分离锁的设计,有效地避开了热点访问。而对于每个分段,ConcurrentHashmap采用final和内存可见修饰符volatile关键字

最后更新时间: 共 25 次浏览 Tags: java

Java 理论与实践: 正确使用 Volatile 变量

Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized 的一部分。

最后更新时间: 共 29 次浏览 Tags: java

如何计算Java对象占用了多少空间?

在Java中没有sizeof运算符,所以没办法知道一个对象到底占用了多大的空间,但是在分配对象的时候会有一些基本的规则,我们根据这些规则大致能判断出来对象大小。

最后更新时间: 共 23 次浏览 Tags: java

Java StringBuilder和StringBuffer源码分析

StringBuilder 与 StringBuffer 是两个常用的操作字符串的类。大家都知道, StringBuilder 是线程不安全的,而 StringBuffer 是线程不安全的。前者是JDK1.5加入的,后者在JDK1.0就有了。下面分析一下它们的内部实现。

最后更新时间: 共 25 次浏览 Tags: java

Java实现SSH模式加密原理及代码

SSH是先通过非对称加密告诉服务端一个对称加密口令,然后进行验证用户名和密码的时候,使用双方已经知道的加密口令进行加密和解密,SSH中为什么要使用非对称加密,又使用对称加密,到底有什么用处?到底安全不安全?既然后来又使用了对称加密,开始的时候为什么还要用非对称加密?反过来,既然用非对称加密,为什么又要使用对称加密呢?

最后更新时间: 共 34 次浏览 Tags: java

如何在 OpenShift 上运行 Apache Tomcat 8

Redhat公司推出了OpenShift服务。开发者可以在OpenShift上面尝试新的框架,编程语言或者服务器。当我在学习WebSockets的时候了解到目前Apache Tomcat 8已经支持JSR356规 范。JSR356是Java下WebSockets的标准API规范。尽管Apache Tomcat 7 也支持WebSockets,但是它用的是它自己的专有API。所以我想尝试一下基于JSR356标准支持WebSockets的Apahce Tomcat 8。我决定把它安装在OpenShift上而不是在我本地的开发机上。在这篇文章中,我将会一步一步的展示如何在OpenShift上运行Apche Tomcat 8。

最后更新时间: 共 19 次浏览 Tags: java openshift tomcat

在 Eclipse 下使用gradle 构建系统

构建系统时候常常要用到 Ant, Maven 等工具,对于初学者来说,它们还是过于复杂,上手还是需要时间的。本文将向读者介绍一种全新的构建项目的方式 gradle,它简单、上手快,能大大节省项目的时间和成本。

最后更新时间: 共 53 次浏览 Tags: java gradle

如何使用Velocity模板引擎

本文主要介绍了 Velocity 模板引擎的一些使用场景、语法语句规则等内容,并用具体实例展示了使用 Velocity 模板引擎如何快速生成 Java 代码,可以使读者对 Velocity 模板引擎有一个快速的认识与了解。

最后更新时间: 共 46 次浏览 Tags: java velocity

Java 7新特性:Try-with-resources

我们大多数情况都用相同的一些步骤与外部资源交互。比如:我们创建一个对象、使用这个对象连接资源、使用资源、最后关闭连接。然而,尽管大多数程序员都很熟悉如何打开和链接外部资源,但是一个反复出现的令人尴尬的问题就是:在关闭资源和连接这个问题上大家做的都不尽如人意。可悲的是,很多已开发的Java企业应用创建了使用外部资源,但没有关闭它们,比如:JDBC或文件对象,结果是这些实际上已不使用的资源对象无法被垃圾回收,同时外部资源会被持续消耗掉。另外,还会消耗JVM的内存分配和时钟周期,你将会看到这些无效的资源管理如何降低系统新能和难于调试的。

最后更新时间: 共 10 次浏览 Tags: java

Java中的静态绑定和动态绑定

一个Java程序的执行要经过编译和执行(解释)这两个步骤,同时Java又是面向对象的编程语言。当子类和父类存在同一个方法,子类重写了父类的方法,程序在运行时调用方法是调用父类的方法还是子类的重写方法呢,这应该是我们在初学Java时遇到的问题。

最后更新时间: 共 15 次浏览 Tags: java

Java 程序员写 SQL 时易犯的另外 10 个错误

Java 程序员编写 SQL 时容易出现的错误远远不止之前一篇Java 程序员写 SQL 时易犯的 10 个错误那些,因此在这篇文章中我将列举另外 10 个 Java 程序员编写 SQL 时容易出现的有趣的错误。

最后更新时间: 共 38 次浏览 Tags: java database

提升 Java 锁的性能

这个月前我们在 Plumbr 介绍了 locked thread detection ,我们收到了很多问题,比如:“嘿嘿,太好了,现在我终于知道什么导致了性能问题,但是,我该解决呢?我们正在努力编写我们产品的解决方案文档,不过在这篇文章我将分享一些通用技术,你可以单独应用于锁检测工具。这些方法包括使用分拆锁、并发数据结构来保护数据减少锁定范围而不是使用代码。

最后更新时间: 共 41 次浏览 Tags: java

Java 程序员写 SQL 时易犯的 10 个错误

Java 开发人员会混合面向对象思维和命令行思维,这与他们的工作经验和能力相关。不过,当 Java 开发人员编写 SQL 时,一切都变了。SQL 是声明式语言,它没有任何面向对象和命令行的编程思想。使用 SQL 可以非常容易的编写传。在SQL中要写个查询语句是很简单的。但在Java里类似的语句却不容易,因为程序员不仅要反复考虑编程范式,而且也要考虑算法的问题。

最后更新时间: 共 48 次浏览 Tags: java database

Java命名:可怕的DefaultAbstractHelperImpl

这篇文章最早是发表在jooq.org上,作为聚焦于jOOQ上所有关于Java、SQL以及软件开发的系列的一部分。 前段时间,我们发布了这款被我们称作Spring API Bingo的趣味游戏。这是对Spring构造类名时展现出的创造性极尽赞美。

最后更新时间: 共 25 次浏览 Tags: java

Java 你还不清楚的十个方面

你是从一开始就使用 Java 编程吗?是否还记得,当时有人称 Java 为 "Oak"?是否 OO 设计思想仍然是一个热门话题的时候?是否还记得 C++ 的拥护者认为Java一点机会都没有的日子?还记得 Applets 吗?我敢打赌,下面介绍的内容有一半你是不了解的,让我们来看看这些内容吧。

最后更新时间: 共 66 次浏览 Tags: java

为你的 JVM 增加一些熵

是否可以产生强大的随机数,依赖于你系统的熵。有些人声称,这可以通过公平的骰子得到保证。有些人声称,这可以通过掷筛子的方式得到保证。另一些人则认为,可以通过修改 OpenJDK 的 java.math.Random.nextInt() 方法来实现:

最后更新时间: 共 39 次浏览 Tags: java

快速了解Scala技术栈

我无可救药地成为了Scala的超级粉丝。在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为一个巨大的黑洞,吸引力使我不得不飞向它,以至于开始背离Java。固然Java 8为Java阵营增添了一丝亮色,却是望眼欲穿,千呼万唤始出来。而Scala程序员,却早就在享受lambda、高阶函数、trait、隐式转换等带来的福利了。

最后更新时间: 共 44 次浏览 Tags: java scala

MapReduce实战--倒排索引

倒排索引(Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。

最后更新时间: 共 41 次浏览 Tags: java