自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (2)
  • 收藏
  • 关注

原创 MySQL如何实现数据排序

本文将带你熟悉MySQL进行数据排序的基本实现,助你更快更好地通过面试

2024-07-07 10:46:15 345

原创 一文带你精通Android中的Activity

本文将会从活动的生命周期、启动模式、Intent数据传输、最佳实践等多维度来讲解Activity,希望对你有用。

2024-06-17 00:39:24 1034

原创 Android中的KeyEvent详解

在Android中,KeyEvent 是用来表示按键事件的类,可根据对应的事件来处理按键输入,具体包含了关于按键事件的信息,例如按键的代码、动作(按下或释放)以及事件的时间戳,KeyEvent 对象通常在用户与设备上的物理或软件键盘交互时产生,KeyEvent可以帮助开发者创建更加互动和响应式的应用程序

2024-06-15 17:14:16 901

原创 Android中的消息异步处理机制及实现方案

Android UI 是非线程安全的,即所有的 UI 操作必须在主线程中执行;任何在工作线程中直接对 UI 进行操作都会导致不可预知的行为,甚至可能导致应用崩溃;消息异步处理机制确保了所有的 UI 更新都在主线程中执行,从而保证了线程安全

2024-06-15 12:29:38 1142

原创 Android中蓝牙设备的状态值管理

从Android6.0(API 23)开始,Google引入了新的权限模型,要求应用程序在使用蓝牙功能时请求相应的权限,并且用户必须在运行时明确授权。在Android中,蓝牙状态可以通过多种方式来描述,主要包括蓝牙适配器状态、蓝牙设备连接状态以及蓝牙广播状态

2024-06-13 11:29:45 1172

原创 面试总结之消息中间件

2)Fanout Exchange(扇形交换机):广播机制,这种方式不会基于routingKey来匹配,而是将消息广播给绑定到当前Exchange上的所有队列上,速度最快,即在直连交换机的基础上增加模式匹配,即对routingKey进行模式匹配,* 代表一个单词,# 代表多个单词。Exchange是一个消息交换机(消息路由规则的核心组件),可定义消息路由规则(即消息应该路由到哪个队列);,AMQP具体的工作机制是生产者将消息发送到RabbitMQ Broker上的Exchange交换机上,

2023-10-27 00:16:15 417

原创 面试总结之并发编程

每个线程都有一个成员变量ThreadLocalMap,当线程访问ThreadLocal修饰的共享数据时,该线程就会在自己的ThreadLocalMap中存储一份共享数据的副本,key指向ThreadLocal这个弱引用,value保存的是共享数据的副本,因为每个线程都有一份共享数据的副本,以此就解决了线程安全问题。在Thread的init()方法中,如果父线程的 inheritableThreadLocals 不为空,就把它赋给当前线程(子线程)的 inheritableThreadLocals。

2023-10-16 19:47:58 268

原创 面试总结之Java基础

注解被用错位置在编译期间就会报错元注解:指修饰注解的注解单例模式属于创建型模式,提供了一种创建对象的最佳方式,是指仅在内存中只创建一次对象的设计模式,在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象单例模式的优点:提升使用对象的效率,又可以让类自行把控实例的实现细节,对外部业务代码不产生任何影响。

2023-10-14 11:14:40 322

原创 面试总结之Spring篇

2)声明式事务管理:建立在AOP之上,其本质是通过AOP功能,对方法前后进行拦截,将事务处理的功能编织到拦截的方法中,即在目标方法开始之前启动事务,在执行完目标方法之后根据执行情况 进行提交或回滚事务。(Compile-time weaving):如 A类使用AspectJ添加了某属性,B类引用了A类,该场景就需要编译期进行织入,否则没法编译B类。(Post-compile weaving):在已生成了字节码/ class文件,或已经打包成jar包后,该情况需要增强,就需要使用到编译后织入。

2023-09-28 10:57:13 333

原创 面试总结之微服务篇

