自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 农业-大量数据在数据库中做AVG如何优化

设备每个分区3s回传一次数据一个设备有三个分区一分钟需要回传 3 * 20 = 60次一个小时 回传 60*60 = 360次一天回传 360 * 24 = 8640次。

2024-04-25 11:07:19 812

原创 G1、CMS垃圾回收期专题

非阻塞使用三色标记法初始标记、并发标记、重新标记、并发清理 (初始标记、重新标记需要stop world)

2024-04-24 20:34:51 198

原创 aqs 条件队列和同步队列、独占模式和共享模式

/ 通知消费者缓冲区有数据了。// 等待,直到缓冲区不为空。// 通知生产者缓冲区不满了。// 等待,直到缓冲区不满。将消费者放入同步阻塞队列。将生产者放入同步阻塞队列。

2024-04-24 19:19:07 175

原创 场景 - 分库分表

数据量大分表,并发大分库。

2024-04-23 20:19:35 604

原创 TransmittableThreadLocal 测试

2. 线程池内的线程脏读 (读取了上一个threadlocal保存的值)1. thradlocal传入线程池。

2024-04-21 14:53:05 170

原创 如何从线程池中取线程,运行代码

addWorker()中会创建Worker类的实例,该实例对线程池中的线程进行了包装,其实现了Runnable接口,Worker实例创建成功后会调用线程的start()方法;在Worker的run方法中通过runTask()方法执行任务,并循环通过getTask()方法获取队列中等待的任务去执行。当调用ThreadPoolExecutor的execute()方法时,会调用addWorker()方法;调用t.start这样worker中的线程就会被唤醒不断的执行run方法。

2024-04-16 14:47:58 161

原创 线程数设置为多少比较合适

但是最关键的是,现在的方法普遍不能以IO、cpu来区分,往往都是综合形势的。压测的目标,cpu负载在70%左右,看看哪种线程池配置性能最高。这个方法 综合考虑了 cpu、io密集型的情况。但是要想真正设计出好用的线程池 还是需要做压测。所以美团提供了一种可以计算线程数的方法。如果是CPU密集型 设置为N+1。如果是IO密集型 设置为2N+1。

2024-04-15 14:58:35 116

原创 场景:如何做数据清理

2. 这个子查询还检查这些行的`gmt_create`日期是否早于当前日期(`CURDATE()`)减去300天(`SUBDATE(CURDATE(),INTERVAL 300 DAY)`)。总结一下,这个SQL查询检查在`table_hollis`表中`id`介于100到100000之间的记录中,是否存在至少一个其`gmt_create`日期小于当前日期300天的记录。如果不存在,它什么也不选择。这个SQL查询的目的是从名为`table_hollis`的表中选择`id`,但它有一个特定的条件。

2024-04-13 15:02:04 205

原创 场景:sql调优

大厂现在不希望使用多表join,传统的多表join使用嵌套循环来做匹配、时间复杂度n方 n三次方。使用函数(有函数列)、做运算、最左前缀、使用or。mysql8.0可以使用hashjoin。可以强制sql语句选择走某个索引。4. 锁竞争导致的等待。sql调优有多种方案。

2024-04-12 20:24:20 66

原创 场景:一个订单在11:00超时关闭,但在11:00支付成功

定时任务不断去轮询订单表,查看退款失败的订单,进行再次退款。即便是退款的时候也要考虑到退款失败的问题。支付金额-退款金额 = 0才是合理的状态。订单关闭失败,支付成功(不合理的)使用乐观锁,更新的时候查看订单状态。订单支付成功,关闭失败(合理的)如果订单状态不对,进行退款流程。主要思考第二种情况如何解决。在订单表中增加更多配置。

2024-04-12 19:37:36 177

原创 场景:如何设计一个秒杀系统

设计一个秒杀系统需要考虑以下问题。

2024-04-12 19:23:26 353 2

原创 RPC还是HTTP

原因是HTTP协议会带着一堆无用信息。RPC是一个远程调用的通讯协议。RPC支持更多轻量级的通讯协议。这三部分只有请求体是需要的。RPC要比HTTP快一些。HTTP由三部分组成。

2024-04-09 21:08:32 428

原创 场景:数据库死锁

