自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Token实现单点登陆

单点登陆(Single Sign On)在分布式的微服务架构中,存在多台服务器,在某一台服务器进行登陆后,多台服务器可同时检测到登陆状态三种方式①Session广播机制实质为session的复制②cookie+redis实现将登陆后的数据放置到redis中,将其key存储到cookie中③使用token是实现(令牌机制)Token按照一定的规则生成字符串,可包含用户信息:JWT头信息+有效载荷(主体部分)+签名哈希(防伪标志)将生成的字符串返回给客户端,每次访问可携带token借助t

2020-10-12 13:30:50 3149 1

原创 Swagger的简单使用

简介在如今前后端分离的趋势下,接口成为了前后端进行交互的方式,因而需要编写开发文档来进行交流而且,对于后端人员的开发测试也是一件比较痛苦的事这时就可使用到swagger来辅助开发依赖<!--swagger--><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

2020-10-12 12:51:36 224

原创 EasyExcel的简单使用

简介读取execl文件中的内容添加数据,阿里巴巴提供的一个处理excel的工具读取方式:一行一行读取加载到内存中,保证效率excel写①引入依赖(注意版本对应)<!--easyexcel依赖,实现exel文件的加载--><dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version&g

2020-10-12 12:31:39 1106

原创 JUC基本知识

一、Lock接口1)、多线程涉及到的基本概念资源类、操作、线程、高内聚、低耦合2)、使用①实现类ReentrantLock(可重入锁)②基本方法lock() 上锁、unlock() 解锁二、线程间通信1)、经典问题生产者&&消费者Ps:注意多线程之间的虚假唤醒解决:对于wait()方法使用循环判断2)、使用synchronized对应方法:wait()、notify()3)、使用lockawait()、signal()Ps:让当前线程睡眠:TimeUnit

2020-08-10 10:34:51 574

原创 Neginx服务搭建

编译安装1)、需要的tar.gz包①pcre②penssl③zlib④nginx2)、具体步骤①解压缩pcretar -zxvf pcre-8.44.tar.gz②进入解压缩目录,执行./configure(实际还需配置)Ps:此步需提前安装gcc g++,可使用gcc -v来查看是否安装③编译并安装make&&make install④完成后,继续安装openssl⑤进入解压目录,执行./config,编译并安装 make && make in

2020-08-02 10:28:36 213

原创 分布式相应概念

分布式1)、概念分布式系统是若干台独立计算机的集合,是建立在网络上的特点2)、分布式与集群集群:将几台服务器集中在一起,实现同一业务(水平拆分)分布式:不同服务器可提供不同的功能,每一个节点都可以作为集群(防止宕机,减少压力),系统与系统间的调用3)、难题高可用、稳定、安全解决:集群、分库、分表、主从复制(读写分离)4)、架构演变ORM——MVC——RPC——SOA①单一应用架构网站流量小,所有功能部署在一起,ROM最为关键②垂直应用架构访问量逐渐增大,将应用拆分为不同的系统

2020-07-14 09:51:14 520

原创 Redis主从复制及集群

主从复制1)、定义主机数据更新数据后更具配置和策略,自动同步到备机的master/slave机制读写分离,性能扩展;容灾快速恢复2)、特点①Master以写为主(也可读),Slave以读为主(不能写)②中途设置关系,从服务器还是会复制主服务器所有数据3)、配置(配从不配主,以一台机器为例)①建立一个redis.conf,通过include引入原redis.conf文件include redis.conf路径②pid文件名pidfile /var/run/redis6379.conf③

2020-07-12 10:19:22 152

原创 JVM内存及GC回收

JVM体系结构概述1)、简述JVM——操作系统——硬件体系PS:安卓(jvm+linux内核)Classfile——类装载子系统(入口)——运行时数据区——执行引擎(出口)——本地方法接口——本地方法库2)、三种JVM(java规范)①Sun公司的HotSpot(被Oracle收购)②BEA公司的JRockit(被Oracle收购)③IBM公司的J9 VM运行时数据区1)、方法区是堆的一个逻辑部分,但其还有个别名(Non-Heap)所有线程共享存储已经被虚拟机加载的类信息、常量、

