自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java 工厂模式与反射结合,使你的代码更加优雅

文章目录一、传统工厂模式二、增加反射的工厂模式三、增加枚举的反射工厂模式一、传统工厂模式定义一个统一的eat接口public interface FruitService{ public abstract void eat();} 编写一个apple类实现 FruitServicepublic class AppleServiceImpl implements FruitService{ public void eat(){ System.out.p

2020-11-30 15:20:50 307 1

原创 Nacos下载与安装(windows环境)

文章目录一、下载地址二、启动三、访问一、下载地址github下载地址:https://github.com/alibaba/nacos/tags官方文档:https://nacos.io/zh-cn/docs/quick-start.html目前比较推荐的是1.3.1版本,官方文档里也有提到,所以我们选择下载1.3.1版本的zip包,点击1.3.1选择nacos-server 1.3.1.zip 进行下载二、启动下载好后进行解压可以看到如下目录结构进入bin目录下,双击startup.c

2020-11-24 16:01:12 3976

原创 Spring Boot整合Swagger2的使用

一、Swagger2简介二、Swagger2实战2.1 pom文件添加依赖如果想要使用Swagger2就要添加如下的依赖 <!-- swagger2 配置 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2...

2020-10-30 17:29:10 221

原创 Netty中Future-Listener机制

系列文章Netty基本理论知识IO模型对比文章目录系列文章前言一、简介二、实战演示2.1 服务端代码三、运行截图前言本次文章主要是采用SpringBoot框架搭建一个简单的netty模型,包括一个服务端和一个客户端,通过客户端与服务端间发送消息通信,让大家快速上手netty的用法。一、简介在netty中I/O操作都是异步执行,所以任何的I/O调用都将立即返回。netty为我们提供了一个ChannelFuture实例,这个实例将会返回关于I/O操作结果或者状态。我们可以通过 addListener

2020-10-30 16:57:00 3024

原创 Netty中的异步任务TaskQueue与ScheduleTaskQueue

系列文章Netty基本理论知识IO模型对比文章目录系列文章前言一、Maven依赖二、实现方式三、服务端代码3.1 服务端创建配置部分3.2 服务端处理器handle部分四、客户端代码4.1 客户端创建配置部分4.2 客户端处理器handle部分五、运行截图前言本次文章主要是在上一篇文章的demo基础上增加一个用户自定义的异步任务,任务添加在服务端,具体为休眠5s然后再发送一条消息给客户端一、Maven依赖添加netty依赖 <dependency> <groupId&

2020-10-30 16:56:34 1260

原创 Netty入门demo服务端与客户端通信

系列文章Netty基本理论知识IO模型对比文章目录系列文章前言一、Maven依赖二、服务端代码2.1 服务端创建配置部分2.2 服务端处理器handle部分三、客户端代码3.1 客户端创建配置部分3.2 客户端处理器handle部分前言本次文章主要是采用SpringBoot框架搭建一个简单的netty模型,包括一个服务端和一个客户端,让大家快速上手netty的用法。一、Maven依赖添加netty依赖 <dependency> <groupId>io.netty

2020-10-30 16:56:16 423

原创 Netty基本理论知识IO模型对比

文章目录一、IO二、NIO (非阻塞IO)三、Netty模型一、IO单线程只能有一个客户端,使用多线程的话虽然可以链接多个客户端,但这是一种十分消耗性能的做法。因为每个客户端都需要一个线程一直保持链接,但是大部分时间线程可能都是再等待。以饭店为例,客人就是一个socket客户端,服务员就是一个线程,IO模式下一个服务员只能为一个客户服务,有多少个客人就需要多少个服务员,所以这样的话饭店的雇佣服务员的开销就会很大。二、NIO (非阻塞IO)单线程可以链接多个客户端,实现NIO的核心是Selecto

2020-10-28 16:04:33 358

原创 Linux jar包部署启停脚本

文章目录前言一、重启脚本二、停止脚本三、启动脚本总结前言我的使用场景是对两个jar包通过脚本进行统一的启停管理一、重启脚本app_dir为jar包存放路径,根据自己的情况进行填写,这里我放在了app目录下apps 中填写jar包的名称,多个jar包中间以空格分开(注:jar包名称可以不完全填写,这里我只写了前半部分,不和其他的应用重名即可)#!/bin/bashapp_dir=/app apps=(backstage-service file-service)for i in ${app

2020-10-26 10:48:36 1422

原创 Java 8 stream的相关用法详细介绍

一、stream简介stream是对Java 集合运算和表达的高阶抽象Stream有以下特性及优点:无存储。Stream不是一种数据结构,它只是某种数据源的一个视图,数据源可以是一个数组,Java容器或I/O channel等。为函数式编程而生。对Stream的任何修改都不会修改背后的数据源,比如对Stream执行过滤操作并不会删除被过滤的元素,而是会产生一个不包含被过滤元素的新Stream。惰式执行。Stream上的操作并不会立即执行,只有等到用户真正需要结果的时候才会执行。可消费性。Str

2020-10-09 11:47:20 260

原创 Java 实现App整合第三方微信登录

文章目录一、前期准备二、数据库设计三、实现思路四、微信实现4.1 实现流程4.2 微信接口说明4.2.1 通过 code 获取 access_token4.2.2 获取用户个人信息(UnionID 机制)五、代码实现一、前期准备对于微信登录来说,我们需要先取注册开发者账号登录 https://open.weixin.qq.com/,并在管理中心—移动应用中创建我们的应用。然后点击查看就可以看到属于我们的一个AppID和AppSecret。二、数据库设计为了整合第三方的登录所以我们需要新建一张表,

2020-09-10 17:22:49 6437 5

原创 Java 将网络url图片链接转换为File类型对象

public static File downloadWxImage(String headimgurl) { File file = null; URL urlfile; InputStream inStream = null; OutputStream os = null; try { file = File.createTempFile("wx_image", ".png"); ...

2020-09-10 16:21:45 5945

原创 Java File转换为MultipartFile

public static MultipartFile toMultipartFile(File file){ MultipartFile multipartFile = null; FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(file); multipartFile = new M...

2020-09-10 16:19:21 643

原创 ZooKeeper基础理论知识 Paxos算法、ZAB协议、CAP定理(ZooKeeper学习笔记 1)

文章目录一、简介二、ZooKeeper的一致性三、Paxos算法3.1 Paxos算法描述3.2 Paxos算法中的三种角色3.3 Paxos算法的一致性一、简介ZooKeeper是一个开源的分布式应用程序协调服务器,其为分布式系统提供一致性服务。其一致性是通过基于Paxos算法的ZAB协议完成的。其主要功能包括:配置维护、域名服务、分布式同步、集群管理等。二、ZooKeeper的一致性1. 顺序一致性从同一客户端发送的多个事务请求(写操作请求),最终会严格按照发起的顺序记录到ZooKeeper中

2020-08-20 16:39:39 544

原创 Linux mysql定时自动备份及清理脚本

文章目录一、创建备份存放的目录二、备份脚本三、添加权限四、添加定时任务五、定期清理脚本一、创建备份存放的目录cd /homemkdir db_backip二、备份脚本你可以把下面这段脚本放到你想放的位置,这里我们就先放到/home下命名为mysql_backup.shcd /homevi mysql_backup.sh将下面这段脚本拷到mysql_backup.sh中db_user、db_password、db_name、backup_dir、date等变量根据自己的需求修改。备份的

2020-08-07 11:46:56 1885 1

原创 Java 实体类list转换为map

User为我们创建的一个用户实体类现在我们要将用户集合中的用户名和密码转换为一个mapgetUserName和getPwd对应User实体类中的get方法的方法名List<User> userList = new ArrayList<User>();Map<String,String> map = userList.stream().collect(Collectors.toMap(User::getUserName,User::getPwd));...

2020-08-06 17:26:59 2282

原创 Java Map按照Key值进行排序

private Map<String,Long> sortMapByKey(Map<String,Long> map){ if (map == null || map.isEmpty()) { return null; } // 创建一个有序的LinkedHashMap Map<String, Long> sortedMap = new LinkedHashMap<String,

2020-08-06 17:21:00 1273

原创 Java 将多个文件打包为zip压缩包并提供给前端下载

一、文件打包为zippublic void zip(List<File> fileList,String zipFileName) { FileInputStream fileInputStream = null; FileOutputStream fileOutputStream = null; ZipOutputStream zipOutputStream = null; BufferedInputStream bufferInputStream = null; try

2020-08-06 16:58:53 5003

原创 Java 将文本导出为.csv文件

public static void exportCSV(HttpServletResponse response, String text, String filename) { // text为要导出的内容,一般来说用text由StringBuffer拼接而成,使用,分隔列、使用\r\n换行 response.setCharacterEncoding("UTF-8"); // 设置文件的名称和格式 response.addHeader("Content-Disposition",

2020-08-06 16:26:13 695

原创 Java 读取.csv文件到List中

一、添加Maven依赖 <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</artifactId> <version>2.0</version> </dependency>二、读取.csvpublic static ArrayList<String[]> readCsv

2020-08-06 16:18:24 968

原创 Java MultipartFile转换为File

public static File MultipartFileToFile(MultipartFile multipartFile) { // 获取文件名 String fileName = multipartFile.getOriginalFilename(); // 获取文件后缀 String suffix = fileName.substring(fileName.lastIndexOf(".")); try { File file = File.createTempFil

2020-08-06 16:13:36 998

原创 Java syslog上报

文章目录一、添加Maven依赖二、syslog推送一、添加Maven依赖 <dependency> <groupId>org.syslog4j</groupId> <artifactId>syslog4j</artifactId> <version>0.9.30</version> </dependency>二、syslog推送public static void sendSys

2020-08-06 16:07:48 475

原创 Java使用Calendar遍历指定年份的十二个月、指定月份的每一天、指定日期的24小时

文章目录一、Calendar遍历指定年份的十二个月二、Calendar遍历指定月份的每一天三、Calendar遍历指定日期的24小时一、Calendar遍历指定年份的十二个月Calendar c = Calendar.getInstance();// 获取当前的年份int year = c.get(Calendar.YEAR);// 定义时间格式SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");// 开始日期为当前年拼接1月份Dat

2020-08-06 14:43:25 4822

原创 SpringBoot整合Mybatis实现批量插入

文章目录一、需求分析二、实战代码一、需求分析当数据量较大时,单条的插入方式在效率上可能无法满足我们的需求。这时我们就需要使用批量插入的方式,那么如何借助mybatis实现批量插入呢二、实战代码1. 在Mapper接口类中我们一般定义批量插入为insertBatch,传入相应实体类的list集合2. 实体类如下3. xml中的sql语句 <insert id="insertBatch" parameterType="java.util.List"> insert in

2020-08-06 14:21:24 4935

原创 Centos7安装配置RabbitMQ(rpm方式)

文章目录一、资源地址二、安装步骤一、资源地址RabbitMQ官网安装教程:https://www.rabbitmq.com/install-rpm.htmlRabbitMQ与Erlang版本匹配对照表:https://www.rabbitmq.com/which-erlang.htmlErlang rpm安装包官网下载地址:https://www.erlang-solutions.com/resources/download.html本次安装所使用的所有资源百度网盘地址(RabbitMQ版本

2020-08-04 10:31:56 511

原创 Ubantu无网环境下安装RabbitMQ(使用.deb包)

文章目录一、资源地址二、安装步骤一、资源地址RabbitMQ官网安装教程:https://www.rabbitmq.com/install-debian.htmlRabbitMQ .deb 安装包github下载地址:https://github.com/rabbitmq/rabbitmq-server/releasesRabbitMQ与Erlang版本匹配对照表:https://www.rabbitmq.com/which-erlang.htmlErlang .deb安装包官网下载地址:h

2020-07-14 12:05:33 2610 2

原创 RabbitMQ高级特性(RabbitMQ学习笔记 3)

文章目录一、如何保障消息100%投递成功?1.1 消息生产者的如何做到可靠性投递?一、如何保障消息100%投递成功?1.1 消息生产者的如何做到可靠性投递?消息的生产者想要确保消息成功发出并且被接收需要做到以下四个方面:保障消息的成功发出保障MQ节点的成功接收发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制解决方案:消息消息落库,对消息的状态进行打标这...

2020-05-07 18:49:14 459

原创 RabbitMQ常用Exchange交换机详解(RabbitMQ学习笔记 2)

文章目录一、Exchange简介1.1 工作流程1.2 Exchange的属性二、Exchange的类型2.1 Direct Exchange2.2 Topic Exchange2.3 Fanout Exchange一、Exchange简介1.1 工作流程Exchange的作用就是接收消息,然后根据路由键将消息转发到相应的队列中如下图所示,左侧的 ClientA 和 ClientB 是消息...

2020-05-03 22:12:32 438

原创 RabbitMQ和AMQP协议简介(RabbitMQ学习笔记 1)

文章目录一、RabbitMQ简介1.1 RabbitMQ的优势二、AMQP协议2.1 AMQP简介2.2 AMQP核心概念一、RabbitMQ简介RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的应用之间共享数据,RabbitMQ是使用Erlang语言来编写的,并且RabbitMQ是基于AMQP协议的。1.1 RabbitMQ的优势开源、性能优秀,稳定性保障...

2020-05-02 21:39:49 417

原创 RabbitMQ的安装及配置(Windows)

一、当前架构问题分析上一篇博客 Spring cloud中Spring Cloud Config的使用简单示例 的最后我们提到了项目需要做到自动更新配置才能满足实际使用中的需求,所以在这一篇博客中我们就来讲解一下怎样做到自动更新。二、Spring Cloud Bus简介2.1 什么是Spring Cloud BusSpring Cloud Bus将轻量级消息代理程序链接到分布式系统的节点。...

2020-04-29 15:33:55 318

原创 SpringBoot集成swagger2访问swagger-ui.html 404报错

文章目录一、访问报错二、问题分析一、访问报错二、问题分析一般来说,当我们在项目中添加好swagger2的依赖之后就可以通过http://localhost:端口号/swagger-ui.html 来访问接口文档,但现在却出现了404报错,也就是资源找不到所以无法访问。如果你在项目中配置了自定义的资源映射,那么问题就找到了。这里起初我是为了访问本地目录的资源,才配置了自定义的资源映射...

2020-03-29 10:24:01 3748 3

原创 git入门指南——常用命令使用教程

一、基本概念学习git我们首先要明确三个概念:工作区: 就是在你电脑本地的目录暂存区: 存放在 .git文件夹下的 index文件中版本库: 就是 .git 文件夹,这是一个隐藏的文件你要勾选才能看到三者之间的关系图如下所示二、常用命令2.1 创建本地仓库此处要用到的命令如下 cd d: (进入D盘) mkdir test (创建test文件夹) cd test (进...

2020-03-05 19:51:58 731 1

原创 RedisTemplate的简单使用(入门教程)

一、RedisTemplate简介RedisTemplate说白了就是一个封装好的工具类,里面提供了许多操作redis数据库的方法,对于多种数据类型都提供了支持。初学RedisTemplate时不知道你是不是和我有相同的疑问,看别人写的代码时发现在使用时为什么不是直接用 redisTemplate.set(key,value)而是要redisTemplate.opsForValue().se...

2020-02-26 13:21:03 3810

原创 Cause: java.sql.SQLSyntaxErrorException: Unknown table ‘argue_backend‘ in field list 使用Mybatis报错

一、报错截图可以看到他说我的名为argue_backend的表不存在,但是这张表是绝对存在的。而且在控制台打印出的sql语句执行也是正常的,但是就是报错。如果你也是这样的问题那么请继续阅读。二、xml代码截图,报错原因分析这里我用到了 if 标签,关键就在这里 if 标签包裹了 from 关键词所以导致了报错。三、解决方案解决方法也非常简单,将 from 关键词放到 if 标签的...

2020-02-14 16:28:35 1258

原创 Redis简介及安装教程(Windows)

一、NoSQL1.1 什么是NoSQLNoSQL(Not Only SQL),意思是不仅仅是SQL,是一项全新的数据库理念,泛指非关系型的数据库。1.2 为什么需要NoSQL对数据库高并发读写的需求对海量数据的高效率存储和访问的需求如果使用关系型数据库,在一个拥有几亿条数据的表中进行sql查询效率是是否低下的。对数据库的高可扩展性和高可用性的需求如果使用关系型数据库,那么例如现在...

2020-02-08 19:18:12 488

原创 Spring cloud系列专栏目录

本篇为Spring cloud专栏的目录,方便大家查阅1. 微服务架构详细讲解——为什么要使用微服务架构,它的优点设计原则2. Spring cloud实现微服务最简单的入门demo3. Spring cloud 解决硬编码问题——服务发现与服务注册4. Spring cloud中Eureka的使用简单示例5. Spring cloud中Ribbon的使用简单示例6. Spring c...

2020-02-08 19:06:39 406

原创 Spring cloud中Spring Cloud Config的使用简单示例(Spring cloud学习笔记 9)

一、当前架构问题分析1. 配置不能集中管理在我们的微服务架构中可能有几百个微服务,如果单独去管理每一个微服务那么我们来假设一种情况。有一天我们的数据源发生了变化,那么每个微服务都要去做相应的修改然后再重新启动,这个维护成本是极大的。2. 无法做到不同环境不同配置开发过程中会有开发环境、测试环境、生产环境等。他们的配置都是不一样的,虽然对于某一个微服务我们可以通过配置文件中的spring....

2020-02-07 20:56:08 694

原创 Spring cloud中Zuul的使用简单示例(Spring cloud学习笔记 8)

一、API Gateway1.1 概念API Gateway也就是服务网关,在微服务架构中,每个客户端需要调用一个或者多个API。有了API Gateway之后,用户的所有请求都直接发送到这个服务网关上,再由它进行转发,API Gateway起到了对服务进行聚合的作用。API Gateway负责请求转发、组合及协议转换。客户端的所有请求都要先经过API Gateway,然后由它将请求路由到对...

2020-02-05 20:16:36 1775

原创 Spring cloud中Feign的使用简单示例(Spring cloud学习笔记 7)

一、简介Feign是Netflix开发的声明式的Http客户端,使用时只需要创建一个接口,并在接口上添加注解就可以。Feign支持自带的注解和JAX-RS注解等。Spring cloud对Feign进行了增强,Feign支持了Spring MVC的注解,并且整合了Ribbon和Eureka,从而让Feign的使用更加方便。二、对服务消费者添加Feign支持问题回顾:之前我们在服务消费者(车...

2020-02-03 17:59:31 1149

原创 Spring cloud中Hystrix的使用简单示例(Spring cloud学习笔记 6)

一、当前架构问题分析1.1 问题分析我们当前的架构如下图所示,使用Eureka进行服务发现服务注册,客户端使用Ribbon进行负载均衡。现在我们假设一种情况,如果服务提供者的响应非常缓慢,那么服务消费者对服务提供者的请求就会被强制等待,直到http请求超时,然后抛出异常。那么在高负载场景下,如果不做任何处理,这种问题很可能造成所有处理用户请求的线程都被耗竭,而不能响应用户的进一步请求。1....

2020-02-02 20:24:52 524

原创 Spring cloud中Ribbon的使用简单示例(Spring cloud学习笔记 5)

一、Ribbon简介二、利用Ribbon解决车票微服务中的硬编码问题问题回顾之前我们在TicketService中的 url是写死的,而我们现在已经会使用Eureka了,在配合上ribbon就可以去eureka中查询服务地址了。2.1 修改车票微服务启动类,添加负载均衡的注解打开车票微服务的pom文件,可以看到eureka的依赖中整合了ribbon,所以我们就不需要单独去添加ribbo...

2020-01-31 13:46:00 2785

2020中国城市等级划分(一二三四五线城市及排名)excel表格及sql文件

根据2020城市商业魅力排行榜整理的中国城市等级划分的excel表格以及一个城市等级的数据库表包括三个字段(自增id,城市名称,城市等级)的sql文件

2020-07-30

空空如也

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

TA关注的人

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