自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 代理模式,静态代理与动态代理

代理模式又分为静态代理和动态代理。静态代理静态代理的代理类和目标类都是死的,下面是一个静态代理的小例子,先创建Timo类,可以看到,timo想要五杀,/** * timo类 * */public class TiMo { public void wantPentaKill() { System.out.println("Timo想要五杀"); }}我创建一个代打类,来帮助Timo拿到五杀,/** * 代打类 * */public class Dai

2021-04-16 15:13:54 116

原创 适配器模式

生活中我们常用的手机或者电脑充电器就是一种适配器,手机需用5V的接口来充电,而家庭用电是220V的交流电,所以这就需要适配器在中间转换一下。下面就以这个例子来说明一下是什么适配器模式。首先创建我们的家庭用的220V的电,/** * 220V的交流电 * */public class V220 { public void use220V() { System.out.println("220V的交流电正在被使用..."); }}创建手机可以使用的5V电的接口,

2021-04-16 13:51:56 144

原创 工厂模式

工厂模式不需要我们自己来创建产品(对象),需要什么产品直接向工厂要,当然要告知工厂我们想要什么,参数是必不可少的。简单工厂模式先来看简单工厂模式,这种模式是工厂把产品生产流水线都建好了,只需要我们向工厂索要就可以得到想要的产品,下面以汽车工厂生产汽车为例。创建汽车接口,/** * 产品接口:车 * */public interface Car { public void run();}接下来创建奥迪汽车流水线,/** * 具体的产品:奥迪车 * */public clas

2021-04-16 11:09:38 138

原创 创建Maven聚合工程

目录使用IDEA创建Maven聚合工程使用IDEA创建Maven聚合工程聚合工程也就是多模块工程,一个父工程下有多个子模块,每个子模块都是一个独立的工程项目。使用IDEA创建聚合工程首先创建maven父工程,直接next下一步,填写父工程名称之后点击next下一步,选择存储的位置,项目名中的 ‘-’ idea会去掉,需要我们手动的加上。点击finish完成项目创建。接下来就是创建子模块:在父工程处右击创建子模块,点击next,可以看到此子模块的父工程就是刚刚创建的foodie-de

2021-02-21 20:42:38 125

原创 【Docker部署前后端分离项目】2、使用docker搭建Mysql主从架构

文章目录1、集群方案的一点介绍2、使用Docker仓库中的PXC的官方镜像3、创建Docker内部网段4、创建Docker卷1、集群方案的一点介绍常见的Mysql集群方案,Replication和PXC。Replication就是主从架构,在Replication集群中,节点分为Master和Slave两种角色,异步复制,无法保证数据一致性。PXC(Percona XtraDB Cluster),在PXC集群中所有节点都是可读可写的,具有强一致性,就是在一个节点写入数据时,会同步到所有节点,否则写入

2020-08-02 20:01:22 205

原创 【Docker部署前后端分离项目】1、docker虚拟机常用命令,管理镜像、容器

文章目录1、centOS安装docker2、docker虚拟机常用管理命令3、常用命令的实操练习3.1 在线安装镜像这是部署项目系列文章的第一篇,首先来学习一下docker的知识,1、centOS安装docker先更新yum软件管理器yum -y update然后再安装dockeryum install -y docker-y代表选择程序安装过程中的yes选项,不用手动的输入yes加回车。2、docker虚拟机常用管理命令命令说明:DockerFile 定义了镜像要安装的程序和配置的

2020-07-27 09:32:56 223

原创 【springboot+security】7、Spring Security 整合 jwt

1、 环境搭建添加security和jwt的依赖,<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency><dependency> <groupId>org.springframework.bo

2020-07-19 16:52:44 360

原创 【springboot+security】6、oauth2,使用password模式实现前后端分离的登录

oauth2认证的流程,

2020-07-17 10:28:30 1900 1

原创 【springboot+security】5、动态配置权限,角色、资源权限存入数据库

