一起读源码之ThreadLocal

这个类提供“thread-local”变量,这些变量与线程的局部变量不同,每个线程都保存一份该变量的副本,可以通过get或者set方法访问。如果开发者希望将类的某个静态变量(user ID或者transaction ID)与线程状态关联,则可以考虑使用ThreadLocal。

2017-07-21 19:39:06

阅读数 246

评论数 0

基于Redis的分布式锁到底安全吗(下)

自从我写完这个话题的上半部分之后,就感觉头脑中出现了许多细小的声音,久久挥之不去。它们就像是在为了一些鸡毛蒜皮的小事而相互争吵个不停。的确,有关分布式的话题就是这样,琐碎异常,而且每个人说的话听起来似乎都有道理。 今天,我们就继续探讨这个话题的后半部分。本文中,我们将从antirez反驳Ma...

2017-03-21 15:11:48

阅读数 352

评论数 0

基于Redis的分布式锁到底安全吗(上)

网上有关Redis分布式锁的文章可谓多如牛毛了,不信的话你可以拿关键词“Redis 分布式锁”随便到哪个搜索引擎上去搜索一下就知道了。这些文章的思路大体相近,给出的实现算法也看似合乎逻辑,但当我们着手去实现它们的时候,却发现如果你越是仔细推敲,疑虑也就越来越多。 实际上,大概在一年以前,关于...

2017-03-21 15:10:02

阅读数 3323

评论数 1

深入理解Java:SimpleDateFormat安全的时间格式化

想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在...

2017-02-08 11:17:16

阅读数 201

评论数 0

神经网络浅讲:从神经元到深度学习

人工智能(Artificial Intelligence)是一个大的概念,它是机器学习的父类。机器学习,把大量的数据告诉机器由机器自己去分析这些数据从而总结得出某种规律/逻辑,然后利用这种逻辑来处理新的数据。 机器学习主要包括了两种学习方法,有监督学习和无监督学习,在无监督学习中,主要是发现数据中...

2017-01-24 17:24:08

阅读数 250

评论数 0

Intellij IDEA 一些不为人知的技巧

idea+git=perfect

2017-01-17 20:52:13

阅读数 1674

评论数 1

Innodb中的事务隔离级别实现原理

当我们开启一个事务,意味着我们不想事务外的操作会影响我们,我们的事务就像是独立的线程那样,在对共享资源访问的时候,就会涉及并发问题,而事务之间对共享数据的影响程度,mysql数据库的存储引擎提供了隔离级别来参考。

2016-11-09 10:31:06

阅读数 8915

评论数 3

MySQL索引背后的数据结构及算法原理

摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常...

2016-09-22 21:53:14

阅读数 362

评论数 0

Java NIO类库Selector机制解析

非常不错的从操作系统级别来介绍nio Selector机制

2016-09-12 16:55:06

阅读数 221

评论数 0

关于io和nio

nio的机制可以让cpu的工作更饱和,更有效率。。。

2016-09-12 11:27:03

阅读数 248

评论数 0

数据库分库分表策略

作为一种数据存储层面上的水平伸缩解决方案,数据库Sharding技术由来已久,很多海量数据系统在其发展演进的历程中都曾经历过分库分表的Sharding改造阶段。简单地说,Sharding就是将原来单一数据库按照一定的规则进行切分,把数据分散到多台物理机(我们称之为Shard)上存储,从而突破单机限...

2016-08-25 16:29:55

阅读数 1596

评论数 0

Java HashMap的hash算法

HashMap 中hash table 定位算法:  Java代码   int hash = hash(key.hashCode());   int i = indexFor(hash, table.length);   其中indexFor和hash源码如下:...

2016-08-25 10:22:07

阅读数 687

评论数 0

Java HashMap的hash函数实现

Hashmap是一种非常常用的、应用广泛的数据类型,最近研究到相关的内容,就正好复习一下。网上关于hashmap的文章很多,但到底是自己学习的总结,就发出来跟大家一起分享,一起讨论。  1、hashmap的数据结构  要知道hashmap是什么,首先要搞清楚它的数据结构,在java编程语言...

2016-08-25 10:15:55

阅读数 1657

评论数 0

Java ReentrantLock(重入锁)带来的改变

前言 ReentrantLock称为重入锁,它比内部锁synchronized拥有更强大的功能,它可中断、可定时,JDK5中,在高并发的情况下,它比synchronized有明显的性能优势,在JDK6中由于jvm的优化,两者差别不是很大。 synchronized原语和ReentrantL...

2016-08-24 11:03:32

阅读数 326

评论数 0

JVM调优(五)对一个web项目的调优

调优前 调优过程

2016-08-23 13:51:38

阅读数 524

评论数 0

JVM调优(四)常用调优方案

将新对象预留到新生代 由于Full GC的成本要远远高于Minor GC,因此尽可能的将对象分配在新生代是一项明智的选择。 大部分情况下,jvm会尝试在eden区域分配对象,但是因为空间紧张等问题,很可能不得不将部分年轻对象提前向老年代压缩。因此,可以为程序分配一个合理的新生代空间,以最大限...

2016-08-23 10:37:46

阅读数 198

评论数 0

JVM调优(三)垃圾收集

前言 垃圾收集器要处理的基本问题是: 哪些对象需要回收?何时回收这些对象?如何回收这些对象? 回收算法 复制算法(copying) 标记-压缩算法(mark-compact)

2016-08-22 17:22:59

阅读数 150

评论数 0

JVM调优(二)JVM内存分配参数

设置最大堆内存 -Xmx参数指定。最大堆是新生代和老年代的大小之和的最大值,他是java应用程序的堆上限。 使用-Xmx可以设置系统的最大堆。 设置最小堆内存 使用-Xms可以设置系统的最小堆空间,也就是jvm启动时,所占据的操作系统的内存大小。 设置...

2016-08-22 16:29:12

阅读数 197

评论数 0

JVM调优(一)虚拟机的内存模型

Java字节码是运行在JVM虚拟机上的,同样的字节码使用不同的JVM参数运行,其性能表现可能各不一样。

2016-08-22 10:14:27

阅读数 388

评论数 0

关于volatile和cas

cas描述: CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。这个旧的预期值是什么意思?V是内存值,B是要程序即将要存入内存的值,但这个旧的预期值A,是什么意思,程序如何知道预期值? 一个线程间共享的变量,首...

2016-08-18 14:16:55

阅读数 1148

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