2020-07-11 16:03:41 371

原创 Maven核心概念及Eclipse使用Maven

Eclipse使用Maven1)、添加Maven2)、修改本地库3)、建立Maven项目4)、文件结构核心概念1)、POM(核心配置)版本、坐标(项目名、模块名、版本号)、依赖pom.xml实例:······2)、约定的目录结构src/main/java:java文件src/main/resources:配置文件src/test/java:测试代码src/test/resources:测试的配置文件target:临时文件:编译后的文件,jar包Tips:约定 &gt

2020-07-10 19:49:03 144

原创 Maven简述及安装

简述1)、作用①管理第三方jar包建立本地仓库、去除大量重复文件②jar包之间的依赖关系③处理jar包之间的冲突(依赖传递时,依赖了不同版本的包)最短路径者优先、先声明者优先④获取第三方依赖包(从中央仓库下载)⑤将一个项目拆分为多个模块Web模块、组件模块、公共模块、环境模块(管理jar包)⑥实现项目的分布式部署每个模块运行在独立的模块上2)、自动构建工具①项目构建编译:java——>class部署:程序——>服务器运行:启动服务器,访问上下文路径(项目)构建

2020-07-10 19:11:39 137

原创 Redis事务及持久化

Redis事务1)、定义Redis事务,是一个单独的隔离操作,事务中所有命令都会序列化、按顺寻的执行。事务在执行的过程中,不会被其他客户端发送过来的命令请求所打断。作用:串联多个命令防止插队2)、指令①Multi输入的命令进入命令队列,不执行组队过程中出报告错误,整个队列都会取消②Exec将队列中的命令依次执行执行过程中出报告错误,报错部分不会执行,其它部分无影响③discard组队过程可通过discard来放弃组队3)、事务冲突①传统的关系型数据库:悲观锁(每次请求都对数据加

2020-07-10 09:01:34 205

原创 Git远端库(GitHub)及Git流

远端库(GitHub)1)、链接步骤①新建本地库②新建远程库③链接git remote -v 可以查看传输地址git remote add 别名 地址(URL)④推送git push 别名 分支名2)、团队协作①新用户克隆:进入一个新目录,git clone 网页上给出的克隆地址(会克隆相关目录和初始化本地库)【项目名】②建立团队时,需库持有者邀请其他人git账号③库持有者拉取数据git fetch 别名 分支,此时拉取的数据存储在 别名/分支名 的新分支下,需使用mer

2020-07-09 15:49:26 122

原创 Redis(数据类型及操作指令、Java连接Redis)

