自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 收藏
  • 关注

原创 Jenkins——在流水线管道中使用指定的JDK

JDK8u231是在全局配置下配置过的JDK。

2023-12-26 08:49:17 1054

原创 @Retryable注解,优雅的实现循环重试功能

在实际工作中,重处理是一个非常常见的场景,比如:发送消息失败。调用远程服务失败。争抢锁失败。这些错误可能是因为网络波动造成的,等待过后重处理就能成功。通常来说,会用try/catch,while循环之类的语法来进行重处理,但是这样的做法缺乏统一性,并且不是很方便,要多写很多代码。然而spring-retry却可以通过注解,在不入侵原有业务逻辑代码的方式下,优雅的实现重处理功能。一、@Retryable是什么?spring系列的spring-retry是另一个实用程序模块,可以帮助我们以标准方

2022-05-05 20:42:00 16558 2

原创 MyBatis MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候反复报错

最近开发过程中,sql 在MySQL数据库中,使用Navicat运行没有问题,但是运行项目的时候,死活过不去,一直报错et.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "AGAINST" <S_IDENTIFIER> at line 88, column 37.Was expecting one of: "&" "&&" "." "::

2022-04-20 11:34:02 2404 1

转载 Mysql实现根据经纬度查询周围的商家,并按距离进行排序

