Netty

2020Java面试题及答案,命中率高达90%

▼魔方 西西 提交于 2020-08-12 07:33:34
这份资源我自己历经三年才整理归类出来,现在免费分享给大家; 面试题有:蚂蚁金服、拼多多、阿里云、百度、唯品会、携程、丰巢科技、乐信、软通动力、OPPO、银盛支付、中国平安等初,中级,高级Java面试题集合。 面试题以及答案,已经整理成PDF电子书形式打包在网盘; 面试题领取微信扫一扫,加好友请备注“博客园面试题”; 目录 上海-携程-Java高级面试题.pdf 北京-百度-Java中级面试题.pdf 深圳-乐信-Java高级面试题.pdf 深圳-腾讯-Java高级面试题.pdf 上海-拼多多-Java高级面试题.pdf 深圳-OPPO-Java高级面试题.pdf 上海-拼多多-Java高级面试题.pdf 北京-京东-Java实习生面试题.pdf 北京-京东-Java实习生面试题.pdf 杭州-阿里云Java实习生面试题.pdf 南京-软通动力-Java初级面试题.pdf 深圳-银盛支付-Java中级面试题.pdf 深圳-中国平安-Java中级面试题.pdf 深圳-蚂蚁金服-Java高级面试题.pdf 深圳-丰巢科技-Java高级面试题.pdf 深圳-商汤科技-Java高级面试题.pdf 厦门-中软国际-Java初级面试题.pdf 杭州-蚂蚁金服-Java高级面试题.pdf 杭州-蚂蚁金服-资深工程师面试题.pdf 广州唯品会-Java大数据开发工程师面试题.pdf 上海-携程

异步文件通道Java NIO你需要了解多少,来看看这篇文章

人盡茶涼 提交于 2020-08-12 07:04:16
在Java 7,AsynchronousFileChannel 被添加到了Java NIO中。使用AsynchronousFileChannel可以实现异步地读取和写入文件数据。 创建一个AsynchronousFileChannel 我们可以使用AsynchronousFileChannel提供的静态方法 open() 创建它。示例代码如下: Path path = Paths.get("data/test.xml"); AsynchronousFileChannel fileChannel = AsynchronousFileChannel.open(path, StandardOpenOption.READ); 第一个参数是一个 PATH 的对像实例,它指向了那个与 AsynchronousFileChannel 相关联的文件。 第二个参数是一个或多个操作选项,它决定了 AsynchronousFileChannel 将对目标文件做何种操作。示例代码中我们使用了 StandardOpenOption.READ ,它表明我们将要对目标文件进行读操作。 读取数据 AsynchronousFileChannel 提供了两种读取数据的方式,都是调用它本身的 read() 方法。下面将对两种方式进行介绍。 使用Futrue读取数据 第一种反式是调用

学习响应式编程 Reactor (2)

瘦欲@ 提交于 2020-08-12 05:01:38
Reactor Reactor 是用于 Java 的异步非阻塞响应式编程框架,同时具备背压控制的能力。它与 Java 8 函数式 Api 直接集成,比如 分为CompletableFuture、Stream、以及 Duration 。它提供了异步 Api 响应流 Flux (用于 [0 - N] 个元素)和 Mono (用于 [0或1] 个元素),并完全遵守和实现了响应式规范。 引入 reactor reactor 自 3.0.4 版本之后,采用了 BOM (Bill Of Materials)的方式,使用 BOM 可以管理一组良好集成的 maven artifacts,而无需担心不同版本组件之间的相互依赖问题,在 maven 项目中在 dependencyManagement 中 加入 reactor 的 bom 定义即可。 <dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-bom</artifactId> <version>Dysprosium-SR8</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <

开发四年的Java程序员,你遇到过自身瓶颈期吗?又是怎样度过的?

