- 博客(75)
- 收藏
- 关注
原创 Redis---过期删除策略
定时删除策略:每个key对应一个定时器,保证准时删除过期key。特点:采用了时间换空间,占用CPU性能多。惰性删除策略:当用户对key进行访问时,都会先检查此key是否过期。已过期则进行删除,再将查询结果返回。特点:采用空间换时间,占用内存空间多。定期删除策略:随机抽取redis内存空间中expires数组中的数据块进行过期key判断与删除。当数据块中有大于25%的key过期,则采用重点执行操作继续随机抽取数据块进行过期key判断与删除。redis中默认1s执行10次定期删除任务。定期删除是综合前两
2022-07-14 16:03:59
583
1
原创 JAVA基础---多态
JAVA基础---多态概念:多态是以继承为基础,通过重写父类方法达到不同子类对同个方法有不同表现形式。多态问题与解答:1、如何在重写方法中调用父类原方法答:通过super调用,super区别于this,可调用父类方法与变量2、子类实例直接赋值父类引用与通过强制类型转换赋值有没区别答:无区别3、子类对象拥有与父类对象同类型同名称变量,各自方法调用该变量有无影响。答:无影响,子类方法直接调用自身变量,可通过super调用父类对象变量。父类方法调用的变量i永远是父类自身的变量i
2022-04-05 12:24:32
380
原创 JAVA---int数组声明与初始化
JAVA---int数组声明与初始化JAVA中int数组声明与初始化:有3种正确方式同时进行声明与初始化;分别为new int[num],{}以及new int[]{...}。注意,当使用new int[num]时只能按照默认值赋予各个元素,不可自定义。有2种正确方式进行声明与初始化分离;分别为new int[num]以及new int[]{...}; public static void main(String[] args) { int[] i1=new int[
2022-03-26 15:19:31
17808
原创 SpringBoot(Web)---跨域请求
SpringBoot(Web)---跨域请求1、跨域请求描述跨域请求指的是发起request请求报文的协议或ip或port端口号与当前资源的协议或ip或port端口号不同,这种情况视作跨域请求。2、跨域请求可能会出现的问题浏览器发起跨域请求无法获取到目标资源。 实际请求报文与原本要发送的报文不同3、跨域请求造成问题的原因浏览器因相关规范,在发送跨域请求前,会在请求报文达到触发条件时发送请求方法为options的预检请求。
2022-03-23 23:56:14
1684
原创 Redis---布隆过滤器
Redis---布隆过滤器简介:Redis官方在4.0版本后新增了布隆过滤器插件,配置了插件执行bf.add 布隆过滤器名称 值、bf.madd布隆过滤器名称 值列表等来对布隆过滤器进行操作。为提高布隆过滤器准确性,通过bf.reserve布隆过滤器名称期望错误率初始容量 命令自定义redis的布隆过滤器。
2022-02-24 11:14:23
346
原创 linux命令-进程后台运行
linux命令-进程后台运行前言:使用linux启动一些服务时,命令行无法切换出来执行其他操作,这时就需要将执行一些进程前后台切换操作基本操作命令:将进程放在后台执行:command &将进程转为后台运行并暂停进程: ctrl-z查看当前后台任务:jobs将任务转为后台执行:bg将任务调回前台 :fg杀掉进程:kill...
2022-02-16 16:41:18
818
原创 JAVA基础--避免过多非空判断
JAVA基础--避免过多非空判断前言:写项目时总会在方法业务代码中使用到if与else去判断空指针异常解决方法:最简单避免过多非空判断的方式是自己编写的所有类下方法都避免返回null空指针。如果真响应为空响应,则自定义一个专属空响应的对象,让调用者正常处理而不报错。...
2022-01-27 16:24:31
869
原创 JAVA基础--异常情况
JAVA基础--抛出异常情况前言:任何JAVA代码执行时都有可能出现异常情况的抛出。一般在异常方法内部有两种情况处理异常。通过trycatch处理异常通过throws向外层方法抛出异常对不处理异常情况的代码情况进行代码实践,代码实践两部分不处理异常情况多线程下出现一个线程抛出运行时异常
2022-01-26 17:13:22
902
原创 Json代码实战演练
Json代码实战演练Json是什么Json是一种数据交换格式,完全独立于编程语言的文本格式,有一套标准的语法规则,便于机器解析。为什么用Json可读性、可拓展性强、编写难度低;作为统一的数据文本格式在不同平台间规范数据格式。怎么用Json在JS中,Json文本能被解析为对象;对象也可解析为Json文本。在SpringMVC中,添加了@RestController/@Responsebody的控制器能将返回对象解析为Json文本;添加了@RequestBody能将请求体中Json文
2022-01-06 01:48:55
248
原创 Hadoop与Spark注意事项
Hadoop与Spark注意事项1、Hadoop与Spark集群启动与停止都有两种方式一种是逐个服务器结点启动或停止(start-master.sh/start-worker.sh/stop-master.sh) 另一种是在单个节点上一键启动或停止(start-all.sh/stop-all.sh)2、 Hadoop与Spark集群使用一键启动或停止必须设置ssh免密登录Hadoop与Spark各结点服务器之间通信使用ssh,若不设置免密登录会无法在单个节点一键启动/停止多节点。免密登录以及
2022-01-06 01:42:20
1194
原创 JAVA基础--原型模式下使用的克隆与new区别
前提:设计模式中的原型模式是在一对象基础上使用clone进行对象的克隆。在实现clonable接口的基础上调用clone方法属于浅层克隆,对对象除基本对象外的其他对象分别调用clone方法则对该对象属于深克隆。new是调用构造器进行对象的构建。性能区别:通过克隆生成对象性能优于通过new。使用场景:在大规模创建对象时用克隆大大提升性能...
2021-12-20 11:53:51
620
原创 SpringBoot日常知识整理
SpringBoot日常知识整理一、项目管理工具SpringBoot项目使用Maven/gradle作为项目管理工具,pom.xml与settings.gradle为各自的项目管理文件。主要作用为1、统一开发规范与工具 , 2、统一管理jar包二、SpringBoot启动SpringBoot通过main方法所在类文件开启SpringBoot项目,通过注释@SpringBootApplication启动其他SpringBoot自动配置与按规则自定义的信息。三、@SpringBootAppl
2021-11-08 17:10:28
1957
原创 JAVA基础--Lamda表达式&方法引用
JAVA基础---Lamda表达式与方法引用什么是函数式接口:函数式接口有且仅有一个抽象方法,可以有多个普通方法和静态方法。Java中对函数式接口的编译约束定义了@FunctionalInterface注释;标注了@FunctionalInterface注释的接口,在编译阶段进行了抽象接口数量约束。函数式接口常用于lamda表达式与方法引用。什么是lamda表达式:使用场景:在接口当且仅有一个抽象方法时,取代匿名内部类的使用。
2021-11-05 11:18:01
557
原创 Web响应重定向301与302
Web响应重定向301与302:301与302的作用:301与302都是请求的重定向。状态行设置在响应行中,重定向地址设置在响应头部。请求方获取到响应报文后完成请求的重定向。301与302的区别:301表示永久重定向,浏览器在第一次获取到301响应报文就会把报文缓存到浏览器,下次同样请求会直接从缓存中获取响应,不再访问后台服务器。302表示暂时重定向,浏览器获取到302响应报文后不会把报文缓存到浏览器,之后每次请求都会请求后台服务器。301响应报文如下:302响应报文如下:.
2021-11-04 16:27:41
1673
原创 HttpServletRequest读取body只可读取一次的解决方案
什么时候需要读取多次body:当过滤器、拦截器、控制器需要使用请求的body两次以上;前两者执行的操作一般为对数据的验证与提前处理,而控制器执行的操作为对业务的处理。为什么HttpServletRequest对象的请求体body只读取一次:HttpServletRequest使用getInputStream()与getReader()获取输入流因为读取时数据流指针的单向移动导致请求的body内容只可读取一次。怎么解决HttpServletRequest对象的请求体body只读取一次:
2021-11-03 09:53:42
2754
原创 弗曼技巧笔记
弗曼技巧学习过程:选择一个概念 向其他人讲解这个概念 对讲解中出现的卡壳发现不懂的问题,回头去进一步学习学习过程中使用流程图,便于理解与记忆。弗曼技巧注重于正负反馈,有了正负反馈才能够对知识进行更好的理解。不同方式下学习内容留存率:弗曼技巧使用了最有效的方式---教授给他人。讲解的方式:可以依靠简化或类比的方式进行讲解,直到对方理解。...
2021-10-25 10:23:11
208
原创 SpringCloud Gateway---SpringCloud网关
SpringCloud Gateway:作用:用于分布式系统,可进行路由、流量控制、熔断降级、安全验证等操作。功能与nginx相近但比nginx实现的功能更广。使用请求body总结:在java代码下可通过RouteLocator完成路由配置、readbody封装使用以及过滤器配置。其中的readbody依靠着装饰完成对原始请求body装饰,提取body值入ServerWebExchange的Attribute中,使其可多次读取到。在yaml配置下,无法配置ReadBodyRouteR
2021-10-19 18:56:24
970
原创 算法--图的深度优先搜索遍历与广度优先搜索遍历
图的深度优先搜索遍历:结果不是唯一的。图的广度优先搜索遍历:结果不是唯一的。对于下图,分别采用深度优先遍历与广度优先遍历,结果可为:深度优先搜索遍历:ABEFCD,ADCBFE广度优先搜索遍历:ABCDEF、ADCBFE...
2021-10-15 15:19:59
1289
原创 链路追踪Sleuth与Zipkin
Sleuth用于监视微服务的调用。Zipkin配合Sleuth使用,通过collector、storage、API、UI四大组件通过Zipkin服务器可视化监视微服务调用情况。使用参考博文:链路追踪 Sleuth 和 Zipkin
2021-10-15 10:53:23
456
原创 CDN学习笔记
CDN概述:中文名称为内容分发网络,为提高网络服务质量,解决不同地区访问web资源速度差异问题。各大公司在各地放置CDN服务器用来存储与加速访问静态资源。与CDN服务器配合使用的是CDN专用DNS服务器。CDN与CDN专用DNS服务器作用流程图:参考博文:CDN到底是个什么鬼?看完这篇你就懂了!...
2021-10-13 13:54:45
123
原创 Redis---哨兵
哨兵作用:Redis中哨兵是一个与Redis服务独立开的进程,用来检测Redis集群服务是否正常使用。当Redis的master宕机,哨兵会自动进行完成故障转义,选择新的master交由客户端并通知其他新的slave。客户端与哨兵:客户端一般会保持两个连接,分别是与哨兵的连接和与master的连接,客户端通过哨兵获取到当前redis集群的master的ip与port,之后完成于master的连接。参考文献:1、redis哨兵机制 2、客户端连接redis时是连接的哨兵还...
2021-10-13 10:23:04
230
原创 Spring Cloud Alibaba--分布式事务框架Seata
Seata作用:分布式事务框架Seata用于保证微服务间的事务一致性。Seata中涉及的对象种类:事务管理者、资源管理者、事务协调者。参考博客:阿里开源的分布式事务框架 Seata
2021-10-10 02:52:49
156
原创 算法--动态规划(待补充)
动态规划:动态规划求解过程是多阶段决策过程,每步处理一个子问题,可用于求解组合优化问题。适用条件:问题需要满足优化原则或者最优子结构性质,即问题与其子问题需要有最优值的依赖关系,子问题的最优解是符合父问题的最优解求解要求的。...
2021-10-08 01:26:40
98
原创 Spring Security流程图
Spring Security通过依赖注入与过滤器来进行安全检查与认证。作用流程图如下:参考博文:https://blog.csdn.net/u012702547/article/details/89629415
2021-10-04 01:18:10
593
原创 Redis---高效处理高并发请求
Redis采用单线程处理高并发请求。之所以能高效处理源于两个主要方面:Redis使用Epoll多路复用,多路指多网络连接,复用指多连接复用一个线程。 Redis属于NoSQL内存数据库,数据操作在内存。Redis能单机处理几十万并发请求,限制Redis的能力大小主要在内存大小而非CPU。对多核服务器,若要充分利用CPU资源,可以采用多进程Redis方式利用,即多个Redis程序部署在该多核服务器上。参考博文:关于Redis处理高并发...
2021-09-26 11:18:10
556
原创 JAVA文件数据导出
现如今各类信息存储有框架可使用,如logback等日志框架。而通过流保存信息的底层实现较少使用。今天就上手练习了下。 /** * 对象记录到本地日志文件 * @param Mes * @return */ public static boolean save(Mes Mes){ //导入对象判空 if(Mes==null){ return false; } //
2021-09-23 16:29:18
727
原创 JAVA基础--TreeSet
TreeSet内存储值不重复:TreeSet对存储值是否重复判断是通过compareTo()方法是否返回0进行验证判断,不同于其他Set通过equals方法判断;若为0则存在重复,该值无法插入TreeSet对象中。TreeSet中插入对象类型唯一:插入对象不能不同类型混合插入。TreeSet插入对象后默认进行排序:排序有两种方式,排序顺序按照有小到大:1、自然排序:TreeSet在没传入Comparator比较器情况下,使用自然排序。自然排序就是调用存储对象的comp..
2021-09-14 11:51:51
154
原创 Mysql索引失效的情况
前提:开发中遇到索引失效,遂查阅相关博客学习了解,得出如下Mysql索引失效情况。情况:1、条件中带有or,则条件中有条件带索引都会失效。2、使用模糊查询中,like后模糊查询字符串以%开头,则查询字段索引失效。如‘%thh’。3、多列索引中,只有第一部分的索引生效,其余部分失效。4、查询字段是字符串类型,则若转换了查询字段类型或查询数据未用‘ ’引用,则索引失效。如Date(str_time)、str_name=123,索引失效。5、mysql认为全表查询比索引快,则不使用
2021-09-09 14:20:04
147
原创 git:仅输入一次账号密码就可永久生效
前提:git中pull、push以及对私人仓库的克隆默认是每次需要输入github账号密码进行验证权限的。仅输入一次账号密码:若不想重复输入账号密码,则通过设置如下代码,将账号密码保存在凭证管理器中储存,之后账号密码验证由凭证管理器中获取验证;git config --global credential.helper storeIDEA中应用:IDEA中默认是输入一次github/gitlab账号密码后,不用再手动输入账号密码,而是去凭证管理器中获取验证,简化了输入账号密码的重复性
2021-09-07 00:58:14
1260
原创 Idea中连接github遇到的情况说明
前提:不直接从远程仓库进行clone,而是在本地将本地仓库共享到远程仓库1、本地分支从远程分支拉去更新:必须要先建立管理远程仓库,然后将本地分支通过checkout方式与远程分支关联。否则本地分支无法获取更新。2、更改.git文件夹下config文件中的url地址...
2021-09-03 00:51:25
431
原创 Http请求与响应--header头部字段
目录前提:头部字段全览:Http头部字段解释:Accept:作用:请求与响应类型不一致问题:标签下的请求报文accept字段:前提:项目开发中涉及到header头部字段的获取与设置,于是想了解并记录下http头部字段的知识以供后续补充与回顾。头部字段全览:一、常用标准请求头字段 Accept 设置接受的内容类型 Accept-Charset 设置接受的字符编码 Accept-Encoding
2021-08-30 00:27:38
8831
原创 面向对象开发-设计原则与设计模式
目录一、前提:二、面向对象编程七大原则:三、面向对象编程围绕着七大原则的二十四种设计模式:六种建造型设计模式:七种结构性设计模式:十一种行为性设计模式:四、学习设计模式需要注意的:问题1:部分设计模式在代码实现规范上存在着相同的结构原因1:一、前提:每次学习设计原则与设计模式都能有不一样的理解;因此之后的每次学习都要会在此博文进行相应的修改与补充。二、面向对象编程七大原则:开闭原则 迪米特原则 合成复用原则 依赖倒置原则 里氏代换原则 单一责任原
2021-08-29 01:56:42
220
原创 分布式系统
CAP:一致性Consistency、可用性Availability、分区容错性Partition tolerance。分区容错性:系统中提供服务的网络节点称之为分区,分区容错性要求当一分区挂掉时,其他分区能正常替代该分区提供服务。单机应用程序因只有一台机器故不存在分区容错的要求,分区容错只要求在分布式系统中。一致性:不同节点数据的一致,由数据复制备份的频率决定一致性的高低可用性:客户端发送的数据请求能正常收到响应,不会出现影响可用的延迟。分布式系统中CAP之间的关系:为了提高分区容错性
2021-08-26 17:03:18
137
原创 基于Oauth2.0协议的移动应用程序微信扫码登录流程
官方文档:微信开放文档前提:Oauth2.0是一种服务提供商为软件开发商提供安全授权的标准。 软件开发商在使用微信登录前需要到微信开发平台进行注册与审核,审核通过获取AppId、AppSecret。 开发通过向相关微信url发送请求获取到相应的数据响应。使用微信扫码登录的步骤:(注意:每个操作都是发送一个url请求并获取响应,有些参数是特定值)根据appid、redirect_uri、response_type、scope、state获取请求code 根据appid、secret、cod
2021-08-25 16:57:33
771
原创 JAVA基础--异步编程
前提:同步一定是阻塞的,异步可阻塞也可非阻塞。JAVA异步概念概述:异步是相对于当前线程来说,具体执行代码不在当前线程而是通过线程池或者单独创建线程的方式去执行。同步则一定是在当前线程中执行。JAVA异步编程:Java异步一般使用框架,不使用框架则自己提供新建线程池或单线程的方式实现。Spring框架下,@Async标注的方法为异步非阻塞方法。实现的底层源码是通过切面AOP与线程池实现的。线程池可以使用Spring自带的默认线程池,也可以自己自定义一个线程池(线程池类型为ThreadPool
2021-08-25 01:00:32
272
原创 nginx负载均衡
nginx支持高并发关键:多线程+多路复用epoll;DMA:允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。在epoll中的应用为网卡将接收到的数据通过DMA将数据存储于内存,通过中断指令通知CPU去处理请求数据。......
2021-08-24 17:04:09
158
原创 JAVA基础--类加载
不管是外部类还是内部类,都是在第一次使用时才会加载,不会跟着外部类加载而加载。一、内部类实例创建:静态内部类:静态内部类实例创建依赖外部类。非静态内部类:非静态内部类实例创建依赖外部类实例。 //静态内部类 System.out.println(new test.StaticInnerClass()); //非静态内部类 System.out.println(new test().new InnerClass());二、静态内部类与非静态内部类
2021-08-23 17:06:17
179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人