4)监听配置变化:Nacos Client可以通过注册监听器的方式,实现对配置信息的监听,当配置信息发生变化时,Nacos Server会通知已注册的监听器,并触发相应的回调方法。微服务架构中的每个服务通常都需要一些配置信息,如数据库连接地址、服务端口、日志级别等,这些配置可能因为不同环境、不同部署实例或动态运行时需要进行调整和管理。微服务的实例一般较多,如果每个都逐个去配置,就会造成较大的运维成本,因此,就需要集中化地管理这些配置。,Server根据键查找对应的配置信息,并返回给client。

2023-09-23 23:45:33 412 2

原创 如何高效且优雅地使用Redis

本文从如下7个维度,带你全面理解Redis的最佳实践和优化: 内存、性能、可靠性、运维、安全 、资源规划、监控

2023-09-15 22:16:43 447

原创 算法面试题总结之深度优先遍历

算法面试题相关的归纳和总结,后续会持续更新完善

2023-07-08 14:40:11 84

原创 一文带你深入理解MySQL的索引

如果你想理解一条查询SQL具体是怎么执行的,就需要完全彻底地理解索引,且清楚MySQL整个的层次结构,本文会对详细解释MySql的逻辑结构层次和MySql索引

2023-01-04 14:11:14 438

原创 详解MySQL事务与锁

事务和锁在 MySQL 中是非常重要的一部分,锁和事务对 MySQL 的数据访问并发有着举足轻重的影响,涉及到的知识篇幅很多,需要静下心好好反反复复几遍地细细品味。本文是对MySQL的事务和锁的整理,一些相关深入的细节,还是需要找到相关书籍来继续夯实

2022-12-30 14:09:14 800

原创 一文带你深入理解JVM面试中的知识点

GC:Garbage Collection(垃圾回收),所有具备动态内存分配能力的语言,都要面对的问题,不只是Java,包括Python、Go等其他语言。垃圾回收需要面对的三个问题:哪些内存区域需要回收.什么时候回收.如何回收(哪些对象需要清理,如何清理这些对象)CMS: Concurrent Mark Sweep,获取最短回收停顿时间为目标的收集器,第一款真正意义上的并发+并行收集器CMS的清理识别算法在多数情况下,使用标记-清除算法;少数时候,会使用标记-整理。

2022-12-23 20:01:20 327

原创 Java设计模式总结之单例模式

对于Java语言来说,通常包含有6大设计原则和23种设计模式,这些都是前辈们对于开发思想的结晶。我们学习和理解这些设计原则和设计模式,深入掌握其实现原理和使用场景,能够更好的设计我们的系统架构。编写出具有高性能、高并发、高可用、高可扩展性和高可维护性的代码。在Java的常见的23种设计模式中,大体上可以分为创建型模式、结构型模式和行为型模式三大类。如下就来详述单例模式的几种常见写法以及在框架或项目中的正确使用姿势

2022-11-03 23:13:27 88

原创 JavaSE基础回顾之反射知识点以及面试总结

Reflection(反射)是被视为`动态语言`的关键,反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性以及方法加载完类之后,在堆内存的方法区中就会产生一个Class类型的对象clazz(一个类只有一个Class对象),该对象包含了完整的类的结构信息,我们可以通过clazz对象看到类的结构

2022-11-02 10:31:01 98

原创 Java并发编程之CompletableFuture详解

在项目中经常会使用到CompletableFuture ,很多开源框架中也大量使用到了 CompletableFuture 。因此,专门写一篇文章来介绍这个 Java 8 才被引入的一个非常有用的用于异步编程的类。CompletableFuture 同时实现了 Future 和 CompletionStage 接口。

2022-09-22 20:40:31 3216

原创 图文并茂,一文带你掌握RabbitMQ

微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不能跟多个人同时通话。发送邮件可以同时与多个人收发邮件,但是往往响应会有延迟。为了解除事件发布者与订阅者之间的耦合,两者并不是直接通信,而是有一个中间人(Broker)。发布者发布事件到Broker,不关心谁来订阅事件。订阅者从Broker订阅事件,不关心谁发来的消息。而MQ就是Broker的具体实现之一

2022-09-16 21:24:12 503

原创 Java IO模型详解

