自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 项目构建基础-统一结果,统一异常,统一日志

统一结果类 第5个属于自定义返回,利用前4者可定义统一返回对象注意:控制层返回 视图层使用统一结果 json结果统一结果类的使用参考了mybatis-plus中R对象的设计因此,我们需要定义一个统一的全局异常来捕获这些信息,并作为一种结果返回控制层该注解为统一异常处理的核心该类中的设计思路:统一异常处理器控制层展示以下为展示当遇到null指定异常时,返回的结果信息统一日志收集日志的框架比较丰富,由于spring boot对

2022-06-19 17:14:52 98

原创 聊聊Dubbo的架构原理

对于以上的3个核心功能,Dubbo有涉及到哪些组件角色,来协作完成分布式治理的呢? 调用关系说明: 上面介绍给出的都是抽象层面的组件关系,可以说是纵向的以服务模型的组件分析,其实Dubbo最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。所以,我们横向以分层的方式来看下Dubbo的架构,如图所示: Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消

2022-06-19 14:55:57 107

原创 十分钟搭建微服务框架(SpringBoot +Dubbo+Docker+Jenkins源码)

这套系统搭建完之后,那可就厉害了:微服务架构 你的整个应用程序将会被拆分成一个个功能独立的子系统,独立运行,系统与系统之间通过RPC接口通信。这样这些系统之间的耦合度大大降低,你的系统将非常容易扩展,团队协作效率提升了N个档次。这种架构通过眼下流行的SpringBoot和阿里巴巴吊炸天的Dubbo框架来实现。容器化部署 你的各个微服务将采用目前处于浪潮之巅的Docker来实现容器化部署,避免一切因环境引起的各种问题,让你们团队的全部精力集中在业务开发上。自动化构建 项目被微服务化后,各个服务之间的关系错中复

2022-06-19 14:49:49 1861

原创 微服务架构原理与开发实战

最近几年软件开发方法层出不穷,微服务作为一种主流的架构模式一直热度不减。为了帮助广大程序员们更好更快地理解微服务的概念,学习微服务在项目中的实践,本书全面阐述了微服务架构模式的特点、架构思路、设计理念、技术框架及具体的代码实战,以软件开发过程中遇到的各种疑难问题为切入点,逐步解析微服务架构是如何设计及解决这些问题的。书中使用主流技术框架进行演示,采用通俗易懂的图例和真实的项目事例来阐述遇到问题时的解决思路和做法,并附有具体的实践演示,读者可以跟随本书进行代码试验,理解并运用微服务技术架构的理解和运用,了解微

2022-06-17 20:29:24 1368 3

