- 博客(25)
- 收藏
- 关注
原创 Android实现Socket通信
我在Android端对接后端Socket服务实现消息模块的时候,使用WebSocketClient 库,手动构造了订阅和发送消息的 STOMP 帧,,Socket连接成功建立,但是当用户发送消息的时候,对方无法接受到。然后我Web端使用了成熟的 STOMP 库(Stomp.over 和 SockJS),所有接口测试通过。失败案例抓包数据:成功案例抓包数据:web端的代码使用了成熟的 STOMP 库(Stomp.over 和 SockJS),它在建立连接时会自动发送 CONNECT 帧,完成 STOMP
2025-03-11 13:09:20
1073
原创 Centos磁盘扩容
文件系统的磁盘使用率都达到了 96%,可用空间仅剩下 890M,这很可能就是导致 RocketMQ 出现。,并且使用VMware对磁盘进行碎片化整理,然后重新进入系统查看磁盘使用情况,依旧没有效果。再次查看磁盘使用情况,使用率下降了2%。没有多大效果,然后我进入系统,删除了不需要的日志。根据文件系统类型,使用相应的命令调整文件系统大小以使用新分配的空间。然后我先停止了docker中不运行的 ES,和kibana两个容器,并删除。命令查看磁盘空间使用情况,确认根文件系统。命令将新的物理卷添加到现有的卷组。
2025-03-11 00:13:56
498
原创 Java后端开发 ”Bug“ 分享——订单与优惠卷
故事的开始源于公司新上线的一项促销活动——在用户未使用优惠券时,系统会自动赠送一张优惠券。这个功能不仅能提升用户体验,还能拉动平台的销售额。为了赶上活动上线时间,组长将这项任务交给了刚转正的开发小张。小张心中既紧张又兴奋,立刻投入工作。经过一夜的奋战,当晚,他就提交了代码,并信心满满地对组长说:“放心吧,功能已经写好,测试通过,没有任何问题!”小张对自己的代码很满意,认为加锁和状态校验都已经足够周全。在他的测试环境里,功能表现一切正常,组长也批准了代码上线。
2024-12-26 23:06:21
810
2
原创 MySQL-锁
next-key lock 是包含间隙锁+记录锁的,如果一个事务获取了 X 型的 next-key lock,那么另外一个事务在获取相同范围的 X 型的 next-key lock 时,是会被阻塞的。当一个事务对一条记录加了 X 型记录锁后,其他事务既不可以对该记录加 S 型记录锁(S 型与 X 锁不兼容),也不可以对该记录加 X 型记录锁(X 型与 X 锁不兼容)。虽然相同范围的间隙锁是多个事务相互兼容的,但对于记录锁,我们是要考虑 X 型与 S 型关系,X 型的记录锁与 X 型的记录锁是冲突的。
2024-10-23 16:11:52
840
1
原创 MySQL-事务
MVCC多版本并发控制,作用就是对不同事务隔离级别生成不同的ReadView,来解决并发带来的事务问题.事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。事务操作前和操作后,数据满足完整性约束,数据库保持一致性状态。对未提交的事务中的数据进行修改, 事务最终提交,导致写失效.原子性 : 事务执行过程中,要么全部成功,要么全部失败。在一个事务内多次读取同一个数据,数据值不同.多个事务同时使用相同的数据时,不会相互干扰。读取未提交事务中的数据,就是脏数据.
2024-10-23 16:10:53
674
原创 MySQL-日志
redolog是物理日志,记录了某个数据页做了什么修改.事务提交,先将redolog持久化到磁盘,可以不需要等到缓存在BufferPool里的脏数据持久化到磁盘.当系统崩溃的时候,虽然脏数据页没有变化,但是redolog已经持久化了,MySQL重启后就会根据redoLog将数据恢复到最新状态.
2024-10-23 16:09:58
369
原创 MySQL-索引
索引是用来帮助存储引擎快速检索数据的一种数据结构;索引可以被称为数据的目录。在InnoDB中,数据是通过聚簇索引存储的,其他字段构成的索引是非聚簇索引存储的是主键的值。在MyISAM中,是非聚簇索引存储数据的地址,进而检索数据。Count(*)=Count(1)<Count(主键)<Count(字段)
2024-10-23 16:09:06
542
原创 BufferPool
注意: 我们写SQL时对应表 + 行,在MySQL内部是表空间 + 数据页。当我们操作增删改数据时,首先通过 “表空间号 + 数据页号” 作为key 去数据页缓存哈希表查一下,如果有说明已经缓存了,如果没有就读取数据页。读取数据页时:从free链表找到一个空闲的缓存页,从磁盘读取数据页到缓存页,写入描述数据,从free链表移除这个描述数据块。
2024-10-23 16:08:14
945
原创 并发编程的艺术
signal()方法会唤醒等待队列中等待时间最长的节点,调用该方法的前置条件也是先获取到了锁,然后找到等待队列的首节点,将其加入到同步队列,然后使用LockSupport方法唤醒,进而调用同步器的acquireQueued()加入到获取同步状态的竞争.当线程成功获取到锁,才可以调用await()方法,该线程将会释放锁,并且构造成节点加入等待队列的尾部,加入尾部的时候不需要CAS保证,因为调用await()的前置条件是获取到锁,线程是安全的.释放锁后唤醒同步队列的后继节点;
2024-10-18 16:27:57
1076
原创 实习-笔记(1)
在服务调用的时候,出现网络阻塞/异常,数据库宕机等情况导致的数据不同步问题,防止用户会看到脏数据,使用定时补偿机制,同步南北系统已删除数据.: 首先查询南北系统的所有数据的key,按照规则转换成用友系统中数据的key,然后查询用友系统所有数据的key,进行比对,找出用友系统数据状态为待办,并且在南北系统数据不存在的数据,进行删除.在ForkJoin的分治任务中, 我们循环遍历LinkedList,与HashMap进行比对,如果map中不存在key为list该元素,那么就删除,如果有,就添加.
2024-04-14 14:56:15
814
3
原创 MySQL 有哪些日志
我们知道 redo log 是为了防止 Buffer Pool 中的脏页丢失而设计的,那么如果随着系统运行,Buffer Pool 的脏页刷新到了磁盘中,那么 redo log 对应的记录也就没用了,这时候我们擦除这些旧记录,以腾出空间记录新的更新操作。所以 InnoDB 存储引擎会先写 ib_logfile0 文件,当 ib_logfile0 文件被写满的时候,会切换至 ib_logfile1 文件,当 ib_logfile1 文件也被写满时,会切换回 ib_logfile0 文件。
2024-02-28 09:13:16
877
原创 数据库分库分表
将存放在单一数据库中的数据,按照某一维度分散地存放至多个数据库或者表中。 达到提升性能瓶颈,以及可用性的效果。**分库:**分库能够用于有效的分散对数据库单点的访问。**分表:**分表虽然无法缓解数据库压力,但却能够提供尽量将分布式事务转化为本地事务的可能,一旦涉及跨库的更新操作,分布式事务往往会使问题变复杂。**多主多从:**使用多主多从的分片方式,可以有效的避免数据单点,从而提升数据架构的可用性。
2024-01-28 22:29:40
433
1
原创 分布式Id-雪花算法
简单说就是时间被调整回到了之前的时间,由于雪花算法重度依赖机器的当前时间,所以一旦发生时间回拨,将有可能导致生成的 ID 可能与此前已经生成的某个 ID 重复(前提是刚好在同一毫秒生成 ID 时序列号也刚好一致),这就是雪花算法最经常讨论的问题——时间回拨。在雪花算法原本的实现中,针对这种问题,算法本身只是返回错误,由应用另行决定处理逻辑,如果是在一个并发不高或者请求量不大的业务系统中,错误等待或者重试的策略问题不大,但是如果是在一个高并发的系统中,这种策略显得过于粗暴。同一毫秒时间戳时,通过这个。
2024-01-25 19:11:39
378
原创 MySQL 索引特性-索引覆盖 索引下推 索引跳跃
*回表查询:**在使用非聚簇索引的时候,为了取到完整的数据,先在查询字段的非聚簇索引下找到对应的主键,然后带着主键去聚簇索引中查询。(扫描了两棵索引树,所以效率相对低)**索引覆盖:**就是查询的所有字段,均被所使用的索引覆盖。因为索引中已经包含了要查询的字段的值,因此查询的时候直接返回索引中的字段值就可以,不需要再次回表查询,提高查询效率。例如:表中索引为 (a,b)使用非聚簇索引找到符合a=1的数据,直接将a,b值合并返回;不需要回表查询。
2024-01-14 18:43:44
954
1
原创 JUC-Synchronized
这种切换会消耗大量资源,因为用户态和内核态都各自有各自专用的内存空间,寄存器等,用户态切换至内核态需要传递许多变量,参数给内核,内核也需要保护好用户态在切换时,一些寄存器值,变量等。以便内核态调用结束后切换回用户态。
2024-01-13 10:47:13
876
1
原创 JUC-Volatile
术语单词描述内存屏障是一组处理器的指令,用于实现对内存操作的顺序限制缓冲行cache lineCPU告诉缓存中可以分配的最小存储单位,处理器填写缓存行的时候会加载整个缓存行。原子操作不可中断的一个或者一系列操作。缓存行填充CPU从内存读取操作数是可以缓存的,读取整个高速缓存行到适当的缓存。缓存命中cache hit进行高速缓存行填充操作的内存位置,是下一次处理器访问的地址,处理器从缓存中读取操作数,而不是从内存中读取。写命中write hit。
2024-01-11 09:38:08
905
1
原创 决策树---红酒分类
from sklearn import treefrom sklearn.datasets import load_winefrom sklearn.model_selection import train_test_splitimport pandas as pd#加载数据集wine=load_wine()#如果wine是一张表,应该长这样:print(wine.data.shape,wine.target)#打印数据的维度,lables类别pd_wine=pd.concat([pd.Da
2022-04-07 17:19:45
2606
原创 机器学习-线性回归
线性回归线性回归,又名普通最小二乘法,是回归问题最简单也是最经典的回归方法文章目录线性回归1.使用numpy线性回归1.1拟合直线1.2高阶多项式拟合曲线2.使用sklearn进行回归2.1拟合直线2.2 拟合曲线1.使用numpy线性回归(1)函数:p = polyfit(x,y,n)x是已知的离散数据点的横坐标,y是已知离散数据点的纵坐标,n为需要拟合的多项式最高次幂,由我们给定,运用不同的多项式进行拟合.p = polyfit(x,y,n)返回值p从左到右是高次到低次的多项式p(x)的系
2022-02-20 17:26:33
1049
原创 用python计算偏导数
偏导数文章目录偏导数1.偏导数的概念2.用python求简单的偏导数2.1 需要导入的库2.2 代码如果要计算具体的数值话就使用subs()函数来替换未知数.1.偏导数的概念2.用python求简单的偏导数2.1 需要导入的库from sympy import symbols, diffPython sympy的一大优点在于免费且开源,可以通过pip在线安装。它不依赖于外部库。SymPy支持符号计算、高精度计算、模式匹配、绘图、解方程、微积分、组合数学、离散 数学、几何学、概率与统计、物
2022-02-12 22:51:39
13133
5
原创 Matplotlib绘图基础详细教程
Matplotlib数据可视化文章目录Matplotlib数据可视化1. 画图的基本步骤1.1一步一步看3.散点图条形图的绘制plt是最常用的接口1. 画图的基本步骤1.导入模块import matplotlib as mplimport matplotlib.pyplot as plt2.创建画板,然后对画板进行调整3.定义数据4.绘制图形(包含坐标轴的设置,数据的导入,线条的样式,颜色,还有标题,图例,等等)5.plt.show()...1.1一步一步看(一)第一步:创
2022-02-10 22:13:26
16690
7
原创 大一期末C/C++基于EasyX图形库的期末课设
忙完了大一课设,就赶忙来写一篇博客,希望能对你们有用.文章目录忙完了大一课设,就赶忙来写一篇博客,希望能对你们有用.项目灵感:游戏玩法:难点:1.圣诞老人的睁眼闭眼2.人物的移动3.判断袜子与人物相撞4.鼠标操作4.游戏音乐加载5. 我的头文件6. 透明背景贴图的工具(不用做掩码图啦!!!!!!)7.其他判断游戏失败成功,袜子的移动,等等杂七杂八的就不一一解释了,直接给你们放我的代码8.这个是我的图片素材有什么问题,后续会补充,评论区问.先来大致了解一下我的游戏下图是游戏主界面的样子点击开始游戏
2022-01-22 14:31:03
4208
6
原创 Pandas数据分析
Pandas学习(一).前言:Pandas是建立在Numpy数据结构上的,尤其时它的Series 和Dataframe对象,为数据科学家们处理那些消耗大量时间的"数据清理"任务提供了捷径.下面我将重点介绍Series ,Dataframe和其他数据结构的高效使用方法.(二).Pandas的安装:在安装Pandas之前首相要确保你已经安装了Numpy,详细的安装方法,请参考Pandas官方文档(http://pandas.pydata.org/).(三).Pandas对象简介:三个基本数据结构:
2022-01-20 23:46:51
2313
数学建模 机器学习算法 时间序列预测
2023-05-30
五一杯 数学建模 本文的创新之处在于,综合考虑了多种预测方法和最新数据,比较时间序列算法和ARMA和LSTM神经网络
2023-05-30
2022年亚太杯数学建模C题论文
2022-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人