自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(177)
  • 收藏
  • 关注

原创 基于NIO模式下通信项目

nio通讯

2022-07-19 18:08:35 401 1

原创 基于BIO模式下通信项目

基于BIO模式下即时通信项目

2022-07-19 18:04:26 377

原创 SpringBoot(一):配置

SpringBoot

2022-06-13 10:13:05 432

原创 SpringCloud(六):OpenFeign服务接口调用

OpenFeign服务接口调用

2022-06-13 07:53:43 205

原创 SpringCloud(五):Ribbon负载均衡服务调用

Ribbon负载均衡服务调用

2022-06-13 07:51:25 88

原创 SpringCloud(四):Consul服务注册与发现

Consul服务注册与发现

2022-06-13 07:48:13 90

原创 SpringCloud(三):Zookeeper服务注册与发现

Zookeeper服务注册与发现

2022-06-13 07:45:25 155

原创 SpringCloud(二):Eureka服务注册与发现

SPRINGCLOUD

2022-06-12 11:24:28 212

原创 SpringCloud(一):基本架构构建

springcloud

2022-06-11 23:08:43 178

原创 JVM:垃圾回收

jvm垃圾回收

2022-06-07 03:39:15 238

原创 JVM:内存结构

文章目录1. 什么是JVM2. 内存整体架构3. 程序计数器3.1 作用3.2 特点4. 虚拟机栈4.1 定义4.2 演示代码4.3 问题辨析4.4 内存溢出4.5 线程运行诊断1. 什么是JVM定义Java Virtual Machine,JAVA程序的运行环境(JAVA二进制字节码的运行环境)好处① 一次编写,到处运行② 自动内存管理,垃圾回收机制③ 数组下标越界检查比较JVM JRE JDK的区别2. 内存整体架构3. 程序计数器3.1 作用用于保存JVM中下一条所要

2022-06-06 05:40:11 331

原创 手写Spring(一):启动和扫描

手写Spring

2022-06-04 06:04:36 426

原创 论坛社区项目——项目总结

项目总结

2022-06-04 05:58:31 1828

原创 牛客网项目——项目开发(十):热帖排行,生成长图,上传云服务器,性能优化

项目开发

2022-06-03 07:48:51 1292

原创 牛客网项目——前置技术(十一):任务执行和调度

任务执行和调度

2022-06-01 21:18:26 636

原创 牛客网项目——项目开发(九):权限控制,数据统计

文章目录1. 权限控制1.1 pom.xml1.2 废除原有拦截器1.3 授权配置1.4 SecurityConfig1.5 UserService增加用户权限1.6 LoginTicketInterceptor1.6.1 .preHandle1.6.2 afterCompletion1.7 LoginController1.8 CSRF1. 权限控制1.1 pom.xml<dependency> <groupId>org.springframework.boot</

2022-06-01 17:39:21 815

原创 牛客网项目——前置技术(十):Spring Security

文章目录1. JavaEE和SpringMVC2. 简化版社区2. 配置Spring Security2.1 pom.xml引入依赖2.2 user实体类2.3 UserService2.4 SecurityConfig 配置类2.5 HomeController1. JavaEE和SpringMVCSpring Security就是通过11个Fliter进行组合管理2. 简化版社区只保留登录相关代码2. 配置Spring Security2.1 pom.xml引入依赖<depe

2022-05-31 13:23:48 508

原创 Redis(四):持久化技术RDB,AOF

文章目录1. RDB(Redis DataBase)1.1 是什么1.2 如何执行1.3 Fork1.4 RDB持久化流程1.5 dump.rdb文件1.6 如何触发RDB快照;保持策略1.6 优势&劣势1.6.1 优势1.6.2 劣势2. AOF(Append Only File)2.1 是什么2.2 AOF流程2.3 AOF默认不开启2.4 AOF启动/修复/恢复2.5 AOF同步频率设置2.6 Rewrite压缩2.6.1 是什么2.6.2 重写原理2.6.3 重写流程2.7 优势&劣

