
java
文章平均质量分 83
lcxc
好的
展开
-
求无序集合的并集、交集、子集(大厂面试题)
前两天面某大厂,有这么一条考数据结构的题,属实把我难倒了,要考虑的点实在太多了。题目基本如下:有n个集合,每个集合里面存放无规律数字,每个集合可以认为是从一个文件里面读出来的数字,自己考虑用什么数据结构来存。(一个集合里面是不允许有重复元素的) 求两个集合的并集、交集、子集。(子集即两个集合的交集的一部分,例如sub(a&b,0)就是求a、b两个集合的交集的子集,子集大小为10) 求多个集合的并集、交集、子集。 求多个集合进行并集、交集混合运算后的子集。(例如,sub((a|b|c|.原创 2021-11-06 18:51:33 · 1846 阅读 · 3 评论 -
HTTP请求头和响应头字段
首先请求报文包括请求行、请求头、请求体请求行:请求方法 路径 HTTP版本不要混淆请求头Content-Type : 请求的与响应体对应的MIME信息,就是我从服务器里面想获取什么类型的信息。 如果想获取json :Content-Type:application/json 如果想获取html : Content-Type : text/html 如果想获取jpg : Content-Type:image/jpgCookie : Cookie原创 2021-03-11 09:33:55 · 320 阅读 · 0 评论 -
ServerSocket源码调试分析——java学习总结(12)
从书上找下来的一个demo,准备根据这个demo来断点调试学习Socket和ServerSocket源码。1 样例首先看一下HTTPServer里面的service()如下2 ServerSocket的构造方法先看看ServerSocket的构造方法继续跳转到另一个构造方法在执行这个方法体之前,调试界面又跳到成员变量那里去,觉得很奇怪。》》》主调试外》》》哎呀,之前的JVM白学了,复习了一下对象实例化才发现,原来在构造方法执行前,需要先初始化成员变量。这里粘一下之前的笔记,看不懂原创 2020-09-28 22:26:12 · 507 阅读 · 0 评论 -
MethodHandles的机理——java学习总结(1)
MethodHandles在java的作用就相当于函数指针在C++中的作用,允许java动态引用变量、方法,并调用它们。1.与C++函数指针的相似参照一下C++代码void sort(int list[],const int size,int (*compare)(int,int));C++中可以传递一个函数指针(入口)作为参数 而Java中却不行,只能实现一个带有compare()方...原创 2020-04-01 18:02:03 · 915 阅读 · 0 评论 -
String的深入理解——java学习总结(2)
1.String是不可变的字符串,它的底层是一个用final修饰的字符数组;[1]2.String 的两种创建方式(1)创建方式一:String a = "hello";String a = "hello";String b = "hello";System.out.println(a==b);输出为true,原因如下:String维护了一个字符串的常量池[2],当用String...原创 2020-04-13 12:23:09 · 377 阅读 · 0 评论 -
Mybatis的@Param注解———java学习总结(3)
@Param注解里的value值是用于标识@Insert或@Select注解里的SQL语句的预定义变量。1、第一种形式:只有一个预定义变量,接口方法参数只有一个@Select("select * from role where id = #{roleId} ")Role findById(@Param("roleId") String roleId);以上的@Param可加可不加,即以下也可达到同样效果。@Select("select * from role where id = #{roleId原创 2020-05-10 13:28:52 · 430 阅读 · 0 评论 -
Lambda表达式(Java8新特性)——java学习总结(4)
该文从行为参数化和匿名类介绍Lambda表达式为什么产生,再通过图解等方式详细解析Lambda表达式...原创 2020-05-23 12:15:09 · 402 阅读 · 0 评论 -
flatMap()的深入理解——java学习总结(5)
1、初解flapMap()是流的中间操作,是用于扁平化Stream的操作。JDK API 给出的解析是这样的Returns a stream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.翻译过来意思原创 2020-05-23 18:32:50 · 1200 阅读 · 0 评论 -
(图解)Object的wait(),notify(),notifyAll()——java学习总结(6)
一、wait()1、无参情况下:当前线程A释放对象锁,然后进入无限等待状态,直到被其他线程X 里object的notify()或者notifyAll()唤醒。有参情况:wait(long timeoutMillis),参数为等待的最长时间。当前线程A 释放对象锁,进入等待状态,当计时结束或其他线程X 里object的notify()或者notifyAll()唤醒。2、由于执行wait()时必须释放对象锁,所以wait()必须处于synchronized(obj)下。二、notify()表示持有原创 2020-06-09 16:19:28 · 192 阅读 · 0 评论 -
(图解)Object的clone()与深浅拷贝——java学习总结(7)
图①:图②:图③:图④:原创 2020-06-10 00:50:53 · 158 阅读 · 0 评论 -
DualPivotQuicksort源码解读(附图解)——java学习总结(8)
阅读指南源码在文章最后一部分,加上了本人的理解注释,建议打开两个页面同时对照源码注释和博文(图解)一起阅读零:在看ArrayList的源码时,对它的sort()方法进行了深入研究,最后找到它的最终实现类——DualPivotQuicksort,这类是私有的,防止实例化的,所以在api上找不到它。一、DualPivotQuicksortDualPivotQuickSort汇集了多种排序算法,仅仅称之为DualPivotQuickSort(双轴快速排序)并不合适。这个类包含以下几种排序算法:单轴原创 2020-06-14 14:10:57 · 3739 阅读 · 1 评论 -
Integer的缓存问题——java学习总结(9)
一、先考虑一下这个demo的输出是什么public class Main { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; Integer i3 = 200; Integer i4 = 200; System.out.println(i1==i2); System.out.println(i3==i4); }}运行结果:tr原创 2020-06-17 21:15:31 · 476 阅读 · 0 评论 -
HashMap源码分析putTreeVal(红黑树部分)——java学习总结(11)
这里写目录标题①:TreeNode②:putTreeVal()③:comparableClassFor()④:compareComparables()⑤:find()⑥:tieBreakOrder()⑦:balanceInsertion()⑧:treeify()⑨:untreeify①:TreeNodeTreeNode虽然是红黑树结点,但它也有链表结构(继承了LinkeHashMap.Entry,后者继承了HashMap.Node)②:putTreeVal()此博文只介绍putTreeVal(),原创 2020-06-21 04:20:14 · 674 阅读 · 1 评论 -
HashMap源码解读(链表部分和resize)——java学习总结(10)
jdk8以后的resize()做了一个更新,在扩容后不是所有键值对再次重新哈希,重新计算所有键值对位置,而是根据一个设定(也就是每次resize()只扩容一倍,也即capaticy必须是2的倍数),每次扩容后根据hash值的不同,一部分留在原来位置j,另一部分放在扩容后的部分(位置j+oldCap)其中oldCap表示未扩容的容量此处不懂没关系,具体实现请参考下面的源码加深理解...原创 2020-06-19 00:31:22 · 271 阅读 · 0 评论