Kevin's Zone

  • Home
  • Project
  • ContactMe
  • Login
  • Register
Kevin
受苦即了苦, 享福即消福, 福尽而死
学习笔记

LinkedHashMap 底层分析

众所周知 HashMap 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。 因此 JDK 推出一个基于 HashMap 但具有顺序的 LinkedHashMap 来解决有排序需求的场景。 它的底层是继承于 HashMap 实现的,由一个双向链表所构成。 LinkedHashMap 的排序方式有两种: 根据写入顺序排序。 根据访问顺序排序。 其中根据访问顺序排序时,每次 get 都会将访问的值移动到链表末尾,这样重复操作就能的到一个按照…

2018年4月14日 1条评论 4614点热度 3人点赞 Kevin 阅读全文
Java

ConcurrentHashMap 实现原理

由于 HashMap 是一个线程不安全的容器,主要体现在容量大于总量*负载因子发生扩容时会出现环形链表从而导致死循环。 因此需要支持线程安全的并发容器 ConcurrentHashMap 。 [title]数据结构[/title] 如图所示,是由 Segment 数组、HashEntry 数组组成,和 HashMap 一样,仍然是数组加链表组成。 ConcurrentHashMap 采用了分段锁技术,其中 Segment 继承于 ReentrantLock。不会像 HashTable 那样不管是 put 还是 ge…

2018年4月14日 0条评论 2755点热度 0人点赞 Kevin 阅读全文
Java

HashMap 底层分析

如图所示,HashMap 底层是基于数据和链表实现的。其中有两个重要的参数: 容量 负载因子 容量的默认大小是 16,负载因子是 0.75,当 HashMap 的 size > 16*0.75 时就会发生扩容(容量和负载因子都可以自由调整)。 put 方法 首先会将传入的 Key 做 hash 运算计算出 hashcode,然后根据数组长度取模计算出在数组中的 index 下标。 由于在计算中位运算比取模运算效率高的多,所以 HashMap 规定数组的长度为 2^n 。这样用 2^n - 1 做位运算与取模效…

2018年4月14日 0条评论 2749点热度 0人点赞 Kevin 阅读全文
Database

MySQL Order By 中文排序(A-Z)

出现这个问题的原因是因为MySQL在查询字符串时是大小写不敏感的, 在编绎MySQL时一般以ISO-8859字符集作为默认的字符集, 因此在比较过程中中文编码字符大小写转换造成了这种现象. [title]解决方法①[/title] 对于包含中文的字段加上”binary”属性, 使之作为二进制比较,  例如将”name char(10)”改成”name char(10)binary”. 如果你使用源码编译MySQL, 可以编译MySQL时使用 –with–charset=gbk 参数, 这样MySQL就会直接支持中文…

2018年1月10日 0条评论 3030点热度 1人点赞 Kevin 阅读全文
学习笔记

在SpringBoot使用PageHelper5插件来MyBatis分页查询

[title]引入Jar包[/title] <!-- MyBatis分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>   [title]SqlSessionFactory加入此…

2017年12月5日 0条评论 4308点热度 3人点赞 Kevin 阅读全文
学习笔记

Ubuntu下搭建ZooKeeper3.4.9集群 Dubbo2.5.3 Spring4.2.5整合

[title]准备工作[/title] 三台Ubuntu虚拟机(ZooKeeper服务器要2n+1的数量) 以下在虚拟机上的操作三台同步进行, 最后三台除了IP不一样, 其他都一样 [title]虚拟机设置固定IP和主机名(可省略, 为了好管理)[/title] 固定IP设置不详细说了, 自行百度, 把三台主机设置到同一个局域网下 IP分别192.168.32.10~12 在每台虚拟机修改hosts设置主机名: vim /etc/hosts 在下面增加同样的内容: 192.168.32.10 slave-01 19…

2017年10月18日 0条评论 3704点热度 2人点赞 Kevin 阅读全文
学习笔记

将SVN项目转移到VirtualBox虚拟机内

[title]序[/title] 这么做很奇葩, 但是公司需要 服务器是Windows, VirtualBox里装的是Ubuntu 16,  之前SVN搭建在Windows里面了, 存的东西有10多个G, 需要转移到虚拟机里面. [title]备份SVN版本库[/title] svnadmin.exe dump "D:\Repositories\ROOT" > "D:\backup.dump" 解释: svnadmin.exe是TortoiseSVN客户端内的工具, 如果没有说明安装的时候没有选择全部安装; …

2017年9月13日 0条评论 3103点热度 3人点赞 Kevin 阅读全文
Docker

使用Docker安装MySQL+PHP+Nginx

[title]安装Docker社区版[/title] curl -fsSL https://get.docker.com/ | sh [title]创建Docker内部网络[/title] docker network create --subnet=172.18.0.0/16 mynetwork [title]下载MySQL镜像[/title] docker pull mysql:5.6 [title]配置MySQL容器启动脚本[/title] #!/bin/bash docker rm -f mysql doc…

2017年8月28日 0条评论 4886点热度 1人点赞 Kevin 阅读全文
学习笔记

CentOS7 安装SVN

[title]1.通过yum方式安装SVN[/title] sudo yum -y install subversion [title]2.建立版本库目录[/title] mkdir /home/kevin/svndata [title]3.创建SVN项目库[/title] svnadmin create /home/kevin/svndata/myproject [title]4.配置项目库[/title] 配置服务 vim /home/kevin/svndata/myproject/conf/svnserve.…

2017年8月14日 0条评论 3618点热度 2人点赞 Kevin 阅读全文
Database

JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时

[title]摘要[/title] 名为 CST 的时区是一个很混乱的时区, 在与 MySQL 协商会话时区时, Java 会误以为是 , 而非 。 [title]CST 时区[/title] 名为 CST 的时区是一个很混乱的时区, 有四种含义: 美国中部时间 Central Standard Time (USA) UTC-06:00 澳大利亚中部时间 Central Standard Time (Australia) UTC+09:30 中国标准时 China Standard Time UTC+08:00 古…

2017年7月27日 0条评论 3542点热度 0人点赞 Kevin 阅读全文
123

Kevin

这个人很懒,什么都没留下

分类
  • Docker
  • 学习笔记
  • Java
  • 生活随笔
  • Spring
  • Database
  • Netty
  • Linux
  • JS/JQuery
时光轴
  • 2018年4月
  • 2018年1月
  • 2017年12月
  • 2017年10月
  • 2017年9月
  • 2017年8月
  • 2017年7月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
最近评论
Plainter 发布于 2 年前(12月10日) 嗷呜催更 :drooling:
mcdaocang 发布于 6 年前(03月30日) 宋凯哥哥?MC小刀?jsd1407?还记得吗?我是苍融松。我现在高二了。哈哈哈哈,希望是你要给我回复...
书签
  • 码农的士

COPYRIGHT © 2021 Kevin's Zone. ALL RIGHTS RESERVED.

京ICP备16064400号-1