自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微光的博客

javaEE/php/AI

  • 博客(68)
  • 资源 (3)
  • 收藏
  • 关注

原创 Java获取图片颜色占比

import cn.hutool.core.lang.Pair;import cn.hutool.core.util.HexUtil;import lombok.extern.slf4j.Slf4j;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.HashMap;import ja.

2021-09-26 17:12:44 943

原创 Spring Cloud 01 - spring cloud 版本

Spring Cloud 主项目版本命名并没有采数字版本化的形式,而是采用了英文名称。大版本号小版本号

2020-07-27 20:20:09 131

原创 智能优化算法总结

2019-10-30 15:04:10 1962

转载 Catalan数的典型应用

2019-08-27 15:29:31 152

原创 AC自动机

概述AC 自动机是 以 TRIE 的结构为基础 ,结合 KMP 的思想 建立的。简单来说,建立一个 AC 自动机有两个步骤:基础的 TRIE 结构:将所有的模式串构成一棵 TrieTrieTrie 。KMP 的思想:对 TrieTrieTrie 树上所有的结点构造失配指针。然后就可以利用它进行多模式匹配了。字典树构建AC 自动机在初始时会将若干个模式串丢到一个 TRIE 里,然后...

2019-07-23 16:51:26 159

原创 字符串匹配算法总结

举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?暴力搜索首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。因为B与A不匹配,搜索词再往后移。就这样,直到字符串有一个字符,与搜索词的第一个字符相同为...

2019-07-23 15:29:02 689

原创 cron表达式详解

一个cron表达式最少有5个空格来分割时间元素,总共有7个元素,分别如下:① 秒(0-59)② 分钟(0-59)③ 小时(0-23)④ 天(月的第几天)(0-31,但是你需要考虑你月的天数)⑤ 月(0-11)⑥ 天(星期几)(1-7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)⑦ 年份(1970-2099)说明:每个元素可以是一个具体的值(如6)一个...

2019-07-22 14:56:34 295

原创 JAVA学习路线图

2019-06-24 08:16:04 148

原创 Spring Bean生命周期源码分析

