自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 netty

什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架。Netty 是一个广泛使用的 Java 网络编程框架(Netty 在 2011 年获得了Duke’s Choice Award,见https://www.java.net/dukeschoice/2011)。它活跃和成长于用户社区,像大型公司 Facebook 和 Instagram 以及流行 开源项目如 Infinispan, HornetQ, Vert.x,

2021-10-19 22:49:07 232

原创 tomcat

Tomcat介绍:Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。诀窍是,当配置正确时,Apache 为HTML

2021-09-13 01:12:25 178

原创 spring-boot源码解析

(1)为什么导入dependency时不需要指定版本?在springboot pom.xml文件中有两个核心依赖,分别是spring-boot-starter-parent和spring-boot-starter-web先看spring-boot-starter-parent中的properties节点工程的Java版本为 1.8 。工程代码的编译源文件编码格式为 UTF-8工程编译后的文件编码格式为 UTF-8Maven打包编译的版本再看Build节点,分别定义了resource和

2021-09-07 17:14:15 1324

原创 spring整理

spring基础知识Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架Spring 官⽅⽹址:http://spring.ioSpring 的核⼼结构下面将对图中的专业术语进行解释:Spring核⼼容器(Core Container):是Spring框架最核⼼的部分,它

2021-08-13 02:36:11 125

原创 mybatis整理

文章目录一、mybatis与JDBC二、原生JDBC存在的问题准备工作框架端一、mybatis与JDBC谈到Mybatis,不得不先说起JDBC,Mybatis的实质其实就是对JDBC的一层封装,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。开发者只需要关注 SQL 本身,而不需要花费精力去处理 JDBC 繁杂的过程代码(如:注册驱动、创建connection、创建statement、手动设置参数、结果集检索等)二、原生JDBC存在的问题先看原生JDBC代码public stati.

2021-07-30 16:49:34 92

原创 RabbitMq环境搭建极速入门

提示:这里使用的是RabbitMq 3.6.5版本来进行操作官网地址:http://www.rabbitmq.com/环境描述:Linux(centos7 Redhat7)1. 首先在Linux上进行一些软件的准备工作,yum下来一些基础的软件包yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc

2021-06-28 16:59:14 82

原创 ObjectMapper中writeValue和writeValueAsString的区别

writeValue(参数,obj):直接将传入的对象序列化为json,并且返回给客户端writeValueAsString(obj):将传入的对象序列化为json,返回给调用者ex:String body = ExceptionUtils.doFunRethrowE(()->objectMapper.writeValueAsString(req));...

2021-02-23 09:34:14 3029

原创 curl 的用法指南

简介:curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的参考,方便查阅。不带有任何参数时,curl 就是发出 GET 请求。$ curl https://www.example.com-A-A参数指定客户端的用户代理标头,即User-Agent。curl 的默认用户代理字符串是curl/

2021-01-26 11:03:02 162

原创 curl 的开发指南

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具.本文介绍它的主要命令行参数,作为日常的参考,方便查阅。一、查看网页源码直接在curl命令后加上网址,就可以看到网页源码。我们以网址www.sina.com为例(选择该网址,主要因为它的网页代码较短):$ curl www.sina.com<!DOCTYPE HTML P

2021-01-26 10:19:47 212

原创 groovy入门

Groovy是用于Java虚拟机的一种敏捷的动态语言,它是一种成熟的面向对象编程语言,既可以用于面向对象编程,又可以用作纯粹的脚本语言。使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。文章目录前言一、groovy是什么?二、groovy的基本特点三、groovy的语法1.创建你的第一个 Hello World 程序2.在 Groovy 中导入语句3.身份标识前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了

2021-01-13 18:56:15 396 1

原创 nacos单机模式报错

nacos单机模式报错:server is DOWN now, please try again later!解决方案:删除nacos目录下data/protocol目录,重新启动nacos服务。

2020-12-30 17:50:06 460

原创 git安装及github使用文档的-gitee

一、 git安装第一步:下载安装包Git-2.18.0-64-bit.exe(注:安装过程中,如果你不熟悉每个选项的意思,请保持默认的选项)第二步:安装教程打开 http://msysgit.github.io/ 网址,点击 Download 下载最新版本点击next选择你要下载的路径勾选 Windows Explorer integration 选项,点击 Next选择 换行符格式(默认)点击 Next验证安装是否成功,打开cmd,输入 git --version二、

2020-11-05 16:08:28 173

原创 git介绍入门

文章目录一、git的概念?二、git工作流程文件的四种状态一、git的概念?git是一个版本控制工具(svn)四个工作区域:Git 本地有四个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository 或 Git Directory)、git 仓库(RemoteDirectory)。文件在这四个区域之间的转换关系如下:WorkSpace:工作区,存放项目代码的区域。Index:暂存区,也称Stage,用于临时存放修改的文件,保

