自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Mac 配置 Maven & JDK

1、下载https://archive.apache.org/dist/maven/maven-3/3.8.2/binaries/4、配置不同的地址、同时声明jdk8/11/17,可以通过这样的别称来直接快速地切换 jdk 版本。如果多个 jdk 需要配置的话,必须要放置 Maven 的所有配置在 jdk 至上。1、官网下载指定版本并安装……3、配置多个不同版本的 JDK。

2025-03-09 21:04:27 407

原创 【八股学习】面试问到JMM如何优雅回答?

JMM是Java定义的并发编程相关的一组规范。1、Java 是跨平台语言,需要自己提供内存模型来屏蔽硬件和系统的差异。2、JMM 简化多线程编程(屏蔽底层设计可能导致的多线程问题)3、JMM 抽象了线程和主内存之间的关系。(线程本地内存和主内存类比CPU三级缓存和内存4、JMM 规定了Java源代码到CPU可执行指令转化要遵守的并发原则和规范(针对线程缓存和指令重排序。

2025-02-21 01:16:06 208

原创 【八股学习】HashMap源码总结

使用默认的或者指定的初始化容量和负载因子,如果使用默认容量16,则会在第一次插入时在 resize 中自行计算 threshold。进行扩容,会伴随着一次重新 hash 分配,并且会遍历 hash 表中所有的元素,是非常耗时的。resize 方法实际上是将 table 初始化和 table 扩容 进行了整合,底层的行为都是给 table 赋值一个新的数组。3、最后放入到新的map中,如果是未初始化的table会在putVal中resize初始化扩容。2、初始化了则进行判断并resize。

2025-02-16 16:48:44 1055

原创 【八股学习】ArrayList扩容机制总结

而且可以选择拷贝的起点和长度以及放入新数组中的位置。

2025-02-15 16:16:32 882

原创 【项目总结】易到家家政服务平台 —— 派单调度(7)

通过将不同的规则进行组合,来决定具体要使用什么模式来派单。根据需求我们平台支持距离优先策略、评分优先策略、最少接单优先策略**,针对上边的代码我们可以基于策略模式定义不同的策略去优化。**从redis派单池查询订单将派单任务放入线程池执行派单任务:从服务提供者池找到符合条件的服务人员、获取派单策略、通过责任链模式匹配规则,匹配一个服务人员匹配成功调用抢单接口进行机器抢单(相当于是平台和服务人员都在抢单,因为此时还有其他的机构或者服务人员在抢)机器抢单成功则派单成功。

2025-02-11 18:11:19 1119

原创 【算法学习】二分查找开区间写法总结

那么如果我们要求的是 > / < / <= 这三类的该怎么处理呢?在整型的条件下,其实是同一类问题,都转化成 >= 模板就可以了,

2025-02-10 20:44:48 239

原创 【项目总结】易到家家政服务平台 —— 订单管理(6)

不同场景只需要修改或者增加策略实现类即可。

2025-02-10 14:16:28 991

原创 【项目总结】易到家家政服务平台 —— 秒杀抢购(5)

秒杀抢购是一种常见的用于聚集流量和吸引注意力的业务模式,为了吸引人群并提高下单欲望,我们决定通过发布秒杀优惠券活动来提高流量。同时,必须了解秒杀抢购业务有如下的特点:时间限制:通常设置一个小时或更短时间,当然限量销售并不会有这么长的时间。限量销售:秒杀抢购商品通常数量有限,销售数量是提前确定的。高并发和服务器压力: 抢购开始时大量用户会同时访问在线商城,导致网站服务器承受巨大压力。因此,网站的服务器和网络基础设施需要具备高并发处理能力,以应对瞬时大量的用户请求。技术要求高:秒杀抢购业务对技术要求非常

2025-02-08 21:48:24 943

原创 【八股学习】设计模式

本文将介绍几种常用于项目中的设计模式和SpringBoot使用到的设计模式。

2025-02-04 14:46:34 414

原创 【八股学习】Spring & SpringBoot常见面试题

使用spring-boot-starter-web一个依赖就可以包含开发REST服务所需要的所有依赖。</</</

2025-02-03 00:15:31 904

原创 【项目总结】易到家家政服务平台 —— 预约下单(4)

例如,订单号可以是"0101028100001”,其中"01"表示订单类型,"20181028"表示日期,"00001"是序号。例如,订单号可以是"202310280001",其中"20231028"表示日期,"0001"是自增的订单序号。1、熔断降级:当服务的异常数或异常比例超过了预设的阈值时,熔断器会进入开启状态,暂时中断对该服务的请求,此时走降级方法,能够快速响应,确保系统的基本功能能够继续运行。4、信号量隔离:使用计数器模式,记录请求资源的并发线程数量,达到信号量上限时,禁止新的请求。

2025-02-01 18:03:54 799

原创 记一次刷算法中遇到的==和equals()的坑

该代码通过了绝大多数用例,直到有一个用例中出现了 200 这个整型报错了。2、直接使用equals()来比较两个集合的相等关系。在判断两个List是否相等时,我写出了如下代码。1、使用equals()来比较对象值的相等关系。以下是Integer中重写的equals代码。针对对象值的比较一定要使用equals!这 4 种包装类默认创建了数值。的相应类型的缓存数据,,非常常规的一个八股。

2025-01-26 14:39:00 195

原创 【八股学习】Redis面试常见八股 —— Redis数据类型

Bitmap 存储的是连续的二进制数字(0 和 1),通过 Bitmap, 只需要一个 bit 位来表示某个元素对应的值或者状态,Geospatial index(地理空间索引,简称 GEO) 主要用于存储地理位置信息,基于 Sorted Set 实现。Redis 提供的 HyperLogLog 占用空间非常非常小,只需要 12k 的空间就能存储接近2^64个不同元素。相比于Set多加了一个 score 权重参数,以此进行排序。同样的,可以使用 sorted set的命令。类似于HashMap。

2025-01-25 20:35:01 420

原创 【项目总结】易到家家政服务平台 —— 门户(3)

如果消息发送到交换机成功了但是并没有到达队列,此时会调用ReturnCallback回调方法,在回调方法中我们可以收到失败的消息存入失败消息表以便进行补偿。:消息发送到Broker会有一个结果返回给发送者表示消息是否处理成功:1)消息成功投递到交换机,返回ack 2)消息未投递到交换机,返回nack。服务搜索是一个面向 C端 的接口,如果直接让用户访问数据库,那么在高并发的场景下,就会对DB造成很大的压力,还会影响其他业务使用数据库。③首页服务列表,对于每个用户而言都是相同的,热点数据进行缓存。

