自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (1)
  • 收藏
  • 关注

原创 分布式系统的ID生成方案

在分布式系统中,唯一标识符(ID)的生成是一个重要的问题。传统的自增长主键在分布式系统中无法直接使用,因为每个节点都有可能生成重复的ID。因此,我们需要设计一种分布式系统中能够生成唯一ID的方案。本文将介绍几种常见的分布式ID生成方案,包括雪花算法、数据库序列、UUID等,并分析其优劣势,并结合 Java 代码和使用场景进行说明。

2024-02-22 07:30:00 1214

原创 如何解决缓存一致性的问题

当缓存中的数据与后端数据源中的数据不一致时,会导致系统出现数据不一致的情况。例如缓存中的数据已过期或被删除,但用户仍然从缓存中获取了过时的数据,这可能会导致系统的错误行为或不一致状态。缓存一致性解决方案的重要性不言而喻,通过在Java中实现合适的缓存一致性解决方案,并结合实际场景进行缓存架构优化,可以有效地提升系统的性能、稳定性和可靠性,满足用户的需求和期望。缓存可以显著提高系统的响应速度和性能。当缓存失效或数据不一致时,系统需要额外的开销来处理缓存一致性问题,可能会导致系统的性能下降和吞吐量减少。

2024-01-26 08:00:00 1204

原创 穿越时光的镜头:2023回顾与2024展望

2023 年就像一本充满着惊喜和挑战的书籍,它的每一页都留下了我生活中不同的痕迹。回顾过去,我发现了许多意想不到的成长和启示,也体验了生活的起起伏伏。这篇文章是对 2023 年的一个小小总结,也是对未来的一点期许。在这里,我想分享一些感悟和思考,和小伙伴们一起探讨过去和未来的点滴。

2023-12-31 15:53:20 1136 1

原创 如何在Linux上使用Java命令排查CPU和内存问题

以上是在 Linux 上使用命令行排查 Java 应用程序 CPU 和内存问题的方法。这些命令提供了对 Java 进程进行基本的性能监视和诊断的手段,同时 VisualVM 则提供了更多功能和图形化界面,方便进行更深入的分析和调优。希望这些命令和工具能够帮助小伙伴们快速定位和解决 Java 应用程序的性能问。

2023-12-27 08:15:00 1917

原创 如何利用flume进行日志采集

Apache Flume 是一个分布式、可靠、高可用的日志收集、聚合和传输系统。它常用于将大量日志数据从不同的源(如Web服务器、应用程序、传感器等)收集到中心化的存储或数据处理系统中。Apache Flume 是一个强大的数据收集和传输工具,可以轻松地处理大量的数据流。使用本文提供的示例和概念,可以开始使用 Flume 并适应不同的数据采集和传输需求。本篇文章就介绍到这里,感兴趣的同学可以自己去深入研究,使用flume完成日志采集、关键字告警等一整套的业务。

2023-12-24 12:33:57 2841 1

原创 ZooKeeper 使用介绍和原理详解

ZooKeeper是一个开源的分布式协调服务,为分布式系统提供高效的管理和协调机制。它被广泛应用于解决分布式系统中的各种共识问题,如配置管理、命名服务、分布式锁、分布式队列、选举算法等。

2023-12-22 14:35:14 1500

原创 windows10/11安装和使用docker

最近在linux服务器上使用docker安装软件很方便快捷,但是linux服务器是公司的需要连vpn才行,不太方便,就想着在自己windows电脑上装一个docker玩玩(主要是方便,安装mysql什么的几个命令行就完事儿),当然大家电脑配置够用的话也可以在自己电脑上安装linux虚拟机。

2023-12-21 16:59:48 1446 1

原创 MySQL主从架构及读写分离实战

两台服务器,均安装CentOS7。​ 1、192.168.232.128 作为mysql主节点部署​ 2、192.168.232.129 作为mysql从节点部署mysql版本:mysql-8.0.20为了便于使用,两个mysql服务需要打开远程登录权限,开启方式需要在本机登录mysql,执行以下语句。#开启远程登录use mysql;

2023-12-21 10:57:36 1450

原创 如何从0搭建一个自己的网站

云服务器不用买太贵的,差不多够用就行,新用户都有折扣,我买的是华为云ECS2核2G的服务器,¥88一年,之前买的阿里云,买的两年也是一百多。后端服务是我自己搭建的,mysql表结构需要自己设计,功能比较简单,将前后端服务联调通,能够正常发布浏览博客就行,给大家看一下页面效果。大概的过程就是这么多,其中开发的细节占用的比较长,主要是前端部分不太熟,踩了好多坑,最终的效果个人还是比较满意的,就是没有人访问哈哈哈。选购自己喜欢的域名,进行注册购买,下面是各个域名厂商的注册地址,我用的是腾讯云域名注册的。