2020-11-05 15:50:46 80

原创 关于分布式配置中心 Spring Cloud Config的快速入门

我们之前开发项目时,需要用到非常多的配置文件,如数据库的配置信息、mapper.xml等。。。但是这样会存在一个问题,如果我们的项目已经启动运行,那么数据库服务器的ip地址发生了改变,我们该怎么办?这时我们需要重新修改我们的配置文件并且重启服务器,若数据库信息庞大,维护成本可想而知。这时Spring Cloud Config可以为我们统一配置文件,以及实时同步更新,并不需要重新启动应用程序。文章目录一、Spring Cloud Config 简介二、快速入门 – 搭建Config Server1.

2020-11-04 22:43:45 192 1

原创 负载均衡:Ribbon

spring cloud Ribbon是基于Netflix Ribbon实现的一套客户端,负载均衡工具。简而言之,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法。下面,将提供一个关于负载均衡的案例:1.创建一个工程,导入相关依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-sta

2020-11-03 23:18:43 189 2

原创 Spring Cloud Zuul服务网关

在了解微服务网关Spring Cloud Zuul之前,我们先要了解为什么我们要使用微服务网关:不同的微服务一般会有不同的网络地址,而客户端可能需要调用多个服务接口才能完成一个业务需求.若让客户端直接与各个微服务通信,会有以下问题:客户端会多次请求不同微服务,增加了客户端复杂性存在跨域请求,处理相对复杂认证复杂,每个服务都需要独立认证难以重构,多个服务可能将会合并成一个或拆分成多个为了解决上面这些问题,我们需要将权限控制、日志收集这样的东西从我们的服务单元中抽离出去,而最适合这些逻辑的

2020-11-03 23:00:55 88 1

原创 Feign客户端-声明式REST调用

Feign的简介Feign是NetFlix的声明式、模板化的HTTP客户端,其灵感来自Retrofit,JAXRS-2.0以及webSocket,Feign可以帮助我们更加便捷的调用HTTP API在spring cloud中,使用feign非常简单-----创建一个接口,并在接口添加一些注解代码就完成了。feign支持多种注解接下来我们将在订单微服务microservice order中增加对Feign的支持。步骤如下:1.导入相应依赖<!--springboot 整合fegnin客

2020-11-03 22:04:51 308 4

原创 分布式系统如何实现远程调用

