自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java高阶私房菜:JVM类加载机制和双亲委派模型

在Java开发中,类加载子系统是一个至关重要的组成部分,这是Java开发者值得深入研究的重要主题之一。通过了解类加载器的结构和工作原理,我们可以更好地掌握Java开发中的核心概念和技术,并在实际项目中更加游刃有余。在文章中将提及类加载的高频面试题和案例,希望能给准备跳槽的小伙伴带来帮助,接下来让我们逐步深入了解JVM内部原理,探索里面的奥秘吧!

2024-04-25 23:57:16 1320 2

原创 服务运维篇-通过防火墙抵御渗透扫描

这段时间为应对渗透攻击(GFYL),各服务都要做好端口控制,为此分享和记录工作中的一个方法,希望对各位有这问题的人有所帮助。

2024-04-23 18:35:19 264 1

原创 JAVA高阶私房菜:JVM虚拟机核心概念及参数微调实验

JVM迄今为止都是程序员老生常谈的话题,实话说我每一次研究探索完后都会忘一次,但好在每次都有新的见解,再加上JDK每迭代更新一版都会有新的特性和改良,对此,我们就当温故知新,增进新的理解,弥补不足,在这里我们不讲大而全的知识,也不会讲老旧的知识点,主要围绕在工作和面试中最高频的点,聚焦于JDK9之后的关键内容进行剖析。

2024-04-21 16:17:41 997

原创 Java高阶私房菜:高并发之线程池底层原理学习

以往我们需要获取外部资源(数据源、Http请求等)时,需要对目标源创建链接对象,三次握手成功后方可正常使用,为避免持续的资源占用和可能的内存泄漏,还需要调用目标对象close方法释放资源销毁对象。这一建一销的过程在开发阶段倒感觉不到什么影响,但在生产环境,投产阶段中成百上千的并发请求涌入,小小的不足被不断放大,严重可拖垮系统。为节省资源初始化时间,提高输出有效性,池化资源应运而生。接下来我将从由来到原理,到应用场景讲解线程池,希望给各位带来新的启发。

2024-04-20 23:56:09 1264

原创 Java高阶私房菜:快速学会异步编程CompletableFuture

为了使主程代码不受阻塞之苦,一般使用异步编程,而异步编程架构在JDK1.5便已有了雏形,主要通过Future和Callable实现,但其操作方法十分繁琐,想要异步获取结果,通常要以轮询的方式去获取结果,在JDK8后首次引入的CompletableFuture,简化异步编程复杂性,提供了函数式编程让代码更加简洁,可以在任务完成后做对应的callback回调处理。接下来,我带你一步步了解并掌握CompletableFuture。

2024-04-17 23:07:13 726

原创 Java高阶私房菜:深入解析多线程场景下ThreadLocal应用

相信小伙伴们在工作中有听说过Threadlocal,或者在实际项目中有大量的使用Threadlocal,有些人可能没用过,不过没关系,通过本文你就能从小白到高手蜕变,如果使用过,同样也能收获不一样的知识点。

2024-04-14 23:28:12 1211

原创 Java高阶私房菜:并发编程原理深度剖析

"Java并发编程"一直以来熟悉又陌生,还记得从刚接触时总能听到java的高级能力,也憧憬着自己有那么天能够写出优雅又实用代码来应对海量并发场景,但一路走下来,实际业务能使用上高并发场景的也比较少,对这块的理解就更少了。接下来,本文将带你逐步理解并发编程的核心要素,以及Java开发中常见的各种锁类型设计和性能分析,温故而知新,希望能给予新的启发。

2024-04-13 23:33:30 1032

原创 Java高阶私房菜:探索反射机制应用及高级场景

“反射”作为Java特性之一,为我们程序在运行时动态地获取类的信息、调用对象的方法和操作对象的属性提供了途径。并且通过使用反射,我们可以在编译期间未知具体类型的情况下,对类进行操作。接下来我们将系统重新回顾一下"反射",结合新的应用场景,温故而知新,希望能给予新的启发。

2024-04-13 16:00:07 1286

原创 浏览器指纹介绍及访客唯一标识实现

浏览器指纹(设备终端指纹)是通过浏览器对网站可见的配置来匿名识别浏览器,从硬件、操作系统、浏览器、网络等维度进行分析。浏览器指纹现在也比较多大厂都在使用:反欺诈,防止刷票脚本、机器人、异地可疑登录提示等,在注重用户隐私的情况下,进行一些数据分析,比如阿里云、淘宝等账号登录,常用设备和非常用设备登录是不一样的验证级别。

2024-04-07 22:51:35 293

原创 Java高阶私房菜:探索泛型之妙用