原创 kafka!还好我留了一手

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。本文面试情节虚假,但知识真实,请在家人或者朋友的陪同下仔细观看,防止在观看的过程发呆、走神导致没学到知识。一位身穿格子衬衣,头发好似一拳超人的中年人走了过来,没错他就是面试官,他手握简历,若有所思,我当时害怕极了,然后他开口:小伙子啊,我们这边是基础架构的中间件组,既然你的简历没提到kafka,那我接下来问问你kafka的知识吧。我:好的,kafka平时看的不多,但也还了解一点,不是特别精通所以没写了。(嘿嘿,我是故意没写的,早就知道你要来这一套,k

2022-06-17 19:36:49 151

原创 5种限流算法,7种限流方式,挡住突发流量?

最近几年,随着微服务的流行,服务和服务之间的依赖越来越强,调用关系越来越复杂,服务和服务之间的稳定性越来越重要。在遇到突发的请求量激增,恶意的用户访问,亦或请求频率过高给下游服务带来较大压力时,我们常常需要通过缓存、限流、熔断降级、负载均衡等多种方式保证服务的稳定性。其中限流是不可或缺的一环,这篇文章介绍限流相关知识。限流顾名思义,就是对请求或并发数进行限制;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限,就需要对调用我们服务的上游请求进行限制,以防止自身服务

2022-06-16 21:36:18 391

原创 事务、全局索引、透明分布式,再见,分区健

——陈默(墨城)阿里云数据库技术专家了解更多PolarDB-X 内容:developer.aliyun.com/topic/polar…在刚刚发布的PolarDB-X 2.1.0版本中,开源了透明分布式能力,能带给用户完全不同的透明分布式数据库使用体验。其中,一个最明显的不同,就是用户不再需要关注分区健这个概念,这也是副标题《再见,分区健》的来由。1970 年代末,分区的概念首先在并行数据库系统中出现,用来代表一组记录的集合。在并行数据库中,表首先按照某种规则被切分为若干分区,每个分区存入数据库节点,每个数

2022-06-16 21:28:03 106

原创 Java多线程:从基本概念到避坑指南

多核的机器,现在已经非常常见了。即使是一块手机,也都配备了强劲的多核处理器。通过多进程和多线程的手段,就可以让多个CPU同时工作,来加快任务的执行。多线程,是编程中一个比较高级的话题。由于它涉及到共享资源的操作,所以在编码时非常容易出现问题。Java的concurrent包,提供了非常多的工具,来帮助我们简化这些变量的同步,但学习应用之路依然充满了曲折。本篇文章,将简单的介绍一下Java中多线程的基本知识。然后着重介绍一下初学者在多线程编程中一些最容易出现问题的地方,很多都是血泪经验。规避了这些坑,就相当于

2022-06-16 16:56:42 226

原创 「论道架构师」拒绝无脑搬砖,从分库分表开始

6月初我负责的商家数据某功能由于业务原因导致数据量不断上涨,当时使用的MySQL单表已经难以提供高效的查询,因此基于商家维度(商家主键ID)对它进行了分表,问题得以解决。6月中旬我沉浸在无止尽的需求之中,边做边发出感慨:进大厂又能怎么样呢,还不是CRUD,面试造火箭罢了。此时,架构师笑了笑,于是乎有了本篇文章。亮架构:说一下你上次分表的实现方案吧,Kerwin。我:我是参照其他系统的方式进行的,利用对100取模,由此计算出它应该落在哪一张表,唯一的变动就是这个环节以及数据迁移了。大概思路如下:亮架构:

2022-06-16 16:49:18 122

原创 Java项目中枚举定义以及使用

最近写新项目!有很多数据字典常量需要定义和使用、就顺便记录一下、什么是枚举类呢?就是用enum修饰是一种Java特殊的类,枚举是class、底层是继承了java.lang.Enum类的实体类、使用枚举可以很方便的定义数据常量、方便清晰我们使用下面就举例说明一下吧1)出于类型安全考虑,没用枚举类之前,常用静态常量来表示。 比如对于性别的表示:这种性别定义实际上是一个整数数据类型。首先,这些变量可用于加减运算。当然我们很少这样干 第二,含义不明确。我们调试的时候,最初将“男”输出到,结果为1。因此,我们必

2022-06-16 16:38:47 2016

原创 Java异常架构与异常关键字

Java异常是Java提供的一种识别及响应错误的一致性机制。Java异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。 Throwable 是 Java 语言中所有错误与异常的超类。Throwable 包含两个子类:Error(错误)和 Exception(异常),它们通常用于指示发生了异常情况。Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。定义:Error 类及其子类。程序

2022-06-16 16:03:31 653

原创 面试请不要再问我Spring Cloud底层原理

一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七、总结实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析一下其底层的工作原理。也就是Eureka、Ribbon、Feign、Hystrix、Zuul这几个组件。先来给大家说一个业务场景,假

2022-06-15 19:59:19 102

转载 一图搞懂扫码登录的技术原理

现在扫码登录是一种很常见的登录方式。当用户需要登录某个网站时,网站会提供一种扫码登录的方式,用户打开相应的手机App,扫描网站上显示的二维码,然后在App中确认登录,网站监测到用户确认登录后,跳转到登录成功页面。从这个形式上看,扫码登录就是将用户在手机App中的登录状态同步到网站中,这篇文章就来一窥这个同步是如何发生的。假设有一款产品,这个产品通过手机端App和PC端应用为用户提供服务,为了方便用户在PC端上登录,产品提供了一个扫码登录的功能,即PC端应用上展示一个登录二维码,用户使用手机端App扫码并确认

2022-06-15 15:46:00 2952 2

原创 架构师成长路线图

Danist Soh@Unsplash软件架构师在软件开发团队中扮演着高级的角色,这一角色需要时间和经验的积累,需要跨职能的技能和知识。除了技术方面的挑战,还要求架构师具备良好的社交能力。在开始考虑成为软件架构师的计划之前,我们先来看看典型的软件架构师类型:我们可以进一步扩展这个列表,每个公司可能对某个特定职位有不同的名称。上述给定的软件架构职位的角色和职责可能因公司而异,但本质是相同的。请看下面的图表,以便更好的理解不同架构师角色在技术/业务技能和知识方面的关系。业务与技术关系图到目前为止,有一件事应该非

