Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
去糖冰美式
doc
提交
e9c62cae
doc
项目概览
去糖冰美式
/
doc
与 Fork 源项目一致
Fork自
KnowledgePlanet / doc
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
doc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e9c62cae
编写于
7月 06, 2021
作者:
小傅哥
⛹
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update README.md
上级
20b35b37
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
42 addition
and
0 deletion
+42
-0
notes/读者提问/README.md
notes/读者提问/README.md
+42
-0
未找到文件。
notes/读者提问/README.md
浏览文件 @
e9c62cae
...
...
@@ -63,3 +63,45 @@
3.
关于全链路监控的学习,可以参考以下内容:
3.
1 pinpoint:https://github.com/pinpoint-apm/pinpoint
3.
2 bee-apm:https://github.com/itstack-org/bee-apm
---
傅哥 您好 想问一下MESA管程模型设计成两个队列的用意是什么 如果只有一个入口队列不行吗?这个模型套在AQS上好像也一样。AQS也是两个队列 同步队列还是可以理解的 但是AQS多设计一个等待队列的意义是什么也不太懂
AQS:
* +------+ prev +-----+ +-----+
* head | | <---- | | <---- | | tail
* +------+ +-----+ +-----+
1.
AbstractQueuedSynchronizer 从名字上就可看出本质是一个队列(Queue),其内部维护着 FIFO 的双向队列,也就是变体 CLH 队列的实现。
2.
所有的 Lock 都是基于 AQS 来实现了。AQS 和 Condition 各自维护了不同的队列,在使用 lock 和 conditio n的时候,其实就是两个队列的互相移动。那么你说的两个队列,只的是 Condition 队列吗?
管程(新了解内容,以前没注意过):
1.
管程就是指管理共享变量,以及对共享变量的相关操作。具体到 Java 语言中,管程就是管理类的成员变量和方法,让这个类是线程安全的。管程的发展史中,先后出现过三种管程模型,Hasen 模型、Hoare 模型和 MESA 模型,Java 使用的是 MESA 模型。
2.
使用管程模型主要是解决并发编程中的两个核心问题,互斥和同步。互斥是指同一时刻只允许一个线程访问共享资源,同步则是指线程之间如何通信、写作。
3.
解决互斥:将共享变量及对共享变量的操作统一封装起来
4.
解决同步:管程模型与上厕所排队的流程类似,管程入口处有一个等待队列。当多个线程试图进入管程内部的时候,只允许一个线程进入,其他线程在等待队列中等待。就和上厕所的时候排队一样。
综上:一般此类实现除了消费队列,还需有等待队列,以便于实现 Lock 相关内容。推荐阅读:《Java并发编程实践》 不确定以上是否为你需要的,可以回复讨论。
---
微服务应用之间调用接口,如何控制权限?
1.
通过在微服务 RPC 接口或者网关层接口,配置权限校验组件,这类组件一般是自研的。通过校验组件设置接口调用权限码,调用时需要传一个固定的分配值。
2.
指定服务器名称、服务器IP,进行调用,非此信息以外的服务不能被链接调用。
3.
通过开发接口间非对称加密传输安全校验的,一般用在双方为安全级别较高的接口调用上。
4.
接口自由度较高的申请获取字段查询,申请时候会分配一个有效签约期的授权码,拿到授权码后,可以调用指定接口。
---
小傅哥,这是我按你昨天说的整理的目前项目的技术栈和想要学的技术栈。期待你的建议。
从目前你的技术使用上来看,其实广度是有的,只是缺少一些深度的学习和使用。建议:
第一阶段:学习下数据结构、算法逻辑(仅Jdk自身的即可,HashMap、ArrayList、AQS等来夯实java能力)、设计模式,这些技术是后续的学习其他技术的基础。
第二阶段:学习 MyBatis 源码,至少要能搞懂“为什么,不写具体的DAO实现类,就能通过配置文件或者注解执行对数据库的增删改查操作”,这个知识会让你把Spring常用接口和类串联起来,也可以把代理、反射、解析xml、连接池使用上。
第三阶段:学习 Spring 源码,学习完成后尝试结合 Spring 写一些中间件,比如数据库路由组件、ES查询引擎组件,这些在我写的《SpringBoot中间件设计和开发》中都有例子。
第四阶段:补充对 MQ、SpringCloud、ES 等框架类的深入学习,要学习它的设计架构、核心源码、技术目的、使用场景。
第五阶段:完成较难度项目的开发,比如实现一个分布式架构下的活动抽奖系统,如何设计其中的秒杀、抽奖算法、奖品发放,这个项目可以模拟小程序中一些抽奖的设计去实现。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录