![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 53
统一GR和QFT
致力于统一广义相对论和量子场论。
展开
-
MySQL中的null走索引吗
https://zhuanlan.zhihu.com/p/78761196原创 2021-10-06 17:47:04 · 4685 阅读 · 0 评论 -
HTTP缓存
https://www.cnblogs.com/chengxs/p/10396066.html原创 2021-08-19 08:55:00 · 143 阅读 · 0 评论 -
Cookie和Session和SessionStorage和LocalStorage
https://www.cnblogs.com/zr123/p/8086525.html转载 2021-08-18 18:59:11 · 155 阅读 · 0 评论 -
Nacos
【Nacos视频教程(无废话版)-哔哩哔哩】https://b23.tv/37HqjJ原创 2021-06-29 00:06:12 · 96 阅读 · 0 评论 -
学成在线网页展示
门户页面(首页)系统管理教学管理原创 2021-06-03 09:21:31 · 126 阅读 · 0 评论 -
学成在线项目扩展(应付面试)
主页使用Vue,主页菜单存Redis。课程详情页使用静态页面,以便SEO,使用CMS发布到Nginx服务器。原创 2021-06-01 09:14:18 · 746 阅读 · 0 评论 -
订单服务(分布式事务)
用户支付完成会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。而学生选课信息在学习中心数据库,由学习服务去维护学习中心数据库的信息。下图是系统结构图:如何实现两个分布式服务(订单服务、学习服务)共同完成一件事即订单支付成功自动添加学生选课的需求,这里的关键是如何保证两个分布式服务的事务的一致性。消息队列实现最终一致CAP理论。放弃实时一致性,保证最终一致性。创建订单工程xc-service-manage-order。创建订单数据库xc_order(MySQL)。xc_or原创 2021-05-31 20:52:11 · 979 阅读 · 1 评论 -
登录功能(接上一篇)
用户授权业务流程业务流程说明如下:1、用户认证通过,认证服务向浏览器cookie写入token( 身份令牌)2、前端携带token请求用户中心服务获取jwt令牌前端获取到jwt令牌解析,并存储在sessionStorage3、前端携带cookie中的身份令牌及jwt令牌访问资源服务前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是http header中的jwt前端请求资源服务前在http header上添加jwt请求资源4、网关校验token的合法性用户请求原创 2021-05-31 14:02:12 · 194 阅读 · 0 评论 -
用户认证与授权(登录功能)
截至目前,项目已经完成了在线学习功能,用户通过在线学习页面点播视频进行学习。如何去记录学生的学习过程呢?要想掌握学生的学习情况就需要知道用户的身份信息,记录哪个用户在什么时间学习什么课程;如果用户要购买课程也需要知道用户的身份信息。所以,去管理学生的学习过程最基本的要实现用户的身份认证。什么是用户身份认证?用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份合法方可继续访问。常见的用户身份认证表现形式有:用户名密码登录,指纹打卡等方式。什么是用户授权?用户认证通过后去访问系统的资源,系原创 2021-05-31 10:35:02 · 3542 阅读 · 0 评论 -
媒资管理(接上一篇)
一、视频处理原始视频需要经过编码处理,生成m3u8和ts文件方可基于HLS协议播放视频。用户上传原始视频,系统需要自动处理成标准格式,系统对用户上传的视频自动编码、转换,最终生成m3u8文件和ts文件,处理流程如下:1、用户上传视频成功2、系统对上传成功的视频自动开始编码处理3、用户查看视频处理结果,没有处理成功的视频用户可在管理界面再次触发处理4、视频处理完成将视频地址及处理结果保存到数据库视频处理流程如下:视频处理进程的任务是接收视频处理消息进行视频处理,业务流程如下: 1、监听MQ,原创 2021-05-30 21:45:00 · 380 阅读 · 0 评论 -
在线学习功能
一、需求描述学生登录进入学习中心即可在线学习:1、学生可以在windows浏览器上在线观看视频(录播课程)。2、播放器具有快进、快退、暂停等基本功能。3、学生可以方便切换章节进行学习。什么是录播课程?录播课程就是提供录制好课程视频,供用户在线点播,反复学习。课程视频如何管理?媒资管理系统专门来管理课程视频,用户视频文件上传到媒资系统,并对视频进行编码处理。二、视频点播解决方案流媒体概括理解:流媒体就是将视频文件分成许多小块儿,将这些小块儿作为数据包通过网络发送出去,实现一边传输视频数据原创 2021-05-30 20:12:37 · 433 阅读 · 0 评论 -
课程发布(简略版)
一、流程课程发布后将生成正式的课程详情页面,课程发布后用户即可浏览课程详情页面,并开始课程的学习。课程发布生成课程详情页面的流程与课程预览业务流程相同,如下:1、用户进入教学管理中心,进入某个课程的管理界面2、点击课程发布,前端请求到课程管理服务3、课程管理服务远程调用CMS生成课程发布页面,CMS将课程详情页面发布到服务器4、课程管理服务修改课程发布状态为 “已发布”,并向前端返回发布成功5、用户在教学管理中心点击“课程详情页面”链接,查看课程详情页面内容二、实现CMS一键发布接口根原创 2021-05-30 17:28:49 · 473 阅读 · 0 评论 -
课程预览和课程详情
一、课程详情页面技术方案技术需求课程详情页面是向用户展示课程信息的窗口,课程相当于网站的商品,本页面的访问量会非常大。此页面的内容设计不仅要展示出课程核心重要的内容而且用户访问页面的速度要有保证,有统计显示打开一个页面超过4秒用户就 走掉了,所以本页面的性能要求是本页面的重要需求。本页面另一个需求就是SEO,要非常有利于爬虫抓取页面上信息,并且生成页面快照,利于用户通过搜索引擎搜索课程信息。解决方案对于不会频繁改变的信息可以采用页面静态化的技术,提前让页面生成html静态页面存储在nginx服务器原创 2021-05-30 17:08:56 · 490 阅读 · 0 评论 -
Eureka和Ribbon简介
Eureka注册中心在前后端分离架构中,服务层被拆分成了很多的微服务,微服务的信息如何管理?Spring Cloud中提供服务注册中心来管理微服务信息。为什么要用注册中心? 1、微服务数量众多,要进行远程调用就需要知道服务端的ip地址和端口,注册中心帮助我们管理这些服务的ip和 端口。 2、微服务会实时上报自己的状态,注册中心统一管理这些微服务的状态,将存在问题的服务踢出服务列表,客户端获取到可用的服务进行调用。Eureka Server搭建创建xc-govern-center工程。需要引入相关依原创 2021-05-30 14:46:33 · 424 阅读 · 1 评论 -
课程管理(简略版)
一、流程本项目为教学机构提 供课程管理功能,教学机构可以添加属于自己的课程,供学生在线学习。课程管理包括如下功能需求:1、分类管理2、新增课程3、修改课程4、预览课程5、发布课程用户的操作流程如下:1、进入我的课程;2、点击“添加课程”,进入添加课程界面;3、输入课程基本信息,点击提交;4、课程基本信息提交成功,自动进入“管理课程”界面,点击“管理课程”也可以进入“管理课程”界面;5、编辑图片上传课程图片。6、编辑课程营销信息营销信息主要是设置课程的收费方式及价格。原创 2021-05-30 11:36:51 · 1541 阅读 · 1 评论 -
CMS功能
一、使用web服务(例如nginx)的SSI技术,将多个子页面合并渲染输出。将首页拆分成:index.html:首页主体内容include/header.html:头部区域include/index_banner.html:轮播图include/index_category.html:左侧列表导航include/footer.html:页尾二、什么是单页应用? 引用百度百科:单页面应用的优缺点:优点: 1、用户操作体验好,用户不用刷新页面,整个交互过程都是通过Ajax来操作。 2、原创 2021-05-29 17:32:32 · 529 阅读 · 0 评论 -
Netty补
https://segmentfault.com/a/1190000020599687?utm_source=tag-newesthttp://ifeve.com/%E8%B0%88%E8%B0%88netty%E7%9A%84%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%9E%8B/原创 2021-05-27 17:16:40 · 80 阅读 · 0 评论 -
Nginx笔记
https://nishigouzi.github.io/2020/06/07/Nginx%E7%AC%94%E8%AE%B0/#more转载 2021-05-21 16:59:14 · 109 阅读 · 0 评论 -
学成在线项目扩展
订单服务消费端幂等性采用谷粒商城的实现方式。生产端可靠性采用云E办的实现方式。分布式定时任务采用乐观锁的方式(本项目的实现方式)。原创 2021-05-20 15:34:40 · 85 阅读 · 0 评论 -
CMS功能(实现)
xc-service-manage-cms服务目录如下:先看CmsPageController,它实现了CmsPageControllerApi(该接口在xc-service-api服务下)接口:@Api(value="cms页面管理接口",description = "cms页面管理接口,提供页面的增、删、改、查")public interface CmsPageControllerApi { //页面查询 @ApiOperation("分页查询页面列表")原创 2021-05-02 17:27:34 · 242 阅读 · 0 评论 -
CMS功能(简介和配置)
CMS (Content Management System)即内容管理系统,在本项目中主要用来管理静态页面。可以理解为,CMS帮你把一个网站的程序部分的事全做完了,你要做的只是一个网站里面美工的部分,搞几个静态网页模板,一个门户级的网站就出来了!CMS,大概2004以前,如果想进行网站内容管理,基本上都是靠手工维护,但面对千变万化的信息流,若没有好的程序支持,还继续靠手工完成是不可能的事,如果有一个好的系统来支撑你的网站,那将节省大量的人力物力,开发者就可能给客户一个软件包,可以用它定期人工修改网站。只原创 2021-05-02 11:33:46 · 4327 阅读 · 1 评论 -
项目整体认识
该项目是一个微服务项目。先看“父”项目xc-framework-parent,里面就只有个pom.xml,用来做其它微服务依赖的版本管理。内容如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sche原创 2021-04-30 11:27:45 · 262 阅读 · 1 评论 -
在线聊天功能
使用WebSocket实现。导入依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>WebSocketConfig配置类如下:@Configuration@EnableWebSocketMessageBroker /原创 2021-04-28 22:37:15 · 597 阅读 · 0 评论 -
个人中心功能
AdminInfoController如下://个人中心@RestControllerpublic class AdminInfoController { @Autowired private IAdminService adminService; @ApiOperation(value = "更新当前用户信息") @PutMapping("/admin/info") public RespBean updateAdmin(@RequestBody Admi原创 2021-04-27 21:27:58 · 789 阅读 · 0 评论 -
消息队列和邮件发送
邮件功能是一个新的项目。<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency&g原创 2021-04-27 20:13:48 · 1498 阅读 · 2 评论 -
各种增删改查(部门管理)
部门管理DepartmentController。@RestController@RequestMapping("/system/basic/department")public class DepartmentController { @Autowired private IDepartmentService departmentService; @ApiOperation(value = "获取所有部门") @GetMapping("/") public原创 2021-04-26 19:13:42 · 746 阅读 · 0 评论 -
各种增删改查(员工管理)
员工管理EmployeeController。@RestController@RequestMapping("/employee/basic")public class EmployeeController { @Autowired private IEmployeeService employeeService; @Autowired private IPoliticsStatusService politicsStatusService; @Autowir原创 2021-04-26 14:09:08 · 492 阅读 · 0 评论 -
各种增删改查(职位管理、职称管理和权限组管理)
职位管理PositionController。@RestController@RequestMapping("/system/basic/pos")public class PositionController { @Autowired private IPositionService positionService; @ApiOperation(value = "获取所有职位信息") @GetMapping("/") public List<Posi原创 2021-04-25 20:45:18 · 304 阅读 · 0 评论 -
各种增删改查(AdminService和MenuService)
AdminService里面的方法。登录功能RespBean login(String username, String password, String code, HttpServletRequest request);Admin getAdminByUserName(String username);@Override public Admin getAdminByUserName(String username) { return adminMapper.selectO原创 2021-04-25 16:20:31 · 1450 阅读 · 0 评论 -
全局异常处理
@RestControllerAdvicepublic class GlobalException { @ExceptionHandler(SQLException.class) public RespBean MySQLException(SQLException e){ if (e instanceof SQLIntegrityConstraintViolationException){ return RespBean.error("该数据有.原创 2021-04-25 11:22:04 · 54 阅读 · 0 评论 -
Redis
考虑到菜单列表一般来说变动不大,因此可以放到Redis中。Redis在application.yml中的配置如下(配置在spring栏下面): redis: #超时时间 timeout: 10000ms #服务器地址 host: 192.168.10.100 #服务器端口 port: 6379 #数据库 database: 0 #密码 password: root lettuce: pool:原创 2021-04-25 10:10:05 · 71 阅读 · 0 评论 -
登录功能
前端要登录,需要调用登录接口,因此后端必须要有LoginController。先看LoginController中的 /login 登录功能的实现。 @ApiOperation(value = "登录之后返回token") @PostMapping("/login") public RespBean login(@RequestBody AdminLoginParam adminLoginParam, HttpServletRequest request){ retur原创 2021-04-23 19:33:44 · 1028 阅读 · 0 评论 -
项目介绍和搭建
先创建maven工程,导入依赖。配置application.yml,配置项包括server.port,spring,数据源,redis,rabbitMQ,mybatis-plus,logging和自定义配置。根据功能编写DAO层,service层,controller层和实体类(pojo)。首先明确项目功能,然后设计数据库表,在MySQL中创建需要的表和字段,使用MyBatis-plus的代码生成器,生成pojo类、controller、mapper接口、service。生成的文件如图所示。首原创 2021-04-23 09:38:49 · 102 阅读 · 0 评论 -
读写锁
https://www.cnblogs.com/fsmly/p/10721433.html转载 2021-04-20 14:51:45 · 67 阅读 · 0 评论 -
LeetCode题型总结
括号题使用栈,或者使用变量left和right分别记录左括号和右括号的数量。原创 2021-04-08 21:50:42 · 79 阅读 · 0 评论 -
LeetCode中的动态规划题总结
一、动态规划题中,出现某个点可能取n个状态时,可以设置n个数组,用来记录这n个状态。(1)简化一下这个问题:一棵二叉树,树上的每个点都有对应的权值,每个点有两种状态(选中和不选中),问在不能同时选中有父子关系的点的情况下,能选中的点的最大权值和是多少。我们可以用 f(o)表示选择 o 节点的情况下,o 节点的子树上被选择的节点的最大权值和;g(o) 表示不选择 o 节点的情况下,o 节点的子树上被选择的节点的最大权值和;l 和 r 代表 o 的左右孩子。(2)我们用 f[i] 表示第 i 天结原创 2021-04-01 10:53:51 · 160 阅读 · 0 评论 -
LeetCode锻炼代码能力的题
字母异位词分组public List<List<String>> groupAnagrams(String[] strs) { Map<String, List<String>> map = new HashMap<String, List<String>>(); for (String str : strs) { char[] array = str.toCharArray(.原创 2021-03-19 10:52:21 · 112 阅读 · 0 评论 -
Leetcode里的常用函数
Math.max(a, b)Arrays.sort()s.compareTo("…")map.getOrDefault()Map<a, b> map = new LinkedHashMap<>();for(Map.Entry<a, b> entry : map.entrySet()){ if(entry.getValue()) return entry.getKey();}Math.abs()num >>>...原创 2021-03-13 16:55:23 · 345 阅读 · 0 评论 -
Java如何将字符转化为字符串
https://m.wenda.so.com/q/1372899262064339?src=140原创 2020-12-15 09:15:54 · 434 阅读 · 0 评论 -
开源项目
SpringBoot要扫描被调用的其它包(微服务)。原创 2020-08-28 14:18:36 · 70 阅读 · 0 评论