2022-05-26 22:15:17 131

原创 牛客网项目——项目开发(八):开发社区搜索功能

文章目录1. ElasticsearchService1.1 注入bean1.2 保存(修改)和删除1.3 搜索 searchDiscussPost2. DiscussPostController.addDiscussPost3. CommentController.addComment4. EventConsumer.handlePublishMessage5. SearchController5.1 注入属性5.2 搜索帖子6. index.html7. search.html1. Elastics.

2022-05-26 18:24:29 774

原创 牛客网项目——前置技术(九):Elasticsearch

文章目录1. Elasticsearch入门1.1 相关术语2. Spring整合Elasticsearch1. Elasticsearch入门1.1 相关术语和mysql类比索引:数据库,database,6.0以后变化,对应表类型:table,6.0以后变化,废弃文档:一张表里的一行字段:一个属性就是一个字段和分布式相关集群:分布式部署节点:每一台服务器分片:对索引进一步的划分副本:对分片的备份2. Spring整合Elasticsearch...

2022-05-26 16:16:38 706

原创 Redis(三):事务,锁机制,秒杀案例

文章目录1. 事务1.1 定义1.2 Multi、Exec、discard1.3 事务的错误处理1.4 事务三特性2. 锁机制2.1 事务冲突问题2.2 悲观锁和乐观锁2.3 WATCH key [key ...]3. 秒杀案例3.1 超卖问题——乐观锁解决3.2 连接超时问题——连接池解决3.3 库存遗留问题——LUA脚本解决1. 事务1.1 定义Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。Redis事

2022-05-26 15:15:28 133

原创 牛客网项目——项目开发(七):发布和显示系统通知

文章目录1. 发布系统通知1.1 事件实体Event1.2 开发事件生产者1.3 开发事件消费者1.4 修改对应的Controller1.4.1 CommentController1.4.2 LikeController1.4.3 discuss-detail.html 和 discuss.js 修改1.4.4 FollowController1.5 测试1. 发布系统通知在评论点赞关注以后,就不用管他,扔进队列,并发异步。解决方式:基于事件驱动的方式1.1 事件实体Event相关属性,额外数据

2022-05-24 00:49:48 992

原创 Redis(二):Jedis实现手机验证码功能

文章目录1. 解决思路1. 生成随机6位数字验证码2. 验证码放入redis,设置两分钟有效3. 验证验证码4. 测试方法要求:1、输入手机号,点击发送后随机生成6位数字码,2分钟有效2、输入验证码,点击验证,返回成功或失败3、每个手机号每天只能输入3次1. 解决思路1. 生成随机6位数字验证码使用random.nextInt//1 生成6位数字验证码public static String getCode() { Random random = new Random();

2022-05-23 21:07:18 260

原创 Redis(一):Bitmaps,HyperLogLog,Geospatial

文章目录1. Bitmaps1.1 简介1.2 命令1.2.1 setbit1.2.2 getbit1.2.3 bitcount1.2.4 bitop1.3 Bitmaps与set对比2. HyperLogLog2.1 简介2.2 命令2.2.1 pfadd2.2.2 pfcount2.2.3 pfmerge3. Geospatial3.1 简介3.2 命令3.2.1 geoadd3.2.2 geopos3.2.3 geodist3.2.4 georadius1. Bitmaps1.1 简介现代计算机

2022-05-23 19:43:34 107

原创 牛客网项目——前置技术(八):Kafka

文章目录1. 阻塞队列2. Kafka入门2.1 基本概念2.2 基本操作3. Spring整合kafka3.1 引入依赖3.2 application.properties配置3.3 Kafka测试1. 阻塞队列生产者线程线程需要实现 Runnable 接口重写接口的run方法声明变量private BlockingQueue<Integer> queue接受传入的阻塞队列创建有参构造器实现示例逻辑,生产100个数据,put进阻塞队列,每生产一个数据停顿20毫秒,输出信息

2022-05-22 22:01:09 860

原创 MyBatis(九):分页插件