在分布式系统中,各个服务可能处于不同主机,但是服务之间不可避免的需要相互调用,这个称为远程调用。之前我们在项目的开发过程中,只需要创建一个工程,将所有功能放入一个项目进行开发,管理,变异,测试,打包。所以以前的项目都被称为单体架构 。但由于单体架构存在明显的缺陷,这时我们需要用到分布式系统。远程过程调用(RPC):RPC是由Sun发明的远程过程调用协议,是第一种真正的分布式应用模型。RPC远程调用框架:(1)RMI实现(2)Hessian(3)thrift(4)SpringCloud(5

2020-11-02 23:14:51 837

原创 集群、分布式、节点

关于集群集群是个服务形态,通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作,通俗来说,就是将几台服务器集中在一起,实现同一个业务。优点在于当一台机器出现故障时,不会影响其他服务器的执行。关于分布式一个业务分拆成多个子业务,或者本身就是不同的业务,部署在不同的服务器上。通俗来说,不同的业务,分布在不同的地方,优点在于以缩短单个任务的执行时间来提升效率,且便于扩展,复用性高。关于节点节点就相当于集群中的一个服务器。集群与分布式的区别1.集群是个物理形态,分布式是个工作方式

2020-11-02 22:29:22 1970

原创 ZooKeeper简介以及相关部署

当我们谈起分布式环境的演进过程时,都是从一个单节点开始,慢慢过渡到分布式,为什么单节点慢慢无法适应现在的需求,传统一个tomcat打天下有什么缺点,缺点又是什么,当一个tomcat搞不定的时候,分布式的架构图又是什么样的,这个时候我们需要用到ZooKeeper.文章目录为什么学习ZK一、ZooKeeper是什么?二、哪些常见需要用到ZK?三、ZooKeeper部署1.Zookeeper windows环境安装2.Zookeeper集群配置四、目录结构为什么学习ZK传统的单节点架构存在很多问题,..

2020-10-31 16:30:47 176

原创 分布式锁

为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布式锁。文章目录概览一、分布式锁流程二、代码实现MySql实现分布式锁MySql实现分布式锁的优缺点ZK实现分布式锁ZK实现分布式锁的优缺点概览提示:以下是本篇文章正文内容,下面案例可供参考一、分布式锁流程1、定义锁的接口Lock2、在AbstractLock模板锁里面实现getLock方法,实现通用的逻辑。3、不能确实的步骤,作为虚拟方法,甩锅给子

2020-10-29 19:46:36 96

原创 并发安全问题

在互联网企业,一定特别关注并发编程的问题,那什么是并发安全问题呢?并发安全一般在什么情况下会发生呢?在讨论并发安全问题解决方案之前,先把这问题重现了。文章目录前言一、CountDownLatch的使用二、并发重现三、问题原因解析四、解决方案:使用锁解决Synchronized与Lock 区别前言看上面这个图,要产生并发安全问题:有几个事情是应该同时发生的:有很多用户(并发场景)对同一共享资源进行操作一、CountDownLatch的使用CountDownLatch这个类能够使一

2020-10-29 19:12:55 755 1

原创 redis哨兵机制

概念sentinal(哨兵):哨兵是redis集群架构中非常重要的一个组件,主要功能如下:集群监控,负责监控redis master和slave进程是否正常工作消息通知,如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员故障转移,如果master node挂掉了,会自动转移到slave node上配置中心,如果故障转移发生了,通知client客户端新的master地址Redis哨兵原理哨兵至少需要3个实例,来保证自己的健壮性哨兵 + redis主从的部署架

2020-10-28 19:52:23 146 1

原创 Redis实现分表分库

Redis压力测试指令:./redis-benchmark -h 127.0.0.1Redis实现分表分库Redis数据压力如果mysql压力不够,使用mycat如果tomcat压力不够,使用nginx如果redis内存不够呢?这时我们可以使用分表分库。分库思路不管数据库还是客户的缓存都找代理(网关)对Key进行路由(这里是通过Key的长度取模)把数据存到相应Redis服务器代码解析redis默认端口6379,在这里我们增添6380、6381两个端口package c

2020-10-27 19:47:54 2614 1

原创 Redis协议揭秘

关于Socket概念:Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。流程图如下:代码实现:服务端package cn.enjoy.socket;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] a

2020-10-27 19:27:22 75

原创 多数据源与jta+atomikos分布式事务

