摘要: 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 阅读全文
posted @ 2022-04-25 15:22 夏尔_717 阅读(299) 评论(0) 推荐(0)
摘要: 一、概述 1.1 基本概念 Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。简单来说,反射机制指的是程序在运行时能够获取自身的信息。 在Java中, 阅读全文
posted @ 2022-04-25 15:21 夏尔_717 阅读(1860) 评论(0) 推荐(1)
摘要: 一、简介 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机的整体性能。线程池维护多个线程,等待监督管理者分配可并发执行的任务。这种做法,一方面避免了处 阅读全文
posted @ 2022-04-25 15:20 夏尔_717 阅读(1233) 评论(0) 推荐(0)
摘要: 一、 K8S架构 除了核心组件,还有一些推荐的Add-ons: 组件名称 说明 kube-dns 负责为整个集群提供DNS服务 Ingress Controller 为服务提供外网入口 Heapster 提供资源监控 Dashboard 提供GUI Federation 提供跨可用区的集群 Flue 阅读全文
posted @ 2022-04-25 15:20 夏尔_717 阅读(371) 评论(0) 推荐(0)
摘要: 一、概述 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis几乎消除了JDBC代码和参数的手动设置以及结果集的检索。MyBatis使用简单的XML或注解进行配置,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象) 阅读全文
posted @ 2022-04-25 15:19 夏尔_717 阅读(330) 评论(0) 推荐(0)
摘要: IntelliJ IDEA For Mac 快捷键 快捷键 说明 alt+f7 查找变量方法使用的地方 F3 添加书签 Ctrl + O 快捷覆写方法 Alt + F3 添加书签标识 command + F3 显示书签 command + Shift + A 查找动作 Alt + F1 快捷选择 c 阅读全文
posted @ 2022-04-25 15:18 夏尔_717 阅读(1636) 评论(0) 推荐(0)
摘要: 一、启动类入口 SpringBoot的启动很简单,通用的代码如下: @SpringBootApplication public class SpringBootDemoApplication { public static void main(String[] args) { SpringAppli 阅读全文
posted @ 2022-04-25 15:18 夏尔_717 阅读(730) 评论(0) 推荐(0)
摘要: 一、前言 循环依赖:就是N个类循环(嵌套)引用。通俗的讲就是多个Bean互相引用对方,最终形成闭环。 用一副经典的图示可以表示成这样(A、B、C都代表对象,虚线代表引用关系): 其实可以N=1,也就是极限情况的循环依赖:自己依赖自己 这里指的循环引用不是方法之间的循环调用,而是对象的相互依赖关系。( 阅读全文
posted @ 2022-04-25 15:17 夏尔_717 阅读(390) 评论(0) 推荐(0)
摘要: 一、事务的总体设计 由于jdbc、Hibernate 实现事务功能的方式各不相同,Spring进行了统一的抽象,形成了PlatformTransactionManager事务管理器接口,事务的提交、回滚等操作全部交给它来实现。Spring的事务体系也是在PlatformTransactionMana 阅读全文
posted @ 2022-04-25 15:16 夏尔_717 阅读(1345) 评论(0) 推荐(0)
摘要: 一、概述 一般情况下,出现慢SQL问题,往往会定位到某些具体的SQL语句上,然后通过所谓的“优化三板斧”,如下: 查询执行计划 建立合适的索引 使用合适的连接关系和过滤条件来实现SQL语句的优化 但是,如果执行计划是正确的,SQL语句的性能还是很慢,可通过MySQL中的Profiling工具进一步定 阅读全文
posted @ 2022-04-25 09:57 夏尔_717 阅读(1412) 评论(0) 推荐(0)
摘要: 一、概述 多个线程操作共享数据时,synchronized保证访问共享数据的线程安全性。synchronized是非公平锁,新来的线程有可能立即获得监视器,而在等待区中等候已久的线程可能再次等待,不过这种抢占的方式可以预防饥饿。 synchronized加锁方式的作用范围,区别实际是被加锁的对象的区 阅读全文
posted @ 2022-04-24 15:54 夏尔_717 阅读(824) 评论(0) 推荐(0)
摘要: 一、作用 通常情况下我们可以通过synchronized关键字来解决可见性、有序性及原子性问题这些问题,不过synchronized是一个比较重量级的操作,对系统的性能有比较大的影响,所以,如果有其他解决方案,我们通常都避免使用synchronized来解决问题。而volatile关键字就是Java 阅读全文
posted @ 2022-04-24 15:53 夏尔_717 阅读(352) 评论(0) 推荐(0)
摘要: 概览 首先我们通过@GlobalTransactional这个注解开启一个全局事务,而GlobalTransactionScanner.wrapIfNecessary()会为所有方法上加了这个注解的bean注入一个包装了GlobalTransactionalInterceptor实例的advisor 阅读全文
posted @ 2022-04-24 11:31 夏尔_717 阅读(1334) 评论(0) 推荐(0)
摘要: 用Spring的@Transactional注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编写业务代码时候,突然某一个方法里的事务好像失效了。然后debug跟踪代码时发现,自己第一步的insert或者update的数据在语句执行完毕后,数据库中并没有立即出现更改或保存 阅读全文
posted @ 2022-04-24 11:29 夏尔_717 阅读(941) 评论(0) 推荐(0)
摘要: 一、简介 AbstractQueuedSynchronizer(简称AQS),抽象的队列式的同步器,是Java并发包实现的基类。 AQS用来构建锁和同步器的框架,使用AQS能简单且高效地构造出大量的应用广泛的同步器,如常用的ReentrantLock、Semaphore、CountDownLatch 阅读全文
posted @ 2022-04-24 11:28 夏尔_717 阅读(493) 评论(0) 推荐(0)
摘要: 一、题目 在10亿数字的文件中找到最大的前100个数字。 二、分析 针对Top K问题,常规的内存排序算法无法应对海量数据,需结合数据规模和内存限制,选择适配的算法。以下从内存友好型和海量数据适配型两个维度,分析三种核心解决方案。 2.1 排序方法 2.1.1 算法原理 快速选择(Quick Sel 阅读全文
posted @ 2022-04-24 11:28 夏尔_717 阅读(1530) 评论(0) 推荐(0)
摘要: 一、概述 在Linux系统与Java应用排查中,CPU利用率和CPU负载是最易混淆的两个指标,也是定位性能瓶颈的关键入口。本文从基础概念切入,拆解“高负载低利用率”“高利用率低负载”“CPU 100%”等典型场景的排查逻辑,并结合实战案例演示从指标异常到代码根因的定位过程。 二、利用率与负载区别 要 阅读全文
posted @ 2022-04-24 11:27 夏尔_717 阅读(4085) 评论(0) 推荐(0)
摘要: 一、概述 在Java应用和服务出现莫名的卡顿、CPU飙升等问题时总是要分析一下对应进程的JVM状态以定位问题和解决问题并作出相应的优化,在这过程中Java自带的一些状态监控命令和图形化工具就非常方便了。本文总结了最常用的命令行工具及其常用参数解释,图形化监控工具的用法,仅供参考。 命令 说明 常用形 阅读全文
posted @ 2022-04-24 11:26 夏尔_717 阅读(512) 评论(0) 推荐(0)
摘要: 一、概述 Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。 当你遇到以下类似问题而束手无策时,Arthas可以帮助你解决: 这个类从哪个jar包加载的?为什么会报各种类相关的Exception? 我改的代码为什么没有执行到?难道是我没commit?分支搞错了? 遇到问题无法在线上 阅读全文
posted @ 2022-04-24 11:25 夏尔_717 阅读(822) 评论(0) 推荐(0)
摘要: 一、概述 SELECT...INTO:专注数据 “存储与导出”,支持将查询结果定向到变量或文件,适配单行提取、批量结构化导出、二进制 / 超长文本导出三种核心场景,是灵活处理查询结果的关键语句。 LOAD DATA INFILE:聚焦 “批量数据导入”,速度远超传统 INSERT 语句,支持本地 / 阅读全文
posted @ 2022-04-24 10:15 夏尔_717 阅读(890) 评论(0) 推荐(0)