当前位置: 首页 > news >正文

业务题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),接下来在nacos中查找trade-service,发现trade-service把请求交给了192.168.150.1:8088,就是本地正在运行的TradeApplication,接下来在tj-trade的Controller层中找orders路径,然后定位到了OrderController,根据请求路径和请求方式DeleteMapping然后有个参数,定位到deleteOrder方法,之后定位到orderService的deleteOrder方法,在OrderServieImpl的deleteOrder方法中敲上断点,然后阅读代码分析问题。此时,遵循有注释不看代码的原则,最终定位到代码的问题在于Long类型数据进行比较时,由于Long类型是包装类型,进行数字比较时本质上是对象比较,对象比较本质上是比较内存地址,Long底层有一个数据缓存池,缓存的是-128-127,如果缓存的数据是126都是从缓存池中拿,但如果是129,不在缓存池中,就会new对象,用!=就会进入不相等的逻辑。解决方案是用Objects工具类的equals()方法来比较,就解决了bug。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相关文章:

业务题day01

1-1 请说一下你项目中是如何进行项目管理和发布的 我们项目使用的是Gogs进行代码托管,Jenkins进行项目自动运维发布。 在我们的项目中,我们使用Gogs进行代码托管和版本控制,以确保团队成员可以协同开发和管理代码。 Gogs是一个轻量级的、开…...

DEJA_VU3D - Cesium功能集 之 114-雷达效果(基础效果)

前言 编写这个专栏主要目的是对工作之中基于Cesium实现过的功能进行整合,有自己琢磨实现的,也有参考其他大神后整理实现的,初步算了算现在有差不多实现小140个左右的功能,后续也会不断的追加,所以暂时打算一周2-3更的样子来更新本专栏(每篇博文都会奉上完整demo的源代码…...

【Leetcode】2696. 删除子串后的字符串最小长度

文章目录 题目思路代码 题目 2696. 删除子串后的字符串最小长度 思路 计算通过删除字符串中的 “AB” 和 “CD” 子串后,可获得的最终字符串的最小长度。 主要思路是使用一个栈来模拟字符串的处理过程,每次遍历字符串时,如果当前字符和栈…...

利用gulp工具对常规web项目进行压缩打包

前言 对于一个常规的web项目,如下项目目录 |- imgs | - img1.png | - img2.png |- js | - user.js | - utils.js |- css | - index.css | - user.css |- html | - user.html |- index.html可以使用各种构建工具(如webpack、gulp、grunt等)来…...

面试经典题---68.文本左右对齐

68.文本左右对齐 我的解法: 两层while循环嵌套,外层循环用于处理不同行,内层while循环计算出每行应有的单词个数。 使用left和right记录一行中应有的单词下标,即当前行应包含从words[left]到words[right-1]这count个单词&#xf…...

完整的模型验证套路

读取图片 from PIL import Imageimg_path "../Yennefer_of_Vengerberg.jpg" image Image.open(img_path) print(image)转换成灰度图(可选) image image.convert(L) image.show()转换成RGB格式 image image.convert(RGB)因为png格式是四…...

内 存 取 证

1.用户密码 从内存中获取到用户admin的密码并且破解密码,以Flag{admin,password}形式提交(密码为6位); 1)查看帮助 -h ./volatility_2.6_lin64_standalone -h 2)获取内存镜像文件的信息 imageinfo ./volatility_2.6_lin64_stand…...

【PHP】价格区间字段验证,如4万-5万

