- 博客(45)
- 收藏
- 关注
原创 Linux基础操作(下)
进程是指程序在操作系统内运行后被注册为系统内的一个进程,并拥有独立的进程ID(进程号)管理进程的命令ps -ef 查看进程信息ps -ef | grep "" 过滤指定关键字进程信息kill [-9] 进程号 关闭指定进程号的进程top命令内容详解磁盘信息监控使用df命令,可以查看硬盘的使用情况语法: df [-h]语法: -h,以更加人性化的单位显示可以使用iostat查看CPU,磁盘速率等相关信息选项: -x,显示更多信息num1:数字,刷新间隔,num2:数字,刷新几次网络状态监控。
2024-07-28 18:53:21
701
原创 Git基本用法
-set-upstream 推送到远端的同时并且建立起和远端分支的关联关系。*删除分支: git branch -d 分支名 做检查删除。git push 将master分支推送到已关联的远端分支。如果当前分支已经和远端分支关联,则可以省略分支名和远端名。git branch -D 分支名 不做检查直接删除。创建并切换 git checkout -b 分支名。抓取指令就是将仓库里的更新抓取到本地,不进行合并。如果不指定远端名和分支名,则抓取并更新所有分支。切换分支:git checkout 分支名。
2024-07-28 18:42:19
773
原创 优惠卷秒杀
例如:在优惠卷秒杀时,多线程并发查询储存量,结果都均为100,有一个线程率先执行了修改操作,储存量->99, 那么如果在修改时判断是否与第一次查询储存量相同,则会有很多线程操作失败,但这时储存量是大于0,在业务上是可以执行的,但为了线程安全问题,使得无法修改,成功率降低。集群部署时,一个新的部署,就意味着一个新的tomcat,一个全新的JVM,有各自的堆,栈,方法区,监视器对象就会有自己的锁监视器,锁监视器在JVM内部可以实现多个线程的锁互斥,在多个JVM时每个JV内都会有一个线程成功。
2024-07-28 18:39:06
1055
原创 Redis的分布式锁
定义:多线程是并行化的一种形式,通过拆分工作以便同时进行处理。在程序中,这些独立运行的程序片段被称作“线程”(Thread),利用它编程的概念就叫作“多线程处理”。原理:多线程的并发执行机制原理是将一个处理器划分为若干个短的时间片,每个时间片依次轮流地执行处理各个线程,由于时间片非常短,相对于一个应用程序来说,就好像是处理器在为自己单独服务一样,从而达到多个应用程序或线程在同时进行的效果。
2024-07-28 18:35:20
834
原创 缓存穿透,缓存击穿,缓存雪崩
定义:缓存穿透是指用户查询数据,缓存和数据库中都不存在该数据(一般是发起恶意的查询,试图击穿缓存,直接查询数据库),这时用户每次查询都会直接打到数据库上,而数据库中也没有该数据,如果用户不断发起这样的请求,数据库压力会非常大,甚至可能拖垮数据库。解决方案布隆过滤器(Bloom Filter):布隆过滤器可以快速判断一个元素是否在一个集合中,但是会有一定的误判率。在数据放入缓存之前,先使用布隆过滤器判断数据是否存在,如果不存在则直接返回,不进行数据库查询。空值缓存。
2024-07-24 11:56:19
824
原创 SpringDataRedis
RedisTemplate可以接收任意Object作为值写入Redis,只不过写入前会把Object序列化为字节形式,默认采用JDK序列化。这样在写入redis时就不需要把对象类型写进去,在拿出结果时,程序员知道自己要拿的是什么类型,自己转为所要的对象。缺点:为了方便序列化和反序列化,会把对象的类型也写入到redis中。3.读取Redis时,手动把读取到的JSON字符拆,反序列化为对象。由它在向redis写入数据时,自动帮我们进行序列化,然后再存储。注:使用jackson序列化,需要导入依赖。
2024-07-20 11:34:59
318
原创 Stream中间操作
map只能把一个对象转成另一个对象来作为流中的元素。而flatMap可以把一个对象转换成多个对象作为流中的元素。map只能把一个对象转成另一个对象来作为流中的元素。而flatMap可以把一个对象转换成多个对象作为流中的元素。可以把集合中的元素转为一个个对象类型来操作。可以把集合中的元素转为一个个对象类型来操作。跳过流中的前n个元素,返回剩下的元素。跳过流中的前n个元素,返回剩下的元素。可以去除流中的重复元素。无参数sorted()有参数Sorted()无参数sorted()有参数Sorted()
2024-06-11 17:09:25
294
原创 跨域的配置
浏览器出于安全的考虑,使用XMLHttpRequests对象发起HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。前后端分离项目,前端项目和后端项目一般不都是同源的,所以肯定会存在跨域请求的问题。2.在SpringSecurity中配置。1.在Springboot中配置跨域。所以我们就要处理一下,运行跨域请求。
2024-06-11 17:06:40
260
原创 认证配置详解
共同点:都可以配置后台权限可以忽略的请求区别:1、public修饰的configure:经常,因为此方法中配置的请求不会经过spring security的框架及自定义添加的过滤器链。容易被攻击。2、protected修饰的configure:用于处理动态资源的忽略,因为此方法中配置的请求将经过spring security的框架及自定义添加的过滤器链,只是不经过登录验证。可以保证动态资源的请求不容易被他人攻击,更加安全。
2024-06-11 17:06:00
616
原创 密码加密存储
默认使用的PasswordEncoder要求数据库中的密码格式为:{id}password。它会根据id去判断密码的加密方式。我们可以定义一个SpringSecurity的配置类,SpringSecurity要求这个类要继承WebSecurityConfigurerAdapter。我们一般提供SpringSecurity为我们提供的BCryptPasswordEncoder。2.加密:注册时,对用户输入的密码加密,将加密的密码存入数据库。3.校验:判断用户输入的密码是否和数据中的密码是一致的。
2024-06-11 17:05:16
406
原创 SpringSecurity
Data@JSONField(serialize = false)// redis为了安全,不会序列化这个对象// 该方法返回一个身份认证对象@Override// 把permissions中String类型的权限信息封装成SimpleGrantedAuthority对象=null){
2024-06-11 17:04:24
494
原创 Bug积累
原因: RequestDispatcher将当前文件的路径给改了,所以Js文件以及CSS文件、图片的路径都不对了;改为<link href="${path}css/register.css" rel="stylesheet">当next和nextLine同时使用时,会造成循环出问题,nextLine直接将换行符当成输入数据,进入下一次循环。从<link href="../../css/register.css" rel="stylesheet">解决办法:在前端页面上加上。,而不是 id 属性。
2024-03-31 10:46:29
367
原创 会话跟踪技术
从浏览器发出请求到服务端响应数据给前端之后,一次会话(在浏览器和服务器之间)就被建立了,会话建立后,浏览器或服务端都没有被关闭,则会话就会持续建立着,浏览器和服务器就可以继续使用该会话进行请求发送和响应。服务器会收到多个请求,这多个请求可能来自多个浏览器,服务器需要用来识别请求是否来自同一个浏览器,服务器用来识别浏览器的过程;服务器识别浏览器后就可以在同一个会话中多次请求之间来共享数据。
2024-02-15 15:00:43
1287
原创 MVC模式和三层架构
MVC 是一种分层开发的模式,其中:M:Model,业务模型,处理业务V:View,视图,页面展示C:Controller,控制器,处理请求,调用模型和视图三层架构分为三层,分别是“数据访问层”、“业务逻辑层”、“表示层”。数据访问层:数据访问层在作业过程中访问数据系统中的文件实现对数据库中数据的读取保存操作。表示层:主要功能是显示数据和接受传输用户的数据,可以在为网站的系统运行 提供交互式操作界面,表示层的应用方式比较常见,例如 Windows窗体和Web页面。
2024-02-12 12:04:28
246
原创 HTML基础
2.post * 请求参数会在http请求协议的请求体中 * 请求参数无限制的。<b> 加粗 <i> 倾斜 <u>下划线。<tr> 定义行 <align> 定义表格行的内容对齐方式。<cellspacing> 规定单元格之间的空白 (=0时,线条会重合)<rowspan>:规定单元格可横跨的行数(横向合并单元格)<boder> 规定表格边框的宽度。<width> 规定表格的宽度。<colspan>:规定单元格可横跨的列数。
2024-01-30 21:00:41
254
原创 Mybatis
灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。传统的jdbc操作 , 有很多重复代码块 .比如 : 数据取出时的封装 , 数据库的建立连接等等…, 通过框架可以减少重复代码,提高开发效率 .比起硬盘,内存过于昂贵,如果有够量的内存,则不需要持久化服务,但是正是因为内存太贵,储存有限,因此需要持久化来缓存。内存断点后数据会丢失,但是有些业务不允许这种情况的存在。简单易学:本身就很小且简单。
2024-01-26 14:00:31
420
原创 Maven基本使用
Apache Maven 是一个项目管理和构建工具,它基于项目模型(POM)的概念,通过一小段描述信息来管理项目的构建,报告和文档。
2024-01-26 13:04:46
414
原创 SQL基础语法
desc 查询表结构double(总长度,小数点后保留的位数)varchar(20) 存储性能低 变长 节约空间char()定长字符串 存储性能高 定长 浪费空间drop table if exists 表名修改表名alter table 表名 rename to 新表名;添加一列add table 表名 add 列名 数据类型;修改数据类型alter table 表名 modify 列名 新数据类型;
2024-01-08 21:52:30
1558
1
原创 MySQL函数
返回位于当前行的前n行(LAG(expr,n))或后n行(LEAD(expr,n))的expr的值。返回第一个FIRST_VALUE(expr) 或最后一个LAST_VALUE(expr)的值。分组内小于,等于当前rank值的行数 / 分组内总行数 求比例。返回窗口中第n个expr的值。截止到目前,按照日期排序查询第1个入职和最后1个入职员工的薪资。截止到当前薪资,显示每个员工的薪资中排名第2或者第3的薪资。查询小于等于当前薪资(salary)的比例。查询前一名同学的成绩和当前同学成绩的差值。
2023-12-13 21:00:19
347
原创 通信知识点
192.168.开头的就是常见的局域网地址,范围即为192.168.0.0--192.168.255.255,专门为组织机构内部使用。127.0.0.1 localhost: 代表本机IP,只会寻找当前所在的主机。内网IP: 也叫局域网IP,只能组织结构内部使用。公网IP: 是可以连接互联网的IP地址;设备在网络中的地址,是唯一的标识。连接和数据在网络中传输的规则。应用程序在设备中唯一的标识。3.IP 端口 协议。
2023-12-02 15:56:14
389
1
原创 线程安全问题
目录 1.什么是线程安全问题 ?解决方法一:同步代码块 作用: 把访问共享资源的核心代码给上锁,以此保证线程安全解决方法二:同步方法 作用:把访问共享资源的核心方法给上锁,以此保证线程安全解决方法三:创建锁对象 多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题 synchronized(同心锁){ 访问共享资源的核心代码}解决方法二:同步方法作用:把访问共享资源的核心方法给上锁,以此保证线程安全修饰符 synchronized
2023-12-02 15:40:39
396
1
原创 日志基础知识
目录1.什么是日志?日志是用来记录重大事件的工具好比生活中的日记,可以记录你生活中的点点滴滴程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息2.日志的优点1. 可以将系统执行的信息,方便的记录到指定的位置(控制台,文件中,数据库中)1.可以随时以开关的形式控制日志的启停,无需侵入到源代码中去修改3.使用具体步骤。
2023-12-02 11:14:08
395
1
原创 Properties
读取Properties文件是java中很常用的一种配置文件,文件后缀为“.properties”,属文本文件,文件的内容格式是的格式。
2023-12-02 11:03:41
359
1
原创 测试类基础
2.为需要测试的业务类,定义对应的测试类,并为每个业务方法,编写对应的测试方法(必须: 公共 无参 无返回值)* 4.开始测试: 选中测试方法,右键原则“junit运行”,如果测试通过是绿色;如果测试失败,则是红色。* 某个系统,有多个业务方法,请使用junit单元测试框架,编写测试代码,完成对这些方法的正确性测试。* 3. 测试方法上必须声明@Test注解,然后在测试方法中,编写代码,调用被测试的业务方法进行测试。为了不影响其他模块,我们可以。
2023-12-02 10:39:30
327
1
原创 Stream流知识
也叫Stream流,是jdk8开始新增的一套API,可以用于操作集合或者数组的数据* 优势 : Stream流大量的结合了lambda的语法风格来编程,提供了一种更加强大,* 更加简单的方式操作中的数据,代码更简洁,可读性更好。
2023-11-20 17:00:53
44
1
原创 冒泡排序、选择排序、二分查找
/ 目标 : 掌握|冒泡排序|算法//先定义一个循环,需要比较几轮,n个数需要比较n-1轮i++) {// 再定义一个循环,确认每轮循环中需要比较几次/*第一轮 i=0 得出最大值需要比较四次第二轮 i=1 得出需要比较三次第三轮 i=2 得出需要比较二次第四轮 i=3 得出需要比较一次*/j++) {//判断数值的大小,大的数往后走//对数组中的数据值进行反转,需要定义一个临时变量int temp=0;i++) {// 目标:掌握选择排序算法。
2023-11-15 21:34:55
35
原创 Map集合,集合嵌套知识点
/ Map集合在什么业务场景下应用// Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的/*{商品1=2,商品2=3,商品3=2}*** 需要存储一一对应的数据时,就可以考虑使用Map集合来做 ***Map集合体系的特点注意:Map系列集合的特点都是由键决定的,值只是一个附属品,值是不做要求的• HashMap(由键决定特点):无序,不重复,无索引;(用的最多)• LinkedHashMap(由键决定特点):有序,不重复,无索引。
2023-11-15 21:05:01
56
原创 Java基础语法注意事项(2)
实例化是指根据类创建一个具体的对象的过程,在面向对象编程中非常重要。通过实例化,我们可以创建一个具有类定义的属性和方法的对象。在Node.js编程中,实例化可以通过创建一个类的构造函数,然后使用new关键字来创建一个对象实例。在抽象类中可以有构造方法,只是不能直接创建抽象类的实例对象,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类,先初始化父类。2.Scanner中next()和nextLine()的区别有效字符前的空格会忽略;有效字符遇到空白符。
2023-11-13 16:27:36
34
原创 继承基础知识
Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系子类 父类• 子类能继承父类的非私有成员变量(成员变量,成员方法)
2023-11-05 10:34:58
39
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人