- 博客(353)
- 收藏
- 关注
原创 SpringCloud和微服务
什么是微服务小餐馆一个人既点单,又做饭,还收钱。人流量不打可以应付。大餐厅专人点单,专人做饭,专人收钱。成本大,效率更高,适用于流量较大体系。微服务的概念相当于大餐厅的服务模式。适用场景小网站使用单体架构即可,用户量很大的网站使用成本更高的微服务。...
2022-05-27 09:07:30
370
原创 根据ID获取问题
定义接口 /** * 根据问题的ID查询一个问题数据 */ Question getQuestionById(Integer id);实现接口 @Override public Question getQuestionById(Integer id) { //selectById mybatisplus自带方法,通过id查询数据。id不是主键时查不到数据 Question question = questionMapper.
2022-04-15 17:02:39
931
原创 java List
List接口介绍:java.util.List接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接口特点:它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。
2022-04-15 16:22:52
399
原创 显示讲师的问题列表
学生界面和讲师界面最大的区别是问题列表,学生显示的是自己发布的问题列表,而讲师界面显示的是讲师发布的问题和讲师需要解答的问题列表。讲师发布的问题的目的是为学生创建经典问题和答案。...
2022-04-15 10:33:28
704
原创 不通过字典获得转意字段(通过sql)
首先重温一下左连接以左表为基础,根据ON后给出的两表的条件将两表连接起来。结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分。左连接全称为左外连接,是外连接的一种。数据库关系notice表中存的publisher字段是发布人的idnotice表中存的publish_organ字段是发布人单位的id现在要写个sql通过id查询到对应的用户姓名和用户单位。用户表为sys_user,部门表为sys_departSELECT n.id, n.title, n.content..
2022-04-13 17:43:57
240
原创 根据用户名隐藏按钮
首先引入js-cookie依赖,如果已经有依赖了直接进入下一步。npm install js-cookie --save在登录组件中导入并对Cookies的参数进行set传值import Cookies from 'js-cookie'loginSuccess () { //登录成功方法获得username Cookies.set('username',this.form.getFieldValue("username")); this.$router.push({ n..
2022-04-12 10:38:04
321
原创 重构summernote上传问题中的图片
$(document).ready(function () { $('#summernote').summernote({ height: 300, tabsize: 2, lang: 'zh-CN', placeholder: '请输入问题的详细描述...', callbacks:{ onImageUpload:function (files) { //onIm.
2022-04-07 17:30:49
496
原创 上传资源到静态服务器
首先将资源地址写在配置文件中straw.resource.path=file:E:/uploadstraw.resource.host=http://localhost:8899Controller中注入资源public class SystemController { //读取自定义配置信息 @Value("${straw.resource.path}") private File resourcePath; @Value("${straw.resour.
2022-04-07 16:34:10
334
原创 静态资源服务器
如何上载问题正文中的图片搭建静态资源服务器application.propertiesserver.port=8899spring.web.resources.static-locations=file:E:/upload然后启动访问URL就可以了
2022-04-05 22:30:26
819
原创 ajax上传文件
ajaxupload.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>ajax提交文件</title> <script src="browser_components/jquery/dist/jquery.min.js"></script></head><body&g
2022-04-04 21:38:52
562
原创 表单文件上载
什么是文件上载文件上载是HTTP协议的扩展标准,具体标椎文件请参考《Form-based File Upload in HTML》https://tools.ietf.org/html/rfc1867,在这个标椎描述了在HTTP协议基础上如何进行文件上载的。Spring文件上载Spring提供了文件上载支持,SpringMVC可以自动解析文件上载请求,将解析完成的文件数据作为参数传递给控制器实现<!DOCTYPE html><html lang="en"&g..
2022-04-02 16:16:14
212
原创 同一异常处理
@RestControllerAdvice@Slf4j/** * 同一异常处理 */public class ExceptionControllerAdvice { /** * ServiceException 处理方法 * @param e */ @ExceptionHandler public R handleServiceException(ServiceException e){ log.debug("处理业务异常").
2022-04-02 15:16:53
151
原创 什么是数据库事务
现在程序中存在一个严重的问题就是事务完整性的问题。要想理解这个问题我们得从什么是事务说起。数据库事务(简称事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。数据库事务拥有以下四个特性,被称为ACID特性。原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据满足完整性约束。隔离性(Isola
2022-04-02 11:15:12
5987
原创 当前用户才可发布情报
/** * 发布 * * @param * @return */ @AutoLog(value = "情报专列-发布") @ApiOperation(value="情报专列-发布", notes="情报专列-发布") @PutMapping(value = "/release") public Result<?> release(@RequestBody LIntelligenceEntity lIntellige
2022-04-01 16:02:54
186
原创 PUT和POST的区别
Post vs PutPost:创建,不安全,不幂等Put:更新或创建,幂等比较容易混淆的是HTTP POST和PUT。POST和PUT的区别容易被简单地误认为“POST表示创建资源,PUT表示更新资源”;而实际上,二者均可用于创建资源,更为本质的差别是在幂等性方面。在HTTP规范中对POST和PUT是这样定义的:The POST method isused to request that the origin server accept the entity enclosed in thereq
2022-03-30 10:49:25
8083
原创 说说你对SpringIOC是怎么理解的
IOC就是控制反转,是指创建对象的控制权的转移。以前创建对象的主动权和时机是由自己把控的,而现在这种权利转移到Spring容器中,并由容器根据配置文件去创建实例和管理各个实例之间的依赖关系。对象与对象之间松散耦合,也利于功能重复利用。DI依赖注⼊,和控制反转是同⼀个概念 的不同⻆度的描述,即应⽤程序在运⾏时依赖IoC容器来动态注⼊对象需要 的外部资源。最直观的表达就是,IOC让对象的创建不用new了,可以由spring自动产生,使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并.
2022-03-28 10:09:09
660
原创 数据库如何处理海量数据
数据库如何处理海量数据对数据库进行分库分表,主从架构,读写分离。水平分库/分表,每个库和表的结构一模一样。垂直分库/分表,每个库和表的结构不一样。读写分离:主机负责写,从机负责读。主从结构概念主从多用于网站架构,因为主从的同步机制是异步的,数据的同步有一定延迟,也就是说有可能会造成数据的丢失,但是性能比较好,因此网站大多数用的是主从架构的数据库,读写分离必须基于主从架构来搭建。...
2022-03-24 16:24:50
4420
原创 get和post请求有哪些区别
用途get请求用于向服务器请求资源post请求用于向服务器提交数据表单提交方式get请求直接将表单数据拼接到URL上,多个参数需要用&连接起来并且用?拼接action后面。www.baidu.com/s?name1=value&name2=valuepost请求将表单数据放到请求头或请求消息体中传输数据大小的限制get请求传输的数据受URL长度的限制,而URL长度是由浏览器决定的post请求传输的数据大小理论上是没有限制的参数的编码get请求..
2022-03-24 16:11:07
133
原创 通知信息只能发布者和管理员有权删除(获取当前登录用户名和用户id)
调用修改和删除的方法 /** * 编辑 * * @param noticeEntity * @return */ @AutoLog(value = "通知公告-编辑") @ApiOperation(value="通知公告-编辑", notes="通知公告-编辑") @PutMapping(value = "/edit") public Result<?> edit(@RequestBody NoticeEntity n.
2022-03-22 10:38:23
718
原创 前端打包报错TypeError: Class extends value undefined is not a constructor or null
解决办法:npm install --save-dev mini-css-extract-plugin
2022-03-22 00:33:32
1866
1
原创 bujinge项目后端部署(scp命令,docker启动)
打开cmd窗口连接远程服务器ssh root@bujinge.com输入密码进入linux服务器利用scp命令将jar包传入/root/target目录下scp命令将文件上传服务器scp -r jeecg-boot-module-system-2.4.6.jar root@bujinge.com:/root/targetscp命令具体参考:https://www.cnblogs.com/rumenz/articles/15145517.html退回/root目录,..
2022-03-22 00:29:09
1309
原创 HTTP响应码的含义
200:成功,服务器成功响应了客户端的请求301:永久重定向,客户端请求一个网址后,web请求会将当前的网址重定向到另一个网址。搜索引擎会抓取重定向后网页内容并且将旧的网址替换为重定向后的地址。302:临时重定向。搜索引擎会抓取重定向后的网页内容并且保留旧的网址,因为搜索引擎认为重定向是暂时的。400:客户端请求错误,多为参数不合法导致web服务器验参失败。404:服务器找不到资源500:web服务器错误,服务器处理客户端请求时发生错误。503:服务器不可用,服务器停机504:网关超时..
2022-03-21 10:19:06
260
原创 创建讲师列表缓存
表结构由于查询标签信息和教师信息需要反复多次对数据库进行查询,每次查询几十毫秒,加起来可能要好几秒,严重影响性能。我们可以增加缓存,这样软件的效率可以提升好多倍。教师的数据可能会有经常变化,我们可以设置一个过期策略,比如一个小时就清空教师散列表,重新加载。...
2022-03-21 00:03:57
338
原创 接收表单数据
为了接收表单数据在Vo中创建信息的值对象。//自动生成getset@Data//链式写法,不用写构造器@Accessors(chain = true)public class QuestionVo implements Serializable { @NotBlank(message = "问题不能为空") @Pattern(regexp = "^.{3,50}$", message = "标题3到50个字符") private String title; .
2022-03-18 10:53:41
268
原创 动态获取教师列表
和获取标签列表基本一致.首先实现获取教师的接口IUserService中加入抽象方法/** * 获取全部解答问题的老师 * @return 老师列表 */ List<User> getMaster();实现方法 /* User表中,所有type为1的是解答问题老师 */ @Override public List<User> getMaster() { QueryWrapper&l
2022-03-15 14:05:25
814
原创 动态获取标签
动态获取标签Vue.component('v-select',VueSelect.VueSelect);let createQuestionApp = new Vue({ el: '#createQuestionApp', data:{ title:'', tags:[], selectedTags: [], }, methods:{ loadTags: function () { .
2022-03-14 15:51:37
1506
原创 显示学员发布问题界面
HomeController中写入指向文件 @GetMapping("/question/create") public ModelAndView create(){ return new ModelAndView("question/create.html"); }运行后访问路径即可进入提问界面。
2022-03-09 15:36:08
198
原创 PageSize分页导航条
分页算法实现了,还需要分页导航链接。PageHelper属性//当前页private int pageNum;//每页的数量private int pageSize;//当前页的数量private int size;//由于startRow和endRow不常用,这里说个具体的用法//可以在页面中"显示startRow到endRow 共size条数据"//当前页面第一个元素在数据库中的行号private int startRow;//当前页面最后一个元素在数据库中的行号
2022-03-06 23:52:37
328
原创 Vue显示分页数据
@RestController@RequestMapping("/v1/question")@Slf4jpublic class QuestionController { @Autowired IQuestionService questionService; @GetMapping("/my") public R<PageInfo<Question>> my(Integer pageNumber){ if (pageNumb
2022-03-06 23:12:41
1167
原创 PageHelper分页技术
翻页原理数据库中数据往往非常多,实际关心的往往是最新的。通常的做法就是分页显示,将数据按一定排序,最关心的先显示出来,如果需要后序数据,用户发起下一页请求即可。sql翻页语句select id,title from question where user_id=11 limit 0,8;从第0条开始,一页8条数据PageHelper翻页组件第三方组件PageHelper提供了上述页号换算Limit参数算法第一步导入组件父工程pom.xml<properties>.
2022-03-06 21:38:44
815
原创 根据标签显示图片
增加界面友好性,为每个问题提供了相关“题图”,但是在数据库中每个问题信息并没有储存图片信息。可以根据tags信息,动态为问题增加一个标签图片属性tagImage,然后利用VUE显示。data:{ myQuestions:[] },methods:{ loadQuestions: function () { $.ajax({ url: '/v1/question/my', method: "G
2022-03-06 17:45:37
549
原创 显示标签列表
重构question方法首先得到冗余属性的tags,把tagnames传入方法,先从逗号把字符串切开,定义tags集合,然后对拿到的names进行遍历,通过name2TagMap得到标签名,把标签加入到tags中,然后返回tags。for (Question q : questions){ List<Tag> tags = tagNamesToTags(q.getTagNames()); q.setTags(tags); }
2022-02-28 16:07:22
161
原创 获得问题标签列表
考虑到一个问题相关到标签一旦选定就很少更改,所以在Question设计一个冗余类tag_names,储存当前问题相关名称,这样查询标签的时候就不用进行复杂关联查询了。但是客服端如何做到完整的Tag信息呢,可以在服务器端利用缓存的tag信息组装一个信息。...
2022-02-28 14:32:16
361
原创 计算时间算法
在method中定义新方法loadQuestions: function () { $.ajax({ url: '/v1/question/my', method: "GET", success: function (r) { console.log("成功加载数据"); console.log(r);
2022-02-24 10:29:03
155
原创 前端渲染我的问题数据
/*显示当前用户问题 */let questionsApp = new Vue({ el:'#questionsApp', data:{ myQuestions:[] }, methods: { loadQuestions:function () { $.ajax({ url: '/v1/question/my', method:"GET",
2022-02-24 09:54:00
389
原创 查询我的问题
文件结构首先,定义抽象方法。返回值为Listpublic interface IQuestionService extends IService<Question> { List<Question> getMyQuestions();}实现方法@Service@Slf4jpublic class QuestionServiceImpl extends ServiceImpl<QuestionMapper, Question> implements
2022-02-23 15:13:38
345
原创 解决yarn install报Chromedriver错误
今天安装yarn install时卡在Chromedriver需要换源进行安装yarn add chromedriver --chromedriver_cdnurl=http://npm.taobao.org/mirrors/chromedriver安装成功
2022-02-23 11:04:05
1116
原创 获得当前登录用户的用户名
我的问题界面控制器转交给业务层,QuestionMapper中存的是所有问题,所以需要带条件进行查询,查询当前用户的问题。SpringSecurity提供了相关API代码文件结构 <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-test --> <dependency> <groupId>org
2022-02-23 09:46:28
1329
原创 利用业务层抓取数据后渲染
上一张已经利用业务层,把数据抓取过来。然后我们利用ajax把数据渲染到网页上。@RestController@RequestMapping("/v1/tags")public class TagController { @Autowired ITagService tagService; @GetMapping("") //用R封装list,然后用list封装tag public R<List<Tag>> tag(){
2022-02-21 14:58:47
280
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人