数据类型1)、五大数据类型key+①string②set③list④hash⑤zsettips:只能存储字符串2)、String①最基本类型二进制安全意味着可以包含任何数据,如jpg图片或序列化的对象value最大为512M②指令:指令功能append key value追加字符串strlen key获取长度setnx key valuekey不存在时,设置key对应的valueincr key将key中存储的数字值增一(不为数字类型

2020-07-09 09:38:15 94

原创 Redis简介及配置文件介绍

简介介绍①开源的key-value存储系统,操作都是原子性的,支持不同方式的排序②Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,在此基础上实现了master-slave(主从复制)③默认windows不支持,有window团队将linux文件修改为window可安装版本应用①配合关系型数据库做高速缓存②利用多样的数据结构存储特定的数据最新数据(List)、排行榜(zset)、时效性数据(验证码,Expire)、计数器(原子性)、去除重复数据(Set)、构建队列(

2020-07-05 16:24:34 114

原创 NOSQL简介

NOSQLNot Only SQL,非关系型数据库不依赖业务逻辑方式存储,以 简单的key-value模式存储不遵循SQL标准不支持ACID远超于SQL的性能常用的nosql数据库Memcached数据都在内存中,一般不持久化支持简单的key-value模式一般作为缓存数据库辅助持久化的数据库Redis数据都在内存中,支持持久化,主要用作备份恢复除了key-value,还支持多种数据结构(list、set、hash、zset)一般作为缓存数据库辅助持久化的数据库mon

2020-07-05 16:09:51 140

原创 Linux(Centos7)下安装Redis(redis-5.0.8)

下载Redis安装包官网:https://redis.io/如果不想下载最新版本,可以点击该处选择以往版本Ps:我下载的为5.0.8使用xFtp来将文件传输到Linux下的/opt使用xShell安装(也可直接在虚拟机操作)解压tar.gz文件进入到/opt:cd/opt解压:tar -zxvf进入解压后的目录:cd redis-5.0.8编译源码当前目录下执行:make此处有可能会报错,因为编译要使用到编译包,提供两种方式下载①直接使用yum安装yum install

2020-07-04 10:24:05 1084

原创 SSM整合(配置文件)

Web.XML<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/ja

2020-07-03 18:56:09 111

原创 SSM整合(相关jar包需求)

spring:核心包(core、expression、context、bean)Aspect(cglib、aopalliance、aspectj)日志(commons-logging)aop(aop、aspects)jdbc(jdbc、orm)事务(tx)springmvcwebwebmvcmybatismybatis-springmysql-connectormybatisdruid(德鲁伊数据源)jstl(四个包、两两一对)taglibs-standard-impl、ta

2020-07-03 18:45:59 151

原创 最近点对问题(分治法)

问题描述给定平面S上n个点,找其中的一对点,使得在n个点组成的所有点对中,该点对间的距离最小蛮力法求解点的存储:class Point{ //横坐标 int x; //纵坐标 int y; /** * 求解两个坐标之间的距离 * @return */ public static double distance(Point ri, Poi...

2020-04-23 16:46:56 12173 2

原创 Java类初始化及实例化过程

类的初始化过程1)、具体操作①静态成员变量的显式赋值代码②执行静态代码块2)、实质编译器将这两部分代码在.class字节码文件中合为一个名<clinit>()的初始化方法3)、执行顺序在实例化方法执行之前,只执行一次:①和②与其所定义的顺序有关实例化过程1)、具体操作①成员变量显式赋值(有可能涉及到方法(重载问题))②执行非静态代码块③执行构造器2)、实质...

2020-04-22 10:32:48 446

原创 棋盘覆盖问题(分治法)

问题描述有一个2k×2k(k>0)的棋盘,恰好有一个方格与其他方格不同,称之为特殊方格,并且称该棋盘为一特殊棋盘。现在要用4种不同形状的三格骨牌覆盖除了特殊方格外的其他全部方格,并且任何两个三格骨牌不能重叠。请给出一种覆盖方案特殊棋盘(k=3时)四种形状的三格骨牌求解过程①使用二分法对整个棋盘进行划分(分为四个象限)②对特殊方格所不在的象限中心进行填充③对每个象限再次...

2020-04-18 16:33:22 8748 2

原创 Hibernate框架 五种查询方式

OID查询Hibernate根据对象OID(主键)进行检索①get()②load()对象导航检索Hibernate根据一个已经查询到的对象,获得其关联的对象的一种查询方式HQL检索(不支持 *代替所有列)Hibernate Query Language:一种面向对象的方式的查询语言,语法类似SQL,通过session.createQuery(hql语句)①简单查询from 类...

2020-04-17 16:49:42 399

原创 算法及时间/空间复杂度的分析

算法(Algorithm)对特定问题求解步骤的一种描述,是为解决一个或一类问题给出的一个确定的、有限长的操作序列算法的基本特征①输入:有零个或多个输入②输出:有一个或多个输出③有穷性:在执行有穷步之后结束,且每一步都在有穷时间内完成④确定性:算法中的每一条指令必须有确切的含义,对于相同的输入只能得到相同的输出⑥可行性:算法描述的操作可以通过已经实现的基本操作执行有限次完成有效算法五...

2020-04-17 16:40:01 2228

原创 Hibernate框架 一对多,多对多映射

