自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华仔仔的博客

如果觉得文章有用的话,记得点赞、收藏加关注噢!

  • 博客(152)
  • 资源 (10)
  • 收藏
  • 关注

原创 【已解决】Java 中使用 ES 高级客户端库 RestHighLevelClient 清理百万级规模历史数据

🎈在经过调研之后发现,某服务项目每周产生的数据量已经达到千万级别,每天将近能产生一百万的数据量写入到ES数据库中,加上之前的历史数据,目前生产环境ES数据量已经达到上亿规模。🎉工作中遇到这样一个需求场景:由于ES数据库中历史数据过多,占用太多的磁盘空间,需要定期地进行清理,在一定程度上可以释放磁盘空间,减轻磁盘空间压力。

2023-08-06 14:26:55 5158 3

原创 【已解决】Java 项目中利用 Redis 配合 Lua 脚本对短信推送消息做推送限制

在实际应用场景中,我们通常需要对短信推送消息做发送限制的处理,避免一定时间间隔内发送过多相同内容的推送短信对用户造成骚扰,也要防止攻击者恶意调用短信推送接口造成短信资源的极大浪费。尽管部分三方接口提供方的原生接口就已经做了限制,但是为了能够更好地满足定制化需求以及在编码过程中的疏忽造成接口重复调用导致资源浪费,因此我们需要在项目中做短信推送限制的处理。

2023-02-02 15:54:10 2188

原创 【已解决】Java 项目中接入天翼云短信推送接口

因此,接入的主要工作也是在第4个步骤,下面将重点介绍如何在代码层面调用API,实现发送短信功能。因此,对于每次接口的调用请求,都需要由。发送短信接口的请求参数、返回参数示例中的字段大小写问题,应该统一首字母小写,而官网文档给出的是大写,可以及时联系天翼云的客服人员咨询。🎉工作场景中遇到这样一个需求:在项目中接入天翼云短信发送接口,用于向用户推送短信消息,如短信验证码、系统信息推送以及推广信息等。最后,需要注意的是,经过本人前期的一些调研,发现天翼云短信服务官方文档因为历史原因,相关信息未能及时更新,如。

2023-01-31 15:20:06 3543

原创 《设计模式》代理模式

定义代理模式就是为被访问的目标对象提供一个代理,此时代理对象充当访问对象和目标对象之间的媒介,通过代理对象实现对目标对象的访问。被代理的对象可以是远程对象、创建开销大的对象以及需要安全控制的对象,Java 中的代理按照代理的生成时机不同分为静态代理和动态代理,静态代理就是在编译期就生成代理对象,而动态代理是在 Java 运行时动态生成,而动态代理又分为 JDK 动态代理和 Cglib 动态代理两种。代理模式的角色组成抽象主题类(Subject):通过接口或抽象类声明真实主题和代理对象实现的业务方法。

2023-01-02 20:26:38 2885 1

原创 【已解决】利用 Java 多线程并发编程提高数据处理效率

需求很简单,只设计一般的联动数据库查询以及数据库的更新操作,然而在编码实现过程中发现,由于主机的数量很多,导致循环遍历查询、更新时花费很长的时间,调用一次接口大概需要30-40 min 时间才能完成操作。💡因此,为了有效缩短接口方法的执行时间,便考虑使用多线程并发编程方法,利用多核处理器并行执行的能力,通过异步处理数据的方式,便可以大大缩短执行时间,提高执行效率。🎉那么在使用多线程异步更新的策略后,从当初调用接口所需的大概时间为。📍这里使用可重用固定线程数的线程池。,大大提高了执行效率。

2022-10-02 18:00:43 6324 4

原创 【已解决】MySQL 事务回滚机制失效之误用 truncate 删除表数据