参数值示例: $str1 "4万-5万"; $str2 "4万-5万元"; $str3 "5万元以内"; 以下是一个PHP示例,用于检查字符串是否满足要求: function checkString($str) {// 检查字符串中是否包含"-"或"以内…...

安徽省暨合肥市“希望工程·梦想计划”小盖茨机器人捐赠启动仪式举行

1月5日,安徽省暨合肥市“希望工程梦想计划”小盖茨机器人捐赠启动仪式在合肥市一六八玫瑰园学校东校区举行。共青团安徽省委副书记叶征,北京儒布特教育科技有限公司董事牛俊明,北京儒布特教育科技有限公司市场总监高进,安徽省青基…...

Kafka消息存储

一、层次结构 具体到某个broker上则是, 数据目录/分区名/日志相关文件集合。其中日志文件集合内包括.log文件, index索引文件和.timeindex时间戳索引文件。 二、.log 结构 .log中记录具体的消息。一般消息由header和body组成, 这点儿在Kafka消息中也同样适用。 message MES…...

【Vue3+Ts项目】硅谷甄选 — 用户管理+角色管理+菜单管理+首页

一、用户管理 1.1 接口 1.1.1 接口定义 src/api/acl/user/index.ts // 用户管理模块的接口 import request from /utils/request import type {AllRoleResponseData,SetRoleData,User,UserResponseData } from ./type enum API {// 获取全部已有用户账号信息ALLUSER_URL /…...

node连接Mysql失败

报错信息 Error: connect ETIMEDOUTat Connection._handleConnectTimeout (d:\课设\服务器端\node_modules\mysql\lib\Connection.js:409:13)at Object.onceWrapper (node:events:628:28)at Socket.emit (node:events:514:28)at Socket._onTimeout (node:net:589:8)at listOnT…...

运用AI搭建中间服务层(四)

MiddlewareService文件夹 在这个文件夹中,我们需要添加以下文件: 名人服务.cs 名人服务.cs 名人结果.cs ILandmarkService.cs 地标服务 .cs 地标结果 .cs ICelebrityService.cs – 包装多个串行的认知服务来实现名人识别的中间服务层的接口定义&…...

[C#]winform部署yolov5-onnx模型

【官方框架地址】 https://github.com/ultralytics/yolov5 【算法介绍】 Yolov5,全称为You Only Look Once version 5,是计算机视觉领域目标检测算法的一个里程碑式模型。该模型由ultralytics团队开发,并因其简洁高效的特点而备受关注。Yol…...

基于SpringBoot的洗衣店管理系统

基于SpringBoot的洗衣店管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 可视化展示 用户界面 管理员界面 摘要 洗衣店管理系统基于Spring Boot框…...

AMEYA360:广和通RedCap模组FG131FG132系列

2024年1月,广和通RedCap模组FG131&FG132系列已进入工程送样阶段,可为终端客户提供样片。广和通RedCap模组系列满足不同终端对5G速率、功耗、尺寸、成本的需求,全面助力RedCap技术的行业应用。 FG131&FG132系列基于骁龙X35 5G调制解调…...

RGB,RGB-D,单目,双目,sterro相机,实例相机介绍

相机—特点及区别 1.相机种类 RGB,RGB-D,单目,双目,sterro相机,实例相机 2.相机特点 2.1单目 只使用一个摄像头进行SLAM,结构简单,成本低 三维空间的二维投影 必须移动相机,才…...

【linux】history命令显示时间的例子

在Linux中,你可以通过设置HISTTIMEFORMAT环境变量来显示命令的执行时间。这个环境变量定义了history命令中时间的显示格式。以下是设置和说明的步骤: 打开终端: 打开你的终端应用。 编辑配置文件: 使用文本编辑器(如n…...

Nginx负载均衡以及常用的7层协议和4层协议的介绍

一、引言 明人不说暗话,下面来解析一下 Nginx 的负载均衡。需要有 Linux 和 Nginx 环境哈。 二、nginx负载均衡的作用 高并发:负载均衡通过算法调整负载,尽力均匀的分配应用集群中各节点的工作量,以此提高应用集群的并发处理能力…...

【机器学习300问】4、机器学习到底在学习什么?

首先我们先了解一个前置问题,再回答机器学习到底在学习什么。 一、求机器学习问题有哪几步? 求解机器学习问题的步骤可以分为“学习”和“推理”两个阶段。首先,在学习阶段进行模型的学习,然后,在推理阶段用学到的模型…...

设计一个简易版的数据库路由

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…...

接口自动化测试面试题

前言 前面总结了一篇关于接口测试的常规面试题,现在接口自动化测试用的比较多,也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢? 也就是面试的过程中,面试官会考哪些问题,知道你是不是真的做过接口自动…...

Tampermonkey油猴插件-各大网盘批量分享,解放双手-上

Unity3D特效百例案例项目实战源码Android-Unity实战问题汇总游戏脚本-辅助自动化Android控件全解手册再战Android系列...

【DB2】installSAM执行后会重启这件事

碎碎念 在使用自动化工具安装TSAMP的过程中,机器会自动重启这件事。 TSAMP真的挺折磨的,一个月居然因为这件事情debug两次了。 在测试自动化脚本的时候,第一遍安装都是好好的,从第二遍开始(因为要测试脚本的幂等性&…...

RTSP网络视频协议

一.RTSP网络视频协议介绍 RTSP是类似HTTP的应用层协议,一个典型的流媒体框架网络体系可参考下图,其中rtsp主要用于控制命令,rtcp主要用于视频质量的反馈,rtp用于视频、音频流从传输。 1、RTSP(Real Time Streaming P…...

Python 网络数据采集(四):Selenium 自动化

Python 网络数据采集(四):Selenium 自动化 前言一、背景知识Selenium 4Selenium WebDriver 二、Selenium WebDriver 的安装与配置2.1 下载 Chrome 浏览器的驱动程序2.2 配置环境变量三、Python 安装 Selenium四、页面元素定位4.1 选择浏览器开…...

实现秒杀功能设计

页面 登录页面 登录成功后,跳转商品列表 商品列表页 加载商品信息 商品详情页 根据商品id查出商品信息返回VO(包括rmiaoshaStatus、emainSeconds)前端根据数据展示秒杀按钮,点击开始秒杀 订单详情页 秒杀页面设置 后端返回秒杀…...

每天刷两道题——第十四天

1.1矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入:matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法(…...

快速掌握Postman实现接口测试

快速掌握Postman实现接口测试 Postman简介 Postman是谷歌开发的一款网页调试和接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等方法。Postman非常简单易用,可以直接填写URL,header,body等就可以发…...

jmeter--3.使用提取器进行接口关联

目录 1. 正则表达式提取器 1.1 提取单个数据 1.2 名词解释 1.3 提取多个数据 2. 边界值提取器 2.2 名词解释 3. JSON提取器 3.1 Json语法 3.2 名词解释 3.3 如果有多组数据,同正则方式引用数据 1. 正则表达式提取器 示例数据:{"access_to…...

海洋网站建设性价比高/大搜推广

1.纹理坐标 纹理坐标是纹理图像上的坐标,通过纹理坐标可以在纹理图像上获取纹理颜色。WebGL系统中的纹理坐标系统是二维的,如图所示。为了将纹理坐标和广泛使用的x、y坐标区分开来,WebGL使用s和t命名纹理坐标(st坐标系统&#xff…...

如何让订阅号菜单做微网站/搜什么关键词能找到网站

项目地址:http://www.freeteam.cn/密码设置从右侧管理菜单点击密码设置进入。输入正确的当前密码和新密码后点击修改即可。转载于:https://blog.51cto.com/3357346/2322921...

左侧伸缩隐藏菜单时尚flash网站/电商seo优化

外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用。 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展…...

网站流量10g/代写1000字多少钱

阅读本文前,请您先点击上面的蓝色字体,再点击“关注”,这样您就可以继续免费收到文章了。每天都有分享,完全是免费订阅,请放心关注。 …...

常州外贸网站建设公司/百度手机关键词排名工具

这段时间一直在研究hdmi-servers,因为友善对这个在是闭源的,所以由于兴趣的关系和工作的关系,决定自己写一个hdmi-servers。 在hdmi中,最关键的是弄清楚了Hdmi显示数据的怎么来的,怎么输出的。 在s5pv210数据手册上,在…...

做动态网站可以不写代码吗/百度提交入口网址截图

前言本文通过四种方式来告诉你如何使用,虽然有一种被放弃了。今日早读文章由老虎集团joking_zhang翻译授权分享。正文从这开始~~使用 React 时,我们的默认思维方式应该是 不会强制修改 DOM ,而是通过传入 props 重新渲…...