自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(764)
  • 问答 (2)
  • 收藏
  • 关注

原创 日志之ELK使用讲解

ELK是一个开源的实时日志分析平台,它主要由Elasticsearch、Logstash 和 Kibana三部分组成。在ELK中,三大组件的大概工作流程如下图所示,由Logstash从各个服务中采集日志并存放至中,然后再由Kiabana从中查询日志并展示给终端用户。

2024-07-18 21:01:57 801

原创 SpringBoot整合 Kaptcha 验证码

为防止验证系统被暴力破解,很多系统都增加了验证码效验,比较常见的就是图片二维码,业内比较安全的是短信验证码,当然还有一些拼图验证码,加入人工智能的二维码等等,这次就是前后端分离的图片二维码登录方案。这个项目为例,通过springboot项目集成Kaptcha来实现验证码生成和登录方案。验证码方法层CaptchaService。基于验证码的轮子还是挺多的,就以。验证码返回对象CaptchaVO。用户登录对象封装LoginDTO。

2024-07-11 20:35:37 424

原创 SpringBoot整合Minio

文章目录1 Minio1.1 概述1.2 应用场景1.3 Minio实现分片上传的主要步骤1.4 Centos7安装Minio1.5 搭建springboot 环境1.5.1 pom.xml1.5.2 创建容器桶1.5.3 编写配置文件1.5.4 常量类1.5.5 创建Minio的配置类1.5.5 创建Minio的工具类1.5.6 创建Ajax请求工具类1.5.7 创建Minio文件操作接口层1 Minio1.1 概述Minio 官网地址:https://min.io/文档地址:https://do

2024-06-30 18:53:16 682 2

原创 Python基础之网络编程

Socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。低级别的网络服务支持基本的Socket,它提供了标准的,可以访问底层操作系统Socket接口的全部方法。高级别的网络服务模块, 它提供了服务器中心类,可以简化网络服务器的开发。

2024-06-30 17:44:45 953

原创 Python基础之协程

协程,又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。

2024-06-30 14:56:21 796

原创 Python基础之多进程

要让Python程序实现多进程(multiprocessing),我们先了解操作系统的相关知识。Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返回一次,但是fork()调用一次,返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后,分别在父进程和子进程内返回。子进程永远返回0,而父进程返回子进程的ID。这样做的理由是,一个父进程可以fork出很多子进程,所以,父进程要记下每个子进程的ID,而子进程只需要调用getppid()

2024-06-30 14:23:28 1110

原创 Python基础之多线程

使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度。程序的运行速度可能加快。在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

2024-06-30 14:19:27 913

原创 Python基础之正则表达式

正则表达式是一个特殊的字符序列,它能方便的检查一个字符串是否与某种模式匹配。在 Python 中,使用re模块来处理正则表达式。re模块提供了一组函数,允许你在字符串中进行模式匹配、搜索和替换操作。re模块使Python语言拥有完整的正则表达式功能。

2024-06-30 10:37:19 949

原创 Python基础之常用模块介绍

然后,对二进制数据进行处理,每3个字节一组,一共是3x8=24bit,划为4组,每组正好6个bit,这样我们得到4个数字作为索引,然后查表,获得相应的4个字符,就是编码后的字符串。因为Base64是把3个字节变为4个字节,所以,Base64编码的长度永远是4的倍数,因此,需要加上=把Base64字符串的长度变为4的倍数,就可以正常解码了。如果希望key不存在时,返回一个默认值,就可以用。实际上也是dict的一个子类,上面的结果可以看出,字符’g’、‘m’、'r’各出现了两次,其他字符各出现了一次。

2024-06-30 09:27:44 733

原创 Python基础之IO流和序列化讲解

IO在计算机中指,也就是输入和输出。由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口。比如打开浏览器,访问新浪首页,浏览器这个程序就需要通过网络IO获取新浪的网页。浏览器首先会发送数据给新浪服务器,告诉它我想要首页的HTML,这个动作是往外发数据,叫Output,随后新浪服务器把网页发过来,这个动作是从外面接收数据,叫Input。所以,通常,程序完成IO操作会有Input和Output两个数据流。

2024-06-29 22:22:54 988

原创 Python基础之错误和异常讲解

