- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 CAP理论
分布式的网络环境很复杂,容易出现的很多网络问题,各节点的状态如何同步很关键。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。C:一致性 :分布式系统中所有节点的数据备份同一时间都一致A:可用性:一部分节点出现故障后,非故障节点依然可用,集群依然能够预期时间内响应P:分区容错性:在节点之间不能通信时,系统可以继续正常服务。分布式环境下,避免不了节点之间网络波动等原因导致服务调用失败,不能因为这个原因导致系统整体不可用。因此必须要满足 P(分区容错性)那还能不能同时满足 C(一致性)
2020-06-18 20:03:13
209
1
原创 3..阿里云短信功能
登陆注册往往需要手机验证码来验证,这里就用到了阿里云的短信功能···com.alibabafastjsoncom.aliyunaliyun-java-sdk-core···发送的短信验证码不能一直有效,通过redis 设置验证码的过期时间,先从redis中找验证码,如果找不到,就需要发送短信重新获取;第一次都需要发送,将发送的验证码保存到 redis中去,设置过期时间为 5分钟···public class MsmController {@Autowiredprivate M
2020-06-16 23:22:30
1541
原创 2. JWT生成用户token
JWT就是生成token令牌的一种规则,包含3部分内容:头信息、信息载体、防伪标志头信息一般固定,表示数据时JWT的格式信息载体:一般携带用户信息,比如账户和密码防伪标志:可以自定义一个密匙依赖:<dependencies> <!-- JWT--> <dependency> <groupId>io.jsonwebtoken</groupId> <arti
2020-06-16 22:56:25
692
原创 1.单点登录概念
微服务架构中不免需要多个模块校验用户登录信息,这里就用到了sso,即单点登录。常见实现单点登录的方式有3种1.session广播机制实际上就是session复制技术;缺点,如果模块比较多,就要将session复制到每个模块,比较消耗资源,适合模块比较少的项目。2. cookie + redis登录后,用户信息放到redis中,key:生成唯一key,value:存储用户数据cookie :将redis中的key值放到 cookie中请求的时候携带cookie发送,判断cookie与redi
2020-06-16 22:19:49
247
原创 springboot整合redis缓存首页数据
一些网站首页的数据访问频率大,且数据不经常变更,此时就非常适合将首页数据缓存到redis当中。1.添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- spring2.X集成redis所需comm
2020-06-16 20:58:07
656
原创 6.mybatis之foreach的批量操作
之前已经用标签处理了List 集合数据,foreach 标签还有强大的功能,用于批量的 增、删、改 操作1.批量添加public void insertEmployeeBatch(@Param("emps")List<Employee> emps )<insert id="insertEmployeeBatch"> insert into tbl_employee(last_name, gender, descr ) values <foreach co
2020-06-13 19:50:24
362
原创 5.mybatis动态sql之foreach
当获取一个List 集合数据时,需要遍历判断,这个时候就用到了mybatis的标签public List<TAdmin> selectByIds(@Param("ids") List ids);collection:指定迭代的集合item:表示当前从集合中迭代的元素open:开始字符close:结束字符separator:分隔符原生sql:select id, name, age from student where id in (?,?,?);<select id="s
2020-06-13 19:14:27
100
原创 4.mybatis之动态sql
当不确定查询条件有几个的时候,用动态sql判断效果很好。采用OGN表达式。标签会动态去掉第一个 and/or,所以不用担心第一个条件不存在,会多一个 and/or的情况。<select id="selectByContation" resultType="com.mybatis.demo.mybatis1.bean.TAdmin"> select * from admin <where> <if test="id!=null">
2020-06-13 19:06:50
90
原创 3.mybatis一对多查询
查询一个班级拥有的学生,一对多查询班级中包含多个学生,List 保存学生信息。@Datapublic class ClassRoom { private Integer id; private String name; private List<Student> stus;}@Datapublic class Student { private Integer id; private String name;}2.mapper接口方
2020-06-13 10:46:16
116
原创 2.mybatis关联查询
mybatis的关联查询,学生表和班级表 ,比如要查询 学生所在的 班级1.Entity (注意学生类中要有班级ClassRoom 的对象属性)@Datapublic class Student { private Integer id; private String name; private ClassRoom classRoom;}@Datapublic class ClassRoom { private Integer id; private S
2020-06-13 10:32:06
200
原创 1.springboot整合mybatis
1.先看下目录结构,sql映射文件放在mapper 文件夹中2.配置一下yml文件spring: datasource: username: root password: 123456 url: jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC driver-class-name
2020-06-13 10:16:58
123
原创 SpringMvc接收前端数据的几种方式
springmvc接收前端数据的几种方式springmvc 是一个优秀的 mvc框架,今天主要了解一下springmvc获取前端接口数据的方式。在说接收方式前,先了解一下前端会传给我们什么样的数据类型。常见的有3种form-data,x-www-from-urlencoded 和 json 类型。form-data数据被编码为一条消息,一般文件上传时用。x-www-from-urlencoded 格式会将表单内的数据转换为键值 对,比如,name=java&age = 23 。json
2020-06-12 21:55:30
2665
2
原创 自定义注解以及应用场景
1.先创建一个自定义注解:RetentionPolicy.RUNTIME:在运行时有效(即运行时保留),当运行 Java 程序时, JVM 会保留注释。程序可以通过反射获取该注释ElementType.TYPE :用于修饰类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@interface AnnotationTest{ String value() default "hello"; }2.获取自定义注解中的值
2020-06-11 22:36:20
731
原创 POI读取数据,存入数据库中
以这样的office表格为数据源,POI处理数据,读取表中数据,并写入数据库,并对当中存在空行的数据给出友好提示。office主要有03 和 07版本,区别不是很大。 <!--xls--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> &l
2020-06-10 10:26:49
434
原创 解决阿里云oss上传图片,打开地址直接下载,亲测有效!
今天将图片保存到阿里云的时候,发现打开图片地址后直接下载,在网上百度了一下,也没解决,于是通过官方帮助文档解决了。1.先注意阿里云默认存储图片的请求头为 image/jpeg,此时打开图片地址就会直接下载。将请求头改为image/jpg,图片就能够打开了,哈哈,是不是很聪明! 但是每上传一次就要修改一次,肯定不符合程序猿的脑回路,那就看看官网是怎么解决的。2. 以下是阿里云官方手册提供的设置请求头的方法// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。// ObjectMetadat
2020-06-09 22:25:13
14443
4
原创 mybatis-plus配置分页插件
1.在配置类中添加分页插件的方法//分页插件 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }测试分页方法@Test public void testSelectPage() { Page<User> page = new Page<>(1,3); //当前页
2020-06-08 17:59:59
2526
原创 mybatis-plus配置逻辑删除
在实际操作中,删除操作并不是真实的物理删除,而是逻辑删除,在数据库表中添加一列 deleted 字段表明数据是否被删除。entity 对象中在 deleted 字段添加 @TableLogic//逻辑删除 @TableLogic @TableField(fill = FieldFill.INSERT) private byte deleted;2.配置类中添加 逻辑删除的配置@Bean public ISqlInjector sqlInjector() {
2020-06-08 15:49:11
817
原创 mybatisplus配置乐观锁
在涉及到多线程操作数据库的时候,我们往往需要通过乐观锁来保证数据的安全性,防止丢失更新。乐观锁原理:使用(Version)记录机制实现,为数据库表增加一个 “version” 字段。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加 1。当我们提交更新的时候,判断数据库表对应记录的当前版本信息与取出来的version值进行比对,如果数据库表当前版本号与第一次取出来的version值相等,则予以更新。(和Juc当中的AutomicReference类似)1.先在数据库
2020-06-08 15:02:37
1632
原创 MybatisPlus的自动填充功能
在对数据可进行一些操作的时候,有些字段基本是固定,比如创建时间和修改时间,我们可以利用mybatisplus的自动填充功能来实现。1.首先在需要在自动填充的字段属性上添加配置FieldFill.INSERT表示插入操作时起作用,FieldFill.INSERT_UPDATE表示在插入和修改时起作用。属性的驼峰对应数据库中字段的下划线。比如:createTime对应create_time@TableField(fill = FieldFill.INSERT) private Date crea
2020-06-08 13:58:59
1945
原创 项目中自定义统一返回结果
我们在项目当中,每个人的编码风格不同,可能会返回给前端不同格式的数据,有的传字符串,有的返回List/Map。返回的状态码也不尽相同,有的返回true,有的 200 。因此,在项目中我们就需要自定义一套模板,统一定义返回的数据格式和状态码。1.先建立一个统一的状态码(可自定义状态码,也可用Enum实现)//状态码public interface ResultCode { int OK = 20000;//成功 int ERROR = 20001;//失败}2.定义一个统一的返回
2020-06-07 09:17:59
846
原创 项目中引入Swagger
swagger测试对于后端来说比postman友好很多,所以在项目中加入swagger配置,便可以用swagger进行测试。1.首先导入swagger的依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency>
2020-06-07 08:43:13
3398
1
SpringMvc接收前端数据的几种方式.md
2020-06-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人