“泛型”(generics)作为Java特性之一,已经出现较长时间了,相信大家或多或少有接触过,接下来我们将系统重新回顾一下泛型,温故而知新,希望能有些新的启发。Java中的泛型作为V1.5后新增的特性,在JDK源码、中间件源码中有大量的使用,如果掌握了泛型将更容易理解源码,也提升代码抽象能力,封装通用性更强的组件。

2024-04-07 22:47:46 1056

原创 算法之美:缓存数据淘汰算法分析及分解实现

在设计一个系统的时候,由于数据库的读取速度远小于内存的读取速度,那么为加快读取速度,需先将一部分数据加入到内存中(该动作称为缓存),但是内存容量又是有限的,当缓存的数据大于内存容量时,就需要删除一部分数据,以加入新的数据。这时候需要设计一种淘汰机制,计算出哪些数据删除,哪些数据保留,常见的淘汰算法有FIFO、LRU、LFU等淘汰算法,接下来我们将一一讲解及实现。

2024-04-06 15:47:37 674

原创 数据结构篇:深度剖析LSM及与B+树优劣势分析

本文旨在探讨LSM的特性及其在实际应用场景中的作用,同时对其与B+树进行比较,以帮助更好地理解和运用这两种数据结构。

2024-04-06 00:36:52 1607

原创 数据结构篇:深度剖析跳跃表及与B+树优劣分析

本文旨在探讨跳跃表的特性及其在实际应用场景中的作用,同时对其与B+树进行比较,以帮助更好地理解和运用这两种数据结构。

2024-04-05 21:38:06 1304

原创 高并发场景下分布式事务处理方案探讨及代码实现

本文将深入探讨高并发场景下,分布式事务处理的方案。随着互联网的快速发展,对系统性能和稳定性的需求也日益增长,尤其在高并发场景下,分布式事务成为重中之重。在本文中,我将分享我对分布式事务的理论理解,并结合个别典型业务应用场景,最终通过代码实现来展示解决方案。希望通过这篇博客能够对读者在面对类似挑战时提供一些帮助和启发。

2024-04-04 22:56:39 1297

原创 高并发场景下的流量包扣减流程实现

在低并发场景下,直接通过RPC调用进行业务处理通常是一种简单而有效的方案。这种方法不仅省去了复杂的中间件和额外的通信开销,而且配合强一致性的业务逻辑,可以确保数据的一致性。然而,在高并发场景下,这种简单直接的方式可能会显露出其不足之处。

2024-04-02 23:39:57 425

原创 Redis中惰性策略的启发和流量包应用设计

在技术领域,许多中间件之所以获得巨大成功,部分原因在于它们所采用的思想之先进。这些思想解决了一个个世纪难题,接下来我将讲述一个我学习到的思想,并将其应用至工作中的案例。

2024-04-01 23:35:55 974

原创 Redission分布式锁介绍和配置引入

本人在实际项目用于确保Key一致性经常使用的一种加锁方式,帮助分布式环境中互斥访问。很多人问不用锁不是一样完成目标吗?但需要清楚的是这是在高并发的场景下,多节点同时访问缓存的场景,是一般单体项目所无法比拟的,使用锁方式可以控制并发访问,避免缓存击穿和雪崩等问题。(关于缓存击穿和雪崩等后续会出单独一篇文章讲述,敬请期待...),以下我记录了一般引入方式和使用方式。

2024-03-31 23:25:40 499

原创 数据结构篇:基础数据结构认识及编码实现

相信各位在大学数据结构课程便学习了栈、队列和链表的概念,在此我们从编码层面去理解其中的奥义。

2024-03-31 20:35:16 532

原创 算法之美:堆排序原理剖析及应用案例分解实现

这段时间一直在持续更新关于二叉树的专栏文章,我相信小伙伴们对于二叉树的基本原理已经有了初步的了解。接下来,我将会更深入地探究二叉树的原理,并且展示如何将这些原理应用到更广泛的场景中去。文章将延续前面文章的风格,尽量精炼明了,减少冗长的废话,旨在简洁清晰地阐述二叉树的原理及其应用。让我们一起深入了解,并探索其潜在的价值吧!

2024-03-30 20:22:34 1648 2

原创 算法之美:二叉堆原理剖析及堆应用案例讲解及实现

堆(Heap)是计算机科学中一类特殊的数据结构,通常是一个可以被看做一棵完全二叉树的数组对象。完全二叉树只有最下面两层节点的度可以小于2,并且最下层的叶节点集中在靠左连续的边界,只允许最后一层有空缺结点且空缺在右边,完全二叉树需保证最后一个节点之前的节点都齐全;对任一结点,如果其右子树的深度为j,则其左子树的深度必为j或j+1大顶堆是一种完全二叉树,其每个父节点的值都大于或等于其子节点的值,即根节点的值最大,每个节点的两个子节点顺序没做要求,和之前的二叉查找树不一样。

