自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 主线程退出后子线程是否还会正常运行?

今天突然有感而发, 想要来探讨一下主线程和子线程之间的关系。

2024-01-07 10:00:57 425

原创 11111111

1111

2024-01-05 22:19:56 368

原创 Tomcat启动流程分析

通过前面的学习,相信已经对Tomcat这个容器已经有了自己的一些认知,接下来的话我们将会一起来进行探讨Tomcat的架构设计和目录解析。

2023-12-27 20:59:19 852

原创 Java Web基础详解

补充一些JAVA Web的基础知识

2023-12-25 20:21:39 985

原创 从零构建tomcat环境

从零构建tomcat的环境,方便后续对于tomcat源码的学习和二次开发,利于我们后续的debug调试,包括从一个请求到来时tomcat内部是如何处理的会慢慢的道来。

2023-12-23 20:32:09 1277 2

原创 tomcat剖析:开篇

深入剖析tomcat的简介

2023-12-22 14:29:51 957

原创 Linux

RPM原称(“Redhat Package Manager”),RPM会建立统一的数据库文件,详细的记录软件信息并能够自动的分析依赖关系。RPM可以帮助用户查询软件相关的依赖关系,但问题还是自己解决。

2023-04-08 15:26:02 1206

原创 并发编程基础

并发编程一、并发编程​ 死锁:比如t1拿到锁之后,因为一些异常情况没有释放锁(死循环)。又或者是t1拿到一个数据库锁,释放锁的时候抛出了异常,没释放掉。package Concurrency;//死锁public class DeadLockDemo { private static String A = "A"; private static String B = "B";​ public static void main(String[] args) { ...

2022-03-27 08:29:38 232

原创 2022-03-14

Docker一、Docker简介1、什么是容器?容器从根本上改变了人们开发、发布以及运行软件的方式。软件开发者可以在本地构建软件,因为他们知道软件能够在任何主机环境下运行,无论是IT 部门的机房、用户的笔记本电脑,还是云端集群,而且运行时并无差异。容器是对应用程序及其依赖关系的封装。它和虚拟机一样拥有一个被隔离的操作系统实例,用来运行应用程序。2、容器的优点容器能与主机的操作系统共享资源,因而它的效率高出一个数量级。启动和停止容器均只需一瞬间。相比在主机上直接运行程序,容器的性能损耗非常低

2022-03-14 21:17:24 1212

原创 2022--03--06

1、学习总结上一周学习了数据结构和计算机组成原理,数据结构一如既往的一头污水,不过还是有点知识储备能够进行书写,计算机组成原理则是更加贴近于底层组成于计算机底部的东西,因此晦涩难懂,从上往下进行剖析底层,难如登天。不给也是挺有意思的东西,从0110101010代码到一整片的图形化的界面。2、技术最近在学SpringCloud的内容,上面的刚开始有Eureka的服务发现,当多个微服务提供者进行同时注册时,需要有一个中间商进行统一的服务管理,而eureka则是服务管理的角色,每隔一段时间进行发送心跳包,

2022-03-06 14:19:05 344

原创 2022-02-26

