hero image

章鱼哥

Talk is cheap.Show me the code.

JDK1.7的线程安全问题

JDK7版本的HashMap底层采用数组加链表的形式存储元素,假设需要存储的键值对通过计算发现存放的位置已经有元素了,那么HashMap就会用头插法将新节点插入到这个位置。

JDK7HashMap头插法

这一点我们可以从put方法去验证,它会根据key计算获得元素的存放位置,如果位置为空则直接调用addEntry插入,如果不为空,则需要判断该位置的数组是否存在一样的key。如果存在key一致则覆盖并返回,若遍历当前索引的整个链表都不存在一致的key则通过头插法将元素添加至链表首部。


Zayton Squid大约 10 分钟

什么是AOP

AOP(Aspect-Oriented Programming:面向切面编程),是Spring中一个重要内容,在AOP思想中例如权限控制日志管理事务控制等被定义为切面,它实际做的就是将核心功能与切面功能拆分,降低核心功能与切面功能的耦合度,然后在把核心功能和切面功能编织在一起。Spring是基于动态代理实现AOP的。Spring默认情况下在目标类实现接口时是通过JDK代理实现的,只有非接口的是通过Cglib代理实现的。


Zayton Squid大约 18 分钟

什么是MVC,什么是Spring MVC

MVC(Model View Controller)是一种软件设计规范,是一种将业务逻辑、数据、显示分离的一种解耦思想。由模型(Model)处理应用程序的数据部分,视图(View)处理数据显示部分,它们两者之间交友控制器(Controller)调度,控制器通常从视图读取数据,控制用户输入,并向模型发送数据。而Spring MVC是由Spring提供的遵循MVC的规范的轻量级web框架,目的是为了简化Java栈的web开发。


Zayton Squid大约 14 分钟

什么是LinkedHashMap

LinkedHashMap继承自HashMap,在HashMap的基础上维护一条双向链表,具备了以下特点:

  1. 保持遍历顺序和插入顺序一致性。
  2. 支持按照元素访问顺序排序,适用于封装LRU缓存工具。
  3. 因为内部使用双向列表,尽管在插入和删除元素时会略微慢于 HashMap ,但在迭代访问时由于可以利用链表结构,随着元素个数增加,迭代效率会比HashMap高很多。

LinkedHashMap是在HashMap基础上在各个节点之间增加一条双向链表,使得原先散列在不同bucket、单链表、红黑树上的节点之间可以通过双向链表进行操作,实现有序关联,其逻辑结构如下图所示。


Zayton Squid大约 16 分钟

@TOC

CPU缓存一致性

​首先聊一聊什么是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共享主内存。

缓存一致性

Zayton Squid大约 9 分钟

什么是数据库, 数据库管理系统, 数据库系统, 数据库管理员?

数据库(DataBase,DB)是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。 数据库管理系统(database management system)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称dbms。 数据库系统(database systems),是由数据库及其管理软件组成的系统。 数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。

什么是元组, 码, 候选码, 主码, 外码, 主属性, 非主属性?


Zayton Squid大约 9 分钟

索引介绍

索引是帮助Mysql高效获取数据的数据结构,就好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度。索引底层数据结构存在许多类型,常见的有B+TreeBTree红黑树哈希表等等,Mysql中无论是InnoDBMyIsam使用的都是B+Tree

索引的优缺点

优点


Zayton Squid大约 20 分钟

前言

windows使用SSH(免密码登录)到服务器,及配置多个SSH免密码登录

生成秘钥

  • 使用命令ssh-keygen -t rsa生成一对密钥 Public Key - Private Key
  • 然后Private Key留在本地.ssh文件下
  • Public Key上传至服务器

生成


Zayton Squid大约 2 分钟

IO流简介

IO即Input/Output,IO是实现输入和输出的基础,可以方便的实现数据的输入和输出。

  1. 将数据输出到外部存储的过程叫数据输出。
输出流
  1. 将数据输入到计算机内存的过程叫数据输入。
输入流

IO流的分类

按照不同的分类方式,可以把流分为不同的类型。常用的分类有三种:


Zayton Squid大约 6 分钟JavaJava IOJava基础
2
3

程序优化第一法则:不要优化。程序优化第二法则:还是不要优化。