自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 实战进阶,阿里开源Java程序员进阶笔记,跳槽面试绝对用得上~

程序员要如何成长这个问题,一直是各大网站、论坛的热点。对此网络上众说纷纭,一千个读者里面就有一千个哈姆雷特。LZ觉得想要让个人技能成长速度,大于公司规模或业务的成长速度,不断优化自己,成为一名“不错”的程序员主要需要掌握以下学习方法与实战技巧。学习方法掌握良好的学习心态掌握系统化的学习方法知识内化成能力广度和深度的选择

2022-11-22 16:45:40 216 1

原创 爱不释手,GitHub 上标星 86K 的并发编程笔记究竟有什么魅力?

并发编程的目的是为了让程序运行得更快,但同样也伴随着很多挑战!如果你是 Java 开发,想要涨薪并提高自己的技术水平,那并发编程可得好好搞一搞!

2022-10-09 11:58:31 404

原创 算法统治者,打破传统方式,即将爆火的 Leetcode 刷题指南

网上对 LeetCode 的评论大多都是正面的,称 LeetCode 为计算机科学领域,最赫赫有名的题库毫不为过。初学者可以在这里得到提升,资深者也能在此受益匪浅。LeetCode 支持 14 种编程语言,包含上千道题目,分为简单、中等、困难三个级别。全刷完显然要耗费大量的时间和精力,那么我们以何种方式“打开”LeetCode 最为高效?

2022-10-09 11:46:12 289

原创 GitHub上乱杀,阿里P8大咖整理的JDK源码笔记,从源码入手,认识并发编程

对于人脑的认知来说,“代码一行行串行”当然最容易理解。但在多线程下,多个线程的代码交叉并行,要访问互斥资源,要互相通信。作为开发者,需要仔细设计线程之间的互斥与同步,稍不留心,就会写出非线程安全的代码。正因此,多线程编程一直是一个被广泛而深入讨论的领域!如果遇到复杂的多线程编程场景,就需要开发者基于这些简单的机制解决复杂的线程同步问题。

2022-10-06 14:26:12 168

原创 SpringBoot 保姆级笔记,秋招跳槽阿里,手握此等利器,我并不是很慌

本专栏共 7 个模块,28 个节点,介绍 Spring Boot 框架所提供的系统开发解决方案以及源码分析。一、Spring Boot 快速入门介绍 Spring 家族的整个生态系统和技术体系,通过系统分析通过 Spring Boot 构建一个完整 Web 应用程序的功能特性和开发流程。二、Spring Boot Web 开发这部分详细介绍 Spring Boot 中最具特色的配置体系和自动配置机制,并详细给出如何使用、管理和定制配置项的实现方法。三、Spring Boot 数据访问。

2022-10-06 14:11:25 705

原创 堪称神仙级Spring Cloud Alibaba 全套笔记,喜提今年阿里offer

Spring Cloud 早期支持的许多 Spring Cloud Netflix 组件,比如 Eureka 2.x、Ribbon、Zuul 等,这些都是著名的微服务组件,而随着它们的停止维护更新,Spring Cloud Alibaba 强大的技术栈就体现价值了!去年底就已经在写了,耗时大半年之久,告别大部分周末、节假日的休息时间,多少个日日夜夜,第一期《Spring Cloud Alibaba 实战笔记》终于出炉了!如果你还没有系统的学习资料,有需要学习的小伙伴关注私信我即可领取。

2022-10-06 14:00:34 158

原创 Java 中 synchronized 关键字到底怎么用,这个例子一定要看

同步是一个控制多个线程访问任何共享资源的进程,可以避免不一致的结果。使用同步的主要目的是避免线程的不一致行为,防止线程干扰。在 java 中可以使用 synchronized 关键字实现同步的效果,synchronized 只能应用于方法和块,不能应用于变量和类。synchronized 关键字是使块或方法同步的唯一方法。synchronized 关键字提供了锁的特性,它确保线程之间不会出现竞争条件。被锁定后,线程只能从主存中读取数据,读取数据后,它会刷新写操作,然后才能释放锁。

2022-10-06 13:54:41 406

原创 上班都在刷八股文,老板都想要一份?Alibaba 架构师的”Java 面试突击手册“到底有多火?

