自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (2)
  • 收藏
  • 关注

原创 知识点总结(一)

1. 谷粒商城–环境搭建–笔记一1.1 修改CentOS默认yum源为国内yum镜像源1.2 CentOS安装docker1.3 docker常用命令1.4 配置 docker 镜像加速1.5 docker安装mysql5.71.6 docker安装redis1.7 开发环境统一(maven,Idea&VsCode插件,git配置)2. 谷粒商城–注册中心配置中心及网关–笔记二2.1 nacos注意(启动单节点)2.2 结合 SpringCloud Alibaba 我们最终的

2022-03-18 10:14:30 1939

原创 java springboot 微信小程序登录,获取获取手机号,获取unionId和解密用户信息

java springboot 微信小程序登录,获取获取手机号,获取unionId和解密用户信息

2024-05-17 21:00:00 275

原创 springboot 整合阿里云短信服务

springboot 整合阿里云短信服务

2024-05-13 20:45:00 310

原创 springboot整合redis多数据源(附带RedisUtil)

springboot整合redis多数据源(附带RedisUtil)

2024-05-10 14:15:45 953

原创 Springboot整合飞书向群组/指定个人发送消息/飞书登录

Springboot整合飞书向群组/指定个人发送消息/飞书登录

2024-05-08 18:08:22 1015 1

原创 SpringBoot整合阿里云文件上传OSS以及获取oss临时访问url

直接拿那返回的url去访问,发现AccessDenied,这种情况就是没有开放bucket的公共读的权限,有如下几种解决方案: - 直接bucket开启公共读权限,所有人都可以访问,但是不安全 - bucket指定白名单,指定服务器ip可以访问(我认为比较好的一种方式) - 使用STS以及签名URL临时授权访问OSS资源(本次我使用的)

2024-03-12 18:00:00 1385

原创 springboot 注解属性转换字典

可以看到通过注解生成了一个statusText字段,并且为字段中配置的转换后的值。此处Vo属性上加上自定义注解。

2024-02-29 14:03:11 585

原创 mysql which is not in SELECT list; this is incompatible with DISTINCT解决方案

mysql报错Expression #1 of ORDER BY clause is not in SELECT list, references column ‘xxx’ which is not in SELECT list;与 order by 在一起用时则会报3065错误。因为mysql5.7的语法比 mysql5.6 的语法更严格,将DISTINCT 与 order by 一起用时这两个都会进行排序处理。长期解决方案:/etc/my.cnf增加如下配置。这是在 mysql5.7 版本,

2023-11-30 09:36:27 1094

原创 实战排查内存泄漏

大量的字符串导致的内存占用,但在GC之后就会清除问题不大字符串来源:日志中有大量数据mybatis大量的sql语句(sqlSession导致的内存泄漏)解决方案:关闭日志/减少日志的打印(只打印关键日志)

2023-10-25 17:18:44 305

原创 springboot-admin整合及使用

Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 SBA 中,然后就可以实现对 Spring Boot 项目的可视化管理和查看了。Spring Boot Admin 可以监控 Spring Boot 单机或集群项目,它提供详细的健康 (Health)信息内存信息JVM 系统和环境属性垃圾回收信息日志设置和查看定时任务查看。

2023-10-08 13:00:00 621

原创 docker搭建Jenkins及基本使用

docker搭建Jenkins及基本使用

2023-10-07 09:45:49 2981 2

原创 kubernetes搭建及基本使用

kubernetes搭建及基本使用

2023-08-28 16:59:10 370

原创 使用 Docker 部署 Prometheus + Grafana 监控平台

使用 Docker 部署 Prometheus + Grafana 监控平台

2023-08-08 14:39:57 175

原创 JasperReport与SpringBoot整合及模板制作

