自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 @FunctionalInterface注解分析及使用

这个接口定义了一个接受一个整数参数且没有返回值的方法apply。该接口没有提供具体的实现。函数式接口关注的是方法的签名,定义了方法的输入和输出,而具体的实现由使用者通过lambda表达式或方法引用来提供。这使得代码更加简洁和灵活,可以在不同的场景下轻松地提供不同的实现逻辑。

2024-06-19 14:30:56 297

原创 java设计模式之适配器模式(结构型模式)

适配器模式(Adapter)的定义如下:将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式两种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。优点:客户端通过适配器可以透明地调用目标接口。 复用了现存的类,程序员不需要修改原有代码而重用现有的适配者类。 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。 在很多业务场景中符合开闭原则。缺

2022-01-19 16:46:36 175

原创 Java设计模式之建造者模式(创建型模式)

定义建造者(Builder)模式的定义:指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式或者生成器模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步构建而成。它将变与不变相分离,即产品的组成部分是不变的,但每一部分是可以灵活选择的优点封装性好,构建和表示分离。 扩展性好,各个具体的建造者相互独立,有利于系统的解耦。 客户端不必知道产品内部组成的细节,建造者可以对创建过程逐步细化,而不对其它模块产生任何影响,便于控制细节风险。

2022-01-19 13:35:11 307

原创 Java设计模式之工厂模式(创建型模式)

一、简单工厂模式简单来说,简单工厂模式有一个具体的工厂类,可以生成多个不同的产品优点:工厂类包含必要的逻辑判断,可以决定在什么时候创建哪一个产品的实例。客户端可以免除直接创建产品对象的职责,很方便的创建出相应的产品。工厂和产品的职责区分明确。客户端无需知道所创建具体产品的类名,只需知道参数即可。也可以引入配置文件,在不修改客户端代码的情况下更换和添加新的具体产品类。缺点:简单工厂模式的工厂类单一,负责所有产品的创建,职责过重,一旦异常,整个系统将受影响。且工厂类代码会非常臃肿,违背高聚合原则

2022-01-19 11:00:13 167

原创 Java设计模式之单例模式(创建型模式)

1、单例模式单例模式的优点:单例模式可以保证内存里只有一个实例,减少了内存的开销。可以避免对资源的多重占用。单例模式设置全局访问点,可以优化和共享资源的访问。单例模式的缺点:单例模式一般没有接口,扩展困难。如果要扩展,则除了修改原来的代码,没有第二种途径,违背开闭原则。在并发测试中,单例模式不利于代码调试。在调试过程中,如果单例中的代码没有执行完,也不能模拟生成一个新的对象。单例模式的功能代码通常写在一个类中,如果功能设计不合理,则很容易违背单一职责原则。应用场景:1、需要频繁创

2022-01-17 16:27:26 152

原创 java基础之反射