文章目录1. 分页插件的配置1.1 添加依赖1.2 配置分页插件2. 分页插件的使用2.1 开启分页功能2.2 分页相关数据2.2.1方法一:直接输出2.2.2 方法二使用PageInfo2.2.3 常用数据1. 分页插件的配置1.1 添加依赖<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --><dependency> <groupId>com.github.pa

2022-05-22 17:31:56 353

原创 MyBatis(八):逆向工程

文章目录1. 创建逆向工程1.1 添加依赖和插件1.2 创建核心配置文件1.3 创建逆向工程的配置文件1.4 执行MBG插件的generate目标2. QBC2.1 查询2.2 增改正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:Java实体类Mapper接口Mapper映射文件1. 创建逆向工程1.1 添加依赖和插件<dependencies>

2022-05-22 17:23:51 353 1

原创 MyBatis(七):MyBatis的缓存

文章目录1. MyBatis的一级缓存2. MyBatis的二级缓存3. 二级缓存相关配置4. MyBatis缓存查询顺序5. 整合第三方缓存EHCache5.1 添加依赖5.2 各个jar包功能5.3 创建EHCache的配置文件ehcache.xml5.4 设置二级缓存类型5.5 加入logback日志5.6 EHCache配置文件说明1. MyBatis的一级缓存一级缓存是SqlSession级别的,通过同一个SqlSession查询的数据会被缓存,下次查询相同的数据,就会从缓存中直接获取,不会

2022-05-22 00:34:18 255

原创 MyBatis(六):动态SQL

文章目录1. if2. where3. trim4. choose5. foreach6. SQL片段1. ifif标签可通过test属性(即传递过来的数据)的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之标签中的内容不会执行在where后面添加一个恒成立条件1=1这个恒成立条件并不会影响查询的结果这个1=1可以用来拼接and语句,例如:当empName为null时如果不加上恒成立条件,则SQL语句为select * from t_emp where and age =

2022-05-22 00:26:46 226

原创 牛客网项目——项目开发(六):点赞,关注和取关,优化登录

文章目录1. 点赞1.1 业务层(直接调redis不用数据访问层)1.1.1 生成redis key的工具1.1.2 Service 下实现 LikeService1.2 表现层1.3 前端页面1.3.1 对帖子点赞1.3.2 对回帖列表点赞1.3.3 对回复列表点赞1.3.4 js 实现 like 方法1.3 首页赞的数量的显示1.4 帖子详情页面赞的数量的显示2. 我收到的赞2.1 重构点赞功能2.1.1 RedisKeyUtil 增加功能2.1.2 LikeService2.1.3 LikeContr

2022-05-21 23:07:34 1941

原创 牛客网项目——前置技术(七):Redis

文章目录1. String2. 哈希3. 列表4. 集合5. 有序集合6. 全局命令redis官方网站:https://redis.io/Windows资源下载地址:https://github.com/microsoftarchive/redis安装完成配置好环境变量之后启动客户端redis-cli默认16个库,切换库select 1刷新当前库flushdb1. String存入使用 set ,单词拼接使用:不使用下划线set test:count 1取使用 get,get

2022-05-20 15:09:55 707

原创 MyBatis(五):自定义映射resultMap

文章目录1. 解决字段和属性名不一致1.1 通过resultMap设置自定义映射1.2 为字段起别名1.3 mapUnderscoreToCamelCase2. 多对一映射处理2.1 级联方式处理映射关系2.2 使用association处理2.3 分步查询3. 一对多映射处理3.1 collection3.2 分步查询4. 延迟加载resultMap:设置自定义映射属性id:表示自定义映射的唯一标识,不能重复type:查询的数据要映射的实体类的类型子标签id:设置主键的映射关系r

2022-05-19 23:10:34 280

原创 牛客网项目——项目开发(五):私信列表,发送私信,异常处理,记录日志