2025-01-24 16:55:48 997

原创 【项目总结】易到家家政服务平台 —— 客户管理(2)

表结构如下,

2025-01-23 03:51:28 933

原创 【八股学习】JUC —— 线程池

凡涉及到网络读取,文件读取这类都是 IO 密集型,这类任务的特点是 CPU 计算耗费时间相比于等待 IO 操作完成的时间来说很少,大部分时间都花在了等待 IO 操作完成上。这种设计允许submit()提供更灵活的错误处理机制,因为它允许调用者决定如何处理异常,而execute()则适用于那些不需要关注执行结果的场景。新任务来的时候会先判断当前运行的线程数量是否达到核心线程数,如果达到的话,新任务就会被存放在队列中。时,未捕获异常导致线程终止,线程池创建新线程替代;线程池数量小,可能会任务堆积导致OOM。

2025-01-22 01:44:00 678

原创 【八股学习】JUC、JMM

所以 Java 需要开发自己的 Memory Model,来实现多线程和并发的编程,同时Java跨平台的特性决定了,他需要屏蔽底层OS的MM。每个线程都有一个私有的本地内存,存储了该线程读写共享变量的副本,每个线程都只能操作自己本地内存中的变量,无法访问其他线程的本地内存。关键字可以保证变量的可见性(不可保证数据的原子性),如果将变量声明为这个关键字,就指示JVM着个变量是共享且不稳定的,每次都要到。当一个线程对共享变量进行了修改,那么另外的线程都是立即可以看到修改后的最新值。如果我们将变量声明为。

2025-01-20 17:58:42 876

原创 【八股学习】Java集合

哈希值在Java中使用int来表示,也就是一个长度为40亿的空间映射。但是肯定存放不下这么长的数组,所以要对数组进行取余 %取余(%)操作中如果除数是 2 的幂次则等价于与其除数减一的与(&)操作,也就是说如果保证了数组长度为2^n,那么我们就可以使用更有效率的位运算 & ,,来提高运算效率。length = 8 时,length - 1 = 7 的二进制位0111length = 16 时,length - 1 = 15 的二进制位1111。

2025-01-14 23:39:36 218

原创 【八股学习】计算机网络常见面试题总结