开学开学挺好,也挺不好。记录数组中出现次数超过一半的数字1、次数超过一半的数字一定位于数组的中间位置,奇妙的方法class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/2]; }}2、常规的思路HashMap打表进行计数,此处进行省略。3、摩尔投票法摩尔投票法(Boyer–Moore majori

2022-02-26 20:26:53 126

原创 2022/1/16

一、感悟这是2022的第一篇博客,感觉时间过的挺快,上大学一年半了,感觉挺好的,各个方面进展还算顺利,但是自我感觉自己有点懒惰了,比起大一那时自己的惰性很深,但是同时比起大一,对于学习的欲望更加的深刻了,总之未来加油就对了!二、知识总结学习任务给的是复习源码,但是我感觉源码对于我来说真的难,只能大概的去知道每一步是怎么做的却不能自己去设计更加优化的操作,这可能是我们普通大众与大牛的区别之处,最令人晦涩难懂的便是java中的HashMap真的难,只是大致的知道了其表层的实现,我并没有去深究其中的原因,虽

2022-01-16 20:04:15 189

原创 BUG1===========SpringSecurity进行横向越权的操作

一、问题引入,当我们在写业务逻辑时,会遇到判断用户越权的问题,大多数情况下我们判断的是纵向越权比较多,但是相同的情况下还有横向越权。比如用户A 修改用户B的密码。二、解决方法对于横向越权来讲,横向越权更加的难以解决,在前后端未分离的情况下,我们大多数采用的session进行用户登录信息的获取,将用户的信息保存在session中,当我们进入前后端分离的阶段时session就显得不是很管用,此时我们采取用token进行保存登录用户的信息,进而一次验证将用户的信息封装至token,然后在每次进行时都可以进行获取

2021-12-19 17:39:58 975 8

原创 2021/12/5

ArrayList源码分析一、ArrayList简介每个ArrayList实例都有一个capacity 。 容量是用于存储列表中元素的数组的大小。 它始终至少与列表大小一样大。 随着元素被添加到 ArrayList,它的容量会自动增长。 除了添加元素具有恒定的摊销时间成本之外,没有指定增长政策的细节。应用程序可以在使用ensureCapacity操作添加大量元素之前增加ArrayList实例的容量。 这可以减少增量重新分配的量。请注意,此实现不是同步的。 如果多个线程同时访问一个ArrayList实

2021-12-05 21:47:50 172

原创 关于Springboot集成Redis实现接口防刷

关于Springboot集成Redis实现接口防刷小贴士:目前大部分公司都采用前后端分离的开发方式,进行项目的并行开发。在项目中后台只需要提供一套API接口,就可以接入安卓、小程序、IOS、web等多个应用程序,这样可以节约开发成本。但是一个后台接入这么多应用程序的http请求,必然导致后端的压力非常大。所以对于一些请求进行过滤和拦截是非常有必要的,能够有效地减轻后台的压力。接口防刷机制:主要防止短时间接口被大量调用(攻击),出现系统崩溃和系统爬虫问题,提升服务的可用性。方案一(AOP)一、什么是A

2021-11-29 16:31:46 800

原创 Mysql事务

Mysql数据库 删库跑路易操作,恢复数据如登天。 前人跑路坦荡荡,后人接盘长戚戚。一、什么是事务通常业务人员的一个操作实际上是对数据库读写的多步操作的结合。由于数据操作在顺序执行的过程中,任何一步操作都有可能发生异常,异常会导致后续操作无法完成,此时由于业务逻辑并未正确的完成 当程序发生异常时,说明事务被中断。解决的办法 1、记录失败的位置,待bug修复后进行从此位置继续执行操作。 2、从当前位置进行回滚,将数据库中的操作恢复至未修改前,然后待bug修复后重

2021-11-27 21:12:13 627

原创 2020/11/21

一、 写项目后台的经历及经验第一次写后台的感觉是也挺难的,虽然还是无限的增删改查,但是参数的校验以及逻辑的判断着实让人难受。合作写项目时,需要先确定需求,以及对不合理的需求进行整改,对返回格式的统一化,以及对于参数校验前后台的一致性,最令人难受的就是参数的校验。二、自定义自己的参数校验类对于前台传回的参数,第一步就是要进行参数的校验,一般都不能为空,或者超出自己预定的范围值。这样可以再访问数据库前进行判断进而隔断了不合法的数据,减小数据库的压力,以及数据的合法性。此时就会多出大量的if else代码

2021-11-21 11:35:57 470

原创 2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2 =

2021-11-15 14:36:56 71 1

原创 组合总和 II

给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。注意:解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例 2:输入: candidates = [2,5,2,1,2], target = 5,

2021-11-14 14:35:57 54

原创 2021-11-14

一、学习总结通过之前解决新大一的问题,我发现了自己的基础很薄弱,大部分的问题自己解决不了,还得去请教别人,同时对于操作系统的理解较浅,或者相当于没有理解,这一块的知识看来到最后可能要恶补。还有就是算法,算法在我的眼中依旧是一座难以跨越的大山,就像昨天的力扣双周赛,明明有思路,剩两个测试用例通过不了,明明都写出来了,但是最后两个测试用例就是过不了,最后十分钟已经想到用二分优化了吗,但是二分频频报错,搞人心态结果就是赛后又写了一个小时,仍然没写出二分优化的结果,一定要重视基础的比较经典的算法,同时将各种拓展给

2021-11-14 09:02:15 111 3

原创 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例 1:输入:digits = “23”输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]示例 2:输入:digits = “”输出:[]示例 3:输入:digits = “2”输出:[“a”,“b”,“c”]提示:0 <= digits.length <=

2021-11-07 16:49:25 156

原创 2021-11-07

