- 博客(26)
- 收藏
- 关注
原创 会话跟踪技术-Cookie&Session
当浏览器下一次再访问的时候,就会携带这个Cookie取访问服务器,当服务器要获取session对象的时候,就会去内存中寻找有没有这个id的对象,如果有就直接拿来用。当Tomcat发现,服务器是要创建一个Cookie并发送给客户端,这个时候,Tomcat就在响应数据里面添加了一个响应头set-cookie,浏览器接收到这个响应头并解析,就拿到了cookie中的数据,并存储到浏览器的内存中,下次访问时,浏览器会携带cookie的请求头访问服务器。看下文的原理),A可以存数据,B可以取数据。
2023-05-07 21:24:41
223
原创 Spring核心概念--IoC DI
1.Spring是什么?我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级的应⽤程序开发起来更简单。⽤⼀句话概括 Spring:Spring 是包含了众多⼯具⽅法的 IoC 容器。2.那么什么是IoC呢?有什么用呢?
2023-04-24 12:20:07
162
原创 牛客CC31 三角形--java
j==i的那一列:dp[i][j]=dp[i-1][j-1]+arr[i][j]j==0的那一列:dp[i][0]=dp[i-1][0]+arr[i][0]dp[i][j]:从(0,0)-->(i,j)的最小路径和。“每一步都可以移动到下面一行相邻的数字”(i,j)到达最后一行的最小路径和。初始化dp数组的最后一行。
2023-04-24 08:34:31
79
原创 最大子数组和&&礼物的最大价值--java
只能向下或向右移动,所以,dp[i][j]可以由dp[i-1][j]或者dp[i][j-1]推出。递推公式:dp[i]可以延续上一个状态+nums[i];第二个是可以从nums[i]开始计算。用两个for循环,枚举出每一种情况,找到和最大的那个--时间复杂度O(n2)当连续和为负数的时候,就抛弃这个连续和从下一个数开始加。dp[i]:以i为结尾的最大子序列和。为了方便,直接初始化第0行和第0列。走到(i,j)能拿到的最大价值。1.dp数组定义及下标含义。这是一道很标准的动态规划。
2023-04-10 17:40:30
40
原创 牛客CC12 拆分词句--动态规划java
题目要求是一个字符串能否根据dict中的词分成一个或多个单词,那么它的子问题就是:前1、2、3......n个字符串能否根据dict中的词分成一个或多个单词。2.状态递推:true{j
2023-04-08 23:50:16
89
原创 力扣-209.长度最小的子数组-java
题目链接:209. 长度最小的子数组 - 力扣(LeetCode)题目描述: 代码如下:2、滑动窗口 代码如下: 使用while而不使用if的原因eg:nums={1,1,1,1,103} target=100这种情况下,大家都知道最短子序列数组为1,即i==j==4时,如果使用if,当j移动到最后一个位置,i在数组起始处,判断一次之后,整个循环就结束了,因此需要用while,每次更新起始位置,并判断子序列是否符合条件。时间复杂度:O(n)并不是for里放一个while时间复杂度
2023-01-29 19:18:14
240
原创 牛客--组队竞赛
牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3。一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3。一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2。
2022-11-24 10:45:00
434
原创 用堆模拟实现优先级队列-----java
队列是一种先进先出(FIFO)的数据结构,但有些情况下,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,该中场景下,使用队列显然不合适,比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;依次插入元素 ,如果比它的父节点小,就交换,当交换两个元素时,可能会改变堆的结构,如果交换后不符合小堆的性质,则继续交换,直到满足小堆的性质。下面以小堆为例,即谁比较小,谁先出队列。2. 将最后新插入的节点向上调整,直到满足堆的性质。可以看到,出队列时,谁小谁先出。
2022-11-08 19:10:13
149
原创 堆的创建---java
kn-1},把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中,并满足:Ki = K2i+2) i = 0,1,2…将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。如果2 * i + 2 小于节点个数,则节点i的右孩子下标为2 * i + 2,否则没有右孩子。如果i为0,则i表示的节点为根节点,否则i节点的双亲节点为 (i - 1)/2。1.堆中某个节点的值总是不大于或不小于其父节点的值;
2022-11-08 09:29:18
1552
原创 牛客-JZ31 栈的压入、弹出序列--java
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。1.准备一个辅助栈,如果辅助栈为空或者栈顶不等于出栈数组当前元素,就持续将入栈数组加入栈中。3.当入栈数组访问完,出栈数组无法依次弹出,就是不匹配的,否则两个序列都访问完就是匹配的。思路:可以先将数组转换为顺序表,这样可以不考虑下标的问题。
2022-11-05 17:48:46
125
原创 力扣150-逆波兰表达式求值--java
思路:栈中只放运算数,不放运算符,遇到运算数进栈,遇到运算符出栈,计算出结果后,将结果入栈,栈中的最后一个数即为所求的结果。可以保证给定的逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。有效的算符包括 +、-、*、/。每个运算对象可以是整数,也可以是另一个逆波兰表达式。注意 两个整数之间的除法只保留整数部分。根据 逆波兰表示法,求表达式的值。
2022-11-04 22:30:19
607
原创 力扣20:有效的括号---java
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。2.栈为空,栈中没有元素,多了右括号 -------- return false。3.所有右括号都匹配完了,栈中还有左括号 -------return false。1.栈顶元素不是( ------- return false。使用栈,当元素为左括号时,入栈,当遇到右括号,就和栈顶元素匹配。3、每个右括号都有一个对应的相同类型的左括号。1、左括号必须用相同类型的右括号闭合。
2022-11-04 21:21:48
175
原创 栈的详解----java(笔记)
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。但是由于Vector是java早期的顺序表,Stack是java早期的栈,性能方面不是很好,所以,现在一般用LinkedList类作为栈的实现类,可以看到LinkedList类继承自Deque接口。从上图中可以看到,Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。需要队列时调用队列的方法,需要栈时,调用栈的方法。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。
2022-11-04 20:34:15
96
原创 142.环形链表II--力扣---java
目录题目描述:1、判断链表是否有环 快慢指针法 2、找环的入口给定一个链表的头节点head,返回链表开始入环的第一个节点。如果链表没有环,则返回null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。 题目链接:142. 环形链表 II - 力扣
2022-10-21 01:29:26
176
原创 链表的回文结构-----java
对于单链表,反转时需要三个指针分别指向前中后三个结点,中间结点的next指向前结点完成中间结点的反转,后指针指向中间结点的原后继,防止链表丢失。由图可知,在比较到第三次的时候,总有一个指针会为空,此时循环应该退出,因此,循环的条件可以设为cur!使用快慢指针,两指针一开始都指向head,那么fast一次2步,slow一次1步,那么fast走到最后的节点,slow刚好指向中间。会反转链表之后,这道题就变得很简单了,剩下的就是比较val的值是否相同。思路1:直接反转整个链表,反转后的链表与反转前的链表相同。
2022-10-20 02:55:23
206
原创 二阶ArrayList(笔记)
首先,外部List是一个顺序表,它是一个数组,只不过数组中存储的元素类型为List,是一个对象,而内部List也是一个顺序表,它也是一个数组,只不过存储的元素类型为String。在「杨辉三角」中,每个数是它左上方和右上方的数的和。一个外部List(线性表),元素类型是内部List。怎么理解List?内部List的元素的类型是String。如下图所示:(和二维数组的思路差不多)生成「杨辉三角」的前 numRows。二、使用------杨辉三角。
2022-10-12 20:04:15
126
原创 实现自定义的顺序表--java
事实上,ArrayList是一个动态类型的顺序表,即:在插入元素的过程中会自动扩容,因此,在我们手动实现add的时候也要实现扩容。8.使用e替换index位置的元素,return原来位置的元素----时间复杂度O(1)5.删除index位置的元素,并返回该元素----时间复杂度O(n)3.对元素尾插,返回值为boolean ----时间复杂度O(n)6.从前到后删除第一个遇到的e----时间复杂度O(n)7.返回index位置的元素----时间复杂度O(1)1、线性表的每个元素都有逻辑上的前后关系。
2022-10-10 00:04:35
140
原创 字符串常量池
上述程序创建方式类似,为什么s1和s2引用的是同一个对象,而s3和s4不是呢?在Java程序中,类似于:1, 2, 3,3.14,“hello”等字面类型的常量经常频繁使用,为了使程序的运行速度更快、更节省内存,Java为8种基本数据类型和String类都提供了常量池。
2022-10-03 19:25:11
527
原创 String类笔记
String是引用数据类型,因此String str只是保存了字符串对象的地址,字符串对象到底是如何保存的呢?所有高级语言,字符串类型,本质上都是字符数组,字符串就是由一个个的字符来组成。
2022-10-03 16:55:02
130
原创 Object类中的常用方法(toString和equals)
因为所有类都是Object类的子类,因此方法参数若需要接收所有的类的对象,可以使用Object类来接收。java.lang.Object类是java中所用类的共同父类,不需要显示extends,Object类是参数的最高统一类型。当将类的对象直接传入println方法进行输出时,默认会调用Object类中的toString方法。b.如果==左右两侧是引用类型变量,比较的是引用变量地址是否相同。a.如果==左右两侧是基本类型变量,比较的是变量中值是否相同。此时输出的就是对象的具体属性。覆写equals方法。
2022-10-02 16:58:22
227
原创 位操作符详解
p_data 是指定的源数据,position是指定位(取值范围1~8) flag表示置0 置1操作,true:置1 false:置0.方法二本质上与方法一是一样的,只是改变了循环条件,不用循环8次,当最后一个1检测完毕后,a变为0,退出循环。实现对一个8 bit 数据(unsigned char 类型)的指定位的置0或者置1操作,并保持其他位不变。| 或——相同位只要有1,操作结果就为1。^ 异或——对应位不相同时,操作结果为1。& 与——相同位都为1,操作结果才位1。...
2022-08-09 17:21:27
502
原创 第一次使用git clone报错为authentication failed for
第一次使用git clone报错为authentication failed for解决方法
2022-04-03 15:23:44
2977
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人