今天偶尔刷刷牛客看到这,很多小伙伴在上班刷八股文!真行啊?能火到这种程度!那我就把前几天在 Github 限时开源的 Java 突击手册分享给大家!其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈共有 1000+道面试题。

2022-09-28 14:15:05 249

原创 全是科技与狠活,Alibaba 最新出品 711 页 Java 面试神册,这才是秋招的正确方向

由于手册有足足 700 多页,全部为大家展示出来也不太现实,这里就不把篇幅继续拉长了,需要完整版的小伙伴都可以来找我拿一份。

2022-09-28 13:18:23 99

原创 头一次见 24W 字的 SpringBoot 从入门到实战文档,这也太全了吧

SpringBoot 基于 Spring4.0 设计,不仅继承了 Spring 框架原有的优秀特性,而且还通过简化配置来进一步简化了 Spring 应用的整个搭建和开发过程。另外 SpringBoot 通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

2022-09-28 13:11:03 942 3

原创 太上头了,靠着这份阿里大咖整理的 Redis 实战宝典,我成功吊打了面试官

上次面试阿里跪在了 Redis 上!随便呈上几道,看看大家能否答出来:redis 为什么是 key,value 的,为什么不是支持 SQL 的?redis 是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看)redis 的持久化开启了 RDB 和 AOF 下重启服务是如何加载的?(10 个人 9 个回答错误)redis 如果做集群该如何规划?AKF/CAP 如何实现和设计?10 万用户一年 365 天的登录情况如何用 redis 存储,并快速检索任意时间窗内的活跃用户?

2022-09-28 13:06:34 324

原创 动图图解 | UDP就一定比TCP快吗?

TCP为了实现可靠性,引入了重传机制、流量控制、滑动窗口、拥塞控制、分段以及乱序重排机制。而UDP则没有实现,因此一般来说TCP比UDP快。TCP是面向连接的协议,而UDP是无连接的协议。这里的"连接"其实是,操作系统内核在两端代码里维护的一套复杂状态机。大部分项目,会在基于UDP的基础上,模仿TCP,实现不同程度的可靠性机制。比如王者农药用的KCP其实就在基于UDP在应用层里实现了一套重传机制。对于UDP+重传的场景,如果要传超大数据包,并且没有实现分段机制。

2022-09-28 11:53:26 154

原创 新来个阿里 P7,仅花 2 小时,撸出一个多线程永动任务,看完直接跪了,真牛逼

今天教大家撸一个 Java 的多线程永动任务,,我把里面涉及到多线程的代码抽离出来,然后进行一定的改造。里面涉及的知识点非常多,特别适合有的同学学习,或者可以直接拿到项目中使用。

2022-09-28 11:51:32 82

原创 你还在用@Autowired和@Resource?

先透个底:。先回顾一下Spring的3种依赖注入。@Autowired默认按类型装配,@Resource默认按名称装配,当找不到与名称匹配的bean时,才会按类型装配。而@Qualifier和Autowired配合使用,指定bean的名称,也可以做到按名称装配。IDEA中直接在变量上使用 @Autowired会发现警告提示:。原因是官方建议我们使用构造器注入方式,这种方式存在明显的弊端,比如:注入对象不能用final修饰、无法发现NullPointException的存在。构造器依赖注入通过容器

2022-09-28 11:37:42 362

原创 面试题 17.09. 第 k 个数 :「优先队列」&「多路归并」

因此我们可以使用三个指针来指向目标序列 arrarrarr 的某个下标(下标 000 作为哨兵不使用,起始都为 111),使用 arr[下标]×系数arr[下标] \times 系数arr[下标]×系数() 代表当前使用到三个有序序列中的哪一位,同时使用 idxidxidx 表示当前生成到 arrarrarr 哪一位数值。从解法一中不难发现,我们「往后产生的数值」都是基于「已有数值」而来(使用「已有数值」乘上 333、555、777)。注意,不是必须有这些素因子,而是必须不包含其他的素因子。

2022-09-28 11:34:30 199

原创 658 页互联网大厂 Java 高级工程师核心面试解析

