微服务学习笔记
本篇文章讨论了微服务相关知识,包括单体架构与微服务架构的特点、微服务拆分方法、服务调用、注册与发现、以及 OpenFeign 的使用等内容。关键要点包括:
微服务的
什么是微服务单体架构整个项目的所有功能模块都在一个工程中开发,项目部署时需要对所有模块一起编译、打包。如下图所示:
优点:当项目规模较小时,这种模式上手快,部署、运维都很方便。
缺点:
团队协作成本高
系统发布效率差:任何模块变更时都需要发布整个系统,而且模块之间耦合、制约比较多,修改一个模块需要对比多个其他模块,导致发布效率很差。
系统可用性差:单体架构各个功能模块会作为一个服务部署,相互之间会影响,一些热点服务会耗尽系统资源,导致其他服务低可用。
微服务架构微服务架构是一种软件设计模式,通过将大型单体应用拆分成多个独立的小型服务,每个服务专注特定的业务功能。这种架构旨在提高系统的灵活性、可扩展性和可维护性。它满足以下核心要点:
单一职责:一个服务负责一部分业务功能,其核心数据不依赖于其他模块
团队自治:每个微服务有自己独立的开发、测试、发布、运维人员
服务自治:每个微服务独立部署,访问自己独立的数据库。同时 ...
Weekly#6&7: 真不知道起什么标题
现在的我才慢慢意识到,健康 > 家人 > 事业。
以前我很纠结一个点,我代码快要完成了,还差一点,可能再工作半小时就能完成,但此时身体又有点劳累,是直接去休息还是再投入半小时去完成工作呢。以前我基本都是再搞半小时,实在不行再去休息,心里抱着一个侥幸的心理,要是能一次性做好就不用留到后面再做了。但事实上往往完成不了,当你越迫切的想做成它,反而会适得其反,身体还受损了,得不偿失。自从我深刻体会到健康是第一位的道理后,我再遇到上述情况,我会二话不说去休息,等身体恢复之后再去投入工作,而此时的效率往往会比拖着疲惫的身体和不甘的心理去做的效率要高。
工作(10.19~11.5)本周工作:
完成了14种密码算子的开发,另外1种密码算子其实应该也没问题,就等师兄后面跑通100这种类型模式的算子验证一下就可以了。
结束了Spring Cloud 微服务 day3的学习, day04 差40分钟教学视频全部学习完成。
Hot100 完成了28道,这两周完成了7道左右。刷这些算法题时间很零散,后续要集中一下,这样提高才会明显。
花了两个早上和两个下午读了一篇课程汇报需要的论文,标题名字《S ...
Weekly#5: 忙碌的一周
即使一段重要的亲密关系终结,我们也往往能找到替代的伴侣(虽然新人和旧人爱可能有很大不同),并且新伴侣也仍然能满足我们的归属需要。
所以对于失恋的朋友我要说,没有什么非你不可。莫泊桑在《月光》中写到,“我们所爱的,常常不是一个人,而是爱情本身”。
工作10.12~10.24,完成了10种密码模式的开发。其实还有两个有点小bug。
22号进行了组会汇报,复盘下来,我存在几个问题:1,语速时快时慢,逻辑稍微有些混乱,表达能力有待提高。目前每天在跟读训练,并尝试采用“自己讲给自己听”的模式锻炼;2,PPT流程图画的太慢,已经学了 draw.io 的绘图教程,大大提升了绘图效率。
微服务第3天课程终于收尾。
Leetcode 依旧一题没做,理由是时间不够。例如昨晚,7点回宿舍,看衣服花了太多时间,太难选,选不到自己喜欢且合适的。原定的晚上的每日一题和周报都没时间去做,周报拖到今天才写。解决办法是,尝试早起?🤣虽然感觉不太可能。
前段时间,大概天气未变冷时,1点~2点入睡,8点20分能起床。这几天,1 ~ 2 点入睡,9点才能起床。查了一下,是生物钟与光照的关联的原因。天气变冷后,
同样的8 ...
Weely#4: 对恋爱和爱情的看法
人和人刚认识的时候最好,热情而虚伪,新鲜而又浪漫
工作
终于完成了1种密码模式的开发,有了经验后,后续9种的开发应该会很快。
刷了几道leetcode,后续还是要跟上来,不能堆积到最后。
下周的任务是完成9种密码模式的开发、hot100刷7道左右、有时间把SpringCloud day3收尾了。
我对恋爱和爱情的看法先说结论:谈一场有结果的恋爱很难、体验一次真正的爱情更是几乎不可能。不是我过于悲观,而是现实就是这样。
如何找对象讨论这点的前提是要有对象,因此先简单罗列一下找对象的方法。仅限于我知道的。
走在路上被女生要微信。
网络上,诸如小红书、抖音、各种交友软件、相亲软件等。
大街上、校园里、教室、图书馆、教室、社团、各种活动中去加微信。
朋友、同学、实验室同门、甚至父母介绍。
从1到4,我认为能找到对象的概率依次变大,也仅限于找到对象,不保证能有一段有结果的恋爱。
第一点,除非你是吴彦祖、彭于晏,否则诸位想想得了。
第二点,不建议。网络上真是鱼龙混杂的,各种妖魔鬼怪都有。我们无法知道对方信息的真假、无法确定这个人是好是坏。而且,根据我的观察和经历,遇到渣女的概率很大,遇到 ...
Weekly#3: 国庆小长假
夜晚的景色,荫马塘、超算、研究楼路口
工作这周主要做了两件事。
第一是对密码软件开发的流程进行了熟悉,在本地跑通并验证了正确性,下一步就是开发10种密码函数了。虽然这需要用超算的平台,但是我还没有账号。
第二是MybatisPlus的学习。
1,掌握了 MybatisPlus 的基本操作,包括条件构造器,自定义 SQL,Mapper 层和 Service 层方法的使用,能够使用 MP 进行 CRUD 以及复杂语句的编写。其中最重要的是要能使用 Lambda 功能简化复杂的查询以及更新功能。
2,MP 扩展功能:静态工具 Db ,用来解决 Service 层循环调用出现的循环依赖问题。MP 的枚举处理器,用来解决枚举类型和数据库类型不能自动转换的问题。MP 的 JSON 类型处理器,用来解决 Java 中特殊字段类型与数据库类型转换的问题。以及代码生成和逻辑删除。
3,MP 插件功能。分页插件的配置以及常用的 API 。并且开发了通用的分页实体,以及对工具类进行了封装,方便以后的各个服务的调用。其中分页插件常用 API 其实就两个,如下:
1234567int pageNo = 1 ...
Weekly#2:研究生生活初体验
落日、海面、大桥、飞机,令人向往的场景
工作第一项,熟悉了密码分析软件的整体流程和框架,对每个模块的功能有了大概了解。
第二项,学习了 Mybatis-Plus 的使用,Stream 流的使用,Java 中的方法引用。由于开学空闲时间较少,力扣除了每日一题,基本不刷题了。选了五门选修课,听下来没什么帮助,纯粹浪费时间。
研究生初体验体验了一周,很复杂的感受(其实删除了很多的感受)。每天大体的生活就是教室、工位、宿舍三点来回切换。体会最深刻的有两方面。
一是体会到研究生和本科生在时间分配上的区别。本科的时间很自由,除了上课,剩下的时间完全由自己支配。研究生呢,由于每天要坐班,持续的做组里的项目,研二估计还要读论文,自己可支配的时间就大幅减少了。这就造成一个很严重的问题,自己只有很少的时间去做自己的事情。目前的解决办法是:提高自己的工作效率,争取更多的时间来做自己的事情。
二是感觉研究生比本科生更累。这几天每天回到宿舍,都处于很累的状态。感觉每天做的事情也不是很多,为什么还是很累呢?是还没有适应研究生的生活吗?还是其他原因。不清楚。再体验一周再进行分析。
阅读
第一次看到这句话是在 ...
Weekly#1:开学了
人生第一辆车由于本科四年一直没有买电动车,饱受砖头一样重的电脑和适配器的折磨,因此一开学我就有了买电动车的打算。一开始是打算收二手的,但是前前后后看了好几个都不太满意,最终决定买一辆新车。
买二手电动车的经历:
第一个车子,糟糕的车子。外观很破旧,续航也一般,只有12公里左右。我问他什么时候买的,他说23年购入的。向他索要购买凭据和付款记录,他说时间太久找不到了。我问他多少钱出?他说900,我砍价说700,他没有怎么还价,直接答应了。这里我感受到了不对劲。一般来说,学生出售二手电动车还价的幅度一般在100左右,但是他直接给我少要了200。事出反常必有妖。我又仔细观察了他的电动车,车子的外观看起来很破旧,不像是23年新买的,反倒像是买了好几年了。加上他一直找不到当时的购买记录,我怀疑他是二手买进的,现在想二手出售,想坑人。于是,我放弃了这个车子。
第二个车子,坦白的讲,这个车子外观和质量都很不错,我也很喜欢,但最后因为价格方面没有谈拢就不了了之。车子也是23年购入的,车子外观看起来很新,车主出示了购买记录,也出示了电瓶的型号,是42V12Ah。车主说中间还换过一次电机,花了好几百。其中电 ...
Java基础语法
String类常用方法速查:12345678910111. char charAt(int index)2. boolean contains(CharSequence chars)3. int length()4. String[] split(String regex) 根据匹配给定的正则表达式拆分此字符串5. char[] toCharArray()6. String toLowerCase()7. String toUpperCase()8. boolean isEmpty()9. String substring(int beginIndex, [int endIndex])10. int indexOf(int ch, [int fromIndex]) // ch字符,Unicode 编码。11. String[] split(String regex, [int limit]) // 匹配给定的正则表达式拆分字符串,返回字符串数组。注意,.、$、|、* 等转义字符,必须得加\\。
Character类常用方法速查:调用格式:形如Characater.toString(& ...
3676碗子数组的数目
Problem: 3676. 碗子数组的数目
思路
这道题是739.每日温度的变形。在每日温度中,我们维护了一个单调递减栈。当前元素大于栈顶元素时,不断弹出栈顶元素,直到当前元素不再大于栈顶元素。弹出的过程中,记录答案。
回归这道题目,要求解满足 min(nums[l],nums[r])>max(nums[l+1],…,nums[r−1])min(nums[l], nums[r]) > max(nums[l + 1], …, nums[r - 1])min(nums[l],nums[r])>max(nums[l+1],…,nums[r−1]) 条件的子数组数量。lll 和 r r r 是左右两个边界。因为我们不知道左右边界哪个大,哪个小,因此需要分情况讨论,这样就能避免比较左右边界大小的问题:
当nums[l]<nums[r]nums[l]<nums[r]nums[l]<nums[r]时,min(nums[l],nums[r])=nums[l]min(nums[l], nums[r])=nums[l]min(nums[l], ...
3495使数组元素变为零的最小操作次数
https://leetcode.cn/problems/minimum-operations-to-make-array-elements-zero/solutions/3774178/da-biao-fa-by-dzcgi6z0qk-pcda
打表法:table里面存入1~1e9中4的倍数。求[r,l]之间需要操作的次数等价于求[1,r]减去[1,l-1]操作的次数。
12345678910111213141516171819202122232425262728293031323334class Solution { public long minOperations(int[][] queries) { long[] table = {1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824}; int n = queries.length; ...