transno索引是前缀索引id 是聚簇索引当ab事务操作transno的前缀为相同时,会造成锁冲突事务a 锁住id = 1事务b 锁住id = 2事务a 锁住transno = 3,请求id = 2 失败此时id = 2 被b线程占有事务b 请求 transno = 3 失败此时 transno 被线程a占有此时ab事务死锁了a线程占有 id1、transno3 请求id2。

2024-04-09 19:09:12 206

原创 RabbitMQ理解

1. 简单模式生产者 -> 消费者2. 工作队列模式生产者 -> 多个消费者消息 -> 一次消费3. 发布订阅模式生产者 -> 多个消费者消息 -> 多次消费4. 路由模式生产者 -> exchange -> 多个消费者消息 -> 多次消费5. 主题模式生产者 -> exchange -> 多个消费者消息 -> 多次消费相当于特殊的路由模式,可以通过 * 来进行主题订阅:这意味着当一个消息被发送到交换机,并且它匹配了特定的路由键时,所有绑定了这个路由键的队列都会接收到这个消息。

2024-04-02 15:26:20 354

原创 微信支付jscode

申请公众号/服务号获得appid申请商户平台公众号/服务号/开放平台 与商户hao。

2024-03-21 13:32:10 309

原创 记一个maven常见问题

当maven下载到一半断网会导致 无法自动导入包。

2024-03-20 09:52:43 218 1

原创 AQS抽象的队列同步器

整体就是一个FIFO的链式队列AQS的stat表示当前资源的状态AQS的内部维护了一个内部类Nodewaitstatus的状态表示。

2023-10-23 11:51:23 60

原创 synchronized锁升级的原因

如果成功,当前线程获得锁,如果失败,表示Mark Word已经被替换成了其他线程的锁记录,说明在与其它线程竞争锁,当前线程就尝试使用自旋来获取锁。当线程执行到monitor enter指令时,会尝试获取对象所对应的Monitor所有权,如果获取到了,即获取到了锁,会在Monitor的owner中存放当前线程的id,这样它将处于锁定状态,除非退出同步块,否则其他线程无法获取到这个Monitor。如果在接下来的运行过程中,该锁没有被其他的线程访问,则持有偏向锁的线程将永远不需要触发同步。

2023-10-23 09:17:27 65

原创 JVM对象内存布局

对象标记 mark word存储hashcodegc标记回收次数类原信息 类型指针。

2023-10-22 17:08:57 49

原创 JUC并发与源码分析

Happens-before保证了,代码的逻辑顺序和jvm执行的逻辑顺序是一样的,不会发生语句错乱导致的错误。

2023-10-22 14:46:33 43

原创 供给型函数式接口Supplier

的lambda表达式重写了get方法,所以s.get执行的就是msgA+msgB。

2023-10-17 14:06:04 39

原创 JVM中篇详解Class字节码文件

class中的字节码往往是操作码+操作数这样的方式。

2023-10-09 15:20:32 40

原创 记录一个问题npm run dev卡住

每次都无法运行甚至重启都没办法解决问题。template标签下必须存在一个标签。出现这个问题的原因是。将1放入div就好了。

2023-10-09 09:52:45 225

原创 JVM上篇架构模型,内存与垃圾回收篇

1. 先通过类加载器对类进行加载,之后在进行连接,最后在进行初始化2. 从左到右分别是方法区、堆、栈帧、线程PC计数器、本地方法栈3. 执行引擎从左到右依次是 解释器 JIT编译器 垃圾回收器4. 本地方法接口和本地方法库附上全图。

2023-09-26 11:28:57 45 1

原创 Kafka Stream流式计算

日志分析- 大屏看板统计- 公交实时数据- 实时文章分值计算。

2023-09-23 20:06:18 127 1

原创 ssl-job机器地址为空,无法进行自动绑定

在进行debug启动 看看具体出现了什么问题。今天写微服务项目的时候遇到了一个bug。出现了这个错误可以debug去追一下。然后发现9999端口已经被占用。将占用9999端口的应用终止掉。执行器设置的端口是9999。执行器端口9999发生了报错。发现对9999端口进行绑定。同时无法获取执行器地址。

2023-09-23 15:49:02 42 1

原创 微服务使用feign对其他为微服务进行调用

1. 设置FeignClientvalue 指定需要调用的微服务fallback 指定熔断机制2. 设置PostMappingPostMapping 指定调取feign的路径。

