置顶文章

25k 41 分钟

Linux 的学习对于一个程序员的重要性是不言而喻的。前端开发相比后端开发,接触 Linux 机会相对较少,因此往往容易忽视它。但是学好它却是程序员必备修养之一。👀 # Linux 基础 # 什么是 Linux # Linux 系统内核与 Linux 发行套件的区别 Linux 系统内核指的是由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。 Linux 发行套件系统是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用软件的集合产品。 总结:真正的 Linux 指的是系统内核,而我们常说的 Linux 指的是...

精选分类

文章列表

3k 5 分钟

🌴🌴经常听到大家说不同项目之间调用使用 HTTP 方式,同一个项目内不同服务之间调用使用 RPC 方式。今天就来学习一下 RPC框架 ,RPC 框架由哪些部分组成又是如何一步一步设计出来的。 # 了解 RPC 框架 既然要设计 RPC 框架,就需要先知道什么是 RPC ? RPC(Remote Procedure Call Protocol)全称远程过程调用 ,像调用本地服务 (方法) 一样调用服务器的服务 (方法)。 RPC 又是如何进行调用的呢? 很早的时候,国外的工程师设计了一种能够通过 A 计算机调用 B...
2.6k 4 分钟

前段时间看了 Bob 大叔的《代码整洁之道》英文名 clean code ,结合自己的学习经验,对代码整洁的重要性有了⼀些新的理解与感悟。遂在此做笔记,大家共同探讨,共同学习。 # 前言 书中 Bob 大叔提倡 "写代码犹如写文章" ,又说道 “大师级程序员把系统当故事来讲,而不是当做程序来写 ” 。没错,好的代码就应该如好文章一样表达思想,被人读懂。 这本书如其名,教我们如何写出整洁的代码,以及写出整洁代码的理念。足够好的命名,简单专注的函数,有意义的注释以及规范的代码格式。比如如何命名(命名太难了😢)、如何处理异常、怎么写好易读的类和方法等等。 #...
18k 29 分钟

在 java 的庞大体系中,其实有很多不错的小工具,也就是我们平常说的: 轮子 。如果在我们的日常工作当中,能够将这些轮子用户,再配合一下 idea 的快捷键,可以极大得提升我们的开发效率🚀 今天把我一些压箱底的小工具,分享给大家,希望对你有所帮助📌。 # Collections 首先出场的是 java.util 包下的 Collections 类,该类主要用于操作集合或者返回集合,我个人非常喜欢用它。 # 排序 在工作中经常有对集合排序的需求。 看一下使用 Collections 工具 是如何实现升序和降序的: List<Integer> list = new...
5.2k 9 分钟

在前后端数据传输交互中,经常会遇到字符串 (String) 与 Json、XML 等格式相互转换与解析,其中 json 以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。下面我们就来学习一下常用的 Fastjson。 # Fastjson 介绍 # 简介 Fastjson 是阿里巴巴公司开源的一个 Java 语言编写的高性能功能完善的 JSON 库。它采用一种 “假定有序快速匹配” 的算法,把 JSON Parse 的性能提升到极致,是目前 Java 语言中最快的 JSON 库,并且它不依赖于其它任何库。 # 主要特点: 快速 FAST (比其它任何基于...
11k 18 分钟

✨mybatis-plus 是现在我们经常使用的插件,极大的提高了我们开发的效率。这篇文章就总结一下,mybatis-plus 的基础操作。 # 常用注解 # @TableName 这个注解用在类上,声明当前类关联的表名称,可以配置下列属性: 属性 类型 必须指定 默认值 描述 value String 否 "" 表名 schema String 否 "" schema keepGlobalPrefix boolean 否 false 是否保持使用全局的 tablePrefix 的值 (如果设置了全局...
1.9k 3 分钟

JVM 垃圾回收系列(三):染色指针 # 前言: 🥂介绍染色指针之前,大家先回顾以下上一篇文章 《JVM 垃圾收集 - 三色标记》 ,大部分追踪式垃圾收集器在并发标记阶段都采用了三色标记技术。但也有例外,比如:ZGC 收集器有一个标志性的设计,就是采用了染色指针技术(Colored Pointer,其他类似的技术中可能将它称为 Tag Pointer 或者 Version Pointer)。下面就来介绍一下染色指针。 #...
2.1k 3 分钟

JVM 垃圾回收系列(二):三色标记 🍋 这次给大家介绍一下 JVM 垃圾回收可达性分析算法的实现原理。 🎈🎈🎈上篇文章《JVM 垃圾回收 - 记忆集和卡表》 已经和大家介绍了 JVM 是如何快速的扫描和标记 GC Roots 的。标记 完 GC Roots 之后,JVM 就需要从 GC Roots 开始遍历整个对象图了(即并发标记的过程)。 那么 JVM 又是如何遍历对象图的呢? ☕现代大多数跟踪垃圾收集器 (如 CMS、G1、Shenandoah) 都实现三色标记抽象的一些变体来对 “垃圾” 进行标记的。之所以都选择三色标记是因为它能够解决或者降低用户线程的停顿时间。...
2.1k 3 分钟

JVM 垃圾回收系列(一):记忆集和卡表 🥂在说记忆集和卡表之前,先给大家介绍一下跨代引用的问题。 🏫假如要现在进行一次只局限于新生代区域内的收集 (Minor GC),但新生代的实例对象 1 在老年代中被引用,为了找出该区域 (新生代) 中所有的存活对象,不得不在固定的 GC Roots 之外,再额外遍历整个老年代中所有对象来确保可达性分析结果的正确性,反过来也是一样。遍历整个老年代所有对象的方案虽然理论上可行,但无疑会为内存回收带来很大的性能负担。 👉🏻事实上并不只是新生代、老年代之间才有跨代引用的问题,所有涉及部分区域收集(Partial GC) 行为的垃圾收集器,典型的如...
4.2k 7 分钟

🥂上一篇文章说完 MySQL 的事务和锁了,这次来详细介绍一下在 MySQL 中一条更新语句的详细执行流程 (本文无特殊说明均是采用 Innodb 存储引擎)。 # 前期准备 ⭐⭐首先创建一张表,然后插入三条数据: CREATE TABLE T( ID int(11) NOT NULL AUTO_INCREMENT, c int(11) NOT NULL, PRIMARY KEY (ID)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='测试表';INSERT INTO T(c) VALUES (1), (2),...
8.8k 15 分钟

🌴🌴数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以 MySQL 自然也不能例外。下面就给大家详细介绍一下 # MySQL 的锁 # 概述 🌻🌻MySQL 数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存储引擎的锁定机制也有较大区别。本文没有说明的情况下默认使用的是 Innodb 引擎。 # Innodb 原理...