Steve's Blog

Talk is cheap, show me the code.

0%

当原子类竞争很激烈时,使用CAS性能将变低,JDK提供了一个高性能的支持并发的计数器,LongAdder。

阅读全文 »

java.util.concurrent.atomic包下,大致可分为4类。其中底层原理使用的都是由Unsafe类提供的CAS操作提供。

阅读全文 »

Unsafe是一个sun.misc包下的类。Unsafe为我们提供了访问底层的机制,这种机制仅供java核心类库使用,而不应该被普通用户使用。但是,为了更好地了解java的生态体系,我们应该去学习它,去了解它,不求深入到底层的C/C++代码,但求能了解它的基本功能。

阅读全文 »

1. 基础

常见的数据存储结构有:数组和链表,其中存储的数据都为有序。

  • 数组

优势:可以直接通过二分查找来找数据,时间复杂度$O(N)$,访问快

劣势:大小固定,需要添加元素且保持有序时,可能需要移动很多原来的元素,时间复杂度高为$O(N)$, 插入慢

  • 链表

优势:插入时时间复杂度为$O(N)$,但是不需要移动数据, 插入相对快

劣势:查询某个元素时平均时间复杂度为 $O(N )$,访问慢

  • 散列表HashMap

集合了数据和链表的优势

查询时间复杂度:$O(1)$

插入时间复杂度:$O(1)$

阅读全文 »

环境

1. 环境变量

1. 当前用户变量

1
cat ~/.bash_profile

2. 设置PATH

/etc/.paths.d/,建立要使用的命令的文件,里面存储具体所在可执行文件的位置。
例如

1
2
$ touch /ect/paths.d/mysql
$ vi /etc/paths.d/mysql

把mysql bin文件夹的路径存进去

1
/usr/local/mysql/bin

保存之后,打开新的命令窗口,就可以使用了。

1
2
$~ echo $PATH
/usr/local/mysql/bin:$PATH
阅读全文 »

1. 什么是Redis

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) 与范围查询, bitmapshyperloglogs地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication)LUA脚本(Lua scripting)LRU驱动事件(LRU eviction)事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

阅读全文 »