建表原则多对多:创建一个中间表,中间表至少有两个字段分别作为外键指向多对多双方的主键一对一:唯一外键(Unique约束)对应、主键对应(某个表的主键作为另一个表的主键)一对多:多的一方创建外键指向一的一方例,老师与学生(一对多):存储结构存储多的一方,Hibernate默认使用Set集合配置①一对多(在一的一方存在外键与多的一方联系),在mapping中:配置一,<ma...

2020-04-16 20:49:10 179

原创 归并排序(二路、递归)

归并排序排序策略将两个有序表归并为一个新的有序表排序过程i与j分别是两个有序表的所索引①当i和j 都在两个表的表长内变化时, 根据对应项的排序码的大小, 依次把排序码小的对象排放到新表 k 所指位置中②当 i与 j中有一个已经超出表长时,将另一 个表中的剩余部分照抄到新表中如图:需要进行归并的两个表:归并的新表:实现代码origen[]和result[]作为私有属性...

2020-04-16 17:01:42 2894

原创 选择排序(直接选择、堆)

简单选择排序排序策略在待排序的数据中选择最小值排序过程以集合{76,38,85,97,76,13,27,49}中数据为例,执行排序①第一趟,在 0~n 找出最小的数②第二趟,在 1~n 找出最小的数…共执行n-1趟,则直至排序完成实现代码/** * 简单选择排序 * @param list 需要排序的行列 * @return 排序的结果 */ public...

2020-04-14 17:04:06 152

原创 Hibernate框架(持久化类、缓存、事务管理)

持久化类java类与数据库的表建立了映射关系,该类被称为持久化类1)、编写规则①无参构造,使得Hibernate可通过反射建立对象②私有属性,get/set方法③持久化类提供一个唯一标识OID与数据库主键对应④持久化类属性尽量使用包装类(基本数据类型,默认值为0,有些歧义)⑤持久化类不要使用final修饰(延迟加载需要继承产生代理类,而final修饰的类不能继承,即延迟加载失效)2...

2020-04-14 09:37:07 191

原创 交换排序(冒泡、快速)

冒泡排序排序策略相邻的两个元素的关键字进行比较,小的元素向上冒,大的元素向下沉排序过程以集合{49, 38, 65, 97, 76, 13, 27, 49}中数据为例,执行一趟冒泡排序①比较49、38(执行交换)②比较49、65③比较65、97④比较97、76(执行交换)⑤比较97、13(执行交换)⑥比较97、27(执行交换)⑦比较97、49(执行交换)可以发...

2020-04-13 22:41:40 367

原创 Hibernate框架 配置文件基本架构

核心配置文件命名hibernate.cfg.xml,直接位于src下XML方式根元素:<hibernate-configuration>①基本结构<session-factory> <!--基本信息配置--> <property name="key">value</property> <!--映射文件引入--&gt...

2020-04-13 10:18:41 132

原创 插入排序(直接插入 、希尔)

选择排序排序策略在有序表的恰当处插入一个新元素,并保持该有序表的有序性即,当插入第n个元素时,前n-1个元素已经是有序排列排序过程以集合{49, 38, 65, 97, 76, 13, 27, 49}中数据为例①初始存储②第一趟(插入38)③第二趟(插入65)③第三趟(插入97)④第四趟(插入76)⑤第五趟(插入13)⑥第六趟(插入27)⑦第七趟(插入49)...

2020-04-12 12:33:31 470

原创 Hibernate框架 简述

Hibernate全自动全映射ORM框架,旨在消除sql,是一个持久层的ORM框架1)、基础概念DAO(Data Accessor Object):实现数据访问和业务逻辑分离POIO(Plain Ordinary Java Object):不包含业务逻辑代码的值对象PO:Persistent ObjectVO:Value ObjectDTO:Data Transfer Object...

2020-04-12 09:32:06 399

原创 Hash(散列)建表及查找

散列方法不用比较就能直接计算出记录的存储地址,从而找到所要的结点Hash表1)、定义根据设定的散列函数和相应解决冲突的方法为一组结点建立的一张表,表中的结点的存储位置依赖于设定的散列函数和处理冲突的方法如图:2)、基本思想设计1个hash函数,计算hash函数,其函数值恰好是key在Hash表中的地址即,locate(key)= hash(key)3)、冲突若对于不同的键值k...

