业务题day01

1-1 请说一下你项目中是如何进行项目管理和发布的

我们项目使用的是Gogs进行代码托管,Jenkins进行项目自动运维发布。

在我们的项目中,我们使用Gogs进行代码托管和版本控制,以确保团队成员可以协同开发和管理代码。

Gogs是一个轻量级的、开源的自托管Git服务,它提供了类似于GitHub的功能,包括代码仓库、分支管理、问题跟踪等。

通过Gogs,我们能够创建项目仓库,并将代码推送到其中。团队成员可以克隆仓库、创建新分支、提交代码,并通过Pull Resquest的方式进行代码审查和合并。这样我们可以实现代码的版本控制、团队协作和代码质量管理。

为了实现项目的自动构建和发布,我们使用Jenkins进行持续集成和自动化运维。Jenkins是一个开源的、可扩展的自动化服务器,它能够与各种工具和技术集成,用于构建、测试和部署软件。

我们在Jenkins中设置了针对项目的构建任务。当有代码提交到Gogs仓库时,Jenkins将触发自动构建流程。这个构建流程可能包括编译代码、运行单元测试、生成文档等操作。

如果构建成功,Jenkins将执行部署任务,将应用程序部署到目标环境中。

通过Jenkins,我们可以在每次代码提交后自动构建和部署项目,从而确保代码的质量和可靠性。

此外,Jenkins还提供了一套丰富的插件和扩展,使我们能够灵活地定制自动化流程,满足项目的特定需求。

综上,我们项目使用Gogs进行代码托管和版本控制,通过Jenkins实现项目的持续集成和自动化运维发布,以提高开发效率和项目质量。

1-2 现在浏览器点击按钮出现了一个报错,如何定位发生问题的代码

第一种是投机的手段,直接复制报错信息,在idea中双击shift,点击Files,点击Find in Files,之后就定位到了代码。与订单中的下单id不一致就报这个错误信息。

但如果错误信息不是后端报出来的,是后端报了一个状态码300,前端报的错误信息,此时就不能用投机的方法,所以我们要学习最传统的方法。

1.首先要通过前端看一看,请求发送给谁了。
F12打开开发者工具,点击删除订单,点击删除,点开network,请求发送出去了,分析请求发送给谁了,示例中是发送给了api.tianji.com/ts/orders/订单号,先根据域名找到它对应的服务器,在Windows/System32/drivers/etc/hosts中找是否有api.tianji.com,查看转发给了谁,此示例中转发到了192.168.150.101,此处没有指定端口,所以转到了nginx默认端口80,所以可以得知这个请求最终是转发到了远端服务器上的nginx。

2.下一步找nginx的配置,在/usr/local/src/nginx/conf/nginx.conf中找api.tianji.com,找到了nginx反向代理转发给了192.168.150.1:10010,之后在MobaXterm中用docker ps -a查找10010端口,发现请求转发给了网关(tj-gateway)。

3.接下来去网关中找,网关中实现了请求的转发,查看网关的配置文件,在bootstrap.yml中查找ts开头的,发现网关中把请求转发到了trade微服务(trade-service)。

4.接下来在nacos中查找trade-service,发现trade-service把请求交给了192.168.150.1:8088,就是本地正在运行的TradeApplication。

5.接下来在tj-trade的Controller层中找orders路径,然后定位到了OrderController,根据请求路径和请求方式DeleteMapping然后有个参数,定位到deleteOrder方法,之后定位到orderService的deleteOrder方法,在OrderServieImpl的deleteOrder方法中敲上断点,然后阅读代码分析问题。

6.此时,遵循有注释不看代码的原则,最终定位到代码的问题在于Long类型数据进行比较时,由于Long类型是包装类型,进行数字比较时本质上是对象比较,对象比较本质上是比较内存地址,Long底层有一个数据缓存池,缓存的是-128-127,如果缓存的数据是126都是从缓存池中拿,但如果是129,不在缓存池中,就会new对象,用!=就会进入不相等的逻辑。解决方案是用Objects工具类的equals()方法来比较,就解决了bug。

以后做Integer、Long类型数据比较时,不要用==和!=,要用Objects工具类中的equals()方法。

7.综上,找bug的流程线:前端-nginx-网关-微服务。

1-3 你的项目中进行用户的登录和检验的详细流程是怎样的

在我的项目中,用户的登录和校验是在用户的微服务上,通过feign调用校验微服务暴露出来的API来完成用户身份核验的。

