自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java使用JCEF开发 windows桌面应用

一、写在前面以前写windows桌面应用首选用C#,当然是最好用的解决方案之一。这些年用java,才发现着实费劲,最近这些年随着硬件的能力提升,使用H5开发各种移动应用,桌面应用的方法也逐渐变得可行。本文记载了我用JCEF开发windows桌面应用的一种方法。先了解一些:CEF是什么? Chromium Embedded Framework (CEF)是个基于Google Chromiu...

2024-01-17 13:46:31 566

原创 使用 Luckysheet 可实现 Web 的 Excel

一、写在前面工作中会遇到excel的导入和导出,换个角度看,假如有个 web 版本的excel ,且能上传现有的,修改编辑后再下载也是个不错的方案。 Luckysheet 是实现 web版Excel的一个优秀的框架。Luckysheet ,一款纯前端类似excel的在线表格,功能强大、配置简单、完全开源。功能强大:包含大量常用电子表格功能,替代你的excel配置简单:最少的配置就能开...

2023-04-26 10:58:07 1566 1

原创 在Minio以STS方式获得临时凭据上传文件

一、写在前面一个常见的场景是:需要让客户端来上传图片,面临的安全性问题。给与客户端永久凭据无疑是很大风险的,我们还可以选择“给予一个临时凭据,这个凭据关联到一个 授权的用户,我们可以随时停用和修改这个用户具有的权限”Minio提供了STS 的方式来实现这个方法。MinIO安全令牌服务(STS)API允许应用程序生成用于访问MinIO部署的临时凭据。参考https://min.io/docs...

2023-04-12 16:52:20 1934

原创 使用geoserver-manager库操作geoserver发布图层

一、写在前面geoserver 提供了地图服务,可以通过它提供的 web 管理页面,创建存储库和发布图层。在实际使用中总不能每次都人工操作,太不方便了,往往还要和你的业务系统交互,在你的业务系统管理tiff 文件并发布。这个时候 geoserver-manager库就派上用场了,它封装了 geoserver 的一些 REST 接口,可以在你的Java项目中调用这些接口来实现你的需要。二、主要内...

2022-12-30 13:25:59 1273

原创 使用天地图加载Geoserver的图层

一、写在前面在项目中往往使用地图作为底图(比如 天地图卫星图等),再其上覆盖你的通过geoserver发布自定义图层。本文记录了我的实现方法。二、过程2.1 我遇到的难题遇到难题1:使用无人机拍摄制作的正射影像图有几百MB甚至1个G,直接展示图片方式会很卡顿。我的解决方法是,使用geoserver作为 GIS 地图服务,发布 GEO TIFF 图层,再在Openlayers 中展示。遇...

2022-12-29 13:33:35 1485

原创 Spring Cloud Gateway微服务网关

写在前面网关为微服务架构的系统提供简单、有效且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。GateWay : 是Spring Cloud的一个全新的API网关项目,基于性能的Reactor模式响应式通信框架Netty,异步阻塞模型 等技术开...

2022-10-17 17:19:55 203

原创 sentinel和本地配置规则文件

写在前面随着微服务的流行,服务和服务之间的稳定性变得越来越重要。 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。概念资源,可以是任何东西,服务,服务里的方法,甚至是一段代码。使用 Sentinel 来进行资源保护,主要分为几个步骤:定义资源定义规则检验规则是否生效先把可能需要保护的资源定义好,针对资源配置各种流量控制规则,就可...

2022-10-16 21:31:29 355

原创 springboot 日志跟踪(skywalking)

1、背景上了 springboot 微服务框架后会有很多微服务,每次都到单个微服务自己的日志海洋里去找需要很大经理,日志跟踪就会成为一个麻烦。我们尝试来寻找一个简化方案skywalking 可以在不修改任何代码的情况下,帮你生成调用跟踪链路,而且描述了各个链路的调用时长,相关日志。非常的强大。2、skywalking 介绍skywalking,分布式系统的应用程序性能监控工具,专为微服...

