- 博客(28)
- 收藏
- 关注
原创 浅谈对Netty的认识
记录Netty的一些面试问题①谈谈对Netty的认识?②Netty有什么优点?③Netty的执行原理①谈谈对Netty的认识?Netty是建立在NIO的基础上,提供了更高层次抽象的网络通讯框架,它类似于Spring框架一样可以方便开发人员在两台不同的系统上传输信息。Netty通过配置可以实现单线程Reactor,多线程Reactor以及主从Reactor的三种线程模型。②Netty有什么优点?可以有灵活的配置,如配置Decoder解码方式来解决粘包问题。Netty使用transferTo方法实现
2022-05-22 22:14:38
626
原创 http1.0,http1.1,http2.0以及http3.0的区别
http各版本的区别浅诉HTTP各版本之间的区别HTTP1.0HTTP1.1HTTP2.0HTTP3.0参考博文:关于队头阻塞(Head-of-Line blocking),看这一篇就足够了快速掌握HTTP 1.0 1.1 2.0 3.0 的特点及其区别浅诉HTTP各版本之间的区别HTTP1.0HTTP1.0的版本是一个无状态,无连接的应用层协议。无状态,无连接指的是浏览器每次向服务器发送请求都需要先建立一个短暂的TCP请求,获得响应之后就释放请求。存在的问题:①无法复用连接,每次向浏览器发请
2022-04-25 17:37:45
1110
原创 记刷选择题时遇到的两个问题:字符串相加问题以及父子类初始化的问题
问题字符串相加问题父子类初始化问题字符串相加问题题目:public class test { public static void main(String[] args) { String s = "ab"; //这个字符串常量之间的相加,编译器会对其进行优化,实际上s1 = "ab" , 指向的是常量池中的地址 String s1 = "a"+"b"; String a = "a"; String b = "b"
2022-04-22 16:20:37
390
1
原创 基于ReentrantLock实现的AQS原理
ReentrantLockAQS是什么?ReentrantLock是什么?调用ReentrantLock.lock()方法会发生什么?调用ReentrantLock.unlock()方法会发生什么?补充park和unpark机制Synchronized与ReentrantLock的区别AQS是什么?AQS:AbstractQueuedSynchronizer,抽象队列同步器,它主要由两个部分组成,一个由volatile修饰的state变量(代表共享的资源)和一个双向队列(用头节点和尾结点来表示)。AQ
2022-04-12 17:04:58
452
原创 Java8新特性
Java8新特性前言Java8新特性Lambda表达式函数式接口方法引用与构造器引用Stream流Optional类示例代码:前言最近在做笔试与看一些框架的底层源码的时候,会考察和使用到Java8的某些新特性,因此感觉系统地学习下Java8的新特性是很有必要的,于是有了这篇文章。Java8新特性Lambda表达式Lambda表达式是什么?Lambda表达式其实本质是一个匿名内部类,当某个接口只定义了唯一一个抽象方法(功能单一)时,我们就可以使用(参数) - > {抽象方法的实现} 来作为这
2022-04-08 11:27:24
84
原创 Spring问题——大白话总结(IOC、AOP、事务传播、Bean生命周期、循环依赖、自动装配原理等)
Spring框架问题总结Spring是什么?Spring框架中Bean生成带来的一系列问题选择构造函数?如何注入依赖的属性?单例bean和单例模式有什么联系?普通对象和bean对象的区别Spring AOP在这个过程的工作原理?Spring事务的一些问题事务的底层原理同类方法的调用为什么会事务失效?@Configuration注解的作用Spring的三级缓存解决循环依赖问题循环依赖问题如何解决SpringMVCDispatcherServlet原理Spring的事务传播机制什么叫事务传播?Spring是什
2022-03-31 16:27:15
984
原创 Java多线程手写代码——奇偶交替输出,123123循环输出、A1B2C3交替输出
多线程环境为什么wait()和notify()方法一定要搭配synchronized关键字才可以使用wait()方法notify()方法代码奇偶交替输出123123循环输出A1B2C3交替输出为什么wait()和notify()方法一定要搭配synchronized关键字才可以使用因为如果不加synchronized关键字,会导致程序代码在多线程下,代码执行顺序混乱的问题。如在A1B2C3交替输出的场景下: 如果不加synchronized关键字,两个线程同时执行,假如都执行到LOCK.wait()方
2022-03-29 20:52:44
893
1
原创 2022/3/29 leetcode每日一题——滑动窗口解法
滑动窗口解法最大连续1的个数 II最大连续1的个数 Ⅲ每日一题——考试的最大困扰度滑动窗口模板我们本次解析滑动窗口解法是从3道leetcode题,由浅入深慢慢去理解,最后得出滑动窗口这一类题目的解题模板。滑动窗口解法,又称为“虫取法”。因为它的过程就很像虫的蠕动的过程。左边界不动,右边界不断增大,就像虫的尾部不动,头部不断伸长。右边界不动,左边界不断增大,就像虫的头部不动,尾部慢慢跟上来一样。滑动窗口的中心思想:定义左右两个指针,左右指针之间的空间称为区间。右指针不断增大,当增大到区间内的值不满足题目要
2022-03-29 13:02:53
911
1
原创 一文解决JVM常量池问题
常量池问题常量池是什么常量池的位置intern方法介绍字符串常量池的例子Java基本类型封装类常量池常量池是什么说到常量池,我们一般在JVM中把常量池分为运行时常量池和 字符串常量池。运行时常量池:用于存放编译时期生成的各种字面量和符号引用。字面量: 类似于我们平常说的常量,如String s = "“bb” , 字符串"bb"就是字面量。 还有就是final修饰的变量。符号引用:类及其实现的接口的全限定名(如String类的全限定名就是java.lang.String)和变量的名称和类型,方法的
2022-03-26 17:19:30
545
原创 2022/3/25 阿里笔试ACM模式下Scanner的坑
阿里笔试笔试题目代码然后Scanner的坑笔试题目题目的场景大概是:小明想要请你帮他实现一个功能:当他输入一个String类型用户名时。用户名有一定要求:①用户名长度必须在6至12之间,否则返回"illegal length"②用户名里面不能出现非英文字母,否则返回"illegal format"③如果已经注册过,就返回"Has been registed",如果都没上述情况则返回"Success"。输入格式:第一行代表n个用户名,下面每一行都是用户名很快啊,一下写出答案代码import jav
2022-03-25 16:19:07
762
原创 2022/3/24华为机试题——跳跃游戏
华为机试题目跳跃游戏Ⅱ解析回归机试题目题目1、魔力台阶 100分科科最近在修炼魔法,一日他来到魔法城堡,城堡里有一个长长的台阶,而台阶的最终点便是魔法奥秘。这是一个魔力台阶,每个台阶都有一个魔力值,魔力值代表下一步科科最大可以跨越的台阶数。科科当前处在第1级台阶上,但是科科的体力有限,最多只能跨越K次。科科现在拜托你帮他计算下他能否拿到魔法奥秘。如果能够拿到返回最少跨越的次数,拿不到则返回-1。解答要求时间限制:C/C++ 1000ms,其他语言:2000ms内存限制:C/C++ 256MB
2022-03-24 13:48:34
7098
原创 用Concurrent包下的BlockingQueue阻塞队列实现生产者消费者模型
生产者与消费者模型Concurrent包阻塞队列简单实现阻塞队列以及put()方法和take()方法生产者类消费者类测试结果Concurrent包java.util.concurrent包下主要包括5个部分(《Java并发编程的艺术》这书对这5个部分都有介绍,感兴趣的朋友可以去阅读):①Collection集合类:包括并不限于ConcurrentHashMap,BlockingQueue等等。②lock的实现类:ReentrantLock 类,读写锁,condition等。③util类:如Coun
2022-03-20 17:04:27
508
1
原创 关于ThreadLocal,ThreadLocalMap,Thread的关系
ThreadLocal、ThreadLocalMap、Thread什么是ThreadLocal?ThreadLocal原理get方法set方法ThreadLocal、Thread、ThreadLocalMap三者的关系Hash冲突问题内存泄漏问题为什么会发送内存泄漏 ?如何解决内存泄漏问题?什么是ThreadLocal?官方解释:ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰。白话:ThreadLocal就是给每个线程
2022-03-19 01:40:37
1031
原创 2022/3/17leetcode每日一题——词典中最长的单词(字典树解法)
leetcode第720题——词典中最长单词leetcode题目:常规解法:排序+HashSet排序+字典树(前缀树)解法什么是字典树字典树的应用场景回归题目leetcode题目:给你一个字符串数组words,请你找出words中最长的一个单词且该单词要是由数组中其他单词添加一个字母而来的。若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。例子:输入:words = [“w”,“wo”,“wor”,“worl”, “world”]输出:“world”解释: 单词"wo
2022-03-17 16:44:17
855
原创 Redis——总结(大白话)
Redis——总结Redis 与 Memcached的区别Redis的5种数据类型(重要!!!)Redis事务Redis持久化(重要!!!)Redis主从复制Redis集群模式Redis的应用问题缓存穿透缓存击穿缓存雪崩缓存一致性问题(重要!!!)Redis分布式锁的实现Redis 与 Memcached的区别Memcached从名字上看就能看出其实它也是一个高性能的内存缓存,那么它与Redis的区别在哪呢?①Redis支持多数据类型,如String,List,Hash等,Memcached只支持St
2022-03-14 15:48:45
1862
原创 IO多路复用原理(大白话,通俗易懂)
IO多路复用原理BIONIOIO多路复用之select模型和poll模型IO多路复用之epoll模型Reactor模型IO多路复用技术:讲IO多路复用技术之前,我们得先了解NIO和BIO。BIOBIO (Block IO):同步阻塞IO。一般我们传统的JDK内置的Socket编程就是阻塞IO。其底层流程是:①创建socket接口,号为x,通过bind函数将接口号与端口号进行绑定,然后进行listn监听事件或者是read读事件,且会一直阻塞在该命令,直到有客户端连接或者发送数据。缺点:如果是在单线程
2022-03-12 23:39:19
34345
6
原创 由leetcode215题引发的快排思考
leetcode题目leetcode215题 : 数组中的第K个最大元素题目:给定整数数组 nums 和整数 k,请返回数组中第 k 大的元素。解析:可以调API,但调API方法就会导致有多余的操作。我们这里可以简化api方法,并不需要把整个数组完全排序后再返回对应位置的值。正确的代码如下: public int findKthLargest(int[] nums, int k) { //快排——每次确定一个元素的位置 k = nums.length-k;
2022-03-10 15:30:13
395
1
原创 JVM内存结构与GC调优
Java虚拟机JVM内存模型GC机制什么时候进行GC?可达性分析算法引用GC算法GC垃圾收集器查看JVM使用情况与GC调优JVM内存模型目前使用最广泛的是hotspot虚拟机。Java7跟Java8的内存模型的区别在于Java7的时候方法区是存有一块空间,而Java8是把这块空间取消掉,改成整个运行时数据区都为元空间,没有属于方法区的特定一块空间,方法区之间使用物理内存。这样就不会因为方法区不够空间而爆OOM,除非物理内存没了。由于Java8使用最为广泛,下面对Java8中各个区域进行分析:虚拟机
2022-03-09 22:46:01
398
原创 《Java并发编程的艺术》——Volatile关键字与Synchronized关键字
Java并发编程的艺术Volatile关键字的原理Volatile关键字的内存语义单例模式下的双重锁为什么要volatile?volatile关键字不适合用于i++操作的原因:Synchronized关键字锁升级的过程Volatile关键字的原理提到volatile关键字, 就不得不提两个关键词:JMM内存模型:JMM定义了线程和主内存之间的抽象关系:共享变量存储在主内存(Main Memory)中,而每个线程都有一个私有的内部缓存(Local Memory),内部缓存保存了被该线程使用到的变量的主内
2022-03-08 16:56:24
303
原创 二分法专题--模板巧解
二分法二分法模板介绍:leetcode例题解析:leetcode-35-搜索插入的位置leetcode-34-在排序数组中查找元素的第一个和最后一个位置leetcode-33-搜索旋转排序数组leetcode-74-搜索二维矩阵二分法模板介绍:该模板来自acwing社区网站的开发者——yxc。感谢y总大佬手把手地教学,大家有空可以夺取社区(www.acwing.com)逛逛。如果还是看了文章后还是看不懂的话,可以去b站搜索大雪菜观看相关视频。好,正片开始!二分法模板总共分五步走:1.确定二分的边界
2022-03-07 15:33:36
962
原创 leetcode原题--最接近的三数之和
leetcode最接近的三数之和三数之和:https://leetcode-cn.com/problems/3sum/最接近的三数之和:https://leetcode-cn.com/problems/3sum-closest/最接近的三数之和题目:给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在恰好一个解。解析:排序+双指针:先对数组进行排序,再利用三指针找出结果。
2022-03-06 21:38:19
159
原创 大数之和与大数之积
大数之和与大数之积大数之和大数之积 (进阶版)大数之和题目:以字符串形式读入俩个数字,编写一个函数计算它们的和,再以字符串形式返回。不可以使用有关BigInteger之类的包。解析:可以借助StringBuilder从后往前对逐个位置处理。用temp变量保留是否有进位。由于StringBuilder是采用追加的形式进行字符的添加,所以最后要进行反转处理。代码如下:public String solve (String s, String t) { // write code her
2022-03-06 21:01:54
371
原创 并查集算法(内含Kruscal算法的Java ACM模式实现代码)
并查集算法:1、用集合中的某个元素来代表这个集合,则该元素称为此集合的代表元;2 、一个集合内的所有元素组织成以代表元为根的树形结构;3 、对于每一个元素 x,pre[x] 存放 x 在树形结构中的父亲节点(如果 x 是根节点,则令pre[x] = x);4 、对于查找操作,假设需要确定 x 所在的的集合,也就是确定集合的代表元。可以沿着pre[x]不断在树形结构中向上移动,直到到达根节点。因此,基于这样的特性,并查集的主要用途有以下两点:1、维护无向图的连通性(判断两个点是否在同一连通块内,或
2022-03-06 20:46:53
496
原创 CycleGan总结及简易复现
Involution 笔记:提出的原因: 传统卷积具有 : ①空间不变性:卷积核共享。能有效地节省模型参数,且能维护平移的等变性。由于不能引入过多的参数,所以采用比较小的卷积核,但是小的卷积核(如3*3)不能获得广的感受野 (因此involution更容易检测出大物体) ② 通道特异性:能在不同的通道中包含不同的语义信息,有可能存在冗余 原本卷积核需要的参数数量 = C0(输入通道)×Ci(输出通道)×K×K所以传统卷积比较难去得到长距离的感知,所以提出involution。
2021-06-15 00:10:34
2440
1
原创 Involution 笔记:
Involution 个人理解 传统卷积具有 : ①空间不变性:卷积核共享。能有效地节省模型参数,且能维护平移的等变性。由于不能引入过多的参数,所以采用比较小的卷积核,但是小的卷积核(如3*3)不能获得广的感受野 (因此involution更容易检测出大物体) ② 通道特异性:能在不同的通道中包含不同的语义信息,在许多成功的深度神经网络上表现出比较多的冗余性 原本卷积核需要的参数数量 = C0(输入通道)×Ci(输出通道)×K×K所以传统卷积比较难去得到长距离的感知,所以提出invo
2021-06-03 18:02:59
1188
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人