金九银十所以提前做好准备,投简历、顺利面试,拿下心仪的 offer,在家闭关修炼 30 天后,也总算取得自己想要的成功,成功定级了阿里 P7。以下主要分享,均可以免费分享,Java 集合 22 题及答案解析JVM 与调优 21 题及答案解析并发编程 28 题及答案解析Spring 25 题及答案解析23 种设计模式解析Spring Boot25 题及答案解析分布式高并发架构解析(消息队列,分库分表,事务,高可用,微服务架构)MySQL 高频 20 题解析Redis45 题及答案解析。

2022-09-25 11:20:51 141

原创 Github 辗转牛客,最新 Java 面试 1658 核心讲,助力百人入大厂

如果你不停地加班。却很少冒险,也很少学习,那你极大可能会陷入到内卷中。为什么这么说呢?所谓内卷化,指一种社会(文化模式)某一发展阶段达到某种确定的形式之后,这种形式便停滞不前,难以转化为另一种高级模式的现象,从而把自我锁死在低水平状态上,周而复始地循环。

2022-09-25 11:15:19 74

原创 金九银十必备,这份 java 面经让你轻松拿下 45kOffer

我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝靠这份 PDF 拿下众多大厂的 offer,今天在这里总结分享给到大家!

2022-09-25 11:11:44 94

原创 阿里封神之作,500 页高并发手册(基础 + 实战)通俗易懂

高并发是指在同一个时间点,有很多用户同时的访问 URL 地址,比如:淘宝的双 11,双 12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是 DDOS 攻击,再屌丝点的说法就像玩撸啊撸被 ADC 暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝。几乎每个 JAVA 后端开发程序员,都会在面试时碰到高并发的问题。也是每个程序员必备技能。回答好了这个问题,才能说对 JVM、Mysql、Redis 等的理解到了一个新的高度。

2022-09-25 11:07:16 123

原创 程序员跳槽一次到底能涨多少?今天带你见识到跳槽天花板

在此展示一套学习笔记 / 面试手册,准备跳槽的朋友可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的 Java 技术栈,非常珍贵,肝完进大厂!妥妥的。

2022-09-25 10:59:38 173

原创 亿级异构任务调度框架设计与实践

对于任务的切换,我们使用了 RedoLog 的方式来保存任务的状态,一个任务可以被分为多个阶段,对应任务执行的状态机,在每个阶段执行时都对其进行内存 Checkpoint 的更新和 RedoLog 的更新,RedoLog 是持久化到之前提到的分布式文件系统中,使用高性能的 Append 的方式进行顺序写入,在 Partition 迁移到新的 Worker 后,新的 Worker 在对 RedoLog 进行加载,就可以完成任务状态的恢复。对于数据加工任务因为是常驻任务,调度频率低于类似告警类的定时任务。

2022-09-25 10:57:28 179

原创 为什么 kafka 性能下降这么快,我用 RocketMQ 的时候不会这样子

不同消费者下的消费者,可以同时消费同一个 topic 下的相同的队列的消息。每个 slot 中放的指针值是索引在 indexfile 中的偏移量,也就是后面 index 的位置,而 index 中存放的就是该消息在 commitlog 文件中的 offset,每个 index 的大小是 20 字节,所以根据当前索引是这个文件中的第几个偏移量,也就很容易定位到索引的位置,根据前面的固定大小可以很快把真实坐标算出来,以此类推,形成一个链表的结构。2000w 个 index 条目,每个 20 字节。

2022-09-25 10:56:31 395

原创 【微服务】- 服务调用 - OpenFeign

OpenFeign 全称 Spring Cloud OpenFeign,它是 Spring 官方推出的一种声明式服务调用与负载均衡组件,它的出现就是为了替代进入停更维护状态的 Feign。Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便。Feign使用http远程调用方法就好像调用本地的方法,感觉不到是远程方法。

2022-09-25 10:52:53 327

原创 Lock 锁底层实现

acquireQueued(addWaiter(Node.EXCLUSIVE), arg))//进入等待队列,继续不断尝试获取锁,直到抢到锁则弹出队列,否则判断线程的状态是否需要挂起。当前锁已经被占用, 线程会进入等待队列,不断地抢锁,抢到锁直接从等待队列弹出,否则判断线程的状态是否需要挂起(阻塞) ,这里循环抢锁,不断调用了尝试获取锁的方法,也利用了CAS思想。加锁使用lock() 方法,解锁使用 unlock() 方法。, 可以获取锁的状态,开启锁,释放锁,通过设置可以中断线程的执行,更加灵活。

