首页
学习
活动
专区
圈层
工具
发布

【面试题】2018年最全Java面试通关秘籍第二套!

冲突的方法; 为什么要重写hashcode()和equals()以及他们之间的区别与关系; Object的hashcode()是怎么计算的?...软引用和弱引用的使用场景(软引用可以实现缓存,弱引用可以用来在回调函数中防止内存泄露); 四、数据库 数据库索引,什么是全文索引,全文索引中的倒排索引是什么原理; 数据库最佳左前缀原则是什么?...九、分布式相关 消息队列使用的场景介绍和作用(应用耦合、异步消息、流量削锋等); 如何解决消息队列丢失消息和重复消费问题; Kafka使用过吗,什么是幂等性?...单机情况下Tomcat的并发大概是多少,MySQL的并发大致是多少?...分布式缓存的一致性,服务器如何扩容(哈希环); 正向代理、反向代理; 什么是客户端负载均衡策略、什么是服务器端负载均衡策略; 如何优化Tomcat,常见的优化方式有哪些; Nginx的Master和Worker

89710

组复制性能 | 全方位认识 MySQL 8.0 Group Replication

考虑到组复制的设计,在决定是否需要启用流量控制时,可能要考虑两个工作队列:认证队列和二进制日志应用队列。当其中一个队列的大小超过用户定义的阈值时,就会触发流量控制机制。...这个系统变量的默认值和最小值为1 GB,即MySQL Server 8.0.16 版本之前的消息缓存大小设置。如果达到了缓存大小限制设置,XCom将删除已经确定和交付的最老的条目。...当不可达的成员恢复时可能需要使用到的消息在消息缓存中已经被删除时,组复制的组通信系统(GCS)通过一条警告消息来发出警告。此警告消息记录在所有活跃的组成员上(对于每个不可到达的成员仅记录一次)。...尽管组成员不能确定不可到达的成员最后看到的消息是什么消息,但是警告消息表明缓存大小可能不足以支撑通过系统变量group_replication_member_expel_timeout设置的在驱逐成员之前的等待时间内总的消息大小...在这种情况下,可以增加缓存大小限制,以便消息缓存能够存放组成员重新加入组所需的所有遗漏消息。

