摘要: 多线程技术是服务端开发人员必须掌握的技术。线程的创建和销毁,都涉及到系统调用,比较消耗系统资源,所以就引入了线程池技术,避免频繁的线程创建和销毁。在Java中有一个Executors工具类,可以为我们创建一个线程池,其本质就是new了一个ThreadPoolExecutor对象。 线程池创建 先看一 阅读全文
posted @ 2021-11-30 23:43 残城碎梦 阅读(61) 评论(0) 推荐(0) 编辑
摘要: #{}和${}的区别是什么? 答:${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${driver}会被静态替换为com.mysql.jdbc.Driver。 #{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执 阅读全文
posted @ 2021-11-30 23:43 残城碎梦 阅读(42) 评论(0) 推荐(0) 编辑
摘要: TCP 要说http就绕不开tcp,TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性。但是,http是基于tcp协议的。 TCP/IP 协议分层模型 物理层将二进制的0、1和电压高低,光的闪灭和电波的强弱信号进行转换 链路层代表驱动 网络层 使用 IP 协议,IP 协 阅读全文
posted @ 2021-11-30 23:42 残城碎梦 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 当程序使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化三个步骤对该类进行类加载。 类的加载、链接和初始化 类的加载 类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象。类的加载过程是由类加载器来完成,类加载器由JVM提供。我们开发人员 阅读全文
posted @ 2021-11-30 23:41 残城碎梦 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作。 在java中有以下3种方法可以终止正在运行的线程: ① 使线程正常退出,也就是当run方法完成后线程终止。 ② 使用stop方法强行终止,但是不推荐这个方法,因为stop和suspend及resume一样都是过期作废的方 阅读全文
posted @ 2021-11-30 23:41 残城碎梦 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 线程之间通信的方式: ① 同步 ② while轮询的方式 ③ wait/notify机制 ④ 管道通信 同步 多个线程通过synchronized关键字持有同一个对象实现线程间的通信。本质上就是“共享内存”式的通信。多个线程需要访问同一个共享变量,谁拿到了锁(获得了访问权限),谁就可以执行。 whi 阅读全文
posted @ 2021-11-30 22:53 残城碎梦 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 为什么要拆分数据库? 取决于数据库的负载和数据量。 单体项目在构建之初,数据库的负载和数据量都不大,所以不需要对数据库做拆分,小型财务系统、文书系统、ERP系统、OA系统,用一个MySQL数据库实例基本就够用了。 就像《淘宝技术这十年》里面说到的,电商业务的数据量增长飞快,所以最开始的PHP+MyS 阅读全文
posted @ 2021-11-30 22:11 残城碎梦 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 联合索引失效的条件 联合索引又叫复合索引或组合索引。两个或更多个列上的索引被称作复合索引。 对于复合索引:MySQL从左到右的使用索引中的字段,一个查询可以只使用索引中的一部分,但只能是最左侧部分。例如索引是key index (a,b,c)。可以支持a | a,b | a,b,c 3种组合进行查找 阅读全文
posted @ 2021-11-30 21:46 残城碎梦 阅读(192) 评论(0) 推荐(0) 编辑
摘要: Redis字符串的实现 Redis虽然是用C语言写的,但却没有直接用C语言的字符串,而是自己实现了一套字符串。目的就是为了提升速度,提升性能,可以看出Redis为了高性能也是煞费苦心。Redis构建了一个叫做简单动态字符串(Simple Dynamic String),简称SDS。 SDS 代码结构 阅读全文
posted @ 2021-11-30 21:20 残城碎梦 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。 本文是基于JDK1.7的源码进行讲解,JDK8会有所不同,大致的变化: 1.7中采用数组+链表,1.8采用的是数组+链表/红黑树,即在1.7中链表长度 阅读全文
posted @ 2021-11-30 16:15 残城碎梦 阅读(47) 评论(0) 推荐(0) 编辑
摘要: HashMap和HashTable的区别? HashMap 不是线程安全的 HashMap 是 map 接口的实现类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap 允许 null key 和 null value,而 HashTable 不允许。 H 阅读全文
posted @ 2021-11-30 16:13 残城碎梦 阅读(70) 评论(0) 推荐(0) 编辑
摘要: Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式 阅读全文
posted @ 2021-11-30 12:42 残城碎梦 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 判断对象是否存活的算法包括: 引用计数算法 可达性分析算法 引用计数算法(Reference Counting) 给对象中添加一个引用计数器,每当有一个地方引用它时,计数器加1;当引用失效时,计数器值减1;任何时刻计数器为0的对象就是不能再被引用的。 例如Object-C,Python语言使用引用计 阅读全文
posted @ 2021-11-30 08:57 残城碎梦 阅读(169) 评论(0) 推荐(0) 编辑
摘要: MySQL查询字段区不区分大小写? 答案:不区分。 如何解决需要区分英文大小写的场景 解决方案一 MySQL默认的字符检索策略:utf8_general_ci,表示不区分大小写。可以使用utf8_general_cs,表示区分大小写,也可以使用utf8_bin,表示二进制比较,同样也区分大小写 。 阅读全文
posted @ 2021-11-30 08:42 残城碎梦 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 单例模式介绍 单例模式(Singleton),是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取, 阅读全文
posted @ 2021-11-30 08:20 残城碎梦 阅读(238) 评论(0) 推荐(0) 编辑