- 博客(43)
- 收藏
- 关注
原创 安装Charles证书(MacPro和小米11)
安装Charles证书Charles是什么?Charles的作用配置Charles相关代理与证书Charles是什么?Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。简单来说,Charles就是用来抓包查看客户端访问数据的
2021-08-09 11:15:03 3568 5
原创 Java读取资料文件相关类方法
学习记录前言一、Spring之ClassPathResource1.引入库2.读取资源文件3.源码解读二、FileUtils1.文件操作工具类2.方法使用三、TypeReference1.获取泛型参数四、ClassPathResource、FileUtils和TypeReference读取路径中的json文件并保存五、BufferedReader1.从字符输入流中读取文本并缓冲字符:BufferedReader2.读取资源文件2.读取资源文件2.读取资源文件总结前言学习过程中一些不知道的类和方法的记录
2021-08-02 11:11:50 466
原创 Unix网络编程
Unix网络编程TCP、UDP和SCTP三路连接TIME_WAIT状态SCTP关联的建立和终止四路握手TCP、UDP和SCTPUDP是一个简单的,不可靠的数据报协议。应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到IP数据报,然后发送到目的地。UDP不保证UDP数据报会到达其最终目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次。每个UDP数据报都有一个长度,如果一个数据报正确地到达其目的地,那么该数据报的长度将随数
2021-07-14 20:20:57 249 2
原创 mysql索引原理及慢查询优化
mysql索引原理及慢查询优化mysql索引原理索引目的索引原理磁盘IO与预读索引的数据结构慢查询优化建索引的几大原则查询优化神器- explain命令慢查询优化基本步骤MYSQL查询过程mysql索引原理索引目的索引的目的在于提高查询效率,可以类比字典索引原理磁盘IO与预读磁盘读取数据靠的是机械运动,每次读取数据花费时间可以分为寻道时间,旋转延迟,传输时间三个部分,寻道时间指的是磁臂移动到指定磁道所需要的时间,主流磁盘一般在5ms以下;旋转延迟就是我们经常听说的磁盘转速,比如一个磁盘7200转
2021-07-14 15:57:15 145
原创 消息队列RocketMQ
消息队列RocketMQ消息队列RocketMQ核心概念Topic生产者消费者消息消息属性Group生产者集群消费者集群消息收发模型应用场景削峰填谷异步解耦顺序收发分布式事务一致性大数据分析分布式缓存同步消息队列RocketMQ消息队列RocketMQ版是阿里云基于Apache RocketMQ构建的低延迟、高并发、高可用、高可靠的分布式消息中间件。消息队列RocketMQ版既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。核心概念To
2021-07-13 19:33:42 189
原创 Spring事务及其注解
Spring事务及其注解目录页Spring事务相关Spring事务的表达方式Spring事务的原理本质Spring和事务的关系Spring事务三要素事务的传播特性事务常出现的问题事务的隔离级别事务超时事务的只读属性事务的回滚规则Spring事务的注解配置事务注解的本质Spring声明式事务实现原理AOP与AspectJ的区别:Spring事务加载过程:Spring事务相关Spring事务是Spring框架中的重要知识点,本文只是对之前秋招的学习成果进行简单总结。Spring事务的表达方式sprin
2021-04-20 16:36:49 1530 1
原创 CSDN原创文章审核不通过怎么办
CSDN原创文章审核不通过怎么办纯手打发布的文章没通过原创审核,认为文章内容与已发布的文章相似度过高,点进去看,发现完全不相关,试图重新编辑后发布文章还是不通过。最后解决方案: 把文章内容复制,然后删除原本的文章,重新创建一篇新的,粘贴,发布。...
2021-04-19 11:25:02 2728
原创 Spring注解相关
Spring的常用注解目录页Spring常用注解定义bean的相关注解获取bean的相关注解前后端获取参数的相关注解其他重要注解三大作用域Spring常用注解之前面试的时候总结的,一直没想起来写,最近决定来点“回忆杀”。之前面试常被问到的一个问题,做项目常用的注解有哪些?除了@controller,@Service等基础的,还要记一些功能性的注解。定义bean的相关注解@Controller: bean注册,用于控制层@Service: bean注册,用于业务逻辑层@Component: be
2021-04-19 10:58:38 203 1
原创 非科班的java学习之路
非科班的java学习之路刚刚结束秋招,来大概总结一下学习java的一路。先来说说本人的基本情况,本科和研究生都是非科班,本科就不说了,啥也没干,也搞不清自己的就业方向,就选择了读研。研究生很幸运的跨校考研成功,但没勇气跨校的同时跨专业,所以研究生还是非科班。研一就按部就班的上课学习,基本也没学啥java,研一结束的暑假进入教研室,在师兄的劝导下,开始了就业选择,考虑到自己也不怎么会聊天说话,想想还是当个码农更适合,于是选择了学习java。大概从19年6,7月开始学习,刚开始是在有名的学习网站B站找一些j
2020-11-20 11:35:44 625 2
原创 MYSQL语句优化(到处看看,到处总结~)
MYSQL语句优化(到处看看,到处总结~)将子查询转换为连接查询:子查询把内层查询结果作为外层查询的比较条件,需要创建临时表,查询完毕后再删除临时表。limit分布优化,先利用ID定位,再分页。避免出现offset大页码的情况,因为limit会先把行数全查出来再抛弃offset之前的行数。or条件优化,多个or条件可以用union all,对结果进行合并。【union和union all:union 取两个子查询的并集,重复数据只保留一行,通过建立一个带主键的临时表,可解决“去重”问题,通过临时表存
2020-09-16 16:50:27 1645
转载 Spring启动过程(面试总结版~)
Spring启动过程(面试总结版)Spring启动过程是IOC容器的启动过程,本质是创建和初始化bean工厂(BeanFactory).BeanFactory是Spring IOC的核心,Spring使用beanFactory来实例化,配置和管理bean。对于web程序,IOC容器启动过程即是建立上下文的过程,web容器会提供一个全局的servletContext上下文环境。其启动过程主要包含三个类,ContextLoaderListener,ContextLoader和XmlWebApplicati
2020-09-11 11:43:00 15996 1
原创 MySQL相关 (想到什么写什么,持更~~)
MySQL相关(想到什么写什么)InnoDB的特性自适应哈希插入缓存(insert buffer)二次写 double write缓冲池 innodb buffer pool(想到什么写什么))都不是原创内容,自己看一些优秀博文写的,可能是自己的总结,也可能是别人的总结,看得太多,忘记从什么地方看到的了(因为习惯先写在word文档上),有借鉴到的大神可以自己在评论补充原文链接呀,(抱拳~~)InnoDB的特性自适应哈希InnoDB建立索引时,只可以建立B+tree索引,是不可以建立hash索引的
2020-09-10 23:38:26 936 1
原创 BBS论坛项目相关-数据库设计总结
BBS论坛项目相关-数据库设计总结用户表idusernamepasswordsaltemailtypestatusactivationCodeheaderUrlcreateTime用户id用户名密码密码盐值邮箱版主/管理员/普通用户是否有效邮箱激活码头像路径创建时间登陆凭证表iduserIdticketstatusexpired主键用户id用户登陆唯一凭证是否有效过期时间评论表iduserI
2020-09-02 15:12:23 1508 1
原创 23种设计模式--随手笔记(持更)
23种设计模式–随手笔记(持更)单例模式保证一个类只有一个实例,且提供一个全局访问点构造器私有场景:重量级对象,不需要多个实例,如线程池,数据库连接池实现方式:1 懒汉模式:只有使用的时候,再进行初始化,延迟加载class lazyInstance{ private static LazyInstance instance; private LazyInstance(){ } public static LazyInstance getInstance(){
2020-08-28 16:06:59 852
原创 java基础---集合类(大致总结)
java基础—集合类java集合框架包含两种类型的容器,一种是集合collection,另一种是图map。集合collection有三种子类型set,list,Queue。setset是一种无序且不包含重复元素的collection,set最多只有一个nullHashSetHashSet是由哈希表实现,数据是无序的,只能放入一个null,其底层是hashMap,只使用了HashMap的key来存放数据。HashSet要求放入的对象必须实现hashcode方法,放入的对象是以hashcode码作为标
2020-08-25 21:46:05 868
原创 Kafka相关知识点
Kafka相关知识点kafka是分布式发布-订阅消息系统,是一个分布式,可划分的,冗余备份的持久性的日志服务,主要用于处理流式数据为什么要使用kafka,为什么要使用消息队列缓冲和削峰:尚有数据有突发流量,或下游没有足够多的机器来保证冗余,kafka在中间起到一个缓冲的作用,把消息暂存在kafka总分,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:消息队列可作为一个接口层,解耦重要的业务流程,只需要遵守约定,针对数据编程即可获取扩展能力。冗余:可采用一对多的方式,一个生产者发布消息,可以
2020-08-25 11:17:06 848 1
原创 BBS论坛项目相关-18:热帖排行模块
BBS论坛项目相关-18:热帖排行模块热帖排行根据帖子是否加精,评论数,点赞数,收藏数以及发布时间等进行计算加分然后排名Log(精华分+评论数10+点赞数2+收藏数*2)+(发布时间-纪元)用log让前期评论点赞等权重较重,后期影响较小。为了效率较高,每次点赞评论等不立即进行算分,而是放入redis中进行缓存,之后定时进行计算。设计一个帖子分数的key,当发生点赞评论等操作时就存入redis中。redis中只是存储帖子分数发生变化的帖子id,所以使用redis的set存储,去重,防止重复计算。
2020-08-17 21:19:12 1167
原创 BBS论坛项目相关-17:Spring Quartz任务执行和调度
BBS论坛项目相关-17:Spring Quartz任务执行和调度任务执行和调度线程池就是首先创建一些线程,它们的集合称为线程池。使用线程池可以很好地提高性能,线程池在系统启动时即创建大量空闲的线程,程序将一个任务传给线程池,线程池就会启动一条线程来执行这个任务,执行结束以后,该线程并不会死亡,而是再次返回线程池中成为空闲状态,等待执行下一个任务。JDK线程池:ExecutorService :普通线程池ScheduledExecutorService:可执行定时任务的线程池Spring线程池:
2020-08-17 21:18:02 758
原创 BBS论坛项目相关-16:Redis高级数据类型
BBS论坛项目相关-16:Redis高级数据类型HyperLogLog采用一种基数算法,用于完成独立总数的统计占据空间小,无论统计多少个数据,只占12k的内存空间不精确的统计算法,标准误差为0.81%// 统计20万个重复数据的独立总数. @Test public void testHyperLogLog() { String redisKey = "test:hll:01"; for (int i = 1; i <= 100000; i++
2020-08-17 17:34:38 736
原创 BBS论坛项目相关-15:置顶,加精,删除功能模块
BBS论坛项目相关-15:置顶,加精,删除功能模块需求置顶,加精,删除,修改帖子类型权限管理:版主可以执行置顶,加精操作,管理员可以删除按钮显示:版主可以看到置顶,加精按钮,管理员可以看到删除按钮置顶,加精,删除注意置顶,加精等功能都需要对帖子进行更新操作,所以需要触发topic发帖事件,在事件中更新ES相关帖子详情。最后返回一个json字符串,异步提醒设置完毕// 置顶 @RequestMapping(path = "/top", method = RequestMethod.POS
2020-08-17 16:42:37 1372
原创 BBS论坛项目相关-14:Spring Security与用户权限控制
BBS论坛项目相关-14:Spring Security与用户权限控制需求:登录检查:之前使用拦截器实现,现在改为SpringSecurity实现授权配置:对当前系统内所包含的所有的请求,分配访问权限(普通用户,版主,管理员)认证方案:绕过security认证流程,采用原本的认证方案CSRF配置:防止CSRF攻击的基本原理,以及表单、AJAX相关的配置。授权配置在常量接口中配置用户权限常量。public interface CommunityConstant { /**
2020-08-17 16:08:25 765
原创 BBS论坛项目相关-13:Spring Security相关
BBS论坛项目相关-13:Spring Security相关Spring SecuritySpring Security是一个专注于为java应用程序提供身份认证和授权的框架,它的强大之处在于它可以轻松扩展以满足自定义的需求。特征:对身份的认证和授权提供全面的,可扩展的支持,防止各种攻击,如会话固定攻击,点击劫持,csrf攻击等。支持与Servlet API,Spring MVC等web技术集成。Spring MVC:所有请求都发送给DispatcherSevlet,由DispatcherSevl
2020-08-17 14:55:32 809
原创 BBS论坛项目相关-12:ES搜索相关
BBS论坛项目相关-12:ES搜索相关ElasticSearchElasticsearch:分布式的Restful风格的搜索引擎搜索速度快,可提供实时的搜索服务,便于水平扩展,每秒可以处理PB级海量数据相关术语:索引,类型,文档,字段集群,节点,分片,副本Springboot中声明的ES版本为6.4.3,9200端口可以在IKAnalyzer.cfg.xml配置自己的dic字典文件curl -X PUT “localhost:9200/test” 添加索引—返回json格式curl -X
2020-08-16 19:08:04 869
原创 BBS论坛项目相关-10:Redis关注模块和优化登陆模块
BBS论坛项目相关-10:Redis关注模块和优化登陆模块需求关注,取消关注功能统计用户粉丝数,关注数A关注了B,则A是B的follower,B是A的Followee(目标)关注的目标可以是用户,帖子,题目等,在实现时将这些目标抽象为实体关注为了便于统计,将关注人和被关注对象都设置一个key键值,这样用户关注时,用户自己的关注列表会进行统计,被关注的对象的粉丝列表也会进行统计实体类型:帖子:1,评论:2,用户:3用户的关注列表:Followee关注目标的key:用户可能关注的是一个用户对
2020-08-14 20:35:41 822
原创 BBS论坛项目相关-9:Redis点赞模块
BBS论坛项目相关-9:Redis点赞模块点赞对于某个实体的赞,key对应用entityType和entityId拼接PREFIX_ENTITY_LIKE + SPLIT + entityType + SPLIT + entityId对于实体的赞采用set数据结构,field为用户id,可用于记录对该实体点赞的用户,此外还需要记录该用户是否已经对该实体点过赞,点过了再点就会取消点赞。对于某个用户的点赞:key为用户id进行拼接PREFIX_USER_LIKE + SPLIT + userId,对于
2020-08-14 16:15:55 920
原创 BBS论坛项目相关-7:统一异常处理和日志记录
BBS论坛项目相关-7:统一异常处理和日志记录统一异常处理@ControllerAdvice:用于修饰类,表示该类是controller配置类;在此类中,可以对controller进行三种全局配置:异常处理方案,绑定数据方案,绑定参数方案@ExceptionHandler:用于修饰方法,该方法会在controller出现异常后被调用,用于处理捕获到的异常@ModelAttribute:用于修饰方法,在controller方法执行前被调用,用于为Model对象绑定参数@DataBinder:用于修饰
2020-08-13 21:42:29 798
原创 BBS论坛项目相关-6:私信模块(SQL)
BBS论坛项目相关-6:私信模块功能私信列表:查询当前用户的会话列表每个会话只显示一条最新的私信支持分页显示私信详情:查询每个会话所包含的私信支持分页查询会话表:id,from_id,to_id,conversation_id(将id小的放在前面,大的放在后面,设置这一项的目的是为了以后直接通过会话id进行查询筛选),content,status(0-未读,1-已读,2-),create_time私信列表私信列表只显示最新的一条会话:按照conversation_id分组,查询条件:f
2020-08-13 20:09:28 1217
原创 BBS论坛项目相关-5:评论模块
BBS论坛项目相关-5:评论模块事务管理事务管理:ACID常见并发异常:第一类丢失更新,第二类丢失更新脏读、不可重复读、幻读第一类丢失更新:某个事务的回滚,导致另一个事务已更新数据丢失了。第二类丢失更新:某个事务的提交,导致另一个事务已更新的数据丢失了。脏读:某个事务读取了另一个事务未提交的数据。不可重复读:某个事务对同一数据前后读取的结果不一致。幻读:某一个事务对同一个表前后查询的行数不一致。常见的隔离级别:读取未提交数据(最低,以上并发异常都可能出现)读取已提交数据可重复读
2020-08-13 16:46:53 1108
原创 BBS论坛项目相关-4:发帖模块
BBS论坛项目相关-4:发帖模块过滤敏感词前缀树trie,字典树,查找树查找效率高,消耗内存大,应用:字符串检索,词频统计,字符串排序等敏感词过滤器定义前缀树,根据敏感词,初始化前缀树,编写过滤敏感词的方法...
2020-08-12 22:32:27 1034
原创 BBS论坛项目相关-3:用户登陆模块
BBS论坛项目相关-3:用户登陆模块会话管理HTTP是无状态,有会话的。无状态:在同一个连接中,两个执行成功的请求之间是没有关系的。使用HTTP的头部扩展,HTTP Cookie可以解决这个问题,使用cookie让http协议变为有状态。CookieHTTP Cookie是服务器发送到用户浏览器并保存到本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器。使用cookie让http协议变为有状态Cookie默认存在内存
2020-08-12 20:50:14 903
原创 BBS论坛项目相关-1:相关工具Spring,MyBatis等(持更)
BBS论坛项目相关-1:相关工具Spring,MyBatis等(持更)Spring 入门Springboot的入口@SpringBootApplicationpublic class CommunityApplication { public static void main(String[] args) { SpringApplication.run(CommunityApplication.class, args); }}@SpringBootApplica
2020-08-11 20:21:38 862 2
原创 Jvm垃圾收集器相关知识点
JVM垃圾收集器GC常用算法复制算法年轻代主要用复制算法复制算法把内存分为两个区,to区和from区(survivor1区和survivor2区),任何时刻所有动态分配的对象都只能分配在一个区间,另一个区间为空(谁空谁是to)。当有效内存空间耗尽时,JVM将暂停程序运行,开启复制算法GC线程。GC线程将活动区存活的对象全部复制到空闲区间,并严格按照内存地址进行排序,同时GC线程更新存活对象的内存引用地址指向新的内存地址。此时存活对象复制到了原本的空闲区,垃圾对象留在了原本的运行期,将运行区转成空闲区
2020-08-10 21:32:06 716
原创 MySQL持久化和主从复制
MySQL持久化和主从复制MySQL执行过程连接器负责和客户端的通信,是半双工模式,所以某一时刻只能客户端向服务端请求或服务端向客户端发送数据,不能同时进行。mysql通过TCP/IP连接到客户端。验证用户账户和密码是否正确,如果正确会在mysql自带的权限表中查询用户权限分析器将客户端发过来的sql语句进行分析,包括预处理和解析过程。解析sql语句,关键词和非关键词提取解析,生成解析树优化器sql语句的优化,根据执行计划进行最优选择,匹配合适索引。执行器调用存储引擎的API存储引擎
2020-08-09 16:50:54 795
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人