<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IAN_JIANG的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_48997613</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_48997613]]></copyright><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十六)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108794110</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108794110</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:55:18 +0800</pubDate><description><![CDATA[一、发表答案--持久层

运行代码生成器项目，输入表名answer，并将生成的各文件复制到对应的项目中，并修改代码中的错误，由于接下来还会开发“评论”相关功能，再次运行代码生成器项目，输入表名comment，重复制刚才的步骤，将各代码文件复制到正确的位置。

发表答案时持久层需要执行操作是“插入答案数据”，该功能在Mybatis Plus框架中已经实现了，无须开发！

在执行发表答案之前，还应该检查对应的“问题”是否存在，如果“问题”不存在，是不允许发表的！这项检查可以通过此前已经完成的Questio...]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十五)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108793902</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108793902</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:54:53 +0800</pubDate><description><![CDATA[目录

一、服务器端向客户端响应“问题”的标签列表数据【续】

二、显示“我的问答”分页链接

三、显示问题详情--显示页面

四、显示问题详情--持久层

五、显示问题详情--业务层

六、显示问题详情--控制器层

七、显示问题详情--前端页面

一、服务器端向客户端响应“问题”的标签列表数据【续】

当已经把各标签数据存入到Redis中，则在需要获取标签数据时，直接从Redis中获取即可！

目前，服务器端响应到客户端的数据中交不包含“标签列表”，只有各“问题”对应的“标签的id的列表”：



所以]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十四)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108750897</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108750897</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:53:58 +0800</pubDate><description><![CDATA[一、服务器端向客户端响应“问题”的标签列表数据

目前，每个“问题”数据都包含tagIds数据，值例如"1, 2"、"8, 10, 15"，在客户端显示数据时，需要显示出对应的标签名称，例如需要得到"Java基础"、"JavaOOP"等字样，则服务器端向客户端响应“问题”数据时，应该包含该“问题”的标签数据！

由于标签数据的数量较小，并且这些数据被修改的频率非常低，查询频率偏高，可以将所有的标签数据都存放在Redis中，便于提高查询效率！

要使用Redis查询标签数据，首先，需要将每一个标签都存入到Re]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十三)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108738551</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108738551</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:53:22 +0800</pubDate><description><![CDATA[目录

一、热点问题列表---持久层

二、热点问题列表---业务层

三、热点问题列表---控制器层

四、热点问题列表---前端页面

1.在主页通过模拟数据显示“热点问题列表”

2.使用真实数据显示“热点问题列表”

3. 在其它页面复用“热点问题列表”

五、显示“我的问答”列表--持久层

六、关于PageHelper框架

七、显示“我的问答”列表--业务层

八、显示“我的问答”列表--控制器层

附：关于GET与POST

一、热点问题列表---持久层

查询热点问题列表时，需要执行的SQ]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十二)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108718761</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108718761</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:48:27 +0800</pubDate><description><![CDATA[一、文件上传

1.使用Ajax实现文件上传

首先，需要在页面中引入jQuery框架，先准备一个jQuery的.js文件，放到静态资源目录下，然后，在HTML文件中引用：





为了避免点击按钮时提交同步请求，先将按钮的类型改为button，然后绑定单击事件：



此时，启动项目，点击按钮时，即可弹出警告！

测试无误后，在以上函数中实现异步提交：



2.处理多文件上传

在处理多文件上传时，首先，必须明确这多个文件的数量、定位是否明确！

假设需要实现的功能是“上传身份证照片的正反面照片”，.]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十一)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108652826</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108652826</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:47:03 +0800</pubDate><description><![CDATA[一、发布问题---控制器层

当前用户登录是在straw-gateway的服务器上处理的，当登录成功后，表示该用户的信息的Session数据将保存在straw-gateway的服务器的内存，而其它服务器（例如straw-api-question）需要读取Session中的数据以识别用户的身份，及读取相关信息，但是，其它服务器不可能访问straw-gateway服务器的内存！为了实现共享Session，可以在登录成功时，将用户的Session数据保存到Redis服务器中，而不再是保存在内存中，当其它服务器需要]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(十)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108628718</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108628718</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:41:22 +0800</pubDate><description><![CDATA[一、标签列表---前段页面【续】

目前，启动所有项目，通过 http://localhost/api-question/v1/tags 可以获取标签列表数据，通过 http://localhost 可以打开主页，且，在主页的偏顶部位置会显示模拟数据的“标签列表”，接下来，应该通过Vue向服务器端发送请求，获取真实的标签列表数据，然后将数据绑定到Vue属性中，使得网页中显示这些数据 ：


let tagsApp = new Vue({
    el: '#tagsApp',
    data: {
   ]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(九)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108605587</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108605587</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:37:20 +0800</pubDate><description><![CDATA[目录

一、Redis的基本使用

二、SpringBoot中的计划任务

三、定期向Redis中更新标签列表

四、从Redis中获取标签列表

五、通过网关转发访问以上控制器

六、标签列表---前端页面

一、Redis的基本使用

在Windows系统中，当安装了Redis后，会自动启动Redis的服务，每次开机时Redis就会启动，是可以直接使用的，检验的标准可以通过“登录Redis客户端的控制台”来判断：





如果已经登录了，但并不确定当前Redis是否正在运行，也可以通过ping命令来.]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(八)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108579558</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108579558</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:31:20 +0800</pubDate><description><![CDATA[目录

一、使用网关验证登录并授权【续】

7.使用Spring Security实现登录

二、完善注册功能

三、使用自定义的登录页面

四、标签列表---持久层

五、标签列表---业务层

六、关于Redis

附：关于Slf4j

附（二）：相关软件

一、使用网关验证登录并授权【续】

7.使用Spring Security实现登录

在使用Spring Security实现登录验证时，如果需要使用 UserDetailsService ，必须自定义一个 WebSecurityConfigure]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(七)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108553236</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108553236</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:29:12 +0800</pubDate><description><![CDATA[目录

一、使用网关验证登录并授权

1.思路

2.网关配置

3.查询某用户的信息

4.根据用户名查询用户的权限信息

5.在业务层实现查询用户详情及权限列表

6.通过用户名获取用户基本信息和权限列表

一、使用网关验证登录并授权

1.思路

网关是服务器的集群中的第一入口，也是唯一入口，应该在这个入口就直接检查用户的登录信息，如果登录成功，授权也应该直接完成，而不是在集群中其它的服务器中进行登录验证和授权，因为如果用户登录信息有误，一开始都不允许执行到集群之内，而是在网关就直接回绝用户的请求！所]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(六)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108539706</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108539706</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:20:13 +0800</pubDate><description><![CDATA[目录

一、处理密码加密

二、关于Spring Security框架验证登录

三、使用Spring Security框架验证授权访问

四、使用UserDetails验证用户信息

一、处理密码加密

使用Spring Security框架可以实现Bcrypt算法加密，是非常安全的对密码进行加密处理的算法！

关于Spring Security框架的依赖参考代码是：


&lt;!-- https://mvnrepository.com/artifact/org.springframework.boot]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(五)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108498540</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108498540</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 15:08:19 +0800</pubDate><description><![CDATA[目录

一、关于Eureka注册中心

1.相关术语

2.Eureka Server集群

3.Eureka Server的自我保护机制

二、Zuul网关

三、处理注册页面

附一：关于$.ajax()函数

附二：关于密码加密

一、关于Eureka注册中心

1.相关术语

Eureka Server：Eureka服务器项目，也称之为“注册中心”；
	Eureka Client：Eureka客户端项目，在分布式集群中，只要是会在Eureka Server中注册的，都是Eureka Client，在]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(四)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108474412</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108474412</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 14:58:51 +0800</pubDate><description><![CDATA[目录

基于SpringMVC框架统一处理异常【续】

补：不允许注册相同的手机号码

一、调整R类以增加代码的可读性

二、通过Spring Validation检查数据的有效性

三、搭建Eureka注册中心

四、Eureka客户端注册

附：常用的正则表达式

1. 用户名正则

2. 密码强度正则

3. 整数正则

4. 数字正则

5. Email正则

6. 手机号码正则

7. 身份证号正则

8. URL正则

9. IPv4地址正则

10. 十六进制颜色正则

12. QQ号码正则
]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(一)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108412933</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108412933</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 14:50:46 +0800</pubDate><description><![CDATA[前言

本次的项目名为稻草问答，

关于项目的最终结构：



一、创建主项目

新建项目，选择SpringBoot的创建向导。









二、创建子模块项目

因为当前项目将采取分布式项目的开发模式，会将1个项目拆分为若干个微服务项目，但是，它们终究是会结合在一起运行的，所需要使用的技术体系甚至所需要使用的依赖的版本都应该是相同的，所以，需要使用一个父项目来管理各子模块项目（微服务项目）所使用的依赖及版本！

所以，在刚才创建出来的straw项目中，所有与运行相关的文件及文件夹都可以删除，直接..]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(三)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108453475</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108453475</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 14:50:10 +0800</pubDate><description><![CDATA[一、关于业务【续】

关于业务层设计的方法：

在普通用户的眼里，每个业务就是1个“功能”，例如注册、登录、修改密码等，但是，在程序中进行数据处理时，可能是由多项数据操作来组成的，例如注册就至少由“根据用户名查询用户数据”和“插入用户数据”组成；
	业务方法的返回值：仅以操作成功为前提来设计返回值类型，如果操作失败，抛出异常即可；
	业务方法的名称：自定义，推荐根据所设计的业务功能作为参考，例如“注册”时使用reg作为关键字来设计名称，“登录”时使用login作为关键字来设计名称；
	业务方法的参数列表：
]]></description><category></category></item><item><title><![CDATA[超详细！利用SpringBoot+SpringCloud做一个问答项目(二)]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108422908</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108422908</guid><author>weixin_48997613</author><pubDate>Wed, 06 Jan 2021 14:44:51 +0800</pubDate><description><![CDATA[一、测试数据库连接

在straw-api-user的test下，默认就已经存在StrawApiUserApplicationTests测试类，并且测试类中已经存在contextLoads()测试方法，先直接执行该方法的单元测试：



由于以上测试中没有任何代码，所以，执行单元测试是应该能通过测试的，如果没有通过测试，一定是开发环境出了问题，例如jar包文件是损坏的，正常的执行效果例如：



当以上测试通过后，自定义方法，执行“连接数据库”的测试：



如果在application.propertie]]></description><category></category></item><item><title><![CDATA[validation注解及自定义注解]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108782674</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108782674</guid><author>weixin_48997613</author><pubDate>Thu, 24 Sep 2020 20:28:42 +0800</pubDate><description><![CDATA[Bean Validation 中内置的 constraint:

@Null被注释的元素必须为 null
	@NotNull被注释的元素必须不为 null
	@AssertTrue被注释的元素必须为 true
	@AssertFalse被注释的元素必须为 false
	@Min(value)被注释的元素必须是一个数字，其值必须大于等于指定的最小值
	@Max(value)被注释的元素必须是一个数字，其值必须小于等于指定的最大值
	@DecimalMin(value)被注释的元素必须是一个数字...]]></description><category></category></item><item><title><![CDATA[关于SringBoot中上传图片]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108696935</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108696935</guid><author>weixin_48997613</author><pubDate>Sun, 20 Sep 2020 19:29:15 +0800</pubDate><description><![CDATA[目录

一、关于summernote富文本编辑器

二、基于SpringMVC的文件上传

1.创建项目

2.文件上传测试

3.设置上传文件大小的限制

4.关于上传文件的文件名

5.关于MultipartFile的API

6.关于保存上传文件的文件夹

一、关于summernote富文本编辑器

在HTML的原生标签中，适用于输入文本的只有&lt;input type="text" /&gt;和&lt;textarea&gt;这2种控件，这些控件都只能输入普通的文本，不支持复杂的排版，更加不可以显]]></description><category></category></item><item><title><![CDATA[关于Mybatis内置的缓存机制]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108653439</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108653439</guid><author>weixin_48997613</author><pubDate>Thu, 17 Sep 2020 21:33:07 +0800</pubDate><description><![CDATA[Mybatis框架是内置缓存机制的，区分为一级缓存和二级缓存。

所有的缓存机制都是为了提高查询/获取数据的效率而存在的。 


1.一级缓存

Mybatis的一级缓存也称之为SqlSession会话缓存，该缓存是Mybatis自动管理的，不需要开发人员自行维护或管理。

2.二级缓存

Mybatis的二级缓存是基于namespace的，所以也称之为namespace缓存，它针对是对应某个接口的XML文件（因为每个配置SQL语句的XML文件的根节点都需要配置namespace属性），如果需要开启na..]]></description><category></category></item><item><title><![CDATA[浅谈SpringMVC的核心执行流程]]></title><link>https://blog.youkuaiyun.com/weixin_48997613/article/details/108629572</link><guid>https://blog.youkuaiyun.com/weixin_48997613/article/details/108629572</guid><author>weixin_48997613</author><pubDate>Wed, 16 Sep 2020 20:57:30 +0800</pubDate><description><![CDATA[目录

一、关于SpringMVC

二、SpringMVC核心执行流程

1.DispatcherServlet

2.HandlerMapping

3.Controller

4.ModelAndView

5.ViewResolver

6.Response




一、关于SpringMVC


SpringMVC 主要作用：主要解决的接收请求、给予响应的问题；其根本在于解决在中大型项目中随着项目越大随之创建的 Servlet 越多带来的一系列问题，如：不便于管理、消耗内存、配置映射文件繁琐...]]></description><category></category></item></channel></rss>