语法错误和异常(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。可以通过创建一个新的异常类来拥有自己的异常。异常类继承自Exception>>> try:')在这个例子中,类 Exception 默认的__init__()被覆盖。pass"""allowed."""大多数的异常的名字都以"Error"结尾,就跟标准的异常命名一样。

2024-06-29 18:48:57 1044

原创 Python基础之模块和包

我们在模块里公开greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,外部不需要引用的函数全部定义成。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。

2024-06-27 14:29:41 1268

原创 Python基础之面向对象

在实际编程中,几乎不会用到类方法和静态方法,因为我们完全可以使用函数代替它们实现想要的功能,但在一些特殊的场景中(例如工厂模式中),使用类方法和静态方法也是很不错的选择。静态方法,其实就是我们学过的函数,和函数唯一的区别是,静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。在类内部的方法中使用时。我们知道,实例方法的调用方式其实有 2 种,既可以采用类对象调用,也可以直接通过类名调用。,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。

2024-06-23 19:14:15 1068

原创 C语言之常用标准库介绍

在stddef.h头文件中,指定了标准库中的公共定义。NULL:空指针类型常量。:它是扩展iz-t类型的一个整型常数表达式。它的值为从type定义的结构类型的开头到结构成员member-designator的偏移字节数。ptrdiff_t:表示两指针之差的带符号整数类型。size_t:表示由sizeof运算符计算出的结果类型,它是一个无符号整数类型。wchar_t:它是一种整数类型,取值范围为在被支持的地域环境中最大扩展字符集的所有字符的各种代码,空字符代码值为0。

2024-06-23 15:13:53 1048

原创 C语言之IO流函数

这里应该注意,sscanf函数与scanf函数和fscanf函数不同,前者是从指定的缓冲区读格式化数据到新的缓冲区中,而后者是从标准输入文件(stdin)和用户自定义文件中读取格式化数据到缓冲区中。指向的是该文件的内存缓冲区,将字符串写入后也只是写到了文件的内存缓冲区中,而并没有写到磁盘上的文件中。函数与printf函数的使用类似,其实printf函数是fprintf函数的一个特例,printf函数只能向标准输出文件(显示器)输出数据,而fprintf函数也可以向一般用户定义的文件输出数据。

2024-06-23 14:31:28 688

原创 C语言之字符处理函数

注意:本例程将字符串中大写字母转换为小写字母并输出,但并不改变原数组中的内容,只是在输出时将大写字母转换为小写字母,而本身是小写字母的字符或非字母字符,则返回原值。函数功能:检查字符c是否是除字母、数字、空格之外的可打印字符,也就是检查字符c是否是标点字符。函数功能:检查字符c 是否是ASCII码,所谓ASCII码是指0x00~0x7F之间的字符。函数功能:检查字符c是否是除了空格符外的可打印字符,其ASCII码在0x21-0x7e之间。返回值:当c为空格符或制表符时,返回1,否则返回0。

2024-06-23 09:52:46 896

原创 C语言之字符串处理函数

函数功能:在字符串中查找给定字符的最后一次匹配,也就是在字符串str中查找字符c最后一次出现的位置返回值:最后一次匹配位置的指针if (ptr)elseif (ptr)elsegetch();return 0;运行结果是:注意:本例程中,如果字符串中只有一个’o’字符,那么无论调用哪种字符串中字符匹配函数都会返回相同的结果。

2024-06-23 09:15:11 821

原创 PHP基础之错误与异常

在PHP中,默认的错误处理很简单。一条错误消息会被发送到浏览器,这条消息带有文件名、行号以及描述错误的消息。在创建脚本和 Web 应用程序时,错误处理是一个重要的部分。如果代码缺少错误检测编码,那么程序看上去很不专业,也为安全风险敞开了大门。创建一个自定义的错误处理器非常简单。创建了一个专用函数,可以在 PHP 中发生错误时调用该函数。

2024-06-22 17:20:34 1226

原创 PHP基础之过滤器讲解

PHP过滤器用于验证和过滤来自非安全来源的数据。测试、验证和过滤用户输入或自定义数据是任何Web应用程序的重要组成部分。PHP的过滤器扩展的设计目的是使数据过滤更轻松快捷。使用过滤器原因:几乎所有的Web应用程序都依赖外部的输入。这些数据通常来自用户或其他应用程序(比如 web 服务)。通过使用过滤器,能够确保应用程序获得正确的输入类型应该始终对外部数据进行过滤,输入过滤是最重要的应用程序安全课题之一。来自表单的输入数据Cookies服务器变量数据库查询结果通过使用。

2024-06-22 17:18:48 648

原创 PHP环境搭建之使用PhpStudy

phpstudy是一个php运行环境的集成包,用户不需要去配置运行环境,就可以使用,phpstudy不仅是一款比较好用的php调试环境工具,并且还包括了开发工具和常用手册Composer是一个杰出 的依赖管理器。在文件中列出项目所需的依赖包,加上一点简单的命令,Composer将会自动下载并设置项目依赖。现在已经有许多PHP第三方包已兼容Composer,随时可以在项目中使用。

2024-06-22 17:17:41 928 2

原创 Oracle锁机制之分类和死锁

数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。Oracle。

2024-06-16 11:47:28 806

原创 SpringBoot集成 Geodesy讲解

浩瀚的宇宙中,地球是我们赖以生存的家园。自古以来,人类一直对星球上的位置和彼此的距离着迷。无论是航海探险、贸易往来还是科学研究,精确计算两个地点之间的距离都是至关重要的。Geodesy:大地测量学的神奇力量Geodesy,又称大地测量学,是一门研究地球形状、大小及其重力场的学科。在地球距离计算中,它扮演着至关重要的角色。Geodesy的原理基于球面几何。首先,Geodesy将地球近似为一个光滑的球体。然后,根据经纬度坐标,将两个地点视为球面上的两点。

2024-06-09 11:34:06 929

原创 HTTP客户端框架之Retrofit

Retrofit是适用于Android和Java且类型安全的HTTP客户端,其最大的特性的是支持通过接口的方式发起HTTP请求。而spring-boot是使用最广泛的Java开发框架,但是Retrofit官方没有支持与spring-boot框架快速整合,因此我们开发了。实现了Retrofit与框架快速整合,并且支持了诸多功能增强,极大简化开发。自定义注入OkHttpClient注解式拦截器连接池管理日志打印请求重试错误解码器全局拦截器熔断降级微服务之间的HTTP调用。

2024-06-09 11:22:59 906

原创 定时任务之PowerJob讲解

PowerJob是基于java开发的企业级的分布式任务调度平台,与xxl-job一样,基于web页面实现任务调度配置与记录,使用简单,上手快速点击此处了解 xxl-job API方式接入 讲解。

2024-06-09 10:17:56 794

原创 AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解

在软件开发的世界中,Java一直是企业级应用的主力军。而Spring框架,尤其是Spring Boot,以其生态系统的丰富性,为开发者提供了无与伦比的便利。现在,Spring Boot正迈向一个新的纪元——人工智-能的时代。Spring AI项目的推出,不仅标志着Spring生态的进一步扩展,也为广大Java开发者开启了一个全新的编程领域。Spring AI是从著名的Python。

2024-06-06 17:01:25 2216 1

原创 画图工具之PlantUML插件使用

PlantUML是一个多功能组件,可快速、直接地创建图表。用户可以使用简单直观的语言起草各种图表。PlantUML是一个开源工具,它允许我们用简单的文本描述来创建UML图,包括序列图、用例图、类图、对象图、活动图、组件图、部署图、状态图,以及时序图除了UML图之外,PlantUML还支持一系列其他图表,例如JSON数据、YAML数据、EBNF图表、架构图等等。PlantUML。

2024-05-24 22:35:57 1414

原创 MQTT详解以及实际操作

MQTT全称():一种基于发布/订阅()模式的轻量级通讯协议,通过订阅相应的主题来获取消息,是物联网()中的一个标准传输协议。MQTT是一种基于发布/订阅模式的轻量级通讯协议,该协议构建在TCP/IP协议上。MQTT最大的有点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。做为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网、小型设备、移动应用等方面有广泛应用。MQTT协议将消息的发布者(publisher)与订阅者(subscriber。

2024-05-19 10:41:01 1934

原创 Mybatis之动态SQL使用讲解

中, 如果我们的方法 updateByPrimaryKeySelective 没有使用 标签, 那么我们就要想办法处理字段全为空的条件, 字段不为空的条件等。我们插入数据库中的一条记录, 不是每一个字段都有值的, 而是动态变化的。在此 SQL 语句中, where 1=1 是多条件拼接时的小技巧, 后面的条件查询就可以都用 and 了。这是常见的一种现象, 我们在进行按条件查询的时候, 可能会有多种情况。的时候, where 1=1 这个条件我们是不希望存在的。这三个其实解决的是类似的问题。

2024-05-13 09:14:13 635

原创 JavaFX创建桌面应用exe文件以及SceneBuilder使用讲解

在许多情况下,渲染节点的位图表示将比渲染图元更快,特别是在应用了效果(例如模糊)的图元的情况下。但是,这也会增加内存使用率。还要注意,在某些平台(例如GPU加速平台)上,使用模糊和其他效果时,将节点缓存为位图几乎没有什么好处,因为它们在GPU上的渲染速度非常快。窗口内的内容是不同的,不过大体上都差不多,多的一些内容就是该控件特有的属性,少的一些内容就是该控件没有的属性,所以不必纠结学会所有的属性,用到了再查询即可。为true,则通过与该节点的边界相交来计算拾取,否则,通过与该节点的几何形状相交来计算拾取。

2024-05-01 21:15:57 2304 3

原创 Java IO流之为什么要手动关闭IO流

我们深知在操作 Java 流对象后要将流进行关闭,但是现实的情况却往往不尽人意,原因是每个开发者的写法可能不尽相同,不同的写法导致出现各种千奇百怪的问题,下面我们一起来看看几种关闭流的代码案例try {// ...操作流代码// 依次关闭流try {try {// 此处会报 java.io.IOException: Stream Closed 错误按照先后顺序关闭文件流,这种写法下,有可能会报错误。原因是依赖于,如果直接关闭流,再次关闭。

2024-05-01 09:01:24 739

原创 Jenkins之安装使用

每种类型的构建其实都可以完成一样的构建过程与结果,只是在操作方式、灵活度等方面有所区别,在实际开发中可以根据自己的需求和习惯来选择。还可以从打印日志的最后看到这次打包用时 2 min 33 秒,任务的执行状态为 Finished Success。上面的配置完成后,我们就可以测试下是否可以将代码仓库中的某个分支的代码拉取下来进行打包。时,我们必须创建一个任务才行,然后这个任务里面可以配置要执行的各种操作。执行远程服务器上的脚本,则需要先在远程服务器上创建一个可执行的脚本。仓库拉取指定分支的代码,然后运行。

2024-05-01 09:01:07 886 2

原创 Lomok之高级注解用法

想让另一个类B也能用这个方法,那就可以在B类中加上一个A类型的字段,并在这个字段上加上@Delegate注解,这样,B类就可以直接调用sayHello()方法,就像它是自己的方法一样。注解可以用在集合类型的字段上,它会生成两个方法,一个是添加单个元素的方法,一个是添加整个集合的方法。这样写最大的好处就是可以避免类的层次过深或者耦合过紧,提高代码的可读性和可维护性,各种继承来继承去是真的看得头疼。允许创建一个新的对象,该对象是当前对象的副本,但某些字段的值已被更改。比如,有一个类叫做A,它有一个方法叫做。

2024-03-30 19:33:57 1009 1

原创 Java序列化之Jackson详解

Jackson是一个用于处理JSON数据的开源Java库。是一种轻量级的数据交换格式,易于阅读和编写,同时也易于计算机解析和生成。在Java领域,Jackson已经成为处理JSON数据的事实标准库。它提供了丰富的功能,包括将Java对象转换为JSON字符串(序列化)以及将JSON字符串转换为Java对象(反序列化Jackson:提供了通用的数据绑定功能(将Java对象与JSON数据相互转换):提供了核心的低级JSON处理API(例如JsonParser和JsonGenerator)

2024-03-24 18:28:02 1929

原创 Java IO流之Netty实现聊天通信功能

点击了解 IO流之IO,NIO和AIO讲解Netty是一个相当优秀的通信框架,大多数的顶级开源框架中都有Netty的身影。应用过程中,它最核心的东西叫handler,我们可以简单理解它为消息处理器。收到的消息和出去的消息都会经过一系列的handler加工处理。收到的消息我们叫它入站消息,发出去的消息我们叫它出站消息,因此handler又分为出站handler和入站handler。收到的消息只会被入站handler处理,发出去的消息只会被出站handler处理。

2024-03-15 13:54:59 1196 2

原创 JDK8之LocalDateTime讲解

是Java 8中日期时间API提供的一个类,在日期和时间的表示上提供了更加丰富和灵活的支持。类相比于早期的Date和Calendar丰富的日期时间类型支持类封装了LocalDate和LocalTime两个类,支持更加细化的日期时间操作,例如获取某一天的开始和结束时间、获取某个时间段内的所有日期等。线程安全性类是不可变对象,线程安全性较高,可以在多线程环境下安全使用。时区支持类在处理时区相关的操作时有着很好的支持,例如可以将一个对象转换成对象,以支持更加复杂的时区计算。类的实现原理是基于Java的时间。

2024-02-22 14:42:41 1025

原创 数据库之隔离级别,脏读幻读,事务特性

脏读:指一个事务读取了一个未提交事务的数据,即当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。说明:事务1更新了记录,但没有提交,事务2读取了更新后的行,然后事务T1回滚,现在T2读取无效。不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同,一个事务读取到了另一个事务提交后(update)的数据。是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。

2024-02-06 16:23:19 932

原创 Spring事件之注解@EventListener讲解

当我们观察方法的时候,会发现这个方法它主要是在对这个缓存在搞事情。这个缓存里面放的就是在项目启动过程中已经触发过的框架自带的listener对象:调用的时候,如果能从缓存中拿到对应的listener,则直接返回。而我们Demo中的自定义listener是第一次触发,所以肯定是没有的。因此关键逻辑就在方法里面:这个方法里面的逻辑较多,只说一下这个关键的 for 循环:这个 for 循环在干啥事呢?就是循环当前所有的listener,过滤出能处理当前这个事件的listener。

2024-02-03 14:29:16 3354 1

原创 日志之Loki详细讲解

下、创建的端口号是3100,就需要填写为http://loki:3100,这里为什么不写IP地址而写成服务的名字,是因为在k8s集群里面有个dns服务器会自动解析这个地址。另外也可以用上面提到的其他日志收集工具来收取,这篇文章在结尾处会附上其他工具的配置方式。改为1,是因为这个设置不正确造成的。收集起来的日志信息对于业务来说是至关重要的,因此需要在容器重启的时候日志能够保留下来。如果是裸机部署的情况下,需要对上面的配置文件做一下稍微的改动,更改。从上面的图中我们可以看到,它在解析日志的时候是以。

2024-01-30 22:08:01 2208

原创 数据库之TiDB基础讲解

TiDB是PingCAP公司研发的一款开源分布式关系型数据库,从 2015年 9 月开源,至今已经有9 年时间,可以说已经非常成熟,它是一款同时支持OLTP(在线事务处理)和OLAP(在线分析处理)的融合型分布式数据库产品,具备水平扩缩容,金融级高可用、实时、云原生的分布式数据库,兼容MySQL 5.7协议和MySQL生态等重要特性,它适合高可用、强一致要求较高、数据规模较大等各种应用场景。金融级高可用在线水平扩容或者缩容,并且存算分离云原生的分布式数据库,支持部署在公有云,私有云,混合云中。

2024-01-30 21:16:51 2777

原创 Easy-Es操作Elasticsearch

Easy-Es(简称EE)是一款基于(简称ES)官方提供的打造的ORM开发框架,在的基础上,只做增强不做改变,为简化开发、提高效率而生。EE和(简称MP)的用法非常相似,如果你之前使用过MP的话,应该能很快上手EE。EE的理念是:把简单、易用、方便留给用户,把复杂留给框架。全自动索引托管:开发者无需关心索引的创建、更新及数据迁移等繁琐步骤,框架能自动完成。屏蔽语言差异:开发者只需要会MySQL的语法即可使用ES。代码量极少:与直接使用官方提供的相比,相同的查询平均可以节省3-5倍的代码量。

2024-01-30 09:33:50 1715

空空如也

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

TA关注的人

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