未来AI编程
硕士毕业从事GIS行业致力于将GIS融入互联网为大众提供更深层次的GIS应用
展开
-
WebP Vs. PNG:哪种图像格式适合您的网站?
WebP 是 Google 开发的一种相对较新的图像格式,它提供有损和无损压缩,从而在不影响图像质量的情况下减小文件大小。这使得 WebP 成为 Web 使用的理想选择,可实现更快的加载时间、更低的带宽使用和更好的用户体验。PNG 最适合需要高质量和透明度的图像,例如徽标、图标和详细的图形,其中图像清晰度和无损压缩是必不可少的。这意味着 WebP 可以在不影响图像质量的情况下实现更小的文件大小,使其成为 Web 使用的理想选择。如果您需要更快的加载时间和更小的文件大小,那么 WebP 是您的不二之选。原创 2024-12-27 11:24:09 · 428 阅读 · 0 评论 -
Empty issuer DN not allowed in X509Certificates
Exception in thread "main" io.kubernetes.client.openapi.ApiException: javax.net.ssl.SSLProtocolException: Empty issuer DN not allowed in X509Certificatesat io.kubernetes.client.openapi.ApiClient.execute(ApiClient.java:886)at io.kubernetes.client.openap..原创 2022-04-16 16:46:38 · 3519 阅读 · 0 评论 -
美团点评基于MGR的CMDB高可用架构搭建之路
MySQL Group Replication(以下简称MGR),于5.7.17版本正式GA,由Oracle官方出品,为MySQL的高可用方案注入了新血液。其一致性,以及不依赖外部组件实现的自动切换、多点写入,给DBA带来了不少期待。一、背景以MHA作为切换工具,CMDB管理元数据,结合中间件的高可用方案在MySQL生态中是比较常见的架构。在这个体系中,CMDB作为基础组件之一,不能再依赖这个架构实现自身的高可用,而需要一套自成体系的高可用架构保障。2017年下半年开始,美团点评数据库计..原创 2022-03-19 22:26:32 · 652 阅读 · 0 评论 -
MySQL 8.0 MGR自动安装配置脚本
mysql_installMySQL8.0 自动安装脚本mysql8_install.sh(执行前修改一下脚本里的配置参数,改成你自己的)my_test.cnf(这个是模板文件,基本上不用改,mysql8_install.sh脚本执行的时候会自动替换里面的port,server_id,innodb_buffer_pool_size等)mysql-8.0.28-linux-glibc2.12-x86_64.tar.xzshell> wgethttps://dev.mysql.com.原创 2022-03-19 22:21:22 · 3693 阅读 · 0 评论 -
MySQL HA 方案 MMM、MHA、MGR、PXC 对比
MySQL高可用架构MMM(Multi Master Replication Manager)资源 数量 说明 主DB 2 用于主备模式的主主复制 从DB 0~N台 可以根据需要配置N台从服务器 IP地址 2n+1 N为MySQL服务器的数量 监控用户 1 用户监控数据库状态的MySQL用户(replication) 代理用户 1 用于MMM代理端改变read_only状态 故障转移步原创 2022-03-19 21:58:53 · 4902 阅读 · 0 评论 -
SpringCloud gateway auth2 InvalidAlgorithmParameterException: IV must be 16 bytes long.
outh2 InvalidAlgorithmParameterException: IV must be 16 bytes long.检查gateway的配置参数gateway:encode-key: '1234567890123456'需要16位才行原创 2021-12-21 17:26:27 · 2201 阅读 · 0 评论 -
企业IT技术架构总规划及建设思路
原创 2021-12-21 09:30:29 · 1214 阅读 · 0 评论 -
架构设计-谈谈架构
1、什么是架构和架构本质在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。因此我们在讨论架构之前,我们先讨论架构的概念定义,概念是人认识这个世界的基础,并用来沟通的手段,如果对架构概念理解不一样,那沟通起来自然不顺畅。Linux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构:原创 2021-10-20 09:13:49 · 586 阅读 · 0 评论 -
nginx+nginx-upsync-module实现动态负载及自定义验证
一、说明nginx一般直接在配置文件里配置upstream即可实现负载均衡,但有些特定的环境下此种方式就显得有些局限性。比如后端服务器无法依据端口占用检查存活的时候;后台动态调整节点的时候;调整节点后不想修改配置文件重启nginx的时候等等。此文的思路是将配置文件从nginx本地迁移到其他第三方服务上如etcd、consul上,然后时候拉取配置到本地。理论上说任何第三方配置中心都可以实现该功能,但需要对应的nginx模块。本文采用nginx-upsync-module,主要支持consul、etcd原创 2021-08-26 09:56:27 · 929 阅读 · 0 评论 -
Failure to find io.swagger:swagger-annotations:pom:2.9.2 in http://maven.aliyun.com/nexus/content/gr
Failure to find io.swagger:swagger-annotations:pom:2.9.2 in http://maven.aliyun.com/nexus/content/gr打开本地 仓库 到对应的目录下 删除 未下载完成的原创 2021-08-14 22:19:20 · 1166 阅读 · 0 评论 -
Zuul网关 请求头Header转发时部分参数被过滤了
使用zuul作为网关作为反向代理,由于后端的一个服务限制了request中的host头部信息和服务器一致,但是因为在zuul的配置中设置了传递原始host信息,导致无法正常访问。所以需要在zuul网关的配置中设置不传递host信息,可以在全局中设置,也可以在具体的自定义路由中设置传递原始请求地址的host的配置,在yml文件中配置:zuul: sensitive-headers: add-host-header: true******** 注意:要设置为空,不要不设置现在设原创 2021-08-13 14:11:05 · 2118 阅读 · 1 评论 -
软件架构设计的6个步骤及工作内容
如何有序、高效、全面做好软件架构设计呢?作为一名软件架构师,应该具备的基本素质是:掌握架构设计的基本步骤,且清晰每个步骤的工作内容。本文结合实际项目经验,将对软件架构设计的步骤及工作内容进行介绍。在整个软件架构设计过程中,笔者结合自身项目经验将架构设计步骤罗列为6个大步骤,依次是需求分析、领域建模、确定关键需求、概念架构设计、细化架构设计、架构验证。在实际项目过程中,也是遵循这6个大步骤进行软件架构设计的。软件架构设计步骤如下图所示:架构设计的6个步骤 ...原创 2021-07-30 10:22:09 · 3591 阅读 · 1 评论 -
SpringBoot入门到精通-三步整合knife4j
knife4j的比较好看Knife4j的前身是swagger-bootstrap-ui,前身swagger-bootstrap-ui是一个纯swagger-ui的ui皮肤项目一开始项目初衷是为了写一个增强版本的swagger的前端ui,但是随着项目的发展,面对越来越多的个性化需求,不得不编写后端Java代码以满足新的需求,在swagger-bootstrap-ui的1.8.5~1.9.6版本之间,采用的是后端Java代码和Ui都混合在一个Jar包里面的方式提供给开发者使用.这种方式虽说对于集成swa原创 2021-07-13 18:14:49 · 5306 阅读 · 1 评论 -
基于DDD的微服务设计和开发实战
你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案。本文是基于 DDD 的微服务设计和开发实战篇,通过借鉴领域驱动设计思想,指导微服务项目团队进行设计和开发(理论篇详见《当中台遇上 DDD,我们该如何设计微服务?》)。本文包括三部分内容:第一部分讲述领域驱动设计基本知识,包括:分层架构、服务视图、数据视图和领域事件发布和订阅等;第二部分讲述微服务设计方法、过程、模板、代码目录、设计原则等内容;最后部分以一个项目为原创 2021-06-22 15:22:42 · 644 阅读 · 0 评论 -
ERROR: Unable to create symbol table for :xxx.java
运行出现报错:ERROR: Unable to create symbol table for :xxx.java报错截图:[ERROR] Unable to create symbol table for : 'cu-admin/src/main/java/com/ntractController.java'java.lang.IllegalStateException: Registering symbol: 'spr ' twice in the same scope a原创 2021-04-16 16:55:22 · 1528 阅读 · 0 评论 -
SpringCloud入门到精通- Error attempting to get column ‘create_time‘ from result set. Cause: java.sql.SQL
百度原因是Mybati-plus与druid数据源,由于druid数据源的版本太低,不支持JDK8中的LocalDate、LocalTime、LocalDateTime等日期类型,所以解决方案就是下载新版本的druid依赖,查询到自己的版本:已经是1.1.21了,那怎么办呢?解决方案:1、关闭idea;2、删除项目;3、重新git clone4、idea open file5、mvn clean install6、run application7、succes原创 2021-03-11 19:05:36 · 1713 阅读 · 0 评论 -
Java入门到精通-List集合元素去重的8种方法
这一篇文章我想写一下List集合元素去重的8种方法,实际上通过灵活的运用、排列组合不一定是8种,可能有18种方法。对象元素整体去重的4种方法 按照对象属性去重的4种方法为了在下文中进行测试内容讲解,我们先做一些初始化数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21...转载 2021-03-11 10:32:09 · 935 阅读 · 2 评论 -
JAVA入门到精通- 重写方法实现集合对象去重
建个工具类 重写方法实现集合对象去重 比较实用方法一、根据某个字段去重 /** * 根据某个字段去重 * * @param carList * @return * @author preference */ public static List<Car> distinctBycar(List<Car> carList) { Set<Car> set = new TreeSe...原创 2021-03-11 10:28:04 · 582 阅读 · 0 评论 -
性能之颠-应用程序性能技术
5.2 应用程序性能技术本节讨论了一些提高应用程序性能的常用技术:选择I/O 大小、缓存、缓冲区、轮询、并发和并行、非阻塞I/O 和处理器绑定。参考应用程序文档看看这些技术哪些在应用,看看有没有应用程序其他的独有特性。5.2.1 选择I/O 尺寸执行I/O 的开销包括初始化缓冲区、系统调用、上下文切换、分配内核元数据、检查进程权限和限制、映射地址到设备、执行内核和驱动代码来执行I/O,以及,在最后释放元数据和缓冲区。“初始化开销”对于小型和大型的I/O 都是差不多的。从效率上来说,每次I/O 传原创 2021-03-04 08:29:30 · 889 阅读 · 1 评论 -
IDEA部署tomcat 引入三方jar包不能输出lib导致启动失败,看如何解决的
springboot 一统了,突然维护前几年的项目,下载代码居然启动不了主要有两个问题的1、引用了三方jar 也就是仓库里下不到的jar;2、引用的jar没输出到WEB-INF下面的lib下。首先来看第一个问题有几种方法1、安装本地仓库,但是要写bat脚本,每个开发下载下来都要安装;2、手动传到私有仓库,嫌麻烦3、本地jar路径引用,方便统一管理,择之实现起来比较简单<dependency> <groupId>com.ckfinder&原创 2020-10-13 18:58:10 · 1321 阅读 · 0 评论 -
SpringBoot入门到精通-springboot 富文本字段返回结果 respone html标签丢失了
基于Springboot controller开发时富文本存储到库中,但接口查询返回时结果中html的标签都被过滤掉了;查询源码跟踪也找不出有特殊的设置;存储格式如下:返回结果如下:脑回路猛转Strings=HtmlUtils.htmlEscape("<div>helloworld</div><p> </p>");System.out.println(s);<div...原创 2020-07-17 10:27:36 · 2279 阅读 · 4 评论 -
高性能短链设计-URL Shortener:详细设计说明
https://dzone.com/articles/url-shortener-detailed-explanation介绍URL缩短器是一种用于从很长的URL创建短链接的服务。通常,短链接的大小是原始URL的三分之一甚至四分之一,这使得它们更易于键入,呈现或发布。单击短链接用户将自动重定向到原始URL。在线提供了许多URL缩短服务,例如tiny.cc,bitly.com,cutt.ly等。实现URL缩短服务并不是一项复杂的任务,并且通常是系统设计访谈的一部分。在这篇文章中,我将尝试解释实现.原创 2020-07-04 22:55:48 · 1773 阅读 · 0 评论 -
Nexus 配置 https证书 过程 /bin/nexus start 启动不起来
1、下载证书生成 keystore.jksopenssl pkcs12 -export -out keystore.pkcs12 -inkey nexus.key -in nexus.crtcrt 也可以是 pem密码需要记住2、keytool -v -importkeystore -srckeystore keystore.pkcs12 -srcstoretype PKCS12 ...原创 2020-04-16 08:56:35 · 1835 阅读 · 0 评论 -
分布式事务解决方案-Seata介绍
什么是Seata?Seata是一个开源的分布式事务解决方案,致力于提供高性能和易于使用的分布式事务服务。Seata将为用户提供AT,TCC,SAGA和XA交易模型,以为用户创建一站式分布式解决方案。AT模式先决条件支持本地ACID事务的关系数据库。 通过JDBC访问数据库的Java应用程序。整体机制从两个阶段提交协议的演变:阶段1:在同一本地事务中提交业务数据和回滚日志,然后释放本地锁和连接资源。 阶段2: 对于提交情况,异步快速地完成工作。 对于回滚情况,请根据阶段1中原创 2020-06-28 10:17:07 · 890 阅读 · 0 评论 -
SpringBoot入门到精通-通过Token获取当前用户,但是Swagger当成参数处理,如何隐藏
添加@LoginUserSwagger-ui显示如下特别的丑,不能忍百度一下,马上有了需要在swagger配置的时候添加忽略类即可show my code 如下@Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select.原创 2020-06-24 10:53:59 · 859 阅读 · 0 评论 -
fastJson序列号问题 com.alibaba.fastjson.JSONException: autoType is not support.
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);com.alibaba.fastjson.JSONException: autoType is not support. l.dto.WpContentHomePageResp at com.alibaba.fastjson.parser.ParserConfig.checkAutoType(ParserConfig.java:1185) at com.alibaba.fastj.原创 2020-06-18 20:39:21 · 2542 阅读 · 0 评论 -
Sonar学习笔记-手动安装checkstyle插件
版本:sonarqube6.7.7在sonar应用市场中安装插件时报错,没有找到合适版本,于是手动安装插件第一步:下载对应版本的checkstyle插件https://github.com/checkstyle/sonar-checkstyleCheckstyle Plugin Sonar min Sonar max Checkstyle Jdk 4.32 7.9 7.9+ 8.32 1.8 4.31 7.9 7.9+原创 2020-06-09 10:53:19 · 2173 阅读 · 0 评论 -
Sonar Maven配置官方demo 基础和多模块配置
https://github.com/SonarSource/sonar-scanning-examples/tree/master/sonarqube-scanner-maven原创 2020-06-08 14:42:14 · 1207 阅读 · 0 评论 -
Sonar maven 编译的时候 Validation of project failed is already part of project
Validation of project failed: o Module "xx" is already part of project "cxx"Sonarqube在扫描Maven多模块项目的时候,需要在parent pom添加一个关键属性sonar.moduleKey:<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <pr原创 2020-06-08 12:43:17 · 1268 阅读 · 0 评论 -
CentOS安装PostgreSQL
版本信息: CentOS版本:CentOS-7-x86_64-Minimal-1810 PostgreSQL版本: PostgreSQL 10.10, 64-bit第一部分:PostgresSQL的安装1、安装rpm文件yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm2、安装客户端y...原创 2020-06-04 18:58:44 · 660 阅读 · 0 评论 -
学习别人代码发现加密工具Jasypt,看看怎么用的
一、概述 Jasypt 这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成 hibernate,Spring Security(Acegi)来增强密码管理。 Jasypt是一个Java库,可以使开发者不需太多操作来给Java项目添加基本加密功能,而且不需要知道加密原理。 根据Jasypt文档,该技术可用于加密任务与应用程序,例如加密密码、敏感信息和数据通信、创建完整检查数据的sums. 其他性能包括高安全性、基于标准的加密技术原创 2020-05-29 09:31:35 · 1431 阅读 · 0 评论 -
今天想写个单元测试不想手写百度 发现idea JUnitGenerator V2.0可以实现 但没达到想要的结果
今天想写个单元测试1. 前提条件开发环境已正确配置 工程已解决JUnit依赖关系(pom.xml) 我用的是4.12版本: 1 <dependency>2 <groupId>junit</groupId>3 <artifactId>junit</artifactId>4 <version>4.12</version>5 </dependency> ...原创 2020-05-28 18:04:36 · 1551 阅读 · 0 评论 -
JVM性能调优- jstat jmap 命名使用实战
1、top命令通过top命令查询到PID为后面的jstat jmap 使用top 结果怎么看2、查看GC统计信息jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]jstat -gcutil 11802 2000 -options vmid 采集时间间隔msjstat -help采集结果S0:幸存1区当前使用比例 S1:幸存2区当前使用比例 E:伊甸园区使用比例 O:老年代使用比例 M:元数据区使用比...原创 2021-01-07 09:20:57 · 827 阅读 · 0 评论 -
Gitlab 422 the change you requested was rejected 问题原因及解决方法
早上gitlab 密码过期了不能登录,重置密码后虽然登录成功,但是提交合并请求时422 错误,一番猛操作(百度 +++),发现可能时cookies缓存问题,关闭浏览器,重新登录,提交合并请求成功原创 2020-05-26 10:38:51 · 21526 阅读 · 0 评论 -
Java从入门到精通- Java VisualVM 插件介绍
官方和第三方插件可以轻松扩展VisualVM功能。使用工具|插件|可用插件可从VisualVM插件中心下载插件。IDE集成插件可在此处获得。要在离线环境中扩展VisualVM功能,请在“插件中心”页面上获取插件,然后使用“工具” |“工具”。插件|下载以安装它们。由于VisualVM 2.0中的更改,某些第三方插件可能无法正常工作。请联系他们的供应商并要求更新。 MBeans浏览器 MBeans浏览器插件提供的功能类似于JConsole中的MBeans浏览器...原创 2020-05-21 08:50:32 · 3955 阅读 · 0 评论 -
内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)(转)
程序运行时,有六个地方都可以保存数据: 1、 寄存器:这是最快的保存区域,因为它位于和其他所有保存方式不同的地方:处理器内部。然而,寄存器的数量十分有限,所以寄存器是根据需要由编译器分配。我们对此没有直接的控制权,也不可能在自己的程序里找到寄存器存在的任何踪迹。 2、 堆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中(new 出来的对象)。驻留于常规RAM(随机访问存储器)区域。但可通过它的“堆栈指针”获得处理的直接支持。堆栈指针若向下移,会创建新的内存;若向上移,则会原创 2020-05-13 17:07:09 · 2639 阅读 · 0 评论 -
JAVA入门到精通-fastJSON判断多层嵌套JSON数据中是否包含特定key
判断多层嵌套JSON数据中是否包含特定key获取复杂json 某个指定key的值添加依赖:<dependency><groupId>com.jayway.jsonpath</groupId><artifactId>json-path</artifactId><version>2.4.0</version>&...原创 2020-05-09 11:40:38 · 3782 阅读 · 4 评论 -
阿里云ssl证书-tomcat安装
阿里云SSL证书服务支持下载证书安装到Tomcat服务器上。Tomcat支持PFX格式和JKS两种格式的证书,您可根据您Tomcat的版本择其中一种格式的证书安装到Tomcat上。本文档介绍了PFX格式证书安装的具体步骤。前提条件您的Tomcat服务器上已经开启了443端口(HTTPS服务的默认端口)。 已安装OpenSSL工具。 已下载Tomcat服务器所需要的证书文件。有关证书下载...原创 2020-04-14 09:32:36 · 777 阅读 · 0 评论 -
cookie setSecure详解
在cas中或其他web开发中,会碰到安全cookie的概念,因为CAS中TGT是存放在安全cookie中的。下面是安全cookie 的理解: Set-Cookie 的 secure 属性就是处理这方面的情况用的,它表示创建的 cookie 只能在 HTTPS 连接中被浏览器传递到服务器端进行会话验证,如果是 HTTP 连接则不会传递该信息,所以绝对不会被窃听到。 在setSe...原创 2020-04-08 10:46:24 · 874 阅读 · 0 评论 -
Unable to execute SonarQube: Fail to get bootstrap index from server: sun.security.validator.Validat
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project womail-billdelivery: Unable to execute SonarQube: Fail to getbootstrap index ...原创 2020-03-26 18:39:21 · 4674 阅读 · 2 评论