JDK1.7的线程安全问题
JDK7版本的HashMap底层采用数组加链表的形式存储元素,假设需要存储的键值对通过计算发现存放的位置已经有元素了,那么HashMap就会用头插法将新节点插入到这个位置。
这一点我们可以从put
方法去验证,它会根据key计算获得元素的存放位置,如果位置为空则直接调用addEntry插入,如果不为空,则需要判断该位置的数组是否存在一样的key。如果存在key一致则覆盖并返回,若遍历当前索引的整个链表都不存在一致的key则通过头插法将元素添加至链表首部。
Talk is cheap.Show me the code.
JDK7版本的HashMap底层采用数组加链表的形式存储元素,假设需要存储的键值对通过计算发现存放的位置已经有元素了,那么HashMap就会用头插法将新节点插入到这个位置。
这一点我们可以从put
方法去验证,它会根据key计算获得元素的存放位置,如果位置为空则直接调用addEntry插入,如果不为空,则需要判断该位置的数组是否存在一样的key。如果存在key一致则覆盖并返回,若遍历当前索引的整个链表都不存在一致的key则通过头插法将元素添加至链表首部。
AOP(Aspect-Oriented Programming:面向切面编程),是Spring中一个重要内容,在AOP思想中例如权限控制
、日志管理
、事务控制
等被定义为切面,它实际做的就是将核心功能与切面功能拆分,降低核心功能与切面功能的耦合度,然后在把核心功能和切面功能编织在一起。Spring是基于动态代理实现AOP的。Spring默认情况下在目标类实现接口时是通过JDK代理实现的,只有非接口的是通过Cglib代理实现的。
MVC(Model View Controller)是一种软件设计规范,是一种将业务逻辑、数据、显示分离的一种解耦思想。由模型(Model)
处理应用程序的数据部分,视图(View)
处理数据显示部分,它们两者之间交友控制器(Controller)
调度,控制器通常从视图读取数据,控制用户输入,并向模型发送数据。而Spring MVC
是由Spring
提供的遵循MVC的规范的轻量级web
框架,目的是为了简化Java栈的web开发。
LinkedHashMap继承自HashMap,在HashMap的基础上维护一条双向链表,具备了以下特点:
LinkedHashMap是在HashMap基础上在各个节点之间增加一条双向链表,使得原先散列在不同bucket、单链表、红黑树上的节点之间可以通过双向链表进行操作,实现有序关联,其逻辑结构如下图所示。
@TOC
首先聊一聊什么是CPU缓存一致性,CPU Cache通常分为三级缓存:L1 Cache、L2 Cache 、L3 Cache,那么在CPU的多级缓存结构中,每个CPU的逻辑核心都有自己的L1 Cache,共享L2 Cache和L3 Cache;每个CPU的物理核心都有自己的L2 Cache,共享L3 Cache。所有CPU核心共享L3 Cache。所有CPU共享主内存。
首先官网下载安装包:https://downloads.mysql.com/archives/community/
下载完成后,使用ssh工具以sftp/ftp方式上传到服务器/usr/local/
目录下
数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。 数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。 数据库系统(database systems),是由数据库及其管理软件组成的系统。 数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。
索引是帮助Mysql
高效获取数据的数据结构
,就好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。索引底层数据结构存在许多类型,常见的有B+Tree
、BTree
、红黑树
和哈希表
等等,Mysql中无论是InnoDB
或MyIsam
使用的都是B+Tree
。
windows使用SSH(免密码登录)到服务器,及配置多个SSH免密码登录
ssh-keygen -t rsa
生成一对密钥 Public Key
- Private Key
。Private Key
留在本地.ssh
文件下Public Key
上传至服务器IO即Input/Output
,IO是实现输入和输出的基础,可以方便的实现数据的输入和输出。
按照不同的分类方式,可以把流分为不同的类型。常用的分类有三种:
程序优化第一法则:不要优化。程序优化第二法则:还是不要优化。