首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
AI大模型开发工程师
获赞
27
粉丝
22
关注
4
看过 TA
25
男
北京大学
2019
人工智能
IP属地:湖南
暂未填写个人简介
私信
关注
拉黑
举报
举报
确定要拉黑AI大模型开发工程师吗?
发布(538)
评论
刷题
收藏
AI大模型开发工程师
关注TA,不错过内容更新
关注
2021-07-17 18:31
已编辑
北京大学 人工智能
一起来聊聊 ConcurrentMap
我们来看这个经常在多线程的情况下使用的这些个容器,从Map开始讲,Map经常用的有这么几个。 ConcurrentHashMap用hash表实现的这样一个高并发容器。 既然有了ConcurrentHashMap正常情况下就应该有ConcurrentTreeMap,你可以去查查,它没有,就等于缺了一块。 为什么没有呢?原因就是ConcurrentHashMap里面用的是cas操作,这个cas操作它用在tree的时候,用在树这个节点上的时候实现起来太复杂了,所以就没有这个ConcurrentTreeMap,但是有时间也需要这样一个排好序的Map, 那就有了ConcurrentSkipListMap...
0
点赞
评论
收藏
分享
2021-07-17 18:31
北京大学 人工智能
面试官:ConcurrentHashMap的读操作不需要加锁?
我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢? ConcurrentHashMap的简介 我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了Segment臃肿的设计,取而代之的是采用Node + CAS + Synchronized来保证并发安全进行实现。 JDK1.8的实现降低锁的粒度,JDK1.7版本锁的粒度是基于Segment的,包含...
0
点赞
评论
收藏
分享
2021-07-17 18:31
已编辑
北京大学 人工智能
Java程员必会的Tomcat调优的技巧
1、描述 最近,在补充自己的短板,刚好整理到 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍一下,Tomcat 调优大致分为两大类。 1.1 Tomcat的自身调优 采用动静分离节约 Tomcat 的性能调整 Tomcat 的线程池调整 Tomcat 的连接器修改 Tomcat 的运行模式禁用 AJP 连接器 1.2 JVM的调优 调优Jvm内存 2、Tomcat自身调优 2.1 采用动静分离 静态资源如果让 Tomcat 处理的话 Tomcat 的性能...
0
点赞
评论
收藏
分享
2021-07-17 18:30
已编辑
北京大学 人工智能
面试官:Spring 和 Spring Boot 的区别是什么?
概述 对于 Spring和 SpringBoot到底有什么区别,我听到了很多答案,刚开始迈入学习 SpringBoot的我当时也是一头雾水,随着经验的积累、我慢慢理解了这两个框架到底有什么区别,相信对于用了 SpringBoot很久的同学来说,还不是很理解 SpringBoot到底和 Spring有什么区别,看完文章中的比较,或许你有了不同的答案和看法! 什么是Spring 作为 Java开发人员,大家都 Spring都不陌生,简而言之, Spring框架为开发 Java应用程序提供了全面的基础架构支持。它包含一些很好的功能,如依赖注入和开箱即用的模块,如: SpringJDBC、Sprin...
0
点赞
评论
收藏
分享
2021-07-17 18:30
北京大学 人工智能
RabbitMQ和Kafka哪个更吊一点
导言 作为一个有丰富经验的微服务系统架构师,经常有人问我,“应该选择RabbitMQ还是Kafka?”。基于某些原因, 许多开发者会把这两种技术当做等价的来看待。的确,在一些案例场景下选择RabbitMQ还是Kafka没什么差别,但是这两种技术在底层实现方面是有许多差异的。 不同的场景需要不同的解决方案,选错一个方案能够严重的影响你对软件的设计,开发和维护的能力。 这篇文章会先介绍一下基本的异步消息模式,然后再介绍一下RabbitMQ和Kafka以及他们的内部结构信息。第二部分(未完成)主要介绍这两种技术的主要不同点以及他们各自的优缺点,最后我们会说明一下怎样选择这两种技术。 异步消息模式 异...
0
点赞
评论
收藏
分享
2021-07-17 18:30
北京大学 人工智能
微服务架构:关于构建大规模应用的介绍
微服务是什么? 微服务就是一些协同工作的小而自制的服务。 无论现在的影响力如何,分布式系统仍然是最容易被忽视的主题之一,至少在大学层面是如此。没有多少学生理解诸如容器化和容错等概念,你也永远不会看到系统项目赢得黑客马拉松。尽管如此,我认为至少对今天的大规模系统如何工作有一个简单的理解是非常重要的。 这个故事是针对初学者的系列中的第一个,例如接受 1 到 2 年级的普通计算机科学教育或者具有自学网络开发经验的人。前几篇文章将对主要概念进行重点介绍,并深入探讨技术细节。然后,我希望探索网络相关的主题、Kubernetes ,以及我在研究中看到的有趣内容。第一个非常简单,旨在解释微服务背后的动...
0
点赞
评论
收藏
分享
2021-07-17 18:29
北京大学 人工智能
最全的 volatile 关键字的总结,赶快收藏一波!
一、简介 volatile是Java提供的一种轻量级的同步机制。Java 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量,相比于synchronized(synchronized通常称为重量级锁),volatile更轻量级,因为它不会引起线程上下文的切换和调度。但是volatile 变量的同步性较差(有时它更简单并且开销更低),而且其使用也更容易出错。 二、并发编程的3个基本概念 (1)原子性 定义: 即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能...
0
点赞
评论
收藏
分享
2021-07-17 18:29
已编辑
北京大学 人工智能
持续精进,你需要了解Redis的这些拓展方案
前言 Redis大家都不陌生,就算是没用过,也都听说过了。 作为最广泛使用的KV内存数据库之一,在当今的大流量时代,单机模式略显单薄,免不了要有一些拓展的方案。 笔者下文会对各种方案进行介绍,并且给出场景,实现 等等概述,还会提到一些新手常见的误区。 正文 先从基础的拓展方式开始,这样更便于理解较高级的模式。 ps: 本文背景是以笔者落笔时官网最新稳定版5.0.8为准,虽然还没写完就变成了6.0.1。 分区 概述 分区(Partitioning)是一种最为简单的拓展方式。 在我们面临单机的存储空间瓶颈时,第一点就能想到像传统的关系型数据库一样,进行数据分区。 或者假设手中有N台机器可以作为R...
0
点赞
评论
收藏
分享
2021-07-17 18:29
北京大学 人工智能
微服务架构解密:关于构建大规模应用的介绍
微服务是什么? 微服务就是一些协同工作的小而自制的服务。 无论现在的影响力如何,分布式系统仍然是最容易被忽视的主题之一,至少在大学层面是如此。没有多少学生理解诸如容器化和容错等概念,你也永远不会看到系统项目赢得黑客马拉松。尽管如此,我认为至少对今天的大规模系统如何工作有一个简单的理解是非常重要的。 这个故事是针对初学者的系列中的第一个,例如接受 1 到 2 年级的普通计算机科学教育或者具有自学网络开发经验的人。前几篇文章将对主要概念进行重点介绍,并深入探讨技术细节。然后,我希望探索网络相关的主题、Kubernetes ,以及我在研究中看到的有趣内容。第一个非常简单,旨在解释微服务背后的动...
0
点赞
评论
收藏
分享
2021-07-17 18:28
已编辑
北京大学 人工智能
面试官问:为什么需要消息队列?使用消息队列有什么好处?
目录 一、消息队列的特性 二、为什么需要消息队列? 三、使用消息队列有什么好处? 四、为什么需要分布式? 五、分布式环境下需要解决哪些问题? 六、如何实现? 七、常见消息队列对比和选型 一、消息队列的特性 业务无关,一个具有普适性质的消息队列组件不需要考虑上层的业务模型,只做好消息的分发就可以了,上层业务的不同模块反而需要依赖消息队列所定义的规范进行通信。 FIFO,先投递先到达的保证是一个消息队列和一个buffer的本质区别。 容灾,对于普适的消息队列组件来说,节点的动态增删和消息的持久化,都是支持其容灾能力的重要基本特性。当然,这个特性对于游戏服务器中大部分应用中的消息队列来说不是必须...
0
点赞
评论
收藏
分享
2021-07-17 18:28
已编辑
北京大学 人工智能
关于Spring AOP,你都知道什么?
Spring 作为 Java 中最流行的框架,主要归功于其提供的 IOC 和 AOP 功能。本文将讨论 Spring AOP 的实现。第一节将介绍 AOP 的相关概念,若熟悉可跳过,第二节中结合源码介绍 Spring 是如何实现 AOP 的各概念。 1. AOP 概念 1.1 JoinPoint 进行织入操作的程序执行点。 常见类型: 方法调用(Method Call):某个方法被调用的时点。 方法调用执行(Method Call Execution):某个方法内部开始执行的时点。 方法调用是在调用对象上的执行点,方法调用执行是在被调用对象的方法开始执行点。 构造方法调用(Cons...
0
点赞
评论
收藏
分享
2021-07-17 18:28
北京大学 人工智能
异常、堆内存溢出、OOM的常见情况有哪些,该如何解决
堆内存溢出 【情况一】:java.lang.OutOfMemoryError: Java heap space: 这种是java堆内存不够,一个原因是真不够,另一个原因是程序中有死循环; 如果是java堆内存不够的话,可以通过调整JVM下面的配置来解决: < jvm-arg>-Xms3062m < / jvm-arg>< jvm-arg>-Xmx3062m < / jvm-arg> 【情况二】java.lang.OutOfMemoryError: GC overhead limit exceeded 【解释】:JDK6新增错误类型,当GC为释放...
0
点赞
评论
收藏
分享
2021-07-17 18:27
已编辑
北京大学 人工智能
都2021了,还没有入门 Spring Boot?
00、Spring Boot 简介 我猜,大家一定编写过基于 Spring 的应用程序,你就知道一个“Hello World”就需要大量的配置。想一想,我自己都有点怀疑,还能不能创建的出来,尤其是那些 XML 文件,完全敲不出来。 Spring Boot 使您能轻松地创建独立的、生产级的、基于 Spring 且能直接运行的应用程序。我们对 Spring 平台和第三方库有自己的看法,所以您从一开始只会遇到极少的麻烦。 看看 Spring Boot 官网对自己的“王婆卖瓜自卖自夸”,感觉确实优秀啊。这意味着我们只需极少的配置,就可以快速创建一个可以正常运行的 Spring 应用程序。而且这些极...
0
点赞
评论
收藏
分享
2021-07-17 18:27
北京大学 人工智能
昨天我去面试,问他SynchronousQueue没答上来
SynchronousQueue容量为0,就是这个东西它不是用来装内容的,SynchronousQueue是专门用来两个线程之间传内容的,给线程下达任务的,老师讲过一个容器叫Exchanger还有印象吗,本质上这个容器的概念是一样的。看下面代码: 有一个线程起来等着take,里面没有值一定是take不到的,然后就等着。然后当put的时候能取出来,take到了之后能打印出来,最后打印这个容器的size-定是0,打印出aaa来这个没问题。 那当把线程注释掉,在运行一下程序就会在这阻塞,永远等着。如果add方法直接就报错,原因是满了,这个容器为0,你不可以往里面扔东西。 这个Queue和其他的...
0
点赞
评论
收藏
分享
2021-07-17 18:27
北京大学 人工智能
面试官:熟悉Redis吗,项目中你是如何对Redis内存进行优化的
对于redis来说,什么是最重要的? 毋庸置疑,是内存。 一、reids 内存分析 redis内存使用情况:info memory 示例: 可以看到,当前节点内存碎片率为226893824/209522728≈1.08,使用的内存分配器是jemalloc。 used_memory_rss 通常情况下是大于 used_memory 的,因为内存碎片的存在。 但是当操作系统把redis内存swap到硬盘时,memory_fragmentation_ratio 会小于1。redis使用硬盘作为内存,因为硬盘的速度,redis性能会受到极大的影响。 二、redis 内存使用 之前的文章 关于red...
0
点赞
评论
收藏
分享
1
2
3
4
5
6
36
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务