05 2020 档案

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