Entry

Java基础-集合

喜你入骨 提交于 2020-10-01 05:45:04
集合 集合的概念 集合是对象的容器,定义了对多个对象进行操作的常用方法,可实现数组的功能 集合和数组的区别: 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 Collection体系集合 Collection父接口方法 Iterator<E>iterator() 返回一个用于访问集合中各个元素的迭代器 int size() 返回当前存储在集合中的元素个数 boolean isEmpty() 如果集合中没有元素,返回true boolean contains(Object obj) 如果集合中包含了一个与obj相等的对象,返回true boolean containsAll(Collection<?> other) 如果这个集合包含other集合中的所以元素,返回true boolean add(E element) 将一个元素添加到集合中,如果由于这个调用改变了集合,返回true boolean addAll(Collection<? extends E> other) 将other集合中所以元素添加到这个集合.如果由于这个调用改变了集合,返回true boolean remove(Object obj) 从这个集合中删除等于obj的对象.如果有匹配的对象被删除,返回true boolean removeAll(Collectin<?>

美团Java后端面试题,巧妙的回答ThreadLocal原理!

吃可爱长大的小学妹 提交于 2020-09-30 13:48:14
想要去好点的公司,想要去前景好的公司都对技术要求挺高的,面试时技术问也会相应的难些,就拿美团来说,它好像比较喜欢线程安全机制问题,之前就有小伙伴被问倒了!所以今天就详细讲一讲ThreadLocal原理。 ThreadLocal ThreadLocal是线程的内部存储类,可以在指定线程内存储数据。只有指定线程可以得到存储数据。 /** * This class provides thread-local variables. These variables differ from * their normal counterparts in that each thread that accesses one (via its * {@code get} or {@code set} method) has its own, independently initialized * copy of the variable. {@code ThreadLocal} instances are typically private * static fields in classes that wish to associate state with a thread (e.g., * a user ID or Transaction ID). */

零成本实现接口自动化测试 – Java+TestNG 测试Restful service

核能气质少年 提交于 2020-09-30 07:37:29
接口自动化测试 – Java+TestNG 测试 Restful Web Service 关键词 :基于Rest的Web服务,接口自动化测试,数据驱动测试,测试Restful Web Service, 数据分离,Java+Maven+TestNG 本文主要介绍如何用Java针对Restful web service 做接口自动化测试(数据驱动),相比UI自动化,接口自动化稳定性可靠性高,实施难易程度低,做自动化性价比高。所用到的工具或类库有 TestNG, Apache POI, Jayway rest-assured,Skyscreamer - JSONassert 简介: 思想是数据驱动测试,用Excel来管理数据,‘Input’ Sheet中存放输入数据,读取数据后拼成request 调用service, 拿到response后写入 ‘Output’ Sheet 即实际结果, ‘Baseline’为基线(期望结果)用来和实际结果对比的,‘Comparison’ Sheet里存放的是对比结果不一致的记录,‘Result’ Sheet 是一个简单的结果报告。 Maven工程目录结构: 详细介绍 核心就一个测试类HTTPReqGenTest.java 由四部分组成 @BeforeTest 读取Excel (WorkBook) 的 ‘Input’ 和 ‘Baseline’ sheet

恕我直言,你真的了解HashMap吗?

时间秒杀一切 提交于 2020-09-30 02:43:33
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 一、什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n) 线性链表:对于链表的新增,删除等操作(在找到指定操作位置后),仅需处理结点间的引用即可,时间复杂度为O(1),而查找操作需要遍历链表逐一进行比对,复杂度为O(n) 二叉树:对一棵相对平衡的有序二叉树,对其进行插入,查找,删除等操作,平均复杂度均为O(logn)。 哈希表:相比上述几种数据结构,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O

文件系统:隐匿在 Linux 背后的机制

回眸只為那壹抹淺笑 提交于 2020-09-30 01:00:47
本文转载自微信公众号「 Java建设者」,可以通过以下二维码关注。转载本文请联系 Java建设者公众号。 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中有一些来源于 MULTICS,现在已经被 Windows 等其他操作系统使用。Linux 的设计理念就是 小的就是好的(Small is Beautiful) 。虽然 Linux 只是使用了最简单的机制和少量的系统调用,但是 Linux 却提供了强大而优雅的文件系统。 Linux 文件系统基本概念 Linux 在最初的设计是 MINIX1 文件系统,它只支持 14 字节的文件名,它的最大文件只支持到 64 MB。在 MINIX 1 之后的文件系统是 ext 文件系统。ext 系统相较于 MINIX 1 来说,在支持字节大小和文件大小上均有很大提升,但是 ext 的速度仍没有 MINIX 1 快,于是,ext 2 被开发出来,它能够支持长文件名和大文件,而且具有比 MINIX 1 更好的性能。这使他成为 Linux 的主要文件系统。只不过 Linux 会使用 VFS 曾支持多种文件系统。在 Linux 链接时,用户可以动态的将不同的文件系统挂载倒 VFS 上。 Linux

文件系统:隐匿在 Linux 背后的机制