在企业级应用开发中,报表生成、报表打印下载是其重要的一个环节。除了Excel报表之外,PDF报表也有广泛的应用场景,必须用户详细资料,用户简历等目前世面上比较流行的制作PDF名称介绍是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDFOpenofficeopenoffice是开源软件且能在windows和linux平台下运行,可以灵活的将word或者Excel转化为PDF文档。iText PDFiText是著名的开放项目,是用于生成PDF文档的一个java类库。

2023-07-24 11:35:36 2569 3

原创 Netty核心技术十一--用Netty 自己 实现 dubbo RPC

远程 过程调用,是一个计算机 通信协议。该协议允许运 行于一台计算机的程序调 用另一台计算机的子程序, 而程序员无需额外地为这 个交互作用编程两个或多个应用程序都分 布在不同的服务器上,它 们之间的调用都像是本地 方法调用一样(如图)常见的 RPC 框架有: 比较知名的如阿里的Dubbo、google的gRPC、Go语言的rpcx、Apache的thrift, Spring 旗下的 Spring Cloud。

2023-07-15 15:54:24 2400 1

原创 Netty核心技术十--Netty 核心源码剖析

每当ServerSocket创建一个新的连接,就会创建一个Socket,对应的就是目标客户端。每一个新创建的Socket 都将会分配一个全新的 ChanneIPipeline(以下简称 pipeline)每一个ChannelPipeline内部都含有多个ChannelHandlerContext(以下简称 Context)他们一起组成了双向链表,这些Context 用于包装我们调用addLast 方法时添加的ChannelHandler (以下简称handler)关系图。

2023-07-11 10:36:11 780

原创 Netty核心技术九--TCP 粘包和拆包及解决方案

要求客户端发送 5 个 Message 对象, 客户端每次发送一个Message对象服务器端每次接收一个Message, 分5次进行解码,每读取到一个Message,会回复一个Message 对象 给客户端.示例1的代码基础上做扩充len:每个数据包的长度content:每个数据包的内容//协议包 public class MessageProtocol {//关键 private byte [ ] content;return len;} }个人总结。

2023-07-08 14:03:50 698

原创 Netty核心技术八--Netty编解码器和handler的调用机制

netty的组件设计:Netty的主要组件有ChannelEventLoopChannelPipe等例如,实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被业务逻辑处理。当要给客户端发送响应时,也可以从ChannelInboundHandler冲刷数据。**业务逻辑通常写在一个或者多个ChannelInboundHandler中。

2023-07-02 10:49:31 1431

原创 阿里云云效 流水线发布spring cloud项目及Vue项目

阿里云云效 流水线发布spring cloud项目及Vue项目

2023-07-01 11:51:43 2256 8

原创 Netty核心技术七--Google Protobuf

