自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一朵纯洁的小白花的博客

努力热爱这个世界_

  • 博客(79)
  • 收藏
  • 关注

原创 linux部署nginx

在Linux系统中安装Nginx,通常分为两种方法:通过包管理器安装和手动编译安装。

2024-02-22 15:02:33 1179 1

原创 分布式文件系统FastDFS

目前文件上传的问题:单向存储、不支持集群、文件数据冗余、可扩展性差为什么要使用分布式文件系统?1.海量文件数据存储2.文件数据高可用(冗余备份)3.读写性能和负债均衡FastDFS服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负债均衡的作用。FastDFS中的文件标识分为两部分:卷名和文件名,二者缺一不可。...

2023-02-07 13:57:50 408

原创 MyBatis Generator

MyBatis Generator(MBG)是MyBatis MyBatis 和iBATIS的代码生成器。它将为所有版本的MyBatis以及版本2.2.0之后的iBATIS版本生成代码。它将内省数据库表(或许多表),并将生成可用于访问表的工件。这减少了设置对象和配置文件以与数据库表交互的初始麻烦。MBG寻求对简单CRUD(创建,检索,更新,删除)的大部分数据库操作产生重大影响。您仍然需要为连接查询或存储过程手动编写SQL和对象代码。3.运行(刷新maven,点击运行)

2022-11-14 11:27:13 406 1

原创 SpringCloud搭建应用

springcloud:成熟的微服务框架,定位为开发人员提供工具,以快速构建分布式系统。6、整体系统发布统一ip端口,使用网关Zuul,也可对请求进行过滤器的编写。5、服务宕机,容灾,避免大面积服务瘫痪,使用熔断器Hystrix。4、服务调用正常,考虑服务的负载均衡,使用Ribbon。三、利用Fegin实现服务间调用(子模块业务间调用)2、服务注册与发现Eureka,注册服务方便引用。二、Eureka客户端搭建(子模块服务注册)本文先到此为止,后续待补充。3、利用Fegin实现服务间调用。

2022-11-04 17:58:44 594

原创 线程池详解

创建一个线程池,指定线程数量5,默认使用无界队列LinkedBlockingQueue,大量任务执行未完成的情况下,可能会造成OOM内存溢出异常。无界线程数量,直接交换队列,线程存活默认60s自动回收,可能会创建数量特别多的线程导致OOM内存溢出异常。1.newFixedThreadPool 固定线程池(核心线程数=最大线程数,队列满后无法增加线程)五、线程池线程数量设置多少合适(最佳:不同程序做不同的压测得出最优线程数量)线程池的组成部分:线程池管理器、工作线程、任务队列、任务接口(Task)

2022-10-27 10:13:39 1216

原创 RabbitMQ高级特性

Confirm消息的确认,是指生产者投递消息后,如果Broker收到消息,则会给我们生产者一个应答;生产者进行接收应答,用来确定这条消息是否正常的发送到Broker,这种方式也是消息的可靠性投递的核心保障。1.在基础API中找到配置项:Mandatory,设置为true,则监听器会接收到路由不可达的消息,进行后续的处理,为false,则broker端自动删除该消息。保障消息的成功发出、MQ节点的成功接收、发送端收到MQ节点(Broker)确认应答、完善的消息进行补偿机制。5、消息的ACK与重回队列。

2022-09-15 16:21:28 657

原创 对称加密算法AES

AES加密数据块和密钥长度可以是128b、192b、256b中的任意一个。AES加密有很多轮的重复和变换。③重复轮(Rounds),每一重复轮又包括字节间减法运算(SubBytes)、行移位(ShiftRows)、列混合(MixColumns)、轮密钥加法运算(AddRoundKey)等操作;①最终轮(Final Round),最终轮没有列混合操作(MixColumns)。AES的基本要求是,采用对称分组密码体制,密钥长度可以为128、192或256位,分组长度128位,算法应易在各种硬件和软件上实现。

2022-09-05 15:48:04 806

原创 非对称加密算法SM2

SM2是于2010年12月17日发布的椭圆曲线公钥密码算法。SM2算法和都是公钥密码算法,SM2算法是一种更先进安全的算法,在我们国家体系中被用来替换。随着密码技术和计算机技术的发展,目前常用的1024位RSA算法面临严重的安全威胁,我们国家密码管理部门经过研究,决定采用SM2替换RSA算法。...

