
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
作者因AI兴起导致技术搜索习惯改变,加之CSDN流量下滑,决定告别依赖平台,构建个人数字资产站。基于GitHub+Cloudflare Pages+Astro框架,结合ChatGPT 6.1与Kimi协作,高效完成168篇博文迁移、格式转换、评论集成与部署。新博客已上线(https://jacksparrow414.com),未来将专注维护,实现真正属于自己的技术沉淀。
文章目录数据库中间件ShardingSphere-ShardingProxy使用(一)数据分片、读写分离背景下载/配置代码中使用总结数据库中间件ShardingSphere-ShardingProxy使用(一)数据分片、读写分离背景在数据库中间件ShardingSphere-ShardingJdbc使用(一)数据分片中介绍了数据库中间件的两种代理方式,客户端代理(即数据源代理),服务端代理(代理数
平时开发中,基本使用idea进行Git的pull、statsh、commit、push、revert等操作。同时还可以将一个分支develpop合并到master上:步骤如下1、在develop上确保已经提交完毕2、切换到master分支上,pull一下3、在idea的右下角,Git那里,找到develop分支,点击develop分支,有一个merger into current选...
在微服务中,以springcloud为例,多个微服务之间通过OpenFeign的方式调用。现有微服务A、B两个,a为A中的事务方法,b是B中的事务方法,假设在A中有一个业务方法businessA,需要调用a,b来完成正常的业务流程处理。调用顺序是,执行完b--->再执行a,b事务方法正常执行,b会提交事务,数据的更改也会被记录到数据库中。在执行a的时候出现异常,a事务方法由于抛出异常...
有时候排查一些问题,避免不了要看一些Java框架的源码,和外部有网络交互功能的框架,现在基本上都使用了reactor模式。虽然看过很多文章讲解reactor模式及其相关知识,时间一长总是忘,面对源码时,还是一头雾水。所以还是彻底理解它比较好,通过自己实现一个极简socket服务器来理解。一开始用C来实现,到最后用Java实现以从底层彻底理解I/O多路复用、select、epoll、reactor等
到这里就发现问题了,主进程既要负责建立连接,又要轮询已建立的连接以检测这些连接是否有I/O事件,还要读取连接中的I/O数据,这反而比1个连接1个线程模型还要糟糕,因为代码基本回到了串行状态。还是通过read方法,如果read方法返回的是错误码是EAGAIN,那么代表此时该连接上没有I/O事件,如果read方法返回了大于0的数字,说明此连接上有I/O事件,并且主进程已经把I/O部分数据读取到了buf
这篇文章介绍了如何在Java中实现Multi-Reactor模式,基于前文C语言epoll版本的思路。主要内容包括: Java NIO核心组件:Channel、Buffer、Selector,以及Buffer的读写模式和Selector在不同操作系统下的实现(Linux-epoll、Windows-select、Mac-kqueue)。 Selector的wakeup机制:用于跨线程唤醒阻塞的se
背景:我们实际开发中,总有几张和业务相关的大表,这里的大表是指数据量巨大。如用户表、订单表,又或者公司业务中的主表,可能很快这种表的数据就达到了百万、千万、亿级别的规模,并且增长规模一直很快。这种情况下,单表已经满足不了了存储需求了,同时,这么大的数据量,即使搭配合理的索引,数据库查询也是很慢的。这时就需要对这些大表进行分库、分表。例如:user表现在数据增长很快,这时对user库、表。通过部署多
介绍了C语言中通过epoll实现Multi-Reactor 模式,这篇文章用Java实现。有了上一篇博文的知识背景,其实在Java中写起对应的代码时比较顺利的,只需要在Java中找到对应的类即可。
到这里就发现问题了,主进程既要负责建立连接,又要轮询已建立的连接以检测这些连接是否有I/O事件,还要读取连接中的I/O数据,这反而比1个连接1个线程模型还要糟糕,因为代码基本回到了串行状态。还是通过read方法,如果read方法返回的是错误码是EAGAIN,那么代表此时该连接上没有I/O事件,如果read方法返回了大于0的数字,说明此连接上有I/O事件,并且主进程已经把I/O部分数据读取到了buf