2022-09-28 11:18:47 417

原创 springboot 日志跟踪(zipkin)

1、背景上了 springboot 微服务框架后会有很多微服务,每次都到单个微服务自己的日志海洋里去找需要很大经理,日志跟踪就会成为一个麻烦。我们尝试来寻找一个简化方案2、了解 SleuthSpringCloud Sleuth主要功能就是在分布式系统中提供追踪解决方案。它大量借用了Google Dapper的设计, 先来了解一下Sleuth中的术语和相关概念。官网:https://s...

2022-09-28 03:18:54 389

原创 zookeeper分布式锁

场景“分布式锁”是用来解决分布式应用中“并发冲突”的一种常用手段,实现方式一般有基于zookeeper及基于redis二种使用基于zookeeper的分布式锁所需组件:zookeeper服务Curator 客户端启动zookeeper一般是集群部署,启动zookeeper服务端。java 代码Curator 是一个 基于 zookeeper服务 的客户端工具curato...

2022-09-27 19:02:56 338

原创 使用redis实现排行榜

写在前面排行榜在很多地方都能使用到,redis的zset可以很方便地用来实现排行榜功能。本文是一个示例。聊聊 zsetZSet 是有序集合,redis的有序集合与集合一样也是String类型元素的集合,不允许有重复的元素。 每一个元素都会关联一个double类型的分数,redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合中的成员是唯一的,但是分数可以重复。集合是通过哈希...

2022-09-27 11:02:51 3068

原创 Redis 分布式锁2

场景一般电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。“分布式锁”是用来解决分布式应用中“并发冲突”的一种常用手段,实现方式一般有基于zookee...

2022-09-24 01:25:51 233

原创 elasticsearch 学习笔记01

背景本文是学习 elasticsearch 时的学习笔记关键概念倒排索引ES 对它的最小词源(Term) 维护了一个“倒排索引”,即 “从 最小词源 到文档ID 的映射”。在文档入库时会先分词,完成后可查询。当查询时,比如 中国,人民 这样 的词,在查找时它所对应的 数据记录的ID有,1,14,1001 这样的数据ID。es 把这些ID的记录包含组成结果返回就是查询结果了。数据对应关系...

2022-09-24 01:22:13 546

原创 Redis 分布式锁

场景一般电商网站都会遇到秒杀、特价之类的活动,大促活动有一个共同特点就是访问量激增,在高并发下会出现成千上万人抢购一个商品的场景。虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,参加活动的商品一般都是限量库存,如何防止库存超卖,避免并发问题呢?分布式锁就是一个解决方案。“分布式锁”是用来解决分布式应用中“并发冲突”的一种常用手段,实现方式一般有基于zookee...

2022-09-23 11:04:37 357

原创 hadoop安装

安装准备环境# 关闭防火墙,方面后面浏览器访问测试systemctl stop firewalldsystemctl disable firewalld# 添加IP地址映射,方便后面地址配置vim/etc/hosts192.168.1.89 hadoop01# 配置SSH免密登录,方便后面服务启动ssh-keygenssh-copy-id hadoop01安装JDK...

2022-09-23 03:06:37 364

原创 JUC并发包系列:Semaphore

介绍Semaphore是一个有效的流量控制工具,它基于AQS共享锁实现。我们常常用它来控制对有限资源的访问。每次使用资源前,先申请一个信号量,如果资源数不够,就会阻塞等待;每次释放资源后,就释放一个信号量。它通过控制信号量的总数量,以及每个线程所需获取的信号量数量,进而控制多个线程对共享资源访问的并发度。Semaphore一般用于流量的控制,特别是公共资源有限的应用场景。例如数据库的连接的...

2022-09-22 05:25:55 349

原创 JUC并发包系列:CyclicBarrier

介绍CyclicBarrier 一种同步辅助工具,它允许一组线程相互等待以达到共同的障碍点。CyclicBarriers 在涉及固定大小的线程组的程序中很有用,这些线程组必须偶尔相互等待。屏障被称为循环的,因为它可以在等待线程被释放后重新使用。主要方法构造方法:public CyclicBarrier(int parties, Runnable barrierAction) 参数:...