2024-03-29 23:50:40 1221

原创 算法之美:B+树原理、应用及Mysql索引底层原理剖析

在上一篇文章我主要讲解了B-Tree,学习要学牢,讲究举一反三,本篇我将继续讲解B+Tree原理及详细剖析Mysql的B+树应用

2024-03-28 23:36:16 1061

原创 算法之美:二叉树演进之多叉树及B-Tree树原理

在上篇文章我们了解了平衡二叉树的优势,了解到平衡二叉树能够对不平衡的节点施加旋转,使得树达趋于平衡,以提升查询效率,操作效率很高,与之同时也存在着不少的问题,例如我们在实际使用中会通常会将树加载到内存中,如果节点少的话倒没有什么问题,但节点一多,例如上百万的节点,则高度很大,这时候进行一次IO操作就会出现性能问题。关于此问题我们详细展开,平衡二叉树每个节点只存储一个键值和数据的,每个磁盘块仅仅存储一个键值和数据。

2024-03-27 23:52:54 836

原创 算法之美:二叉树演进之AVL平衡二叉树底层原理

在之前的文章中,我们初步了解了二叉查找树(又称二叉排序树),这使我们意识到使用特定策略的查询可以显著提高查找效率。本文将进一步探讨二叉树的演进。由于树相关算法较多且相对复杂,因为我后续将拆解讲述,细嚼慢咽。

2024-03-27 00:00:33 442

原创 分布式应用下登录检验解决方案

JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名。说白了就是通过一定规范来生成token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息。生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库,可以存储在客户端,不占用服务端的内存资源,在前后端分离项目中经常使用。

2024-03-25 23:08:04 456

原创 Spring自定义注解防重提交方案(参数形式&Token令牌)

防重提交通常在需要防止用户重复提交表单或执行某些敏感操作时使用,以确保系统的数据一致性和安全性,本文章集结了通用场景下防重提交(参数形式&Token令牌),采用Java的特性(注解和AOP),配合Redis进行实现,使用方便有效。

2024-03-25 10:57:49 946

原创 第三方支付流程设计及微信支付实现

商户平台对接支付系统使得平台具备了商业价值,支付系统包括了第三方支付和聚合平台,第三方支付是指具备一定实力和信誉保障的独立机构,采用与各大银行签约的方式,通过与银行支付结算系统接口对接而促成交易双方进行交易的网络支付模式,而聚合支付是相对第三方支付而言的,作为对第三方支付平台服务的拓展。第三方支付是介于银行和商户之间的,而聚合支付是介于第三方支付和商户之间。

2024-03-24 21:52:52 1073

原创 算法之美:揭秘中间件中的二分查找与树结构应用

平时写业务代码的时候很少写对应的算法,因为很少会在内存中存储大量数据,在需要比较大量数据的查找时,多会依赖的中间件,而中间件底层就应用了很多不同算法,尤其是树结构的查找存储算法,二分查找算法在树里面有大量应用。

2024-03-24 00:03:04 904 2

原创 冗余双写方案下数据一致性问题解决及延申问题处理方案

主要整理了采用冗余双写方案后的问题解决方案。

2024-03-23 22:59:58 1109 1

原创 分库分表场景下多维查询方案探究

在采用分库分表设计时,通过一个PartitionKey根据散列策略将数据分散到不同的库表中,从而有效降低海量数据下C端访问数据库的压力。例如,生成的短链码散列到不同的数据库抵御了海量消费者的访问压力,但在业务层面上,商家无法查询到自己旗下生成的所有短链码。定义hash对应的库表策略关系,每次生成库表位时,根据商家的唯一标识进行hash,找到固定的库表位,然后将短链写入该库表中。当商家查询时,同样根据商家的唯一标识进行hash,找到可能在的库表,采用笛卡尔积方式将数据查出,此种方式不触发全库表路由。

2024-03-21 23:31:53 266

原创 分库分表数据扩容方案探究—思维链

为了有效解决数据量不断增加从而导致的数据库访问性能降低的问题,采用了分库分表的方案,但这种方式也会带来新的难题,如后续的数据扩容难度增大。面对该问题进行了方案探讨。(温馨提示:本文没有过多的干货,更多为推理过程。)

2024-03-19 22:50:52 395

原创 短链码生成方案探讨—思维链

前段时间在做短链平台项目时,对短链码的生成进行了研究,我将思维活动和方案探讨过程进行了记录。(温馨提示:本文没有过多的干货,更多为推理过程。)