首先,当用户输入账号和密码,点击登录时,用户微服务就会接收到登录请求和相应用户的凭据信息。

然后,调用校验微服务对用户凭据信息进行校验。首先拿用户账号在存储用户信息的数据库中进行查询。

如果查询不到,就抛出一个自定义异常返回给前端,表明账户不存在。

若在数据库中查到了对应的账户,再进行密码的验证,为保证其安全性,前端传入的用户凭据信息中的密码会先加密,再和数据库中存储的已加密的密码进行比对。

若对比失败也会抛出一个自定义异常给前端,表明密码错误。

当都验证正确之后,会生成一个访问令牌token返回给客户端程序。然后客户端应用程序会存储该令牌以便后续的API调用。

当用户访问其它功能,调用其它微服务时,会使用token在其请求中进行身份验证每个需要token校验的微服务都会验证该令牌。

通常使用类似JWT的机制来验证令牌的合法性和有效期,微服务根据验证的访问令牌对用户进行授权,以确定用户是否有权执行请求的操作。

上述就是我的项目中用户登录和校验的详细流程。

1-4 说一下文章发布的流程

在我的项目中,文章发布是在文章内容审核微服务上,通过Feign调用文章管理微服务暴露的API来完成,当用户发起文章发布请求时。

此时文章内容审核微服务会对文章内容进行审核,在我的项目中,集成了阿里云的内容安全审核服务来进行文章的内容安全审核,使用阿里云提供的接口审核文章内容,图片存储到minIO中,通过审核以确保文章没有色情暴力等不良内容。

此时,若没有通过阿里云的内容安全审核,文章审核失败,设置文章状态为待审核,转由人工审核。

若人工审核失败就将文章设置为审核失败状态,文章发布失败。

若通过了阿里云的内容安全审核,会调用文章管理微服务来新增已经发布的文章进入数据库。

在加入数据库的同时,也会加入到RabbitMQ的消息队列,然后在搜索微服务中设置监听器,以实现当有新增的已发布文章时,将其同步存入ElasticSearch中方便后续进行分词查找文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/620090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java多线程:初识多线程!左手画方,右手画圆

👑专栏内容:Java⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、线程与进程二、创建线程方法1、继承Thread类2、实现Runnable接口3、两者区别4、举个栗子5、简洁写法Ⅰ、Thread匿名内部类写…

DNS 正/反向解析 主从复制 分离解析

一 DNS概念它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网 每一台 DNS 服务器都只负责管理一个有限范围 根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本 一级域名&#xff…

20. 完整的蒙特卡洛强化学习算法

文章目录 1. 回顾2. 约定3. MC强化学习环境对象的表示4.MC强化学习算法的表示5. MC方法的进一步分类 1. 回顾 第16篇给出了强化学习算法框架,随后的第17、18篇给出了该框架下如何进行策略评估以估计出Q ( s , a ) (s,a) (s,a),第19篇给出了该框架下如何…

Java的四种访问权限修饰符

提示:对访问权限修饰符理解,最好的方法就是写代码进行测试。 Java的四种访问权限修饰符 一、四种访问权限1.对于类来说2.对于类成员来说 二、关于继承的一些规则三、总结 一、四种访问权限 Java 借助 private、protected、public与默认修饰符来控制类和…

【已解决】C语言实现多线程的同步与异步

说真的写了这篇博文时,才知道c语言本身不支持多线程,而是一些windowsapi让c语言拥有多线程的能力,那下面内容就以打开对话框为例,展现如何实现多线程的同步与异步。 文章目录 问题起源c语言多线程同步方案c语言多线程异步方案总结…

Typora使用及Markdow学习笔记1

编程如画,我是panda! 最近有在学习Markdown,所以这次分享一下我的Markdown学习笔记 目录 前言 一、标题 二、段落 1.换行 2.分割线 三、文字显示 1.字体 2.上下标 四、列表 1.无序列表 2.有序列表 3.任务列表 五、区块 六、代…

【Linux运维】LVM和RAID学习及实践

LVM和RAID学习及实践 背景LVM简介新加硬盘的操作RAID-磁盘阵列应用场景RAID0RAID1其他结构RAID制作RAID 小结 背景 某台服务器的磁盘管理需要自己动手处理,找了一些资料也踩了一些坑,在这里记录一下,先介绍一下LVM和RAID这两个东西。在计算机…

【天龙八部】攻略day6