从应用程序的角度来解读一下 I/O,为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space ) 。平常运行的应用程序都是运行在用户空间,只有内核空间才能进行系统态级别的资源有关的操作,比如文件管理、进程通信、内存管理等等。也就是说,我们想要进行 IO 操作,一定是要依赖内核空间的能力。用户空间的程序不能直接访问内核空间。当想要执行 IO 操作时,由于没有执行这些操作的权限,只能发起系统调用,请求操作系统帮忙完

2022-09-14 21:12:11 197

原创 一文带你完全掌握MySQL索引

索引是一种用于快速查询和检索数据的数据结构,相当于字典的目录,常见的索引结构有B树、B+树和hash等

2022-09-14 10:53:09 586

原创 一文带你熟悉Redis网络模型原理

Redis 自 2009 年发布之后,其单线程网络模型的选择在社区中从未停止过讨论,多年来一直有呼声希望 Redis 能引入多线程从而利用多核优势,但是作者 antirez 是一个追求大道至简的开发者,对 Redis 加入任何新功能都异常谨慎,所以在 Redis 初版发布的十年后才最终将 Redis 的核心网络模型改造成多线程模式,这期间甚至诞生了一些 Redis 多线程的替代项目。虽然 antirez 一直在推迟多线程的方案,但却从未停止思考多线程的可行性,Redis 多线程网络模型的改造不是一朝一...

2022-08-15 12:32:50 616

原创 Java8新特性之时间处理总结

本文会详细介绍,Java8中关于时间、日期API的具体使用,以及注意问题,具体内容包括传统时间格式化的线程安全问题及解决方案、LocalDateTime、Duration和Period、时间校正器、时间格式化、时区处理等操作。...

2022-08-10 13:22:48 223

原创 招银网络面试总结

经历过招银网络两轮面试后,部分面试题总结如下,题目不在多,而在于精,通过面试题回顾知识点,还是非常不错的复习方式呢,本文针对面试题进行了许多关联问题的扩展和总结。

2022-08-07 05:57:56 14012

原创 SpringCloud微服务技术实践与总结(基础篇)

SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。......

2022-08-02 22:15:40 1572

原创 一文详解Redis缓存过期淘汰策略

一文带你详解Redis缓存过期淘汰策略,总体来说,可以从2个维度,四个方面来个8中淘汰策略分类过期键中筛选,volatile-ttl所有键中筛选,allkeys-lru、volatile-lru、allkeys-random、volatile-random、allkeys-lfu、volatile-lfulru(最近最久未使用的键删除)lfu(最低频次的键删除)random(随机删除)ttl(到了过期时间的键删除)...

2022-07-24 22:55:34 1517

原创 从青铜到王者,带你完成Redis分布式锁的实现和优化

在单机环境下,使用synchronized或lock就可保证线程安全,如果是分布式微服务,单机锁就会出现许多问题;使用Redis实现分布式锁(setnx --> setIfAbsent方法,设置过期时间);加锁后,业务逻辑执行完,一定要在finally代码块中释放锁,以免出现异常导致锁无法释放的情况;如果服务宕机,无法执行finally中释放锁的操作,导致REDIS_LOCK无法删除,所以需要设置锁的过期时间,且加锁和设置过期时间必须是原子操作............

2022-07-24 16:12:21 616

原创 详解LockSupport原理、使用场景及面试题

LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,阻塞之后也有对应的唤醒方法。

2022-07-21 11:37:47 1281

原创 计算机网络面试突击总结之应用层

计算机网络面试突击总结之应用层

2022-06-26 09:45:47 143

原创 MySql主从复制实战及排坑说明

MySql主从复制实战教程及排坑说明

2022-05-10 20:34:04 447

原创 Linux环境下,安装jdk、tomcat、mysql、redis、rocketmq以及项目部署

如果你对在Linux环境下,对安装JDK、Tomcat、MySQL、Redis等有疑问,安装过程中经常出现问题,不妨看看本文,希望对你有用。

2022-05-10 15:00:16 940

原创 权限管理SpringSecurity Oauth2整合JWT实战总结(三)

