自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java调用支付宝扫码支付接口

说明:由于没有商户账号,所以本文使用的是沙箱账号,本质跟真实账号是一样的,是支付宝为了方便开发人员开发调试而推出的策略。在真实开发中将商户公钥等修改为真实的商户即可。支付基本流程用户下单商户账号(收款方)在配置中已经配置好,调用第三方接口根据用户提交的订单(应包括订单编号,订单名称,价格等信息)来生成支付流水单(可以是生成一个二维码也可以是普通的收款单),然后返回给前端显示给用户,等待用户支付。用户扫码或者点击支付等完成支付。第三方接口会检测到用户是否完成支付,然后返回一个结果到某个url(称

2021-09-01 19:20:37 4832 1

原创 什么是分布式锁

什么是分布式锁,为什么要使用分布式锁?考虑这样一个问题:假设某商城只剩一条裤子,两个人同时买,该怎么卖?有的同学回答:用lock锁和synchronize关键字就可以解决了呀!如果只有一台服务器完全可行,而这在分布式的场景下是行不通的,因为买裤子这段程序是部署运行在很多台服务器上的,也就是运行在不同的jvm上的,而lock锁等只是在jvm进程上的锁,并不能锁其他服务器上的程序,所以一条裤子还是可能卖两次了。所以此时我们就需要一把锁能锁住所有买裤子的程序,示意图如下:怎么实现分布式锁首先明确我

2021-08-29 22:02:55 786 1

原创 Redis哨兵模式

什么是哨兵模式在redis节点中,有一个主节点以及多个从节点,当主节点宕机以后,此时整个redis集群就只能读不能写,因为不存在主节点了,这时候就需要选举出一个新的主节点来提供正常的服务,而这种自动监测redis集群是否正常,以及自动选举出一个新的主节点的机制就是哨兵模式。通常情况下,哨兵也是一个集群,因为哨兵本身也可能会出现问题,所以需要搭建一个哨兵集群在监测所有节点的同时,各个哨兵也互相监测。哨兵模式的配置启动所有节点启动所有节点并配置主从节点[root@lijh ~]# ps aux

2021-08-18 22:42:59 250

原创 Redis集群搭建及主从复制

查看当前redis服务的信息可以看到角色是主节点,拥有从机的个数是0

2021-08-18 18:08:00 262

转载 springboot使用Redis

简介在SpringBoot2.x之后,原来使用的jedis被替换为了lettuce。jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池!更像BIO模式lettuce:采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据了,更像NIO模式使用步骤导入依赖 <dependency> <groupId>org.springframework.boot</groupId&

2021-08-16 13:20:13 455

原创 Redis事务

事务特性单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的。事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。事务执行基本流程一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。事务常用命令multi: 标记事务的开启exec :执行事务discard:取消事务,放弃执行事务块内的所有命

2021-08-15 11:21:42 99

原创 Redis常用命令大全

启动redis服务在redis的src目录下执行命令:./redis-server启动redis客户端实例在redis的src目录下执行命令:./redis-cli连接远程redis服务器:redis-cli -h host -p port -a password设置key-valueset key value获取值get key删除del key判断key是否存在exists key设置10秒过期expire key 10设置10毫秒..

2021-08-14 23:17:17 7508

原创 java网络编程

Tcp实现客户端与服务端交互的步骤:服务端:①通过ServerSocket类创建一个对象,参数传入ip地址和端口号;②循环等待客户端连接,连接成功后返回一个套接字对象;③服务端套接字socket调用getInputStream() 方法可以获得输入流;④通过InputStream的read() 方法读取客户端发送的消息;客户端:①通过Socket类,将服务器的的ip地址和对应的端口号作为构造参数创建一个套接字对象,即完成连接。②通过OutputStream流向服务端发送信息。例子:服务

2021-08-14 10:16:26 100

原创 mybatis执行流程

2021-08-14 10:16:05 114

原创 springcloud-zuul路由网关配置

简介为了解决服务url地址显式暴露等问题,zull可以提供解决方案实现url的部分自定义,并可以通过配置决定原来的地址是否可继续使用等。步骤创建一个空项目,导入依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> <version>1.4.6

2021-08-09 12:22:49 141

原创 springCloud-hystrix服务熔断和降级

了解服务雪崩服务雪崩就是一连串相关联的服务当其中某个服务出现错误,那么此时请求就会阻塞,当很多用户都要访问这个服务的时候,就会引起大面积地阻塞,这就是服务雪崩;到达一定程度就会影响服务器地性能。什么是降级简单的说就是:当A服务很多人访问,而B服务很少人访问的时候,A服务需要承受很大的压力才能满足大量的请求,此时解决方法是将B服务关掉,让调用B服务的用户暂时无法调用到服务,这样确保A服务器能顶住压力,否则可能会崩掉(牺牲少数人保证整体能正常运行),那么这时候关掉B服务(自动或人工)就叫做降级。.

2021-08-02 13:17:23 190

原创 springCloud-Feign实现接口的方式调用服务

步骤在原有消费者项目中添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> <version>1.4.6.RELEASE</version> </d

2021-08-02 08:19:26 426

原创 springcloud-Ribbon实现负载均衡

简介Ribbon是实现基于客户端实现负载均衡的技术,负载均衡简单地说就是:在多个服务器中运行着同一个服务,但是如果不加约束,那客户端根本不知道该去访问哪一台服务器的服务或者长时间都在访问同一台服务器,导致负载过重,而其他服务器却没有任何流量,而负载均衡就是通过一定的策略,让客户端对各个服务器“雨露均沾”,让各个服务器共同承受用户的请求。Ribbon的使用前提:能够使用Eureka实现服务的注册。导入依赖Ribbon是在客户端实现的负载均衡,所以一切实现操作都是在服务调用方进行的,在服务调用

2021-08-01 14:13:24 149

原创 springCloud-eureka的使用

1. 简介:springCloud是用来管理微服务的,而eureka是服务的注册中心,服务提供者将写好的服务注册到eureka中,供消费者根据需要调用服务。2. eureka的简单使用说明:只给出了关键步骤,springboot以及数据库等的相关依赖配置等不做解释。①编写服务并注册到eureka注册中心*新建一个springboot项目作为eureka服务中心,导入eureka的依赖<dependency> <groupId>org.springframew

2021-07-31 14:16:00 618 2

原创 idea连接hadoop集群并运行WordCount例子

前提:在linux系统中搭建好hadoop集群安装解压即可,也可从linux中直接拉取过来配置环境变量可以只配箭头中的一项创建maven项目导入依赖<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE<

2021-07-08 23:21:55 1372 6

原创 linux离线安装Mysql

①将提前准备好的压缩包拖动到mobaXterm的目录中②将文件移动到 /usr/local/mv mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar /usr/local/③删除原有数据库:④ 解压:tar axvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar⑤ 安装rmp包:rpm -ivh mysql-community-common-8.0.16-2.el7.x86_64.rpmrpm -ivh mysql-co

2021-07-08 22:55:03 219 2

原创 linux(MobaXterm)下安装jdk,tomcat

安装tomcat①提前准备好安装包,直接拖动到mobaXterm对应的目录下②解压:tar -zxvf jdk-8u112-linux-x64.tar.gz③移动安装包到指定目录mv jdk1.8.0_112 /usr/local/④配置环境变量,找到profile文件,具体路径如图所示在profile文件最末尾下加入下面几行:export JAVA_HOME=/usr/local/jdk1.8.0_112/export CLASSPATH=.:JAVAHOME/jre/bin/

2021-07-08 22:51:00 1612 1

原创 Centos7安装教程

①打开VMware虚拟机,选择“典型”,点击下一步②选择稍后安装操作系统,点击下一步 ③选择linux操作系统以及Centos7 64位④自定义虚拟机名,以及存储的位置(需要的硬盘空间比较大)⑤选择磁盘大小,是否存储为多文件可自选⑥点击完成,硬件可稍后配置⑦点击编辑虚拟机设置,对虚拟机的硬件,网络等信息进行配置⑧选择虚拟机内存大小⑨选择提前准备好的镜像文件⑩选择自定义网络连接,并选择VMnet1⑪点击重启虚拟机,选择中文语言⑫选择网络和主机名选择配置:⑬虚

2021-07-08 22:42:39 297 2

原创 dubbo+zookeeper

环境准备下载dubbo连接:https://github.com/apache/dubbo-admin/选择master,下载到本地解压得到的项目包含如下目录进入dubbo目录,打开cmd:运行命令mvn clean install可以在dubbo目录下生成一个target目录,如果执行成功,里面会有一个jar包(这一步很可能会失败,可能是是环境的问题,如果始终无法成功,可以直接拿别人的jar包来使用)链接:https://pan.baidu.com/s/1gUz9Ygt4j0v8xuPwBy

2021-07-01 00:09:00 113 4

原创 mybatisPlus代码自动生成器

编写自动生成类直接创建一个类,然后执行main方法即可,可以根据自己的需要进行相关的配置import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.generator.AutoGenerator;import com.baomidou.mybatisplus.generator.config.Da

2021-06-28 15:17:09 99

原创 mybatisPlus条件查询

mybatisPlus提供了wrapper条件查询的方法,可以实现各种各样的条件查询,下面给出一些常用的条件方法,如需用到其他的条件方法可以到官网中很容易找到;eq(“name”, “老王”)—>name = ‘老王’ne(“name”, “老王”)—>name <> ‘老王’gt(“age”, 18)—>age > 18ge(“age”, 18)—>age >= 18lt(“age”, 18)—>age < 18le(“age”,

2021-06-28 14:35:57 586 1

原创 mybatisplus的分页插件和逻辑删除插件

分页插件配置分页拦截器,记得使用@Configration注解@Configurationpublic class Plugs { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor

2021-06-28 14:14:55 675 2

原创 mybatisPlus自动填充属性

属性的自动填充1.设置填充的字段和填充操作在需要填充的字段上使用注解**@TableField(""),**给他的参数Fill设置值为对应的数据库操作,如添加,表明在添加的时候会进行填充,使用如下: @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date modifyTime;2.设置填充的值:

2021-06-27 23:53:54 343

原创 springboot中怎么使用mybatisPlus

1.创建项目,导入依赖 <!--mybatisplus依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.3.1</version> </dependency> <dependency> &

2021-06-27 23:20:24 196

原创 springboot异步任务,发送邮件,定时任务

异步方法就是有些程序需要执行的时间比较久,不能让程序执行完它再继续执行,所以需要创建另外的线程来执行它。springboot中使用@Async注解在需要异步执行的方法上即可实现,同时需要在springboot启动类上加上@EnableAsync注解开启这个注解功能。定时任务可以在自己设定的时间点上执需要执行的程序,springboot中也有集成,在对应方法上使用@Scheduled(cron=“设置时间点”)注解即可实现定时调用,同样需要在主启动类开启这个注解功能@EnableScheduling发

2021-06-23 20:48:21 141

原创 springsecurity的使用

基础环境搭建创建springboot项目,写好几个测试的前端页面,以及Controller的实现,整体框架如下:index.html<!DOCTYPE html><html lang="en" xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity4"> <title>Title</title&gt

2021-06-22 16:39:27 88

原创 springboot中使用Swagger

使用Swagger的原因①简单易操作,文档可以动态生成,代码改变运行后文档自动生成。②可以方便把接口信息等呈现给前端工程师③有分组等功能,可以区分哪部分文档对应哪个开发者。③后端工程师可以对接口进行简单的测试使用Swagger的步骤创建springboot项目,导入Swagger需要的两个依赖,同时创建需要使用的Controller<dependency> <groupId>io.springfox</groupId> <artifactI

2021-06-21 14:52:23 519

原创 springmvc拦截器怎么使用

什么是拦截器在前端发来请求的时候,有时候需要拦截掉它的请求,不让他访问后端的请求处理器,举个简单的例子:有人想不登录直接输入url地址访问网站的Main页面,此时我们就需要用拦截器对这样的请求进行拦截,不让他执行Controller中的 "/Main"对应的方法,这就可以用拦截器来实现。springMVC中集成了拦截器的实现。使用步骤创建一个拦截器:只需要自己写一个拦截器的类,然后实现HandlerInterceptor接口中的方法,这个接口只有三个方法,分别对应①处理请求前,②处理请求时,③处理

2021-06-19 21:20:09 157

原创 springmvc乱码怎么解决

文章目录方法1:通过过滤器的方法解决方法2:在spring配置文件中配置响应编码方法1:通过过滤器的方法解决web.xml文件中添加过滤器如下:<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

2021-06-19 11:31:27 62

原创 jvm类加载及内存结构

什么是jvmjvm就是java虚拟机,java程序是运行在java虚拟机上的,通过java虚拟机来对操作系统进行操作,操作系统再操作硬件资源。jvm的内存结构图class文件:每一个类对应一个class文件,包含类的字段,方法,接口等信息;还有一个class常量池,存放的的是一些字面量(字面量就是一些文本字符串或者被final修饰的常量以及基本数据类型的值)和符号引用。方法区:方法区通常包含Class对象,也就是说从class文件加载过来的一些信息生成的一个Class对象(包括类的信息,静态变

2021-06-19 10:18:18 135

原创 什么是反射?

文章目录类加载以及实例化的过程反射的概念如何得到Class对象类加载以及实例化的过程要理解反射是什么必须首先理解java虚拟机是怎么加载一个类的。以Student类为例:①首先编译得到字节码文件(也就是二进制文件),存放在本地的内存中;②当读到一个new Student()的指令之后(二进制指令),类加载器会到本地内存中寻找这个类的Class字节码文件并加载到jvm内存中;③读入到jvm内存的同时会自动在方法去中产生一个Class对象(也就是Student类的模板);④根据得到的模板在堆中生成

2021-06-19 00:06:22 87

原创 @Controller和@RestController的区别(Restful风格)

Controller和RestController的联系与区别一般使用注解开发的情况下,我们都会在Controller层使用Controller相关的注解,目的是标记这是一个控制类,同时讲它注入到spring容器中,此时需要在spring容器中开启扫描包的功能。那么@Controller与@RestController的区别如下:①在每个映射方法之后都会有一个返回值,@Controller是跳转到返回值对应的页面,而@RestController则是向请求页面返回数据。举个例子来说:首先写一个hell

2021-06-07 09:26:40 908

原创 springMVC的使用

1.创建项目导入依赖<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> </dependency>

2021-06-06 21:38:40 66

原创 springMVC的原理

springMVC运行原理图名词解释①modelAndView:模型视图,模型即数据模型,即返回的各种数据;视图将模型中的数据渲染到页面中。②handler:处理器:即controller中对应业务的程序方法,它对从数据库获取到的数据根据业务需要处理后绑定到数据模型中,然后将模型和视图返回。③前端控制器:指的是DispacthServlet原理SpringMVC本质上也是用servlet实现的,它定义了一个DispatchServlet类,通常将该servlet进行通配,也就是前端不管请求哪个

2021-06-06 21:03:35 95

原创 spring整合mybatis

①导入相关依赖:<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> <de

2021-06-05 12:15:15 62

原创 spring-aop(jdk动态代理)

文章目录jdk动态代理(只能代理接口)注解实现aopjdk动态代理(只能代理接口)①编写一个接口和实现类,作为需要被代理的对象public class StudentServiceImpl implements StudentService{ public void getStudent(){ System.out.println("查找学生"); } public void addStudent(){ System.out.println("增

2021-06-04 22:50:52 78

原创 spring中集合属性的注入与常见的设计模式

常见类型的注入方法建立一个Student类有如下属性(省略了set等方法):public class Student { int id; String name; List list; HashMap map; Son son; }在spring中的注入方式如下:<bean id="son" class="Son"> <property name="name" value="张四"/> <property

2021-06-01 10:14:30 129

原创 spring中属性的自动装配

常用注解:①Autowire②Resource②Value常规的注入方法 <bean id="son" class="pojo.Son" p:age="13" p:name="李二"/> <bean id="student" class="pojo.Student" p:id="123" p:name="李二"> <property name="son" ref="son"/> </bean> 在xml文件中使

2021-06-01 08:42:16 112

原创 什么是IOC,如何理解IOC

简介说到IOC,很多人都只知道是控制反转,但是究竟什么是控制反转以及为什么要控制反转呢?相信很多人是不知道的;控制反转指的是一种思想,是指原本由类内部控制转为由系统控制;比如说,如果用户变更一个需求,一般的方法就是在业务层修改原有的dao接口,而将业务需求变更为相同类型的业务,你为啥要去改业务(service)接口呢?所以这种旧的思想是本身是有悖实际的;实际上,我们将该dao接口写好后,你业务需要什么接口我就传给你什么就行了,而不该去修改原本的业务(service)接口;所以IOC的编程思想不需要修改写好

2021-05-25 11:54:55 1726

原创 java实现udp聊天室

运行结果展示①登陆两个用户,此时还没有创建有聊天室②创建一个聊天室③李四聊天被骂,自己也创建一个聊天室代码:①登陆:package com.ljh;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.HashMap;public class AdminLogin extend

2021-05-23 17:23:08 885 2

空空如也

空空如也

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

TA关注的人

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