1、算法总结最近算法刷题似乎有了些小的长进,也会做一些简单的中等难度的题了,有的还写了题解,不知道以后碰到还能自己再次写出来么。2、知识点总结,最近一直在忙着写项目和带学弟学妹们,知识点之类的接触的很少少,可能下来这一段时间要进行加班补了。3、带别人的感觉,总觉得和自己被带还是不太一样,因为大多数情况下,自我感觉人的本性喜欢的是自由,如果刚上来就限制自己的认知,或者让别人走自己的老路,这样着实不是很桶,所以大部分情况下,我们应该做的是让他们自由发展。最后,加油,莴苣菜一定能行!!!!......

2021-11-07 08:40:14 88

原创 填充每个节点的下一个右侧节点指针

给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。

2021-11-05 20:52:05 82

原创 二叉树的所有路径

给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]示例 2:输入:root = [1]输出:[“1”]提示:树中节点的数目在范围 [1, 100] 内-100 <= Node.val <= 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob

2021-11-04 21:20:25 159

原创 39.组合总和

给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例 1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例 2:输入: candidates

2021-11-03 12:00:44 56

原创 力扣45.跳跃游戏 II

给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: nums = [2,3,0,1,4]输出: 2提示:1 <= n

2021-11-02 20:19:28 169 3

原创 2021-10-30

一、作为学长的总结:好像从21级的身上看到了自己的影子,但也稍微有点不同,他们貌似比我们更卷,但是也都挺厉害的,我自己都佩服他们,希望他们能够学的越来越多,不断的坚持下去,至少能够多了解一下计算机这门学科的奥妙。二、学习总结现在一边在写项目,一边在学算法,一边在复习原先的基础知识,感觉最难理解的便是算法,算法给我的感觉就是一座大山,可能任何人都无法逾越,但是至少不能在半山腰看风景,一定要努力。下一阶段 KMP ,分治算法,动态规划基础知识现在可能很薄弱,很多地方的底层都很难解释他的原理,这个只能慢

2021-10-30 21:50:58 79

原创 2021-10-24

总结:上周进行了招新和数据结构学习一、招新:招新最大的感受就是累,但是感觉收获挺多的,遇到了挺多喜欢学习技术的小21,看见他们好像看到了去年的自己,懵懵懂懂啥也不知道,啥也不会,不过幸亏有学长学姐的带领,现在会的知识也提升了不少,希望未来在新21级的加入下,能够更加壮大。二、数据结构与算法数据结构与算法还是和我刚入学时感觉差不多,感觉算法是个天坑,任凭任何人都无法跨越的一座大山,奇奇怪怪各式各样的算法,算法是个不断积累的过程,虽然自己学的很慢,对题没多少思路,不过,数据结构确实有用,能解决很多的实

2021-10-24 11:43:56 1155

原创 2021-10-04

HTTP协议HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准(TCP)。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。HTTPS协议HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交

2021-10-04 12:54:07 46

原创 2021.9.26

数据结构1:数据结构分为线性结构和非线性结构:线性结构:有且仅有一个开始结点和一个终端结点,且所有结点都最多只有一个直接前驱和一个直接后继。线性表是一个典型的线性结构。栈、队列、串、数组等都是线性结构。非线性结构:在该类结构中至少存在一个数据元素,它具有两个或者两个以上的前驱或后继。如树和二叉树集合结构和多维数组、广义表、图、堆等数据结构都是非线性结构。2.算法复杂度分为时间复杂度和空间复杂度:时间复杂度主要看循环语句执行的次数,并不表示准确的代码运行时间,而是表示代码执行时间随着数据规模增长的变

2021-09-26 16:13:58 48

原创 2021-09-19

redis学习心得redis的相较于其他数据库软件的优点:使用Redis而不是关系数据库或者其他硬盘存储数据库, 可以避免写入不必要的临时数 据, 也免去了对临时数据进行扫描或者删除的麻烦 , 并最终改善程序的性能。redis的五种数据结构String 对整个字符串或者字符串的其中 部分执行操作;对整数和浮点数执行自增(increment)或者自减Cdecrement) 操作.List 从链表的两端推入或者弹出元素; 根据偏移批对链表 进行修剪(trim);读取单个或者多个元素;根据值查找或者

2021-09-19 14:03:34 45

原创 2021.8.16

这周学了点linux网络连接的三种模式1、桥接模式1.(bridged)桥接模式:简介:虚拟主机的ip和本地主机ip可以互相访问,虚拟机也可以访问互联网,虚拟机相当于互联网中的一台主机,详解:什么是桥接模式?桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主

