摘要:
缓存是个很大的话题,本文就讲述本地缓存的原理。 简介 引入缓存的目的: 绝大部分时候,读数据写数据符合二八定律。并且读数据中,百分之二十是数据被经常读取(热数据)。 缓存需要解决的问题: 内存是有限,所以需要限定缓存的最大容量如何清除缓存如何应对并发读写缓存数据透明化:命中率、失效率等 local 阅读全文
摘要:
概述 二叉树的定义: private static class TreeNode { private TreeNode left; private TreeNode right; private final int val; TreeNode(int x) { this.val = x; } } 遍 阅读全文
摘要:
概述 面试常见的算法题。 输入两个链表,找出它们的第一个公共结点。 分析 链表是否为空链表是否是无环链表?是否是单链表?如果两个链表存在公共结点,那从公共结点开始一直到链表的结尾都是一样的,因此只需要从链表的结尾开始,往前搜索,找到最后一个相同的结点即可。单向链表,只能从前向后搜索,借助栈来完成。先 阅读全文
摘要:
性能测试 性能测试有两种类型,负载测试和压力测试: 负载测试(Load Testing):主要是测试软件系统是否达到需求文档设计的目标,如软件在一定时期内,最大支持多少并发用户数,软件请求出错率等。关注点是在满足响应正常的条件下,请求的极限值能有多高。压力测试(Stress Testing):主要是 阅读全文
摘要:
背景 项目老旧,并没有使用xxl-job,或者其他开源调度管理系统,也没有使用公司内部自研的(或者二次开发)的调度系统,而是使用Java开源里最老牌的调度工具-Quartz。 现在有个需求就是,实现任务的动态(即无需应用的重启)注册(新增)删除以及调整调度Cron表达式时间。 调研 基于Spring 阅读全文
摘要:
概述 本文记录一下在Windows、Linux等系统安装MySQL 8遇到的问题,以及解决过程。算是一个备忘录。 Windows 10 切记: 在安装之前,需卸载之前安装的MySQL 5.x版本;否则安装失败(因为不管是MySQL 5.x还是MySQL 8.x版本,默认都使用3306端口,使用同一个 阅读全文
摘要:
写代码的,版本控制工具已经成为日常开发必备。版本控制系统(version control system)不要太多,早有svn、ClearCase,后有Git、Mercurial。毫无疑问,Git已是主流。本文只讲Git相关的小工具。 Git bash 即git工具的命令行,下面讲的所有工具全部都是建 阅读全文
摘要:
概述 传统关系型数据库涉及大量的工作,如果想在Java应用程序里使用MySQL数据库,至少需要如下步骤: 安装(可选:配置用户名密码)建表(要么从命令行进入,要么安装一个可视化工具,如DataGrip)插入数据(可选)配置连接信息(数据库的连接串,用户名,密码等信息) 还是有些繁琐。想象如下场景: 阅读全文
摘要:
概述 分片,Sharding,将数据拆分至不同数据节点的方式,MongoDB高可用集群的一种形式;需存储海量数据时,一台机器满足不了需求,单台机器读写吞吐性能也会是瓶颈。Sharding技术通过在多台机器上分割数据,使得系统能存储和处理海量数据。 分片的原因 复制所有的写入操作到主节点延迟的敏感数据 阅读全文
摘要:
目录 MyBatis简介MyBatis与 hibernate 区别缓存 Hibernate缓存MyBatis缓存对比 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ‘*’ at row 1m 阅读全文