2022-06-15 15:43:36 1179

原创 Redis 做接口限流,一个注解的事!

Redis 除了做缓存,还能干很多很多事情:分布式锁、限流、处理请求接口幂等性。。。太多太多了~今天想和小伙伴们聊聊用 Redis 处理接口限流,这也是最近的 TienChin 项目涉及到这个知识点了,我就拎出来和大家聊聊这个话题,后面视频也会讲。首先我们创建一个 Spring Boot 工程,引入 Web 和 Redis 依赖,同时考虑到接口限流一般是通过注解来标记,而注解是通过 AOP 来解析的,所以我们还需要加上 AOP 的依赖,最终的依赖如下:然后提前准备好一个 Redis 实例,这里我们项目

2022-06-15 15:33:45 328 1

原创 线程池监控和动态配置

线程池是一种 “池化” 的线程使用模式,通过创建一定数量的线程,让这些线程处于就绪状态来提高系统响应速度,在线程使用完成后归还到线程池来达到重复利用的目标,从而降低系统资源的消耗。使用线程池,有如下优势为了能更好的控制多线程,JDK 提供了一套 框架,其本质就是一个线程池,它的核心成员如下。常用方法 常用方法如下避免使用Executors创建线程池根据阿里《Java开发手册》,要避免使用 创建线程池,推荐使用 创建线程池。Java 中,线程池的实现类是 ,其构造函数如下。 :线程池核心线程数

2022-06-15 15:30:12 1994

原创 深入理解JMM以及并发三大特性

并发和并行的单核处理器,但是,使得宏观上具有多个进程同时执行的效果,但是微观上并不是同时执行的,只是把时间段分成若干段,使多个进程快速交替的执行: 并发解决什么问题: 并行在多核处理器系统中存在,而并发在单核和多核处理器中都存在并发的三大特性出现线程安全问题的原因: Thread.yield()能保证可见性吗: ,即便使用Thread.yield()释放CPU时间片,也会认为while优先级最高,导致while的效果看起来一直占用CPU时间片,这样有种,如果核数有限,优先级比较低的线程抢占不到时间片,就可能

2022-06-15 15:14:47 279

原创 Kafka

Kafka是一种分布式、高吞吐量的分布式分布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,主要应用于大数据实时处理领域。类比来说,kafka是一个邮箱,生产者是发送邮件的人,消费者是接收邮件的人,Kafka是用来存东西的,只不过它提供了一些处理邮件的机制。特点优点:缺点Kafka的使用场景1、消息队列功能:在系统或应用程序之间构建可靠的用于传输实时数据的管道2、数据处理功能:在系统或应用程序之间构建可靠的用于传输实时数据的管道,Kafka架构Kafka的生

2022-06-13 20:21:13 492

原创 一篇文章把RabbitMQ、RocketMQ、Kafka三元归一

一个RabbitMQ实例就是一个Broker 虚拟主机。相当于Mysql的DataBase, 一个Broker上可以存在多个vhost,vhost之间相互隔离。每个vhost都拥有自己的队列、交换机、绑定和权限机制。vhost必须在连接时指定,默认的vhost是 /。 交换机,用来接收生产者发送的消息并将这些消息路由给服务器中的队列。 消息队列,用来保存消息直到发送给消费者。它是消息的容器。一个消息可投入一个或多个队列。 绑定关系,用于消息队列和交换机之间的关联。通过路由键(Routing Key)将交换机

2022-06-13 20:13:31 479

原创 Kafka到底有多高可靠?

大家都知道,系统架构有三高:「高性能、高并发和高可用」,三者的重要性不言而喻。对于任意系统,想要同时满足三高都是一件非常困难的事情,大型业务系统或者传统中间件都会搭建复杂的架构来保证。除以上三种模式之外,还有一个指标方向也很重要,那就是高可靠,甚至你可能会将它和「高可用」混淆起来。事实上两者并不一样,高可用会更偏向于整体服务的可用性,防止系统宕机等等。而高可靠是指数据的可靠性保证嘛,你可以理解”高可靠“相比于系统三高会是一个更细一点的概念。那么什么是数据的高可靠呢,总结一下就是系统要提供可靠的数据支撑,不能

2022-06-13 19:10:31 150

原创 架构师必备技能:教你画出一张合格的技术架构图