非 Y 不嫁゛ 提交于 2020-08-12 03:12:55
从毕业到现在已经快4年啦,一直在Java的WEB开发行业混迹。我不是牛人,但是自我感觉还算是个合格的程序员,有必要写下自己将近4年来的经历,给自我以提示,给刚入行的朋友提供点参考。 貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事web开发一年后,重新找工作时,才会真实的感受到这句话。 工作第一年,往往是什么都充满新鲜感,什么都学习,冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本,明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西;所有,很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多。 面试,是跳槽后第一个需要面对的问题;而且不同公司面试的着重点不同;但是却有一个共同点:Java基础是必考的。工作第一年,可能问你String对象创建的理解,常用的框架是什么等等;工作第二年,就问你Java内存分配机制是什么,类是如何加载的等等;第三年,就问你常用的设计模式是什么,你在工作中充当什么角色,怎么独立完成一个模块等等; 可以看出------这是一个典型的程序员的成长过程: 使用Java---->深入理解Java积累经验------>独立设计分析能力------>独当一面的多面手! 因此,必须学习: 列举一些技术 比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计

elasticsearch 6.8.10 集群报错处理

妖精的绣舞 提交于 2020-08-11 22:56:56
报错如下 [2020-06-24T16:19:54,728][WARN ][o.e.b.JNANatives ] [8.1.10.146] Unable to lock JVM Memory: error=12, reason=无法分配内存 [2020-06-24T16:19:54,731][WARN ][o.e.b.JNANatives ] [8.1.10.146] This can result in part of the JVM being swapped out. [2020-06-24T16:19:54,731][WARN ][o.e.b.JNANatives ] [8.1.10.146] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536 [2020-06-24T16:19:54,731][WARN ][o.e.b.JNANatives ] [8.1.10.146] These can be adjusted by modifying /etc/security/limits.conf, for example: # allow user 'elasticsearch' mlockall elasticsearch soft memlock unlimited elasticsearch hard

他们都说JVM能实际使用的内存比-Xmx指定的少?这是为什么呢

不问归期 提交于 2020-08-11 19:59:52
这确实是个挺奇怪的问题,特别是当最常出现的几种解释理由都被排除后,看来JVM并没有耍一些明显的小花招: -Xmx和-Xms是相等的,因此检测结果并不会因为堆内存增加而在运行时有所变化。 通过关闭自适应调整策略(-XX:-UseAdaptiveSizePolicy),JVM已经事先被禁止动态调整内存池的大小。 重现差异检测结果 要弄清楚这个问题的第一步就是要明白这些工具的实现原理。通过标准APIs,我们可以用以下简单语句得到可使用的内存信息。 System.out.println("Runtime.getRuntime().maxMemory()="+Runtime.getRuntime().maxMemory()); 而且确实,现有检测工具底层也是用这个语句来进行检测。要解决这个问题,首先我们需要一个可重复使用的测试用例。因此,我写了下面这段代码: package eu.plumbr.test; //imports skipped for brevity public class HeapSizeDifferences { static Collection objects = new ArrayList(); static long lastMaxMemory = 0; public static void main(String[] args) { try { List

如何保证NFS文件锁的一致性?

☆樱花仙子☆ 提交于 2020-08-11 19:20:53
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 阿里妹导读:在存储系统中, NFS(Network File System,即网络文件系统)是一个重要的概念,已成为兼容POSIX语义的分布式文件系统的基础。它允许在多个主机之间共享公共文件系统,并提供数据共享的优势,从而最小化所需的存储空间。本文将通过分析NFS文件锁状态视图一致性的原理,帮助大家理解NFS的一致性设计思路。 文件锁 文件锁是文件系统的最基本特性之一,应用程序借助文件锁可以控制其他应用对文件的并发访问。NFS作为类UNIX系统的标准网络文件系统,在发展过程中逐步地原生地支持了文件锁(从NFSv4开始)。NFS从上个世界80年代诞生至今,共发布了3个版本:NFSv2、NFSv3、NFSv4。 NFSv4最大的变化是有“状态”了。某些操作需要服务端维持相关状态,如文件锁,例如客户端申请了文件锁,服务端就需要维护该文件锁的状态,否则和其他客户端冲突的访问就无法检测。如果是NFSv3就需要NLM协助才能实现文件锁功能,但是有的时候两者配合不够协调就会容易出错。而NFSv4设计成了一种有状态的协议,自身就可以实现文件锁功能,也就不需要NLM协议了。 应用接口 应用程序可以通过 fcntl() 或 flock() 系统调用管理NFS文件锁

