TAG: java

有关“双重检查锁定失效”的说明

双重检查锁定(以下称为DCL)已被广泛当做多线程环境下延迟初始化的一种高效手段。遗憾的是,在Java中,如果没有额外的同步,它并不可靠。在其它语言中,如c++,实现DCL,需要依赖于处理器的内存模型

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

Java 并发编程(二)对象的不变性和安全的发布对象

满足同步需求的另一种方法是使用不可变对象(Immutable Object)。到目前为止,我们介绍了许多与原子性和可见性相关的问题,例如得到失效数据,丢失更新操作或光查到某个对象处于不一致的状态等等,都与多线程视图同时访问同一个可变的状态相关。如果对象的状态不会改变,那么这些问题与复杂性也就自然消失了。

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

happens-before俗解

学习Java并发,到后面总会接触到happens-before偏序关系。初接触玩意儿简直就是不知所云,下面是经过一段时间折腾后个人对此的一点浅薄理解,希望对初接触的人有帮助。如有不正确之处,欢迎指正。

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

有效处理Java异常三原则

Java中异常提供了一种识别及响应错误情况的一致性机制,有效地异常处理能使程序更加健壮、易于调试。异常之所以是一种强大的调试手段,在于其回答了以下三个问题

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

Java异常有多慢?

实际上,真正要讨论的问题并不是,“相对‘那些不会发生错误的代码’来说,‘那些以异常形式上报的错误’会有多慢?”,因为你可能也认同“已接受的回答”。相反,真正的问题是,“相对‘那些以其他形式上报的错误’来说,‘那些以异常形式上报的错误’会有多慢?”

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

内存不足:杀死进程还是牺牲子进程

早上6点,我不得不开始处理“叫醒”我的一些问题。因为当这些问题发生的时候,我的手机铃声响了。昏睡中的我非常不情愿地拿起了手机,检查我是否疯狂到将叫醒闹钟设在了早上5点。原来是监控系统发现一个Plumbr服务死掉了。

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

java提高篇之LinkedList

LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现。基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些

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

Java开发者写SQL时常犯的10个错误

我十分惊讶的发现,我最近的一篇文章——《Java开发者写SQL时常犯的10个错误》——最近在我的博客和我的合作伙伴DZone上非常的受欢迎

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

设计模式问答(4)

桥接模式能够将实现部分和抽象部分解耦。通过它,实现发生变化并不会影响到抽象,反之亦然。看看下图。开关是抽象部分,而电子设备是实现部分。开关可以连接到任何一个电子设备,因此开关是一个抽象的概念,而设备是实现部分。

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

StackOverflow Java API 问题 Top10

Stack Overflow 是一个大型的编程知识库。在 Stack Overflow 中已经有数以百万计的问题,并且很多答案有着很高的质量。这就是为什么 Stack Overflow 的答案经常位于 Google 搜索结果的顶部。

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

异常的深入研究与分析(1)

本文是异常内容的集大成者,力求全面,深入的异常知识研究与分析。本文由金丝燕网独家撰写,参考众多网上资源,经过内容辨别取舍,文字格式校验等步骤编辑而成,以飨读者。对于本文的内容,建议小白需要多多思考力求掌握,对于老手只需意会温故知新。对于本文的内容,属于基础知识研究范畴,切勿以为读完此文就能将异常知识掌握到家。切记:操千曲而后晓声,观千剑而后识器,所以我觉得没有大量的源码阅读经验,你很难知道什么时候需要自定义异常,什么时候需要抛出异常。

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

java提高篇之异常(下)

Java确实给我们提供了非常多的异常,但是异常体系是不可能预见所有的希望加以报告的错误,所以Java允许我们自定义异常来表现程序中可能会遇到的特定问题,总之就是一句话:我们不必拘泥于Java中已有的异常类型。

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

java提高篇之异常(上)

在这个世界不可能存在完美的东西,不管完美的思维有多么缜密,细心,我们都不可能考虑所有的因素,这就是所谓的智者千虑必有一失。同样的道理,计算机的世界也是不完美的,异常情况随时都会发生,我们所需要做的就是避免那些能够避免的异常,处理那些不能避免的异常。这里我将记录如何利用异常还程序一个“完美世界”。

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

spring security的原理及教程

如何使用spring security,相信百度过的都知道,总共有四种用法,从简到深为:1、不用数据库,全部数据写在配置文件,这个也是官方文档里面的demo;2、使用数据库,根据spring security默认实现代码设计数据库,也就是说数据库已经固定了,这种方法不灵活,而且那个数据库设计得很简陋,实用性差;3、spring security和Acegi不同,它不能修改默认filter了,但支持插入filter,所以根据这个,我们可以插入自己的filter来灵活使用;4、暴力手段,修改源码,前面说的修改默认filter只是修改配置文件以替换filter而已,这种是直接改了里面的源码,但是这种不符合OO设计原则,而且不实际,不可用。

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

AOP方案实现android动态获取权限

Android 6.0版本(Api 23)推出了很多新的特性, 大幅提升了用户体验, 同时也为程序员带来新的负担. 动态权限管理就是这样, 如果你不申请就使用,那么有一个崩溃在后面等待着你。

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

Java NIO 之缓冲区

一个 Buffer 对象是固定数量的数据的容器。通道是 I/O 传输发生时通过的入口,而缓冲区是这些数据传输的来源或目标。

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

JVM 垃圾回收器工作原理及使用实例介绍

Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。

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

关于垃圾回收被误解的7件事

当 我还是小孩的时候,父母常说如果你不好好学习,就只能去扫大街了。但他们不知道的是,清理垃圾实际上是很棒的一件事。可能这也是即使在Java的世界中, 同样有很多开发者对GC算法产生误解的原因——包括它们怎样工作、GC是如何影响程序运行和你能对它做些什么。

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

构建Java Agent,而不是使用框架

Java annotations自从被引入到Java之后,一直扮演着整合各种API的作用,尤其是对大型应用框架而言。在这方面,Spring和Hibernate都是Java annotation应用的好例子——仅仅需要增加几行简单的Java annotation代码,就可以实现非常复杂的程序逻辑。尽管对这些API(的写法)存在一些争论,但是大多数程序员认为,只要使用得当,这种声明式编程在形式上还是很有表达能力的。

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

关于Java集合的小抄

在尽可能短的篇幅里,将所有集合与并发集合的特征,实现方式,性能捋一遍。适合所有”精通Java”其实还不那么自信的人阅读。

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