随笔分类 - java面试
摘要:共识算法 (Consensus Algorithm) 共识算法是用来保证分布式系统一致性的方法。它能保证所有节点的数据相同并且一个节点发起的提案可以被其他节点同意。 根据解决的场景是否允许拜占庭错误情况,共识算法分为Crash Fault Tolerance(CFT)和Byzantine Fault
阅读全文
摘要:贫血模型和充血模型 | 贫血模型 | 充血模型 | | | | | 事务脚本模式 | 领域模型模式 | | 只包含属性,get和set | 不仅包含属性,还包含业务逻辑 | | 只有状态,没有行为 | 既有状态,也有行为 | 贫血模型 贫血模型下领域对象只有所有属性的get/set方式,以及少量简单
阅读全文
摘要:ThreadLocal 顾名思义,ThreadLocal是本地线程变量,ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量,线程内数据共享,线程间数据隔离。 ThreadLocalMap是Thread线程的一个属性,而ThreadLocal是维护Thre
阅读全文
摘要:import java.io.*; import java.util.*; /** * 不区分大小写 */ class TrieNode{ TrieNode[] next = new TrieNode[26]; // 只有小写字母的字典树 0存放a 1存放b ... 25存放z int count = 0;//字母出现的次数 int wordCount = 0;// 单词出现的次数 char cu
阅读全文
摘要:import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; public class TestGC { /** * * 软引用 当内存满的时候,才会回收软引用指向的对象 * 弱引用 每次进行垃圾回收时,不论内存是否满,都是回收弱引用指向的对象 * * @param args */ public static voi
阅读全文
摘要:1.const A. const int a; B. int const a; a是常数 C. int const *a; D. const int *a; 常量指针,指向一个常量的指针 E. int * const a; 指针常量,初始化的时候固定指向一个int类型变量,之后就不能再指向别的地方了
阅读全文
摘要:1.以0x开始的数据表示16进制 2.C语言,5|7 = 7 5:二进制 0000 0101 7:二进制 0000 0111 按位或 0000 0111 3.协议 1)RARP(Reverse Address Resolution Protocol)反向地址转换协议:允许局域网的物理机器从网关服务器
阅读全文
摘要:1.MySQL 中 int(3) int(10) 区别 答案 存储大小并无差异,只是不足位数的时候,左边补0. 补充知识点 创建数据库表时,加zerofill ,可以看出效果。mysql 默认 int(11) unsign int(10) int类型,占4个字节,一个字节8位,4 8 = 32 位长
阅读全文
摘要:TreeSet 去重复排序 Collections.sort() 可重复数字的排序 代码 运行效果
阅读全文
摘要:试题链接:https://exercise.acmcoder.com/answer?paperId=317 1.线程 可以通过创建Thread的实例来创建新的线程 线程的五种状态: 1)创建状态:生成线程对象 2)就绪状态:调用线程对象的start方法,该线程便进入就绪状态,但此时线程调度程序还没有
阅读全文
摘要:"TCP 详解" "TCP的三次握手与四次挥手(详解+动图)" "HTTP、TCP、UDP,Socket,HTTPS(史上最强理解,没有之一)"
阅读全文
摘要:数据库ACID特性 原子性(Atomic): 一致性(Consistent): 隔离性(Isolated): 持久性(Durable): mysql数据库的两种引擎 1.InnoDB 是聚集索引,支持事务,支持行级锁; 2.MyISAM 是非聚集索引,不支持事务,只支持表级锁。 数据库水平切分和垂直
阅读全文
摘要:线程是在进程中独立运行的子任务。 什么场景使用多线程技术? 1.阻塞。一旦系统中出现了阻塞现象,则可以根据实际情况来使用多线程技术提高运行效率。 2.依赖。业务分为两个执行过程,A和B,A业务发生阻塞时,B业务不需要A业务的执行结果,这时B业务可以使用多线程技术提高运行效率。 多线程是异步的。多线程
阅读全文
摘要:Redis 是用 C 语言开发的一个开源的高性能键值对(key value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止 Redis 支持的键值数据类型如下: 1.字符串类型 2.散列类型 3.列表类型 4.集合类型 5.有序集合类型 Redis 的应用场景 1.缓存(数据
阅读全文
摘要:一个对象有对应的一些属性,把这个对象保存在硬盘上的过程叫做”持久化”. 对象的默认序列化机制写入的内容是:对象的类,类签名,以及非瞬态和非静态字段的值。(因为静态static的东西在方法区.) 序列化能把堆内存中的对象的生命周期延长,做持久化操作.当下次再需要这个对象的时候,我们不用new了,直接从
阅读全文
摘要:MyBatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 JDBC,使开发者只需关注 SQL 语句本身,而不用再花费精力去处理诸如注册驱动、创建 Connection、配置 Statement 等繁杂过程。 MyBatis 与 Hibernate Hibernate 框架是提供了全面的
阅读全文
摘要:Java的占位符有两种:% 和 {} String 类对象 只能使用 % 有效。 MessageFormat 类对象 只能使用 {} 有效。 运行结果
阅读全文
摘要:Thread类中run()和start()方法的区别如下: run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用; start()方法:新建一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程;
阅读全文
摘要:索引(Index)是帮助MySQL高效获取数据的数据结构 索引的本质: 索引是数据结构。 为什么使用索引 数据中的记录太多,为了方便查找,提高查找效率。 索引原理 对字段建立索引其实就是将该字段按照一定方式排序。 索引的实现通常是使用B树或者其变种B+树。 B tree(balance tree)
阅读全文