关键字: 灵武、寻宝要求、雁门 1】灵武选择 西凉枫林,锦带,短匕 白溪湖,明镜,双刺 竹海,玉钩,锁甲 2】楼兰寻宝需求 等级80级,40级前6本心法 3】雁门奖励 简单35*4元佑碎金 普…

慕尼黑工业大学最新提出!单目实时密集建图的混合隐式场方法

作者:小柠檬 | 来源:3DCV 在公众号「3DCV」后台,回复「原论文」可获取论文pdf 我们提出了一种新颖的方法,它将基于深度学习的密集SLAM与神经隐式场相结合,实时生成密集地图,而无需像以前的方法那样依赖RGB-…

数据库练习题

素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE worker ( 部门号 int(11) NOT NULL, 职工号 int(11) NOT NULL, 工作时间 date NOT NULL, 工资 float(8,2) NOT NULL, 政治面貌 varchar(10) NO…

java大学生宿舍共享厨房系统宿舍自习室宿舍洗衣房系统源码包含技术文档

主要功能:学生可注册登录,预约自己宿舍楼栋的共享厨房和评价,也可以使用该楼栋的洗衣房,查看洗衣机吹风机的使用情况和报修,还可以进入该楼栋自习室打卡和评价。管理员可管理所有的学生和宿管,分配宿舍&…

10年果粉拯救老掉牙Mac心得(没错我是标题党)

连续两周了,当我不能用Mac,或者说当我闲置了近10年隔三差五的用Mac时,成功发现我的AppleID已经无法登录了。事情是这样的,当我踌躇满志地准备改一篇稿子(潜在的稿费啊亲!)时,发现Pages竟然没有W…

2024秋招,建信金融科技非功能测试工程师

前言 今天回顾一下,23年10月参加的一场‘技术面试’ 部门:广州事业群 时间线: 10月12日专业笔试 10月16日性格测评 10月27日技术一面(两男一女) 平台:腾讯会议 过程 自我介绍挂科?怎么…

用Kimi chat识别并整理图片里面的文字

Kimi chat是有OCR功能的,可以识别图片中的文字。 下面这张图片是一本书的注释,里面提到有不少图书,利用Kimi chat就可以轻松完成提取其中图书书名的任务。 先拿一张图片来做实验。Kimichat的回复: 在您提供的文件内容中&#xf…

LLM大模型显存计算

一、目录 模型参数单位内存计算案例显卡算力推理显存计算训练显存计算huggface 官网计算 模型推理/训练 需要的显存大模型输入长度与显存的关系大模型推理 多线程与显存的关系 参考:https://blog.csdn.net/Johntill/article/details/132629075 二、实现 模型参数…

【RV1126 学习】SDK/ U-Boot/kernel/rootfs 编译学习

文章目录 RV1126芯片介绍rv1126 模块代码目录相关说明 SDK 包下的脚本使用build.sh 脚本使用envsetup.sh 脚本使用mkfirmware.sh 脚本使用rkflash.sh 脚本使用 U-Boot 编译和配置uboot 的配置修改编译操作 kernel 的修改编译rootfs 编译和配置buildroot 配置busybox 配置 固件打…

爬虫之牛刀小试(四):爬取B站番剧的简介

今天爬取的是b站。 如何爬取b站中的番剧呢? 首先我们来到番剧索引中,随便点开一部动漫,检查代码。 每个作品对应一个链接: https://www.bilibili.com/bangumi/play/ss…(ss后面的数字称为ss号) 发现关于动漫的信息…

【SAP ABAP】数据赋值

1. 赋值 语法格式 f2 f1. 表示将变量f1的值赋值给变量f2 输出结果如下: 扩展补充(带偏移量的赋值) 输出结果如下: 将lv_a从偏移2位开始的位置,取长度为3的内容345赋值给 lv_b,赋值覆盖lv_b从偏移4位开始的位置且长度为3的内容…

深入理解JVM虚拟机第三十七篇:如何设置和查看JVM堆内存的大小

😉😉 欢迎加入我们的学习交流群呀! ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、Security、Docker、Grpc、消息中间件、Rpc、SpringCloud等等很多应用和源码级别高质量视频和笔记资料,你想学的我们这里都有! 🥭🥭3:…

法线变换矩阵的推导

背景 在冯氏光照模型中,其中的漫反射项需要我们对法向量和光线做点乘计算。 从顶点着色器中读入的法向量数据处于模型空间,我们需要将法向量转换到世界空间,然后在世界空间中让法向量和光线做运算。这里便有一个问题,如何将法线…