2021-08-16 08:48:10 113

原创 2021.8.8

java中socket的应用示例此处为两个测试程序:demo代表服务器,demo01代表客户端,由此当demo01运行时则demo接收至信息从而运行完毕。当为单项时,在使用资源后立即调用close方法释放资源,为双向时,只在使用某个特定的流后关闭某个流,而非全部关闭,直至使用完毕后调用close方法进行关闭资源的操作。1.Java中Socket可以分为普通Socket和NioSocket两种。2.创建ServerSocket。ServerSocket的构造方法有5个,其中最方便的是ServerSo

2021-08-08 20:17:07 67

原创 2021-08-02

ORM(Object Relational Mapping),即对象关系映射,ORM模型指的就是Django中的模型类,通过ORM模型,我们可以通过操作类的方式去操作数据库,而不用写原生的SQL语句。ORM模型会把类映射为表,把类的一个实例映射为表中的一行数据(即一条记录),把类的属性映射为字段。另外需要说的是,虽然我们操作的是类,但是ORM模型底层还是会把我们的这些操作转换为原生的SQL语句去执行,相当于是简化了我们编程人员的工作,不用我们自己考虑原生SQL相关的问题。使用ORM的优点:易用性:使用O

2021-08-02 17:49:28 44

原创 暑假第一篇博客

SpringBoot配置问题@Configuration声明此类也是配置类,同时也是组件在此类中,通过@Bean进行注册组件,方法名为对应组件的id值,返回值为组件的id,也可通过@Bean(“名称”)声明对应组件的id;外部无论调用多少次,都调用到IOC容器中注册的唯一一个对象。经典的时间换空间的案例代理方法:(proxyBeanMethonds = false)当其为false时,就会忽略容器中已经有的对象的检查,进而直接新建一个项目,用于进行后续操作,会降低启动时所需要的时间。当为true时

2021-07-26 08:34:31 67

原创 2021.6.5

ssm项目中的系列小问题1.当为响应向前台返回数据时,加上注解@ResponseBody,可以不经过前台控制器,直接通过响应体,将数据进行带回。2.Model和Session域的区别,Model域中的数据,在跳转至另一页面时便会消失,只进行一次页面渲染。而session域则为保存在服务器中,全局皆可使用,但若数据过多,会增加浏览器的负担。3.外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10

2021-06-06 08:45:42 97 2

原创 2021-05-30

ssm项目中拦截器的作用1.构建ssm项目中spring mvc的拦截器需要继承HandlerInterceptorAdapter此接口,一个ssm项目中可以配置多个拦截器,拦截器之间可以进行链式拦截。其根据在配置文件中的生命顺序进行拦截操作。2.拦截器中有三个方法:preHandle此方法是在controller层之前进行拦截操作这种中断方式是令preHandle的返回值为false,当preHandle的返回值为false的时候,controller函数不会被执行,此时需要在本函数中使用 requ

2021-05-30 08:25:20 52 1

原创 2021-05-23

总结:ssm项目SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。...

2021-05-23 16:06:52 61 1

原创 2021-04-11

小组学习维持这么时间的视频网站终究落幕了,虽然写的不咋地,但是挺有成就感的,毕竟第一次独立的去完成这个项目,学习到了不少,同时也帮别人解决了不少问题,有的是算法题,有的是项目问题搞得挺自豪的。课程学习自从高数没听之后就没再碰过它,虽然真的有点听不懂加上不想学,感觉没意思的因素在里面,其他的还行,毕竟人各有所专,专一一点去攻克难题更容易在某一方面初中,加油就对了!!!...

2021-04-11 08:17:17 81 1

原创 总结

清明总结1.学习变得越来越不咋滴,出错的情况越来越多,蓝桥也逐渐到来,算法也提不上心,有的就是越来越少的睡眠,和数不胜数的截图,和理想的大学生活差的有点太多了,嗐,就该i这样吧!谁不是呢??2.小组学习项目越做越难,感觉做的越来越吃力,页面和后台一起写的感觉真不爽,但是想到让前端帮我改页面时,总觉得别人改的和我自己的理想型简直差的太多了,我要的是极致渲染,而到了前台那里变成了简约线条,如果真的前后端一起做项目时,谁知道会不会吵起来呢!!!总之别改我的源代码!...

2021-04-03 16:06:36 67

空空如也

空空如也

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

TA关注的人

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