2022-09-21 16:46:48 118

原创 JUC并发包系列:CountDownLatch

介绍CountDownLatch 是一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。CountDownLatch 使用一个指定 数 进行初始化,await方法一直阻塞,其他线程调用 countDown方法 直到当前计数达到零,之后所有等待的线程都被释放,任何后续的await调用立即返回。这是一次性的现象(计数无法重置)。如果您需要重置计数的版本,请考虑使用Cycl...

2022-09-21 12:57:19 96

原创 使用 Docker 部署的微服务在 Nacos 里注册成内网地址 导致无法微服务间互相调用的解决方案...

使用 Docker 部署的微服务在 Nacos 里注册成内网地址 导致无法微服务间互相调用的解决方案遇到问题:一般情况下,微服务采用docker部署,通常默认采用 bridge 桥接的网络模式,docker 会自动分配一个 172.x.x.x 这样的私有内网地址,存在这样的难题:由于是 172开头的内部网络地址, 在本机的docker 内是可以访问,而 跨主机 就无法访问。在使用了nac...

2022-02-26 21:09:59 6020 4

原创 Spring Boot 的 Actuator 模块和内置监控端点

1. 背景Spring Boot 包含许多附加功能,可帮助您在将应用程序推送到生产环境时监控和管理应用程序,其中 Actuator 组件可帮助开发者监控了解应用的运行状态。2.知识Actuator 模块Spring Boot 提供了 Actuator 模块。Actuator 翻译过来就是执行器。它是一个制造术语,指的是用于移动或控制某物的机械装置。Actuator 的端点Actu...

2021-10-09 11:11:34 346

原创 任务调度框架 Quartz

1. 背景在软件开发中经常会遇到使用任务调度的情况,比如需要定时,或者某个时刻执行某项任务。Quartz 是一个在java开中优秀的可选框架。2.知识什么是 Quartz 作业调度库?Quartz 是一个Java下作业控制的开源框架。用来创建或简单或复杂的调度时间表,执行Java下任意数量的作业。示例用途:驱动流程工作流:比如下新订单时,安排一个作业在 2 小时内触发检查该订单的...

2021-10-08 20:46:34 213

原创 使用 Spring Cloud Alibaba Sentinel 的熔断降级保护微服务应用

1. 背景随着微服务的流行,服务和服务之间的稳定性变得越来越重要。以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。1. Sentinel 介绍Sentinel 提供一个轻量级的开源控制台,它提供机器发现以及健康情况管理、监控(单机和集群),规则管理和推送的功能。1.1 知识Sentinel 的组成:(1) Sentinel 核心库, 即基本的类库的使...

2021-09-27 09:20:12 320

原创 Maven 跳过单元测试

1、背景Maven 构建生命周期为我们提供了对项目执行各种操作,例如验证,清理、打包、测试和部署项目。而有时候我们需要跳过单元测试,例如,在处理新模块时,还有未通过的单元测试时。在这些情况下,我们可以跳过测试以避免编译和运行测试时发生的时间。在本文中,我们将了解可用于跳过 maven 项目中的测试的各种方法。2、几种跳过的方法可以在插件标签的配置中设置跳过测试元素属性。通过在 Mave...

2021-09-23 16:57:50 5493

原创 Nacos 学习笔记2 - 搭建 Nacos 集群

1. 背景生产环境中往往采用集群的方式保证Nacos的高可用,本文记录了搭建的过程。Nacos集群的搭建时要注意:1.xx 版本和 2.xx 版本有区别。从2.0开始Nacos使用了 gRPC ,需要开放额外的端口。我就遇到了 各个 Nacos 节点无法互相复制,注册的服务不一致的情况。2. 安装Nacos集群模式部署这个快速开始手册是帮忙您快速在你的电脑上,下载安装并使用Nacos,...

