- 博客(26)
- 收藏
- 关注
原创 Java多维数组讲解
至于三维数组也很简单,二维数组可以看成是魔方的一个面,或者说一个层,而三维只是在此基础上多了一个层的概念!构成了一个立体的结构。至于再多层的数组,一般用的很少!在实际应用中,二维数组要熟练掌握,三维甚至更高维度的数组,也是参照二维数组的格式,来进行运用的!可以看到,传入二维数组中的数已经遍历出来,而未赋值的则返回默认初始化的值0。上述定义的数组可以看成是一个2行3列的数组。我们可以写代码来看一下关于二维数组的应用。
2023-04-10 16:40:05
181
原创 关于JDK中线程同步类的学习
本文主要从锁的分类来分别描述JDK中当一个锁被线程持有后,该锁仍能被当前线程成功申请。即线程可以重复获得同一个锁。Java中的内置锁都是可重入锁如修饰的代码块,类等。一个线程进入临界资源,会造成"自己"状态的变化,因此不允许其他线程进入,只有等到当前线程出了临界区(释放掉锁资源)之后,才允许其他线程进入。也可以称之为独占锁。如修饰的代码 或者修饰的代码:指的是临界区的代码允许多个线程同时访问,不担心会对我的状态发生变化,从而导致的线程安全问题。如读写锁。允许多个线程同时读。
2023-04-10 16:23:50
125
原创 简化你的代码,提高生产力:这10个Lambda表达式必须掌握
Lambda表达式是一种在现代编程语言中越来越常见的特性,可以简化代码、提高生产力。这篇文章将介绍10个必须掌握的Lambda表达式,这些表达式涵盖了在实际编程中经常用到的常见场景,例如列表操作、函数组合、条件筛选等。通过学习这些Lambda表达式,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。
2023-04-10 16:05:31
116
原创 Disruptor-简单使用
Disruptor是一个高性能的无锁并发框架,其主要应用场景是在高并发、低延迟的系统中,如金融领域的交易系统,游戏服务器等。其优点就是非常快,号称能支撑每秒600万订单。需要注意的是,Disruptor是单机框架,对标JDK中的Queue,而非可用于分布式系统的MQ本文基于Disruptor v3.4.*版本本文介绍了 Disruptor 的简单使用,以及复杂场景下消费者的配置。
2023-04-10 15:59:51
494
原创 提高面试竞争力,加薪必备-Java核心面试题,直击面试痛点,成功收割offer
编译器也可以进行锁粒度粗化操作,将临近的多个同步代码用一个锁合并起来,不仅可以减少多个同步带来的不必要的开销,同时还能使优化器处理更大的代码块,带来进一步的优化。在执行一个事务时可能要获取多个锁,一直持有锁到事务提交,如果A事务需要获取的锁在另一个事务B中,且B事务也在等待A事务所持有的锁,那么两个事务之间就会发生死锁。刷题这件事情给我的挫败感是非常高的,中间是一度放弃了很久,但是当我想明白这道坎是一定要过的时候,就下定了决心一定要攻克这道难关,持续总结方法,持续进步。25.什么是线程池,如何创建线程池?
2023-04-10 15:57:43
49
原创 MySQL 分布式数据库实现:无需修改代码,轻松实现分布式能力
文章通过图文并茂的方式帮助大家过了一遍 ShardingSphere-Proxy 的基本概念,引申出了分库分表后产生的实际运维场景,并演示了如何通过 ShardingSphere-Proxy 解决相关问题。相信大家看完对 ShardingSphere-Proxy 有了更深入的认识。首先要明白 ShardingSphere-Proxy 的定位是协助开发运维的产品,掌握 ShardingSphere-JDBC 和 ShardingSphere-Proxy 有哪些区别,以及理解两者的优缺点和实现方式是怎么样的。
2023-04-10 11:49:00
392
原创 大人,时代变了!!!内卷时代,禁止内卷!!Java中高级精准核心全面解析
本文主要为大家整理了一套资料,由浅入深了解这些核心背后的知识基本能hold住80%的Java题,在此基础上再去学习拓展其他Java相关知识点,核心是把自己所掌握的零零散散的知识点串联起来,形成自己的知识体系,简洁并高效的学习!在这个内卷时代,人们常常用身体作为代价来换取进步的速度,用”别人在你玩的时间来学习,这样别人就超过你了“的话语来造成心理焦虑,殊不知,正确的学习方向和学习思路才能更高效的得到学习成果,更应该劳逸结合,这样才能有更多比拼的空间。
2023-04-10 11:17:53
35
原创 Java基础之变量、常量、作用域
4 定义变量的方式6 // 方式一8 //方式二//方式一、二 不建议使用,可读性太差10 String name = "刘备";//推荐使用以下方式13 }14 }
2023-04-08 16:32:47
57
原创 口语化讲解Redis
本文对Redis相关知识做了一个相对完整的总结,涉及到Redis数据类型结构、持久化、对象、LRU和LFU、处理命令、主从复制等。特别注意,口语化八股文系列,仅作突击复习核心知识点用,推荐有一定八股基础的人食用,更细的点需要大家自行查询相关详细图文资料。
2023-04-08 16:27:13
77
原创 Java-SPI机制详解
SPI全称是,是一种JDK内置的动态加载实现扩展点的机制,通过SPI技术我们可以动态获取接口的实现类,不用自己来创建。这个不是什么特别的技术,只是 一种设计理念。
2023-04-08 15:56:33
251
原创 背完这些技术栈面试题,从零变面霸,大厂offer拿到手软!!!
包括各大厂最新面试题以及面经(22份),还有涉及JVM,Mysql,并发,Spring,Mybatis,Redis,RocketMQ,Kafka,Zookeeper,Netty,Dubbo,ElasticSearch,Flink,Spring Boot,Spring Cloud,高并发项目,大数据系列,数据结构与算法,设计模式,网络与操作系统等20个技术栈的大厂面试题及详解文档,还有相关大厂面试突击系列视频。
2023-04-08 15:42:13
52
原创 java的数据和表达式
3)/**文档注释 */ Javadoc,提取类头、所有公有方法的头,以及以特定形式 写的注释。方法名:首字母小写,其余各单词的首字母大写:getName,setAddress,searchKey。2)/*一行或多行的注释 */ 此种注释区域是从/*到*/为止,在这种注释区域内可以换行,其注释不会失效。所有类型的大小和表示都是固定的,不依赖于具体的实现,所以 sizeof运算符没有意义。整型常量是int型;3、数值常量包含:小数点、指数部分(字符E),数的后面有字母F 或D,则为浮点数。
2023-04-08 14:51:52
86
原创 Java集合
Collection 是一种存储元素的集合,Collection 包括 List、Set、Queue 三种类型。Map 是一种存储键值对的集合。Collection 包括 List、Set、Queue 三种类型。List 是一种有序(可以按照插入顺序访问元素)的集合;List 集合中的元素允许重复;可以使用索引访问 List 集合中的元素。List 的实现类有 Vector、CopyOnWriteArrayList、ArrayList、LinkedList。Set 集合中的元素不允许重复;
2023-04-08 14:45:14
56
原创 OMG,太牛了!!!华为18级架构师总结出24W字Java面试手册
网上的 Java 基础面试题文章有非常多,但是大部分都比较老了。很多题目早已不是当前的热门题目,没有必要在这些题目上花太多时间。很多答案放现在已经不准确,可能会误导新人。因此,我花了几天时间喊大佬整理了一些时下高频的 Java 基础题目,并反复斟酌,给出符合当前版本的解析。面试系列该大佬前前后后加起来总共应该参加了不下四五十次的面试,拿到过几乎所有一线大厂的 offer:阿里、字节、美团、快手、拼多多等等。
2023-04-08 10:03:05
145
原创 RocketMQ源码5-producer 同步发送和单向发送
RocketMQ生产者发送消息分为三种模式,分别是。单向发送同步发送异步发送callback。
2023-04-07 14:26:13
202
原创 RocketMQ源码4-producer 启动流程(获取topic路由信息)
本文我们来分析rocketMqproducer发送消息的流程.producer发送消息的示例在producer接下来我们的分析也按这三步进行。
2023-04-07 14:19:10
247
原创 RocketMQ源码3-NameServer 消息处理
本文分析了NameServer对请求消息的处理,nameServer底层使用netty进行通讯,处理brokerproducerconsumer请求消息的为,最终的处理方法为,这个方法会处理众多的请求,我们重点分析了注册/注销broker消息获取topic路由消息获取broker版本信息的处理流程。注册/注销broker消息获取topic路由消息获取broker版本信息最终都是在类中处理,这个类中有几个非常重要的、类型为HashMap:存放保存topic与Queue的关系,value类型为List。
2023-04-07 14:10:00
101
原创 RocketMQ源码2-NameServer架构设计及启动流程
本文主要分析了NameServer创建controller:这一步主要是解析nameServer的配置并完成赋值操作初始化controller:主要创建了对象、netty服务线程池、定时任务启动controller:就是启动netty服务好了,本文的分析就到这里了,下篇文章我们继续分析NameServer。
2023-04-07 13:59:45
150
原创 干货:Java基础面试1000题,核心考点汇总
今年跳槽成功的难度的确比往年要高。无论是简历筛选,还是技术面环节,都很考验 Java 程序员的技术沉淀。近期我将搜集到的阿里、腾讯、美团、网易等公司 21、22 年的面试题技术点,梳理成一份含有1000,送给大家,希望大家都能顺利通过面试,拿下高薪。赶紧码住吧~~~1.近期想跳槽,要面试的 Java 程序员,查漏补缺,以便尽快弥补短板;2.想了解“一线互联网公司”最新技术要求,对比找出自身的长处和弱点所在,评估自己在现有市场上的竞争力如何;
2023-04-07 13:51:49
73
原创 RocketMQ源码-搭建源码调试环境
本文主要介绍了rocketMq的基本架构,通过源码展示了rocketMq的启动方式,最后通过rocketMq项目下example模块中的测试代码展示了消息的收发过程。总的来说,本文还是在准备源码分析的环境,下篇文章开始,我们就正式开始rocketMq的源码分析了。
2023-04-07 13:46:39
289
原创 四种常见服务限流算法解析
限定固定请求数量访问服务端,保护服务接口定义一个单位时间(如1秒钟)的阈值,每收到一次请求,增加一次计数。判断 请求总数 当前单位时间内的阈值, 则触发限流处理进入到下一个单位时间,计数清零,开始新一轮的计数将单位时间划分为多个时间区间每个时间区间内,每有一次请求计数就加1单位时间内的所有时间区间的请求计数之和,就是整个滑动窗口的请求总数滑动窗口每经过一个时间区间,则抛弃最左区间,并加入最右区间。
2023-04-07 13:18:23
135
原创 Java面向对象--接口和多态
接口是功能的集合 描述的是功能 接口中都是抽象方法(JDK1.8之前)接口中的成员变量 被public static final修饰 是常量。修饰成员变量时, 必须在类中显性赋值 或 在所有构造方法中对其赋值。修饰变量时, 该变量只能赋值一次, 不可以二次赋值 是常量。修饰引用变量时, 地址值不能改变 但对象中的属性值可以改变。接口中的成员方法 被public abstract修饰。被final修饰后不能被继承 重写 二次赋值。类可以在继承一个类的同时 实现多个接口。修饰方法时 该方法不能被重写。
2023-04-07 13:12:44
31
原创 Java | 动态代理及作用
JDK 动态代理是通过实现目标类的接口,然后将目标类在构造动态代理时作为参数传入,使代理对象持有目标对象,再通过代理对象的 InvocationHandler 实现动态代理的操作。CGLIB 动态代理是通过配置目标类信息,然后利用 ASM 字节码框架进行生成目标类的子类。当调用代理方法时,通过拦截方法的方式实现代理的操作。共同的部分,底层其实都是用到了通过反射完成,总的来说,JDK 动态代理利用接口实现代理,Cglib 动态代理利用继承的方式实现代理。
2023-04-06 16:19:41
106
1
原创 JVM的垃圾收集算法
弱分代假说(Weak Generational Hypothesis):绝大多数对象都是朝生夕灭的。强分代假说(Strong Generational Hypothesis):熬过越多次垃圾收集过程的对象就越难以消亡。这两个分代假说共同奠定了多款常用的垃圾收集器的一致的设计原则:垃圾收集器应该将 Java 堆划分出不同的区域,然后将回收对象依据其年龄(年龄即对象熬过垃圾收集过程的次数)分配到不同的区域之中存储。
2023-04-06 13:29:27
65
1
原创 聊聊Fork/Join并发框架
Fork/Join框架是一个实现了ExecutorService接口的多线程处理器,它专为那些可以通过递归分解成更细小的任务而设计,最大化的利用多核处理器来提高应用程序的性能。与其他ExecutorService相关的实现相同的是,Fork/Join框架会将任务分配给线程池中的线程。而与之不同的是,Fork/Join框架在执行任务时使用了工作窃取算法。fork在英文里有分叉的意思,join在英文里连接、结合的意思。
2023-04-06 10:01:01
75
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人