在上一小节,我们通过实现UserDetails接口,并通过auth.userDetailsService,实现了把从数据库加载的用户信息导入到security框架中,用户信息包括用户名,用户所拥有的角色。那么这一小节,我们继续完善,把权限配置也存入数据库。创建menu资源表和menu_role资源角色对照表。加上上一小节创建的user表,role表,user_role表共有 5 张表。1、创建menu表和menu_role表CREATE TABLE `menu` ( `id` int(11) NO

2020-07-15 23:53:43 894 1

原创 【springboot+security】4、从数据库读取用户信息进行验证,不再是在配置类配置用户

文章目录1、创建用户表、角色表2、创建实体类 实现UserDetails接口3、创建service 实现UserDetailsService 接口4、Mapper5、配置类,使用auth.userDetailsService6、测试前面几节的用户都是在配置类中auth.inMemoryAuthentication来配置的用户以及角色,现在我们把用户还有角色写入数据库,这个项目结构如下,1、创建用户表、角色表这里有三张表,用户user表,角色role表,以及他们的对应表user_role表,建表sql

2020-07-15 17:05:47 1188 2

原创 【springboot+security】3、登录表单的详细设置,successHandler、failureHandler以及logout

上一节我们再配置类中配置了两个用户an和an2,现在就来设置一下登录成功handler和失败handler,@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean PasswordEncoder passwordEncoder() {// return NoOpPasswordEncoder.getInstance(); // 过期的方案 密码不

2020-07-14 21:00:25 2600 2

原创 【springboot+security】2、HttpSecurity 的配置不同的拦截规则

1、配置不同的拦截规则前一节我们没有对sping security做任何配置,现在我们要对不通的访问路径进行配置不同的拦截规则,那就需要我们配置HttpSecurity。@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean PasswordEncoder passwordEncoder() { return new BCryptPasswordEn

2020-07-14 16:23:10 2500

原创 【springboot+security】1、spring security配置用户名和密码

spring securit引入依赖就保护接口spring security是一个安全管理框架,只要在工程中引入了spring security的依赖,我们的接口就会被保护起来, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifac

2020-07-14 15:36:19 6621 1

原创 【用java实现tcp/ip】4、用java实现ARP协议以及测试

文章目录1、构建ARP协议请求1.1、定义IProtocol接口1.2、创建ARPProtocolLayer,实现IProtocol接口1.3、添加以太帧首部并重写receivePacket方法2、测试1、构建ARP协议请求在前面小节我们知道了ARP协议的请求/应答是28字节的,如下图所示,那么实现ARP协议就是用代码在请求和接收时填充这28个字节,然后在再这28字节基础上添加以太网头部,就可以使用数据链路层的发送数据函数把ARP请求发送出去,下面一步一步做这件事情,1.1、定义IProtocol

2020-06-22 10:03:22 2386 5

原创 【用java实现tcp/ip】3、简单介绍路由以及ARP协议的作用

文章目录1、网络帧2、TCP/IP的封装1、网络帧这里有3台机器通过交换机进行通信。2、TCP/IP的封装当应用程序用TCP传送数据时,要一层一层的增加首部信息,以太网数据帧的的长度必须在46-1500字节之间,由于TCP、UDP、ICMP等都要向IP传送数据,因此IP首部存入一个长度为8bit的数值,称为协议域。1表示ICMP协议…等等。类似的,网络接口分别要发送和接收IP、ARP和RARP数据,因此以太网的帧首部也加入某种标识,以指明生成数据的网络层协议。最简单的协议号和端口号,!

2020-06-22 02:46:44 416

原创 【用java实现tcp/ip】2、使用jpcap模拟数据链路层

OSI参考模型:开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),在TCP/IP协议簇中网络接口层对应于OSI的物理层和数据链路层,网络接口层实际上并不是因特网协议组中的一部分,它与OSI模型中的物理层和数据链路层对应。物理层包含了多种与物理介质相关的协议,这些物理介质用以支撑TCP/IP通信,数据链路层包含了控制物理层的协议,比如如何访问介质。上层协议把数据封装好之后,要经过数据链路层来控制物理层(比如网卡硬件

2020-06-18 12:07:43 450

原创 【用java实现tcp/ip】1、win10下使用jpcap获取网卡硬件

导入就jpcap的jar包,关于资料的下载见文章末尾。package networkCard;import jpcap.JpcapCaptor;import jpcap.NetworkInterface;import jpcap.NetworkInterfaceAddress;import jpcap.PacketReceiver;import jpcap.packet.Packet;import java.io.IOException;public class ProtocolEnt

2020-06-17 16:28:35 550

原创 【spring注解开发】4、spring AOP的简单使用(前置,后置,正常返回,异常返回通知)

AOP:指定程序运行期间将某段代码切入到指定方法指定位置进行运行的编程方式。下面就用一个例子快速入门AOP的使用,我们定义了一个div方法(除法),在div运行之前日志打印一下参数,若没有错误就打印运算结果,有错误就打印错误信息。实现上面的例子要分为三步:将业务逻辑组件和切面类都加入容器中,告诉Spring哪个是切面类(@Aspect)。在切面类上的每个通知方法上标注通知注解,告诉Spring何时何地运行(切入点表达式)开启基于注解的AOP模式1、创建业务类、切面类和配置类,并使用@Aspe

2020-06-16 16:43:44 570

原创 【spring注解开发】3、属性注入与自动装配@Autowired和@Primary和@Qualifier

1、 @Value注入属性在从容器中获取User对象时我们并没有给对象中的属性赋值,在User类中有两个属性,id和name,并且用@Value赋值。@Componentpublic class User{ @Value("1") private Integer id; @Value("李白") private String name; public Integer getId() { return id; } public voi

2020-06-15 23:09:22 166

原创 【spring注解开发】2、Bean的生命周期(创建、初始化及销毁的过程)

由 【spring注解开发】1、快速体验IOC,给容器中注册组件 这一小节,我们已经把Bean的生命周期交由容器管理,我们可以自定义初始化和销毁的方法,当容器管理Bean进行到相应的生命周期的时候就会调用相应的方法。1、两种指定初始化和销毁方法的方式1.1、 @Bean指定的方式在User类中创建init和destroy方法,package com.xx.ioc.model;public class User { public User() { System.out.p

2020-06-12 22:52:01 228

原创 【spring注解开发】1、快速体验IOC,给容器中注册组件

1、使用配置文件的方式注册组件创建maven工程,导入spring-context包 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.6.

2020-06-10 22:33:59 127

原创 【redis教程】17、使用Redis做分布式锁

问题场景多线程中对数据进行读、改、存这三个操作,不是原子操作,会出问题。比如A用户改了一个数据还没有存,B用户就去读取了这个数据。对于这种问题,可以使用分布式锁来限制程序的并发执行。分布式锁分布式锁的思路就和上厕所一样,有人(线程)先占位了,后来者就会放弃或者等待。使用setnx进行占位setnx命令作用是如果不存在就set,可以使用setnx来进行占位。任务执行完成后使用del释放位子。根据上面思路写成java代码如下:import redis.clients.jedis.Jedis;

2020-06-10 02:10:14 243

原创 【数据结构与算法】5、删除二叉树中的某个节点

在上一小节用java实现二分搜索树以及它的三种遍历方式中我介绍的如何构建一个二叉树,这一小节我来继续如何介绍删除二叉树中的节点。

2020-02-26 13:54:07 303

原创 【数据结构与算法】4、用java实现二分搜索树以及它的三种遍历方式

什么是二叉树?每个节点有两个指向其左右子节点的引用,节点组织特点是左边的节点都比右边的节点小。

2020-02-24 12:04:08 279

原创 【数据结构与算法】3、java中的LinkedList以及实现自己的链表

双链表每个节点都有一个指向前一个节点点的“指针”和一个指向后一个节点的"指针",这样就把每个节点联系了起来构成了一个双向链表。一、java中的LinkedList的使用LinkedList是双向链表,既然它继承于AbstractSequentialList,就相当于已经实现了“get(int index)这些接口”。链表的使用还是比较简单的,java中的LinkedList提供了诸多操作链...

2020-02-23 14:57:47 149

原创 【数据结构与算法】2、栈和队列以及在java中的使用

上一小节我介绍了数组这种数据结构,并且二次封装了数组,可以添加元素、删除元素、查看元素等等,这一节我主要介绍栈和队列。栈也是一种线性结构,相比数组来说,栈的操作会少一些,只能从一端添加元素和取出元素,后进先出LIFO,这一端被称为栈顶。一、java中的栈Stack,后进先出在上一小节实现的数组上,如果我可以从数组尾添加元素和数组尾删除元素,那么此时数组就可以当作一个栈来使用了。现在我来介...

2020-02-23 13:31:57 266

原创 【数据结构与算法】1、java中的数组并使用泛型改进数组二次封装

在java中,数组里的元素是同一种类型,内存中存储连续,有下标。一、java中数组的初始化及遍历初始化方式一元素类型[] 数组名 = new 元素类型[元素个数];int[] array = new array[10];初始化方式二元素类型[] 数组名 = new 元素类型[]{元素1,元素2,...}int[] array = new int[]{1,2,3}int[] arr...

2020-02-23 11:34:00 140

原创 【MongoDB】4、mongoDB的索引

索引支持在MongoDB中高效的执行查询,如果没有索引,MongoDB必须执行全集合扫描。

2020-02-21 15:35:26 98

原创 【MongoDB】3、mongoDB文档的查询

查询全部文档db.集合.find()统计查询db.集合.count()limit 查询db.集合.find().limit(3)skip+limit 分页查询db.集合.find().limit(3).skip(0)每页3条数据,第一页是skip(0),第二页是skip(3)排序查询db.集合.find().sort({field:1})1为升序,-1为降序正则查询...

2020-02-21 12:34:09 132

原创 【MongoDB】2、mongoDB数据库连接和集合、文档的基本操作

在上一节 mongodb安装及通过配置文件启动 中我介绍了如何启动数据库,本节将介绍如何使用连接客户端以及集合、文档的基本操作。一、连接数据库

2020-02-20 12:07:21 330

原创 【MongoDB】1、mongodb安装及通过配置文件启动

MongoDB是一个开源、高性能、无模式的文档数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最像关系型数据库(MySQL)的非关系型数据库。文档 是MongoDB的核心概念,多个键及其关联的值有序的放在一起便是文档。集合 就是一组文档。相当于关系型数据库中的表。...

2020-02-19 15:12:18 278

原创 【redis教程】16、搭建redis集群

集群 就是使用网络将若干台计算机联通起来,并提供统一的管理方式,使其对外呈现单机的服务效果。集群的作用:集群(cluster)的搭建这一节我主要记录如何搭建一个redis的集群,集群与哨兵模式不同,哨兵模式是一个master多个slave外加多个哨兵。集群模式是多个master和多个slave。下面我们来搭建redis集群。...

2020-02-19 09:34:21 228

原创 【redis教程】15、使用jedis连接哨兵模式下的redis

在上一节我介绍了如何搭建redis哨兵模式,那么这一节我接着介绍使用jedis来连接操作哨兵模式下的redis。

2020-02-17 11:28:49 2686

原创 【redis教程】14、redis哨兵的构建及工作原理

哨兵(sentinel) 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有slave接连到新的master上。注意:哨兵也是一台服务器,只不过不提供数据服务,通常哨兵配置数量为单数。一、哨兵结构构建哨兵服务器配置sentinel monitor mymaster 127.0.0.1 6379 2mymaster 是自己起的名字,...

2020-02-16 20:11:12 259

原创 【redis教程】13、redis的主从复制

互联网的三高架构(高并发、高性能、高可用)。下面说一下高可用,比如说一年之中服务器宕机了1天,那么高可用就是(365-1)/ 365= 99.73%,注意单位要一致,一般到秒一级。业界可用性目标5个9,即99.999%,服务器年宕机时长低于315秒,约5.25分钟。单机redis的风险与问题机器故障,数据丢失容量瓶颈,内存不足为了避免单机redis服务器故障,准备多台机器,同步保存多个...

2020-02-16 10:32:40 246

原创 【redis教程】12、redis中过期数据的删除策略

redis是一种内存级的数据,所有数据均放在内存中,内存中的数据可以通过ttl指令获取其状态,xx:具有时效性的数据-1:永久有效的数据-2:已经过期的数据 或 被删除的数据 或 未定义的数据对于过期的数据要redis根据会删除策略进行删除。删除策略有:定时删除惰性删除定期删除一、定时删除...

2020-02-14 17:53:00 287

原创 【redis教程】11、redis的事务、锁

redis事务 就是一个命令执行的队列,将一系列预定义的命令包装成一个整体(一个队列)。当执行时,一次性按照添加顺序一次执行,中间不会被打断或者干扰。...

2020-02-14 11:33:26 227

原创 【redis教程】10、redis的两种数据持久化方式之AOF

在上一小节 redis的两种数据持久化方式之RDB 中我介绍了RDB这种持久化方式,这一节我来介绍redis持久化的另一种方式------AOF。AOF是以独立日志的方式记录每次写的命令,重启时再重新执行AOF文件中命令达到恢复数据的目的。AOF主要解决了数据持久化的实时性,目前已经时redis的主流方式。一、AOF持久化数据的三种策略(appendfsync)always(每次)每个操...

2020-02-13 20:25:58 349 1

原创 【redis教程】9、redis的两种数据持久化方式之RDB

一、关于持久化持久化,利用永久性存储介质将数据进行保存,在特定的时间将保存的数据据进行恢复的工作机制成为持久化,持久化的目的是防止数据的意外丢失,确保数据安全性。...

2020-02-12 19:35:20 268

原创 【redis教程】8、linux下安装、配置redis

一、下载redis安装包下载redis安装包:可去官网下载,也可通过我提供的链接下载。网盘链接:redis4.0.14,提取码:05as通过ftp工具上传到服务器中。二、安装redis解压redis安装包进入安装包所在目录,使用tar -xvf解压:解压之后多出redis-4.0.14目录,安装redis进入redis-4.0.14目录,运行make install,这个过程...

2020-02-12 12:09:59 240

64位dll文件Jpcap.dll

使用java获取网卡所需的dll文件

2020-06-17

jpcap.jar,使用java获取网卡所需的jar包

jpcap.jar,使用java获取网卡所需的jar包

2020-06-17

空空如也

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

TA关注的人

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