2023-12-19 16:57:51 948

原创 Redis持久化、主从与哨兵架构详解

master会在其内存中创建一个复制数据用的缓存队列,缓存最近一段时间的数据,master和它所有的slave都维护了复制的数据下标offset和master的进程id,因此,当网络连接断开后,slave会请求master继续进行未完成的复制,从所记录的数据下标开始。如果开启了混合持久化,AOF在重写时,不再是单纯将内存数据转换为RESP命令写入AOF文件,而是将重写这一刻之前的内存做RDB快照处理,并且将RDB快照内容和增量的AOF修改内存数据的命令存在一起,都写入新的AOF文件,新的文件一开始不叫。

2023-12-19 15:37:09 1683

原创 Java并发课程总结

编译器或运行时环境为了优化程序性能而采取的对指令进行重新排序的一种手段,也就是说程序运行的顺序与我们所想的顺序是不一致的,虽然它遵循as-if-serial语义,但还是无法保证多线程环境下的数据安全底层是通过一个内部类Sync,来实现公平锁和非公平锁,自己实现一把锁,只需要实现AbstractQueuedSynchronized接口,内部已经实现了入队,出队,阻塞等逻辑,只需要重写,tryAquire()和release方法。公平锁failSync()非公平锁。

2023-12-17 17:53:39 863

原创 JVM类加载机制详解及双亲委派机制分析

