- 博客(105)
- 收藏
- 关注
原创 【后端】消息中间件小册
Kafka Broker 是 Kafka 集群的基本单元,负责处理消息的存储、转发和管理。通过多个 Broker 组成的集群,Kafka 能够实现高吞吐量、低延迟的数据传输和高可用性。唯一订单号通过提供一个唯一的标识符来识别每个订单,使得系统能够检测并避免重复处理同一个订单。结合去重机制和幂等性操作,能够有效地保证消息处理的幂等性,防止数据不一致和重复操作。Kafka 通过将消息按分区存储和保证分区内消息的顺序来维持消息的顺序性。生产者的分区策略确保具有相同分区键的消息按顺序存储,消费者按照顺序读取消息。
2024-08-07 16:14:23
1103
原创 【NoSQL数据库】Redis知识小册
Redis 集群模式是 Redis 提供的分布式架构,允许数据在多个 Redis 节点之间分布。集群模式通过数据分片将数据分布到多个 Redis 实例上,每个节点负责部分数据,并且集群模式提供了自动故障转移和负载均衡的能力。Redis 哨兵模式是 Redis 提供的一种高可用解决方案。哨兵模式通过监控主节点和从节点,自动处理故障转移(主节点失效时从节点升级为主节点)来提高 Redis 的可用性。主数据库:负责持久化存储数据,支持写操作。Redis缓存:负责加速读操作,提高性能。
2024-07-23 17:09:24
1012
1
原创 【数据库】MySQL知识小册
前面我们讲过,MySQL 整体来看,其实就有两块:一块是 Server 层,它主要做的是 MySQL 功能层面的事情;上面我们聊到的粉板 redo log 是 InnoDB 引擎特有的日志,而 Server 层也有自己的日志,称为。key 是查询的语句,value 是查询的结果。根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。你输入的是由多个字符串和空格组成的一条 SQL 语句,MySQL 需要识别出里面的字符串分别是什么,代表什么。
2024-06-13 20:04:41
687
原创 【小海实习日记】PHP安装
在 Homebrew 中,tap是一个包含软件包公式(formulae)的 git 仓库。公式是 Homebrew 用来描述如何安装软件包的 Ruby 脚本。Homebrew 的默认 tap 包含了许多常见的软件包,但有时候你可能需要安装一些默认 tap 中没有的软件包。这时候,你可以通过添加其他 tap 来获取这些软件包。命令向 Homebrew 添加了一个新的 tap,这个 tap 包含了多个不同版本的 PHP 的安装配方。通过这种方式,你可以很方便地安装和管理不同版本的 PHP。
2024-06-05 15:37:50
1216
原创 【小海实习日记】金融-现货以及合约理解
单项持仓: 只持有一种方向的头寸(多头或空头)。双向持仓: 同时持有多头和空头头寸,目的通常是实现对冲或套利。这些策略和概念对于投资者在股票及金融市场中的决策具有重要意义,可以帮助他们更好地管理风险和优化收益。投资者借入并卖出一定数量的股票,预期股价会下跌,从而以更低的价格买回股票,归还借入的股票并获利。这句话描述的是一种名为“卖空”或“空头头寸”的投资策略。为了更好地理解,我们可以分步解析这一过程。目的: 卖空的主要目的是通过预期某只股票的价格下跌来获利。机制。
2024-06-04 21:51:27
867
原创 【小海实习日记】Git使用规范-Git冲突实战
1.1 从master分支拉一个分支,命名要符合规范且清晰。1.2 commit到本地,push 到远端。1.3 在Gitlab创建MR,选择develp分支。1.4 如果要修改的话,先把Gitlab上的MR修改为Draft(修改态),然后在本地修改代码,commit到本地,push 到远端。然后重新创建MR到develop分支。
2024-06-03 20:39:49
488
原创 【小海实习日记】校验及优化
总体思路是通过一次性查询获取所有需要的数据,并在内存中构建一个映射关系,然后在循环中直接从内存中获取数据,避免了多次查询数据库,提高了效率。方法一次性获取所有脚本的详情,并将结果存储在 map 中。的过程中,直接从 map 中获取对应的脚本详情,避免了多次查询数据库的情况。当查询多个id大于十个以上时,原有的代码存在效率不高的情况。这种方式会导致在循环内部多次查询数据库,效率较低。2.与前端沟通接口,沟通返回的错误码。构建了一个包含所有需要查询的脚本 ID 的切片。原始代码中的部分是一个循环遍历。
2024-06-03 16:38:04
268
原创 【小海实习日记】golang-iris框架学习笔记
这个 main.go 文件的主要作用是初始化一个 Iris Web 应用,设置必要的全局中间件和错误处理,加载配置文件,注册各种路由,然后启动 Web 服务器。这是一个典型的 Go Web 应用程序入口点,通过清晰的结构和模块化的设计,确保应用能够高效、可靠地运行。后端接收到 HTTP 请求后,根据请求的内容执行相应的操作,并返回 HTTP 响应给前端,包含了请求的结果或执行状态等信息。通过控制器的封装,实现了业务逻辑与 HTTP 请求的解耦,提高了代码的可维护性和可测试性。
2024-05-31 20:30:19
755
原创 【小海实习日记】问题排查思路
思路1:我先排查好我自己这部分,没有问题了以后,再去和同事沟通对接。思路2:从全局思维出发,去进行问题的排查,进行整个链路的判断。在链路的关键点中埋点,加日志。(链路是指这个功能模块涉及到的所有节点、不同人负责的部分)另外,解决好了自己的部分以后,及时同步到群上,进行协调解决。
2024-05-31 20:28:09
405
原创 【Java框架】Spring-AOP官方文档人肉翻译
OOP:主要关注类和对象的设计与实现,通过封装、继承和多态来提高代码的复用性和灵活性。AOP:通过切面将横切关注点分离出来,实现更清晰的关注点分离,使代码更加简洁和易于维护。Spring AOP与AspectJ切点 Spring提供了两种简单而强大的编写自定义切面的方式,一种是使用基于模式的方法,另一种是使用@AspectJ注解风格。这两种风格都提供了完全类型化的建议和使用AspectJ切点语言,同时仍然使用Spring AOP进行织入。2.AOP中的基本概念(这段不是太懂,看个大概)
2024-05-25 20:50:46
956
原创 【实战】算法思路总结
(需要多用一下ACM模式,力扣模式提供好了模板,自己在IDEA里面写的话,还是会有些陌生)//比较p1和p2两个指针,把值较小的节点接到p指针。面试过程中,总是被拷打,信心都要没了。但是也慢慢摸索出一些思路,希望对大家有帮助。// 上面的代码类似 hasCycle 函数。// fast 遇到空指针说明没有环。// 快慢指针同步前进,相交点就是环起点。// 重新指向头结点。1、用双指针思路去解决链表问题。力扣21 - 合并两个有序链表。力扣876 - 链表的中间结点。力扣142 - 环形链表。
2024-05-12 15:20:52
968
1
原创 【Java】集合概念及多线程
HashSet 、 LinkedHashSet 和 TreeSet 的主要区别在于底层数据结构不同。HashSet 的底层数据结构是哈希表(基于 HashMap 实现)。LinkedHashSet 的底层数据结构是链表和哈希表,元素的插⼊和取出顺序满⾜ FIFO。TreeSet 底层数据结构是红⿊树,元素是有序的。多线程的使用。
2024-04-19 13:24:55
1011
1
原创 【LeetCode算法】数组题集
给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s 的长度最小的 连续 子数组,并返回其长度。// 因为我们是找符合条件最短的子序列,所以一旦符合条件就break。if (sum >= s) { // 一旦发现子序列和超过了s,更新result。while(sum >= s){ //要持续滑动,不能只判断一次就停止了。// 如果result没有被赋值的话,就返回0,说明没有符合条件的子序列。System.out.println("输出:" + result);
2024-03-30 17:37:43
523
原创 【Java】基于SpringCloud的考研复试辅导平台
如果客户需要频繁修改数据库里的某一个字段的内容,比如把所有的“审核未通过”改成“未通过”,过一段时间又要改成“XXX”,在原表上改太麻烦,建立一个数据字典表,把数据和字段连接起来。需要修改的时候,修改字段对应的那个数据即可。创建PO类、Mapper接口、Mapper的xml文件,每个PO类对应数据库的每张表,每张表需要创建一个Mapper接口和Mapper的xml映射文件。计算出了total总条数、pageNum当前第几页、pageSize每页大小和当前页的数据,是否为首页,是否为尾页,总页数等。
2024-03-25 10:46:15
683
原创 【Nginx】反向代理解决跨域问题
在同源策略下,无法向不同源(域名、协议、端口号有任何一个不同)的服务器发送XMLHttpRequest请求。当前端代码和后端代码位于不同的域名下时,浏览器会阻止跨域请求。简而言之,nginx反向代理实现跨域的原理是通过将不同域名下的请求转发到同一个域名下来规避浏览器的同源策略限制。通过使用nginx反向代理,将前端页面和后端接口统一到同一个域名下。电脑A写前端代码,电脑B写后端代码,电脑A用Nginx解决跨域问题,从而调用后端的接口。,这样前端页面就可以直接向同一个域名发送请求,避免了跨域问题。
2024-03-21 21:01:53
674
原创 【DDD】Domain Driven Design架构
著:本文是https://www.youtube.com/watch?v=u6528XnMVFo的读后感,原作者为张建飞。Infra层依赖于Presentation层、Application层和Domain层。问题:Application层过于臃肿,所有业务逻辑堆在这一层,维护困难。如果是共有的,作为一种能力,就提取出来,放在Domain层。COLA架构,可以在github上搜索到这个开源架构。Domain层存放变动不大的业务逻辑(基本不改动)UI,Controller 主要是和前端进行交互。
2024-03-17 22:47:38
343
原创 【Go语言】基础
指针是一种特殊的变量,它不仅用于存储其他变量的内存地址,而且还指向内存的位置,并提供查找存储在该内存位置的值的方法。arr := [7]string{"这", "是", "Golang", "基础", "教程", "在线", "www.cainiaojc.com"}fmt.Printf("\n部分: %s 通过日期: %d", a.branch, a.year)slcA := []string{"sun", "moon", "star"} //切片值。在这里,指向的元素不必是数组的第一个元素。
2024-03-16 21:00:57
827
原创 【Go语言】Gin框架
/ 在后续操作中,只要调用了这个中间件都可以拿到这里的参数。//context.JSON() //json数据。"msg" : "这是go后台传递来的数据"//cotext.Abort() //阻止。context.Next() //放行。// 路由组 /user/add。定义中间件-》注册-》调用。//响应页面返回给前端。//接受前端传递的参数。
2024-03-15 22:11:41
886
1
原创 【Java】微服务知识小册
把微服务的配置放到github上,运维人员可以在github上在线修改配置,但开发人员给自内部微服务的代码没有改变,相当于把微服务里面的配置放到了云(github)上。Hystrix是一个用于处理分布式系统延迟的开源库,Hystrix能够保证其中一个微服务出现问题后,整体服务不受影响,提高分布式系统的可用性。微服务A调用微服务B,微服务B调用微服务C,微服务C调用微服务D,如果链路上某个微服务调用时间过长或者中断,引起系统崩溃(雪崩)。路由、过滤,把真实项目隐藏起来,只能通过路由网关,指定地址去访问。
2024-03-15 20:35:36
402
原创 【Java】SpringMVC
⑥操作业务Controller ,实现Controller接口,返回ModelAndView,装数据,封视图;--通过初始化参数指定SpringMVC配置文件的位置,进行关联-->⑧写要跳转的jsp页面,显示ModelandView存放的数据,以及我们的正常页面;-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->-- 启动顺序,数字越小,启动越早 -->-- 让Spring MVC不处理静态资源 -->--所有请求都会被springmvc拦截 -->
2024-03-14 11:12:33
716
原创 【Java】SSM框架知识小册
-解释 : https://www.cnblogs.com/jpfss/p/7799806.html-->-- 配置MyBaties全局配置文件:mybatis-config.xml -->-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->-- 3.配置SqlSessionFactory对象 -->-- 注入sqlSessionFactory -->-- 1.开启SpringMVC注解驱动 -->-- c3p0连接池的私有属性 -->-- 给出需要扫描Dao接口包 -->
2024-03-13 11:36:15
763
原创 【Java】Spring
在没有ioc的程序中,我们使用面向对象编程,对象的创建于对象的依赖关系完全硬编码在程序中。直接在属性上使用,也可以在set方法上使用,使用Autowired可以不用编写set方法,但是前提是这个自动装配的属性在IOC(Spring)容器中存在,并且符合名字byname!Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建于组织对象存入容器中,程序使用时再从ioc容器中取出需要的对象。<bean id = "自定义" class = "com.XXX.service.自定义" >
2024-03-11 20:57:25
766
原创 【Java框架】Mybatis
能够保证应用程序中的数据长期保存在数据库中,而不会因为程序的关闭而丢失。比如我们网购的时候,添加商品到购物车,关闭应用再打开,商品依旧还在购物车中,这就是持久层的作用。在一个面向对象的系统中,系统的各种功能是由许许多多不同对象协作完成,各个对象之间的协作关系成为系统设计的关键,小到不同类之间的通信,大到各个模块之间的交互,都属于对象之间的协作。是连接到连接池的一个请求,不是线程安全的,不能被共享,它的最佳作用域是请求或者方法作用域。把要查的数据内存到本地,这样用户就不用反复从数据库查同样的数据了。
2024-02-28 11:46:47
1008
原创 【DataWhale】FasterGit课程学习笔记-Task3
开发⼈员 关注Develop分⽀、Feature分⽀以及特殊阶段关注Hotfix、Release分⽀的bug修复;测试⼈员 关注 Release分⽀、Hotfix分⽀的功能测试;发布阶段 主要涉及Release分⽀、Production分⽀、Develop分⽀;紧急修复阶段 主要涉及Hotfix分⽀、Production分⽀、Develop分⽀。基于Git定义5种类型的分⽀,各分⽀严格定义其指责、起⽌点等,从⽽使开发、测试、发版等过程有条不紊进⾏。Master分⽀和Develop分⽀贯穿项⽬;
2024-01-21 16:38:45
431
原创 【Java】JVM知识小册
它在内存区域专门开辟了一块标记区域:Native Method Stack,登记native方法,最终执行的时候,加载本地方法库中的方法通过JNI。凡是带了native关键字的,说明java的作用范围达不到了,此时会去调用底层C语言的库,会进入本地方法栈,调用本地方法本地接口JNI。检查是否能够加载当前类,能加载则结束该过程,不能就抛出异常,通知子加载器进行加载。基本过程:首先类加载器收到类加载的请求,然后将这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器。①虚拟机自带的加载器。
2024-01-20 20:30:30
393
原创 【JVM】官方文档通俗中文版
在被浏览器接受之前,确保这些程序是安全的,编译后的程序独立于网络和主机。主机架构是指计算机硬件的体系结构或结构设计,不同的主机架构可能有不同的指令集和硬件特性。这包括确保在软件的整个生命周期中,从开发到部署再到最终用户的使用,都能够维护高水平的安全性。上网的人很快发现 Web浏览器的 HTML 文档格式能够浏览的内容形式有限。: "Modem" 是调制解调器的缩写,是一种用于将数字信号转换为模拟信号(调制)和将模拟信号转换为数字信号(解调)的设备。),所看到和听到的内容基本上都是相同的。
2024-01-20 15:21:59
737
原创 【K8S】Kubernetes集群部署
在传统部署中,应用程序直接部署在物理机中,简单易用,但是不能限制每个应用程序的资源使用边界。在虚拟化部署中,它解决了传统部署中不能限制每个应用程序的资源使用边界的问题,但是它仍然无法解决容器替补、容器扩展等问题,于是此时容器化部署顺应而生。在kubernetes中service有两种代理模型,一种是基于iptables的,一种是基于ipvs的,两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块。初步判断node2的IP配错了,重装node2虚拟机,发现仍然无法连接。
2024-01-19 15:14:04
903
原创 【极客时间】观后感
2、学习的过程中,要动手实践,要整理知识。视频就像精粮,但是吃粗粮有时候更好,不断地实践,犯错误,甚至是严重的错误,才会有深刻的理解。1、刚入行的前几年,要拓宽自己的知识点,多学一点,学杂一点,什么都去学。
2024-01-18 22:22:15
430
原创 【DataWhale】FastGit课程学习Day2
现在在这个分支下创建了文件,也就是说在XX分支下有这些文件,但是master分支下是没有的,因为还没有合并到master分支上。git branch XX #创建XX的分支。虽然创建了新的分支,但是当前分支还是在。# 使用git merge 进行合并。分支上,来进行后续的开发操作。# 在分支上创建下新的文件。分支上,我们需要通过。
2024-01-18 12:17:40
380
原创 【拥抱开源】给GitHub项目提交PR
14、然后回到GitHub的项目,点击Pull Request,提交以后等待作者审核即可。总结:并不是高科技的过程,需要一些耐心,不要害怕。Git clone SSH #SSH指的是上面的那个SSH链接。2、找一个目录,然后鼠标右键,找到 Git Bash Here。文件中的内容)添加到GitHub 帐户的SSH密钥设置中。注意:生成的RSA密钥是放在C盘用户目录里的.ssh文件。7、将生成的 SSH 私钥添加到 SSH 代理。11、在自己的仓库里,找到Fork的项目。6、将公钥添加到 SSH 代理。
2024-01-18 12:17:27
1094
原创 【K8S部署学习】DAY3
2、网络插件一直安装不上。问题排查:应该是教程的yml文件过期了,重新在网络上找了一个最新的yml文件,同时换成最新的阿里云镜像,成功解决问题。一觉醒来,发现node2连接不上了,排查发现ip地址怎么变了?(后发现是docker的地址),虚惊一场,重启即可。收获:联想到大学时候,在机房和同学们部署服务器和交换器。窗外阴雨绵绵的成都,身边认真做实验的好友,如今已各奔东西。报错了,应该是防火墙的原因。把防火墙关掉,再试一次。成功连接网络,三个节点都是Ready。任务:使用iperf测试带宽。
2024-01-17 16:56:54
377
原创 【K8S部署学习】DAY2
kubernetes和docker在运行中会产生大量的iptables规则,为了不让系统规则和他们混淆,直接关闭系统的规则。找到问题了:配置网络时,没有勾选上《可用时自动链接到这个网络》,忘记配置DNS服务器, 耗时一个半小时。selinux是linux系统下的一个安全服务,如果不关闭它,在安装集群时会产生各种各样的问题。node2连接不上,初步判断node2的IP配错了,重装一遍node2。两者比较的话,ipvs的性能更高,但如果使用它,需要手动载入ipvs模块。如果移动了此文件,请提供它的新位置。
2024-01-16 20:33:48
957
原创 【DataWhale】FasterGit课程学习笔记-Task1
这会在当前目录下创建一个名为 “libgit2” 的目录,并在这个目录下初始化一个 .git 文件夹, 从远程仓库拉取下所有数据放入 .git 文件夹,然后从中读取最新版本的文件的拷贝。当你执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。建议在分布式版本控制系统后面加上这一句话:分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
2024-01-16 11:39:32
491
原创 【K8S部署学习】DAY1
Kubernetes是一个开源的,用户管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效。Kubernetes提供了应用部署、规划、更新和维护的一种机制。无法创建新虚拟机: 无法打开配置文件“D:\soft\VMware\master\master.vmx”: 拒绝访问。与虚拟化部署类似,但是共享了操作系统。直接部署在物理机上,简单易用,但是不能为应用程序定义资源使用边界。解决方法:删除虚拟机,重新安装,换一个镜像。传统部署-》虚拟化部署-》容器化部署。
2024-01-15 20:09:08
347
原创 【阿里云环境】Linux
(空格下翻页,pageDown,pageUp键代表翻动页面,退出q命令,查找字符串,/符号要查询的字符串向下查询,?/usr:这是非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似windows下的program files目录。/home: 用户的主目录,在Linux中,每个用户都有自己的目录,一般该目录名以用户的账号命名。/proc: 该目录是虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来获取系统信息。/lib: 存放系统最基本的动态链接共享库,类似Windows里的DLL文件。
2024-01-14 21:25:17
936
原创 【互联网杂谈】英特尔历史
直到1981年,转机出现了,IBM公司为了短平快地搞出PC,也懒得自己设计处理器,拿英特尔的8086直接用上,从此英特尔一战成名。因此,英特尔的崛起成为历史的必然。产品路线:8086 -》放弃内存市场 -》80486 -》80486 -》奔腾处理器(x86)【此时奔腾处理器的速度以及道道工作站处理器的水平,太阳公司和苹果公司都开始在自己的计算机中使用英特尔的处理器】。有些处理器在设计的时候,尽可能地实现各种各样、功能齐全的指令,这包括早期IBM和DEC的全部计算机,今天的英特尔和AMD处理器等。
2024-01-12 23:13:06
440
原创 【MySQL】索引
本质是在数据库表的字段上添加,提高数据库的查询效率。一张表的一个字段可以添加索引,多个字段联合起来也可以添加索引。②通过目录(索引)找到大致的范围,在这个大致的范围里做局部搜索。这种方式效率较高,属于索引检索。①一页一页地找,属于全字典扫描,效率较低。
2024-01-03 16:53:02
374
原创 【MySQL】事务
在事务的执行过程中,每一条DML操作都会记录到“事务性活动”的日志文件中,这包括提交事务和回滚事务。这表示一个最小的工作单元,即这两条update语句要么同时成功,要么同时失败。房间A和房间B之间有一堵墙,墙的厚薄程度代表事务的隔离程度,包括4个级别。A-1000(update语句)B+1000(update语句)InnoDB存储引擎:提供一组用来记录事务性活动的日志文件。
2024-01-03 15:04:29
418
原创 【Java】Comparable类实现排序
其中普通排序简单,定制排序可以根据自己需要比较的内容,对Comparator接口中的方法进行修改。②在实现类中重写Comparator接口中的抽象方法compare(Object o1,Object o2),在该方法中指明大小关系。②重写Comparable接口中的compareTo(Object obj)方法,在该方法中指明比较类A的对象的大小的标准。③创建类A的多个实例,进行大小的比较或排序。①通过具体的类实现Comparable接口。①创建实现Comparator接口的实现类。
2024-01-02 19:21:47
503
原创 【Java】多线程
2.实现接口中的run()【将该线程要执行的操作,声明在该方法体中】4.将此对象作为参数传递到Thread类的构造器中。例子:分别用线程计算100内的奇数和偶数。1.创建一个继承于Thread类的子类。1.创建一个实现runable接口的类。线程的创建方法一:继承Thread类。4.通过对象调用start()方法二:实现Runable接口。2.重写Thread类的子类。调用当前线程的run方法。3.创建当前实现类的对象。3.创建当前子类的对象。{ 启动线程;
2023-12-14 17:29:31
378
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人