- 博客(16)
- 收藏
- 关注
原创 NIO中Epoll Bug产生的原因以及Netty中是如何解决的
JDK NIO中Epoll空轮询Bug产生的原因以及Netty中是如何解决的产生原因正常情况下,selector.select()操作是阻塞的,只有被监听的fd有读写操作时,才被唤醒。但是,在这个bug中,没有任何fd有读写请求,但是select()操作依旧被唤醒很显然,这种情况下,selectedKeys()返回的是个空数组,然后按照逻辑执行到while(true)处,循环执行,导致死循环。Netty的解决方法对Selector的select操作周期进行统计,每完成一次空的select操作进行
2020-12-26 16:59:49
1260
原创 NIO与零拷贝
NIO与零拷贝什么是零拷贝?零拷贝主要的任务就是避免CPU将数据从一块存储拷贝到另外一块存储,主要就是利用各种零拷贝技术,避免让CPU做大量的数据拷贝任务,减少不必要的拷贝,或者让别的组件来做这一类简单的数据传输任务,让CPU解脱出来专注于别的任务。这样就可以让系统资源的利用更加有效。(一句话,减少甚至避免CPU Copy操作)。传统的IO拷贝技术分析:传统的IO拷贝技术需要经过四次拷贝(CPU copy 和 DMA copy),四次的状态转换(用户态和内核态),效率较为低下。使用mmap优化后
2020-12-25 20:03:06
241
原创 如何使用NIO非阻塞线程模型实现一个群聊系统?
如何使用NIO非阻塞线程模型实现一个群聊系统?一、实现的功能?服务端:可以监测用户的上线、离线,并且实现消息的转发功能客户端:通过channel可以无阻塞的发送消息给其他的用户,同时可以接收其他用户发送的消息(由服务器转发得到)二、具体代码服务端代码逻辑服务器启动并监听6667端口服务端接收客户端的消息,并实现转发(处理上线和离线)客户端代码逻辑连接服务器发送消息接收服务器的消息...
2020-12-24 19:35:31
197
原创 Springboot项目使用外部tomcat部署时添加工程名遇到的路径无法访问问题
Springboot项目使用外部tomcat部署时添加工程名遇到的路径无法访问问题问题描述很多人在做Springboot项目时,都是采用Springboot内置的tomcat容器,所以测试时不需要添加工程名就可直接访问请求路径,但是一旦到了真正部署项目的到外部tomcat的时候,就会出现路径无法访问,404等问题,很多人的第一反映就是直接在源代码访问路径里面直接修改,添加项目工程名,但是这样很麻烦,而且不一定有效。$.ajax({ type : 'post', url : 'htt
2020-07-06 12:02:18
1381
1
原创 Sping框架中Bean的生命周期
Spring框架中Bean的生命周期Bean生命周期图解Spring框架中Bean的生命周期是一个很重要的知识点,更是一个面试过程中的高频问点。详解1、实例化一个Bean,也就是我们常说的new.2、按照Spring上下文对实例化的Bean进行属性配置--也就是IOC注入;3、如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String)方法,此处传递的就是Spring配置文件中Bean的id值。4、如果这个Bean已经实现了BeanFacto
2020-07-05 16:26:27
144
原创 LeetCode 42. 接雨水
LeetCode 42. 接雨水题目描述:给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。示例:输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/tr
2020-06-19 17:58:31
88
原创 LeetCode 128. 最长连续序列
LeetCode 128. 最长连续序列题目描述:给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。示例:输入: [100, 4, 200, 1, 3, 2]输出: 4解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-consecutive-sequence著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出
2020-06-06 14:51:49
126
原创 LeetCode 84. 柱状图中最大的矩形
LeetCode 84. 柱状图中最大的矩形题目描述:给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3]输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/probl
2020-05-30 11:51:40
138
原创 LeetCode 146. LRU缓存机制
LeetCode 146. LRU缓存机制题目描述:运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥已经存在,则变更其数据值;如果密钥不存在,则插入该组「密钥/数据值」。当缓存容量达到上限时,它应该在写入新数据之前删除最久未使用的数据值,从而为
2020-05-25 21:49:56
136
原创 LeetCode76.最小覆盖子串
LeetCode 76.最小覆盖子串题目描述:给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = "ADOBECODEBANC", T = "ABC"输出: "BANC"说明:如果 S 中不存这样的子串,则返回空字符串 ""。如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substrin
2020-05-23 17:09:49
128
原创 LeetCode 560.和为k的子数组
LeetCode 560.和为k的子数组题目描述:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob
2020-05-15 11:17:51
315
原创 LeetCode 199.二叉树的右视图
LeetCode 199.二叉树的右视图题目描述:给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1, 2 , 3, null , 5 , null ,4]输出: [1, 3, 4]解释: 1 <--- / \2 3 <...
2020-04-22 15:58:35
269
原创 LeetCode 200.岛屿的数量
LeetCode 200.岛屿的数量题目链接 https://leetcode-cn.com/problems/number-of-islands/题目描述:给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。示例 1:输入:...
2020-04-20 18:47:11
168
原创 leetcode:LCP 07传递信息
leetcode:LCP 07传递信息题目链接 https://leetcode-cn.com/problems/chuan-di-xin-xi/题目描述:小朋友 A 在和 ta 的小伙伴们玩传信息游戏,游戏规则如下:有 n 名玩家,所有玩家编号分别为 0 ~ n-1,其中小朋友 A 的编号为 0, 每个玩家都有固定的若干个可传信息的其他玩家(也可能没有)。 传信息的关系是单向的(比如 ...
2020-04-20 09:38:26
296
原创 leetcode.11.盛最多水的容器
leetcode11.盛最多水的容器题目链接https://leetcode-cn.com/problems/container-with-most-water/题目描述:给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的...
2020-04-18 13:29:03
145
原创 MySQL&JDBC(Java)基础知识
MySQL&JDBC(Java)MySQL数据库1.1、数据库的概述:1.2、SQL语句什么是SQL语句SQL的分类1.3、对数据库的操作创建一个数据库删除一个数据库使用数据库1.4、对数据库表的操作创建表新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创...
2019-04-22 08:49:51
984
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人