1.获取类对象 Class class = Class.forName("pojo.Hero");2.获取构造器对象 Constructor con = clazz.getConstructor(形参.class);3 获取(实例化)对象 Hero hero =con.newInstance(实参);通过Class对象可以获取某个类中的:构造方法、成员变量、成员方法;并访问成员;1.获取构造方法:1).批量的方法:public Constructor[] getConstructors(

2022-01-17 10:36:11 68

原创 java创建线程的三种方式及相关知识

1、继承Thread类创建线程类a、定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。b、创建Thread子类的实例,即创建了线程对象。c、调用线程对象的start()方法来启动该线程public static void main(String[] args) { System.out.println("==========创建线程"); new Thread(){

2022-01-11 19:18:31 121

原创 java8之CompletableFuture异步任务

CompletableFuture是java.util.concurrent库在java 8中新增的主要工具,同传统的Future相比,其支持流式计算、函数式编程、完成通知、自定义异常处理等很多新的特性。同传统的Future相比较,CompletableFuture能够主动设置计算的结果值(主动终结计算过程,即completable),从而在某些场景下主动结束阻塞等待。而Future由于不能主动设置计算结果值,一旦调用get()进行阻塞等待,要么当计算结果产生,要么超时,才会返回1. 创建Complet

2022-01-06 18:24:32 2802

原创 java基础之赋值操作

提要:对于基本类型(字符类型char,布尔类型boolean以及数值类型byte、short、int、long、float、double)来说=就是直接拷贝内容,对于对象的 = 赋值的是对象的地址,故基本数据类型赋值之后变量的操作不影响原始值,而对象赋值给变量之后的操作是会改变原对象里面的值例1、基本数据类型赋值public static void main(String[] args) throws Exception { Stutent stutent = new Stut..

2021-12-24 16:06:30 2822

原创 springboot2整合kafka

一、安装kafka(前提是已安装了zookeeper),这里介绍docker安装方式docker run -d --name kafka \-p 9092:9092 \-e KAFKA_BROKER_ID=0 \-e KAFKA_ZOOKEEPER_CONNECT=xxxx:12181 \-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://xxxx:9092 \-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \-t

2021-12-13 15:13:38 1995

原创 spingboot2整合dubbo

一、引入依赖(Dubbo 如今已被阿里卖给 Apache 维护和管理,所以最好是引入apache下面的包,网上七七八八的包一大堆,着实让人眼花缭乱,什么com.alibaba.boot,com.alibaba.spring.boot,io.dubbo.springboot等,都快看吐了)<!--dubbo-springBoot依赖--> <dependency> <groupId>org.apache.dubbo</gr

2021-12-10 18:10:29 1479

原创 springboot2整合log4j2

一、引入依赖<dependency> <!-- 引入log4j2依赖 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId></dependency>二、去除logback依赖<dependency> <groupId>

2021-12-06 14:43:48 229

原创 centos8修改docker容器默认安装位置及docker相关操作

通过 yum 的方式安装docker环境,默认存储位置是系统盘下面的/var/lib/docker,默认pid 存放位置是 /var/run/docker.pid。一般我们系统盘空间都不是很大,所以有时候需要调整存储位置。针对centos8的具体操作方法如下:1、停止docker服务:systemctl stop docker2、在挂载的非系统盘创建存放docker信息的目录(本文路径/app/middleware/docker):cd /appmkdir middlewar...

2021-11-25 15:01:13 3050

原创 activeMq部署安装及在springboot中实现消息的发布订阅

一、linux环境部署1、下载安装包(地址戳这里)apache-activemq-5.16.3-bin.tar.gz并上传到云服务器。2、解压:tar -zvxf apache-activemq-5.16.3-bin.tar.gz3、相关配置文件activemq.xml可以修改各协议连接的ip地址:jetty.xml可以修改管理后台的ip及端口jetty-realm.properties可查看账户名及密码4、进入bin目录执行./activemq start命令启动act

2021-11-24 11:01:48 1239

原创 springboot使用redisTemplate+websocket实现集群消息的发布订阅

本文主要介绍小项目中如何通过redisTemplate+websocket实现后端向前端推送消息一、websocket配置类@Componentpublic class WebsocketConfig { /** * ServerEndpointExporter 作用 * <p> * 这个Bean会自动注册使用@ServerEndpoint注解声明的websocket endpoint * * @return */

2021-11-22 15:07:53 2860

原创 ElasticSearch7之function_socre使用心得

介绍:1、function_score是可以修改查询检索文档的分数,使用function_score必须定义​​一个查询和一个或多个函数,为查询返回的每个文档计算一个新的分数。function_score提供的评分函数:1、weight : 设置一个float类型的权重值,使最终分数是查询分数与该权重值的乘积2、field_value_factor : 允许使用文档中的字段来影响分数GET /_search{ "query": { "function_score": {

2021-11-18 16:06:25 2453

原创 linux部署nginx问题总结

错误1、make[1]: *** [Makefile:1113: pcrecpp.lo] Error 1原因:缺少gcc安装包解决方案:执行yum -y install gcc-c++安装编译器错误2、make[1]: *** [objs/Makefile:445: objs/src/core/ngx_murmurhash.o] Error原因:-Werrori意思要求GCC将所有的警告当成错误进行处理,所有导致错误输出并不能进行下一步解决方案:进入/nginx1.10.1/objs/ 将.

2021-11-18 10:13:53 2315

原创 springboot + mybatis + Sharding-JDBC实现读写分离

一、引入maven依赖,具体版本大家可根据自己实际需要选择,我这边使用的是4.0.0-RC1版本<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>${sharding-sphere.version}</versio

2021-11-11 15:18:45 648

原创 idea创建maven+springboot父子项目

一、父工程创建1、新建一个工作空间,并用idea打开,点击左上角file 》new》project新建一个工程选择maven,设置jdk,点击next输入groupId,artifactId,点击next输入project-name及location,点击finish,完成父工程的创建删除里面的src文件夹,得到一个空的工程二、子工程的创建1、右击创建的父工程,选择new 》module选择spring initializr,选择jdk,选择...

2021-11-09 14:43:48 2050 1

原创 maven + git + gitlab-runner实现远程服务的自动打包发布

1、远程服务器的自动打包发布一、前提条件git、git-runner二、注册gitlab-runner注册的url及token来源于git设置里CI/CD模块,如下:执行器可以选择shell跟docker,这里我选择的是docker,默认镜像alpine:latest,注册完成之后,查看注册的gitlab-runner:三、编写gitlab-ci文件stages: - Buildvariables: MAVEN_CLI_OPTS: "-s .mvn/w.

2021-11-08 18:26:02 3258

原创 CPU占用率异常高故障排查

步骤1:使用top命令获取那些进程占用了绝大部分cpu,得到进程pid,cpu这一列100%代表占用一个核,200%代表占用2个核,一般只是操作下数据库,不是那种高tps访问的cpu密集型程序,一般不会超过半个核步骤2:使用ps -aux | grep pid 查看进程号对应进程步骤3:使用top -H -p pid 命令查看线程资源占用情况,结果如下图,这时第一列pid是线程id,建议多来几次,观察是不是一直是这几个线程占用这么高,并截图保存步骤4:使用jstack 6902 >...

2021-11-08 14:15:56 1015

原创 搭建自己的私有云盘

一、准备工作centos8,nextcloud,mysql二、安装docker(官方文档)$ yum install -y yum-utils$ yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo$ yum install -y https://download.docker.com/linux/centos/8/x86_64/stable/Packages/co

2021-11-08 11:33:37 989

原创 springboot2.0+mybatis实现读写分离

一、application.yml配置文件server: port: 8080 servlet: context-path: /cmspring: datasource: type: com.alibaba.druid.pool.DruidDataSource druid: master: driver-class-name: com.mysql.cj.jdbc.Driver username: username

2021-11-04 12:22:08 340

原创 promethus + grafana + node-export + alertmanager

一、node-export安装(提供数据接口) 1、下载安装包:https://prometheus.io/download/ 2、解压:tar xf node_exporter-0.15.0.linux-amd64.tar.gz 3、启动:./node_exporter & 4、验证:curl localhost:9100二、promethus安装部署 1、下载安装包:https://prometheus.io/download/ 2、解压 tar xf p...

2021-10-09 16:39:11 267

nginx-1.10.1.tar.gz

nginx-1.10.1.tar.gz

2021-11-29

空空如也

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

TA关注的人

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