商城表lng代表经度,lat代表纬度!其他的不重要然后用下面的SQL语句进行查询即可!假设当前 经度为:118.356734纬度为:21.785367则SQL语句如下SELECT *,( 6371 * acos ( cos ( radians(21.785367) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(118.356734) )

2022-04-19 17:06:06 1003 2

原创 Java根据位置获取经纬度计算距离

高德地图获取经纬度高德官方地址/** * @author 周坤 * @date Create in 10:51 2022/4/18 * 高德地理位置信息 * 地理/逆地理编码 :https://lbs.amap.com/api/webservice/guide/api/georegeo * 地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。 * 逆地理编码:将经纬度转换为详细结构化的地址,且返回附近周边的POI、AOI信息。 */@

2022-04-18 14:37:14 3301 1

原创 Optional 干掉空指针常用方式

简介空指针异常是导致Java应用程序失败的最常见原因。为了解决空指针异常更加优雅,Java8 提供了 Optional 类库。Optional实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。代码示例Optional.of()或者Optional.ofNullable():创建Optional对象,差别在于of不允许参数是null,而ofNullable则无限制。// 参数不能是nullOptional o

2021-11-21 15:52:44 271

原创 MySQL两个表联合查询并按时间排序

有一张资金记录表,一张金币记录表,想以时间为单位,降序合并排列他们之间的信息,查询SQL如下:select * from (select * from t_money_logs union select * from t_gold_logs) as c order by create_time desc;原地址:https://www.cnblogs.com/gentsir/p/5166506.htmlselect * from (select o.ORDER_NUM as order_sn,o

2021-10-08 09:55:42 2778

原创 尚医通项目上云

1、项目架构2、中间件中间件集群内地址外部访问地址Nacoshis-nacos.his:8848http://139.198.165.238:30349/nacosMySQLhis-mysql.his:3306139.198.165.238:31840Redishis-redis.his:6379139.198.165.238:31840Sentinelhis-sentinel.his:8858139.198.165.238:31840M

2021-10-05 23:39:22 739

原创 KubeSphere部署项目

应用部署需要关注的信息【应用部署三要素】1、应用的部署方式2、应用的数据挂载(数据,配置文件)3、应用的可访问性1、部署MySQL1、mysql容器启动docker run -p 3306:3306 --name mysql-01 \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql/conf.d \-e MYSQL_ROO

2021-10-04 20:15:51 4830

原创 docker常用命令

1、找镜像docker pull nginx #下载最新版镜像名:版本名(标签)docker pull nginx:1.20.1docker pull redis #下载最新docker pull redis:6.2.4## 下载来的镜像都在本地docker images #查看所有镜像redis = redis:latestdocker rmi 镜像名:版本号/镜像id2、启动容器docker run [OPTIONS] IMAGE [COMMAND] [AR.

2021-10-01 14:18:38 438

原创 java List根据属性去重,排序

public class demoTest { @Test public void text() { List<UserBean> list=new ArrayList<>(); UserBean userBean=new UserBean(); userBean.setPassword("123456"); userBean.setUsername("张三"); list.ad

2021-10-01 13:47:55 499

原创 Jackson

Jackson常用注解属性命名@JsonProperty注解指定一个属性用于JSON映射,默认情况下映射的JSON属性与注解的属性名称相同,不过可以使用该注解的value值修改JSON属性名,该注解还有一个index属性指定生成JSON属性的顺序,如果有必要的话。属性包含还有一些注解可以管理在映射JSON的时候包含或排除某些属性,下面介绍一下常用的几个。@JsonIgnore注解用于排除某个属性,这样该属性就不会被Jackson序列化和反序列化。@JsonIgnoreProperties注解是类注解

2021-09-25 19:42:09 285

转载 Java通过属性名反射获取get和set方法

/** * 反射获取get方法 * @param ob * @param name * @return * @throws Exception */ public static Object getGetMethod(Object ob , String name)throws Exception{ Method[] m = ob.getClass().getMethods(); for(int i =...

2021-09-16 12:45:14 3271

原创 redis监听key的过期回调

一、redis 配置文件 redis.conf 修改如下notify-keyspace-events "" 修改为 notify-keyspace-events ExSpringboot使用redis事件监听器RedisListenerConfig.javaimport org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import

2021-08-17 17:34:02 1286

原创 在linux上运行Java项目

java -jar aiyouya-app.jar --spring.profiles.active=dev --server.port=8201 & //后台运行-Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M //设置内存大小通过 ps -ef | grep java 得到如上线程将某线程终止时用kill -9 XXXXX XXXXX为上述查出的序号 如: 19979线程终止为: kill -9 483

2021-07-23 15:39:26 438

原创 设置MongoDB密码

mongodb密码和传统数据如mysql等有些区别: mongodb的用户名和密码是基于特定数据库的,而不是基于整个系统的。所有所有数据库db都需要设置密码。1.查看所有数据库(在mongodb新版本里并没有admin数据库,但是并不妨碍第2步操作。)show dbs2. 进入admin数据库use admindb.createUser({ user: "admin", pwd: "password", roles: [{ role: "userAdminAnyDatabase", db:

2021-05-24 09:08:13 345

原创 Spring boot集成mongodb

1、集成简介spring-data-mongodb提供了MongoTemplate与MongoRepository两种方式访问mongodb,MongoRepository操作简单,MongoTemplate操作灵活,我们在项目中可以灵活适用这两种方式操作mongodb,MongoRepository的缺点是不够灵活,MongoTemplate正好可以弥补不足。2、搭建开发环境pom.xml <dependency> <groupId>org.spr

2021-04-18 19:49:21 255

转载 MongoDB入门

一、MongoDB 简介1、NoSQL简介NoSQL(NoSQL = Not Only SQL),意即反SQL运动,指的是非关系型的数据库,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入为什幺使用NoSQL :1、对数据库高并发读写。2、对海量数据的高效率存储和访问。3、对数据库的高可扩展性和高可用性。弱点:1、数据库事务一致

2021-04-18 18:49:41 217

原创 Spring Security + OAuth2.0

授权服务器授权服务器中有4个端点。说明如下:Authorize Endpoint :授权端点,进行授权。Token Endpoint :令牌端点,经过授权拿到对应的Token。lntrospection Endpoint :校验端点,校验Token的合法性。Revocation Endpoint :撤销端点,撤销授权。Spring Security Oauth2架构说明如下:用户访问,此时没有Token。Oauth2RestTemplate会报错,这个报错信息会被Oauth2Cli

2021-02-17 21:35:10 4762 3

原创 MyCat学习笔记

第一章 入门概述1.1 是什么Mycat是数据库中间件1、数据库中间件中间件:是一类连接软件和应用的计算机软件,以便软件各部件之间的沟通。例子:Tomcat, web中间件。数据库中间件:连接java应用的应用程序和数据库。2、为什么要用Mycat?1 java与数据库紧耦合2 高访问量高并发对数据库的压力3 读写请求数据不一致3、Mycat原理简单来说就是拦截用户发来的SQL语句,对SQL语句做了一些特定的分析,如分片分析,路由分析,读写分离分析,缓存分析等,然后将此SQL发往后端

2021-02-13 20:16:40 281

原创 Gradle的安装与配置

官网配置环境变量GRADLE_HOME 变量值为Gradle文件解压的实际路径在系统变量 path中加入:%GRADLE_HOME%\bin;在cmd输入gradle -v验证是否安装成功配置Gradle使用maven本地仓库这样Gradle就不会重新下载已经存在maven本地仓库的jar包,从而节省时间和空间。在环境变量中加入新的系统变量:GRADLE_USER_HOME 变量值是maven本地仓库的路径,本文为例D:\environment\apache-maven-3.6.3-

2021-02-07 18:15:11 636

转载 SpringCloud Module依赖程序包找不到问题解决方法

spring-boot-maven-plugin默认打包的jar是用于执行,不能被依赖如果想用spring-boot-maven-plugin打包并且可以输出可依赖的jar需要添加如下配置 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin&lt

2021-01-25 23:18:25 1613

原创 虚拟机上以 All-in-One 模式安装 KubeSphere

KubeSphere 愿景是打造一个以 Kubernetes 为内核的云原生分布式操作系统,它的架构可以非常方便地使第三方应用与云原生生态组件进行即插即用(plug-and-play)的集成,支持云原生应用在多云与多集群的统一分发和运维管理。官网文档地址查看防火墙firewall的状态firewall-cmd --state停用防火墙firewallsystemctl stop firewalld.service我的虚拟机配置建议待安装kubesphere的Linux系统处于干净状态(

2021-01-21 20:04:31 870

原创 Docker 部署 MySQL 主从同步

一、集群的目标高可用(High Avaliability),是当一台服务器停止服务后,对于业务及用户毫无影响。停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称为单点问题。突破数据量限制,一台服务器不能存储大量数据,需要多台分担,每个存储一部分,共同存储完整个集群数据,最好能做到互相备份,即使单节点故障,也能在其他节点找到数据。数据备份容灾,单节点故障后,存储的数据仍然可以在别的地方拉起。分担压力,由于多个服务器都能完成各自一部分工作,所

2021-01-21 12:40:16 377 1

原创 K8S 入门基本操作体验及 YAML 使用

一、安装Tomcat1、部署一个tomcat(主节点部署)kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8kubectl get pods -o wide # 可以获取到Tomcat信息(Tomcat具体部署在哪个节点)打印结果:可以看到Tomcat已经部署在 k8s-node2 节点上了。在 k8s-node3 服务器查看镜像,在主节点安装的,已经在从节点上安装好了。2、暴露端口访问kubectl expose

2021-01-16 19:47:06 1367

原创 K8S 集群搭建

配置linux环境# su root # 切换到root用户先# 关闭防火墙$ systemctl stop firewalld$ systemctl disable firewalld# 关闭 selinux$ sed -i 's/enforcing/disabled/' /etc/selinux/config$ setenforce 0# 关闭内存交换$ swapoff -a # 临时,只关当前会话的$ sed -ri 's/.*swap.*/#&/' /etc/fs

2021-01-16 15:47:13 1920

原创 高并发监控-Sleuth 与 Zipkin 服务链路追踪

一、Sleuth概念微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。举个例子,在微服务系统中,一个来自用户的请求,请求先达到前端A(如前端界面),然后通过远程调用

2021-01-13 16:15:28 494

原创 Sentinel 限流、熔断降级

一、什么是Sentinel?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 的主要特性:二、整合Sentinel文档1、导入依赖<!--alibaba cloud Sentinel --> <dependency> <groupId>com.alibaba.cloud</groupId> &lt

2021-01-13 13:12:50 1062

原创 定时任务和异步任务测试

package com.kun.seckill.scheduled;import lombok.extern.slf4j.Slf4j;import org.springframework.scheduling.annotation.Async;import org.springframework.scheduling.annotation.EnableAsync;import org.springframework.scheduling.annotation.EnableScheduling;i

2021-01-10 14:48:01 631 1

原创 如何保证消息可靠性(RabbitMQ)

CREATE TABLE `mq_message` ( `message_id` CHAR(32) NOT NULL, `content` TEXT, `to_exchange` VARCHAR(255) DEFAULT NULL, `routing_key` VARCHAR(255) DEFAULT NULL, `class_type` VARCHAR(255) DEFAULT NULL, `message_status` INT(1) DEFAULT '0' COMMENT '0-新建 .

2021-01-08 13:25:23 278

原创 RabbitMQ延时队列

xml配置 #rabbitmq配置 rabbitmq: host: 106.55.168.234 port: 5672 virtual-host: / # 虚拟主机配置 publisher-returns: true publisher-confirm-type: correlated #必须配置这个才会确认回调 listener: direct: acknowledge-mode: manual # # 手动ack消..

2021-01-06 16:35:51 266

原创 本地事务和分布式事务

本地事务1、事务的基本性质数据库事务的几个特性:原子性(Atomicity)、一致性(Consistency)、隔离性或独立性(isolation)、持久性(Durability),简称就是 ACID。原子性:一系列的操作整体不可拆分,要么同时成功,要么同时失败。一致性:数据在事务的前后,业务整体一致。转账:A:1000; B:1000; 转 200 事务成功; A:800; B:1200隔离性:事务之间互相隔离持久性:一旦事务成功,数据一定会落盘在数据库。比如买东西业务,扣库存,下订单

2021-01-05 16:31:06 462

转载 Caused by: java.net.SocketTimeoutException: Read timed out

feign.RetryableException: Read timed out executing POST http://biz-dsys-shelf-service/api/gdShelves/createShelvesCaused by: java.net.SocketTimeoutException: Read timed out解决方式在application.yml 中添加如下配置.#hystrix的超时时间hystrix: command: default:

2021-01-04 18:46:01 4376

原创 接口幂等性

任意多次执行所产生的影响均与一次执行的影响相同,这是幂等性的核心特点。其实在我们编程中主要操作就是CURD,其中读取(Retrieve)操作和删除(Delete)操作是天然幂等的,受影响的就是创建(Create)、更新(Update)。一、接口幂等性概念1. 接口调用存在的问题现如今我们的系统大多拆分为分布式SOA,或者微服务,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者restful,既然是通信,那么就有可能在服务器处理完毕后返回结

2021-01-03 20:50:49 313

原创 Feign远程调用丢失请求头问题

feign默认构造的template中header没有数据package com.kun.order.config;import feign.RequestInterceptor;import feign.RequestTemplate;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.spri..

2020-12-30 16:17:16 254

原创 消息队列RabbitMQ-Springboot 整合

一、RMQ相关配置1、引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>2、启动类开启RMQ注解/**使用RabbitMQ1、引入amqp场景;RabbitAutoConfiguration就会自

2020-12-28 20:43:20 518

原创 消息队列-RabbitMQ

一、MQ简介消息总线(Message Queue),是一种跨进程、异步的通信机制,用于上下游传递消息。由消息系统来确保消息的可靠传递。MQ是干什么用的?应用解耦、异步、流量削锋、数据分发、错峰流控、日志收集等等…Producer:消息生产者,负责生产和发送消息到Broker;Broker:消息处理中心,负责消息存储、确认、重试等;Consumer:消息消费中心,负责从Broker中获取消息并处理。消息队列-特性异步性:将耗时的同步任务通过发送消息的方式进行异步处理,减少等待时间。松

2020-12-28 16:00:59 237

原创 认证服务-分布式 Session

SpringSession官方文档1、SpringSession整合1、导入依赖<!-- 整合SpringSession完成session共享问题 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </de

2020-12-24 22:43:47 220

原创 SpringBoot在配置文件中自定义配置

<!--元数据处理器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </dependency>package com.kun.product.config;import org.springframew..

2020-12-22 18:35:41 362

原创 异步-异步与线程池及异步编排

一、异步在业务开发中,有很多异步场景,为了节约时间或或者提高系统的吞吐量,要做一些异步任务,在Java中要实现异步通常都是Thread,开启一个线程Thread,开启线程有四种方式。1、初始化线程池的4中方式1)、继承Thread2)、实现Runnable接口3)、实现Callable接口+FutureTask(可以拿到返回结果,可以处理异常)4)、线程池方式1和方式2:主进程无法获取线程的运算结果。不适合我们当前的场景。方式3:主进程可以获取线程的运算结果,但是不利于控制服务器中的线程资源

2020-12-18 20:40:58 416 1

空空如也

空空如也

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

TA关注的人

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