摘要: synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 synchronized的四种使用方式 1. 修饰代码块:被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用于调用对象 2. 修饰方法:被修饰的方法称为同步方法,其作用的范围是整个方法, 阅读全文
posted @ 2019-10-08 08:25 全菜工程师小辉 阅读(3751) 评论(0) 推荐(2) 编辑
摘要: 这篇博客是笔者学习慕课网若鱼老师的《Java秒杀系统方案优化 高性能高并发实战》课程的学习笔记。若鱼老师授课循循善诱,讲解由浅入深,欢迎大家支持。 本文记录课程中的注意点,方便以后code review。此外,本文将注意点相关的优质讲解链接在了一起,方便初学者系统学习。 本文并非单纯介绍秒杀系统特有 阅读全文
posted @ 2019-09-27 08:56 全菜工程师小辉 阅读(919) 评论(0) 推荐(1) 编辑
摘要: 自定义注解+拦截器的优势 类似用户权限或者接口限流的需求,但并不是所有操作或者接口需要。可以使用过滤器或者拦截器,但这样就必须在配置文件里加上所有方法或者使用通配符。 所以可以采用一种比较简单灵活的方式:采用自定义注解加Spring拦截器来实现。 编写示例 例如我们现在要做个接口的计数器限流,只需要 阅读全文
posted @ 2019-09-25 07:12 全菜工程师小辉 阅读(534) 评论(0) 推荐(1) 编辑
摘要: 本文将按照声明式事务的五个特性进行介绍: 1. 事务传播机制 2. 事务隔离机制 3. 只读 4. 事务超时 5. 回滚规则 Spring事务传播机制 事务的特性 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。 一致性(Con 阅读全文
posted @ 2019-09-24 13:36 全菜工程师小辉 阅读(118486) 评论(5) 推荐(28) 编辑
摘要: 缓存由于其高并发和高性能的特性,在项目中被广泛使用。读缓存流程如下图: 双写一致性有以下三个要求: 1. 缓存不能读到脏数据 2. 缓存可能会读到过期数据,但要在可容忍时间内实现最终一致 3. 这个可容忍时间尽可能的小 要想同时满足上面三条,可以采用读请求和写请求串行化,串到一个内存队列里去,这样就 阅读全文
posted @ 2019-09-23 09:45 全菜工程师小辉 阅读(4165) 评论(1) 推荐(3) 编辑
摘要: 经历了一个PHP服务器项目,手动编译部署PHP,Swoole环境太让人郁闷了,所以尝试过两种不错的方法,分享出来方便同样经历痛苦的coder。 第一种方式: 1. 安装LNMP按照这里的步骤执行, "网址戳我" , 如果服务器原本有mysql或者nginx,最好先自行清理下。笔者的服务器原来有损坏的 阅读全文
posted @ 2019-09-20 10:58 全菜工程师小辉 阅读(493) 评论(0) 推荐(0) 编辑
摘要: 在并发编程中很容易出现并发安全问题,最简单的例子就是多线程更新变量i=1,多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的。但是由于synchronized是采用的是悲观锁策略,并不是特别高效的一种解决方案。实际上, 阅读全文
posted @ 2019-09-18 12:36 全菜工程师小辉 阅读(1203) 评论(0) 推荐(0) 编辑
摘要: Angular8正式发布了,Java13再过几个月也要发布了,技术迭代这么快,框架的复杂度越来越大,但是原理是基本不变的。所以沉下心看清代码本质很重要,这次给大家带来的是手写RPC框架。 完整代码以及说明文档, "点我跳跃~" 1. 什么是RPC? RPC是指远程过程调用,也就是说两台服务器A,B, 阅读全文
posted @ 2019-09-17 08:54 全菜工程师小辉 阅读(711) 评论(2) 推荐(1) 编辑
摘要: 有关TCP你不能不知道的三次握手和四次挥手问题, "点我跳转" 流量控制 1. 滑动窗口 数据的传送过程中很可能出现接收方来不及接收的情况,这时就需要对发送方进行控制以免数据丢失。利用滑动窗口机制可以很方便地在TCP连接上对发送方的流量进行控制。TCP的窗口单位是字节,不是报文段,发送方的发送窗口不 阅读全文
posted @ 2019-09-16 08:30 全菜工程师小辉 阅读(1201) 评论(0) 推荐(2) 编辑
摘要: TCP的整个连接过程 如果没有基础的话,直接看这张图或者网络上各种文字描述,十分生涩,所以先看懂接下来的握手挥手的图,理解之后,再看这个有限状态机就感觉原来如此简单。 三次握手 握手过程 第一次握手:主机A发送位码为syn=1,随机产生seq number=x的数据包到服务器,客户端进入SYN_SE 阅读全文
posted @ 2019-09-12 08:10 全菜工程师小辉 阅读(879) 评论(1) 推荐(1) 编辑