🎉在工作场景中遇到这样一个需求,对表中的数据进行更新,更新的步骤是:首先,删除表中所有的数据记录;之后,再将更新过后的数据插入到表中。由于系统业务逻辑相关的原因,在数据插入时可能会出现异常,因此当出现异常而终止插入过程,需要能够将事务进行回滚,恢复之前删除的数据。首先,检查是否使用了支持事务的存储引擎,确认 MySQL 数据库使用了 InnoDB 引擎并开启了事务机制。✨这时便回忆起,为了保证事务的原子性,InnoDB 引擎在实际进行记录的增删改操作时,都需要先把 undo 日志记下来,便于之后进行回滚。

2022-09-25 10:18:10 2727

原创 《Java 虚拟机》 happens-before 与锁优化

《Java 虚拟机》 happens-before 与锁优化🚀1. happens-before🚀2. 锁优化🚁2.1 轻量级锁🚁2.2 锁膨胀🚁2.3 重量锁🚁2.4 偏向锁🚁2.5 其他优化🪂2.5.1 减少上锁时间🪂2.5.2 降低锁的粒度🪂2.5.3 锁粗化🪂2.5.4 锁消除🪂2.5.5. 读写分离🚀1. happens-before🎁 从 JDK 5 开始,Java 使用新的 JSR-133 内存模型,该内存模型使用 happens-before的概念来阐述操作之间的内存可见性。在 J

2022-05-03 07:30:00 1365 1

原创 《Java 并发编程》共享模型之无锁