2022-09-25 10:52:12 309

原创 2>&1到底是什么意思?

文件描述符(File descripter)就是一个整数,这个整数唯一标识了操作系统中某个被打开的“文件”。

2022-09-25 10:49:58 179

原创 自定义的配置文件,如何注入到SpringBoot?

在实际的项目开发过程中,我们经常需要将某些变量从代码里面抽离出来,放在配置文件里面,以便更加统一、灵活的管理服务配置信息。比如,数据库、eureka、zookeeper、redis、mq、kafka 等服务组件的连接参数配置,还有我们自定义的项目参数配置变量。当然,实际上根据当前的业务需求,我们往往会自定义参数,然后注入到代码里面去,以便灵活使用!SpringBoot 项目在启用时,首先会默认加载bootstrap.properties或者bootstrap.yml这两个配置文件(这两个优先级最高);

2022-09-23 10:05:32 47

原创 Sentinel参数设置不当导致日志数量持续增长分析

Sentinel是阿里巴巴开源的分布式限流平台,目前在Github有18.4k的star,Github地址:他主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性由于在系统启动时指定了为true,所以日志文件名称会包含pid,但是由于系统重启pid会发生变化,所以在删除文件时根据文件前缀,没法查找到上一个pid的日志文件,因此就会产生大量的日志文件修复方式。

2022-09-23 10:00:57 1085

原创 nacos配置中心如何起效的

Nacos服务配置请看上一个文https://java-er.com/blog/nacos-server-config/常规我们的配置文件都写在application.yml里,但是nacos提供了一个方案将配置文件可以写在nacos服务器统一管理。

2022-09-23 09:59:31 517

原创 微服务架构,通俗易懂讲解

微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。你可以将其看作是在架构层次而非获取服务的,类上应用很多SOLID原则。微服务架构是个很有趣的概念,它的主要作用是将功能分解到离散的各个服务当中,从而降低系统的耦合性,并提供更加灵活的服务支持。概念:把一个大型的单个应用程序和服务拆分为数个甚至数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。

2022-09-23 09:57:22 108

原创 图解 Kafka 源码实现机制之客户端缓存架构

这里,我们一起来总结一下这篇文章的重点。1、带你先整体的梳理了 Kafka 客户端消息批量发送的好处。2、通过一个真实生活场景类比来带你理解 RecordAccumulator 内部构造,并且深度剖析了消息是如何在客户端缓存的,以及内部各组件实现原理。3、带你深度剖析了 Kafka 客户端非常重要的 BufferPool 、CopyOnWriteMap 的实现原理。

2022-09-23 09:55:05 1018

原创 那些年我们经常唠嗑的SQL优化

我们出去面试经常会被问到数据库这一块,而涉及数据库这一块问的最多的就是数据库优化。那么我们怎么做才能做好优化问题呢?今天我们就来聊聊数据库优化那些事。数据库表设计sql语句优化数据库大型项目拆分为小项目,每个项目有自己独立的数据库原来所有数据表都放在一个数据库节点上,所有的读写请求也都发到这个MySQL上面,所以数据库的负载太高。如果把一个节点的数据库拆分成多个MySQL数据库,这样就可以有效的降低每个MySQL数据库的负载。分表分库(取模分表、水平分表、垂直分表)

2022-09-23 09:52:39 142

转载 Docker笔记:一篇学会Docker网络知识

这个时候可以把docker0看作为路由器,每个容器可以看作为连接路由器的网络设备,docker0用来管理每个容器的和docker0通信的映射关系。当我们的服务器成功安装docker并启动进程后,就会产生一个docker0的虚拟网桥,本质为Linux网桥(默认为桥接模式),使用的通信技术是Veth-pair技术.Docker 使用的是Liunx的桥接原理,宿主机中是一个Docker容器的网桥 docker0。Docker 中所有的网络接口的是虚拟的,虚拟的转发效率高,2、测试容器和宿主主机的通信。

2022-09-23 09:50:14 199

原创 亿级异构任务调度框架设计与实践

