- 博客(419)
- 资源 (32)
- 收藏
- 关注
原创 解决分布式事务,Seata真香!
年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了,并邀请我等的朋友加入,分享八股文、项目经验、管理经验等,帮助大家提升技能,安稳度过这个寒冬,快加入我们吧!在开始介绍Seata分布式框架之前,我们先来了解一下,什么是分布式事务?在传统的单体应用中,事务是由单个数据库管理的,一个事务中的所有操作要么全部成功,要么全部失败。但是,在分布式系统中,一个事务可能涉及多个数据库,这些数据库可能位于不同的服务器上。
2024-03-17 23:03:13
1073
原创 狂肝100小时,各大厂20W字面试真题分享
看到自己辛苦花时间整理的题目,可以让大家面试成功,我心里面也特别开心,很多童靴还主动给我补充新的题目,所以我也会坚持不断完善下去,以便可以帮助到更多的童靴成功面试。我听到之后,终于意识到问题出现在哪里,Java技术栈从Java基础、数据库、中间件、微服务、算法、计算机网络、操作系统、设计模式、项目实践等,涉及的知识点太多了,有很多童靴问我,有没有大厂的面试集合,可以针对性备考一下,我说面试题网络上有很多,随便搜索一下,就一大把吧。他们回复说,都是针对各个知识点的题目,想要吃透,
2024-01-07 18:15:44
439
原创 长见识!!!Java中除了消息队列之外,竟然还能这样实现异步任务
在Java中,"event"(事件)通常用于指代一种在特定条件下触发的通知或者信号。在Java编程中,事件代表着程序中发生的某种动作或改变,例如用户的交互操作、状态的转换,或者其他外部因素触发的通知。Java中的事件通常与事件监听器(Event Listener)和事件处理器(Event Handler)一起使用,以便在特定事件发生时,能够触发相应的响应和处理。
2024-01-03 21:50:32
596
原创 酷狗高级Java面试真题
需要注意的是,在创建自定义starter时,要考虑良好的命名规范和清晰的文档说明,以便其他开发人员能够方便地使用和理解你的starter。不过需要注意的是,字节码增强技术相对复杂,需要对字节码结构和操作有一定的了解,同时也需要小心处理字节码,避免引起不可预料的问题。ASM是一个轻量级的Java字节码操作框架,它可以用来直接编辑Java字节码,包括添加新的字段、方法和修改现有的类。MySQL的查询优化器是负责决定如何执行查询的组件,它的主要任务是分析查询语句,生成执行计划,并选择最优的执行路径来获取数据。
2024-01-03 21:37:50
818
原创 滴滴高级Java面试真题
在JDK 1.8中,当HashMap的某个桶(bucket)中的链表长度超过阈值(默认为8)时,会将链表转换为红黑树,以提高在极端情况下的性能表现。因此,对于使用HashMap的应用程序来说,尤其是在需要处理大规模数据或并发访问的情况下,JDK 1.8中的HashMap改进和性能优化为提升程序的性能和稳定性提供了有力支持。AOF文件中包含了可以重放来还原数据集的写命令。总的来说,RDB和AOF持久化各有优缺点,可以根据具体的业务需求和数据特点选择合适的持久化方式,甚至结合两者来提高数据的安全性和可靠性。
2024-01-02 22:25:15
915
原创 华为高级Java面试真题
在安全点上,所有线程都会被暂停,这样可以确保在进行垃圾回收等需要全局一致性的操作时,不会有线程在执行代码,从而保证了操作的一致性和准确性。这样做的好处是可以确保类加载的顺序和一致性,避免同一个类被不同的类加载器加载多次。: 尽管双亲委派模型有利于保证类加载的一致性和避免类的重复加载,但有时也需要打破这一模型,例如在某些特定的应用场景下需要动态加载类或者实现类加载器的隔离等。总之,安全点和安全区域在JVM中的作用是确保了垃圾回收等全局性操作的准确性和一致性,并通过减少安全点的数量来提高程序的执行效率。
2024-01-02 22:14:22
826
原创 京东高级Java面试真题
在微服务架构中,API 网关通常扮演着流量入口的角色,负责请求的路由、权限认证、协议转换、流量控制等多项功能。设计高可用性和灾难恢复的系统是一个持续的过程,需要根据系统的具体需求和业务目标来定制解决方案。此外,随着技术的发展和组织需求的变化,系统设计需要不断地进行评估和更新。API 网关的设计和实现需要根据具体的业务需求和安全要求来定制,以确保既能有效地管理复杂的路由,又能提供强大的权限认证和安全保障。等的朋友加入,分享八股文、项目经验、管理经验等,帮助大家提升技能,安稳度过这个寒冬,快加入我们吧!
2024-01-02 22:08:51
839
原创 字节高级Java面试真题
JMM对并发编程的影响是深远的,它为开发者提供了一套规则和保证,使得并发程序的编写变得可预测,并且可以在不同的JVM实现和硬件平台上保持一致的行为。然而,正确理解和使用JMM也是并发编程中的一个挑战,开发者需要确保对共享变量的访问和修改是安全的,并且要意识到潜在的竞争条件和内存一致性错误。是JMM中最核心的概念之一,它定义了一个全局的顺序,规定了在没有其他同步手段的情况下,一个操作的结果必须对另一个操作可见。自定义类加载器可以用于许多高级场景,例如加载网络上的类,实现热部署,或者加载加密的类文件等。
2024-01-01 21:10:53
358
原创 360高级java面试真题
服务器使用 Selector 轮询就绪的 Channel,并根据就绪的事件进行相应的处理。总之,在Java中处理TCP粘包和拆包的问题通常涉及到设计消息格式、消息长度的表示以及消息的解析等方面。在接收消息时,先读取消息头表示的长度,然后再读取指定长度的消息内容,从而避免了粘包和拆包的问题。一种常见的处理方法是在消息的开头定义一个固定长度的消息头,用来表示消息的长度,然后根据消息头指定的长度来截取完整的消息内容。在消息的开头使用固定长度的消息头来表示消息的长度,然后根据消息头指定的长度来截取完整的消息内容。
2024-01-01 21:09:16
380
原创 百度高级Java面试真题
索引覆盖扫描(Index Covering Scan)是MySQL中的一种查询优化技术,指的是当一个查询可以完全通过索引来获取所需的数据,而无需读取数据行本身的情况。由于索引通常比完整的数据行小很多,且存储在连续的磁盘空间上,索引覆盖扫描可以显著提高查询效率,减少I/O操作。遵循这些最佳实践可以显著减少内存泄露的发生,但需要注意的是,即使是最谨慎的程序员也可能在复杂的应用程序中遇到内存泄露,因此定期的性能监测和分析是必不可少的。然而,需要注意的是,查询优化是一个迭代过程,可能需要多次调整和测试。
2024-01-01 21:07:40
1092
原创 字节高级Java面试真题
JMM对并发编程的影响是深远的,它为开发者提供了一套规则和保证,使得并发程序的编写变得可预测,并且可以在不同的JVM实现和硬件平台上保持一致的行为。然而,正确理解和使用JMM也是并发编程中的一个挑战,开发者需要确保对共享变量的访问和修改是安全的,并且要意识到潜在的竞争条件和内存一致性错误。是JMM中最核心的概念之一,它定义了一个全局的顺序,规定了在没有其他同步手段的情况下,一个操作的结果必须对另一个操作可见。自定义类加载器可以用于许多高级场景,例如加载网络上的类,实现热部署,或者加载加密的类文件等。
2023-12-29 21:28:49
848
原创 阿里高级Java面试真题
在Java中,注解(Annotation)是一种用于类、方法、变量、参数等元素的元数据形式。注解本身不直接影响程序的操作,但可以被注解处理器(Annotation Processor)在编译时或运行时读取和处理,来实现特定的功能。要实现一个自定义注解处理器,你需要完成以下几个步骤:1. 定义注解首先,你需要定义一个或多个注解类型。注解的定义使用@interface关键字,可以指定一些元素作为注解的属性。
2023-12-29 00:32:46
983
原创 被辞退了,因为小数点计算错误
今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了,并邀请我等的朋友加入,分享八股文、项目经验、管理经验等,帮助大家提升技能,安稳度过这个寒冬,快加入我们吧!今天我一个同事跟我吐槽,说他朋友因为程序问题,被公司辞退了,而且还没有任何补偿。我一听马上问,是删库跑路了嘛,这么严重。
2023-12-27 22:44:13
908
原创 一个让你变强的神级IDE插件,免费高效
今年IT寒冬,大厂都裁员或者准备裁员,作为开猿节流主要目标之一,我们更应该时刻保持竞争力。为了抱团取暖,林老师开通了,并邀请我等的朋友加入,分享八股文、项目经验、管理经验等,帮助大家提升技能,安稳度过这个寒冬,快加入我们吧!今天给大家分享一款IDEA智能插件,中文名字叫做“”,英文名称叫做“”,它是阿里云出品的一款基于通义大模型的智能编码辅助工具,,并针对阿里云 SDK/OpenAPI 的使用场景调优,助力开发者高效、流畅的编码。。废话不多说,我们马上来介绍一下这款工具的用法。
2023-12-27 22:35:56
1402
原创 面试官:SpringBoot项目中,要如何1秒实现异步接口?
想象一下,你在一家餐厅吃饭,服务员每次只接待一个顾客,直到他们的整个点单吃饭结账过程结束,服务员才会鞠躬回应下一位在队列中等待的顾客。异步编程是一款时尚的超能工具腰带,在我们的代码战斗中,它让一个任务挂起而你去攻击另一个,直到全部敌人(任务)被消灭(完成)。进入异步接口,就像是把这家餐厅升级成了一个快速自助餐厅,其中的服务员(服务器线程/资源)可以同时接待多个顾客,每个顾客点单后可以自由活动,当美味的佳肴准备好了,服务员会召唤他们。就像在画布上作画,选择合适的工具和色彩,才能绘制出满意的作品。
2023-12-27 22:20:06
937
转载 Java IO面试题
为了避免CPU空转,引进代理(select 和poll,两种方式相差不大),代理可以观察多个流I/O事件,空闲时会把当前线程阻塞掉,当有一个或 多个I/O事件时,就从阻塞态醒过来,把所有IO流都轮询一遍,于是没有IO事件我们的程序就阻塞在select方法处,即便这样依然存在问题,我们从select出只是知道有IO事件发生,却不知道是哪几个流, 还是只能轮询所有流,Selector 的出现解决了这施起的问题,非阻塞模式下,通过Selector,我们的线程只为已就绪的通道工作,不用盲目的重试了。
2023-12-21 22:25:48
53
转载 Java JVM面试题
是一个新生代收集器,也是复制算法的收集器,同时也是多线程并行收集器,与PartNew 不同是,它重 点关注的是程序达到一个可控制的吞吐量(Thoughput ,CPU 用于运行用户代码 的时间/CPU 总消耗时 间,即吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间)), 高吞吐量可以最高效率地利用 CPU 时间,尽快地完成程序的运算任务,主要适用于在后台运算而不需要太多交互的任务。占用一块非常小的空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。采用标记-清除的算法来进行垃圾回收。
2023-12-21 22:25:17
46
转载 Java 异常面试题
Java的反射 (reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一 个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。如果同时有很多异常抛出,那可能就是异常链,就是一个异常引发另一个异常,另一个异常引发更多异 常, 一般我们会找它的原始异常来解决问题,一般会在开头或结尾,异常可通过initCause串起来,可以通过自定义异常。(2)throws 主要是声明这个方法会抛出某种类型的异常,让它的使用者要知道需要捕获的异常的类型。
2023-12-21 22:24:46
37
转载 Java多线程面试题
如果测试成 功,表示线程已经获得了锁,如果失败,则需要测试下Mark Word中偏向锁的标示是否已经设置成1 (表示当前时偏向锁),如果没有设置,则使用cas竞争锁,如果设置了,则尝试使用cas将对象头的偏向 锁只想当前线程。然后CPU再调度其它线程。notify()也是Object类的通用方法,也要在同步方法或同步代码块内调用,该方法用来通知哪些可能灯光 该对象的对象锁的其他线程,如果有多个线程等待,则随机挑选出其中一个呈wait状态的线程,对其发 出 通知 notify,并让它等待获取该对象的对象锁。
2023-12-21 22:23:59
47
转载 Java集合面试题
HashMap中,如果key经过hash算法得出的数组索引位置全部不相同,即Hash算法非常好,那样的话, getKey方法的时间复杂度就是O(1),如果Hash算法技术的结果碰撞非常多,假如Hash算极其差,所有的Hash算法结果得出的索引位置一样,那样所有的键值对都集中到一个桶中,或者在一个链表中, 或者在一个红黑树中,时间复杂度分别为O(n)和O(lgn)。经过观测可以发现,我们使用的是2次幕的扩展(指长度扩为原来 2倍),所以,元素的位置要么是在原位置,要么是在原位置再移动2次幕的位置。
2023-12-21 22:23:16
36
转载 Java基础面试题
String 和 StringBuffer 、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新 的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer 、StringBuilder 可以在原有对象的基 础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。简而言之,深拷贝把要复制的对象所引用的对象都复制了一遍。
2023-12-21 22:14:33
30
原创 2023年Java初/中/高/架构后端真实面试题大全(有详细答案)--高频/真题
学完了某个知识点之后,你可以去看看对应的八股文和知识点总结(https://www.wolzq.com/)。多面试,不要害怕失败,多总结经验。尽早准备,不论是找工作前、面试前还是面试后。如果是求职目标是中小厂、国企的话,算法相对来说不是那么重要。如果你的学历比较一般的话,格外注意要把重心放在自己的项目经历上。熟悉自己的简历。电话和视频面试很平常,面试前提前准备一下。复盘!!!不管是面试失败还是成功,都要养成复盘的好习惯。
2023-12-07 00:12:37
4165
2
原创 史上最全计算机网络大纲
随着现在互联网的发展,计算机网络处于一个越来越重要的地位,那如何学好计算机就至关重要了,本文精准的点出计算机网络的知识点、考点、重点。
2022-09-19 21:10:55
3205
原创 亿级大表如何修改表结构【MySQL】
一、问题背景随着数据库数据量进一步增加,最大的表目前已经达到10亿+了,虽然已经进行的数据库的分库分表(采用阿里云的polardb),但是大表要改表结构的时候,还是会出现死锁的情况,系统会收到严重影响。二、深入讨论那我们大表该如何修改表结构呢?网络搜索了一圈,基本都围绕了两种方法进行:第一种是在用户访问量少的时间段,进行表结构修改。第二种是采用copy替换原表的方法。其实相对上述两种方式,还有一种方法可以从业务上面处理,就是在设计表结构的时候,根据现有业务和未来规划的业务,提前预留足够多
2021-10-26 10:53:23
2322
原创 MySQL如何破解limit 100w+的分页查询
一、问题背景我们在业务开发的时候,经常会遇到table列表的需求,这也是最基本的需求之一。大多数都是根据输入条件查询对应数据,然后对数据进行分页显示。数据量小的时候基本没啥问题,但是如果数据量在千万级别以上,这个时候limit就非常慢了。二、实验数据我们以一个大概4亿的表来进行测试,实验表数据如下所示:select count(1)from order_info数据量:441182739MYSQL:配置:64核256GB版本:MySQL 5.7三、优化前我
2021-08-19 18:27:24
735
2
原创 程序猿如何高效的学习英语
大家好我是林志强,一个不安分的程序猿。作为一个英语四级都没过的英语智障,被逼无奈又开始再一次的英语学习之旅了。之前学习英语都是下个百词斩啊、英语流利说之类的APP,然后开始狂背单词,然后就没然后了。我相信很多童靴也有跟我一样的经历,觉得自己英语不好,然后就天天背单词,背着背着就放弃了,很少有人能坚持到最后。至于我为什么会一遍又一遍的学习英语,道理很简单也很现实,我们平时用到的开发语言就是歪国人发明出来的。主流的框架和官网资料也都是英语,就连程序报错也是英文,如果不会英语就非常尴尬,得先翻译一下,理解
2021-08-06 18:55:41
2292
原创 12 Steps to Better Code【改善代码的12步】
今天给大家翻译一篇由大名鼎鼎stackoverflow创始人写的:关于如何改善代码的12点建议。下面我们就来领略一下大牛见解。一、Do you use source control?源代码控制系统,说白了就是我们常用的SVN和Git。他们的重要性,博主就不多介绍了。想象一下,没有源代码控制系统,整个团队会发生事情:版本没办法控制、没办法回滚版本、没办法合并别人的代码,没办法查看冲突点,想想简直就是一场噩梦。二、Can you make a build in one step?代码开发完毕之后
2021-06-21 21:19:00
388
原创 什么是监控报警以及如何实现
一、如果人没有皮肤会怎么样?在如何保障系统的稳定运行中,监控报警可谓重中之重,没有监控报警的系统,就等同于没皮肤的人类一样,弱不禁风。举个最简单的例子,如果能够在第一时间发现得了癌症,甚至在萌芽阶段就检查出来,那致死率的概率可以下降非常多,但是如果等身体反应出来的时候,那大概率是到了晚期,基本没治了。所以如果能在系统还没影响用户使用之前,及早的发现问题并发送报警,那对用户而言,影响程度可以接近0。那我们接下来就来说说系统应该设置哪些指标的报警。二、身体每个部分都一样重要嘛?在开始将这一部分的内容之前
2021-05-29 14:11:09
4167
原创 Git Flow 的正确使用姿势
一、背景:大多数公司为了可以快速迭代,一般只有两个环境,一个是测试环境,另外一个是线上环境。这个时候问题就来了,如果线上出现bug要如何修复才不会影响当前版本测试。如果多个版本同时迭代开发,如何才能保证测试上线互不影响呢?童鞋们可以先想想,后面会针对上述场景,进行详细的说明。二、当前状况2.1 当前环境当前有两个环境:测试环境、生产环境。两个环境都是采用k8s集群搭建而成2.2 git分支 master:生产环境对应分支代码、分支会永久存在。 dev:开发
2021-05-07 21:55:35
678
原创 MySQL中max_execution_time引发的血案
一、场景问题今天MySQL存储节点突然收到cpu持续100%的报警,持续时间长达数个小时。在控制台中通过show processlist查看当前进程,发现很多一模一样的SQL一直在运行,执行时间都超过数个小时。二、疑问分析一般对用户而言,都会有一个超时时间,接口不可能无限等待,如果一直等待体验也不好。所以都会设置一个超时时间,不管是前端请求的超时时间,亦或者是nginx的请求超时时间。但大家思考过这样一个场景没,当http的请求断开,那接口中涉及到的SQL是会继续执行,还是会断开链接呢?三、
2021-05-07 21:51:31
3985
4
原创 看完,你也能用多线程让接口提升5倍速!
一、应用场景酒店提供给各个渠道商房间价格是不一样的,我们需要轮询所有的渠道商接口,给用户返回一个最低的价格,前端会将这个价格显示给用户。二、接口要求实时查询去哪儿、携程、飞猪、艺龙、同程等渠道的今日房价,计算并返回当日最低价。三、接口难点去哪儿、携程、飞猪、艺龙、同程因为是走外网,网络会有一定的延迟。如果同步一个个获取价格数据,接口会很慢。四、实现4.1 简单实现循环调用各个渠道今日房价,对比每个渠道价格,计算并返回最低价格。package com.fourkmiles
2021-04-02 19:58:51
617
原创 做了这个优化,我们系统性能提升了几倍
一、背景:我们的系统主要功能是从亚马逊获取数据,存入数据库中,最后做数据分析。这期间最大的一个问题是:跨境网络传输,网络不稳定,请求会发生大量的5**错误,导致某一些用户的数据获取不到,因为一直失败重试,又恶性导致触发亚马逊服务限流。二、第1版优化:当前系统架构:为了解决当前数据获取问题,需要将获取数据的服务迁移到美国地区,然后将获取到的数据传输回国内服务器,最终入库。不管怎么改架构,都要面临一个问题,都必须进行跨境数据传输,网络不稳定,带宽限制问题肯定会存在。所以最核心的问题.
2021-02-09 16:51:34
516
原创 分享一次险象迭生的系统迁移【真实案例】
一、背景因为系统数据量持续性增大,腾讯云的MySQL已经达到瓶颈,无法进行升级操作,如果自己搭建一个分库分表系统,速度和可靠性上面都会很差,综合各方面考虑,最后决定采用阿里云的PolarDB-X分布式数据库。但是迁移整个系统,工作量和流程不是简简单单就可以搞定,需要系统性的思考,完善的迁移方案,最后才可以实施。在开始今天的文章之前,童靴们可以自己思考一下,假如是你主持这场迁移,你需要考虑哪些内容。二、挑战挑战1:数据库确定了,但是又有一个大问题,因为腾讯云和阿里云不是同一个云服务商,所以
2021-02-09 16:49:55
547
1
原创 Redis限流正确姿势指导指南,结尾附带Bug小惊喜,不要错过哦~
一、限流算法限流算法经典的一般有四种:计数器(固定窗口)算法、滑动窗口算法、漏桶算法、令牌桶算法。redis分布式限流来自林老师带你学编程00:0001:34关于它们的实现网上有一堆的资料,有兴趣的可以百度、Google一下,下面是四种算法大致总结。算法 确定参数 空间复杂度 时间复杂度 限制突发流量 平滑限流 分布式环境下实现难度 固定窗口 计数周期T、周期内最大访问数N 低O(1)(记录周期内访问次数及周期开始时间 低O(1)
2021-02-09 16:48:21
551
1
原创 开发神器,拿走不谢【Java8 Stream】
每一种开发语言都提供了丰富的工具库,作为当今最流行的的开发语言之一,Java肯定也不例外。但是今天不讲Java集合工具类,我们来讲讲Java8的特性之一 Stream。用好Stream,可以极大提高我们的开发效率,好了开始今天的课程~java8流操作来自林老师带你学编程00:0000:46收录于话题#java2个一、循环过滤我们平常开发最经常使用的就是循环、排序、统计之类的,下面我们以一个实际的例子来演示说明。从一个List过滤空字符串并输出不含空字符的数据List<Stri
2021-02-09 16:46:16
2964
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人