05 2020 档案
摘要:概述 面试造大炮,工作扭螺丝。现在的面试,算法和数据结果是必备的环节,甚至很多国内的大厂纷纷效仿国外大厂如Google,Microsoft,面试只考核算法。 序章 算法的定义:计算或者解决问题的步骤; 算法与程序的区别; 全排列算法:n!种不同的结果;效率非常低; 时间复杂度:用来定量标志算法的运行
阅读全文
摘要:概述 使用redis时,一般是作为缓存系统,而不是存储系统。缓存系统,即需要设置一个生存时间(TTL,time to live);存储系统,即不设置生存时间,永不过期。除了生存时间,还有一个过期时间的概念,expire time,效果一样,本文不加以区分。带有TTL属性的key在Redis中被称为是
阅读全文
摘要:概述 责任链模式的定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系, 将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。 应用 Servlet Servlet里面的Filter便使用责任链模式,FilterChain public final cla
阅读全文
摘要:注:缓存思想很通用,但本文可能会比较偏后端Java开发人员。 概述 定义: 狭义上的缓存,Cache,高速缓冲存储器,一种特殊的存储器子系统,其中复制有频繁使用的数据以利于快速访问。广义上的缓存,凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache。
阅读全文
摘要:概述 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。在Java里面的有很多工具可供使用: Timer:用得很少ScheduledExecutorServiceSpring SchedulingTaskExecutorQuartz 实际业务中,任务调度,又有单机调度和分布式集群
阅读全文
摘要:MVC概述 MVC模式就是架构模式的一种,Model(模型)、View(视图)和Controller(控制)组成,MVC结构可以分成三层: 最上面的一层,是直接面向最终用户的视图层View。它是提供给用户的操作界面,是程序的外壳最底下的一层,是核心的数据层Model,也就是程序需要操作的数据或信息中
阅读全文
摘要:HashMap 概述 在Java 8中,HashMap的数据结构是由Node<k,v>作为元素组成的数组:(1)如果有多个值hash到同一个桶中,则组织成一个链表,当链表的节点个数超过某个阈值(TREEIFY_THRESHOLD = 8)时,链表重构为一个红黑树。 初始化 HashMap容量默认是1
阅读全文
摘要:类装载器子系统,作为JVM最底层的一部分。 概述 用途:用来加载Class文件到JVM的方法区,在方法区中创建一个java.lang.Class对象(后面简称类对象)通过此实例的newInstance()方法就可以创建出该类的一个对象。 比较两个类是否相等,只有当这两个类由同一个加载器加载才有意义;
阅读全文
摘要:Java web开发必知的三大器 Interceptor 拦截器是基于Java反射机制(动态代理)来实现的;可以控制请求的控制器和方法,但控制不了请求方法里的参数(用于处理页面提交的请求响应并进行处理,例如国际化,主题更换,过滤等)。 一般说到拦截器都是基于Spring框架下,自定义拦截器可以实现H
阅读全文
摘要:概述 多线程编程的三个问题:可见性、有序性及原子性。volatile关键字: 保证多线程环境下的可见性通过防止重排序解决有序性对volatile变量的单次读/写操作可保证原子性,如long和double类型变量,但不能保证i++这种操作的原子性,因i++是读、写两次操作 volatile变量可以用于
阅读全文
摘要:需求背景 Redis是内存数据库,数据都是存储在内存中,为避免进程意外退出导致数据的永久丢失,需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘;当下次Redis重启时,利用持久化文件实现数据恢复。此外,为了灾备,可将持久化文件拷贝到一个远程位置。 Redis支持四种持久化方式:
阅读全文
摘要:概述 分离,又隔离,目地是将系统或者资源分隔开。 系统隔离的目的:在系统发生故障时,限定传播和影响范围,不至于出现雪崩效应,保证其他服务的可用性。 资源隔离,通过隔离来减少资源竞争,保障服务间不相关影响,提高性能等。 技术 常见的分离(隔离)技术包括: 读写分离 常见于数据库和缓存系统。 对于数据库
阅读全文
摘要:概述 通常情况下,一个类的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改。 采用空间换时间,用于线程间的数据隔离,为每一个使用该变量的线程提供一个副本,每个线程都可以独立地改变自己的副本,而不会和其他线程的副本冲突。数据都被封
阅读全文
摘要:概述 想要知道线程的执行结果,除了FutureTask和CompletableFuture之外,CompletionService是另一个不错的选择。 CompletionService是一个Java8新增的泛型接口,其实现类ExecutorCompletionService,用于主线程提交多个任务
阅读全文
摘要:概述 MySQL中至少有7种日志文件: 重做日志(redo log)回滚日志(undo log)二进制日志(binlog)错误日志(errorlog)慢查询日志(slow query log)一般查询日志(general log)中继日志(relay log)。 MySQL Server Log有4
阅读全文
摘要:引言 作为高可用的解决方案其一,负载均衡具备极度的重要性。 定义 负载均衡,Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,
阅读全文