1、JWT1.1、基本的认证机制1) HTTP Basic AuthHTTP Basic Auth简单点说明就是每次请求API时都提供用户的username和password,简言之,Basic Auth是配合RESTful API 使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,在开发对外开放RESTful API时,尽量避免采用HTTP Basic Auth。2) Cookie AuthCookie认证机制就是为

2022-03-26 23:15:41 1026

原创 极客时间SpringCloud微服务项目实战课程的学习总结1

本文是我学习 极客时间SpringCloud微服务项目实战课程的学习总结。

2022-02-12 14:39:17 1758

原创 SpringBoot+Mybatis+Redis缓存实战总结

Redis 是一个高性能的key-value内存数据库。它支持常用的5种数据结构:String字符串、Hash哈希表、List列表、Set集合、Zset有序集合 等数据类型。 Redis它解决了2个问题: 1)性能通常数据库的读操作,一般都要几十毫秒,而redisd的读操作一般仅需不到1毫秒。通常只要把数据库的数据缓存进redis,就能得到几十倍甚至上百倍的性能提升。 2)并发在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常,甚至卡死在数据库中。

2022-01-03 22:37:35 1966

原创 安全框架实战总结之SpringSecurity+Oauth2(二)

第三方认证技术方案最主要是解决认证协议的通用标准问题,因为要实现跨系统认证,各系统之间要遵循一定的接口协议。- Oauth协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而Oauth2是开放的。- 业界提供了OAUTH的多种实现如PHP、JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而Oauth是简易的。

2021-12-28 18:33:52 2522

原创 安全框架SpringSecurity实战总结(一)

Spring Security是一个高度自定义的安全框架,是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了 Spring IoC , DI(控制反转Inversion of Control,DI:Dependency Injection 依赖注入) 和 AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能。

2021-12-28 16:44:34 5603 1

原创 Redis安装教程

1、安装C语言环境安装Redis之前,需要安装C语言的编译环境:可以先查看gcc的版本:gcc --version如果显示没有安装命令,则应该安装gccyum install gccC语言环境安装成功后,可以使用gcc --version查看gcc的版本。2、安装Redis切换到redis工具包的目录下,将redis包解压:tar -zxvf redis-6.2.1.tar.gz然后进入到解压完成后的工具包(redis-6.2.1),使用make 完成编译。最后使用命令完成

2021-09-28 20:44:49 169

原创 Spring常见面试题总结(图文并茂,建议收藏)

3、@RestController和@Controller@RestController=@Controller+@RequestBody,单独使用@Controller,返回的是JSon或XML格式的数据,@RestController只返回对象,对象数据直接以JSON或XML的形式写入Http响应(Response)中4、Spring IOC和AOPSpring AOP:面向切面编程,能够将那些与业务无关,却被业务模块共同调用的责任或逻辑(事务处理、日志管理、权限控制等)封装起来,便于减少系统

2021-09-10 17:22:09 618

原创 2021年Java基础面试总结

1、Java 语言有哪些特点?1)简单易学;2)面向对象(封装,继承,多态);3)平台无关性(Java 虚拟机实现平台无关性,即针对不同操作系统都有其特定实现(Windows,Linux,macOS));4)具有可靠性;安全性;5)支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持,屏蔽了复杂的底层实现);6)支持网络编程并且很方便( Java 语言诞生本身就是为简化网络编程设计的,因此 Java 语言不仅支

2021-09-07 11:09:48 143

原创 RabbitMQ之队列总结(参考尚硅谷RabbitMQ教程)

1、死信队列1.1、概念死信,顾名思义就是无法被消费的消息,一般来说,producer 将消息投递到 broker 或者直接到queue里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的原因导致 queue 中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信,有死信自然就有了死信队列。应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比如说: 用户在商城下单成功并点击

2021-08-28 11:45:52 391

ordering_system.rar

B站 楠哥教你学Java 关于外卖点餐系统的源码,链接:https://www.bilibili.com/video/BV1W4411V7fu

2021-07-11

DesignPattern.rar

适合应届毕业生和对设计模式学习有需求的人群

2021-07-02

空空如也

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

TA关注的人

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