黑马头条简述

黑马头条

技术栈:springcloudgateway微服务之前架构的网关服务,实现微服务注册的api请求路由,控制流速和熔断处理

Springbootalibaba Nacos作为项目中注册中心和配置中心

Mybatis-plus作为持久层提升开发效率

Kafka完成内部系统消息通知,与客服端系统消息通知,以及实时数据计算

Redis实现热数据的计算,提升系统性能指标

Mysql存储用户数据,保证上层数据查询的效率

Mongo存储用户热数据,保证用户热数据高扩展和高性能指标

Minio作为静态资源存储器,在其上实现热静资源缓存等功能

Es搜索技术,对冷数据,文章数据建立索引,保证冷数据,文章查询性能

运用ai技术,完成系统自动化,提升效率和节约成本

 

常用的加密方式

可逆加密:

对称加密:密钥相同,算法公开,计算量小,效率高 算法:AES,DES,HS256 一般用于保存用户手机号,身份证等敏感信息

非对称加密:两个密匙,公钥私钥。安全性好,只适合对少量数据加密。一般用户签名和认证   RSA,DSA,RS256

不可逆加密:一旦加密就不能反向解密得到密码原文,一般用于校验文件正确性  MD5,BCrypt

Base64编码:网上常用的编码方式,传输8bit字节的编码方式,用于在http环境下传输较长的标识信息(编码方式,不算加密方法)

Token

基于token的用户认证是一种服务端无状态的认证方式(服务无状态就是token本身包含登录用户所有的相关数据)

Jwt是一个开发的行业标准,定义了协议格式,用于通信双方传递json对象,传递的信息经过数字签名可以被校验和信任

Jwt令牌结构由头部,负载,签名三部分构成,每部分中间使用点(.)分割   头部:令牌类型和使用的哈希算法  负载:是一个json对象存放有效信息  签名:防止jwt内容被篡改。前两部分用base64url将前两部分编码,使用点连接组成字符串

Freemarker 模板引擎,基于模板和要改变的数据,生成输出文本

模板编写为FTL语言,模板中专注如何展现数据,模板外专注展现什么数据  freemarker是springmvc的一种视图模式,默认支持

MINIO  对象存储服务,作为云存储的解决方案保存图片视频文档,使用Golang实现。兼容S3云存储服务接口—bucket Objet keys

特点:数据保护,高性能,可扩容,sdk支持,有操作页面

分布式id 雪花算法实现,与时间有关,mybatis-plus集成了雪花算法,在实体类的id上加入@TableId(value=id,type=IdType.Assign_ID)

Feign的实现1.在feign_api中新增接口,定义文章的接口@FeignClient(value=模块名)

  1. 在用户模块中实现该方法   3.在service中实现

用set保存图片地址去审核,去重图片地址

异步线程池

 

@EnableAsync  //开启异步调用

敏感词过滤 DFA算法(确定又穷自动机)

一次性把所有敏感词存储到多个map中

图片文字识别OCR 光学字符识别 Tess4j

延时任务  (定时任务的一种,在未来某一时刻执行,没有重复执行周期)

  1. JDK自带的DelayQueue支持延时获取元素的阻塞队列
  2. 数据库+redis实现

 

存储数据库是一种安全的考虑(备份机制)

Redis的key值匹配

  1. keys的模糊查询,慎用,redis是单线程的,会被阻塞
  2. Scan命令是一个基于游标的迭代器,scan命令每次调用都向用户返回一个新游标

分布式锁:控制分布式系统有序的对共享资源进行操作,通过互斥保证数据的一致性

数据库:基于表的唯一索引

Zookeeper:根据zookeeper中的临时有序节点排序