2024-03-17 16:12:26 425

原创 布隆过滤器原理介绍和典型应用案例

1970年由布隆提出的一种空间效率很高的概率型数据结构,它可以用于检索一个元素是否在一个集合中,由只存0或1的位数组和多个hash算法, 进行判断数据 【一定不存在或者可能存在的算法】如果这些bit数组 有任何一个0,则被判定的元素一定不在;如果都是1则被检元素很可能在对比bitmap位图,布隆过滤器适合更多类型元素,通过hash值转换原理:将元素添加到一个bitmap数组中,每个散列函数将元素映射到bitmap数组中的一个位置。如果该位置已经被占用,则将该位置置为1,否则置为0。

2024-03-16 11:54:21 898 3

原创 BitMap位图理解及典型应用案例

本质上是哈希表的一种应用实现,原理简单,以 bit 为单位构建数组的方案,就叫作 Bitmap,翻译为位图。即bit 的集合;使用一个bit表示状态, 两种状态 (0不存在和1存在) 使用最少字节的类型来定义数组,即标识。位图适合对【数值类型】的海量数据进行查询统计、排序、去重 和 对两个集合做交集、并集运算;bitmap在数据连续的时候,非常节省空间,但是在数据稀疏的时候,会有极大的浪费,当出现hash碰撞时可能映射到同个位置;

2024-03-16 11:01:52 910 1

原创 页面跳转重定向3xx状态码区别

301 是永久重定向,会被浏览器硬缓存,第一次会经过短链服务,后续再访问直接从浏览器缓存中获取目标地址。短地址一经生成就不会变化,所以用 301 是同时对服务器压力也会有一定减少,但是如果使用了 301,无法统计到短地址被点击的次数,所以选择302虽然会增加服务器压力,但是有很多数据可以获取进行分析,选择使用302,这个也可以对违规推广的链接进行实时封禁。最近开发项目有遇到了这个流程,用户访问短链码重定向到真实地址,服务器重定向返回301还是302状态?

2024-03-14 23:25:20 342 2

原创 分库分表的利弊分析与探究

1)解决数据库本身瓶颈连接数过多时,就会出现‘too many connections’的错误,访问量太大或者数据库设置的最大连接数太小的原Mysql默认的最大连接数为100.可以修改,而mysql服务允许的最大连接数为16384数据库分表可以解决单表海量数据的查询性能问题数据库分库可以解决单台数据库的并发访问压力问题2)解决系统本身IO、CPU瓶颈磁盘读写IO瓶颈,热点数据太多,尽管使用了数据库本身缓存,但是依旧有大量IO,导致sql执行速度慢。

2024-03-13 21:27:54 978 1

原创 哈希表原理和冲突碰撞解决方案

读操作 :把Key通过哈希函数转化成数组下标, 即bucket桶的位置,找到bucket下标所对应的链表 ListNode,判断链表的第一个Entry的key是否正确,正确则直接获取对应的value;存操作:当发生冲突时,将冲突的元素放在散列表中的桶里,每个桶里存放一个链表 ListNode,将冲突的元素放到链表中,每个元素都存储在链表的一个节点中;当发生冲突时,将冲突的元素放到一个公共的溢出区中,公共溢出区中的元素,使用链表组织起来。冲突处理方案3——建立公共溢出区。Hash碰撞问题处理方案。

2024-03-12 12:04:52 356 1

原创 池化思想应用-Redis6.X配置连接池实战

【代码】池化思想应用-Redis6.X配置连接池实战。

2024-03-10 22:20:05 351 1

原创 多线程实例:线程池+Http连接池提高多个核心接口QPS

【代码】多线程实例:线程池+Http连接池提高多个核心接口QPS。

2024-03-10 18:57:48 411

原创 设计模式之结构型模式

设计模式是众多开发人员对于一类或多类问题的思考和总结,针对一系列问题所形成的解决方案,运用好这些设计模式可以使得我们的代码提高代码的可重用性、可维护性、可拓展性和可读性(对于设计模式有一定理解的开发者来说)。设计模式是由4位作者,合称为GOF所提出,主要基于以下面向对象的设计原则:1)对接口编程而不是对实现编程;2)优先使用对象组合而不是继承;出自该书:Design Patterns - Elements of Reusable Object-Oriented Software.

2024-02-22 19:50:25 857

原创 HbuilderXuni-app项目转vue-cli项目

前段时间用Hbuilder开发uni-app应用,后需打包利用jenkins运维工具持续集成,需转为vue项目,特此记录。

2024-02-18 09:01:44 545

空空如也

空空如也

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

TA关注的人

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