2022-09-01 17:26:09 2906

转载 java设计模式—适配器模式

将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。1、系统需要使用现有的类,而此类的接口不符合系统的需要。2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。3、通过接口转换,将一个类插入另一个类系中。...

2022-08-15 16:02:30 3975

原创 java集成minio文件系统

接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO 是高性能的对象存储,是为海量数据存储、上文讲解了minio如何部署,本文演示如何使用。语言实现,,客户端与存储服务器之间采用。的,它完全兼容Amazon。......

2022-08-11 17:48:35 2261

原创 linux部署minio文件系统

MinIO 是高性能的对象存储,是为海量数据存储、、大数据分析而的,它完全兼容Amazon接口,单个对象最大可达5TB,适合存储海量图片、视频、日志文件、备份数据和容器/虚拟机镜像等。MinIO主要采语言实现,,客户端与存储服务器之间采用通信协议。以下为单机部署。.........

2022-08-11 17:15:32 1152

原创 Linux启动jar的shell脚本

本shell脚本只指定端口,jar地址,jdk地址进行启停控制,指定gc等配置

2022-07-08 10:20:44 1191

原创 java发起HTTP 请求的多种方式

java发起HTTP 请求的多种方式,常用的类为 cn.hutool.http.HttpUtil但方式有限,需加工,可根据实际情况进行选择

2022-06-16 15:08:48 9789

原创 Base64Utils 图片base64互转

分享一些常用的java工具类,图片文件和base64进行互转

2022-06-15 09:18:36 207

原创 JDBC连接mysql查询示例

