自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 HTTPS原理

安全性:高加密传输明文传输加密方式分对称加密和非对称加密,https是把这两种都用上了称之为混合加密。

2024-04-23 16:50:25 408

原创 RocketMQ学习笔记

kafka适合于日志收集的场景(不需要太多topic;topic下面的partition多了会造成写文件的速度变慢,因为要造很多索引)RocketMQ更适合于电商场景(适用于topic特别多的情况)

2024-04-21 00:00:34 921

原创 JAVA 算法

又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。

2024-03-30 01:11:27 680

原创 SpringCloud Alibaba实战和源码(8)OpenFeign使用

Feign是Netflix开源的声明式HTTP客户端feign默认是不打印任何日志的,但是我们希望打印一些日志信息。比如调用的时间。级别打印日志内容NONE(默认值)不记录任何日志BASIC仅记录请求方法、URL、响应状态代码以及执行时间HEADERS记录BASIC级别的基础上,记录请求和响应的headerFULL记录请求和响应的header、body和元数据方式一:让父子上下文ComponentScan重叠(强烈不建议使用)/*** 日志级别。

2024-03-22 21:40:10 601

原创 JVM笔记

Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C++语言没有垃圾收集技术,需要程序员手动的收集。垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。哪些内存需要回收?什么时候回收?如何回收?垃圾收集机制是Java的招牌能力,极大地提高了开发效率。

2024-03-10 11:24:41 937

原创 Maven

Maven是什么Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个对象模型(POM)POM(Project Object Model): 项目对象模型基础概念仓库 : 用于存储资源,包含各种jar包分类:本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源远程仓库:非本机电脑上的仓库,为本地仓库提供资源中央仓库:Maven团队维护,存储所有资源的仓库私服:公司/部门范围内资源存储的仓库,从中央仓库获取资源私服的作用:保存具有版本的资源,包含购买或自主研发的jar中央仓

2024-03-10 00:51:51 816

原创 SpringBoot源码

为什么要讲SPI呢?因为在SpringBoot的自动装配中其实有使用到SPI机制,所以掌握了这部分对于SpringBoot的学习还是很有帮助的。SPI,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI机制。先通过一个很简单的例子来看下它是怎么用的。先定义接口项目。

2024-03-09 20:34:59 772

原创 分布式定时任务调度xxl-job

1、 掌握xxl-job部署以及开发的方式2、 掌握xxl-job特性以及架构设计3、 掌握xxl-job运行原理。

2024-03-05 23:46:47 1774

原创 Mybatis笔记

MyBatis 是一款优秀的持久层框架它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。MyBatis 本是apache的一个开源项目iBatis。

2024-02-18 21:23:46 878

原创 java实现多级目录树(递归实现)

有时候需要我们后台给前台传树结构的数据,要怎么查询?怎么返回数据呢?二.数据库表设计以及数据内容(以部门举例)

2024-02-14 13:05:21 1069

原创 IO工具类 FileUtils

【代码】IO工具类 FileUtils。

2024-01-09 23:25:44 384

原创 抽丝剥茧设计模式

【代码】抽丝剥茧设计模式。

2024-01-03 11:34:50 555

原创 DDD+SOA的事件驱动微服务读写分离架构

CQRS — Command Query Responsibility Segregation,故名思义是将 command 与 query 分离的一种模式。query 很好理解,就是我们之前提到的「查询」,那么 command 即命令又是什么呢?我们仔细看CRUD, 其实可以更简单的分为读®和写(CUD), 我们想想大部分情况都是,一个方法要么是执行一个Command完成一个动作,要么就是查询返回数据。比如我们回答问题的人不应该去修改问题。当我们读写分离后,我们对应的代码也会分离。

2024-01-02 01:47:33 985 2

原创 k8s安装

K8s 安装教程 v1.24第一步前置环境调试第一步确定自己的内核版本高于3uname -sr第二步:使用elrepo源升级内核检查发现当前内核版本是3.10,使用elrepo源升级内核配置elrepo源,执行如下命令查看最新版内核执行如下命令查看最新的内核版本安装最新的内核版本执行如下命令安装主线版本:设置系统默认内核查看系统上的所有内核版本:设置默认内核为我们刚才升级的内核版本。

2024-01-01 16:00:30 895

原创 Mybatis逆向工程

【代码】Mybatis逆向工程。

2023-12-30 15:16:37 789

原创 Arthas

输入dashboard(仪表板),按回车/enter,会展示当前进程的信息,按ctrl+c可以中断执行。注:输入前面部分字母,按tab可以自动补全命令第一部分是显示JVM中运行的所有线程:所在线程组,优先级,线程的状态,CPU的占用率,是否是后台进程等第二部分显示的JVM内存的使用情况第三部分是操作系统的一些信息和Java版本号。

2023-12-26 22:32:22 866

原创 RocketMQ与SpringBoot实际项目中使用

【代码】RocketMQ与SpringBoot实际项目中使用。

2023-12-25 20:30:21 424

原创 快速掌握前端 专为Java程序员定制

Javascript例子修改页面内容js 代码位置<script> // js 代码</script>引入 js 脚本<script src="js脚本路径"></script>注意,到了框架之后,引入方式会有不同1. 变量与数据类型声明变量1) let ⭐️let 变量名 = 值;let 声明的变量可以被多次赋值,例如let a = 100; // 初始值是 100a = 200; // ok,

2023-12-24 15:52:54 907

原创 前后端跨域问题

【代码】前后端跨域问题。

2023-12-23 14:41:15 333

原创 分布式解决方案与实战

2)为了TTL的失效的时候业务还未完成导致的多个应用抢到锁的BUG,这里可以使用一个守护线程,来不断的去续锁(延长key的TTL)2、解锁的逻辑中:在del之前一定要判断:只有持有锁的应用或线程,才能去解锁成功,否则都是失败。分布式锁的第一种常见方案:Redis来实现分布式锁。1W个请求,高并发请求,其实里面针对的修改库存会集中在一些热点数据8000个在一个商品。A抢到了锁,没有释放锁之前,依然可以lock进入加锁逻辑的。无论是加锁,还是解锁,这里涉及到多个命令。1、复合命令实现加锁。

2023-12-14 20:44:59 801

原创 借助ChatGPT帮助程序员解决系统线上问题

接下来的对话你将以一名java高级开发工程师的身份和我聊天#我们的项目是一个百万级别的并发项目,在这个项目中遇到mysql 8.0 版本下的sql 优化问题源码阅读准备: 在开始阅读源码之前,确保对Java语言有足够的了解,熟悉常用的设计模式和数据结构。对于GPT,可以询问一些Java编程知识或设计模式的问题,以帮助更好地理解源码。提出问题: 在阅读源码时,有针对性地提出问题,例如询问某个类或方法的作用、某个设计模式在代码中的应用等。通过与GPT的互动,了解代码的功能和结构。

2023-12-02 20:51:39 220

原创 Future & CompletionService & CompletetableFuture

主要是看等待时间与计算时间的比率和CPU的利用率了(默认情况下CPU的利用率是100%)OS操作系统调度(执行)CPU资源的基础单位为线程。工作线程数(线程池中线程数量)设置多少合适?OS操作系统分配CPU资源的基础单位为进程。单核CPU设定多线程是否有意义?线程数是不是设置的越大越好?线程切换也要消耗资源。

2023-11-05 15:57:50 132

原创 ElasticSearch使用

相关依赖:</</</</</</</</</</</</</</</</</</</</</</</

2023-11-04 15:00:37 272

原创 Vue2+Vue3

Vue是一个用于构建用户界面的渐进式框架。

2023-10-28 14:24:51 101

原创 Shell脚本

Shell 是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson的sh是第一种Unix Shell,Windows Explorer是一个典型的图形界面Shell。

2023-10-25 16:13:47 15

原创 多线程并发编程

进程是指运行中的程序。比如使用钉钉,浏览器,需要启动这个程序,操作系统会给这个线程分配一定的资源(占用内存资源)线程是CPU调度的基本单位,每个线程执行的都是某一个进程的代码片段。

2023-10-01 15:11:12 67

原创 计算机网络

站点前缀(Site Prefix):48bit,一般是由ISP(Internet Service Provider运营商)或RIR(Regional Internet Registry,地区性互联网注册机构)。TCP全名是(Transport Control Protocol),是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,延迟:1bit的数据从网络的1个终端传输到另一个终端需要的时间。分片,增加协议头,延迟、吞吐量、丢包率,寻址,路由。

2023-09-17 12:48:29 488

原创 Lua脚本

false(false\nil都是false), true(其他都为true,包括0)。以字母(a-z,A-Z)、下划线 开头,后面加上0个或多个 字母、下划线、数字。不要用下划线+大写字母,保留字。总结,按照正常思维命名即可。字符串和数字进行数学运算,优先将 字符串 转 成 数字。类比成java中的数组,map,链表,队列等。类似于:java当中 变量、属性名、方法名。没有任何有效值,就是一个 nil。全局变量和table。字符串用单引号或双引号来表示。用 [[可以换行的字符串 ]]双精度(8个字节)。

2023-09-12 18:15:33 496

原创 Nginx实践

Nginx是一个高性能的Web服务器和反向代理的软件。Web服务器:就是运行我们web服务的容器,提供web功能,还有tomcat也提供类似的功能。代理是软件架构和网络设计中,非常重要的一个概念。有两种代理:正向代理和反向代理。

2023-09-10 01:40:43 102

原创 自动化监控系统Prometheus&Grafana

Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,

2023-09-07 00:03:34 504

原创 Docker 使用

Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用 Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。Docker的优点如下:1、简化程序Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。

2023-09-04 22:15:08 1540 2

原创 Canal使用

Canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x。

2023-09-02 17:53:52 171

原创 电商项目part10 高并发缓存实战

但是这个方案会有一个缺点就是会对业务代码造成大量的侵入,深深的耦合在一起,所以这时会有一个更好的优化方案,对 Mysql 数据库更新操作后再 binlog 日志中我们都能够找到相应的操作,那么可以订阅 Mysql 数据库的 binlog 日志对缓存进行操作。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。这个问题,在删除缓存类的方案都是存在的,那么此时再读取缓存的时候每次都是错误的数据了。这个方案也我们一般不考虑,原因跟第一个一样,数据库更新成功了,缓存更新失败,同样。

2023-09-02 16:05:46 1917

原创 电商项目part09 分布式事务Seata&MQ可靠消息

若Producer本地事务执行成功则自动向MQ Server发送commit消息,MQ Server接收到commit消息后将消费消息,消费成功则向MQ回应ack,否则将重复接收消息。在RocketMQ 4.3后实现了完整的事务消息,实际上其实是对本地消息表的一个封装,将本地消息表移动到了MQ内部,解决Producer端的消息发送与本地事务执行的原子性问题。以上主干流程已由RocketMQ实现,只需要分别实现本地事务执行以及本地事务回查方法,因此只需关注本地事务的执行状态即可。这就涉及到到了分布式事务,

2023-09-01 19:32:31 329

原创 电商项目part07 订单系统的设计与海量数据处理

把使用单机 MySQL 的系统升级为读写分离的多实例架构非常容易,一般不需要修改系统的业务逻辑,只需要简单修改 DAO (Data Access Object,一般指应用程序中负责访问数据库的抽象层)层的代码,把对数据库的读写请求分开,请求不同的 MySQL 实例就可以了。,使用分离组件的方式。除了访问 MySQL 的并发问题,还要解决海量数据的问题,很多的时候,会使用分布式的存储集群,因为 MySQI 本质上是一个单机数据库,所以很多场景下,其并不适合存储 TB 级别以上的数据。

2023-08-26 20:54:51 186

原创 电商项目part06 微服务网关整合OAuth2.0授权中心

为OAuth2.0的资源服务器角色,实现接入客户端权限拦截、令牌解析并转发当前登录用户信息给微。-keystore D:/jwt/jwt.jks(指定生成证书的位置和证书名称)(2)将用户信息存储进当前线程上下文(有利于后续业务逻辑随时获取当前用户信息)//4. 校验通过后,从token中获取的用户登录信息存储到请求头中。(2)令牌解析并转发当前登录用户信息(明文token)给微服务。// 拿到token后,通过公钥(需要从授权服务获取公钥)校验。//1.过滤不需要认证的url,比如/oauth/**

2023-08-25 01:16:29 1244

原创 电商项目part05 分布式ID服务实战

UUID(Universally Unique Identifier)的标准型式包含 32 个 16 进制数字,以连字号分为五段,形式为 8-4-4-4-12 的 36 个字符,示例:550e8400-e29b-41d4-a716-446655440000,到目前为止业界一共有 5 种方式生成UUID,详情见 IETF 发布的 UUID 规范 A Universally Unique IDentifier (UUID) URNNamespace。

2023-08-24 15:22:17 548

原创 SpringCloud Alibaba实战和源码(7)Skywalking

,,

2023-08-21 12:14:30 1020

原创 电商项目part04 微服务拆分

英文:https://martinfowler.com/articles/microservices.html中文:http://blog.cuicc.com/blog/2015/07/22/microservices。

2023-08-20 20:56:25 823 2

原创 Dubbo使用

【代码】Dubbo使用。

2023-08-19 23:22:30 123

空空如也

空空如也

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

TA关注的人

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