剑指Spring源码本文使用的Spring版本为5.1.2,现在JavaConfig风格+注解的方式来使用Spring是Spring官方主推的,也是现在的主流方式,所以我们从这里出发:import org.springframework.context.annotation.AnnotationConfigApplicationContext;public class App { ...

2019-06-19 19:54:41 1207 3

原创 动态规划经典题目-零钱兑换

题目描述给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1说明:...

2019-05-29 11:42:14 1293

转载 秒杀系统设计思路

https://blog.csdn.net/qq_28666081/article/details/83043215

2019-05-21 20:02:36 166

原创 设计模式系列04 - 行为型

行为型责任链模式模式动机避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。适用场景一个请求的处理需要多个对象当中的一个或几个协作处理;类图class ConcreteHandler1 extends Handler { public...

2019-05-12 20:09:21 927

转载 从一个class文件深入理解Java字节码结构

https://blog.csdn.net/u011810352/article/details/80316870

2019-05-07 20:44:03 270

原创 Leetcode题解 16-20题

016 最接近的三数之和题目描述给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).解题思...

2019-04-25 19:55:25 170

原创 数据结构与算法-图(JAVA语言描述)

图的表示对下图所示的无向图,可使用一个7X7的邻接矩阵表示:final int mw = Integer.MAX_VALUE;int[][] C = new int[][]{ {0, 5, 2, mw, mw, mw, mw}, {5, 0, mw, 1, 6, mw, mw}, {2, mw, ...

2019-04-25 18:40:53 523

原创 设计模式系列 - 03结构型

适配器模式模式动机将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。类图优缺点将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,而无须修改原有代码。增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提...

2019-04-24 10:55:40 141

原创 Leetcode题解 11-15题

011盛最多水的容器题目描述给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此...

2019-04-21 23:59:25 173

原创 设计模式系列 - 02创建型

创建型简单工厂模式动机简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。类图优缺点优点:结构简...

2019-04-20 23:47:52 146

原创 设计模式系列 - 01概述

一、面向对象的设计原则二、UML图对象之间的关系泛化继承(is-a)实现(like-a)关联(属性, has-a)组合(整体与局部,较强)聚合(整体与局部, 较弱)依赖(参数,局部变量,use-a)UML概览...

2019-04-20 23:39:46 161

原创 Leetcode题解 6-10题

006Z字形变换题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串...

2019-04-20 15:33:31 133

原创 Leetcode题解 1-5 题

001两数之和题目描述给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, ...

2019-04-20 13:59:40 173

原创 JAV设计模式系列-适配器模式

概述适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。我的笔记本电脑的工作电压是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压...

2019-04-13 14:17:35 1514

原创 Linux根目录解析

根目录结构如下:                1. / - 根目录:每一个文件和目录都从这里开始。只有root用户具有该目录下的写权限。此目录和/root目录不同,/root目录是root用户的主目录。2. /bin - 用户二进制文件:包含二进制可执行文件。系统的所有用户使用的命令都设在这里,例如:ps,ls,ping,grep,cp等。3. ...

2019-04-08 16:43:18 372

转载 Jedis常用API

https://blog.csdn.net/zhangguanghui002/article/details/78770071

2019-04-08 15:18:43 98

原创 十大排序算法(JAVA语言描述)

0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。0.2 算法复杂度0.3 相关概念稳定:如果a原本在b前...

2019-03-30 01:40:37 163

转载 数据结构-树-trie树

https://blog.csdn.net/johnny901114/article/details/80711441

2019-03-24 23:00:45 97

转载 用Java位运算实现加减乘除四则运算

用Java位运算实现加减乘除四则运算转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6412875.html感谢博客:http://blog.csdn.net/itismelzp/article/details/49621741 提供的思路。要用位运算来实现四则运算,不仅仅要知道&,|,~,^,<<,>>怎么做,还...

2019-03-24 22:56:16 384

转载 数据结构-树-LSM树

1.B+树关于B树、B+树、B树的了解参考:*http://blog.csdn.net/v_july_v/article/details/6530142优点:走进搜索引擎的作者梁斌老师针对B树、B+树给出了他的意见(为了真实性,特引用其原话,未作任何改动):“B+树还有一个最大的好处,方便扫库,B树必须用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了,B+树支...

2019-03-22 10:22:40 353

原创 数据结构-B树

B树B-tree树即B树,B即Balanced,平衡的意思。因为B树的原英文名称为B-tree,而国内很多人喜欢把B-tree译作B-树,其实,这是个非常不好的直译,很容易让人产生误解。如人们可能会以为B-树是一种树,而B树又是另一种树。而事实上是,B-tree就是指的B树。特此说明。先介绍下二叉搜索树 1.所有非叶子结点至多拥有两个儿子(Left和Right)...

2019-03-22 10:13:42 222

转载 数据结构-树

1. 基本概念树( Tree )是包含n(n > 0)个结点的有穷集,其中: 每个元素称为结点( Node )。 有一个特定的结点被称为根结点或树根( Root )。 除根结点之外的其余数据元素被分为m(m ≥ 0)个互不相交的集合T1,T2,……Tm-1,其中每一个集合Ti(1<=i<=m)本身也是一棵树,被称作原树的子树。 1.1 其他定义...

2019-03-22 10:10:52 168

转载 数据结构-树-红黑树

1. 介绍大家都知道二叉树查找树有一个问题,就是容易偏向某一侧,这样就像一个链表结构了,失去了树结构的优点,查找时间会变坏。因此我们需要树的平衡。AVL树是一个完全平衡的二叉树,因为它规定了每个节点的左子树和右子树的高度最多差1。因此为了平衡,AVL树 在修改数据之后,会通过更多的旋转来达到完美平衡。因此 AVL树的查询效率是最高的,但是删除和插入的效率却是最低的。234树通过对二...

2019-03-22 10:08:06 177

转载 数据结构-树-234树

1. 介绍2-3-4树 是平衡树,但不是二叉树,因为它可以有多个节点值,也可以有多个节点。它可以实现完美平衡2-3-4树的名字是根据子节点数来确定的。2-3-4树的key的种类: 2-node: 一个key值,两个儿子节点。 3-node: 两个key值,三个儿子节点。 4-node: 三个key值,四个儿子节点。 2-3-4树的子树: 2-node...

2019-03-22 10:06:34 1159

转载 数据结构-树-平衡二叉树

1. 介绍AVL树又称为高度平衡的二叉搜索树。它能保持二叉树的高度平衡,尽量降低二叉树的高度,减少树的平均搜索长度。VL树性质: 左子树和右子树的高度之差的绝对值不超过1 树中的每个左子树和右子树都是AVL树 AVL树效率:一棵AVL树有N个节点,其高度可以保持在lgN,插入/删除/查找的时间复杂度也是lgN。2. 实现2.1 类定义public cl...

2019-03-22 10:04:22 232

转载 数据结构-树-二叉搜索树

1. 概念二叉查找树(Binary Search Tree)也称有序二叉树(Ordered Binary Tree)、排序二叉树(Sorted Binary Tree)。二叉查找树是java的 TreeSet 和 TreeMap 类实现的基础。二叉查找树相比于其他数据结构的优势在于查找、插入的时间复杂度较低。为O(log n)。2. 特点 若任意结点的左子树不空,则左子树上所...

2019-03-22 09:59:28 152

转载 Java垃圾回收(GC)机制详解

Java垃圾回收(GC)机制详解一、为什么需要垃圾回收  如果不进行垃圾回收,内存迟早都会被消耗空,因为我们在不断的分配内存空间而不进行回收。除非内存无限大,我们可以任性的分配而不回收,但是事实并非如此。所以,垃圾回收是必须的。二、哪些内存需要回收?哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象。那么如何找到这些对象?...

2019-03-10 13:49:36 111

转载 网络协议

各种网络协议(一)目录一、网络协议网络协议分层 网络协议各层级理解二、网络通信的实现三、网络通信流程下一篇:各种网络协议(二)一、网络协议  国际标准化组织(International Standard Organization,ISO)公布了开放系统互连参考模型(OSI/RM)。OSI/RM是一种分层的体系结构,参考模型共有7层。TCP/IP(Transmi...

2019-03-10 10:09:13 189

原创 java FileUtil

package com.eyric.util;import org.apache.commons.io.FilenameUtils; import org.springframework.web.multipart.MultipartFile;import java.io.File; import java.io.IOException; import java.text.Simpl...

2018-08-19 15:35:56 519 1

转载 13.LockSupport工具

1. LockSupport简介在之前介绍AQS的底层实现,已经在介绍java中的Lock时,比如ReentrantLock,ReentReadWriteLocks,已经在介绍线程间等待/通知机制使用的Condition时都会调用LockSupport.park()方法和LockSupport.unpark()方法。而这个在同步组件的实现中被频繁使用的LockSupport到底是何方神圣,现在...

2018-08-18 10:37:56 134

转载 12.详解Condition的await和signal等待通知机制

1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来...

2018-08-18 10:36:57 166

转载 11.深入理解读写锁ReentrantReadWriteLock

1.读写锁的介绍在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字synchronized(关于synchronized可以看这篇文章)或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并...

2018-08-18 10:35:43 105

PHPStorm设置Jar包

phpStorm设置JAR包

2016-10-07

JAVA学习路线图

JAVA完整学习路线图

2015-10-01

MFC视频播放器.zip

MFC视频播放器.zip

2014-06-02

空空如也

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

TA关注的人

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