编译-集成hadoop-eclipse-plugin到eclipse

馋奶兔 提交于 2020-08-11 18:13:46
0),软件准备 以下软件无特殊说明均为windows平台 hadoop2.7.5 jdk1.8 eclipse任意版本 windows平台 hadoop2x-eclipse-plugin包下载自github(如果太慢可以将项目克隆至码云再下载) ant-1.10.7 1),编译准备 修改hadoop2x-eclipse-plugin解压目录中src\contrib\eclipse-plugin\build.xml。 <path id="eclipse-sdk-jars"> <fileset dir="C:\Users\Administrator\.p2\pool\plugins"> 该目录为eclipseui资源目录可在eclipse\configuration中通过config.ini查看具体目录 <target name="compile" depends="ivy-init,ivy-resolve-common" unless="skip.contrib">将属性depends删除 然后在 javac 标签中加上 includeantruntime="on" 找到copy标签然后添加以下3行: <copy file="${hadoop.home}/share/hadoop/common/lib/servlet-api-${servlet-api.version}.jar"

Netty学习之实战WebSocket框架

爷,独闯天下 提交于 2020-08-11 17:45:26
  说到WebSocket技术,其实源于服务器推送技术,在现实中很多时候需要的数据是不断变化的,比如股市数据、聊天软件,因此就需要一种客户端想要在不刷新页面的情况下实时获取到服务器端最新数据的技术,而以往的数据获取都是基于客户端主动请求,服务端返回对应数据。因此就有了服务器推送技术。   服务器推送技术主要由以下几种:Ajax短轮询、Ajax长轮询、SSE、HTTP流、WebSocket。 一、服务器推送技术   1、Ajax短轮询   实现简单,客户端(浏览器)定时向服务器端发送请求,获取最新的数据。可以通过在一个定时器中触发ajax请求来实现。   优点:实现非常简单,JS端进行一些更改即可,无需后端服务任何改动;   缺点:轮询的间隔过长,会导致用户不能及时接收到更新的数据;轮询的间隔过短,会导致查询请求过多,增加服务器端的负担。              代码如下: // 每两秒触发一次ajax请求,获取最新的数据 setInterval(function(){ // do some ajax call here to retrieve latest data },2000);   2、Ajax长轮询   在Ajax轮询的基础上做的一点改进,在后端数据没有更新的时候不再返回空响应,而且后端一直保存连接,直到后端有数据变化,则相应请求并且关闭连接,前端收到数据

Netty、Redis、ZooKeeper高并发实战(笔记六)

大兔子大兔子 提交于 2020-08-11 16:16:33
netty 使用: Bootstrap启动流程中8个步骤。 //创建反应器线程组 //boss线程组 EventLoopGroupbossLoopGroup = new NioEventLoopGroup(1); //worker线程组 EventLoopGroupworkerLoopGroup = new NioEventLoopGroup(); //... //1 设置反应器线程组 b.group(bossLoopGroup, workerLoopGroup); 在设置反应器线程组之前,创建了两个NioEventLoopGroup线程组,一个负责处理连接监听IO事件,名为bossLoopGroup;另一个负责数据IO事件和Handler业务处理,名为workerLoopGroup。 在线程组创建完成后,就可以配置给启动器实例,调用的方法是b.group(bossGroup,workerGroup),它一次性地给启动器配置了两大线程组。 不一定非得配置两个线程组,可以仅配置一个EventLoopGroup反应器线程组。具体的配置方法是调用b.group(workerGroup)。在这种模式下,连接监听IO事件和数据传输IO事件可能被挤在了同一个线程中处理。这样会带来一个风险:新连接的接受被更加耗时的数据传输或者业务处理所阻塞。 Netty不止支持Java NIO