作者:三画 阿里技术当我们想用一张或几张图来描述我们的系统时,是不是经常遇到以下情况:如果有同样的困惑,本文将介绍一种画图的方法论,来让架构图更清晰。先厘清一些基础概念1、什么是架构?架构就是对系统中的实体以及实体之间的关系所进行的抽象描述,是一系列的决策。架构是结构和愿景。系统架构是概念的体现,是对物/信息的功能与形式元素之间的对应情况所做的分配,是对元素之间的关系以及元素同周边环境之间的关系所做的定义。做好架构是个复杂的任务,也是个很大的话题,本篇就不做深入了。有了架构之后,就需要让干系人理解、遵循相关

2022-06-12 20:59:24 1118

原创 Java 多线程共享模型之管程(下)

它们都是线程之间进行协作的手段,都属于 Object 对象的方法。必须获得此对象的锁,才能调用这几个方法 wait() 方**释放对象的锁,进入 WaitSet 等待区,从而让其他线程就机会获取对象的锁。无限制等待,直到notify 为止wait(long n) 有时限的等待, 到 n 毫秒后结束等待,或是被 notifysleep vs. waitstep 1思考下面的解决方案好不好,为什么?输出: 其它干活的线程,都要一直阻塞,效率太低 小南线程必须

2022-06-12 15:23:01 156

原创 Java 多线程共享模型之管程(上)

默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。输出:注意这是从 操作系统 层面来描述的这是从 Java API 层面来描述的两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?输出:问题分析以上的结果可能是正数、负数、零。为什么呢?因为 Java 中对静态变量的自增,自减并不是原子操作,要彻底理解,必须从字节码来进行分析例

2022-06-12 15:20:22 167

原创 彻底让你搞懂什么是Java字节码

因为JVM针对各种操作系统和平台都进行了定制,无论在什么平台,都可以通过javac命令将一个.java文件编译成固定格式的字节码(.class文件)供JVM使用。之所以被称为字节码,是因为 .class文件是由十六进制值组成的,JVM以两个十六进制值为一组,就是以字节为单位进行读取格式如下:JVM对字节码的规范是有要求的,要求每一个字节码文件都要有十部分固定的顺序组成,如下图:1. 魔数所有的.class文件的前4个字节都是魔数,魔数以一个固定值:0xCAFEBABE,放在文件的开头,JVM就可以根据这个

2022-06-12 14:41:09 4277

原创 Java线上惨痛踩坑记录,你也一定遇到过

线上问题年年有,今年特别多。记几次线上惨痛的踩坑记录,希望大家以史为鉴。如果调用上面的方**发生什么?id是Integer类型,而方法的返回值int类型,会自动拆箱转换,由于id是null,转换成int类型的时候,就会报NullPointerException异常。无论是《阿里Java开发手册》、《代码整洁之道》还是《Effective Java》都建议方法返回值类型尽量写成包装类型,类似Integer。还有实体类、接收前端传参类、给前端的响应类中的属性都要写成包装类型,避免拆箱出错。先看一段代码运行

2022-06-12 14:33:03 240

原创 卷起来,突破35岁焦虑,动画演示CPU记录函数调用过程,进互联大厂如此简单

我们在写代码的时候有没有思考过 方法如何调用 、 方法执行完之后如何返回 、 内存如何记录方法调用过程 。而这也是今天这篇文章重点内容。方法调用和返回过程涉及到了,虚拟机栈、程序计数器、局部变量表、操作数栈、方法返回地址、动态链接等等内容,涉及到知识点很多,同时这些内容也是高频面试题,所以我将拆分成多篇文章,针对每个知识点去做详细的分析。而今天这篇文章我们重点去看内存是如何记录方法调用和返回过程。Java 方法以栈帧的形式,运行在虚拟机栈(Java 栈)中,栈是线程私有的,程序启动的时候,会创建一个 mai

2022-06-10 15:46:40 149

原创 一文说透 MySQL JSON 数据类型(收藏)

JSON 数据类型是 MySQL 5.7.8 开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR 或 TEXT )来保存 JSON 文档。相对字符类型,原生的 JSON 类型具有以下优势:在 JSON 类型引入之前,如果我们想要获取 JSON 文档中的某个元素,必须首先读取整个 JSON 文档,然后在客户端将其转换为 JSON 对象,最后再通过对象获取指定元素的值。下面是 Python 中的获取方式。这种方式有两个弊端:一、消耗磁盘 IO,二、消耗网络带宽,如果 JSON 文档比较大,在

2022-06-10 15:04:55 1630 1

原创 请你简单说一下Mysql的事务隔离级别

