JMM-01-intro
Java Memory Model
简介
在多处理器系统中,处理器通常有一个或多个内存缓存层,通过加速对数据的访问(因为数据离处理器更近)和减少共享内存总线上的流量(因为许多内存操作可以由本地缓存来满足),提高性能。内存缓存可以极大地提高性能,但是它们带来了许多新的挑战。
例如,当两个处理器同时检查相同的内存位置时,会发生什么?在什么条件下它们会看到相同的值?
在处理器级别,内存模型...
2018-07-26 12:55:37 |
JMM
Java Model Memory
JMM (Java 内存模型)
作用
内存模型描述给定程序和该程序的执行跟踪,该执行跟踪是否为程序的合法执行。
Java编程语言内存模型通过检查执行跟踪中的每个读取并检查读取所观察到的写入是否根据某些规则有效来工作。
内存模型描述程序的可能行为。一个实现可以自由地生成它喜欢的任何代码,只要所有的结果执行都会产生一个可以由内存模型预测的结果。
这为实现人员执行大量代码转换提供了很大的...
2018-07-26 12:55:37 |
Java
Database Transaction
数据库事务
数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。
概要
一个数据库事务通常包含了一个序列的对数据库的读/写操作。它的存在包含有以下两个目的:
为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。
当多个应用程序在并发访问数据库时,...
2018-07-26 03:17:13 |
Database
Spring Transaction
Spring 事务介绍
优势
全面的事务支持是使用Spring框架的最引人注目的原因之一。
Spring 框架为事务管理提供了一致的抽象,提供了以下好处:
跨不同事务API(如Java事务API (JTA)、JDBC、Hibernate和Java持久性API (JPA)的一致编程模型。
支持声明式事务管理。
编程事务管理的API比复杂的事...
2018-07-26 03:07:50 |
Spring
Apache Wicket
Apache Wicket
Apache Wicket 为全球的网站和应用服务了十多年。有了这个版本,Wicket完全支持Java 8的习惯用法,允许在所有合适的地方使用lambda表达式。
使用Wicket 8,您可以编写更少、更快、更易于维护的代码。
快速开始
依赖
maven
生成命令
mvn archetype:generate -DarchetypeGroup...
2018-07-26 02:39:01 |
Apache
Search 二分查找法
顺序查找
顺序查找适合于存储结构为顺序存储或链接存储的线性表。
基本思想:顺序查找也称为线形查找,属于无序查找算法。从数据结构线形表的一端开始,顺序扫描,依次将扫描到的结点关键字与给定值k相比较,若相等则表示查找成功;若扫描结束仍没有找到关键字等于k的结点,表示查找失败。
复杂度分析:
查找成功时的平均查找长度为:(假设每个数据元素的概率相等) ASL = 1/n(1+2+3+…+...
2018-07-26 01:54:12 |
Algorithm
Time Sort
Time Sort
Timsort: A very fast , O(n log n), stable sorting algorithm built for the real world — not constructed in academia.
算法简介
Timsort 是一种对真实数据有效的排序算法,而不是在学术实验室中创建的。
Tim Peters在2001年为Python...
2018-07-26 01:11:23 |
Algorithm
Java Concurrency-09-synchronized
synchronized
问题
synchronized锁住的是代码还是对象。
答案是:
synchronized 锁住的是括号里的对象,而不是代码。
对于非 static 的 synchronized 方法,锁的就是对象本身也就是 this。
验证
案例 1
SyncDemo.java
public class SyncDemo {
public syn...
2018-07-25 07:34:17 |
Java