- 博客(21)
- 收藏
- 关注
原创 zk相关问题
ZooKeeper踩坑点如果说要选出应用开发者在使用ZooKeeper的过程中,最需要了解清楚的事情?那么根据我们之前的支持经验,一定是异常处理。当所有一切(宿主机,磁盘,网络等等)都很幸运的正常工作的时候,应用与ZooKeeper可能也会运行的很好,但不幸的是,我们整天会面对各种意外,而且这遵循墨菲定律,意料之外的坏事情总是在你最担心的时候发生。所以务必仔细了解 ZooKeeper 在一些场景下会出现的异常和错误,确保您正确的理解了这些异常和错误,以及知道您的应用如何正确的处理这些情况。异常处理
2022-02-10 21:31:22
1350
原创 RocketMQ的Rebalance机制
Rebalance机制本意是为了提升消息的并行处理能力。例如,一个Topic下5个队列,在只有1个消费者的情况下,那么这个消费者将负责处理这5个队列的消息。如果此时我们增加一个消费者,那么可以给其中一个消费者分配2个队列,给另一个分配3个队列,从而提升消息的并行处理能力。Rebalance限制由于一个队列最多分配给一个消费者,因此当某个消费者组下的消费者实例数量大于队列的数量时,多余的消费者实例将分配不到任何队列Rebalance危害消费暂停:考虑在只有Consumer 1的情况下,其负责消费所有5
2022-01-16 13:35:12
1423
原创 Mysql 相关概念
1、一条更新语句在 MySQL 中是怎样处理的?更新内存和redo log,MySQL 将寻找机会将 redo log 刷新到磁盘上。2、什么是 MySQL 的脏页?当内存数据页和磁盘数据页不一致的时候,我们称这个数据页为脏页,当内存数据页刷新到磁盘后,这个也叫做干净页。2、MySQL什么时候会刷 redo log 的脏页到磁盘上呢?四种情况:1、redo log 满了,先暂停所有更新操作,redo log 将checkpiont向前推进一段,然后刷新脏页。2、内存不足,当申请新的数据页的时候
2021-06-12 11:50:52
176
原创 枚举是怎么实现的
公司新人串讲时候,大佬提问我枚举如何实现,说实话,我蒙了。我把梳理出来的公司wiki放在csdn上枚举是一种特殊类枚举是一种特殊类。枚举是有固定实例个数的类型,我们可以把枚举理解成有固定个数实例的多例模式,当一个方法接收的参数是固定范围之内的时候,那么即可使用枚举。这里是引用反编译的枚举字段枚举成员变量枚举编译执行时,定义的变量其实就是以常量的形式执行,枚举中定义的变量其实就是常量。我们再来关注枚举类中有一个静态代码块.jvm在执行加载,首先定义四个静态的枚举成员变量,在执行静态代...
2021-05-29 10:15:15
731
原创 需要注意的开发规范
开发规范(部分开发规范的学习梳理)数据库相关统一用uuid,不用子增长id尽量用char,不用varchar, uuid长度36,预留扩展空间枚举类型用tinyintmybatis尽量用Base_Column_List大表的SQL变更及时与DBA沟通select sum() 需要判断值为null的情况DAO层函数需要加@DataSource注解,master指主库,访问主库还是从由中间件决定多数据源配置数据库账号、密码加密解密通过Spring AOP配置本地事务, applic
2021-05-29 09:13:55
177
1
原创 谷粒商城实现商品的上架(数据整合迁移到ES)
写这个文章主要是为了梳理业务,理清思路,方便以后使用1.定义我们上传产品的映射这是我们对上传产品的映射信息,主要是sku表的信息和attr属性表的信息。attrs的类型是嵌套。属性表查得信息必须是可以检索的,比如我们可以在京东的搜索页面,通过选择cpu的型号进行搜索匹配。然后热点值hitscore以后完善。然后需要查询我们是否具有库存hasStock,通过各种数据的处理来进行封装。2 定义映射对象@Data/** * 本质上传输对象 实际上在product和搜索微服务都应该有该对象 *
2020-08-03 23:02:55
1340
原创 后端校验--jsr303的学习
最近看着尚硅谷最新的谷粒商城,学到新的知识,就是JSR303数据校验,知识颇多。学完之后,打算以博客的形式梳理该阶段的知识。导入jar包看了这个视频我才知道,javax包下居然有这么多的校验注解可以使用,比使用正则表达式来处理强的多,面对复杂场景有很大灵活性,减少很多代码。都在javax.validation.constraints包下另外在提一下,Url这个注解是在org.hibern...
2020-05-04 21:44:28
342
原创 实现逻辑删除的步骤 --MybatisPlus
这里写自定义目录标题逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(is_delete)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在数据库1.配置全局的逻辑删除规则 在yml文件中配置mybatis-plus:mapper-locations: classpath:/map...
2020-04-29 11:05:20
2371
原创 畅购商城作业----定时处理订单状态,使用redis延时队列 or使用计划任务类(线程池)
由于做的队列不相同,按照我的想法要使用jedis整合在springboot上,还需要做好配置文件,还有订单成功之后存储方式的问题,都需要修改。过于繁琐。我就使用下列这种方式摆脱定时器使用,当然我也不清楚他们哪个更消耗内存 while(!Thread.interrupted()) { //延时队列实现 Order redisOrder = (Ord...
2020-03-26 13:41:04
495
原创 对象的创建过程
下图便是 Java 对象的创建过程Step1:类加载检查虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否已被加载过、解析和初始化过。如果没有,那必须先执行相应的类加载过程。Step2:分配内存在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需的内存大小在类加载完成后便可确定,为对象分配空间的任务...
2020-03-26 00:04:34
203
原创 手写自选锁--阿里常问
public class SpinLockDemo { //原子引用内存 线程 AtomicReference<Thread> atomicReference=new AtomicReference<>();public void myLock(){ Thread thread = Thread.currentThread(); ; ...
2020-03-24 12:15:46
141
原创 畅购商城实现 seata事物控制的改造。
畅购商城原本实现极为繁琐,专门搭建事物的微服务进行使用。但我认为过于繁琐,查阅文档,有另外的方式,每个微服务引入依赖即可。Seata有3个基本组件:Transaction Coordinator(TC):事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚。Transaction Manager™:事务管理器,控制全局事务的边界,负责开启一个全局事务,并最终发起全局...
2020-03-24 12:05:28
321
原创 zookeeper利用模板设计模式实现分布式锁
1.实现pom文件的导入2.设置好日志输出的配置以上为基础配置,当然你的虚拟机要有配置的docker容器zookeeper。主要思想:a、在获取分布式锁的时候在locker节点下创建节点,释放锁的时候释放该节点。b、客户端调用createNode方法在path下创建临时顺序节点,然后获取该子节点,注意此时不用设置任何Watcher。c、客户端获取到所有的节点path之后,那么就认为...
2020-03-24 11:51:49
211
原创 畅购商城项目改造--redis分布式锁解决缓存击穿的问题
分布式锁主流的实现方案:基于数据库实现分布式锁基于缓存(Redis等)基于Zookeeper每一种分布式锁解决方案都有各自的优缺点:性能:redis最高可靠性:zookeeper最高但是畅购项目并没有使用zookeeper进行开发,功能由Eureka接替,我也没有在项目实现改造。下一篇文章再说利用模板设计模式实现分布式锁的问题。借助于redis中的命令setnx(key...
2020-03-24 11:21:46
338
原创 畅购商城作业-定时处理订单状态
这是我的实现代码,利用定时器,时间上可能有出入,进行redis检索。具体redis的延时队列不清楚。大四学生轻喷。。。!具体微信返回所对应的状态信息地址是https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_2...
2020-02-15 16:57:23
373
转载 畅购商城canal依赖,搭建微服务的问题
创建springboot项目引入刚安装到maven仓库的依赖出现问题视频中说好的starter-canal根本没有,视频上说这个依赖在阿里云的中央的仓库也找不到。最起码我的百度云的资料里面没有,找了好几个资料版本根本没有starter-canal。搭建微服务很可能卡下来,也就不能实现对mysql的数据监控。mysql-slave于是需要我们去GitHub上去寻找。我把链接贴出来下载http...
2020-02-03 21:19:02
2248
3
原创 idea启动Tomcat:One or more listeners failed to start报错
idea后台报错信息这种信息不够全面需要查询Tomcat日志实质问题是工程部署后在WEB-INF文件夹下没有生成lib目录,正常情况下,会生成lib目录并把工程的所有依赖jar包都部署到该目录下。(如果是用Maven进行构建的话),这是我的条件。解决方案:File->Project Structure点击左侧的Artifacts,然后找到Output Layout选项卡右键单击...
2019-11-23 20:32:11
755
原创 SpringMVC跨服务器上传图片文件,上传至文件服务器时报404错误
SpringMVC跨服务器上传文件,上传至文件服务器时报404错误这是前端报错这是目标服务器后端报错。解决方案是加入注解因为服务器会默认找这个相关映射去解决,但是上传过来的图片请求没有相关映射,如果没有作映射,就交给 WEB 应用服务器默认的 Servlet 处理,从而找到对应的静态资源,只有再找不到资源时才会报错。...
2019-11-16 15:21:19
1599
4
原创 request.getParameter()获取不到数据的问题
http协议post方式上传数据到服务端,在服务器端通过request.getInputStream()能获取到相应的数据,但用request.getParameter()却获取不到数据。request.getParameter()、request.getInputStream()、request.getReader()这三种方法是有冲突的,因为流只能被读一次。如果读取完流之后,在调用get...
2019-09-25 11:01:04
2482
原创 Access denied for user 'root'@'localhost' (using password:YES) 解决方案(根据mysql的版本)
Access denied for user ‘root’@‘localhost’ (using password:YES) 解决方案解决方案:1、打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。2、重启MySQL服务。3、在命令行中输入“mysql -uroot -p”(不输入密码),回车即可进入数据库。(以管理员身份运...
2019-09-03 11:13:27
1146
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人