![](https://img-blog.csdnimg.cn/20190918135101160.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java面试题整理-1
java面试整理
奋斗的小媛
这个作者很懒,什么都没留下…
展开
-
Netty概念、优势及应用场景
Netty概念、优势及应用场景什么是Netty?1)本质:JBoss做的一个Jar包2)目的:快速开发高性能、高可靠性的网络服务器和客户端程序3)优点:提供异步的、事件驱动的网络应用程序框架和工具为什么要用Netty?特点1)高并发Netty是一款基于NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架。2)传输快Netty的传输快其实也是依赖了NIO的一个特性——零拷贝。3)封装好优势Netty封装了NIO操作的很多细节,提供易于使用的API。API使原创 2020-06-22 22:06:36 · 553 阅读 · 0 评论 -
Hashset和Treeset的区别
Set中元素不可以重复,是无序的(这里的无序是指存入元素的先后顺序与输出元素的先后顺序不一致)HashSet: ①内部的数据结构是哈希表,是线程不安全的。 ②HashSet中保证集合中元素是唯一的方法:通过对象的hashCode和equals方法来完成对象唯一性的判断。如果对象的hashCode值不同,则不用判断equals方法,就直接存到HashSet中。 注意:如果元素要...原创 2020-04-19 22:56:24 · 476 阅读 · 0 评论 -
CPU百分百排查
实战分析:原生工具1、找到最耗CPU的进程 命令:top –c,显示进程运行信息列表。实例:top -c。交互1:按1,数字1,显示多核CPU信息。交互2:键入P (大写p),进程按照CPU使用率排序。如下图所示结果,已经在交互过程中按了数字1及大写P。可以看到红框标处,测试机器的双核CPU使用率都已经快达到100%。而第一个进程PID是17376的就是我们要找的罪魁祸首了;可以...原创 2020-04-15 22:52:13 · 458 阅读 · 0 评论 -
从输入URL到获取页面的过程
1,域名解析,找到IP地址;2,建立tcp连接(三次握手);3,http响应与请求; http请求报文四个部分:请求行,请求头部,空行,请求数据 a.请求行包含:请求方法,资源位置,以及协议版本,例如:GET /index.html HTTP/1.1; b.请求头部:多个键值对组成 例如: Accept:xxx (接受...转载 2020-04-15 22:42:23 · 315 阅读 · 0 评论 -
Java读写锁实现原理
最近做的一个小项目中有这样的需求:整个项目有一份config.json保存着项目的一些配置,是存储在本地文件的一个资源,并且应用中存在读写(读>>写)更新问题。既然读写并发操作,那么就涉及到操作互斥,这里自然想到了读写锁,本文对读写锁方面的知识做个梳理。为什么需要读写锁?与传统锁不同的是读写锁的规则是可以共享读,但只能一个写,总结起来为:读读不互斥,读写互斥,写写互斥,而一般的...转载 2020-04-15 22:13:30 · 199 阅读 · 0 评论 -
分布式中的一致性hash算法
|0业务场景近年来B2C、O2O等商业概念的提出和移动端的发展,使得分布式系统流行了起来。分布式系统相对于单系统,解决了流量大、系统高可用和高容错等问题。功能强大也意味着实现起来需要更多技术的支持。例如系统访问层的负载均衡,缓存层的多实例主从复制备份,数据层的分库分表等。我们以负载均衡为例,常见的负载均衡方法有很多,但是它们的优缺点也都很明显:随机访问策略。系统随机访问,缺点:可能造成...转载 2020-04-15 21:56:11 · 204 阅读 · 0 评论 -
三种实现分布式锁的方式
一、为什么要使用分布式锁我们在开发应用的时候,如果需要对某一个共享变量进行多线程同步访问的时候,可以使用我们学到的Java多线程的18般武艺进行处理,并且可以完美的运行,毫无Bug!注意这是单机应用,也就是所有的请求都会分配到当前服务器的JVM内部,然后映射为操作系统的线程进行处理!而这个共享变量只是在这个JVM内部的一块内存空间!后来业务发展,需要做集群,一个应用需要部署到几台机器上...转载 2020-04-15 21:39:09 · 143 阅读 · 0 评论 -
Hash算法和一致性Hash算法
Hash算法在路由算法应用中,为了保证数据均匀的分布,例如有3个桶,分别是0号桶,1号桶和2号桶;现在有12个球,怎么样才能让12个球平均分布到3个桶中呢?使用Hash算法的做法是,将12个球从0开始编号,得到这样的一个序列:0,1,2,3,4,5,6,7,8,9,10,11。将这个序列中的每个值模3,不管数字是什么,得到的结果都是0,1,2,不会超过3,将结果为0的数字放入0号桶,结果为1的数...转载 2020-04-15 21:47:44 · 237 阅读 · 0 评论 -
java面试---webservice
一、webservice简单的说WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言(通过xml描述)间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。XML:(Extensible Markup Language)扩...原创 2020-04-14 00:16:06 · 215 阅读 · 0 评论 -
java对象与json对象间的相互转换
1.简单的解析json字符串首先将json字符串转换为json对象,然后再解析json对象,过程如下。JSONObject jsonObject = JSONObject.fromObject(jsonStr);//根据json中的键得到它的值String name = jsonObject.getString("name");int num = jsonObject.getInt...原创 2020-04-14 00:08:44 · 134 阅读 · 0 评论 -
java面试---Socket
1. 对套接字编程的理解,它的协议是如何的?socket通常称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通过套接字向网络发出请求或应答网络请求。服务器和客户端通过socket进行交互。服务器需要绑定在本机的某个端口号上,客户端需要声明自己连接哪个地址的哪个端口,这样服务器和客户端就能连接了。根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分...转载 2020-04-13 23:24:26 · 1055 阅读 · 1 评论 -
Redis 主从复制
一、Redis 复制复制(Replication):是 Redis 实现高可用的基础。且在复制过程中,主节点/从节点都是非阻塞的,但是从节点在执行同步时使用的是旧数据集提供查询。Redis 复制启动图与流程说明:1)、当从节点连接到主节点时,会发送 psync 命令给主节点,runId 是主节点的 ID,如果没有默认是 -1;offset 是从节点保存复制偏移量,主节点根据复制偏移...原创 2020-04-12 17:42:33 · 88 阅读 · 0 评论 -
TCP三次握手和四次挥手的流程,断开连接如果只有两次握手,会出现什么。
TCP三次握手:为了对每次发送的数据量进行跟踪与协商,确保数据段的发送和接收同步,根据所接收到的数据量而确认数据发送、接收完毕后何时撤消联系,并建立虚连接。第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT(请求连接)状态,等待Server确认。第二次握手:Server收到数据包后由标志位SYN=1知...原创 2020-04-11 22:21:44 · 1600 阅读 · 0 评论 -
快速排序
思路: 1.首先确定最左边值为base 2.将数组分为二个子区,左边放小于base的值,右边放大于base的值。 3.之后再将俩边进行递归package com.fan.interview.test;import static java.util.Arrays.sort;/** * 快速排序 * * @Author amy.fan * @...原创 2020-04-09 19:54:52 · 92 阅读 · 0 评论 -
ConcurrentHashMap 高并发性的实现机制与源码浅析
说一下你对HashMap的理解;他的底层结构是什么样的;jdk7之前底层使用的是数组+链表的形式,1.8之后改成了数据加链表加红黑二叉树,提高查询性能,一个数据是怎么存到,map里面的;1.首先创建hashmap,默认大小是16,负载因子是0.75,我们可以去指定他的长度size,如果自己传入初始大小k,初始化大小为 大于k的 2的整数次方。那么为什么2的整数次方,例如如果传10,大小...原创 2020-03-23 17:21:32 · 415 阅读 · 0 评论