随笔分类 - 技术杂说
摘要:线程池常问问题: 线程池各个参数的作用,简单阐述一下线程池工作流程。 常见的线程池有哪些,分别适用于什么场景? 使用无界队列的线程会导致内存飙升吗? 线程池的好处 降低线程创建和销毁线程造成的开销 提高响应速度。任务到达时,相对于手工创建一个线程,直接从线程池中拿线程,速度肯定快很多 提高线程可管理
阅读全文
摘要:MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。 其中重做日志和回滚日志与事务
阅读全文
摘要:ZooKeeper是什么? ZooKeeper是一个分布式应用程序协调服务。 Zookeeper提供了文件系统和通知机制。 文件系统 Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点
阅读全文
摘要:Spring是核心,提供了基础功能,核心是控制反转(IOC)和面向切面(AOP); Spring MVC 是基于Spring的一个 MVC 框架,主要处理web开发的路径映射和视图渲染,属于Spring框架中WEB层开发的一部分 ; Spring Boot 是为简化Spring配置的快速开发整合包,
阅读全文
摘要:通知类型 在基于Spring AOP编程的过程中,基于AspectJ框架标准,spring中定义了五种类型的通知,它们分别是: 前置通知 (@Before) 。 返回通知 (@AfterReturning) 。 异常通知 (@AfterThrowing) 。 后置通知 (@After)。 环绕通知
阅读全文
摘要:主从复制的方式 一主一从 主主复制 一主多从(扩展系统读取的性能,因为读是在从库读取的); 多主一从(5.7开始支持) 联级复制 主从复制的用途及条件 MySQL主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件 主库开启binlog日志(设置log-
阅读全文
摘要:主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是准实时的业务数据库。 主从复制的作用(或者说为什么要做主从) 做数据的热备,作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失。 架构的扩展。业务量越来越大,I/O访问频率过高,单机无法满足
阅读全文
摘要:缓存是什么 存储的速度是有区别的。缓存就是把低速存储的结果,临时保存在高速存储的技术。 如图所示,金字塔更上面的存储,可以作为下面存储的缓存。 为什么需要缓存 存储如mysql通常支持完整的ACID特性,因为可靠性,持久性等因素,性能普遍不高,高并发的查询会给mysql带来压力,造成数据库系统的不稳
阅读全文
摘要:在复杂的分布式系统中,ID就是大量的数据和消息的唯一标识。 举个例子,数据库的ID字段在单体的情况下可以使用自增来作为ID,但是对数据分库分表后一定需要一个唯一的ID来标识一条数据,这个ID就是分布式ID。对于分布式ID而言,也需要具备分布式系统的特点:高并发,高可用,高性能等特点。 分布式ID实现
阅读全文
摘要:效率低的原因 阿里开发手册:【强制】在表查询中,一律不要使用 * 作为查询的字段列表,需要哪些字段必须明确写明。 说明: 增加查询分析器解析成本。 增减字段容易与 resultMap 配置不一致。 无用字段增加网络 消耗,尤其是 text 类型的字段。 不需要的列会增加数据传输时间和网络开销 用“S
阅读全文
摘要:① map的key采用简单形式和复杂形式时(如:整型和字符串),查找的效率是不同的,简单的key值效率更高 ② 当数据量大的时候,采用entrySet遍历key+value的效率要高于keySet ③ 当我们只需要取得value值时,采用values来遍历效率更高 参考: 面试官:Java遍历Map
阅读全文
摘要:什么是 CAP 定理 CAP 理论告诉我们,一个分布式系统不可能同时满足一致性(C:Consistency),可用性(A: Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。 什么是分区 在分布式系统中,不同的节点分布在不
阅读全文
摘要:在实践中我们发现对于大多数的应用领域,评估一个垃圾收集(GC)算法如何根据如下两个标准: 吞吐量越高算法越好 暂停时间越短算法越好 首先让我们来明确垃圾收集(GC)中的两个术语:吞吐量(throughput)和暂停时间(pause times)。 JVM在专门的线程(GC threads)中执行GC
阅读全文
摘要:新生代回收器:Serial、ParNew、parallel老年代回收器:Serial Old、CMS、Parallel Old新生代和老年代回收器:G1 Serial 特点 JDK1.3.1前,Serial是HotSpot新生代收集的唯一选择。 有如下特点: 针对新生代; 采用复制算法; 单线程收集
阅读全文
摘要:写时复制(Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。 核心思想是,如果有多个调用者同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调
阅读全文
摘要:服务与缓存 所谓的服务,一层应用 + 一层数据,应用从数据层获取数据然后加工输出。 数据层,通常我们指的是持久化介质上的持久化存储。它有多种形式的,可以是文件,或者数据库。 数据存储在持久化介质上,而应用运行与内存中。内存和持久化介质是两个有着量级速度差别的不同介质,由此,应用和数据之间便有了“矛盾
阅读全文
摘要:为什么使用MQ? MQ的使用场景有很多,但是比较核心的就是:解耦、异步、削锋。 系统解耦 举例,有ABCDE五个系统,BCDE系统都需要调用A系统的接口获取数据,这样A系统跟其他四个系统严重耦合,需要时时刻刻考虑其他四个系统要是挂了怎么办,需不需要重新发送数据给他们,这个时候的A系统内心是崩溃的。
阅读全文
摘要:接口的安全性主要围绕token、timestamp和sign三个机制展开设计,保证接口的数据不会被篡改和重复调用。 Token授权机制 用户使用用户名密码登录后,服务器给客户端返回一个Token(通常是UUID),并将Token-UserId以键值对的形式存放在缓存服务器中。服务端接收到请求后进行T
阅读全文
摘要:InnoDB逻辑存储结构 首先要先介绍一下InnoDB逻辑存储结构和区的概念,它的所有数据都被逻辑地存放在表空间,表空间又由段,区,页组成。 段 段就是上图的segment区域,常见的段有数据段、索引段、回滚段等,在InnoDB存储引擎中,对段的管理都是由引擎自身所完成的。 区 区就是上图的exte
阅读全文
摘要:对于写Java的程序员来说,Spring已经成为了目前最流行的第三方开源框架之一,在我们充分享受Spring IOC容器带来的红利的同时,我们也应该考虑一下Spring这个大工厂是如何将一个个的Bean生产出来的,本期我们就一起来讨论一下Spring中Bean的实例化过程。 这里我们并不会详细的分析
阅读全文