摘要:
线程之间通信的方式: ① 同步 ② while轮询的方式 ③ wait/notify机制 ④ 管道通信 同步 多个线程通过synchronized关键字持有同一个对象实现线程间的通信。本质上就是“共享内存”式的通信。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。 whi 阅读全文
摘要:
为什么要拆分数据库? 取决于数据库的负载和数据量。 单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。 就像《淘宝技术这十年》里面说到的,电商业务的数据量增长飞快,所以最开始的PHP+MyS 阅读全文
摘要:
联合索引失效的条件 联合索引又叫复合索引或组合索引。两个或更多个列上的索引被称作复合索引。 对于复合索引:MySQL从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c)。可以支持a | a,b | a,b,c 3种组合进行查找 阅读全文
摘要:
Redis字符串的实现 Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能,可以看出Redis为了高性能也是煞费苦心。Redis构建了一个叫做简单动态字符串(Simple Dynamic String),简称SDS。 SDS 代码结构 阅读全文
摘要:
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。 本文是基于JDK1.7的源码进行讲解,JDK8会有所不同,大致的变化: 1.7中采用数组+链表,1.8采用的是数组+链表/红黑树,即在1.7中链表长度 阅读全文
摘要:
HashMap和HashTable的区别? HashMap 不是线程安全的 HashMap 是 map 接口的实现类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap 允许 null key 和 null value,而 HashTable 不允许。 H 阅读全文
摘要:
Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式 阅读全文
摘要:
判断对象是否存活的算法包括: 引用计数算法 可达性分析算法 引用计数算法(Reference Counting) 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不能再被引用的。 例如Object-C,Python语言使用引用计 阅读全文
摘要:
MySQL查询字段区不区分大小写? 答案:不区分。 如何解决需要区分英文大小写的场景 解决方案一 MySQL默认的字符检索策略:utf8_general_ci,表示不区分大小写。可以使用utf8_general_cs,表示区分大小写,也可以使用utf8_bin,表示二进制比较,同样也区分大小写 。 阅读全文
摘要:
单例模式介绍 单例模式(Singleton),是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取, 阅读全文