2023-09-20 16:17:56 114 1

原创 Kafka消息队列入门

RabbitMQ支持事务Kafka性能高。

2023-08-09 10:59:48 118 1

原创 Zookeeper 入门

其实和nacos差不多1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。2)集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。5)数据更新原子性,一次数据更新要么成功,要么失败。

2023-08-07 09:07:34 44 1

原创 MongoDB入门

条件字段名。

2023-08-04 11:14:30 190 1

原创 SpringCloud入门

文档操作有哪些?创建文档:POST /{索引库名}/_doc/文档id { json文档 }查询文档:GET /{索引库名}/_doc/文档id删除文档:DELETE /{索引库名}/_doc/文档id修改文档:全量修改:PUT /{索引库名}/_doc/文档id { json文档 }增量修改:POST /{索引库名}/_update/文档id { "doc": {字段}}

2023-08-01 14:09:08 165 1

原创 RabbitMQ入门

1.流量消峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正 常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限 制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分 散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体 验要好。2.应用解耦 以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。

2023-07-27 14:15:15 44 1

原创 Nginx浏览器缓存

(1)用户首次通过浏览器发送请求到服务端获取数据,客户端是没有对 应的缓存,所以需要发送request请求来获取数据;成本最低的一种缓存实现 减少网络带宽消耗 降低服务器压力 减少网络延迟,加快页面打开速度 1 2 3 4(2)服务端接收到请求后,获取服务端的数据及服务端缓存的允许后, 返回200的成功状态码并且在响应头上附上对应资源以及缓存信息;(3)当用户再次访问相同资源的时候,客户端会在浏览器的缓存目录中 查找是否存在响应的缓存文件 (4)如果没有找到对应的缓存文件,则走(2)步。

2023-07-16 12:21:47 67 1

原创 Vue组件操作

混合就是复用配置,将Vue组件中共有的配置抽离出来,如果有组件需要使用配置,将混入引入就可以了使用方法:先引入再注册局部混合mixins:[a]全局混合。

2023-06-21 19:15:58 33

原创 Vue之脚手架

1. 脚手架搭建技术(如Vue-CLI、Create React App等)2. 脚手架管理工具(如Npm、Yarn等)3. 前端框架(如Vue、React、Angular等)4. CSS 预处理器(如Sass、Less等)5. JS 模块化(如CommonJS、ES6 Module等)6. 自动化构建工具(如Webpack、Gulp等)7. 测试框架(如Jest、Mocha等)8. API 开发(如Express、Koa等)

2023-06-21 15:00:41 31

原创 MyBatis-Plus快速入门

MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生,简单来说通过配置自动写sql语句内置代码生成器:采用代码或者Maven插件可以快速生成Mapper Model Service Controller支持多种数据库:Mysql Oracle等因为默认使用雪花算法,所以主键使用Bigint类型的主键id上面是通用的增删改查操作。

2023-04-22 11:02:35 58

原创 Redisson分布式锁

多个线程访问共享资源这个时候为了线程的协调访问,需要使用分布式锁线程在访问共享资源之前先需要获得一个令牌token 只有具有令牌的线程才可以访问共享资源,这个令牌才可以访问这个资源,分布式锁也是一个互斥资源,只有一个线程可以独占这个资源,其他线程只能等待,这个线程主动释放这个锁如何确定一个分布式锁独占性高可用防死锁 需要杜绝死锁 必须有超时中止机制不乱抢 不能unlock别人的锁重入性。

2023-04-19 20:06:13 772

原创 Redis 之 Lua 脚本详解

Lua 是一个由标准 C 语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚 本语言,是于 1993 年由巴西里约热内卢天主教大学的三人研究小组使用标准 C 语言开发。Lua 的官网为:https://www.lua.org/

2023-04-17 13:52:38 96

原创 Redis高并发 数据库缓存双写不一致

双写不一致 指的是redis中的数据和数据库中的数据不一致的问题。

2023-04-17 11:08:22 146

原创 Redis高并发问题 三大经典问题

一旦缓存没有,直接到数据库去查找,如果缓存不大的情况下,无伤大雅,但是当高并发场景下,大量的请求直接穿透缓存直接查询数据库。

2023-04-17 10:43:30 94

空空如也

空空如也

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

TA关注的人

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