Mysql的事务隔离级别它有四种1.读已提交2.可重复读3.串行化4.未提交读这四种隔离级别代表的是说我在不同的那个...就是我多个事务竞争的时候那么我每一个就是我的这个事务并发执行的时候并行执行的时候我对数据的一个影响。比如说我事务之间的一个隔离性,所以通过不同的这种隔离级别它可以去解决所谓的这个幻读或者不可重复读以及说那个读未提交这些问题。然后我记得就是这个最安全的是那种就串行化,串行化就是说它不会存在任何的这个上面幻读不可重复读的一些问题。好的,关于这个问题,我会从几个方面来回答。首先,事务隔离

2022-06-10 14:59:58 123

原创 你不得不懂的mysql隔离级别底层

mysql作为最常用的关系型数据库,无论是在应用还是在面试中都是必须掌握的技能。要印在脑子里面的东西DDL:数据定义,它用来定义数据库对象,包括库,表,列,通过ddl我们可以创建,删除,修改数据库和表结构;DML:数据操作语言,增加删除修改数据表中的记录;DCL:数据控制语言,定义访问权限和安全级别;DQL:数据查询语言,用它来查询想要的记录。SQL执行顺序:from;joinonwhere;group by;avg,sum.... 使用聚集函数进行计算;having;select;distinct;ord

2022-06-09 15:07:30 163

原创 在字节,A/B 实验是这么做的!

首先我们看一个案例。字节跳动有一款中视频产品叫西瓜视频,最早它叫做头条视频。为了提升产品的品牌辨识度,团队想给它起个更好的名字。经过一些内部调研和头脑风暴,征集到了西瓜视频、奇妙视频、筷子视频、阳光视频 4 个名字,于是团队就针对一共 5 个 APP 名称进行了 A/B 实验。这个实验中唯一改变的是应用市场里该产品的名称和对应的 logo,实验目的是为了验证哪一个应用名称能更好地提升“头条视频” APP 在应用商店的点击率。最后西瓜视频和奇妙视频的点击率位列前二,但差距不显著,结合用户调性等因素的综合考量后

2022-06-09 14:57:09 577

原创 字节跳动基于 Apache Hudi 的多流拼接实践方案

字节跳动数据湖团队在实时数仓构建宽表的业务场景中,探索实践出的一种基于 Hudi Payload 的合并机制提出的全新解决方案。该方案在存储层提供对多流数据的关联能力,旨在解决实时场景下多流 JOIN 遇到的一系列问题。接下来,本文会详细介绍多流拼接方案的背景以及实践经验。字节跳动存在较多业务场景需要基于具有相同主键的多个数据源实时构建一个大宽表,数据源一般包括 Kafka 中的指标数据,以及 KV 数据库中的维度数据。业务侧通常会基于实时计算引擎在流上做多个数据源的 JOIN 产出这个宽表,但这种解决方案

2022-06-09 14:51:31 762

原创 Clickhouse 用户自定义外部函数

·  Clickhouse 从 21.11 版本开始,除了提供类似SqlServer、MySQL CREATE FUNCTION 的自定义函数之外,还有一个用户自定义函数(UDF),与其说是“用户自定义函数”,为了避免混淆,称之为”用户自定义外部函数“更为准确。官方对此功能的解释:ClickHouse can call any external executable program or script to process data. 译文:ClickHouse可以调用任何外部可执行程序或脚本来处理数据

2022-06-09 14:48:35 3533

原创 以字节跳动内部 Data Catalog 架构升级为例聊业务系统的性能优化

字节跳动 Data Catalog 产品早期,是基于 LinkedIn Wherehows 进行二次改造,产品早期只支持 Hive 一种数据源。后续为了支持业务发展,做了很多修修补补的工作,系统的可维护性和扩展性变得不可忍受。比如为了支持数据血缘能力,引入了字节内部的图数据库 veGraph,写入时,需要业务层处理 MySQL、ElasticSearch 和 veGraph 三种存储,模型也需要同时理解关系型和图两种。更多的背景可以参照之前的文章。新版本保留了原有版本全量的产品能力,将存储层替换成了 Apa

2022-06-09 13:50:15 251

原创 从字节码了解Java语言特性

每个时刻正在执行的当前方法就是虚拟机栈顶的栈帧。方法的执行就对应着栈帧在虚拟机中入栈和出栈的过程。当一个方法执行完,有两种情况,一种是正常执行,另一种是异常。完成出口(返回地址)正常返回:(调用程序计数器中的返回地址)三部曲:异常返回通过异常处理表中的来确定异常机制如果熟悉java语言,那么对以上异常继承体系一定不会陌生。其中Error和RuntimeException是非检查型异常,也就是不需要去catch或throw的异常。异常表在synchronized生成的字节码中,其中包含了两条mo...