jdbc连接数据库简单查询package ;import java.sql.*;/** * 功能描述 jdbc操作数据库 * * @author: * @date: 2022年05月19日 11:03 */public class JDBCconnection { private final static String driver = "com.mysql.cj.jdbc.Driver"; private final static String url .

2022-05-20 11:22:15 315

原创 Nginx负载均衡,配置域名,配置Https

nginx如何实现负载均衡创建三个服务器,其中server1作为反向代理器,server2和server3作为服务器(返回相应资源) 当多次访问server1的时候,会轮回访问server2,server3;即如下图所示:

2022-05-17 11:10:27 1286

原创 redis分布式锁实现

单体应用多线程锁使用synchronized关键字或ReentrantLock类来保证线程的顺序执行个别场景使用JDK1.5之后提供的大量原子类AtomicInteger(基于CAS的乐观锁)测试锁模拟并发可使用闭锁:CountDownLatch类对象模拟ReentrantLock的公平锁和非公平锁机制 ReentrantLock有两个构造方法,默认的构造方法中,sync = new NonfairSync();我们可以从字面意思看出它是一个非公平锁。再看看第二个构造方...

2022-04-27 16:38:32 1268 1

原创 JVM调优 理论篇

主要这几个方面内存结构、类加载机制、编译器优化、垃圾收集算法、垃圾收集器一、内存结构二、类加载机制1、编译生成class文件 javac 文件名 或 idea工具编译2、加载读取类的二进制流转为方法区数据结构,并存放到方法区在java堆中产生Java.lang.class对象3、链接(验证、准备、解析)验证:1.验证class文件是否符合规范 文件格式的验证(是否以0XCAFEBABE开...

2022-03-18 17:42:27 420

原创 spring AOP介绍和应用领域

aop

2022-02-16 11:27:34 380

原创 springboot和springmvc的区别

用最简练的语言概括就是:Spring 是一个“引擎”;Spring MVC 是基于Spring的一个 MVC 框架 ;Spring Boot 是基于Spring4的条件注册的一套快速开发整合包。Spring MVC的功能Spring MVC提供了一种轻度耦合的方式来开发web应用。Spring MVC是Spring的一个模块式web框架。通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。解决的问题领.

2022-02-15 15:40:22 181

原创 mysql的索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文.

2022-02-15 11:27:09 136

原创 java基础-Interface和Abstract的区别

共同点A.两者都是抽象类,都不能实例化B.Interface实现类和abstract继承类都必须实现抽象方法不同点A.Interface需要实现,用implements;Abstract 需要继承,用exendsB.一个类可以实现多个Interface ;一个类只能继承一个AbstractC.Interface强调功能的实现;Abstract强调从属关系D.Interface的所有抽象类都只有声明没有方法体;Abstract抽象方法可以选择实现,也可以选择继续声明为抽象方法,无需实现,留给子

2022-02-14 13:56:04 251

原创 java设计模式—工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。介绍意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。主要解决:主要解决接口选择的问题。何时使用:我们明确地计划不同条件下创建不同实例时。如何解决:让其子类实现工厂接口,返回的也是一.

2022-02-08 15:31:49 110

原创 java设计模式—策略模式

策略模式:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。它也被成为政策模式,是一种行为型模式。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。如何解决:将这些算法封装成一个一个的类,任意地替换。关键代码:实现同一个接口。优点 :1、算法可以自由切换。 .

2022-02-08 15:08:54 395

原创 java数据结构-集合框架

数据结构:就是容器中存储数据的方式;对于集合容器,有很多种。因为每一个容器的自身特点不同,其实原理在于每个容器的内部数据结构不同;集合容器在不断向上抽取过程中,出现了集合体系。集合框架:用于存储数据的容器;是为表示和操作集合而规定的一种统一的标准的体系结构;任何集合框架都包含三大块内容(对外的接口、接口的实现和对集合运算的算法)。特点:对象封装数据,对象多了也需要存储,集合用于存储对象;对象的个数确定可以使用数组,对象的个数不确定的可以用集合,因为集合是可变长度的。集合和数组的区别:数组是

2022-02-08 11:57:04 142

原创 mysql优化—分析Explain执行计划

当Explain 与 SQL语句一起使用时,MySQL 会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。 表的加载顺序 sql的查询类型 可能用到哪些索引,哪些索引又被实际使用 表与表之间的引用关系 一个表中有多少行被优化器查询 ..... Explain有哪些信息Explain执行计划包含字段信息如下:分别是id、select_type、table、partitio...

2022-01-27 16:52:07 174

原创 synchronized和lock两种锁的比较

两者区别:1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁 tryLock方法3.synchronized会自动释放锁(a线程执行完同步代码会释放锁;b线程执行过程中发生异常会释放锁),Lock需在finally中手工释放锁(unlock()方法释放锁),否则容易造成线程死锁4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待

2022-01-24 18:49:19 465

原创 jvm性能调优-定位并解决项目越跑越慢的问题

分析项目变慢的可能性有哪些?1.Stop The World过长(垃圾收集频繁)2.项目依赖的资源导致变慢(数据库,网络.......等)3.Code Cache(代码缓存区)满了4.线程争抢过于激烈5.服务器问题(操作系统问题...重启解决,其他进程争抢资源....中毒,木马等)借助工具分析定位问题,解决;如:visualvm、skywalking分析threaddump工具:1.fastThreadhttps://fastthread.io/2.Per...

2022-01-09 22:49:19 846

原创 jvm性能调优-分析GC日志

GC日志可视化分析工具GCeasy https://www.gceasy.io/

2022-01-09 22:25:58 935

原创 java序列化和反序列化

序列化和反序列化的概念把对象转换为字节序列的过程称为对象的序列化把字节序列恢复为对象的过程称为对象的反序列化对象的序列化主要有两种用途:  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中  2) 在网络上传送对象的字节序列当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象JDK类库中的序列化API

2022-01-07 18:44:01 81

原创 jvm性能调优-内存溢出

在Java中,和内存相关的问题主要有两种,内存溢出和内存泄漏内存溢出(Out Of Memory):就是申请内存时,JVM没有足够的内存空间。通俗说法就是去蹲坑发现坑位满了。内存泄露 (Memory Leak):就是申请了内存,但是没有释放,导致内存空间浪费。通俗说法就是有人占着茅坑不拉屎。在JVM的几个内存区域中,除了程序计数器外,其他几个运行时区域都有发生内存溢出(OOM)异常的可能。堆内存溢出要解决这个内存区域的异常,常规的处理方法是首先通过内存映像分析工具(如JP..

2022-01-07 16:59:28 827

原创 jvm性能调优-cpu过高问题定位

一、top+jstack命令top查看当前系统运行的情况,cpu占用率,内存使用率等等[root@centos20 ~]# top #查看进程top - 14:42:39 up 46 days, 21:19, 7 users, load average: 0.00, 0.04, 0.10Tasks: 645 total, 1 running, 644 sleeping, 0 stopped, 0 zombie%Cpu(s): 0.0 us, 0.0 sy, 0.

2022-01-07 15:22:43 1310

原创 应用监控与调优方案-工具篇Skywalking

Skywalking中文文档:欢迎 | Skywalking 6.2.0中文文档安装部署下载地址:Downloads | Apache SkyWalking环境需求:jdk版本在jdk8-jdk12之间(如使用es7的版本,则需要jdk11+) 确保如下端口可用: 11800:和Skywalking通信的gRPC端口 12800:和Skywalking...

2022-01-04 16:40:48 961

原创 应用监控与调优方案

性能调优四板斧1.借助监控预防问题、发现问题(短信预警,邮件预警等)2.借助工具定位问题3.定期复盘问题、防止同类问题再现4.定好规范,一定程度上规避问题(如for循环内不允许操作数据库等)性能调优分为:应用性能调优、JVM调优、数据库调优、架构调优、操作系统调优...

2022-01-04 15:05:49 661

原创 SpringBoot开启定时任务@Scheduled

1.启动类Application开启定时任务类上添加注解开启:@EnableScheduling2.编写任务类@Component //添加spring管理public class job { @Scheduled(cron = "0 0 2 * * ?")//每天凌晨两点开始执行 public void autoJobTask(){ System.out.println("执行定时任务:"+ System.currentTimeMillis());

2022-01-04 14:42:40 1262

原创 MyBatis的面试小知识点(不定时补充)

1、#{}和${}的区别是什么?${}是字符串替换,#{}是预处理;Mybatis在处理${}时,就是把${}直接替换成变量的值。而Mybatis在处理#{}时,会对sql语句进行预处理,将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;使用#{}可以有效的防止SQL注入,提高系统安全性。2、mapper.xml文件,都会对应一个Dao接口(Mapper层),这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?Mapp

2021-12-30 18:10:13 136

原创 重写(Override)与重载(Overload)的区别和联系(详细易理解)

java面向对象编程有三大特性:封装、继承、多态下面单独说多态:爷爷、爸爸、儿子三个独立的人,爸爸是儿子的爸爸、还是爷爷的儿子,即一个事物出现多种形态多态体现为父类引用变量可以指向子类对象前提条件:必须存在子父类关系(注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法)多态的定义与使用格式:父类类型 变量名=new 子类类型()理解即为:多态是同一个行为具有多个不同表现形式或形态的能力,就是同一个接口,使用不同的实例而执行不同操作。重写和重载正是多态的一种表现

2021-12-30 16:54:23 715

原创 Spring 框架中用到了哪些设计模式

Spring 框架中用到了哪些设计模式?工厂模式 : Spring 使用工厂模式通过 BeanFactory、ApplicationContext 创建 bean 对象。代理模式 : Spring AOP 功能的实现。单例模式 : Spring 中的 Bean 默认都是单例的。模板方法模式 : Spring 中 jdbcTemplate、hibernateTemplate 等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。装饰模式 : 项目需要连接多个数据库,而且

2021-12-24 15:38:59 582

原创 Spring的事务原理分析、与mysql的事务关系

spring事务?mysql事务?系统中到底谁的事务是在保证数据的一致性,两个事务有什么关系?spring事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的;Spring的事务管理一般使用声明式事务,在相关的类和方法上通过注解@Transactional标识,这是一个基于AOP的实现操作;Spring在启动的时候会去解析生成相关的bean,这时候会查看拥有相关注解的类和方法,并且为这些类和方法生成代理,并根据@Tran

2021-12-23 18:41:51 1935

原创 Linux下RabbitMQ离线安装部署

准备工作一台centos7的机器 https://github.com/rabbitmq/erlang-rpm/releases/download/v21.3.8.2/erlang-21.3.8.2-1.el7.x86_64.rpm

2021-12-20 10:33:09 2018

空空如也

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

TA关注的人

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