2021-09-13 20:02:14 361

原创 Linux (中标麒麟)离线安装 Python

1. 背景本文记录在 Linux (中标麒麟)离线安装 Python 的方法和过程2.思路安装过程需要中需要安装依赖包和gcc ,然后编译安装Python,在线安装直接用 yum install 即可。而离线安装首先要获得 适配操作系统的依赖包。而逐个去寻找依赖包是很麻烦的过程,幸好yum 提供了离线下载依赖包到某个目录的方法,我们可以下载到本地,在复制到目标机器上来安装。仅仅下载到指定...

2021-09-13 01:04:14 3655

原创 Nacos 学习笔记

1. 背景最近的一个趋势是Eureca用的少了,都在推荐使用Nacos ,本节我们学习Nacos。2.知识一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。官方主页: https://nacos.io/Nacos 是什么?Nacos 是 注册中心(Service Registry)和 配置中心(Config Center) ,也可以仅作为注册中心使用。三个关键特性:...

2021-09-04 20:36:32 120 1

原创 修改nacos源码增加对达梦数据库的支持

1. 背景Nacos 提供了文件存储和mysql存储两种方式,本文记录了如何增加对 达梦数据库的支持。2. 实现思路采用的方式:修改nacos源码增加对达梦数据库的支持我修改后的放到github了,地址:https://github.com/vir56k/add_nacos_support_dameng下面说下修改过程。3. 操作过程3.1、获得源代码从 Github 上下载源码...

2021-09-04 12:40:57 1044 1

原创 camunda 工作流学习笔记2 - 任务的多实例特性(Multiple Instance)

1. 背景在工作流中会有遇到这样一个"多个人处理同一个任务“的情形,在 camunda 中可以使用“任务的多实例”来实现。2.知识场景比如遇到下面的场景:一个审批任务可由 经理或者副经理 其中的一个人审批即可通过。一个填报任务,要由组员A填报一半的内容,且组员B填报一半的内容,都填完了才算完成。这时,可考虑使用“任务的多实例”任务的多实例( Multiple Instance...

2021-08-19 12:09:37 2767 1

原创 camunda 工作流学习笔记1- 基础知识

1. 背景本节学习 camunda 工作流引擎。2.知识camunda 是一款开源的工作流引擎,支持随时随地自动化任何流程。特点:端到端编排业务-IT 协作开发人员友好开放式架构过程:1、使用建模工具 ( Modeler.exe ) 进行建模,输出 流程模型 bpmn 文件。2、启动 camunda 平台,并将 bpmn 部署到 camunda 平台。3、即可启动一...

2021-08-15 13:52:01 1165

原创 Spring 事务管理

1. 背景本节学习在 Spring 框架中使用事务。2.基础知识数据库事务( Transaction):是指操作数据库的一组操作序列,它可能包含查询或者更新操作,这组操作在执行过程中是一个逻辑单位,要么一起成功,要么一起失败。事务的基本概念事务包含了一个序列的对数据库的读/写操作,具有以下特性::1、提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持...

2021-08-05 13:33:24 92

原创 Android Jetpack 学习笔记(1) - 概述

1. 背景Android Jetpack 套件是最近比较流行的组件库,它包含了一系列的优秀实践,本文是先介绍 Jetpack 的概貌。2.知识Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。为何使用 Android Jetpack?遵循最佳实践: J...

2021-08-04 11:33:46 155

原创 Redis 学习总结(3) Redis 哨兵模式

1. 背景在实际开发中不会仅仅部署一个 Redis 示例,为了获得高可用,Redis 哨兵模式 则是高可用的一种选择。本文先介绍下 哨兵模式,再介绍了如何在 springboot 项目中使用。2.知识Redis Sentinel 即哨兵模式,它是 Redis 官方的高可用性解决方案。这意味着使用 Sentinel (哨兵模式),您可以创建一个 Redis 部署,它可抵抗某些类型的故障...

2021-07-23 01:41:33 380

原创 Java 微服务中使用定时任务