Protobuf 是Google 发布的开源项目,全称是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC[远程过程调用 remote procedure call ] 数据交换格式。目前很多公司 http+json 向 tcp+protobuf转型Protobuf 是以 message 的方式来管理数据的.支持跨平台、跨语言,即[客户端和服务器端可以是不同的语言编写的](支持目前绝大多数语言,例如 C++、C#、Java、python 等)

2023-06-21 18:23:07 400

原创 微信小程序uniapp+springboot实现小程序服务通知

微信小程序uniapp+springboot实现小程序服务通知

2023-06-20 18:06:00 3147 1

原创 Netty核心技术四--Netty概述

Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络IO程序

2023-06-18 11:23:22 543

原创 Netty核心技术六--Netty核心模块组件

Bootstrap 意思是引导,一个 Netty 应用通常由一个Bootstrap 开始,**主要作用是配置整个 Netty 程序,串联各个组件**,Netty 中 **Bootstrap 类是客户端程序的启动引导类**,**ServerBootstrap 是服务端启动引导类**

2023-06-17 14:02:41 607

原创 Netty核心技术五--Netty高性能架构设计

1. 基于 I/O 复用模型:**多个连接共用一个阻塞对象**,应用程序只需要在一个阻塞对象等待,无需阻塞等待所有连接。当某个连接有新的数据可以处理时,操作系统通知应用程序,线程从阻塞状态返回,开始进行业务处理Reactor 对应的叫法: 1. `反应器模式` 2. `分发者模式(Dispatcher)` 3. `通知者模式(notifier)`2. 基于线程池复用线程资源:不必再为每个连接创建线程,**将连接完成后的业务处理任务分配给线程进行处理,一个线程可以处理多个连接的业务。**

2023-06-04 14:39:22 721

原创 SpringBoot 上传图片-指定目录按照日期存储

SpringBoot 上传图片-指定目录按照日期存储

2023-05-27 18:10:12 1187

原创 Netty核心技术三--NIO编程

Java NIO的非阻塞模式,使一个线程从某通道发送请求或者读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而**不是保持线程阻塞**,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。非阻塞写也是如此,一个线程请求写入一些数据到某通道,但不需要等待它完全写入,这个线程同时可以去做别的事情。

2023-05-20 14:42:19 675

原创 Netty核心技术二--BIO编程

Java BIO 就是传统的java io 编程,其相关的类和接口在java.io: 同步阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,可以通过线程池机制改善(实现多个客户连接服务器)。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,程序简单易理解。

2023-05-20 14:40:46 606

原创 Netty核心技术一--Netty介绍和应用场景

Netty 是由JBOSS提供的一个 Java 开源框架,现为Github上的独立项目。Netty 是一个异步的基于事件驱动的网络应用框架用以快速开发高性能、高可靠性的网络 IO 程序。利用Ajax技术对异步进行理解左图为没有使用Ajax的B/S,右图为使用Ajax的B/S左图解析:客户通过浏览器访问服务器的流程是固定阻塞的,必须是1->2->3,浏览器想继续向下执行必须等待服务器的响应右图解析:客户通过浏览器访问服务器,浏览器想继续向下执行不用。

2023-05-14 12:43:02 414

原创 vue2实现高德地图 JSAPI 2.0海量点标记(标注和标注图层)->自定义点位->定时刷新点位

1. 需要修改`securityJsCode`和`key`为自己的2. `allowCollision`为标注是否避让marker,默认为false不避让3. `markers`为地图上的标记数组4. `layer`为一个标注层,可以理解为一个图层5. 流程其实就是将`markers`装载到`layer`再将`layer`装载到map就可以实现了

2023-05-11 17:53:09 3019 4

原创 vue2实现高德地图 JSAPI 2.0轨迹回放组件(MoveAnimation)

将lineArr路径变量通过父组件传过来,而不是在子组件写死考虑到性能问题(因为在父组件的时候就需要查询出所有设备的lineArr,但如果用户只查看一个就会有性能损耗),所以我没有直接将lineArr直接通过父组件直接传到子组件,我是通过父组件将传到子组件,然后子组件通过调用后端接口可以查询的对应设备的lineArr读者可以直接将lineArr传过来也没问题同时通过父组件来操作控制面板在展示同时我还对组件新增了日期选择功能,可以查询到某个设备某天的路径轨迹。

2023-05-04 11:57:32 2248 2

原创 JUC高级十二-ReentrantLock、ReentrantReadWriteLock、StampedLock

写锁和读锁是互斥的(这里的互斥是指线程间的互斥,当前线程可以获取到写锁又获取到读锁,但是获取到了读锁不能继续获取写锁),这是因为读写锁要保持写操作的可见性。因为,如果允许读锁在被获取的情况下对写锁的获取,那么正在运行的其他读线程无法感知到当前写线程的操作。因此,分析读写锁ReentrantReadWriteLock,会发现它有个潜在的问题:读锁全完,写锁有望;写锁独占,读写全堵;如果有线程正在读,写线程需要等待读线程释放锁后才能获取写锁。

2023-04-23 18:30:11 484

原创 JUC高级十-并发加锁原理之AbstractQueuedSynchronizer(AQS)

如果共享资源被占用,就**需要一定的阻塞等待唤醒机制来==保证锁分配==**。这个机制主要用的是CLH队列的变体实现的,**将暂时获取不到锁的线程加入到队列中**,这个队列就是AQS的抽象表现。它将请求共享资源的线程封装成队列的结点(`Node`),通过`CAS`、`自旋`以及`LockSupport.park()`的方式,维护`state变量`的状态,使并发达到同步的效果。

2023-04-15 16:08:38 540

原创 JUC高级九-Synchronized与锁升级

为求平衡将synchronized优化为不在是无所和重锁两个状态,新增偏向锁和轻量级锁来平衡安全性和性能问题synchronized锁:由对象头中的Mark Word根据的不同而被复用及锁升级策略。

2023-04-15 09:21:00 446

原创 使用反射重新执行不同的方法

当我调用sendCommands方法发送请求时可能会收到errorCode为403也就是代码中的MDS_ERROR,就是当token(mds)失效了这种情况,我们就需要重新刷新token,并且重新执行该方法。假设还有100个sendCommands类似的方法都需要做这种处理,那么我就需要对这个100个方法做相同的处理.所以想到了用反射来帮我重新执行方法。使用redo方法的好处就是以后其他方法只要有类似操作只需要调用redo方法即可,不需要再去写一次相同代码,并且是通过反射自动完成的。

2023-04-13 18:12:49 502

原创 Spring Cloud Gateway 整合knife4j 聚合微服务swagger3

访问每个服务的API文档都需要访问单独的swagger-ui.html页面,既然我们使用了微服务,就应该有统一的API文档入口,最近发现knife4j有这方面的支持

2023-04-10 16:43:47 1878

原创 JUC高级八-Java对象内存布局和对象头

在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:`对象头(Header)`、`实例数据(Instance Data)`和对齐填充`(Padding)`(保证8个字节的倍数) 。

2023-04-09 11:04:57 441

原创 JUC高级七-ThreadLocal线程局部变量

ThreadLocal提供线程局部变量。这些变量与正常的变量不同,因为每一个线程在访问**ThreadLocal实例的时候(通过其get或set方法)都有自己的、独立初始化的==变量副本==**。ThreadLocal实例通常是类中的私有静态字段,使用它的目的是希望将状态(例如,用户ID或事务ID)与线程关联起来。

2023-04-08 14:07:17 422

原创 docker搭建elk+filebeat

章节一只是创建网络,如果要使用该网络是在docker run时指定的#查看docker的网络 docker network ls#创建一个网段在172.22.1.x 和网关为172.22.1.1的桥接类型网络名叫elk-net docker network create --driver bridge --subnet 172.22 .1.0/24 --gateway 172.22 .1.1 elk-net #查看docker网络,网络是否创建成功 docker network ls。

2023-04-06 11:57:52 785

原创 JUC高级六:CAS和原子类

CAS的缩写,中文翻译成比较并交换,**实现并发算法时常用到的一种技术。**它包含三个操作数——内存位置预期原值及更新值。如果相匹配,那么处理器会自动将该位置值更新为新值,如果不匹配,处理器不做任何操作,多个线程同时执行CAS操作只有一个会成功。只需要记住:CAS是靠硬件实现的从而在硬件层面提升效率,最底层还是交给硬件来保证原子性和可见性实现方式是基于硬件平台的汇编指令,在intel的CPU中(X86机器上),使用的是汇编指令cmpxchg指令。

2023-04-02 11:52:27 442

原创 FastDFS单节点搭建

tracker:跟踪者,负责调度存储服务。storage:用于文件存储。client:调用tracker。

2023-04-01 10:01:30 242

watermarker-v0.0.2.jar(图片批量添加水印)

批量为某一目录下所有图片添加水印 需要jre环境

2021-10-09

卸载程序geek.exe

geek.exe

2021-10-09

空空如也

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

TA关注的人

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