摘要:
概述 对于后端Java开发人员来说,锁主要有Java锁和DB锁。Java锁,请参考一文总结Java开发各种锁。本文所述的DB锁,可能会局限于MySQL数据库。 隔离级别与锁的关系 在RU级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突 在RC级别下,读操作需要加共享锁,但是在语 阅读全文
摘要:
概述 在使用公司内部后台系统测试环境时发现一个请求加载慢的问题,简简单单的列表,查询MongoDB数据库,测试环境不过几百上千条数据而已,请求耗时居然高达5~6秒: 作为对比,生产环境的请求响应截图如下: 经过持续跟进,该后台系统所有列表页面测试环境普遍比生产环境慢,不管是MongoDB还是MySQ 阅读全文
摘要:
概述 本文记录一次升级Apollo Client组件到1.7.0后遇到的重大生产事故。只想看结论的,可直接快进到文末。实际上,第一句话就是一个结论。 另,本文行文思路事后看起来可行略显思路清晰,实际上排查生产问题时如无头苍蝇,各种猜想各种否定猜想,各种排除各种验证。 另另,回滚服务有时候是一个法宝。 阅读全文
摘要:
概述 事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 分类 大多数情况下,分类是没有意义的一件事。但是分类可以一定程度上,加深理解。 实现 从实现角度来看,Java事务的类型有三种:JDBC事务、JTA(Java Transaction API 阅读全文
摘要:
概述 测试环境爆出ERROR告警日志java.lang.IllegalStateException: Didn't find report for specified language,登录测试环境ELK查到如下具体的报错堆栈日志: java.lang.IllegalStateException: 阅读全文
摘要:
概述 由来 长期以来系统工程师使用的建模语言、工具和技术种类很多,如行为图、IDEF0、N2图等,这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的标准的建模语言,从而限制系统工程师和其他学科之间关于系统需求和设计的有效通信,影响系统工程过程的质量和效率。 为 阅读全文
摘要:
需求 给出一个比较常见的统计类业务需求:统计App(包括iOS和Android两大类)每日新注册用户数、以及累计注册用户数。 数据库采用MySQL,根据上面的需求,不难设计表如下: create table os_day_count( stat_date varchar(10) not null c 阅读全文
摘要:
概述 分类 索引的分类: 按照索引包含的字段数量,可分为单键索引(单字段索引)和组合索引(联合索引、复合索引) 按照索引字段的类型,可以分为主键索引和非主键索引 按照索引节点与物理记录的对应方式来分,可以分为聚簇索引和非聚簇索引,其中聚簇索引是指索引节点上直接包含了数据记录,而后者则仅仅包含一个指向 阅读全文
摘要:
概述 关系型数据库MySQL有InnoDB存储引擎,存储引擎很大程度上决定着数据库的性能。 在MongoDB早期版本中,默认使用MMapV1存储引擎,其索引就是一个B-树(也称B树)。 从MongoDB 3.0开始引入WiredTiger(以下简称WT)存储引擎,在性能及稳定性上都有明显的提升。从M 阅读全文
摘要:
概述 说到MongoDB客户端,不要太多,有免费的也有付费的。每个人都有他习惯使用的客户端IDE。除JetBrains公司出品的超强DataGrip外,Robot 3T值得一提。 Robot 3T,用C++编写,有限开源免费,部分高级功能需要付费购买license,现已更名为Studio 3T。 实 阅读全文
摘要:
缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ 'profiles.alias': '逆天子', 'profiles.channel': '' },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询指定渠 阅读全文
摘要:
概述 最多可设置6级标题 技巧 列表 有序列表 MD语法: 1. 你好 2. 我也好 呈现效果: 你好 我也好 无序列表 MD语法: - a - b * aa * bb + aaa + bbb 效果: a b aa bb aaa bbb 结论,支持三种方式:-、*、+ TODO列表 MD语法: - 阅读全文
MapStruct+Maven+Lombok问题NoSuchBeanDefinitionException、does not have an accessible empty constructo排查
摘要:
概述 先直接说我遇到的问题吧,Spring Boot应用启动失败: ERROR | org.springframework.boot.web.embedded.tomcat.TomcatStarter | onStartup | 61 | - Error starting Tomcat contex 阅读全文
摘要:
进程 进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。 进程状态 在进程的生命周期内,进程总会从一个状态转变到另一个状态。Linux中,一个进程有下面的可能状态: Running:正在运行(它是系统中的当前进程)或准备 阅读全文
摘要:
概述 Gossip协议,又称epidemic协议,基于流行病传播方式的节点或进程之间信息交换的协议,在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance 阅读全文
摘要:
概述 在应用工程里看到如下被标记为@deprecated的代码,这对有代码洁癖的我而言是无法忍受的: row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital = row.getCell(0).getStringCellV 阅读全文
摘要:
概述 工作即将满8年,如果算上2年实习的话,满打满算我已经走过将近10年的程序员编码生涯。关于Spring Boot知识点,关于微服务理论,也已经看过好几本书籍,看过十几篇技术Blog,甚至自己也写过相关技术Blog。 无论是Spring Boot,还是微服务,这些我们都可以称之为编程职业硬技能。这 阅读全文
摘要:
环境搭建 定义变量名时要遵循的规则: 变量名必须以字母或下画线开始,名字中间只能由字母、数字和下画线组成 长度不能超过255个字符 变量名在有效范围内必须具有唯一性 不能使用保留字(关键字) 区分大小写 不能对元组中的元素做修改,只能做切片查询。如果元组中只有1个元素,则需要在这个元素的后面加上逗号 阅读全文
摘要:
监控简介 Google服务层次结构图,监控是底座 一些监控反模式: 事后监控 机械式监控 不(够)准确的监控 静态监控:不是说超过某个绝对阈值系统就一定出现问题,更有意义的监控是对比(环比)动态监控。数据库性能分析供应商VividCortex的首席执行官Baron Schwartz对此评论道[插图] 阅读全文
摘要:
概述 计算机硬件的不断的升级带来系统处理性能持续的提高,如何对平台或系统的性能作出正确的判断就是性能测试的主要目标。 如何保证性能测试不偏不倚,而不是公说公有理婆说婆有理,就引入基准测试,即Benchmark测试。测试时,把应用程序中用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为 阅读全文