摘要: 分布式系统——分布式ID方案 分布式ID介绍 在分布式系统中,我们经常需要生成全局唯一的标识符,例如订单号,用户id,消息id等。这些标识符通常被称为分布式id。分布式id有以下几个常见的要求: 全局唯一:不同的节点或服务不能生成重复的id。 高性能:生成id的速度要快,不能成为系统的瓶颈。 低延迟:生成id的过程要尽可能简单, 阅读全文
posted @ 2023-04-03 23:48 loveletters 阅读(172) 评论(0) 推荐(0)
摘要: Spring从熟悉到陌生 BeanFactory与ApplicationContext的区别与联系 在SpringBoot项目中我们通过SpringApplication.run(SpringLearnApplication.class, args);来启动项目,实际上这个方法有一个返回值,类型为 ConfigurableA 阅读全文
posted @ 2023-04-03 23:46 loveletters 阅读(78) 评论(0) 推荐(0)
摘要: 分布式系统——并发条件下如何保证缓存与DB数据一致性 什么是数据一致性 我们常说的数据一致性指的是在程序运行过程中本地缓存、分布式缓存、数据库三者之间的数据一致性 常见的本地缓存有 hashmap、currenthashmap、guava cache、caffeine 分布式缓存常见的有 redis、memcache 常见数据不一致常见有: 本地缓存与 阅读全文
posted @ 2023-04-03 23:44 loveletters 阅读(327) 评论(0) 推荐(0)
摘要: SpringBoot外部化配置定时任务cron表达式 SpringBoot外部化配置定时任务cron表达式 背景 在日常开发中我们经常会使用到定时任务的情况,SpringBoot为我们很方便的集成了定时任务。我们只需要简单的几部就可以配置好一个定时任务。 @Component public class LocationTask { @Scheduled 阅读全文
posted @ 2023-04-03 23:43 loveletters 阅读(1131) 评论(0) 推荐(1)
摘要: MySQL带排序的分页查询优化 MySQL带排序的分页查询优化 需求 在日常开发中,经常会遇到这么一种情况,一张表的数据量较大(500万左右)的时候,对其进行分页查询的时候,在分页比较深的情况下,查询效率会急剧下降。对于这种情况,我们需要做一些分页查询的优化。 准备 创建脚本 CREATE TABLE student ( id I 阅读全文
posted @ 2023-04-03 23:41 loveletters 阅读(756) 评论(0) 推荐(0)
摘要: SpringSecurity入门到实践(kotlin版) SpringSecurity 实战 前言 本文通过一系列章节介绍SpringSecurity的基础用法(基本认证、filter链、密码加密、rememerMe、会话管理、CSRF、授权、oauth2)以及项目中的实践使用场景(多因子认证、JWT、SSO单点登录)。本文示例代码使用kotlin,参考书 阅读全文
posted @ 2023-04-03 23:37 loveletters 阅读(4709) 评论(0) 推荐(0)
摘要: 2023读书笔记 《1453:君士坦丁堡之战》 《1453:君士坦丁堡之战》是一本关于君士坦丁堡沦陷的历史非小说类图书。本书详细讲述了导致君士坦丁堡被奥斯曼土耳其人占领的事件,以及拜占庭帝国的终结。作者通过全面而深入的分析,介绍了宗教、经济、外交等政治、军事和社会因素对君士坦丁堡沦陷的影响。 此外,本书还详细讲述了沦 阅读全文
posted @ 2023-04-03 23:34 loveletters 阅读(81) 评论(0) 推荐(0)
摘要: 化妆知识入门——直男必备 化妆公式 化妆=50%审美+30%技术+20%产品 我们在学习化妆的时候需要知道化妆不是美图秀秀,不能解决所有的问题。 比方说有的同学想通过化妆让自己脸变小:如果你用手摸一摸自己的脸很容易摸到下颌骨,那么说明你们的脸大是由你的骨骼决定的,那么只能通过一些骨骼整形手上来解决。 如果长期使用一边吃东西那 阅读全文
posted @ 2023-04-03 23:33 loveletters 阅读(386) 评论(0) 推荐(0)
摘要: 如何进行SpringMVC异步编程 前言 SpringMVC是我们平时用的最多的异步编程框架,但是我们在使用的时候基本上只是用到了它的同步编程。一般情况下是够用的,但是在并发量比较大的时候可能就不会够用了,因为一个请求会占用一个tomcat线程,这个时候我们可以尝试使用异步编程的方式来提高吞吐量。 环境准备 maven依赖: <dep 阅读全文
posted @ 2023-04-03 23:32 loveletters 阅读(310) 评论(0) 推荐(0)
摘要: JAVA常见面试题整理 JAVA集合 说说有哪些常见集合? 集合相关类和接口都在java.util中,主要分为3种:List(列表)、Map(映射)、Set(集) 其中Collection是集合List、Set的父接口,它主要有两个子接口: List:存储的元素有序,可重复。 Set:存储的元素不无序,不可重复。 Map是 阅读全文
posted @ 2023-04-03 23:29 loveletters 阅读(2478) 评论(0) 推荐(0)
摘要: 如何在树莓派上搭建一个可以外网访问的博客 前言 前段时间为了学习k8s集群搞了三台树莓派作为服务器,现在空闲了出来。因为它的功耗比较低,所以想着来弄一个web服务器搭一个博客服务。这里有一个需要解决的问题就是我家宽带没有公网地址,所以只能选择内网穿透。我这里选择花生壳,一个月有1G的免费流量。 我的腾讯云服务器还有2年多到期,到时候续费太贵 阅读全文
posted @ 2023-04-03 23:27 loveletters 阅读(328) 评论(0) 推荐(0)
摘要: 基于SpringBoot实现一个可扩展的事件总线 前言 在日常开发中,我们经常会用到事件总线,SpringBoot通过事件多播器的形式为我们提供了一个事件总线,但是在开发中我们经常会用到其他的实现,比如Guava、Disruptor的。我们将基于SpringBoot封装一套底层驱动可扩展的,统一api的事件驱动组件。 环境准备 jdk1.8 spr 阅读全文
posted @ 2023-04-03 23:25 loveletters 阅读(1358) 评论(1) 推荐(0)
摘要: (转载) Kubernetes入门教程 原文地址:kubernetes入门教程 简介 Kubernetes 是一个开源的容器编排引擎和容器集群管理工具,用来对容器化应用进行自动化部署、 扩缩和管理。 Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为 k 和 s 之间有8个字符。 Google 在 阅读全文
posted @ 2023-04-03 23:23 loveletters 阅读(3874) 评论(0) 推荐(0)
摘要: 如何通过MyBatis的插件功能来实现分表功能 前言 之前项目中由于几张表的数据量特别的大,在查询的时候特别耗时,所以决定对其进行分表处理。考虑到项目中用的MyBatis作为ORM框架,所以便决定使用它的插件功能来实现动态的替换查询的表来实现分表功能。 功能实现 整体的目录结构如下 TableShard :注解,用来标记需要分表的接口或者类 几个 阅读全文
posted @ 2023-04-03 23:21 loveletters 阅读(1093) 评论(0) 推荐(0)
摘要: 如何理解MySQL的MVCC多版本并发控制 前言 我们知道在mysql中存在四种隔离级别(读未提交、读已提交、可重复读、序列化),它默认的就是隔离级别就是可重复读,它能够解决脏读、不可重复读问题,并且在innodb引擎下能部分解决幻读问题。在mysql innodb存储引擎下RC(读已提交),RR(可重复读)基于MVCC(多版本并发控制)进行 阅读全文
posted @ 2023-04-03 23:19 loveletters 阅读(170) 评论(0) 推荐(0)
摘要: 常用的一些配置文件整理 前言 在日常开发中常常需要引入一些其他依赖组件,但是准备配置文件却是一件麻烦的事情,本文旨在整理收集一些日常开发中需要用到的一些组件的配置。 SpringBoot整合Mybatis 整体目录结构如下 pom.xml 添加mysql、mybatis相关依赖 <dependency> <groupId> 阅读全文
posted @ 2023-04-03 23:18 loveletters 阅读(142) 评论(0) 推荐(0)
摘要: 在SpringDataJPA中使用Querydsl(kotlin版) 前言 我们在做日常开发中经常会进行数据库的操作,ORM框架可以帮助我们更便捷的进行数据的操作。SpringDataJPA就是我们经常用到的ORM框架,我们只需要定义一些实体类以及实现一些接口,它便为我们生成了一些丰富的SQL操作功能。但是如果涉及到多表动态查询, JPA 的功能就显得有些捉襟见肘了, 阅读全文
posted @ 2023-04-03 23:15 loveletters 阅读(629) 评论(0) 推荐(0)
摘要: 常用软件Docker部署命令 前言 我们在日常开发中经常会用到一些中间件,用docker快速部署是一个不错的选择。本帖将记录一些日常开发中用到的一些软件的docker部署命令,方便查阅。 PostgreSql docker run --name dockerPG11 -e POSTGRES_PASSWORD=123456 -p 阅读全文
posted @ 2023-04-03 23:13 loveletters 阅读(122) 评论(0) 推荐(0)
摘要: Quarkus系列——Vert.x应用(番外篇) 前言 由于客观原因(穷)导致博客首页加载时间有点慢,大概需要3秒才能加载出服务端渲染的基础页面。所以想着能够提高首页加载速度,我决定在nginx上做个缓存。为了不影响内容的及时更新,我设置的缓存的有效期仅为10分钟。这样导致在缓存过期后第一次加载页面会cache miss,所以为了解决这个问题。我决 阅读全文
posted @ 2023-04-03 23:10 loveletters 阅读(905) 评论(0) 推荐(0)
摘要: Quarkus系列——集成Redis(四) 前言 reids是我们在进行后端开发的时候常用到的一个中间件,常用于实现分布式缓存,分布式锁。我们在SpringBoot中可以很方便的通过stater来集成redis。在Quarkus中官方为我们提供了redis的client虽然比起Spring用起来略显简陋但是稍微改造下也能满足我们日常需要。 准 阅读全文
posted @ 2023-04-03 23:09 loveletters 阅读(1115) 评论(0) 推荐(0)
摘要: Disruptor入门及应用 Disruptor是什么 Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,能够在无锁的情况下实现网络的Queue并发操作,基于Disruptor开发的系统单线程能支撑每秒600万订单。 环境准备 JDK1.8 maven 我们先创建一个maven项目,并且引入disruptor相关 阅读全文
posted @ 2023-04-03 23:07 loveletters 阅读(858) 评论(0) 推荐(0)
摘要: Quarkus系列——基于RBAC来实现权限控制(三) 前言 我们在之前的两篇文章里面已经讲解了Quarkus的快速入门以及RESTEasy的相关功能,接下来的我将通过一系列日常的使用情景来讲解如何在日常开发中使用Quarkus。 权限控制是我们在开发web系统的时候经常会需要的一种功能,本文我将通过jwt的方式来实现基于RBAC的权限控制。 准备 我们 阅读全文
posted @ 2023-04-03 23:05 loveletters 阅读(1088) 评论(0) 推荐(1)
摘要: Quarkus系列—— RESTEasy与SpringMVC(二) 简述 RestEasy在Quarkus中的作用跟SpringMVC在SpringBoot中类似。 简介 RESTEasy 是 JBoss 的一个开源项目,提供各种框架帮助你构建 RESTful Web Services 和 RESTful Java 应用程序。我们以第一部分的代码为例来介绍如何通过R 阅读全文
posted @ 2023-04-03 22:58 loveletters 阅读(864) 评论(0) 推荐(0)
摘要: Quarkus系列——快速入门(一) 介绍 Quarkus在日常开发中是可以替代SpringBoot的。 Quarkus是 Red Hat为GraalVM 和 HotSpot 量身定制用程序。特点是启动超快,内存极低,并且在容器编排平台(如Kubernetes)中提供了近乎即时的向上扩展和高密度的内存利用率。并且基于GraalVM,为我 阅读全文
posted @ 2023-04-03 22:53 loveletters 阅读(6149) 评论(2) 推荐(1)
摘要: nginxWebUI--一款更好的管理nginx的软件 背景 博主之前搭建了一套k8s系统用来管理开发中常用的软件,以及项目的快速部署。但是在使用的过程中有个麻烦的问题是在于,k8s暴露出来的服务的端口号是限定范围内随机的。所以在我们访问部分服务的时候需要不得已的带上一些端口号,这样有点太麻烦了。能不能简单一点,正好我手上有个域名,这样我用nginx+二 阅读全文
posted @ 2023-04-03 22:51 loveletters 阅读(1382) 评论(0) 推荐(0)
摘要: python爬虫之动态网页爬取——poco爬虫 背景 做这个一个爬虫源于项目中需要做ai模型训练需要用到大量的同一人的不同场景下的照片,正好这种摄影网站里面可以找到。 项目初始化 我们先创建一个爬虫项目,这里我们用scrapy框架来创建。 scrapy startproject poco 然后cd 到 poco文件夹中初始化一下项目 scrapy 阅读全文
posted @ 2023-04-03 22:49 loveletters 阅读(300) 评论(1) 推荐(0)
摘要: 从ReentrantLock 看AQS源码 ReentrantLock简介 ReentrantLock意思为可重入锁,指的是一个线程能够对一个临界资源重复加锁 ReentrantLock与Synchronized的区别 ReentrantLock支持公平锁和非公平锁,ReentrantLock内部有一个抽象内部类Sync 集成于 AQS, 并 阅读全文
posted @ 2023-04-03 22:46 loveletters 阅读(27) 评论(0) 推荐(0)
摘要: Halo自定义部分扩展 简介 Halo是一款现代化的开源博客/CMS系统,前端由Vue,后端java开发的。我选择的原因是因为是java开发的,所以方便我自定义的扩展。 MinIO扩展 在我们写博客的时候经常会用到图片,Halo支持多种文件存储方式。这里我选择了MinIO,但是在使用的过程中发现了一个小的问题,它上传的文件 阅读全文
posted @ 2023-04-03 22:44 loveletters 阅读(278) 评论(0) 推荐(0)
摘要: 线程池之FutureTask、ThreadPoolExecutor源码分析 前言 在我们日常工作中,我们经常会用到多线程的来处理一些异步任务,提高系统吞吐量,但是线程毕竟是一种昂贵的系统的资源,我们不应该频繁的去申请销毁。在java的project loom还未正式release的时候,我们常用池化的方式来使用线程。所以了解线程池的设计思想能够有助于我们更好的使用它,所以本 阅读全文
posted @ 2023-04-03 22:42 loveletters 阅读(81) 评论(0) 推荐(0)
摘要: Vavr——一个颠覆JAVA的库 前言 Java8 在一定程度上支持了函数式编程,但标准库提供的函数式 API 不是很完备和友好。为了更好的进行函数式编程,我们就不得不借助于第三方库,而 VAVR 就是这方面的佼佼者,它可以有效减少代码量并提高代码质量。本文旨在快速的介绍一个VAVR提供的一些功能,以便我们能够快速入门VAVR。本文 阅读全文
posted @ 2023-04-03 22:25 loveletters 阅读(1400) 评论(0) 推荐(0)
摘要: 在Spring中如何通过BeanFactoryPostProcessor和BeanPostProcessor来做一点好玩的事情 在Spring中如何通过BeanFactoryPostProcessor和BeanPostProcessor来做一点好玩的事情 介绍 BeanFactoryPostProcessor跟BeanPostProcessor是Spring为开发者提供的在Bean加载时候的扩展点。灵活的运用这两个扩展点可以 阅读全文
posted @ 2023-04-03 22:21 loveletters 阅读(120) 评论(0) 推荐(0)
摘要: 线程间数据传递之ThreadLocal、InheritableThreadLocal、TransmittableThreadLocal 前言 在JAVA中线程之间传输数据的方式有多种,而本文旨在探讨ThreadLocal及其衍生类的使用场景。 使用场景 业务系统的参数传递:在我们的业务系统中可能会用到许多公共参数,可能是用户的token信息,在我们链路中可能某一个方法需要用到它,那么我们又不想一层层的传递它。 分布式系统要打通各个系 阅读全文
posted @ 2023-04-03 22:19 loveletters 阅读(2750) 评论(0) 推荐(0)
摘要: 基于Vmware安装的Linux配置静态IP 背景说明 作为一位服务端开发者,我们日常工作中所用到的软件都是运行在Linux环境下,Wmware等虚拟机软件可以快速帮我们搭建一套Linux环境。但是默认搭建的Linux环境IP地址是动态的,较为不方便,所以本文探讨如何在Wmware提供的不同网络模式下配置静态IP。 环境准备 win10 wmw 阅读全文
posted @ 2023-04-03 22:05 loveletters 阅读(297) 评论(0) 推荐(0)
摘要: 分布式系统——基于Redis的分布式锁的实现 分布式锁的介绍 分布式锁是分布式系统中用于协调多个进程或线程之间并发访问共享资源的一种机制。在分布式系统中,由于各个节点之间的通信存在延迟、故障等问题,可能会导致数据的不一致性。为了保证数据的一致性,需要使用分布式锁来协调各个节点的并发访问。 在分布式系统中,多个节点同时访问共享资源可能会导致以下问 阅读全文
posted @ 2023-04-03 20:49 loveletters 阅读(220) 评论(0) 推荐(0)