文章目录1. 私信列表1.1 数据访问层1.1.1 数据库表1.1.2 entity下实现实体类Message1.1.3 dao下实现MessageMapper接口1.1.4 mapper下实现message-mapper.xml1.1.5 测试1.2 业务层开发1.3 表现层开发1.3.1 私信列表1.3.2 私信详情2. 发送私信2.1 数据访问层2.2 业务层2.3 视图层2.3.1 MessageController 新加方法2.3.2 页面逻辑3. 统一异常处理3.1 Spring的异常处理3.2

2022-05-19 22:32:20 1279

原创 SpringMVC:概述总结

HelloWorld① 创建maven工程② 配置web.xml③ 创建请求控制器④ 测试HelloWorld⑤ 总结@RequestMapping注解① 功能② 位置③ value属性④ method属性⑤ params属性⑥ headers属性⑦ ant风格路径⑧ 路径中的占位符SpringMVC获取请求参数① 通过 ServletAPI 获取② 通过控制器方法的形参获取请求参数③ @RequestParam④ @RequestHeader⑤ @CookieVa.

2022-05-18 23:18:30 107

原创 SpringMVC(十):SpringMVC的执行流程

文章目录1. SpringMVC常用组件2. DispatcherServlet初始化过程2.1 初始化WebApplicationContext2.2 创建WebApplicationContext2.3 DispatcherServlet初始化策略3. DispatcherServlet调用组件处理请求3.1 processRequest()3.2 doService()3.3 doDispatch()3.4 processDispatchResult()4. SpringMVC的执行流程1. Sp

2022-05-18 22:12:49 225

原创 牛客网项目——项目开发(四):发布帖子,帖子详情,显示评论,添加评论

文章目录1. 过滤敏感词1.1 前缀树1.2 代码实现2. 发布帖子3. 帖子详情4. 事务管理5. 显示评论6. 添加评论1. 过滤敏感词1.1 前缀树1.2 代码实现在resources下新建sensitive-word.txt,并在util下实现 SensitiveFilter定义前缀树结构 // 前缀树 private class TrieNode { // 关键词结束标识 private boolean isKeywordEnd = f

2022-05-18 20:27:45 2794

原创 MyBatis(四):特殊SQL的执行

文章目录1. 模糊查询2. 批量删除3. 动态设置表名4. 添加功能获取自增的主键1. 模糊查询/** * 根据用户名进行模糊查询 */List<User> getUserByLike(@Param("username") String username);<!--List<User> getUserByLike(@Param("username") String username);--><select id="getUserByLike" res

2022-05-18 14:25:26 109

原创 MyBatis(三):MyBatis查询功能

文章目录1. 查询一个实体类对象2. 查询一个List集合3. 查询单个数据4. 查询一条数据为map集合5. 查询多条数据为map集合5.1 方法一:List如果查询出的数据只有一条,可以通过实体类对象接收List集合接收Map集合接收,结果{password=123456, sex=男, id=1, age=23, username=admin}如果查询出的数据有多条,一定不能用实体类对象接收,会抛异常TooManyResultsException,可以通过实体类类型的LIst集合接

2022-05-18 14:14:03 179

原创 MyBatis(二):MyBatis获取参数值的两种方式

文章目录1. 单个字面量类型的参数2. 多个字面量类型的参数3. map集合类型的参数4. 实体类类型的参数5. 使用@Param标识参数MyBatis获取参数值的两种方式:${}和#{}${}的本质就是字符串拼接,#{}的本质就是占位符赋值${}使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号;但是#{}使用占位符赋值的方式拼接sql,此时为字符串类型或日期类型的字段进行赋值时,可以自动添加单引号1. 单个字面量类型的参数若mapper接口中的方法参

2022-05-18 14:06:03 151

原创 MyBatis(一):核心配置文件

文章目录1. properties2. settings3. typeAliases4. environments5. mappers核心配置文件中的标签必须按照固定的顺序(有的标签可以不写,但顺序一定不能乱):properties、settings、typeAliases、typeHandlers、objectFactory、objectWrapperFactory、reflectorFactory、plugins、environments、databaseIdProvider、mappers1.

2022-05-18 13:56:24 144

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除