- 博客(94)
- 收藏
- 关注
原创 5. 最长回文子串
当dp[i][j] =dp[i + 1][j - 1],当s[i] == s[j]的时候,很明显,dp[i][i]一定为1,因为一个字符,一定是回文子串。//动态规划过程,要先遍历列,再遍历行。因为dp[row][colunm]依赖于。这题使用dp,dp[i][j]=1代表字符串中以i下标开始,以j下标结尾的字符串是回文子串,//dp[row + 1][colunm - 1],所以要先遍历列,再遍历行。//习惯把String转为char[]//当前的回文子串长度为1。...
2022-08-09 16:42:28 217 1
原创 java中的阻塞队列和copyOnWriteArrayList
put流程分析:不允许加入null元素,c是代表队列的元素数量,count.getAndIncrement()会先返回count的价,然后count = count + 1。当前生产者线程生产完毕后,列队还有空位,由当前生产者唤醒其他的生产者线程。当队列只有一个元素的时候,生产者唤醒消费者线程,使用的是signal而非signalAll,每次都是唤醒一个而不是一群。使用两把锁,锁住的是头和尾,而不是锁住整个队列,这正是高明之处,所有的消费者,用一把锁,所有的生产者,用一把锁。...
2022-08-09 16:03:22 516
原创 Java中线程安全的集合
coucurrentMap每个方法都是原子的,但是几个方法的组合并不是原子的。进入下面的else,说明桶下标冲突了,此时需要对链表头节点加锁,fh >= 0,说明是普通节点,进行普通的插入流程即可,bigcount代表链表长度。ConcurrentHashMap不允许有空的键值,put的过程中,只有发生下标冲突,才会使用sync,而且锁的是桶的头节点。在扩容过程中,处理完毕的链表头节点置为fnode,表明此链表已经处理完毕。TreeBin是红黑树的头结点,TreeNode是红黑树的树节点。...
2022-08-09 15:19:17 636
原创 39. 组合总和-java
这是一道回溯的题目,深度优先搜索,难点是如何去掉重复的组合,对于[2,3,6,7] target = 7,[2,2,3]和[3,2,2]是重复的组合。在选数的时候给予限制,比如说第一个数选了3,第二个数只可以选3之后的数,即[6,7],如此可以限制重复的组合。//下一次的begin穿的是当前层数的i,意味着下一次选数只能从i之后的位置选。//避免出现重复的组合。//满足taget的一种组合数。//选数的下标是begin。//减枝,肯定不满足。...
2022-08-05 11:12:20 203
原创 105. 从前序与中序遍历序列构造二叉树-java
/递归返回条件,当前序数组的长度或者中序数组的长度为0的时候,返回null。//找到中序遍历中根的位置,作为分割点。
2022-08-05 10:22:36 262
原创 279. 完全平方数-java版本
这题可以使用动态规划来解决,首先求出小于等于n的所有平方数,以12为例,平方数是1,4,9。定义coins为完全平方数数组,定义dp[i]组成i需要的最少完全平方数,那么。
2022-08-05 09:25:14 240
原创 lc155-最小栈
使用辅助栈存储栈的数据栈最小值,数据栈入栈出栈的时候,辅助栈要对应入栈出栈。Java的Interger比较,不要使用"=="。
2022-06-23 15:25:08 135
原创 448. 找到所有数组中消失的数字
利用鸽巢原理,第一次遍历。对于每一个nums[i],在nums[nums[i] - 1]上加n用来标识nums[i]的存在,加上n之后,nums[nums[i] - 1]一定>n。第二次遍历,不大于n的话就知道哪个数不在数组中:
2022-06-23 14:57:07 75
原创 用java写点题-lc121. 买卖股票的最佳时机
要点是卖的日子要在买的日子的前面,每一次遍历都要记录当前找到的最小值,然后用当前股票价格减去最小值看看利润是否最大。
2022-06-22 14:25:06 207
原创 用java写点题-lc104. 二叉树的最大深度
直接递归就完事了,最大深度其实和求二叉树深度没啥区别,每次递归都取高度最高的子树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, Tr
2022-06-22 14:14:35 149
原创 用java刷点题-lc101. 对称二叉树
从c++转向java后,用java写题是为了增加手感,毕竟java的集合类使用需要适应。此题可以使用队列进行广度优先搜素:把root入队两遍,然后两个root出队,出队的时候对比root的左(右)孩子和另一个root的右(左)孩子是不是一样的值,是就入队孩子,不是就直接返回false。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * Tree
2022-06-22 13:33:15 236
原创 实现简易rpc框架-(4)使用nacos作注册中心
在上一篇中,服务的地址是写死在代码中的,这很不好,对于客户端,只能去寻找这么一个服务提供者,假设这个提供者宕机了,或者换地址了,那就无法正常调用。nacos是分布式框架里面的一个重要组件,所有的服务端在nacos中注册自己拥有的服务,客户端在进行rpc调用的时候,nacos负责返回一个可用的服务地址供客户端调用。nacos还起到负载均衡的作用,因为在部署的时候一般是分布式部署,假设某服务部署在两台服务器上,在服务调用的时候,nacos可以使用轮询的算法处理请求,不至于让某一台服务器的处理过多的远程调用。为了
2022-06-11 11:44:25 1774
原创 实现简易rp框架(完结)-实现服务注销和负载均衡
在RpcServer关闭的时候,要清除nacos中对应的服务信息。由于不知道服务器什么什么时候关闭,所以需要钩子函数。执行在某些事件之后的函数就叫钩子函数,把注销服务的方法写入系统关闭的钩子函数就可以起到善后的工作。实现nacos的一个工具类:NacosUtil,今后nacos服务注册和服务发现都要借助这个工具类中,所有的服务名都会被存在NacosUtil的成员变量serviceNames中,当RpcServer关闭的时候,遍历这个set,调用 namingService.deregisterInstanc
2022-06-09 16:44:12 137
原创 实现简易rpc框架3-使用netty作为网络框架
在上一小节中,使用原生的block io来进行网络传输。本节使用效率更高的noblock io来代替之,netty是优秀的异步网络框架。netty的网络库思想极为优秀,c++的muduo网络库的源码正是借鉴了netty的网络模型。如下图,一个典型的多reactor模型,每一个线程都是一个事件循环,主线程负责监听文件描述符,当有请求来临的收,把请求分发给其他的子反应堆,子反应堆负责对请求的处理,从socket的接受缓冲区里把数据往用户接受缓冲区里面搬运,直到把socket接受缓冲区里的数据办完为止。然后就是对
2022-06-09 12:52:45 185
原创 快速入门netty
如果说学过网络编程,其实netty入门使用并不难,我本身学过一些netty的使用,但是久不使用,有些忘记,故做此记录以待以后复习。pipeline:流水线,可以视为buffer里的数据会经过好几个加工过程,每个过程使用一个handler去加工,类似于做一道菜。write:把数据往文件描述符的发送缓冲区填充,但是没有马上发送。writeAndFlush:把数据往socket的发送缓冲区填充,并且清空缓冲区。 connect方法是异步非阻塞的,即主线程发起调用,真正执行connect的是nio线
2022-06-08 12:22:38 144
原创 实现简易的rpc框架-2注册多服务
在上一篇博客中,完成了一个极简的demo,其缺点也是显而易见,服务端只能注册一个服务,在实际工作中,这肯定是无法接受的,所以,本篇博文的目的在于实现多服务注册,并且,注册中心和服务端不应该集成在一起,这会使得系统耦合度太高。服务注册表注册表提供了两个功能:1服务注册到注册表中。2根据服务名获取服务实体实现用的是map和set,用map存储服务名和服务对象的对应关系,用set保存当前哪些对象被注册。获取服务对象直接用map查询。注册中心和服务端分开为了降低耦合度,在创建一个RpcServer的时候,传入一个服
2022-06-07 16:59:16 209
原创 Bean的Scope
import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;import org.springframework.context.support.GenericApplicationContext;import org.springframework.mock.web.*;import org.springframework.web.context.request.RequestContextHold.
2022-05-29 11:38:30 186
原创 常见的后处理器
import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator;import org.springframework.beans.factory.annotation.Autowired;import org.spring
2022-05-28 22:05:01 268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人