《Java 并发编程》共享模型之无锁🚀1. 无锁解决线程安全问题🚀2. CAS 与 volatile🚀3. 原子整数🚀4. 原子引用🚀5. ABA 问题及解决🚀6. 原子数组和原子字段更新器🚀1. 无锁解决线程安全问题有如下需求,保证 account.withdraw 取款方法的线程安全interface Account { Integer getBalance(); void withdraw(Integer amount); /** * 方法内会启动 1000 个线程,每个线程做 -

2022-05-01 07:30:00 1029

原创 《Java 并发编程》线程池

《Java 并发编程》线程池🚀1. 自定义线程池🚀2. ThreadPoolExecutor🚁2.1 线程池状态🚁2.2 构造方法🚁2.3 newFiexedThreadPool🚁2.4 newCachedThreadPool🚁2.5 newSingleThreadExecutor🚀3. 提交任务🚀4. 关闭线程池🚀5. 任务调度线程池🚀1. 自定义线程池阻塞队列中维护了由主线程(或者其他线程)所产生的的任务主线程类似于生产者,产生任务并放入阻塞队列中线程池类似于消费者,得到阻塞队列中已有的任务

2022-04-30 07:30:00 2089

原创 《Java 并发编程》共享模型之不可变

《Java 并发编程》共享模型之不可变🚀1. 日期转换的问题🚀2. 不可变设计🚀3. 无状态🚀1. 日期转换的问题在运行下面的代码时,由于 SimpleDateFormat 不是线程安全的public class Test { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (int i = 0; i &

2022-04-26 13:57:32 1211

原创 【已解决】Error: Failed to download metadata for repo ‘appstream‘: Cannot prepare internal mirrorlist

在 CentOS 8 上使用 yum 包管理工具安装 vim 时,出现以下的报错提示信息Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist解决方法首先,进入到 yum 的 repos 目录cd /etc/yum.repos.d/之后,修改 centos 文件内容sed -i 's/mirrorlist/#mirro

2022-04-26 10:07:55 122313 78

原创 《Java 并发编程》共享模型之管程

《Java 并发编程》共享模型之管程1 共享带来的问题1.1 临界区1.2 竞态条件2. synchronized 解决方案2.1 synchronized 语法2.2 synchronized 加在方法上3. 变量的线程安全分析4. Monitor 概念1 共享带来的问题1.1 临界区一个程序运行多个线程本身没有问题问题出在多个线程访问共享资源(1)多个线程读共享资源其实也没有问题(2)在多个线程对共享资源读写操作时发生指令交错,就会出现问题一段代码内如果存在对共享资源的多线程读写操作,称

2022-04-25 11:27:09 1299

原创 《Java 并发编程》进程与线程

Java 并发编程1. 基本概念1.1 进程与线程1.2 并行与并发1.3 应用1.3.1 应用之异步调用1.3.2 应用之提高效率2. Java 线程2.1 创建和运行线程2.1.1 通过继承 Thread 创建线程2.1.2 使用 Runnable 配合 Thread (推荐)2.1.3 FutureTask 配合 Thread2.1.4 小结1. 基本概念1.1 进程与线程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载到 CPU,数据加载到内存。在指令运行过程中还需

2022-04-22 20:48:11 1326 1

原创 《Java 虚拟机》运行期优化

5. 运行期优化5.1 分层编译JVM 将执行状态分成了 5 个层次:0层:解释执行,用解释器将字节码翻译为机器码1层:使用 C1 即时编译器编译执行(不带 profiling)2层:使用 C1 即时编译器编译执行(带基本的profiling)3层:使用 C1 即时编译器编译执行(带完全的profiling)4层:使用 C2 即时编译器编译执行profiling 是指在运行过程中收集一些程序执行状态的数据,例如【方法的调用次数】,【循环的 回边次数】等。即时编译器(JIT)与解释器的区别:

2022-04-17 14:03:05 759

原创 《Java 并发编程》共享模型之内存

Java 内存模型1. Java 内存模型1.1 原子性1.2 可见性1.3 有序性1. Java 内存模型Java 内存模型(Java Memory Model,JMM)是 JVM 规范中定义的一种抽象模型,用来屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。JMM 体现在以下几个方面:原子性:保证指令不受到线程上下文的影响。可见性:保证指令不会受 CPU 缓存的影响。有序性:保证指令不会受 CPU 指令并行优化的影响。1.1 原子性

2022-04-14 11:12:00 890 1

原创 《Java 虚拟机》 类加载阶段

JVM 类加载阶段1. 加载2. 链接2.1 验证2.2 准备2.3 解析3. 初始化4. 类加载器4.1 启动类加载器4.2 拓展类加载器4.3 双亲委派模式4.4 自定义类加载器5. 运行期优化5.1 分层编译5.2 方法内联5.2.1 内联函数类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resoultion)、初始化(Initialization)、使用(Using)和卸载(Un

2022-04-13 18:33:46 1476 2

原创 《Java 虚拟机》类文件结构与字节码技术

JVM 类加载与字节码技术1. 类文件结构1.1 魔数1.2 版本号1.3 常量池1.4 访问标识与继承信息1.5 字段表信息1.6 方法表信息1.7 属性表集合2. 字节码指令2.3 图解方法执行流程1. 类文件结构我们直到,编译 .java 文件可以得到 .class 类字节码文件。下面是一个简单的名为 HelloWorld.java 文件public class HelloWorld { public static void main(String[] args) {

2022-04-11 18:59:36 1370

原创 《Java 虚拟机》 垃圾回收

JVM 垃圾回收1. 如何判断对象可以回收1.1 引用计数法1.2 可达性分析算法1.3 五种引用1.4 引用队列2. 垃圾回收算法2.1 标记-清除算法2.2 标记-整理算法2.3 复制算法3. 分代垃圾回收4. 垃圾回收器4.1 串行4.2 吞吐量优先1. 如何判断对象可以回收1.1 引用计数法定义:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为 0 的对象就是不可能再被使用的。弊端:循环引用时,两个对象的计数都为1,导致两个对

2022-04-06 21:04:14 1130

原创 在 IDEA 中使用 Git 图文教程

在 IDEA 中使用 Git 图文教程1. 配置 Git2. 创建项目远程仓库3. 初始化本地仓库3. 连接远程仓库4. 提交到本地仓库5. 推送到远程仓库6. 克隆远程仓库到本地7. 分支操作8. 总结1. 配置 Git想要在 IDEA 中使用 Git,首先就需要在 IDEA 工具中对 Git 进行相关的配置。打开 IDEA 设置,之后按照下面图片中的步骤进行操作即可。需要注意的是,在 Path Git executbale 中,也就是设置 Git 可执行路径中,找到本机电脑上 Git 的安装位置,

2022-04-04 21:38:10 99013 20

原创 Git 分布式版本控制系统使用教程

1. 版本控制系统简介1.1 集中式版本控制系统集中式版本控制系统,版本库是集中存放在中央服务器的,团队中每个成员工作时从中央服务器下载代码(必须联网才能工作,局域网或互联网),个人修改后再提交到中央服务器中。典型的有 SVN(subversion)和 CVS(Concurrent Version System)。架构图:1.2 分布式版本控制系统分布式版本控制系统没有中央服务器的概念,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需要联网,因为版本库就在本地电脑上。多人协作只需要各自修改

2022-04-04 19:19:47 2735

原创 《Java 虚拟机》 基本概念与内存结构

JVM 基本概念与内存模型1. JVM 基本概念2. JVM 内存模型2.1 程序计数器2.2 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区2.6 直接内存1. JVM 基本概念定义:Java Virtual Machine,Java 程序的运行环境(Java 二进制字节码的运行环境)。优点:一次编写,到处运行自动管理内存,具有垃圾回收的功能数组下标越界检查多态JVM、JRE、JDK、JavaSE 和 JavaEE 之间比较:2. JVM 内存模型整体架构2.1 程序计数

2022-04-01 14:26:02 2479

原创 Linux 中使用 Docker 安装 Elasticsearch 及 Kibana

查看当前运行的镜像及本地已经下载的镜像,确认之前没有安装过 ES 和 Kibana 镜像。最后,设置虚拟机重启后 ES 和 Kibana 自动重启。下载安装之后,为了能够解压,需要安装 unzip 命令。解压完成之后,为了节省空间,可以删除之前下载的压缩包。安装完成之后,重启 elasticsearch 镜像。然后使用 unzip 命令解压下载的分词压缩包。从远程镜像仓库拉取 Kibana 镜像到本地。从远程镜像仓库拉取 ES 镜像到本地。可以看到,对中文正确分词成功。查看本地仓库中的镜像。

2023-12-16 10:13:41 915 1

原创 Favorite phrasal verbs

Favorite phrasal verbs 1 to 4a batch = a group of goods(produced at one time)Example1:I work as a teacher and we’ve got exams coming soon, so we all need to kunckle down.Example2:I study law, and I have my exams soon, so I really need to kunckle down

2023-12-02 13:22:51 214

原创 Answering difficult questions in other way

A:I’m not (too) sure, to be honest, but I reckon they do make life easier because…A:I can’t say for sure, but it seems to me, that by and large, they do make life easier. Let me give you an example…A:Off the top of my head, I would say yes, we will. The re

2023-11-27 20:49:12 406

原创 What are linking words?

A1:Yes it is, firstly, it helps us feel better, but it can also help us live longer.A2:Yes I’d say so. To kick off, a healthy diet helps us feel better, and it can also help us live longer.A3:First off, I’m inclined to agree, but it depends on the situatio

2023-11-27 20:18:43 111

原创 Compare and Contrast

comparingLondon is similar to Paris because they are both captical cities.London is similar to Paris in that they are both capital cites.Jack is identical to his father, they both love football.Jack is just like his father, they both love football.contrast

2023-11-27 19:35:39 161

原创 18 synonyms for ‘very‘

book.

2023-11-27 09:06:23 185

原创 Common usage of ‘get‘

I get what you are saying = I understand what you mean.to get an education = to go to schoolto get a degree = to graduate from university/collegeto get a job = to find employmentI get a salary = to get paid monthlyto get the sack = to lose your job(because

2023-11-27 08:42:19 53

原创 Usage of maybe

Maybe:averb (of possibility)May be:modal verb (of possibility) + verbWe can use single adverbs:We can use modal verbs:to blow your socks off = to impress youModal verbs:Averbs:Adverbial phrases:Expressing stronger probability:

2023-11-24 12:58:25 53

原创 Use idioms correctly

Q:Many governments are investing in space travel, what do you think about this?A1:My take on this is it’s a good idea.A2:To my way of thinking, it’s a good idea.A3:I’m in two minds about this. On the one hand…, on the other hand…A4:(I think) I’m on the fen

2023-11-20 10:15:24 55

原创 Six Tips of Lots of Useful Phrases

One minuteThe person I am going to describe is my father.The person I am going to describe is none other than my father.a preamble = an introduction statementDescribing the event:I’d like to kick off by telling you what happened.This took place quite a whi

2023-11-18 10:14:27 81

原创 Phrasal Verbs

at work.

2023-11-14 19:49:59 81

原创 USEFUL PHRASES

THINGS YOU LIKEQ:Do you like social science?Yes, I can’t get enough of it.Yes, what I like most about it is it’s so interesting, for example, last week I read an article about solar panels and how we use them to protect the planet.Yes, I love that i

2023-11-12 12:09:52 197

原创 Climate Change

Climate change is an unsurmountable challenge.Deforestation has a serious impact.There’s an urgent need for us to reduce our carboon footprint.We need to make a drastic change.There is no straightforward solution.to reach a targetto implement solutionsto b

2023-11-11 13:37:33 117

原创 Talk About Your Family

I come from a big family.I come from a small family.I was an only child.I was one of five siblings.There are five of us in my family.extended family = siblings, parents, grandparents, uncles, aunts, cousins.nuclear family = parents and their children.My br

2023-11-10 21:46:40 551

原创 The job interview

this job。

2023-11-10 13:08:25 237

原创 Free time activities

You will be able toTo tick all the boxes = To meet all the requirementsleisure activities = hobbies = pastimesAll the range = Very fashionableI get up to a lot of different things.I like to do yoga = I like doing yoga.I’m fond of playing video games = I’m

2023-11-09 22:15:19 205

原创 Virtual Box + Vagrant 快速搭建 Linux 虚拟开发环境

启动完成之后,新开一个命令行窗口页面,输入以下命令,即可自动使用 vagrant 用户连接虚拟机客户端软件 Virtual Box。6、修改虚拟机的 ip 地址。由于默认虚拟机的 ip 地址不是固定的,开发时不方便,因此需要修改为固定的 ip 地址。4、在 Vagrant 官方镜像仓库,选择需要安装的镜像,这里选择 centos/7。并安装 Vagrant,同样尽量选择安装在其他盘路径,避免默认安装在 C 盘。在 C 盘以外的磁盘,创建一个名为 “vagrant 镜像” 的文件夹。

2023-10-10 10:16:50 819

原创 基于 SpringBoot 2.7.x 使用最新的 Elasticsearch Java API Client 之 ElasticsearchClient

在调研了 spring-boot 2.7.10 版本的源码后发现,其实 2.7.x 版本已经引入了 ElasticsearchClient,并封装了新的客户端 ElasticsearchTemplate,但是并没有为其做自动装配,如果想要使用基于ElasticsearchClient 的 ElasticsearchTemplate,需要用户自己装配。即由提示可以知道,无法创建一个 ElasticsearchTemplate 类型的 bean.

2023-10-01 20:58:06 3181

原创 【已解决】Java 后端使用数组流 Array.stream() 将数组格式的 Cookie 转换成字符串格式

🎉工作中遇到这样一个场景:远程调用某个接口,该接口需要用户的。信息进行权限认证,认证通过之后才可以打通并返回数据。Debug 过程中拿到的。

2023-08-29 18:54:34 2226

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除