1. 背景在开发中经常要用到定时任务的场景,有多种可选方案。可选的方式有:(1) 使用Springboot 的 注解(2) 使用 linux 中的 crontab 工具。2. 方式一:使用Springboot 的 注解执行“定时任务”在 Springboot 项目中可以使用注解开始定时任务。注解说明:@Configuration 声明配置,@EnableSchedul...

2021-07-22 17:54:06 2449

原创 MongoDB 学习笔记4 - Java 使用 MongoDB

1. 背景本节使用 Java 操作 mongDB。2.知识MongoDB 简介MongoDB是一个文档型数据库,它将数据存储在类似json的文档中。特点:数据以JSON方式存储,处理数据最自然,支持数组和嵌套对象。查询也以JSON方式,支持筛选和排序,聚合。Spring Data MongoDB 简介我们使用 Spring Data MongoDB 类库来操作 Mongo...

2021-07-22 11:45:54 360

原创 MongoDB 学习笔记3 - 命令行操作示例

1. 背景本节使用命令行操作 mongDB。2.知识MongoDB是一个文档型数据库,它将数据存储在类似json的文档中。特点:数据以JSON方式存储,处理数据最自然,支持数组和嵌套对象。查询也以JSON方式,支持筛选和排序,聚合。和 关系型数据的概念对照表:MongoDB传统的关系型数据库databasedatabase, 相同collectio...

2021-07-21 00:31:45 202

原创 RabbitMQ 学习笔记3 - Java 使用 RabbitMQ 示例

1. 背景本节讲述 Java 使用 RabbitMQ 的示例,和 发送者确认回调,消费者回执的内容。2.知识高级消息队列协议 (AMQP) 是面向消息的中间件的平台中立的协议。Spring AMQP 项目将 Spring 的概念应用于 AMQP,形成解决方案的开发。AMQP 的一些基本概念:开始之前, 要使用 RabbitMQ 首先要了解 AMQP 协议的基本概念,更多可阅读我的另一篇文...

2021-07-20 16:08:59 493 2

原创 分布式事务解决方案总结(2) seata 方案

1. 背景本节介绍 阿里的分布式事务框架 Seate ,和集成示例。2.知识Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 用户提供了多种事务模式:AT 模式TCC 模式SAGA 模式XA 模式2.1 AT 模式适合场景:基于支持本地 ACID 事务的关系型数据库。Java 应用,通过 JDBC 访问数据库。...

2021-07-19 13:45:02 545

原创 kafka 学习笔记 4 - Topic 和分区

1. 背景本节讨论下 kafka的分区。2.知识先理解下 kafka 的 topic 和分区的基本概念。Topic 就是 主题,是 数据记录集 发布的地方, 可以用来区分业务系统。Kafka中的Topics总是多订阅者模式,一个topic可以拥有一个或者多个消费者来订阅它的数据。Partition(分区):对于每一个topic, Kafka集群都会维持一个分区(Partition...

2021-07-19 12:54:17 1144

原创 kafka 学习笔记 3 - Java 使用 kafka 收发消息

1. 背景本文简述 kafka 的相关内容。2.知识更多基础知识见:https://www.jianshu.com/p/bee2152f476c如何安装 kafka 见:https://www.jianshu.com/p/8a076052a9ad3. 示例4. 扩展Springboot 官网文档介绍https://docs.spring.io/spring-boot/docs/cur...

2021-07-18 09:54:39 100

原创 kafka 学习笔记 2 -使用 docker 安装部署 kafka

1. 背景本节使用 docker-compose 来创建 kafka 容器。2. 创建 docker 容器我使用 docker-compose 来创建,新建文件夹并在文件夹下创建一个 “docker-compose.yml”,这个文件描述了具体配置如下:version: '3'services: zookeeper: image: wurstmeister/zookeeper...

2021-07-18 09:50:06 353

java实现局域网互发消息

用java语言编写的局域网互发消息的工具

2007-10-01

空空如也

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

TA关注的人

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