自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findClass方法。try {//defineClass将一个字节数组转为Class对象,这个字节数组是class文件读取后最终的字节数组。

2023-12-15 13:53:48 880

原创 Kafka快速实战与基本原理详解

Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、Storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源 项目。

2023-12-15 13:03:47 1307

原创 一条SQL在MySQL中是如何执行的

mysql

2023-12-06 17:22:32 822

原创 利用java调用谷歌浏览器驱动进行网页截图

最近做项目,需要用到截图的功能,就是给一个url地址,然后自动打开,截取出一个封面图片,保存到服务器上。前端有js可以支持截图,像phantomjs等js插件都可以实现,但是效果不是很好,有些页面渲染不出来。phantom.js使用方法https://www.jianshu.com/p/074d7ab370e3本次就介绍java使用chromedriver.exe谷歌浏览器驱动进行网...

2018-12-13 18:57:45 4055 12

原创 Springcloud微服务搭建(springboot+springcloud+lcn分布式事物)

 单体架构:        起初的web服务都是单体架构,不管多少个模块都在一个项目里面,随着项目模块越来越多,客户量的不断增长,导致系统的负重越来越大,模块达不到高可用,扩展性差,无法满足并发的要求等问题亟待解决。所以引出微服务架构。微服务架构:         微服务架构就是把单体架构的应用的不同功能拆分成一系列小的web服务,这些小的web服务可以拥有自己私有的数据持久化业务...

2018-12-13 17:00:59 2298

原创 数据过滤方案:布隆过滤器

空间效率高:布隆过滤器使用位数组和哈希函数实现,相比传统的数据结构,它的存储空间通常要小很多。查询速度快:布隆过滤器的查询操作只需要计算哈希函数并检查位数组的对应位置,时间复杂度为 O(k),其中 k 是哈希函数的个数,与集合大小无关。可扩展性好:布隆过滤器支持动态插入和删除操作,可以根据需要动态调整位数组的大小和哈希函数的个数。误判率可控:通过合理设置位数组的大小和哈希函数的个数,可以在一定范围内控制布隆过滤器的误判率,使其满足实际应用需求。

2024-03-04 14:47:02 1356

原创 探索MyBatis-Plus的高阶用法

MyBatis-Plus 允许自定义全局操作,比如自定义全局的查询条件、插入前操作、更新前操作等。通过实现接口可以实现自定义 SQL 注入器,通过实现接口可以实现字段自动填充等。@Component@Override@OverrideMyBatis-Plus 是一个非常优秀的 MyBatis 增强工具包,它在简化开发、提高效率、提升性能等方面都有着显著的优势,是开发中不可或缺的利器。希望本文对读者对 MyBatis-Plus 的了解有所帮助,欢迎大家深入学习和使用 MyBatis-Plus。

2024-03-03 10:01:50 1272

原创 分布式系统中常用的缓存方案

在设计分布式系统时,选择合适的缓存方案对系统的性能和可伸缩性至关重要。以下是常见的几种缓存方案的概述:常用的缓存架构缓存方案在提升系统性能、减轻后端负载以及改善用户体验方面发挥着重要作用。不同的缓存方案具有各自的优点和缺点,需要根据具体的业务需求和场景来选择合适的方案。内存数据库提供了高性能的数据存储和丰富的数据结构支持,适用于对读写速度要求高的场景;分布式缓存具有良好的可扩展性和高可用性,适用于大规模数据存储和高并发访问的场景;

2024-03-03 09:40:58 1163

原创 分布式任务调度:XXL-Job入门介绍实战

XXL-Job 是一款开源的分布式任务调度平台,由阿里巴巴开发团队提供支持。它提供了完整的任务调度和管理功能,能够帮助用户实现分布式环境下的任务调度、执行和监控。XXL-Job具有轻量、易用、稳定的特点,广泛应用于各种业务场景。通过本文的介绍和实战演示,读者可以快速了解并上手使用 XXL-Job 进行任务调度管理。XXL-Job 提供了简单易用的界面和丰富的功能,能够满足各种任务调度需求,是一款值得推荐的分布式任务调度平台。

2024-03-01 12:08:55 1118

原创 JMM内存屏障和逃逸分析详解

Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JMM描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私有数据区域的访问方式,JMM是围绕原子性、有序性、可见性展开的。

2024-03-01 09:50:13 1085

原创 MongoDB多文档事务详解

事务(transaction)是传统数据库所具备的一项基本能力,其根本目的是为数据的可靠性与一致性提供保障。而在通常的实现中,事务包含了一个系列的数据库读写操作,这些操作要么全部完成,要么全部撤销。例如,在电子商城场景中,当顾客下单购买某件商品时,除了生成订单,还应该同时扣减商品的库存,这些操作应该被作为一个整体的执行单元进行处理,否则就会产生不一致的情况。原子性(atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。一致性(consistency)

2024-02-29 11:21:26 1355

原创 探索Redis 6.0的新特性

特性/改进Redis 6.0旧版本深度嵌套的从复制支持深度嵌套的从复制,构建多级从节点拓扑结构仅支持单级从节点拓扑结构线程模型改进引入新的I/O线程,更好地利用多核处理器性能线程模型相对简单,性能受限新的RDB版本引入RDB版本 9,处理大型数据库性能更优旧版本存在性能瓶颈,处理大规模数据效率低慢查询日志改进引入新的命令,更灵活地检索和分析慢查询日志慢查询日志功能相对简单,缺乏灵活性TLS支持新增对TLS的支持,保护数据在传输过程中的安全性缺乏对传输层安全性的支持。

2024-02-29 08:11:15 1357

原创 ZAB 协议解析:ZooKeeper分布式一致性的核心

ZAB 协议全称:Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。Zookeeper 是一个为分布式应用提供高效且可靠的分布式协调服务。在解决分布式一致性方面,Zookeeper 并没有使用 Paxos ,而是采用了 ZAB 协议,ZAB是Paxos算法的一种简化实现。ZAB 协议定义:ZAB 协议是为分布式协调服务 Zookeeper 专门设计的一种支持 崩溃恢复 和 原子广播 的协议。下面会重点讲这两个东西。

2024-02-28 09:41:14 1271

原创 分布式架构下,Session共享有什么方案?

在分布式架构下,Session 共享是保证用户会话状态一致性的关键问题之一。采用无状态服务,抛弃 Session;存入 Cookie(有安全风险);服务器之间进行 Session 同步;IP 绑定策略;使用 Redis 存储。每种方案都有其优缺点,适用于不同的场景和需求。在选择合适的方案时,需要综合考虑安全性、性能、可靠性等因素,并根据实际情况进行权衡和取舍。

2024-02-28 08:44:00 1047

原创 架构设计:生产消费模型

通过本文的学习,读者可以更好地理解生产消费模型在软件架构设计中的重要性和应用场景,掌握如何利用不同的实现方式和工具来构建高效、可靠的生产消费系统。生产消费模型作为一种经典的并发模式,在分布式系统和大规模数据处理领域有着广泛的应用,希望本文能够为大家提供有益的参考和指导。

2024-02-27 13:12:39 1667

原创 MySQL8:开启数据库管理的新时代

MySQL 8.0相对于MySQL 5.7具有更多的功能和改进,适用于需要更高级特性和更好性能的应用场景。特别是对于需要JSON数据类型、窗口函数、嵌套查询优化、自适应哈希索引、增强的地理空间支持等功能的应用场景。特性/区别MySQL 5.7MySQL 8.0JSON 数据类型支持支持Window Functions 窗口函数不支持支持嵌套查询优化不支持支持自适应哈希索引不支持支持增强的地理空间支持不支持支持。

2024-02-27 09:24:32 1085

原创 Spring中的事务是如何实现的

在使用Spring框架进行开发时,事务管理是一个非常重要的功能,可以确保数据的一致性和完整性。但有时候我们会遇到事务失效的情况,导致数据不一致或者丢失。本文将探讨Spring事务的特性和常见问题。

2024-02-26 15:09:09 937

原创 Hadoop技术解析:分布式存储与计算

Hadoop是一个开源的分布式计算平台,用来处理大规模数据集。它基于Google的MapReduce算法和Google文件系统(GFS)的论文实现,通过分布式存储和计算来处理大规模数据。

2024-02-26 11:23:27 1133

原创 架构设计:流式处理与实时计算

在大数据领域,流式处理和实时计算是处理实时数据的关键技术,不同的框架则提供了各自独特的特点和优势。在选择合适的框架时,需要综合考虑业务需求、技术栈、团队技术水平以及系统规模等因素。无论选择哪种框架,都需要根据实际情况进行灵活应用,不断优化和改进,以实现更高效、更可靠的实时数据处理系统。Flink vs. Spark:特点、区别和使用场景_spark和flink应用场景区别-CSDN博客Kafka快速实战与基本原理详解-CSDN博客。

2024-02-25 13:43:42 1050

原创 架构设计:微服务架构实践

微服务架构是一种将应用拆分成一组小型、松耦合的服务的架构设计思想。每个微服务都有自己独立的数据库和业务逻辑,服务之间通过轻量级的通信机制进行通信,如 RESTful API 或消息队列。松耦合性:每个微服务都是相对独立的,可以独立开发、部署和扩展,降低了服务之间的依赖性。可伸缩性:由于每个微服务都是独立部署的,可以根据需求对每个服务进行独立的扩展,提高了系统的可伸缩性。灵活性:微服务架构可以更好地满足不同业务需求的变化,可以根据需求快速构建、修改和发布新的服务。技术多样性。

2024-02-25 13:09:53 1009

原创 架构设计:缓存技术的应用与挑战

缓存技术作为一种常见的性能优化手段,在架构设计中发挥着重要作用。通过合理的缓存使用场景选择、常见问题的解决方案等措施,可以有效提高系统的性能和响应速度。在应用缓存技术时也需要注意一些常见问题,并通过合适的解决方案来规避和解决这些问题。希望本文的内容能够帮助大家更好地理解缓存技术的原理和实践应用,在架构设计中更好地利用缓存技术提升系统性能。

2024-02-24 08:33:53 635

原创 架构设计:数据库扩展

数据库扩展是解决数据库大数据量下性能瓶颈和存储容量不足等问题的重要手段。水平拆分、垂直拆分和分布式数据库是常见的数据库扩展方式,它们各自适用于不同的场景和需求。在实际应用中,需要根据业务特点和数据特性选择合适的数据库扩展方案,以实现数据库的高效扩展和优化。随着技术的不断进步和创新,数据库扩展领域也将迎来更多的发展机遇和挑战。通过本文的介绍,相信读者对数据库扩展的各种方式和实践经验有了更深入的了解,希望能够为实际的架构设计和数据库优化提供一些参考和启发。

2024-02-24 07:22:26 819

原创 如何通过Jenkins进行自动化构建项目

Jenkins是一个开源的持续集成(CI)和持续交付(CD)工具,旨在自动化软件开发过程中的构建、测试和部署。它是一个基于 Java 编写的自动化服务器,在软件开发生命周期的各个阶段提供自动化支持。Jenkins 用户手册Jenkins 是一个流行的持续集成和持续交付工具,它具有许多优势,使其成为开发团队的首选工具之一。Jenkins 是开源软件,免费提供给用户使用。这使得任何人都可以自由地使用和定制 Jenkins,而不需要支付额外的费用。

2024-02-23 09:44:45 1998

原创 架构设计:如何保证接口幂等性

所谓幂等性设计,就是说,一次和多次请求某一个资源应该具有同样的副作用。用数学的语言来表达就是:f(x) = f(f(x))。比如,求绝对值的函数,abs(x) = abs(abs(x))。为什么我们需要这样的操作?说白了,就是在我们把系统解耦隔离后,服务间的调用可能会有三个状态,一个是成功(Success),一个是失败(Failed),一个是超时(Timeout)。前两者都是明确的状态,而超时则是完全不知道是什么状态。

2024-02-23 08:15:54 1082

原创 架构设计:部署升级策略

部署应用有很多种方法,实际采用哪种方式取决于需求和预算。当发布到开发或者模拟环境时,停机或者滚动部署是一个好选择,因为干净和快速。当发布到生产环境时,滚动部署或者蓝绿部署通常是一个好选择,但新平台的主流程测试是必须的。

2024-02-22 09:00:00 824

原创 探索Java中的神秘问题

Java 中的神秘问题源于语言的特性和开发人员对语言特性的理解,正确地理解和使用这些特性有助于编写更加健壮和可靠的代码。在实际开发中应该深入了解 Java 的各种特性,并注意避免因为误解导致的错误结果。

2024-02-22 08:48:52 832

原创 程序员为什么不喜欢关电脑?

嗯,想象一下,你正在进行着一项重要的项目,打开了一大堆编辑器、终端和浏览器,然后突然有紧急任务需要处理。所以,为了省事儿,我们通常更愿意让电脑一直开着,以便随时投入工作。更糟糕的是,有时候我们可能需要在非工作时间进行紧急的修复或者处理,一关电脑,我们就没法第一时间做出响应了。所以,综合来看,作为程序员,我们不太愿意关掉电脑可能是因为工作便捷性、数据安全性、及时响应能力以及个人习惯等多方面的原因。尽管有时候我们可能会因为特殊情况而不得不关机,但通常情况下,我们更愿意让电脑一直开着,方便我们随时投入工作。

2024-02-21 16:15:31 390

原创 ES底层原理深度剖析

在实际应用中,我们可以根据具体的业务需求和性能要求,合理地设计和配置 Elasticsearch 的索引结构、数据存储方式、写入流程和读取流程等,以达到最佳的性能和可用性。也需要注意监控和调优 Elasticsearch 集群的各项指标和参数,及时发现和解决潜在的性能问题和故障,确保系统的稳定运行。

2024-02-21 10:21:29 1185

原创 深入理解Java重试策略:构建健壮的分布式应用程序

Spring Retry 是 Spring Framework 的一个模块,它提供了一套用于处理失败重试的功能。它允许我们在方法调用失败时自动重试,以应对一些可能是暂时性的故障,例如网络故障、外部服务不可用等。Spring Retry 支持配置灵活、易于集成,并且与 Spring 生态系统完美集成。通过使用重试机制,我们可以提高 Java 应用程序在面对异常情况时的稳定性和可用性。本文提供了一个简单的示例代码,演示了如何使用 Apache Commons Lang 实现简单的重试机制。

2024-02-21 10:08:10 916

TonglinkQ8.0东方通jms消息中间件TONGLINK/Q,v8.0版本

TongLINK/Q是和IBM MQ相近的消息中间件,其最主要的功能是保证消息的一致性,举一个例子,如果一个应用从socket中接收了银行A发来的数据,在处理数据过程中,应用程序崩溃,这时,银行A数据就会丢失,银行业务数据就核对不上,如果采用TongLINK/Q,以事务方式从TongLINK/Q中收消息,同样是应用程序崩溃,这时,TongLINK/Q事务回退,数据就不会丢失,应用程序重启后,可以接着从消息队列取出消息继续处理,如果设置了回退次数,超过一定的次数,消息进入死信队列。这样,不论应用程序写的是否正确,运行情况如何,消息不会丢。 TongLINK/Q保证在应用程序崩溃,进程被杀死(包括TongLINK/Q所有的核进程),IPC资源被误删除,机器重启,断网,网络丢包,内存耗尽,硬盘空间耗尽等各种异常情况下,TongLINK/Q都能保证事务的一致性,保证消息不丢不重复。由于以上特性,对于可靠性要求很高应用程序,底层可采用TongLINK/Q,这样,应用程序开发者就不用再考虑应用程序被杀死或崩溃时丢消息的问题。 TongLINK/Q的其它功能,如消息顺序保证、路由备份,路由选择,集群

2023-12-25

大数据学习之flink介绍及实战

ppt包含以下内容,主要是针对flink框架进行介绍,以及使用过程中的一些技巧,欢迎对flink框架感兴趣的同学进行下载学习,也欢迎大家访问个人博客网站https://memoryab.cn,后续会不定期更新。 一、Flink简介 二、Flink任务流程 三、Flink监控 四、Flink的扩展

2023-12-14

java-flink1.12代码demo

里面有一些使用java flink实现的实时流处理任务demo代码,感兴趣的同学可以下载学习使用。

2023-12-14

jxbrowser6.14.jar

jxbrowser6.14破解版jar包 导入项目可以直接使用,java内嵌浏览器最好的方式,欢迎大家下载

2018-12-13

空空如也

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

TA关注的人

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