JDK

彻底弄懂HashMap

╄→尐↘猪︶ㄣ 提交于 2021-02-08 09:36:26
我们在面试中, 也会经常被问到HashMap相关的底层实现, 阿巴阿巴.... HashMap的底层实现 首先它是基于数组(存储对象的引用)加链表(存储对象)实现的 当我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 HashMap在每个链表节点中储存键值对对象 简单的模拟实现put的底层实现 jdk1.8 put(k, v){ int code = k.hashcode(); //计算key的hashcode int index = code % table.length; // 存放的数组下表 table[index] = new Entry(k, v, null); // 对应的对象 } // 第二次插入 HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链表的下一个节点中。 table[index] = new Entry(k, v, table[index]); // todo 底层实现 若key相同时 返回并覆盖 否则插入链表的下一个节点 if (p

oracle安装问题(win7)解决方案

有些话、适合烂在心里 提交于 2021-02-08 06:14:11
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Command = D:\Program Files\Oracle\jdk\jre\bin/java.exe -Dsun.java2d.noddraw=true -Duser.dir=D:\Program Files\Oracle\bin -classpath ";D:\Program Files\Oracle\jdk\jre\lib\rt.jar;D:\Program Files\Oracle\jlib\ldapjclnt10.jar;D:\Program Files\Oracle\jlib\ewt3.jar;D:\Program Files\Oracle\jlib\ewtcompat-3_3_15.jar;D:\Program Files\Oracle\network\jlib\NetCA.jar;D:\Program Files\Oracle\network\jlib\netcam.jar;D:\Program Files\Oracle\jlib\netcfg.jar;D:\Program Files\Oracle\jlib\help4.jar;D:\Program Files\Oracle\jlib\jewt4.jar;D:\Program Files\Oracle\jlib

IntelliJ IDEA 安装、注册码激活

我怕爱的太早我们不能终老 提交于 2021-02-08 05:29:06
IntelliJ IDEA 安装、注册码激活 一、安装 1、下载IDEA 2、双击.exe文件,显示如图,点击next 3、选择安装位置,点击next 4、勾选相应操作系统位数、安装插件,点击next 5、接下来就是选择我们的菜单,然后点击install安装就会进入安装过程 6、安装完成后,会出现下图finish结束按钮,上面的选项是问我们是否现在打开IDEA 注: JDK安装步骤参考如下网址: https://www.cnblogs.com/Michelle20180227/p/10564215.html 二、激活 方法一:使用激活服务器激活方法 步骤 1、打开注册/激活窗口; 2、选择 License server; 3、填入上述其中一个网址(如:http://idea .java .sx ); 4、点击Activate即可完美激活! 方法二:注册码激活方法(建议用这种) 1、进入hosts文件中:C:\Windows\System32\drivers\etc\hosts 2、将“0.0.0.0 account.jetbrains.com”添加到hosts文件中 注意:添加只有重新打开hosts文件进行确认之后在进行下一步操作。 修改成功后如图所示: 注:将这条数据加入之后会提示保存,然后确认之后,重新打开hosts文件确认是否添加成功,有时候会提示确认两次。 4

Kafka 最佳实践

别来无恙 提交于 2021-02-08 04:07:49
这是一篇关于 Kafka 实践的文章,内容来自 DataWorks Summit/Hadoop Summit(Hadoop Summit)上的一篇分享,里面讲述了很多关于 Kafka 配置、监控、优化的内容,绝对是在实践中总结出的精华,有很大的借鉴参考意义,本文主要是根据 PPT 的内容进行翻译及适当补充。 Kafka 的架构这里就不多做介绍了,直接步入正题。 Kafka 基本配置及性能优化 这里主要是 Kafka 集群基本配置的相关内容。 硬件要求 Kafka 集群基本硬件的保证 OS 调优 OS page cache:应当可以缓存所有活跃的 Segment(Kafka 中最基本的数据存储单位); fd 限制:100k+; 禁用 swapping:简单来说,swap 作用是当内存的使用达到一个临界值时就会将内存中的数据移动到 swap 交换空间,但是此时,内存可能还有很多空余资源,swap 走的是磁盘 IO,对于内存读写很在意的系统,最好禁止使用 swap 分区; TCP 调优 JVM 配置 JDK 8 并且使用 G1 垃圾收集器 至少要分配 6-8 GB 的堆内存 Kafka 磁盘存储 使用多块磁盘,并配置为 Kafka 专用的磁盘; JBOD vs RAID10; JBOD(Just a Bunch of Disks,简单来说它表示一个没有控制软件提供协调控制的磁盘集合

Java中RunTime类介绍

有些话、适合烂在心里 提交于 2021-02-08 02:56:43
Runtime 类代表着Java程序的运行时环境,每个Java程序都有一个Runtime实例,该类会被自动创建,我们可以通过 Runtime.getRuntime() 方法来获取当前程序的Runtime实例。 获取当前Jvm的内存信息 /* * 获取当前jvm的内存信息,返回的值是 字节为单位 * */ public static void getFreeMemory() { // 获取可用内存 long value = Runtime.getRuntime().freeMemory(); System.out.println( "可用内存为:"+value/1024/1024+"mb" ); // 获取jvm的总数量,该值会不断的变化 long totalMemory = Runtime.getRuntime().totalMemory(); System.out.println( "全部内存为:"+totalMemory/1024/1024+"mb" ); // 获取jvm 可以最大使用的内存数量,如果没有被限制 返回 Long.MAX_VALUE; long maxMemory = Runtime.getRuntime().maxMemory(); System.out.println( "可用最大内存为:"+maxMemory/1024/1024+"mb" ); }

爱奇艺现场面试总结

帅比萌擦擦* 提交于 2021-02-08 02:54:59
一面: java内存模型:问面试官是jmm还是jvm,说是jvm,说了说分区 堆内存:说了堆内存划分和理由,各种内存的分配流程,各类回收算法。 项目:略 mysql锁存在哪里的:想不起来了。。。 mysql乐观锁悲观锁:乐观锁说了mvcc,悲观锁说了行锁表锁 mysql mvcc实现:说了下那两列blablabla,又说了下除了mvcc外还用了啥来保证可重复读 aqs:自己看过源码,就着lock类说,包括tryaquire,addwaiter,公平锁非公平锁实现区别 jdk1.7 1.8区别:部分容器类改进(如hashmap,concurrenthashmap),stream,lambda stream怎么实现的:底层用的类似fork join fork join怎么实现的:把人物分开,然两两后合并结果 写个归并排序:之前快排和堆排都练过,就归并。。。。没练,没憋出来 sql写行转列:。。尴尬,也写不出 springboot了解么:实验项目用过,着重说了下默认配置和springloud的基础 springcloud说下,画画图:主要说了eruka,ribbon,hystrix,fegin,config,bus,zuul 二面: 项目:略 后台开发高并发的理解:提高服务器配置,分布,服务管理,负载均衡,一致性处理,缓存,数据库分库分表,高可用,页面静态化都说了说,各说了下大致怎么做的

windows下java环境变量的配置 javac不是内部或外部命令的问题

坚强是说给别人听的谎言 提交于 2021-02-07 17:05:05
安装配置JAVA JDK 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 。 下载你电脑对应的JDK,下载完成后运行exe安装,注意最好不要将其安装在有空格或者中文文件夹下,其他无限制,注意记下其安装路径。 配置环境变量: 新建环境变量:JAVA_HOME 值为:D:\Program Files\Java\jdk1.7.0 新建环境变量:CLASSPATH 值为:.;%JAVA_HOME%\lib;(注意:点号表示当前目录,不能省略) 在系统变量Path的值的前面加入以下内容:%JAVA_HOME%\bin;(注意:这里的分号不能省略)到这里,JDK安装完毕。 单击“开始”—>“运行”—>输入:cmd命令,在CMD窗口中输入:java -version(正常) 但是输入:javac(报错,不是内部或外部命令,也不是客运行动程序或批处理文件) 输入path查看下路径 发现有一个javapath路径,但是打开这个路径里发现没有javac.exe所以在运行中输入javac报错 解决办法 PATH配置中路径一定要用绝对路径,不能用JAVA_HOME 网上的一般都是 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 把 %JAVA_HOME% 替换成你的JAVA

eclipse 安装教程

不羁的心 提交于 2021-02-07 07:25:38
eclipse 安装教程 一:安装包下载: 链接: https://pan.baidu.com/s/1qZtt62o 密码: 4ak2 注:若 下载链接失效,请看本文公告的QQ群,请联系群主。 二:安装教程 下一步 下一步 直至结束 三: eclipse配置: 1.jre Window——>Preferences——>Java——>Installed JREs 2.tomcat Window——>Preferences——>Server——>Runtime Environments Eclipse没有自带服务器环境,我们这里需要自己配置一下。刚才已经说了,假设你的tomcat已经下载解压了。然后在Eclipse菜单栏依次点击 Window - Preferences - Server - Runtime Environment - Add,如下图所示 然后选择对应的Tomcat版本,选择之前的Tomcat安装目录就行了。如下图所示,这里用的是Tomcat 8.0版本的服务器。选择了Tomcat目录之后下面还可以选择JRE版本,本机之前装了JDK8了。所以下拉选择一下,不用workbench自带的了。毕竟JDK8和Tomcat8更般配。哈哈哈哈。最后选择Finish。那么服务器环境就搭建好了。 3.maven Window——>Preferences——>Maven

eclipse安装教程(详细版)

我怕爱的太早我们不能终老 提交于 2021-02-07 06:52:14
第一步:下载 eclipse,并安装。 下载链接: http://www.eclipse.org/downloads/ 点击 Download Packages; 如图: 根据自己的系统选择 64 位的,点击相应链接下载(可能会弹出一个需要你付费的页面,并不是 eclipse 需要付费,这只是请求你捐钱的,无需理会) 下载完成后,解压安装包,解压路径随意。 打开之后,选中图中的文件,在桌面创建快捷方式,安装告一段落,可以尝试双击打开运行一下,应该会有 bug 。 第二步:下载 JDK 。 先给上下载链接: http://www.oracle.com/technetwork/java/javase/downloads/index.html 点击 java 之后,在第一个框中,点选 Accept License Agreement 下载完成后,打开一路确定安装即可。 第三步: java 环境变量配置。 我的电脑 -> 右键 -> 属性 -> 高级系统设置 -> 环境变量设置 要让系统变量中(第二个框是系统变量)有 path 和 classpath 这两个变量,方法是: 点击新建,变量名: path ,变量值:刚刚 JDK 的安装路径,例如我的: C:\Program Files\Java\jdk1.8.0_121\bin 。 同样新建,变量名: classpath ,变量值 :C:

【Java基础】【01初识Java】

[亡魂溺海] 提交于 2021-02-07 05:48:46
###01.01_计算机基础知识(计算机概述)(了解) A:什么是计算机?计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机、大型计算机等。 应用举例 1:科学计算 2、数据处理 3、自动控制 4、计算机辅助设计 5、人工智能 6、多媒体应用 7、计算机网络 ... B:什么是硬件?硬件举例 计算机硬件(Computer Hardware)是指计算机系统中由电子,机械和光电元件等组成的各种物理装置的总称。这些物理装置按系统结构的要求构成一个有机整体为计算机软件运行提供物质基础。 冯.诺依曼体系结构 计算机的硬件分成5大组成部件:运算器、控制器、存储器、输入设备和输出设备。 运算器和控制器是计算机的核心,合称中央处理单元(Central Processing Unit,CPU)或处理器。CPU的内部还有一些高速存储单元,被称为寄存器。其中运算器执行所有的算术和逻辑运算;控制器负责把指令逐条从存储器中取出,经译码后向计算机发出各种控制命令;而寄存器为处理单元提供操作所需要的数据。 存储器是计算机的记忆部分,用来存放程序以及程序中涉及的数据。它分为内部存储器和外部存储器