自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单例模式 (3)

CAS实现单例模式public class Singleton {private static final AtomicReference<Singleton> INSTANCE = new AtomicReference<Singleton>();private Singleton() {}public static Singleton getInstance() { for (;;) { Singleton singleton = I

2020-09-12 23:45:11 155

原创 Java正则表达式示例

正则表达式(Regular Expression)是用于描述一组字符串特征的模式,用来匹配特定的字符串。通过特殊字符+普通字符来进行模式描述,从而达到文本匹配目的工具。public class Demo { @Test public void test01() { // 匹配十一位数字 String regex = "\\d{11}"; ...

2020-05-08 14:56:31 234

原创 Java泛型详解

面试中问到了泛型,具体涉及到泛型擦除、泛型上下限等,故此篇将介绍泛型的相关内容泛型泛型的本质是参数化类型,泛型提供了编译时类型的安全检测机制,该机制允许程序在编译时检测非法的类型,比如要实现一个能够对字符串 (String). 整形(Int)、浮点型(Float)、对象(Object)进行大小比较的方法,就可以使用Java泛型。在不使用泛型的情况下,我们可以通过引用Object 类型来实...

2020-04-27 00:47:55 244

原创 Java反射机制及其常用方法

最近的面试中也常被问到反射以及反射的延伸应用,故此篇用来回顾反射的机制以及常用方法反射机制的概念反射机制指在程序运行过程中,对任意一个类都能获取其所有属性和方法,并且对任意一个对象都能调用其任意一个方法。这种动态获取类和对象的信息,以及动态调用对象的方法的功能被称为Java语言的反射机制。反射的应用Java中的对象有两种类型:编译时类型和运行时类型。编译时类型指在声明对象时所采用的类型...

2020-04-27 00:18:15 399

原创 数据结构和算法(39)之迷宫问题

学习数据结构和算法的日常Demo说明:小球得到的路径,和程序员设置的找路策略有关即:找路的上下左右的顺序相关再得到小球路径时,可以先使用(下右上左),再改成(上右下左),看看路径是不是有变化代码实现public class MiGong { static int count = 0; public static void main(String args[]) ...

2020-04-26 23:30:41 281

原创 数据结构和算法(38)之八皇后问题

学习数据结构和算法的日常Demo八皇后问题介绍八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯.贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、同一列或同一斜线上,问共有多少种摆法。思路分析第一个皇后先放第一行第-列第二个皇后放在第二行第一 列、然后判断是否OK, 如果不OK,继续...

2020-04-26 23:16:27 276

原创 synchronized:从偏向锁到重量级锁

synchronized是面试的热点问题,也是实际开发中常用的关键字,本文将详细介绍synchronized锁升级、锁优化的历程从锁对象开始锁实际上是加在对象上的,那么被加了锁的对象我们称之为锁对象,在java中,任何一个对象都能成为锁对象。java对象在内存中的存储结构主要有一下三个部分:对象头实例数据填充数据对象头里的数据主要是一些运行时的数据,其简单结构如下:从该表...

2020-04-26 22:50:39 248

原创 设计模式前言之"六原则一法则"

学习设计模式的日常Demo单一职责原则: 一个类只做它该做的事情。(单一职责原则想表达的就是"高内聚",写代码最终极的原则只有六个字"高内聚、低耦合",所谓的高内聚就是一个代码模块只完成一项功能,在面向对象中,如果只让一个类完成它该做的事,而不涉及与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。另一个是模块化,好的自行车是组装车,从减震叉、刹车到变速器,所有的部件都是可以拆卸和...

2020-04-26 17:48:39 116

原创 Mybatis实现批量插入、批量更新、批量删除

最近的权限管理系统需要进行持久层的批量操作,做一个记录批量插入dao层Integer save(@Param("roleId") Long id, @Param("permissionIds") List<Long> permissionIds)mapper.xml:<!--同一个roleId会有多个对应的permissionId--><insert...

2020-04-26 17:37:26 297

原创 Spring事务之@Transactional

SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。事务的实现方式编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。声明式事务管理: 建立在...

2020-04-25 14:09:08 165

原创 FastDFS在分布式项目中的应用

最近面试中经常介绍该项目模块,此博文将对FastDFS进行详细介绍以及具体使用首先了解什么是分布式文件系统分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地 节点上,而是通过计算机网络与节点相连。通俗来讲:传统文件系统管理的文件就存储在本机。分布式文件系统管理的文件存储在很多机器,这些机器通过网络连接,要被统一管理。无...

2020-04-25 13:33:11 482

原创 SpringBoot权限管理系统(2)用户列表分页查询

一个普通的SpringBoot权限管理系统谨以此博,献给我的boy—LySongLySong个人博客传送门分页实现思路layui中点击分页查询时,回向后端请求url中默认添加两个参数:page(页码),limit(每页数据量),我们利用page和limit计算出offset(索引偏移位置)来实现分页。即:select * from sys_user t order by t.id l...

2020-04-25 01:34:07 831 1

原创 SpringBoot权限管理系统(1)初识RABC

一个普通的SpringBoot权限管理系统权限管理系统定义权限管理是一个几乎所有后台系统的都会涉及的一个重要组成部分,主要目的是对整个后台管理系统进行权限的控制,而针对的对象是员工,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,数据泄露等问题。何为RABC(Role-Based Access Control)权限管理最终是为了风控, 即哪个部门哪个用户具有哪个权限。基于R...

2020-04-25 01:09:23 958

原创 SpringCloud-Alibaba之Sentinel(3)服务熔断

学习SpringCloud的日常Democloudalibaba-provider-payment9003模块构建目录结构POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www...

2020-04-22 17:55:09 123

原创 SpringCloud-Alibaba之Sentinel(2)服务降级

学习SpringCloud的日常Demo降级规则Sentinel熔断降级会在调用链路中某个资源出现不稳定状态时(例如调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。当资源被降级后,在接下来的降级时间窗口之内,对该资源的调用都自动熔断(默认行为是抛出DegradeException)。RT响应时间要是超过200毫秒,就会...

2020-04-22 15:16:47 699

原创 SpringCloud-Alibaba之Sentinel(1)流控

学习SpringCloud的日常DemoSentinel基本介绍Sentinel: 分布式系统的流量哨兵Sentinel 具有以下特征:丰富的应用场景: Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。完备的实时监控:Sentinel 同时提供实时...

2020-04-21 23:07:25 295

原创 SpringCloud-Alibaba之Nacos服务配置中心

学习SpringCloud的日常Democloudalibaba-config-nacos-client3377模块构建目录结构POM<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://...

2020-04-20 19:24:44 212

原创 SpringCloud-Alibaba之Nacos服务注册中心

学习SpringCloud的日常DemoSpringcloud-Alibaba组件基本介绍Springcloud-Alibaba官网服务限流降级: 默认支持Servlet. Feign. RestTemplate、 Dubbo 和RocketMQ限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级Metrics监控。服务注册与发现: 适配Spring C...

2020-04-20 18:43:41 209

原创 SpringCloud之Gateway

学习SpringCloud的日常Demo什么是Gateway网关?Gateway是在Spring生态系统之上构建的API网关服务,基于Spring 5,Spring Boot 2和Project Reactor等技术。Gateway旨在提供一 种简单而有效的方式来对API进行路由,以吸提供- 些强大的过滤器功能, 例如:熔断、限流、重试等SpringCloud Gatewa...

2020-04-19 23:13:01 223

原创 SpringCloud之Hystrix

学习SpringCloud的日常DemoHystrix是什么?Hystrix是一个用于处理分布式系统的延迟和容错的开源库, 在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式系统的弹性。“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险...

2020-04-18 18:56:35 128

原创 CAS的ABA问题及其解决

何为CAS的ABA问题?一个线程T1从内存位置V中取出A,这时候另一个线程T2也从内存中取出A,并且T2进行了一些操作变成了B,然后two又将V位置的数据变成A,这时候线程T1进行CAS操作发现内存中仍然是A,然后T1操作成功。尽管线程T1的CAS操作成功,但是不代表这个过程就是没有问题的。ABA问题的根本在于cas在修改变量的时候,无法记录变量的状态,比如修改的次数,是否修改过这个变量。...

2020-04-15 17:36:12 484

原创 SpringCloud之OpenFeign

学习SpringCloud的日常Demo什么是Feign?Feign 是一个声明式 WebService 客户端。使用 Feign 能让编写Web Service 客户端更加简单。Feign 旨在使编写Java Http 客户端变得更容易。前面在使用 Ribbon+RestTemplate时,利用RestTemplate 对http请求的封装处理,形成了一套模板化的调用方法。但是在实际...

2020-04-14 18:43:52 155

原创 SpringCloud之指定与自实现Ribbon负载均衡算法

学习SpringCloud的日常DemoRibbon 是什么?Spring Cloud Ribbon 是基于Netflix Ribbon 实现的一套客户端 负载均衡的工具。Ribbon 是 Netflix 发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用。Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出 Load Balan...

2020-04-13 19:31:07 347

原创 数据结构和算法(37)之骑士周游算法

学习数据结构和算法的日常Demo骑士周游算法介绍算法分析代码实现public class HorseChessBoard { private static int X = 8; // 棋盘的列数(左右) private static int Y = 8; // 行数(上下) // 创建数组,标记棋盘的各个位置是否被访问过 private...

2020-04-09 16:10:32 598

原创 数据结构和算法(36)之弗洛伊德算法

学习数据结构和算法的日常Demo弗洛伊德算法介绍弗洛伊德算法分析以A顶点作为中间顶点是,B->A->C的距离由N->9,同理C到B;C->A->G的距离由N->12,同理G到C更换中间顶点,循环执行操作,直到所有顶点都作为中间顶点更新后,计算结束代码实现public class FloydAlgorithm { privat...

2020-04-09 16:00:30 1265 1

原创 数据结构和算法(35)之克鲁斯卡尔算法

学习数据结构和算法的日常Demo克鲁斯卡尔算法介绍克鲁斯卡尔算法实例问题图解在含有n个顶点的连通图中选择n-1条边,构成一棵极小连通子图,并使该连通子图中n-1条边上权值之和达到最小,则称其为连通网的最小生成树。第1步:将边<E,F>加入R中。 边<E,F>的权值最小,因此将它加入到最小生成树结果R中。第2步:将边<C,D>加入R...

2020-04-07 16:26:28 349

原创 数据结构和算法(34)之普利姆算法

学习数据结构和算法的日常Demo最小生成树介绍普利姆算法介绍普利姆算法应用场景思路分析public class PrimAlgorithm { public static void main(String args[]) { String s = "ABCDEFG"; char[] chars = s.toCharArray(); ...

2020-04-04 15:29:18 281

原创 数据结构和算法(33)之贪心算法

学习数据结构和算法的日常Demo贪心算法基本介绍贪心算法应用场景思路分析public class GreedAlgorithm { public static void main(String args[]) { // 创建电台集合,放入一个Map HashMap<String, HashSet<String>> b...

2020-04-04 15:20:45 166

原创 Java8新特性之Stream的使用

流(Stream)的基本介绍Stream的操作步骤创建Stream一个数据源(如:集合、数组),获取一个流中间操作一个中间操作链,对数据源的数据进行处理终止操作(终端操作)一个终止操作,执行中间操作链,并产生结果创建Streampublic class Demo01 { List<Person> people = Arrays.asList( ...

2020-04-03 23:32:38 345

原创 数据结构和算法(32)之背包问题

学习数据结构和算法的日常Demo背包问题动态规划算法介绍思路分析解决类似的问题可以分解成一个个的小问题进行解决,假设存在背包容量大小分为1,2,3,4的各种容量的背包(分配容量的规则为最小重量的整数倍):对于第一行(i=1), 目前只有吉他可以选择,所以对于第二行(i=2),目前存在吉他和音响可以选择,所以对于第三行(i=3),目前存在吉他和音响、电脑可以选择,所以...

2020-04-02 18:05:15 256

原创 数据结构和算法(31)之分治思想解决汉诺塔问题

学习数据结构和算法的日常Demo分治算法基本思想汉诺塔问题思路分析public class 汉诺塔 { private static int count = 0; // 记录移动次数 public static void main(String args[]) { hanoTower(3, 'A', 'B', 'C'); } ...

2020-04-02 17:55:10 210

原创 数据结构和算法(28)之多路查找树

学习数据结构和算法的日常Demo二叉树的问题分析多叉树之2-3树构建图解B树、B+树、B*树B树介绍B+树介绍B*树介绍扩展:MySQL索引为什么更适合B+树?B+树更适合外部存储,也就是磁盘存储,由于内节点无data域,每个节点能索引的位置更大更精确B+树相邻节点的指针可以大大增加区间访问性,可使用在范围查询等,而B-树每个节点key和data在一起...

2020-03-30 19:49:26 138

原创 数据结构和算法(30)之图的深度与广度优先遍历

学习数据结构和算法的日常Demo图的深度优先遍历对下图进行深度优先遍历步骤分析public class Graph { private ArrayList<String> vertexs; // 存储图顶点集合 private int vertexSize; // 顶点个数 private int[][] edges...

2020-03-30 19:09:39 330

原创 数据结构和算法(29)之图

学习数据结构和算法的日常Demo图的基本介绍图的常用概念图的表示方法代码实现如下图结构(邻接矩阵法)import java.util.ArrayList;import java.util.LinkedList;public class Graph { private ArrayList<String> vertexs; // 存储图顶点集合...

2020-03-30 18:58:39 88

原创 数据结构和算法(27)之AVL树

学习数据结构和算法的日常Demo二叉排序树存在的问题AVL树基本介绍左旋转(右子树高度 - 左子树高度 > 1)代码实现public class AVLNode { int value; AVLNode left; AVLNode right; public AVLNode(int value) { this.value ...

2020-03-29 21:47:11 103

原创 数据结构和算法(26)之二叉排序树

学习数据结构和算法的日常Demo二叉排序树基本介绍:二叉排序树的创建和遍历public class TreeNode { int value; TreeNode left; TreeNode right; public TreeNode(int value) { this.value = value; } public...

2020-03-28 20:55:26 132

原创 数据结构和算法(25)之使用赫夫曼编码压缩与解压缩文件

学习数据结构和算法的日常Demo文件压缩实例代码实现public class HuffmanCode { public static void main(String[] args) { // 测试压缩文件// String srcFile = "E:\\代码仓库\\Java_DataStructure\\数据结构与算法\\1.txt";/...

2020-03-27 20:38:41 241

原创 数据结构和算法(24)之赫夫曼编码

学习数据结构和算法的日常Demo赫夫曼编码基本介绍实例剖析使用ASCII码表对应使用赫夫曼编码对应构建赫夫曼编码具体步骤注意事项赫夫曼编码案例代码实现// Node需要排序public class CodeNode implements Comparable<CodeNode> { Character data; // 存放数据 ...

2020-03-27 20:32:38 125

原创 数据结构和算法(23)之构建赫夫曼树

学习数据结构和算法的日常Demo赫夫曼树基本介绍赫夫曼树中的重要概念赫夫曼树构建步骤图解代码实现// Node需要排序public class HuffmanNode implements Comparable<HuffmanNode> { int value; // 权值 HuffmanNode left; ...

2020-03-26 19:26:39 122

原创 数据结构和算法(22)之线索二叉树

学习数据结构和算法的日常Demo二叉树遍历存在的问题线索二叉树基本介绍中序线索二叉树思路分析代码实现public class TreeNode { private int value; private TreeNode left; private TreeNode right; // 如果leftType为0,表示指向左子树,如果为1表示指向前驱...

2020-03-26 18:27:42 118

空空如也

空空如也

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

TA关注的人

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