HuXiMi Blog

念念不忘,必有回响。

Java 8系列之重新认识HashMap

HashMap原理及分析

原文:https://zhuanlan.zhihu.com/p/21673805 摘要 HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Development Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结...

Java并发机制底层实现原理之Volatile

Java并发机制底层实现原理之Volatile

如果一个字段被声明成volatile,Java内存模型保证所有线程看到这个变量的值是一致的。 1. 实现原理 有volatile修饰的变量进行写操作时会多出带有lock前缀的汇编指令,该指令在多核处理器中引发两件事情: 将当前处理器缓存行的数据写回系统内存。通过总线锁定或缓存行锁定。 这个写回内存的操作会使其他CPU中缓存了该内存地址的数据无效。其他处理器通过嗅探总线上传播过...

工厂模式

如何设计实现一个Dependency Injection框架

依赖注入容器(Dependency Injection Container) 当创建对象是一个“大工程”的时候,我们一般会选择使用工厂模式,来封装对象复杂的创建过程,将对象的创建和使用分离,让代码更加清晰。那何为“大工程”呢?上一节课中我们讲了两种情况,一种是创建过程涉及复杂的 if-else 分支判断,另一种是对象创建需要组装多个其他类对象或者需要复杂的初始化过程。 今天,我们再来讲一...

使用Redis有哪些好处?

使用Redis有哪些好处?

使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,list,set,sorted set,hash (3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 (4) 丰富的特性:可用于缓存,消息,按key设置过期...

Redis 学习

Redis 相关学习

Redis 学习 Redis概述 在我们日常的Java Web开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是在主面访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需...

zookeeper

zookeeper相关知识

zookeeper提供了什么? 1、文件系统 2、通知机制 zookeeper文件系统 zookeeper提供一个类似unix文件系统目录的多层级节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。zookeeper为了保证高吞吐和低延迟,在内存中维护了这个树状的目录结构,这种特性使得zookeepe...

视图的作用

视图的作用,视图可以更改么

视图的作用,视图可以更改么? 视图是虚拟的表,与包含数据的表不一样,视图只包含使用时动态检索数据的查询;不包含任何列或数据。使用视图可以简化复杂的sql操作,隐藏具体的细节,保护数据;视图创建后,可以使用与表相同的方式利用它们。 视图不能被索引,也不能有关联的触发器或默认值,如果视图本身内有order by 则对视图再次order by将被覆盖。 创建视图:create view XX...

存储过程与触发器的区别

存储过程与触发器的区别

存储过程与触发器的区别 触发器与存储过程非常相似,触发器也是SQL语句集,两者唯一的区别是触发器不能用EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发(激活)执行。触发器是在一个修改了指定表中的数据时执行的存储过程。通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。由于用户不能绕过触发器,所以可以用它来强制实施复杂的业务规则,以确保数据的完...

新产品质量保障

假如给你一个新产品,你将从哪些方面来保障它的质量?

假如给你一个新产品,你将从哪些方面来保障它的质量? 可以从代码开发、测试保障、线上质量三个方面来保障。 在代码开发阶段,有单元测试、代码Review、静态代码扫描等; 测试保障阶段,有功能测试、性能测试、高可用测试、稳定性测试、兼容性测试等; 在线上质量方面,有灰度发布、紧急回滚、故障演练、线上监控和巡检等。

ping IP 理解

输入 ping IP 后敲回车,发包前会发生什么

输入 ping IP 后敲回车,发包前会发生什么? 首先根据目的IP和路由表决定走哪个网卡,再根据网卡的子网掩码地址判断目的IP是否在子网内。如果不在则会通过arp缓存查询IP的网卡地址,不存在的话会通过广播询问目的IP的mac地址,得到后就开始发包了,同时mac地址也会被arp缓存起来。