- 博客(34)
- 收藏
- 关注
原创 Springboot 整合 kafka 实现消息的发布和订阅
Kafka 是一个分布式、高吞吐量、可持久性和自动负载均衡的消息队列。它在实现了传统意义上的 MQ 功能的同时,也可以作为大数据的流处理平台。简单来说,Kafka 就是一个高吞吐量的分布式发布订阅消息系统。Kafka 的用法跟 RabbitMQ 用法相同,都是作为一个消息中间件收发消息,下面介绍的是 Springboot 微服务集成 Kafka,已经简单的用法说明。依赖Spring 有专门支持 Kafka 的依赖,引入 Spring 对应版本支持的 Kafka 依赖即可,如下 <
2021-10-12 16:31:36
2844
原创 利用注解+反射实现Excel的导入导出
刚毕业那会儿写过一个 通用的excel导入导出工具类.这个工具类呢也用了挺久了的,最近又新写了一个基于注解+反射实现的Excel导入导出工具类导入方法传入Excel文件输入流,以及一个Class类型导出方法接收一个list集合,和一个Class类型#实现过程首先需要创建三个注解一个是 EnableExcelImport,必须有这个注解才能导入/** * description: 启用Excel导入 * * @author shencai.huang@hand-china.com * @
2021-09-29 23:36:40
1543
原创 自定义 AccessLimit 注解实现 Spring Boot 接口防刷
技术要点:Spring Boot的基本知识首先是写一个注解类:import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.METHO
2021-09-12 18:25:47
2043
原创 Spring boot 2.0 连接 Redis 集群之 Sentinel 和 Cluster 集群模式
关于 Redis 集群的搭建可以参考我的另一篇博客:Redis 集群模式详解 - 主从(master-slave)、哨兵(sentinel)、集群(cluster) Spring Boot 2.0 整合 Redis下面开始 Spring Boot 2.0 整合 Redis,Spring boot 中整合 Redis 非常简单,在 pom.xml中添加依赖: <dependency> <groupId>org.springframework.boo
2021-01-16 20:50:50
7008
原创 Redis 集群模式详解 - 主从(master-slave)、哨兵(sentinel)、集群(cluster)
Redis 集群模式详解首先 Redis 有三种集群模式,分别是主从模式Sentinel 模式(哨兵模式)Cluster 模式关于 Redis 的相关信息可以去 Redis 官网 https://redis.io 查看,当前 Redis 最新版本是 6.0.10安装包下载链接:https://download.redis.io/releases/redis-6.0.10.tar.gz一、主从模式1)主从模式介绍Redis 的主从模式跟 mysql 主从复制原理差不多,在主从复制中,数
2021-01-15 05:22:56
22258
3
原创 基于 k8s 搭建 mysql 5.7 主从复制集群
关于 k8s 集群环境的搭建可以参考我的另一篇博客k8s 集群之使用 kubeadm 在 Centos8 上部署 kubernetes 1.20 本文是基于已有 k8s 环境下,介绍在 k8s 环境中部署 mysql 主从集群,集群的数据持久化采用 nfs 网络存储方式。 搭建 mysql 主从复制集群主要分为两步,首先构建 mysql 主库和从库的镜像,然后创建 mysql master主库 和 slave从库的yaml文件,使用 k8s 部署 mysql 主从库。 mysql 版本:
2021-01-07 00:42:55
7521
2
原创 k8s 集群之使用 nfs 网络存储挂载外部目录和文件
如果使用 k8s 部署 mysql、redis、minio等数据和文件存储服务,k8s 默认容器如果重建,则容器中的数据文件将会丢失,所以为了解决这些问题,通常就需要将容器中需要持久化的文件存储到其它可持久化存储目录中。如果使用 k8s 部署 springboot 项目,那么项目的日志文件也是需要存储到其它可持久化存储目录中。k8s存储支持多种模式,本地存储,传递网络存储,分布式网络存储,以及云存储等,本章节讲的是传递网络存储中的 nfs 网络存储,通过 nfs 挂载 springboot 项目的日志文
2021-01-04 04:03:33
21791
1
原创 Docker 构建 kubectl 镜像
假如程序服务是使用 k8s 集成 gitlab ci/cd 方式部署的,在 gitlab-ci 过程中就需要用到 kubeclt 镜像使用 docker 构建 kubectl 镜像有两种方式方式一 (镜像相对较小一点,45.8M左右)在 Linux 上使用 curl 安装 kubectl 可执行文件cd /usr/local/bincurl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.1/bin/linu
2021-01-04 02:53:20
7969
1
原创 Springboot 项目通过 gitlab CI/CD 集成 k8s 自动部署
本章节主要讲的是 springboot 项目发到 gitlab 仓库,触发 gitlab ci/cd 实现项目自动集成和部署,其中部署是以 k8s 方式部署关于 gitlab-runner 安装和注册可以参考我的另一篇博客 Docker安装gitlab-runner 实现自动 CI/CD (持续集成/持续部署) 配置关于 k8s 集群搭建可以参考我的另一篇博客 k8s 集群之使用 kubeadm 在 Centos8 上部署 kubernetes 1.20先创建 springboot 项目 push 到
2021-01-04 02:20:05
18279
2
原创 k8s 集群之使用 kubeadm 在 Centos8 上部署 kubernetes 1.20
centos8 和 kubernetes 1.20 都是当前最新的版本,下面演示的是在 centos8 系统上部署 k8s 集群环境。部署 k8s 集群环境步骤1 系统准备2 安装常用包 和 docker-ce3 安装kubectl、kubelet、kubeadm4 初始化 k8s 集群5 安装calico网络6 安装kubernetes-dashboard7 node节点服务器配置以及加入集群注意 注意 注意1 系统准备准备四台 centos8 服务器,主机名与静态IP地址如下表所示(参考下边 ma
2021-01-03 05:21:23
19909
7
原创 Docker安装gitlab-runner 实现自动 CI/CD (持续集成/持续部署) 配置
gitlab-runner 安装如果没有安装docker的,先安装docker,yum安装docker如下yum -y install docker安装docker-compose方便容器做编排,非必需curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose//修改d
2020-12-18 22:56:23
8600
原创 Centos 7 安装 docker & docker-compose
Centos 7 系统内核版本:3.10.0uname -a #查看linux内核版本Docker 安装1)更新yum包yum update #期间要选择确认,输入 y 即可2)安装需要的软件包(yum-utils提供yum-config-manager功能,另外两个是devicemapper驱动依赖的)yum install -y yum-utils device-mapper-persistent-data lvm23)设置yum源(选择其中一个)yum-config-manage
2020-12-18 14:57:52
5955
原创 Mac下CoreShell文件上传和下载配置
在MAC下,使用CoreShell时,使用lrzsz命令,上传下载文件的方法.在服务器端或者mac端执行以下操作,在服务器端配置则每台服务器都得配置,在mac端配置完成得重启CoreShell。1、新建~/.bashrc_Core_Shell文件,写入如下内容# Bash support for Core Shell, reference: /etc/bashrc_Apple_Terminal on macOS# Report Working Directory## Tell the Core
2020-12-15 10:49:15
6360
原创 linux 常用自定义命令、自定义执行脚本
以下自定义命令维护在~/bin目录下新建了自定义命令之后,给该文件夹下的全部自定义命令添加执行权限,参考如下chmod u+x ./*自定义命令创建示例自定义log命令,用于查看日志文件等vi /bin/log内容如下:#!/bin/bashif [ ! -n "$2" ]; thentail -100f $1elsetail -$2f $1fi给log文件赋予可执行权限cd ~/binchmod u+x log使用示例,假如有info.log日志文件,可使用log命
2020-12-14 22:23:30
7543
原创 Centos 部署 Minio 对象存储服务器
切换到指定路径下(自定义),如 /data/minio/,然后下载二进制文件cd /data/minio/wget https://dl.min.io/server/minio/release/linux-ppc64le/miniochmod +x minio直接启动 minio 服务:/data/minio/minio server /data/minio/data/如果防火墙是开启状态,则需开放minio端口:9000:// 查看防火墙状态service firewalld st
2020-09-14 10:17:15
6007
原创 Linux 常用命令以及常用命令行快捷键
1、根据进程名查看进程信息或者占用内存信息ps -ef | grep mysql//或者ps -aux | grep mysql2、根据进程id查看进程占用端口,查看对应端口为8080(如果没有netstat命令,使用 yum -y install net-tools安装)netstat -nap | grep 313963、根据端口查看对应进程netstat -tunlp | grep 33064、根据进程id查看进程信息ps -ef | grep 313965、统计指
2020-09-10 21:45:47
5881
原创 MyBatis 动态 SQL
MyBatis 令人喜欢的一大特性就是动态 SQL。在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的。MyBatis 动态 SQL 的出现, 解决了这个麻烦。MyBatis通过 OGNL 来进行动态 SQL 的使用的。目前, 动态 SQL 支持以下几种标签:1 数据准备为了后面的演示, 创建了一个 Maven 项目 mybatis-dynamic, 创建了对应的数据库和表DROP TABLE IF EXISTS `student`;CREATE TABLE `.
2020-08-04 17:20:59
6145
原创 Java 使用List sort()方法对复杂对象集合排序(基于Lambda表达式)
下面是关于对一个用户类根据id或者name或者age字段用list 的 sort() 方法进行相关的排序,字段值为null的会排到最后以下是一个基本的用户类: class User { private int id; private String name; private int age; public User(int id, String name, int age) { this.id = id;
2020-06-12 14:19:32
7711
原创 Java 利用 redis 实现分布式锁
在现在编程语言中,接触过多线程的人多多少少都对锁有一定的了解。简单来说,多线程中的锁就是在多线程运行的环境下,多个线程共享同一个资源,当对资源进行变更的时候,能保证资源的一致性机制。在分布式环境下,原来简单的多线程锁就不管用了,也就是需要分布式锁来保证多个服务共享的资源的一致性。接下来就简单讨论下基于java通过redis实现分布式锁,实现分布式锁需要满足以下的要求:支持立即获取锁方式,如果获取到返回true,获取不到返回false支持等待获取锁方式,如果获取到,直接返回true,获取不到等待一段时
2020-05-10 15:54:18
6950
2
原创 centos 7 下 yum 安装 mysql 5.7.29
1、下载 MySQL官方的 yum Repository[root@iZbp19ftqv2b7y3oba2i6tZ ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm2、安装 yum 源[root@iZbp19ftqv2b7y3oba2i6tZ ~]# yum -y ins...
2020-04-11 12:26:05
6485
原创 centos 7 下 gitlab-runner 自动 CI/CD (持续集成/持续部署) 配置
1、下载 gitlab-runner 安装包[root@izuf61s3j5m1fuhcwghcysz ~]# wget -O /usr/local/bin/gitlab-runner https://gitlab-ci-multi-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-ci-multi-runner-linux-amd...
2020-04-10 16:31:22
6723
原创 Docker--删除容器实例和镜像
删除容器查询已有的容器实例docker ps -a删除容器实例(强制删除)docker rm -f 容器ID或者容器名删除所有容器docker rm -f ‘docker ps -a -q’删除镜像查询已有的镜像docker images删除镜像docker rmi -f 镜像ID删除所有镜像docker rmi -f ’docker images -q‘...
2020-04-08 14:29:44
6590
原创 开发过程中的SQL优化方案
1、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在 num 上设置默认值 0 或者 -1,确保表中 num 列没有 null 值,然后这样查询:se...
2020-04-04 14:43:05
5637
原创 Centos 创建并启动定时任务 demo 示例
crontab的一些基本命令systemctl start crond.service 启动服务systemctl stop crond.service 停止服务systemctl restart crond.service 重启服务systemctl reload crond.service ...
2019-12-25 14:11:30
6621
原创 在 centos 上搭建 ngrok 内网穿透服务器
1、 安装git环境和go环境yum -y install gityum -y install golang2、下载 ngrok 源码mkdir ngrokcd ngrokgit clone https://github.com/inconshreveable/ngrok.git3、导入 ngrok 我们配置的域名// 假设我们想要给 ngrok 配置的外网域名是:ngr............
2019-12-18 15:07:21
5788
原创 IDEA 的自动补全功能
这个功能可以使用代码补全来模板式地补全语句,如遍历循环语句(for、foreach)、使用 String.format() 包裹一个字符串、使用类型转化包裹一个表达式、根据判(非)空或者其它判别语句生成 if 语句、用 instanceOf 生成分支判断语句等。使用的方式也很简单,就是在一个表达式后按下点号 . ,然后输入一些提示或者在列表中选择一个候选项,常见的候选项下面会给出 GIF 演示。...
2019-12-18 10:37:00
7751
原创 IntelliJ IDEA 2019 快捷键
自动代码常用的有 fori/sout/psvm+Tab 即可生成循环、System.out、main方法等boilerplate样板代码 。例如要输入 for(User user : users) 只需输入 user.for+Tab ;再比如,要输入Date birthday = user.getBirthday()只需输入user.getBirthday().var+Tab即可。代码...
2019-10-24 11:49:14
5516
原创 java开发人员的小习惯
记录一下,作为一个Java开发人员,应该如何提高自己的能力(仅个人观点)一、形成个人的知识体系在我们平时的工作中,关于知识的积累往往相对比较零散,这就需要我们思考汇总,形成自己的理解,然后围绕着自己的职业目标,去有意的获取和提高自己的知识范围,塑造有利于自己的职业生涯的知识体系。对于基础知识,要学会重视。比如JVM、性能优化、消息机制等。这类知识点,我们在开发过程中可能不会去太在意,这会导致...
2019-06-21 19:26:13
5849
原创 js脚本下载文件
function fakeClick(obj) { var ev = document.createEvent("MouseEvents"); ev.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); obj.disp...
2019-06-20 13:22:37
18903
原创 java8 List 根据对象某个字段或多个字段去重、筛选、List转Map、排序、分组、统计计数等等
方式一:List<Order> orderList = Lists.newArrayList();orderList .stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.compar...
2019-04-20 18:05:15
29046
原创 (四)spring boot 整合 spring security简单的登录和用户角色权限控制
首先添加spring security所用到的依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>...
2019-02-21 13:54:03
6164
1
原创 (三)(便捷开发)基于freemarker的代码生成工具
freemarker依赖: <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker --> <dependency> <groupId>org.freemarker</groupId> <a...
2018-12-19 19:18:31
5845
原创 (二)整合分页插件pagehelper
分页插件依赖:<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter --> <dependency> <groupId>com.github.pagehelper</groupId&g...
2018-12-19 18:49:13
6079
原创 Excel文件读取写入(导入导出)工具类
读取得到的数据格式为Map&lt;String, List&lt;List&gt;&gt;List为某一行的数据集List&lt;List&gt; 为当前sheet工作簿的数据集Map&lt;String, List&lt;List&gt;&gt; 为所有工作簿的数据集,Map的键为工作簿的sheet的名称import org.apache.
2018-12-19 13:08:54
5794
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人