摘要:
概述 对于后端Java开发人员来说,锁主要有Java锁和DB锁。Java锁,请参考一文总结Java开发各种锁。本文所述的DB锁,可能会局限于MySQL数据库。 隔离级别与锁的关系 在RU级别下,读取数据不需要加共享锁,这样就不会跟被修改的数据上的排他锁冲突 在RC级别下,读操作需要加共享锁,但是在语 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(147)
评论(0)
推荐(0)
摘要:
概述 在使用公司内部后台系统测试环境时发现一个请求加载慢的问题,简简单单的列表,查询MongoDB数据库,测试环境不过几百上千条数据而已,请求耗时居然高达5~6秒: 作为对比,生产环境的请求响应截图如下: 经过持续跟进,该后台系统所有列表页面测试环境普遍比生产环境慢,不管是MongoDB还是MySQ 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(82)
评论(0)
推荐(0)
摘要:
概述 本文记录一次升级Apollo Client组件到1.7.0后遇到的重大生产事故。只想看结论的,可直接快进到文末。实际上,第一句话就是一个结论。 另,本文行文思路事后看起来可行略显思路清晰,实际上排查生产问题时如无头苍蝇,各种猜想各种否定猜想,各种排除各种验证。 另另,回滚服务有时候是一个法宝。 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(210)
评论(0)
推荐(0)
摘要:
概述 事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 分类 大多数情况下,分类是没有意义的一件事。但是分类可以一定程度上,加深理解。 实现 从实现角度来看,Java事务的类型有三种:JDBC事务、JTA(Java Transaction API 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(86)
评论(0)
推荐(0)
摘要:
概述 测试环境爆出ERROR告警日志java.lang.IllegalStateException: Didn't find report for specified language,登录测试环境ELK查到如下具体的报错堆栈日志: java.lang.IllegalStateException: 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(23)
评论(0)
推荐(0)
摘要:
概述 由来 长期以来系统工程师使用的建模语言、工具和技术种类很多,如行为图、IDEF0、N2图等,这些建模方法使用的符号和语义不同,彼此之间不能互操作和重用。系统工程正是由于缺乏一种强壮的标准的建模语言,从而限制系统工程师和其他学科之间关于系统需求和设计的有效通信,影响系统工程过程的质量和效率。 为 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(616)
评论(0)
推荐(1)
摘要:
需求 给出一个比较常见的统计类业务需求:统计App(包括iOS和Android两大类)每日新注册用户数、以及累计注册用户数。 数据库采用MySQL,根据上面的需求,不难设计表如下: create table os_day_count( stat_date varchar(10) not null c 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(79)
评论(0)
推荐(0)
摘要:
概述 分类 索引的分类: 按照索引包含的字段数量,可分为单键索引(单字段索引)和组合索引(联合索引、复合索引) 按照索引字段的类型,可以分为主键索引和非主键索引 按照索引节点与物理记录的对应方式来分,可以分为聚簇索引和非聚簇索引,其中聚簇索引是指索引节点上直接包含了数据记录,而后者则仅仅包含一个指向 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(150)
评论(0)
推荐(0)
摘要:
概述 关系型数据库MySQL有InnoDB存储引擎,存储引擎很大程度上决定着数据库的性能。 在MongoDB早期版本中,默认使用MMapV1存储引擎,其索引就是一个B-树(也称B树)。 从MongoDB 3.0开始引入WiredTiger(以下简称WT)存储引擎,在性能及稳定性上都有明显的提升。从M 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(496)
评论(0)
推荐(0)
摘要:
概述 说到MongoDB客户端,不要太多,有免费的也有付费的。每个人都有他习惯使用的客户端IDE。除JetBrains公司出品的超强DataGrip外,Robot 3T值得一提。 Robot 3T,用C++编写,有限开源免费,部分高级功能需要付费购买license,现已更名为Studio 3T。 实 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(556)
评论(0)
推荐(0)
摘要:
缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ 'profiles.alias': '逆天子', 'profiles.channel': '' },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询指定渠 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(690)
评论(0)
推荐(0)
摘要:
概述 最多可设置6级标题 技巧 列表 有序列表 MD语法: 1. 你好 2. 我也好 呈现效果: 你好 我也好 无序列表 MD语法: - a - b * aa * bb + aaa + bbb 效果: a b aa bb aaa bbb 结论,支持三种方式:-、*、+ TODO列表 MD语法: - 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(349)
评论(0)
推荐(0)
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 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(280)
评论(0)
推荐(0)
摘要:
进程 进程process是指正在执行的程序;是程序正在运行的一个实例。它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。 进程状态 在进程的生命周期内,进程总会从一个状态转变到另一个状态。Linux中,一个进程有下面的可能状态: Running:正在运行(它是系统中的当前进程)或准备 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(132)
评论(0)
推荐(0)
摘要:
概述 Gossip协议,又称epidemic协议,基于流行病传播方式的节点或进程之间信息交换的协议,在分布式系统中被广泛使用。 在1987年8月由施乐-帕洛阿尔托研究中心发表ACM上的论文《Epidemic Algorithms for Replicated Database Maintenance 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(216)
评论(0)
推荐(0)
摘要:
概述 在应用工程里看到如下被标记为@deprecated的代码,这对有代码洁癖的我而言是无法忍受的: row.getCell(10).setCellType(Cell.CELL_TYPE_STRING); String hospital = row.getCell(0).getStringCellV 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(1386)
评论(0)
推荐(0)
摘要:
概述 工作即将满8年,如果算上2年实习的话,满打满算我已经走过将近10年的程序员编码生涯。关于Spring Boot知识点,关于微服务理论,也已经看过好几本书籍,看过十几篇技术Blog,甚至自己也写过相关技术Blog。 无论是Spring Boot,还是微服务,这些我们都可以称之为编程职业硬技能。这 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(51)
评论(0)
推荐(0)
摘要:
环境搭建 定义变量名时要遵循的规则: 变量名必须以字母或下画线开始,名字中间只能由字母、数字和下画线组成 长度不能超过255个字符 变量名在有效范围内必须具有唯一性 不能使用保留字(关键字) 区分大小写 不能对元组中的元素做修改,只能做切片查询。如果元组中只有1个元素,则需要在这个元素的后面加上逗号 阅读全文
posted @ 2024-08-21 17:25
johnny233
阅读(57)
评论(0)
推荐(0)
摘要:
监控简介 Google服务层次结构图,监控是底座 一些监控反模式: 事后监控 机械式监控 不(够)准确的监控 静态监控:不是说超过某个绝对阈值系统就一定出现问题,更有意义的监控是对比(环比)动态监控。数据库性能分析供应商VividCortex的首席执行官Baron Schwartz对此评论道[插图] 阅读全文
posted @ 2024-08-21 17:24
johnny233
阅读(49)
评论(0)
推荐(0)
摘要:
概述 Dynamic programming,简称DP,动态规划,基础算法之一,维基百科的解释: 是一种在数学、管理科学、计算机科学、经济学和生物信息学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往 阅读全文
posted @ 2024-08-21 17:01
johnny233
阅读(98)
评论(0)
推荐(0)
摘要:
概述 算法是一个程序员的核心竞争力,也是面试最重要的考查环节。本文整理一些与回文相关的基础算法题。注:本文语言为Java。 验证回文串 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。给定一个字符串s,如果是回文串,返回t 阅读全文
posted @ 2024-08-21 17:01
johnny233
阅读(701)
评论(0)
推荐(0)
摘要:
概述 在Java中要想实现线程,有四种手段: 继承Thread类 实现java.lang.Runnable接口 实现java.util.concurrent.Callable泛型接口, 利用线程池 线程池通过线程复用机制,并对线程进行统一管理,优点: 降低系统资源消耗。通过复用已存在的线程,降低线程 阅读全文
posted @ 2024-08-21 17:01
johnny233
阅读(206)
评论(0)
推荐(0)
摘要:
概述 TimingWheel,时间轮,简单理解就是一种用来存储若干个定时任务的环状队列(或数组),工作原理和钟表的表盘类似。 关于环形队列,请参考环形队列。 时间轮由两个部分组成,一个环状数组,一个遍历环状数组的指针。 首先定义一个固定长度的环状数组,队列中的每一个元素代表一个时间格(可以精确到秒或 阅读全文
posted @ 2024-08-21 17:00
johnny233
阅读(369)
评论(0)
推荐(0)
摘要:
信号量 在并发系统中,信号量是用于控制公共资源访问权限的变量。信号量用于解决临界区问题,使得多任务环境下,进程能同步运行。此概念是由荷兰计算机科学家Dijkstra在1962年左右提出的。信号量仅仅跟踪还剩多少资源可用,不会跟踪哪些资源是可用的。 信号量机制,处理进程同步和互斥的问题。信号量的一大特 阅读全文
posted @ 2024-08-21 17:00
johnny233
阅读(403)
评论(0)
推荐(0)
摘要:
概述 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。跨域是浏览器(如Chrome浏览器基于JS V8引擎,可以简单理解为JS解释器)的一种同源安全策略,是浏览器单方面限制脚本的跨域访问。因此,仅有客户端运行在浏览器时才存在跨域问题,才需要考虑如何解决这个问题。 浏览器控制台输 阅读全文
posted @ 2024-08-21 17:00
johnny233
阅读(86)
评论(0)
推荐(0)
摘要:
概述 DNS是一个缩写,可以代表Domain Name System,域名系统,是互联网的一项基础服务。也可以代表Domain Name Server,域名服务器,是进行域名和与之相对应的IP地址相互转换的服务器。DNS协议则是用来将域名转换为IP地址(也可将IP地址转换为相应的域名地址)。 当前, 阅读全文
posted @ 2024-08-21 17:00
johnny233
阅读(385)
评论(0)
推荐(0)
摘要:
概述 代理在计算机编程领域,是一个很通用的概念,包括:代理设计模式,代理服务器等。 代理类持有具体实现类的实例,将在代理类上的操作转化为实例上方法的调用。为某个对象提供一个代理,以控制对这个对象的访问。代理类和委托类有共同的父类或父接口,这样在任何使用委托类对象的地方都可以用代理对象替代。代理类负责 阅读全文
posted @ 2024-08-21 17:00
johnny233
阅读(134)
评论(0)
推荐(0)
摘要:
概述 基本概念 磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存在扇区中。 磁头首先寻找到对应磁道,然后等到磁盘进行周期旋转到指定的扇区,才能读取到对应的数据。存取时间 = 寻道时间 + 等待时间 盘面号(磁头号):0 ~ M-1;由于一个盘面 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(838)
评论(0)
推荐(0)
摘要:
概述 关于面试中常见的其他二叉树算法题,参考面试+算法之二叉树(Java)。二叉树的定义(注意到有使用lombok提供的两个注解): @lombok.Data @lombok.AllArgsConstructor private static class TreeNode { private Tre 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(122)
评论(0)
推荐(0)
摘要:
背景 在分布式系统中,当数据库数据量达到一定量级后,需要进行数据拆分、分库分表操作,传统使用方式的数据库自有的自增特性产生的主键ID已不能满足拆分的需求,它只能保证在单个表中唯一,所以需要一个在分布式环境下都能使用的全局唯一ID。 应用场景 用户ID、图片ID等各种业务场景 分库分表情况下的订单号 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(196)
评论(0)
推荐(0)
摘要:
概述 不管是计算任务还是数据存储都会涉及资源分配,资源包括但不限于硬件资源如CPU、内存、硬盘、网口。在单机环境中,资源管理相对简单;分布式环境中,资源分布相对分散,如何协调资源应对计算任务和数据存储就是亟待解决的问题。 资源管理和调度是将计算任务分配到资源的过程,为了处理并发的计算任务,系统会通过 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(392)
评论(0)
推荐(0)
摘要:
概述 Java Microbenchmark Harness,简称JMH,由OpenJDK开发,用来构建、运行和分析Java或其他JVM语言代码的微基准测试框架。适合于方法级别的细粒度测试,并不适用于系统之间的链路测试。 为什么需要JMH,也就是需求产生 死码消除:所谓死码,是指注释的代码,不可达的 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(110)
评论(0)
推荐(0)
摘要:
简介 官网:https://zookeeper.apache.org/index.html 分布式服务协调组件,Google Chubby的开源实现。解决分布式应用中的以下问题:配置管理、命名服务(Naming Service)、集群管理、统一命名服务、状态同步。 用于解决分布式数据一致性问题,提供 阅读全文
posted @ 2024-08-21 16:59
johnny233
阅读(101)
评论(0)
推荐(0)
摘要:
概述 SkipList,跳表,跳跃表,在LevelDB和Lucene中都广为使用。跳表被广泛地运用到各种缓存实现当中,跳跃表使用概率均衡技术而不是使用强制性均衡,因此对于插入和删除结点比传统上的平衡树算法更为简洁高效。 Skip lists are data structures that use 阅读全文
posted @ 2024-08-21 16:58
johnny233
阅读(187)
评论(0)
推荐(0)
摘要:
背景 SOA或微服务架构体系下必不可少的一个分布式组件,常用于解决分布式场景下数据一致性的问题。 应用场景: 资源竞争控制:在分布式系统中,多个节点可能同时访问共享资源,如数据库、文件系统、缓存等。分布式锁可以用来控制对这些共享资源的访问,确保在任何时候只有一个节点能够对资源进行修改,避免数据的并发 阅读全文
posted @ 2024-08-21 16:58
johnny233
阅读(126)
评论(0)
推荐(0)

浙公网安备 33010602011771号