1.6K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    PHP 8.5 升级生存指南:避免凌晨两点回滚的检查清单

    真正的问题通常来自:隐藏的平台约束(扩展、系统库、SAPI),能编译但行为不同的依赖,被忽略多年的警告/弃用突然淹没日志,假设回滚"很简单"的上线计划(实际上很少简单)。这篇文章侧重实操。...弃用:不一定阻止升级,但它们预示未来会坏——而且可能很快淹没日志。PHPUnit本身就区分outcomes(failed/errored)和issues(warnings、riskytests等)。...分组:按消息签名聚类(相同文件/行/消息)。排序:按风险优先:安全相关,运行时正确性,日志量/运维噪音,未来破坏可能性。修复:最小的安全变更。防止回归:添加针对性测试或静态规则。...反引号操作符已弃用(它是shell_exec的别名)。即使你接受安全风险,也不想让弃用警告风暴淹没生产日志。...升级后检查清单:先验证正确性,再验证性能,然后清理一旦PHP8.5开始服务真实流量,你的工作还没完。现在进入"验证和稳定"模式。即时检查(第一小时)扫描错误日志查找新的致命错误/异常。

    7600

    如何提升 API 性能:来自 Java 和测试开发者的优化建议

    你正在听你最喜欢的歌曲,测试你使用编写的新 API。但等你听完一整首歌,API 还没响应。哎呀!这是一个巨大的警告信号——是时候优化你的 API 响应时间了。...大多数 Web 服务器和客户端都支持这些压缩格式,它们可以大幅度减少 API 响应的大小。限制请求频率和节流你有没有被堵在后面,排队等待有人点一百件东西?...突然激增的请求就像这种情况,会把你的 API 堵住。限流可以控制每个用户在一定时间内的请求次数,确保你的 API 不会被淹没。如何实现:实施限流和节流,防止某个用户的请求量过大,从而压垮 API。...优化数据库查询API 和数据库应当像一台精密的机器一样协同工作。如果数据库很慢,你的 API 也会很慢。如何实现:索引: 通过正确的索引加速查询。...如何实现:对于长时间运行的任务,使用消息队列(如 RabbitMQ、Apache Kafka)或 Node.js 中的异步/等待(async/await)后台作业。

    44400

    Spring Boot 最佳实践

    1.正确的包目录风格 正确的包目录将有助于轻松理解代码和应用程序的流程。 我们可以使用有意义的包目录来构建我们的应用程序。...如果我们的应用程序在生产过程中出现问题,日志记录是找出根本原因的唯一方法。 因此,在添加记录器、日志消息类型、记录器级别和记录器消息之前应该仔细考虑。...始终使用 slf4j 的 {} 占位符语法,避免在记录器消息中使用字符串插值。因为字符串插值会消耗更多的内存。 我们可以使用 Lombok @Slf4j 注释非常轻松地创建日志记录器。...始终使用正确的有意义且可搜索的命名约定以及正确的大小写。 通常,我们在声明类、变量和常量时使用名词或短语。...由于它具有有意义的名称,新开发人员可以通过阅读代码轻松理解。 19.使用正确的大小写进行声明 有许多不同的大小写,如大写、小写、驼峰命名、帕斯卡命名、蛇命名、大蛇式命名、短横线命名等。

    1K10

    Spring Boot 最佳实践

    1.正确的包目录风格 正确的包目录将有助于轻松理解代码和应用程序的流程。 我们可以使用有意义的包目录来构建我们的应用程序。...如果我们的应用程序在生产过程中出现问题,日志记录是找出根本原因的唯一方法。 因此,在添加记录器、日志消息类型、记录器级别和记录器消息之前应该仔细考虑。...始终使用 slf4j 的 {} 占位符语法,避免在记录器消息中使用字符串插值。因为字符串插值会消耗更多的内存。 我们可以使用 Lombok @Slf4j 注释非常轻松地创建日志记录器。...始终使用正确的有意义且可搜索的命名约定以及正确的大小写。 通常,我们在声明类、变量和常量时使用名词或短语。...由于它具有有意义的名称,新开发人员可以通过阅读代码轻松理解。 19.使用正确的大小写进行声明 有许多不同的大小写,如大写、小写、驼峰命名、帕斯卡命名、蛇命名、大蛇式命名、短横线命名等。

    79240

    系统性能优化篇

    消息队列:使用消息队列可以实现高并发下的异步化处理,从而提高系统性能。定期检测:需要定期检测系统瓶颈,进行改进优化。如SQL慢日志分析、内存泄漏检测等。...网络流量:监控网络流入流出流量,防止网络过载成为系统的性能瓶颈。6. 错误率:记录系统的错误率和异常率,防止错误和异常请求影响正常用户的使用体验。7....测试步骤设计:设计具体的测试场景和步骤,确保测试用例可以正确执行,并记录测试过程中的性能指标。尽量考虑并发用户场景下的测试。6....需要合理配置连接池的大小和其他参数。7. 缓存使用:采用本地缓存、Memcached、Redis等缓存技术,可以减少数据库访问次数,显著提高应用服务的性能。8....需要更新:当原始数据发生变化时,缓存中的对应数据也需要更新,否则缓存将无法被命中,变得毫无意义。所以缓存的一致性也是我们需要关注的问题。缓存是提高系统性能的一种重要手段,但它也带来了额外的管理成本。

    97621

    Tomcat常见问题合集记录

    启动时候警告在清除过期缓存条目后可用空间仍不足 - 请考虑增加缓存的最大空间 问题描述:启动时候报这样的警告: 警告 [main] org.apache.catalina.webresources.Cache.getResource...无法将位于[/WEB-INF/classes/templates/framework/help/helpinfo.html]的资源添加到Web应用程序[/zhfx]的缓存中, 因为在清除过期缓存条目后可用空间仍不足...- 请考虑增加缓存的最大空间。..., NewSize为JVM启动时YOUNG的内存大小(young内存为堆中的新生代,保存刚实列化的对象); MaxNewSize为最大可占用的YOUNG内存大小。...版本默认字符编码导致应用参数日志乱码问题 描述:最近将Windows Server上的应用需要移植到Docker之中, 由于Tomcat版本问题在应用进行参数传递时候发生乱码; 原因:Tomcat7及以前默认采用

    1.4K10

    收藏了800道Java后端经典面试题,分享给大家,希望你找到自己理想的Offer呀~

    String类能被继承吗,为什么。...请思考一个方案,设计一个可以控制缓存总体大小的自动适应的本地缓存。 redis的哨兵模式,一个key值如何在redis集群中找到存储在哪里。 Redis,一个字符串类型的值能存储最大容量是多少?...Redis—跳跃表,复杂度是多少? Redis有哪些优缺点?为什么要用 Redis ? 为什么要用Redis 而不用 map/guava 做缓存? 如何用 Redis 统计独立用户访问量?...NIO 的底层实现。 netty的心跳处理在弱网下怎么办 Netty 高性能表现在哪些方面? Netty 和 Tomcat 有什么区别? Netty 发送消息有几种方式?...后台系统怎么防止请求重复提交 讲讲你理解的服务治理。

    1.9K21

    Tomcat搭建高可用负载均衡动静分离的Web服务器集群

    这篇文章会集中以前博客讲到的所有Nginx功能点,包括基本的负载均衡,还有动静分离技术再加上这篇文章的重点,通过Keepalived实现的HA(High Available),为什么要实现高可用呢?...以前在搭建的时候只用了一台Nginx服务器,这样的话如果Nginx服务器宕机了,那么整个网站就会挂掉,所以要实现Nginx的高可用,一台挂掉还会有另一台顶上去,从而保证网站可以持续的提供服务。...大小,设置为32KB client_header_buffer_size 32k; #指定客户端请求中较大的消息头的缓存最大数量和大小,这里是4个32KB...大小,设置为32KB client_header_buffer_size 32k; #指定客户端请求中较大的消息头的缓存最大数量和大小,这里是4个32KB...可以看到227和228上的Nginx启动成功,并且实现了负载均衡和动静分离的效果,图片被成功的加载了出来。 ③ 保证所有服务均可正常访问后,启动Keepalived测试。

    2.8K31

    竟是Log4j2的这个“特性”坑了我

    1.3、log4j2 2.23.1缓存顶格分配 该问题同1.1,默认缓存大小为0.5k,即使顶格分配也不会出现问题。...性能表现 若日志消息超长,可能触发多次扩容和数组复制,带来额外的性能开销 绝大多数情况下一次分配,无需扩容,格式化操作更快 内存占用 初始内存占用较低,但遇到大消息时,扩容后可能最终占用与顶格分配相似的内存...如果使用线程本地缓存(threadlocals),在重新部署时,线程本地对象可能无法被及时清理,从而持有旧类加载器的引用,导致内存泄漏(类加载器无法被垃圾回收)。...因此,log4j2在检测到Web应用时禁用线程本地缓存,以防止内存泄漏。这是一种保守但安全的策略。...整个JVM同生共死,因此,在您的场景下,大胆地使用 -Dlog4j2.is.webapp=false 来启用线程本地缓存是安全且正确的做法,无需过分担心内存泄漏问题。

    45110

    记一次JavaWeb网站技术架构总结

    、Session信息放入缓存时要有合理的策略写入 目前生产中使用到的 基于tomcat配置实现的MemCache缓存管理session实现(麻烦) 基于OsCache和shiro组播的方式实现(...缓存优化 引入缓存无非是为了减轻后端数据库服务的压力,防止其"罢工"。...日志处理:系统中日志是必不可少的,但是如何去处理高并发下的日志确是一个技术活,一不小心可能会压垮整个服务。...工作中我们常用到的开源日志ELK,为嘛中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。 消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。...日志服务 消息队列中提到的ELK开源日志组间对于中小型创业供公司是一个不错的选择。 安全优化 以上种种,没有安全做保证可能都会归于零。

    53120

    记一次JavaWeb网站技术架构总结

    、Session信息放入缓存时要有合理的策略写入 目前生产中使用到的 基于tomcat配置实现的MemCache缓存管理session实现(麻烦) 基于OsCache和shiro组播的方式实现(...缓存优化 引入缓存无非是为了减轻后端数据库服务的压力,防止其"罢工"。...日志处理:系统中日志是必不可少的,但是如何去处理高并发下的日志确是一个技术活,一不小心可能会压垮整个服务。...工作中我们常用到的开源日志ELK,为嘛中间会加一个Kafka或者redis就是这么一个道理(一群人涌入和排队进的区别)。 消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。...日志服务 消息队列中提到的ELK开源日志组间对于中小型创业供公司是一个不错的选择。 安全优化 以上种种,没有安全做保证可能都会归于零。

    1.1K110

    从 0 到 1,Java Web 网站架构搭建的技术演进

    缓存优化 引入缓存无非是为了减轻后端数据库服务的压力,防止其"罢工"。...日志处理:系统中的日志是必不可少的,但是如何去处理高并发下的日志却是一个技术活,一不小心可能会压垮整个服务。...消息通讯:点对点通信(个人对个人)或发布订阅模式(聊天室)。 日志服务 消息队列中提到的 ELK 开源日志组件对于中小型创业公司是一个不错的选择。...安全优化 以上种种,没有安全做保证,一切都会归于零: 阿里云的 V** 虚拟专有网络以及安全组配置。 自建机房的话,要自行配置防火墙安全策略。...HTTP 缓存 多级缓存 分布式缓存 连接池 异步并发 03 分布式事务 二阶段提交(强一致) 三阶段提交(强一致) 消息中间件(最终一致性),推荐阿里的 RocketMQ。

    3.4K11

    面试JAVA常被问到的问题(持续更新中)

    缺点是当表数据量过大(五百万条或2.5G大小)的时候要考虑采用缓存,或者主从复制,读写分离,异构复制等数据库层次的优化操作。...腾讯云的日志每一个只有100M大小,一天只有十个日志文件。根据公司的日志架构与BUG的复杂度决定采用什么方式去查日志,能复现的尽量复现,不能复现的查日志。...新域、旧域、永久域 新域:刚创建对象时,其所处的区域; 旧域:被一次引用后,继续被使用,没有被GC的对像所处的区域; 永久域:固定大小,初始为4M;运行程序时,会动态调整大小以满足需求,每次调整,JVM...只要你能保证一个队列只被一个消费者消费,自然就可以保证消息的顺序性 36,如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时怎么解决?...kafka 有两种数据保存策略: 1,按照过期时间保留 2,按照存储的消息大小保留 42,Kafka 的分区策略有哪些?

    87410

    记一次内存溢出的分析经历

    客户端搜集的主机信息,主机策略都是放在缓存中,可能是因为缓存较大造成的,但是通过日志可以看出是因为Thrift服务抛出的堆内存溢出异常与缓存大小无关。...步骤三.再次分析服务端日志 可以发现每次抛出异常的时候都会伴随着几十个客户端在向服务端发送日志,往往在发送几十条日志之后,服务崩溃。可以假设是不是堆内存设置的太小了?...> 这个假设是正确的,客户端请求数据不是用thrift IDL定义的话,无法正常序列化,序列化出来的数据会异常的大!大到超过1个G的都有。 步骤九....thrift会抛出错误日志,并直接没有读这个消息,返回false,不处理这样的请求,将其视为错误请求。 1.国外有人对thrift一些server做了压力测试,如下图所示: ?...增加堆内存大小直接内存,防止因为服务端缓存太大,导致thrift服务没有内存可申请,无法处理请求。

    1.3K10
    领券