人走茶凉 提交于 2020-09-29 05:12:24
本文转载自微信公众号「 Java建设者」,可以通过以下二维码关注。转载本文请联系 Java建设者公众号。 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)。下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想。这些思想中有一些来源于 MULTICS,现在已经被 Windows 等其他操作系统使用。Linux 的设计理念就是 小的就是好的(Small is Beautiful) 。虽然 Linux 只是使用了最简单的机制和少量的系统调用,但是 Linux 却提供了强大而优雅的文件系统。 Linux 文件系统基本概念 Linux 在最初的设计是 MINIX1 文件系统,它只支持 14 字节的文件名,它的最大文件只支持到 64 MB。在 MINIX 1 之后的文件系统是 ext 文件系统。ext 系统相较于 MINIX 1 来说,在支持字节大小和文件大小上均有很大提升,但是 ext 的速度仍没有 MINIX 1 快,于是,ext 2 被开发出来,它能够支持长文件名和大文件,而且具有比 MINIX 1 更好的性能。这使他成为 Linux 的主要文件系统。只不过 Linux 会使用 VFS 曾支持多种文件系统。在 Linux 链接时,用户可以动态的将不同的文件系统挂载倒 VFS 上。 Linux

我向面试官讲解了hashmap底层原理,他对我竖起了大拇指

狂风中的少年 提交于 2020-09-28 04:31:08
前言: 正值金九银十的黄金招聘期,大家都准备好了吗?HashMap是程序员面试必问的一个知识点,其内部的基本实现原理是每一位面试者都应该掌握的,只有真正地掌握了 HashMap的内部实现原理,面对面试官的拷问,才不会手忙脚乱,只有经历面试官的狂轰滥炸才能够凝练自己的知识。本篇文章结合丰富的图文形式,将帮助大家理解JDK7 版本的 HashMap基础及其实现原理。 另外本人整理收藏了20年多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,想要资料的话请点 1065653031 暗号CSDN。 一、 HashMap介绍 HashMap简介: HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。 HashMap 继承于AbstractMap,实现了Map、Cloneable、java.io.Serializable接口。 HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。容量 是哈希表中桶的数量,初始容量 只是哈希表在创建时的容量。加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash 操作

CCNA实验:配置CDP协议

久未见 提交于 2020-09-27 18:02:05
第一步:R1上的预配置 R1(config)#int s1/2 R1(config-if)#ip add 10.1.1.1 255.255.255.0 R1(config-if)#no sh R1(config-if)# 第二步:R2上的预配置 R2(config)# R2(config)#int s2/1 R2(config-if)#ip add 10.1.1.2 255.255.255.0 R2(config-if)#no sh R2(config-if)# 实验过程: 第一步:在R1上使用sh cdp nei查看R1周围的思科设备 R1#sh cdp nei R1#sh cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater Device ID Local Intrfce Holdtme Capability Platform Port ID R2 Ser 1/2 163 R 3640 Ser 2/1 //现在可以看到R2中,以及R1连接R2的接口 第二步:为了进一步查看cisco设备的详细信息,可以使用如下方式: R1# R1#sh cdp nei detail

Redis-底层数据结构详解

对着背影说爱祢 提交于 2020-09-27 04:41:24
一、前言 前面介绍过Redis的五大基础数据类型(String、Hash、List、Set、ZSet)由六种底层数据结构(简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表)实现,本章主要分析这六种底层数据结构。 PS:Redis有八种编码,但底层数据机构是六种。 二、SDS(simple dynamic string)简单动态字符串 结构定义 struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[]; } SDS保存的字符串结构图示: 优势: 常数复杂度获取字符串长度 由于 len 属性的存在,我们获取 SDS 字符串的长度只需要读取 len 属性,时间复杂度为 O(1)。而对于 C 语言,获取字符串的长度通常是经过遍历计数来实现的,时间复杂度为 O(n)。通过 strlen key 命令可以获取 key 的字符串长度。 杜绝缓冲区溢出 在 C 语言中使用 strcat 函数来进行两个字符串的拼接,一旦没有分配足够长度的内存空间,就会造成缓冲区溢出。而对于 SDS 数据类型,在进行字符修改的时候,会首先根据记录的 len 属性检查内存空间是否满足需求,如果不满足,会进行相应的空间扩展

java架构师成长路线-能懂系列之Map详解

自作多情 提交于 2020-09-25 06:33:05
鲁班学院java架构师成长路线 今天我们来说一说java中超级重要的map集合. 1、map集合概述 public interface Map<K,V> 首先看一下map接口,我们可以看到map的存值结构以键值对结构,简单来说,map集合就是一个将键(key)映射到值(value)的对象.且一个映射不可以包含重复的键,;每个键只能映射到一个值. 2、map的存储结构 如上图所示,map中存储数据的方式是一个key对应一个value值,key值可为null,但由于key的值不可重复,故key为null的情况也只可以有一次,value的值不做要求,可以重复也可以多个为null,一对键值对底层是放在一个entry数组中的。 查询的时候是根据键(key)键的值的hashcode值找寻value所对应的位置,如果对同一个键多次赋value的值,那么后赋的值会覆盖前面赋的值. 3、总结一下map的一些特点 Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)。 Map集合中的元素,key和value的数据类型可以相同,也可以不同。 Map集合中的元素,key是不允许重复的, value是可以重复的。 Map集合中的元素,key和 value是一一对应的。 4、map的实现类 下面挑几个比较常用的实现类来讲解吧 4.1 HashMap 这是我们日常使用比较多的一个实现类.