对于任务的切换,我们使用了RedoLog的方式来保存任务的状态,一个任务可以被分为多个阶段,对应任务执行的状态机,在每个阶段执行时都对其进行内存Checkpoint的更新和RedoLog的更新,RedoLog是持久化到之前提到的分布式文件系统中,使用高性能的Append的方式进行顺序写入,在Partition迁移到新的Worker后,新的Worker在对RedoLog进行加载,就可以完成任务状态的恢复。在执行器执行的过程中也可能会崩溃,退出,这时候需要将任务迁移到其他的执行器中。

2022-09-23 09:47:47 320

原创 Netty、Kafka中的零拷贝技术到底有多牛?

零拷贝如果简单用 Java 里面对象的概率来理解的话,其实就是使用的都是对象的引用,每个引用对象的地方对其改变就都能改变此对象,永远只存在一份对象。

2022-09-22 09:40:26 41

原创 Dubbo 可观测性实践之 Metrics 功能解析

在 2018 年,Observability(即可观测性)首次被引入 IT 领域,并逐渐取代只关注系统整体可用性的传统监控。随着云原生技术的不断发展,企业从单体架构发展到分布式架构,使用容器部署拆分出来的一众微服务、与业务联系紧密,传统的监控仅适合报告系统的整体运行情况无法进行高度细化的分析与关联,于是需要将研发视角融入监控,发展具有比原有监控更广泛、更主动、更细粒度的能力,这种能力就是可观测性。

2022-09-22 09:39:40 623

原创 响应式异步非阻塞编程在服务端的应用

对于服务端的开发者而言,我们总有一个共同的目标,那就是如何用更少的资源获得足够的性能来支持我们的服务!,我们不是在性能优化中,就是在性能优化的路上。作为Javaer我们,服务性能优化的武器库中,异步和并发是永远不会过时的两个。然而理想很美好,现实很骨感:异步编程的思维方式同大脑的命令式思维是背道而驰的。在Java的世界中,直到目前Jdk17,也没有来帮我们解决回调地狱的问题,强行大量异步,将深陷回调地狱而不能解脱...

2022-09-22 09:39:04 119

原创 Dubbo 泛化调用在vivo统一配置系统的应用

这里的Invoker承载了网络连接、服务调用和重试等功能,在 客户端,它可能是一个远程的实现,也可能是一个集群实现。方案二统一抽象一个远程调用下发维度,可以保持原有的判断逻辑,也就是先把系统中所有可以下发的文件先查找出来,然后根据设备维度进行匹配,如果某一个文件配置的是远程调用维度,那么查找这个远程调用维度所包含的函数名称、参数类型数组和参数值对象数组,然后调用三方接口,从而判断这个文件是否可以下发到设备,最终获取到可以下发的文件id列表。

2022-09-22 09:38:06 68

原创 WebFlux使用函数式编程

Spring WebFlux包括WebFlux.Fn是一种轻量级函数式编程模型,其中函数用于路由和处理请求,契约设计为不可变。它是基于注释的编程模型的另一种选择,但在其他方面运行在相同的Reactive Core基础上。在WebFlux.Fn,HTTP请求由HandlerFunction处理:该函数接受ServerRequest并返回延迟的ServerResponse(即Mono)。请求和响应对象都有不可变的契约,提供对HTTP请求和响应的JDK 8友好访问。

2022-09-22 09:37:04 466

原创 项目上线一年,整理了一份SpringBoot性能优化方案

现在很多项目都采用前后端分离的架构,所以controller层的方法,一般会使用@ResponseBody注解,把查询的结果,解析成JSON数据返回(兼顾效率和可读性)。很多人都体验过,加入了一些保证一致性的代码,一压测,性能掉的惊掉下巴。所以,对于一般的服务,保持结果集的精简,是非常有必要的,这也是DTO(data transfer object)存在的必要。比如,在JPA中,如果加了一对多或者多对多的映射关系,而又没有开启懒加载,级联查询的时候就容易造成深层次的检索,造成了内存开销大、执行缓慢的后果。

2022-09-22 09:36:07 238

原创 一种无源代码文件的Java程序修改方法

公司有个老旧项目忽然报错,追踪代码发现逻辑有问题,可又由于公司代码管理不当,导致源码丢失,当前只有可运行的jar包;如果要修复这个问题,只能通过修改字节码文件的方式,然后重新打包部署。

2022-09-22 09:34:56 568

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除