2022-06-08 21:00:41 159

原创 SpringBoot前后端分离后台管理系统分析,真香

有很多读者都希望我出一些详细介绍 Java 实战类项目的文章,毕竟项目实战经验还是挺重要的,不论是对于找工作还是提高个人工程能力。我自己也发现很多读者不怎么会学习开源项目,不知道如何把开源项目的一些精华为自己所用。我们这里分析的是 eladmin[1] 这个基于 Spring Boot + Spring Security +JPA +Vue 的前后端分离的后台管理系统。荐过这个项目。后台首页这部分简单分析一下项目使用到的一些比较有用的开源工具库:MapStruct(Java 对象映射框架)、OSHI(基于

2022-06-08 20:54:03 663

原创 为什么使用Spring Boot?

在使用Spring框架进行开发的过程中,需要配置很多Spring框架包的依赖,如spring-core、spring-bean、spring-context等,而这些配置通常都是重复添加的,而且需要做很多框架使用及环境参数的重复配置,如开启注解、配置日志等。自动配置:spring boot能够根据当前类路径下的类,jar包来自动配置bean,如添加一个spring-boot-starter-web启动器就能拥有web的功能,无需其他配置、无代码生成和XML配置:spring boot配置过程中无代码生成,也

2022-06-08 15:16:31 539

原创 1w+ 字总结 Java 常用类,整理太全了

来源:cnblogs.com/lwtyyds/p/15678152.html「概念」 :在一个类内部再定义一个完整的类。一般情况下类与类之间是相互独立的,内部类的意思就是打破这种独立思想,让一个类成为另一个类的内部信息,和成员变量、成员方法同等级别。「内部类的好处:」把一个类写在外面和写在里面最终达到的结果都一样,那我们为什么还要使用内部类,岂不是多此一举吗?「采用内部类这种技术,可以隐藏细节和内部结构,封装性更好,让程序的结构更加合理!如果类很多且都暴露在外面,那么类与类之间的调用就会十分繁琐!」参考代码

2022-06-08 14:17:33 91

原创 如何在MySQL中查找数据

数据库中表的数据被划分为若各个页(page),每个页中又存储了很多行记录,而我们往MySQL中插入的每行记录就放到页当中的行记录中,InnoDB的页分为以下几个部分InnoDB的页被划分为了7个部分,有的部分大小是确定的,有的部分不确定,各个部分说明如下File Header,表⽰页的⼀些通⽤信息,占固定的38字节。Page Header,表⽰数据页专有的⼀些信息,占固定的56个字节。Infimum + Supremum,两个虚拟的伪记录,分别表⽰页中的最⼩和最⼤记录,占固定的26个字节。User Reco

2022-06-07 20:46:48 1823

原创 SpringBoot 实现 Office 各种格式在线预览

支持word excel ppt,pdf等办公文档支持txt,java,php,py,md,js,css等所有纯文本支持zip,rar,jar,tar,gzip等压缩包支持jpg,jpeg,png,gif等图片预览(翻转,缩放,镜像)支持mp3,mp4,flv等多媒体文件预览使用spring boot开发,预览服务搭建部署非常简便rest接口提供服务,跨平台特性(java,php,python,go,php,....)都支持,应用接入简单方便支持普通http/https文件下载url、http/https文

2022-06-07 15:48:31 312

原创 万字+28张图带你探秘小而美的规则引擎框架LiteFlow

前言在每个公司的系统中,总有一些拥有复杂业务逻辑的系统,这些系统承载着核心业务逻辑,几乎每个需求都和这些核心业务有关,这些核心业务业务逻辑冗长,涉及内部逻辑运算,缓存操作,持久化操作,外部资源调取,内部其他系统RPC调用等等。时间一长,项目几经易手,维护的成本就会越来越高。各种硬代码判断,分支条件越来越多。代码的抽象,复用率也越来越低,各个模块之间的耦合度很高。一小段逻辑的变动,会影响到其他模块,需要进行完整回归测试来验证。如要灵活改变业务流程的顺序,则要进行代码大改动进行抽象,重新写方法。实时热变更业务流

2022-06-07 15:35:42 450 1

空空如也

空空如也

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

TA关注的人

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