SpringBoot默认是集成事务的,只要在方法上加上@Transactional既可,但某些项目用到了多个数据库,也就代表有多个数据源。此时需要用到分布式事务。多数据源此时有两个数据库:数据库1:Databases:springTable:enjoy_userCREATE TABLE `enjoy_user` ( `id` int NOT NULL AUTO_INCREMENT , `passwd` varchar(255) NULL , `username` varchar(2

2020-10-26 23:19:32 253

原创 关于Redis数据结构

redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构。value的数据结构:字符串类型 string哈希类型 hash : map格式列表类型 list : linkedlist格式。支持重复元素集合类型 set : 不允许重复元素有序集合类型 sortedset:不允许重复元素,且元素有顺序下面我们将分别介绍这几种数据结构:字符串类型 string命令行:java实现,编写单元测试//1. 获取连接 Je

2020-10-26 19:09:16 170 1

原创 实现Linux环境下Redis的安装

文章目录一、Redis概述二、Redis快速入门1. Windows下载安装2. Linux安装2.1 确保Linux环境正常运行2.2 下载Redis总结一、Redis概述Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。二、Redis快速入门1. Windows下载安装https:

2020-10-26 18:47:20 60

原创 Spring Boot快速入门之实现简单的登录注册功能

我们将以实现简单的登录注册功能来完成Spring Boot的快速入门(IDEA版)1.在数据库建enjoy_user表CREATE TABLE `enjoy_user` ( `id` int NOT NULL AUTO_INCREMENT , `passwd` varchar(255) NULL , `username` varchar(255) NULL , PRIMARY KEY (`id`));2.搭建SpringBoot环境pom.xml <parent>

2020-10-22 19:39:15 1389 1

原创 SpringBoot的简单介绍

spring简介:SpringBoot介绍**Spring Boot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run"。 我们为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用需要很少的Spring配置。你可以使用Spring Boot创建Java应用,并使用java -jar启动它或采用传统的war部署方式。1.2 为什么要用SpringBoot?1.依赖太多, 且存在版本问题2.配置太多了且每次都一

2020-10-22 18:46:12 217

原创 Spirng MVC表单标签库

Handler@GetMapping("/get")public ModelAndView get(){ ModelAndView modelAndView = new ModelAndView("tag"); Student student = new Student(1L,"张三",22); modelAndView.addObject("student",student); return modelAndView;}JSP<%@ page conten

2020-10-15 11:33:34 109

原创 浅谈在Spring MVC中如何实现文件上传、下载

Spring MVC文件上传下载单文件上传介绍:底层是使用 Apache fileupload 组件完成上传,Spring MVC 对这种方式进行了封装。步骤如下:1、先在pom.xml中导入相关依赖:<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</vers

2020-10-14 11:33:34 139

原创 关于Spring MVC REST

REST:Representational State Transfer,资源表现层状态转换,是目前比较主流的一种互联网软件架构,它结构清晰、标准规范、易于理解、便于扩展。资源(resource)网络上的一个实体,或者说网络中存在的一个具体信息,一段文本、一张图片、一首歌曲、一段视频等等,总之就是一个具体的存在。可以用一个 URI(统一资源定位符)指向它,每个资源都有对应的一个特定的 URI,要获取该资源时,只需要访问对应的 URI 即可。表现层(Representation)资源具体呈现出来的形

2020-10-13 10:36:55 78

原创 Spring MVC自定义数据类型转换器

什么是数据类型转换器数据转换器是指将客户端 HTTP 请求中的参数转换为业务方法中定义的形参,自定义表示开发者可以自主设计转换的方式,HandlerApdter 已经提供了通用的转换,String 转 int,String 转 double,表单数据的封装等,但是在特殊的业务场景下,HandlerAdapter 无法进行转换,就需要开发者自定义转换器。ex:客户端输入 String 类型的数据 “2019-03-03”,自定义转换器将该数据转为 Date 类型的对象。下面将简单介绍一下步骤:1、.

2020-10-11 17:34:54 81

原创 Spring MVC数据解析

JSP的四大作用域对象:pageContext、request、session、application模型数据的绑定都是由ViewResolver来完成的,在实际开发中,我们需要先添加模型数据,再交给ViewResolver来绑定在Spring MVC中,提供了一下几种方式添加模型数据:MapModelModelAndView@SessionAttribute@ModelAttribute将模式数据绑定到 request 对象1、Map@RequestMapping("/map"

2020-10-09 19:28:25 84

原创 关于Spring MVC数据绑定

数据绑定:在后端的业务方法中直接获取客户端 HTTP 请求中的参数,将请求参数映射到业务方法的形参中,Spring MVC 中数据绑定的工作是由 HandlerAdapter 来完成的。基本数据类型@RequestMapping("/baseType")@ResponseBodypublic String baseType(int id){ return id+"";}上述代码中:@ResponseBody 表示 Spring MVC 会直接将业务方法的返回值响应给客户端,如果不

2020-10-08 12:46:11 89

原创 关于Spring MVC注解

关于Spring MVC注解@RequestMappingSpring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在 Handler 的类定义处以及方法定义处都可以添加 @RequestMapping ,在类定义处添加,相当于客户端多了一层访问路径。@Controller@Controller 在类定义处添加,将该类交个 IoC 容器来管理(结合 springmvc.xml 的自动扫描配置使用),同时使其成为一个控制器,可以接收客户端请求。packa

2020-10-07 18:07:07 115 1

原创 关于Spring MVC入门

Spring MVC 是目前主流的实现 MVC 设计模式的企业级开发框架,Spring 框架的一个子模块,无需整合,开发起来更加便捷。文章目录一、什么是 MVC 设计模式?二、Spring MVC 的核心组件三、Spring MVC 的控制流程1.创建 Maven 工程,pom.xml2.在 web.xml 中配置 DispatcherServlet3.在springmvc.xml中进行配置4.创建handler一、什么是 MVC 设计模式?该设计模式将应用程序分为 Controller、Mode

2020-10-07 16:56:06 94

原创 spring事务管理(三)

spring事务的实现(三):spring基于注解的事务管理spring基于注解的事务管理步骤(以转账为例):第一步:业务层的哪些方法需要事务package com.cc.service;public interface IUserInfoService { /* * from:转出的账户 to:转入的账户 money:转的金额 * */ public void zz(int from, int to, int money) throws Exception;}第二步:开启

2020-10-06 16:37:33 69

原创 spring事务管理(二)

spring事务的实现(二):声明式事务声明式事务步骤(以转账为例):第一步:业务的层的哪些方法需要事务package com.cc.service;public interface IUserInfoService { /* * from:转出的账户 to:转入的账户 money:转的金额 * */ public void zz(int from, int to, int money) throws Exception;}第二步:在spring-datasource.xm

2020-10-05 21:18:24 60

空空如也

空空如也

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

TA关注的人

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