Redis:使用setnx命令(如果 key 不存在则为 key 设置 value,如果 key 已存在则 SETNX 命令不做任何操作

Long类型转换精度丢失  jackson进行序列化和反序列化(在实体类上加@IdEncrypt

Mongodb 开源的,高性能,无模式的文档型数据库

Es搜索引擎 ik分词器ik_max_word细粒度分词器  ik_smart粗粒度分词器

判断是否是热点文章标准:点赞数,评论数,阅读数,收藏数

定时计算

 

定时任务框架

  1. spring的传统定时任务@Scheduled  任务失败无法重试和统计,集群的重复执行问题
  2. Xxl-job轻量级的分布式任务调度平台 易于监控运维,高可用

 

流式计算  输入是持续的,计算结果是持续输出的。对实时性要求较高,尽量采用增量计算代替全量计算   技术选型Kafka stream

持续集成 (CI) 频繁的将代码集成到主干 Jenkins流行的开源持续集成工具,广泛用于项目开发,具有自动化构建,测试和部署的功能

负载均衡服务器nginx:将请求转发给后端的java微服务端

一个微服务可以部署多份

Nacos注册中心,每个微服务启动之后都可以把自己注册到注册中心中,注册成功就可以拉取注册表(ip和端口)

微服务之间相互调用feign

分布式基础服务:

 

Kafka:分布式消息系统,实时处理大量数据

Es:分布式搜索数据分析引擎

Minio;分布式的对象存储系统

Mongodb:分布式文件存储的数据库,C++编写的 为web应用提供可扩展的高性能数据存储方案

所有请求响应数据都是json数据,请求参数用dto或pageRequestDto(分页的)接收

响应用Responseesult或PageResponseResult(分页的)

垂直分库:数据库拆分为多个数据库,按照业务将表进行分类,分布到不同的数据库上面,每个库可以放在不同的服务器上,它的核心理念是专库专用

技术架构:ssm+spingCloud+mysql+mongdb(分布式关系型数据库)

 

开发接口:1.需求分析  2.表结构   3.api接口文档   4.三层结构开发:controller,service,mapper

加密算法:bcrypt(不可逆加密)

开发中用的都是伪随机数(代码生成),真随机数(硬件生成)

Jwt生成token。解决分布式环境下session同步的问题,生成jwt令牌,解析jwt令牌

Jwt:主要使用对称的加密算法,hs256

Header:签名的加密算法   payload(载荷)数据   signature:签名

网关统一认证token

网关:统一处理请求,请求转发,过滤。场景:限流,日志,认证,跨域

过滤用过滤器(全局过滤器),转发用路由(动态路由)

动态路由使用了负载均衡,提高了性能

网关如何认证token:1.请求路径放行 2.获取请求头token  3.token非法401  4.token解析失败  5.token合法放行

自定义mapper写动态sql实现:固定条件:状态正常,固定条数limit,排序方式(order by)

动态条件: ?用#{}代替   < 小于 > 大于

文章内容不会经常变,查询效率高且要求响应快用生成静态页面的方式

freeMarker 静态模板引擎(后缀ftl的模板)

两种方式:数据+模板 动态渲染+静态渲染

Minio:bucket桶  keys  object

有上传需求的加minio的依赖,谁用谁加

如何判断用户是否登录:1.getewayFilter+interceptor+ThreadLocal业务代码里通过ThreadLocalUtil.getUserId()

  1. getewayFilter+interceptor拦截器发现请求头userId无值,统一响应未登录错误

创建唯一文件名  UUID+后缀

分页生效添加分页拦截器。分页查询逻辑:设置分页参数,动态拼接查询条件,page执行分页查询,封装PageResponseResult

多对多的关系一般用中间表

业务严谨性代码,一般在业务处理入口。参数是否为空,参数值是否合法,数据是否存在,数据状态是否正确

审核:高效审核

审核内容全面:文本,图片,图片中的文本(用tess4j识别)

三轮审核:dfa审核(自定义的敏感词) 阿里云文本审核 阿里云图片审核

Dfa使用步骤;1.初始化词库 2.检测文本  3.得到map响应结果

阿里云审核得到suggestion的处理结果,block审核失败,review不确定人工审核

线程池异步审核:1.待审核数据(全部文本,全部图片地址) 2.三轮审核  3.决定如何发布文章

Feign的使用 规范:1.在feign-api模块中定义feign接口类  2.在提供方模块中定义controller实现feign接口类   3.在调用方启动类开启feign扫描并注入feign接口类

Kafka理论:单机有序,集群无序

kafka体系:

 

Partition分区的好处:实现三高高吞吐,高性能,高可用

Offset偏移量

秒分时日月周

MongoDB高性能开源的无模式的文档型数据库,是非关系型数据库

ACID原子性一致性隔离性持久性

使用场景:海量数据存储,读写性能要求高,事务要求不严格,数据结构不定

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

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

相关文章

黑马头条-day02

文章目录 前言一、文章列表加载1.1 需求分析1.2 表结构分析1.3 导入文章数据库1.4 实现思路1.5 接口定义1.6 功能实现 二、freemarker2.1 freemarker简介2.2 环境搭建&&快速入门2.2.1 创建测试工程 2.3 freemarker基础2.3.1 基础语法种类2.3.2 集合指令2.3.3 if指令2.3…

百度沈抖:文心一言将通过百度智能云对外提供服务

2月17日&#xff0c;在2023 AI工业互联网高峰论坛上&#xff0c;百度智能云宣布“文心一言”将通过百度智能云对外提供服务&#xff0c;为产业带来AI普惠。 百度集团执行副总裁、百度智能云事业群总裁沈抖表示&#xff0c;“文心一言”是基于百度智能云技术打造出来的大模型&a…

大模型落地比趋势更重要,NLP+金融如何看得见、摸得着?

全球很多人都开始相信&#xff0c;以ChatGPT为代表的大模型&#xff0c;将带来一场NLP领域乃至整个人工智能的技术革命&#xff0c;影响遍及各行各业。 那么&#xff0c;金融机构和科技企业&#xff0c;应该以怎样的姿态迈入新的洪流&#xff1f; 前不久&#xff0c;有“中国智…

关于算力的未来,新一代PowerEdge告诉你答案

从ChatGPT等大模型海量参数的训练&#xff0c;自动驾驶领域感知模型的训练与仿真&#xff0c;到蛋白质机构预测、流体力学仿真等AIScience&#xff0c;再到矿山、交通、能源等部署广泛的边缘计算设备…… 如今&#xff0c;我们愈发确切地认识到&#xff0c;算力在数字经济时代不…

Meta 推出大型语言模型 LLaMA,比 GPT3.5 性能更高

整理 | 禾木木 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; ChatGPT 的爆火使得大家对 AI 进行了深度的讨论&#xff0c;大厂们也都在向公众展示他们所谓的 "生成性人工智能"已经准备好进入黄金时代。 近日&#xff0c;Meta 宣布…

Chat Bot(聊天机器人)自动化测试脚本来解决人工测试的问题

问题描述&#xff1a;有一个Oliver Cafe Shop聊天机器人&#xff0c;如何实现自动化脚本自动测试这个聊天机器人的功能。 实现效果&#xff1a;通过代码来实现客户端发送请求来代替Bot Framework Emulator输入Tea,然后客户端监听和接收服务器端(Bot)发来的回复(图片中选择drin…

postman发送需要登录验证的请求

使用postman 发送后台需要登录验证的请求 postman需要填写的参数 Authorization的获取方式 打开前台发送一个成功的请求 找到里面的Authorization粘贴到postman参数那里就可进行请求了

Postman发送请求时带上登录信息

正常情况下&#xff0c;没有登录验证等公共接口&#xff0c;用postman进行get或post请求都很方便&#xff0c;加上相应的参数就行。 但是对于某些接口&#xff0c;可能需要先登录后才能请求&#xff0c;这时如果按正常的思路请求&#xff0c;可能就会被拦截了。 对于这种情况…

避免跳出谷歌人机验证 reCAPTCHA界面的解决方法

第一次遇到跳出谷歌人机验证 reCAPTCHA界面只要点击窗口就没有问题了&#xff0c;心里还感叹了下谷歌能把人机验证这事做的这么好&#xff0c;不错。然而这个窗口还是会不断调出来扰人 &#xff0c;导致使用Chrome浏览器搜索变得很慢&#xff0c;体验感极速下降&#xff0c;非常…

postman 请求时提示需要登录解决方案

在postman中没有输入登入信息时会遇到下面的提示。 只需在游览器控制台中 network 找到对应的请求&#xff0c; 在其中找到有关 Authority 的 Request Headers &#xff0c;将其复制 粘贴到postman中 再次执行&#xff0c;结果成功。

postman 登录--先获取到短信验证码,然后短信验证码的返回值作为登录接口的某一个请求值

业务场景&#xff1a;使用postman完成登录&#xff0c;先从一个接口获取到验证码&#xff0c;然后登录接口调用这个验证码 1.先写获取到验证码这个接口&#xff0c;返回的结果如下&#xff0c;我需要获取到data的值 2.然后需要把这个data返回的值设置成变量 //把data的值打…

使用postman完成需要发送验证码的会员注册请求

目标&#xff1a; 使用postman完成移动端的会员注册功能。 背景&#xff1a; 移动端会员注册时需要输入验证码&#xff0c;才能完成注册。 PC管理端有短信发送历史页面&#xff0c;能查询到注册时发送的验证码&#xff0c;验证码格式如下&#xff1a; [ uat_AutoTest ] 尊敬的用…

【异常解决】postman请求提示Full authentication is required to access this resource

Full authentication is required to access this resource解决方案 一、背景描述二、解决方案 一、背景描述 在使用 postman 测试接口时&#xff0c;该接口需要在 Header 中传入 access_token&#xff0c;实际上也在请求的 Header 中添加上了 access_token 参数&#xff0c;但…

请求后端返回的验证码显示的情况

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、情况一&#xff1a;数据是图片文件流二、情况二&#xff1a;直接返回是图片情况三&#xff1a;uni小程序的登录验证 最后 前言 在实际的项目中验证码登录几…

postMan 测试显示验证码

在postman的选项卡Test中&#xff0c;可以编写html格式的显示模板&#xff0c;在格式化显示时&#xff0c;变量使用的方式是两个大括号包着一个变量名{{变量名}}。 现在后端返回到前端的数据格式 一般是JSON格式&#xff0c;所以编写测试脚本要先把JSONW文本转换为JSON对象&am…

UNIX 工作站的大规模灭绝

行业快速迭代下&#xff0c;软硬件的淘汰速度似乎远超我们的想象。 链接&#xff1a;https://www.osnews.com/story/135605/the-mass-extinction-of-unix-workstations/ 声明&#xff1a;本文为 CSDN 翻译&#xff0c;未经允许禁止转载。 作者 | Thom Holwerda 译者 | 弯月…

【计算机网络】| Http.*协议该知道的那些事儿 | 面经

本文章参考了很多文档文献整理成狮子自己喜欢的风格类型文字&#xff0c;主要有&#xff1a; 《图解网络-小林coding》、Github上面的《前端语音社群》&#xff0c;ChatGpt 3.5 大家有兴趣可以去找来看看&#xff0c;一起上岸&#xff01;&#xff01;&#xff01; 目录 面试官…

GPT-3问答机器人实战【LangChain】

原文&#xff1a;https://www.toutiao.com/article/7211527561673867779/?log_frome0e756d2bfaf5_1683079005521 ChatGPT 几个月前问世&#xff0c;并以其回答来自广泛知识集的问题的能力震惊了所有人。 在 ChatGPT 展示大型语言模型的强大功能时&#xff0c;Dagster 核心团队…

三秒钟,我要拿到世界杯所有队伍阵容信息

文章目录 &#x1f550;Im coming~&#x1f551;我写了个啥&#xff1f;&#x1f554;咋写的&#xff1f;&#x1f558;代码供上&#x1f55b; See you next time 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析Django基础入门宝典&#x1f52…

2022世界杯结果预测,简单AI模型最有效?附代码!

2022世界杯冠军是谁&#xff1f;本文将为你揭晓一个利用简单AI模型得到的靠谱预测。 许多人称足球为“不可预测的比赛”&#xff0c;因为一场足球比赛有不同的因素可以改变最终比分。 这是真的……在某种程度上。 北大出版社&#xff0c;人工智能原理与实践 人工智能和数据科…