2020-04-11 16:44:36 771

原创 SpringMVC 视图解析器及拦截器

视图解析器跳转方式(设置返回值字符串内容)①默认请求转发forward:资源路径,forward可省略②重定向redirect:资源路径自定义视图解析器SpringMVC会提供默认的视图解析器:可使用<bean>加载org.springframework.web.servlet.view.InternalResourceViewResolver来自定义视图解析器,...

2020-04-11 09:56:55 870

原创 JVM类加载机制

类加载过程JVM把class 文件加载到内存,并对数据进行校验、解析和初始化。加载—>链接(验证、准备、解析)—>初始化—>使用—>卸载类的存储机制加载将class文件字节码加载到内存中,并将这些静态数据转换成方法区中的运行时的数据结构。在堆中生成一个代表这个类的java.long.class对象,作为访问入口。链接验证:确保加载的类信息符合JVM规范准...

2020-04-10 22:57:15 102

原创 SpringMVC 文件上传及下载

文件下载inline访问资源时如果没有设置响应头Content-Disposition,浏览器默认按照inline进行处理inline:能显示就显示,不能显示就下载响应头只需修改响应头Content-Disposition=“attachment;filename=文件名”attachment表示下载,以附件形式下载filename表示下载时,下载的文件名实现步骤①jsp中添加超...

2020-04-10 22:12:39 179

原创 SpringMVC 使用注解时控制器传参

自动注入默认方法的参数名和网页的属性名相同,会自动注入(自动转换类型)Tips:若方法的参数名和网页的属性名并不相同,可使用注解@RequestParam(value=“网页的属性名”),其他属性:defaultValue:给参数赋默认值required=true:使得必须传参,若没有则报异常(500)Ps:当required和deafultValue一起使用时,required恒不成...

2020-04-09 16:06:09 497

原创 SpringMVC 配置文件实现(Tomcat)

WebContent/WEB-INF/web.xml配置文件配置DispatcherServlet(核心控制器)①先在web.xml中配置前端控制器org.springframework.web.servlet.DispatcherServlet②该类成功加载后会创建自己的容器(SpringMVC容器)ConfigurableApplicationContext③由于web.xml中设置的...

2020-04-08 23:34:42 659

原创 SpringMVC 运行原理及主要组件

运行原理图组件介绍①DispatcherServlet(前端/核心控制器)整个流程控制的核心,调用其他组件处理用户的请求,降低了组件之间的耦合性MVC模式:一个WEB应用中,只有唯一的一个控制器和客户端交互,所有的客户端和服务器单点接触,这个控制器称为核心控制器(前端控制器)。传统定义中,核心控制器使用Servlet实现。MVC优势:单点接触,有效的解耦,实现功能的重用。②Hand...

2020-04-08 10:04:21 233

原创 静态表的查找

顺序查找算法思想从表的一端开始,用给定的值value与表中各个结点的关键字进行比较:若查找成功,输出相等值的下标若查找失败,即表中所有结点的关键字值都不等于value监视哨由于在遍历的时候,每次都需判断越界,这会花费一些时间。此时,设置一个监视哨来降低时间花销实现:给表头(索引为0)赋予要查找的值value,且遍历从表尾开始,使得每次校对数据时,都不用判断越界。因为无论如何,都能匹配...

2020-04-06 21:54:02 359

原创 图的所有顶点间的最短路径(Floyd算法)

问题描述对每一对顶点vi ≠ vj,求出vi与vj之间的最短路径和最短路径长度Floyd算法Floyd(Floyd-Warshall)算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,该算法名称以创始人之一罗伯特·弗洛伊德命名。Floyd-Warshall算法是动态规划的一个例子,即该算法中的前面的运算都会给予后面结果一些影响,下一步得出的结果可能会依赖...

2020-04-05 22:38:22 4300 2

空空如也

空空如也

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

TA关注的人

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