等待2MSL,为了防止发出的最后一个ACK丢失了,被动关闭方请求重传,但是主动关闭方已经CLOSE了,最后导致异常关闭。,将目标IP与不同的子网掩码求与运算,得到最后的结果,找到匹配的 Destination,如果都没找到匹配的,就找。发送原理:接收网络包后,去掉包开头的 MAC 头部,根据IP头部的内容,通过路由表查询转发目标(上文。进行划分,每一块数据放入单独的网络包中,再加上TCP头信息交给IP模块发送信息,最后发出的也就是。地址,即客户端输出IP地址,发送到目标地址,即DNS域名解析得到的。

2025-01-14 00:30:35 772

原创 【八股学习】MySQL——三大日志、索引

首先,三大日志分别是:redo log、bin log、undo log重点也就是如下部分:每个日志的作用、刷盘时机。

2025-01-12 00:45:08 748

原创 【八股学习】MySQL——事务、锁、MVCC

1、脏读:一个事务读取并修改了数据,但是没有提交,此时的修改对其他事务是可见的,如果另一个事务带去了还未提交的数据,但第一个数据发生回滚。为数据行创建一个新的版本并将修改后的数据写入新版本,并带着当前事务的版本号,以便其他事务能够正确读取,原始版本的数据供其他事务快照读取。3、不可重复读:两个事务读取到同一个数据后,事务1对其进行了修改并提交,随后事务2又读取了该数据,发现数据发生了改变。2、丢失修改:两个事务同时获取到一个数据后,同时又对这个数据进行了修改,那么早提交的事务的修改就丢失了。

2025-01-08 16:56:49 684

原创 【八股学习】JVM——Java内存区域、JVM垃圾回收

每调用一个方法就会有一个对应栈帧被压入栈中,结束后则弹出一个栈帧。当前线程执行的字节码的行号指示器,通过计数器决定字节码解释器下一条要执行的字节码指令。虚拟机加载一个类的时候,读取并解析Class文件来获取类的信息,然后将。避免了GC的不必要复杂度。为了执行Native方法服务的,和虚拟机栈为Java方法配合 相似。永久代GC回收效率,但是有大量的字符串等待回收,所以存放在了堆中。中提到过,Class文件中有编译期生成的字面量和符号引用存放的。几乎存放了Java中所有的对象,除了某型方法中的对象引用。

2025-01-03 22:57:04 332

原创 【八股学习】JVM——类加载、类加载器、双亲委派模型

有些情况下会遇到,高层的类加载器需要加载低层的加载器才能加载的类。例如 SPI的接口和其实现 一般是要求由同一个类加载器加载,SPI可以由加载,但其实现是无法通过这个加载器找到的。解决方法:线程上下文类加载器通过在线程中设置低层的类加载器,可以让高层的类加载器获取到以加载业务相关的类。在Tomcat、Spirng、Jetty中都有相关涉及。

2025-01-03 02:56:36 593

原创 【八股学习】Java基础——面向对象、反射、异常

可以通过子类覆盖这个方法,打印本地化信息,如果没有重写则与getMessage结果相同。程序无法处理的错误,不建议通过catch捕获处理。受到异常检查,Java编译过程中,如果这个类型的异常没有被。在控制台上打印 Throwable 对象封装的异常信息。虚拟机在finally之前被终止的情况,代码不会被执行。当前程序所在的线程死亡和CPU关闭也会导致其不执行。如果有多个资源需要关闭,只需要在不同的资源中间加上“编译过程中不进行处理也可以通过编译。程序本身可以处理的异常,通过。处理,无法通过编译。

2025-01-03 02:01:57 399

原创 【算法学习】Java算法常见库函数

比如序列是 2 1 我们希望变成 1 2,那我们返回 int1 - int2 就可以了,反之 返回 int2 - int。其默认构造方法为小顶堆,也就是从小到大排序,但是可以接收 Comparator 作为构造参数,来自定义元素优先级。我们首先要认识的就是 Comparator 的 compare方法,这也是我们去自定义排序的核心方法。,也就是说我们只要控制compare的return即可,让我们希望在前面的权重变大。start —— 起始索引,从0开始,同理,也有 toArray 这样的方法。

2024-12-24 19:47:06 224

原创 【项目总结】易到家家政服务平台 —— 客户管理(2)

3、后端请求微信服务器获取openid、发送appid+appsecret+code。需要通过与微信api交互得到用户的openid,认证通过后则将openid录入到数据库,表明认证通过。本项目有四端:用户端(小程序)、服务端(app)、机构端(PC)、运营管理端(PC)所以小程序的登陆认证涉及到三方:前端小程序、后端微服务程序、微信服务器。模拟发送短信、可以通过浏览器控制台拦截请求发出的验证码来模拟。2、前端请求后端wx.request()发送code进行认证。4、后端生成认证成功凭证返回给前端。

2024-11-26 16:48:12 241

原创 【项目总结】易到家家政服务平台 —— 项目背景(1)

抢单:服务人员和机构进行抢单。首先服务人员和机构设置接单范围、服务技能、开启抢单开关,然后进入抢单界面进行抢单。项目包含四端:用户端(小程序)、服务端(app)、机构端(PC)、运营管理端(PC)。订单管理:对订单的生命周期进行管理,包括创建订单、取消订单、删除订单、历史订单等。服务管理:对家政服务项目进行管理,最后在指定区域上架服务后用户可在当前区域购买。客户管理:对c端用户的信息、用户的状态等信息进行管理。服务人员管理:对服务人员的信息、认证等进行管理。企业管理:对机构的信息、认证进行管理。

2024-11-15 15:35:29 386 1

空空如也

空空如也

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

TA关注的人

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