<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cyberHerman的博客]]></title><description><![CDATA[不积跬步无以至千里]]></description><link>https://blog.youkuaiyun.com/cyberHerman</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cyberHerman]]></copyright><item><title><![CDATA[浅谈java15新特性]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/109253931</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/109253931</guid><author>cyberHerman</author><pubDate>Sat, 24 Oct 2020 12:52:06 +0800</pubDate><description><![CDATA[你发任你发，我用Java8。

jdk15的安装和新版idea的安装就不说了，下面奉上两个软件。

链接: 链接拿走不谢 密码: mp6a

安装完成之后， java -version 查看版本确认环境无误。



新版idea，需要额外做以下设置。





ok，环境已经ok，开始编码。

这次发布的主要功能有：

Java 15为用户提供了14项主要的增强/更改，包括一个孵化器模块，三个预览功能，两个不推荐使用的功能以及两个删除功能。

http://openjdk.java.net/proj...]]></description><category></category></item><item><title><![CDATA[分布式集群上传文件到阿里云存储-OSS]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/106299091</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/106299091</guid><author>cyberHerman</author><pubDate>Sat, 23 May 2020 15:21:15 +0800</pubDate><description><![CDATA[前两天一个小伙伴问到分布式集群中，比如订单服务搞成集群，我每次都被负载均衡到不同的服务器，那么我上传的文件怎么搞？怎么统一管理的，我这里就教给大家一种简单的方法，统一存储在阿里云服务器的对象存储OSS中。

oss是什么我就不讲了，百度一搜一大堆。

今天分两步讲下：

第一步讲下OSS云存储开通与使用。

首先登陆阿里云，首页里面选择 存储与网络里面的对象存储OSS.



然后点击 立即开通。



下一步



右上角头像点击、实名认证



个人实名认证







支付宝 扫码登录。



随便]]></description><category></category></item><item><title><![CDATA[浅谈java14超实用新特性(纯干货)]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/105450399</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/105450399</guid><author>cyberHerman</author><pubDate>Sat, 11 Apr 2020 13:40:20 +0800</pubDate><description><![CDATA[直接上干货。

jdk14的安装和新版idea的安装就不说了，下面奉上两个软件。

链接：https://pan.baidu.com/s/1eBd6fmlkK5qF5ulJM9HJfw提取码：vst7

安装完成之后如下：2020年3月17发布的



idea还有几个小设置：





ok，设置完毕，直接进入正题。

总共：5个语法改变，3个虚拟机优化，详细介绍往下看。

语法层面优化总共五...]]></description><category></category></item><item><title><![CDATA[Redis-缓存雪崩、击穿、穿透]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/105007106</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/105007106</guid><author>cyberHerman</author><pubDate>Sat, 21 Mar 2020 12:09:21 +0800</pubDate><description><![CDATA[提到Redis我相信各位在面试，或者实际开发过程中对缓存雪崩，穿透，击穿也不陌生吧，就 算没遇到过但是你肯定听过，那三者到底有什么区别，我们又应该怎么去防止这样的情况发生 呢，我们有请下一位受害者。

面试开始

一个大腹便便，穿着格子衬衣的中年男子，拿着一个满是划痕的mac向你走来，看着快秃 顶的头发，心想着肯定是尼玛顶级架构师吧！但是我们腹有诗书气自华，虚都不虚



小伙子我看你的简历上写到...]]></description><category></category></item><item><title><![CDATA[docker连载 （二）Docker常用命令]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/104761226</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/104761226</guid><author>cyberHerman</author><pubDate>Mon, 09 Mar 2020 22:13:05 +0800</pubDate><description><![CDATA[Docker 命令


1. Docker 进程相关命令 


# 启动docker服务: 

systemctl start docker 

# 停止docker服务: 

systemctl stop docker 

# 重启docker服务: 

systemctl restart docker 

# 查看docker服务状态: 

systemctl status docker 

...]]></description><category></category></item><item><title><![CDATA[docker连载 （一）初识 Docker]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/104736308</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/104736308</guid><author>cyberHerman</author><pubDate>Sun, 08 Mar 2020 17:51:14 +0800</pubDate><description><![CDATA[初识 Docker

我们平时开发需要几种环境，开发，测试，生产环境，往往会造成环境不同，影响代码的运行，docker能很好的解决这个问题。

今天就记录下自己的学习笔记。以供后用。

目录

Docker概念：

安装 Docker

Docker 架构

配置 Docker 镜像加速器

Docker概念：

Docker 是一个开源的应用容器引擎
	诞生于 2013 年初，基于 Go 语言实...]]></description><category></category></item><item><title><![CDATA[线程池 ThreadPoolExecutor 源码分析]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/103916012</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/103916012</guid><author>cyberHerman</author><pubDate>Thu, 09 Jan 2020 21:30:57 +0800</pubDate><description><![CDATA[记录下来供日后查看学习。

1.关键成员变量的介绍


//任务队列
 private final BlockingQueue&lt;Runnable&gt; workQueue;
 
 //工作者集合
 private final HashSet&lt;Worker&gt; workers = new HashSet&lt;Worker&gt;();
 
 //线程达到的最大值
 private...]]></description><category></category></item><item><title><![CDATA[poi往excel插入图片，以及删除插入后的图片]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/103724211</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/103724211</guid><author>cyberHerman</author><pubDate>Thu, 26 Dec 2019 23:28:58 +0800</pubDate><description><![CDATA[package com.herman.test;

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import ...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载十  栈实现综合计算器]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/103040211</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/103040211</guid><author>cyberHerman</author><pubDate>Tue, 12 Nov 2019 22:56:29 +0800</pubDate><description><![CDATA[使用栈完成计算 一个表达式的结果

输入一个字符串 为 "3+2*6-2"   结果= ?

思路如下：


使用栈完成表达式的计算 思路

首先，创建两个栈，一个数字栈，一个符号栈。

1. 通过一个 index 值（索引），来遍历我们的表达式

2. 如果我们发现是一个数字, 就直接入数栈

3. 如果发现扫描到是一个符号, 就分如下情况

3.1 如果发现当前的符号栈为 空，就...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载九 栈]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/103040128</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/103040128</guid><author>cyberHerman</author><pubDate>Tue, 12 Nov 2019 22:48:44 +0800</pubDate><description><![CDATA[栈的介绍：

栈的英文为(stack)
	栈是一个先入后出(FILO-First In Last Out)的有序列表。
	栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端，为变化的一端，称为栈顶(Top)，另一端为固定的一端，称为栈底(Bottom)。
	根据栈的定义可知，最先放入栈中元素在栈底，最后放入的元素在栈顶，而删除元素刚好相反，...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载八 单向环形链表和约瑟夫问题(Josephu)]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/103038757</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/103038757</guid><author>cyberHerman</author><pubDate>Tue, 12 Nov 2019 21:20:56 +0800</pubDate><description><![CDATA[先来看看单向环形链表，顾名思义就是 单向链表，构成环状，结尾的节点的next域指向头结点。



其实这个和约瑟夫问题很类似，约瑟夫就是个环形链表，然后出圈的问题。



Josephu 问题为：

设编号为1，2，… n的n个人围坐一圈，约定编号为k（1&lt;=k&lt;=n）的人从1开始报数，数到m 的那个人出列，它的下一位又从1开始报数，数到m的那个人又出列，依次类推，直到所有人出列为止...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载七 有序-双向链表]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102997854</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102997854</guid><author>cyberHerman</author><pubDate>Sun, 10 Nov 2019 15:14:54 +0800</pubDate><description><![CDATA[上一篇记录了无序 双向链表，其实逻辑是一样的

数据结构+算法连载六 无序-双向链表

有序链表操作如下：

新增：要是插入在中间的话，需要把前面和后面的两个节点都串起来。
	修改：同无序。
	删除：同无序
所以，有序和无序的差距，仅仅是在 add方法上 不一致。代码如下


public class DoubleLinkedListDemo {

	public static void main...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载六 无序-双向链表]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102997455</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102997455</guid><author>cyberHerman</author><pubDate>Sun, 10 Nov 2019 14:53:19 +0800</pubDate><description><![CDATA[单向链表，查找的方向只能是一个方向，而双向链 表可以向前或者向后查找。
	单向链表不能自我删除，需要靠辅助节点 ，而双向 链表，则可以自我删除，所以前面我们单链表删除 时节点，总是找到temp,temp是待删除节点的前一 个节点，这次双向链表 temp就直接是待删除的节点。
单向链表的链接如下：

数据结构+算法连载四 单向链表（无序+有序）

数据结构+算法连载五 单向链表的几道练习题



...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载五 单向链表的几道练习题]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102996639</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102996639</guid><author>cyberHerman</author><pubDate>Sun, 10 Nov 2019 13:44:11 +0800</pubDate><description><![CDATA[记录一下 单链表的几个操作习题。

直接上代码吧


	求单链表中有效节点的个数
	

	
	
//方法：获取到单链表的节点的个数(如果是带头结点的链表，需求不统计头节点)
	/**
	 * 
	 * @param head 链表的头节点
	 * @return 返回的就是有效节点的个数
	 */
	public static int getLength(HeroNode head) {
		i...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载四 单向链表（无序+有序）]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102992421</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102992421</guid><author>cyberHerman</author><pubDate>Sat, 09 Nov 2019 22:25:27 +0800</pubDate><description><![CDATA[链表是有序的列表，但是它在内存中是存储如下



小结:

链表是以节点的方式来存储,是链式存储
	每个节点包含 data 域， next 域：指向下一个节点.
	如图：发现链表的各个节点不一定是连续存储.
	链表分带头节点的链表和没有头节点的链表，根据实际的需求来确定



	单链表的应用实例
	
使用带head头的单向链表实现

需求如下：–水浒英雄排行榜管理,

完成对英雄人物的增删改查操作...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载三   数组模拟环形队列]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102991851</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102991851</guid><author>cyberHerman</author><pubDate>Sat, 09 Nov 2019 21:15:06 +0800</pubDate><description><![CDATA[数组模拟环形队列

对上一篇的数组模拟队列的优化，充分利用数组. 因此将数组看做是一个环形的。(通过取模的方 式来实现即可)

上一篇的链接如下：

上一篇-- 数据结构+算法连载二 队列

分析说明： 

尾索引的下一个为头索引时表示队列满，即将队 列容量空出一个作为约定,这个在做判断队列满的 时候需要注意

1. 判断队列满 (rear + 1) % maxSize == front [满...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载二 队列]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102990242</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102990242</guid><author>cyberHerman</author><pubDate>Sat, 09 Nov 2019 18:45:33 +0800</pubDate><description><![CDATA[队列介绍

队列是一个有序列表，可以用数组或是链表来实现。

遵循先入先出的原则。即：先存入队列的数据，要先取出。后存入的要后取出

示意图：(使用数组模拟队列示意图)





数组模拟队列

当我们将数据存入队列时称为”addQueue”，addQueue 的处理需要有两个步骤：思路分析

1.将尾指针往后移：rear+1 , 当front == rear 【空】

2.若尾指针 rear ...]]></description><category></category></item><item><title><![CDATA[数据结构+算法连载一   稀疏数组的原始的二维数组互相转换]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102989889</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102989889</guid><author>cyberHerman</author><pubDate>Sat, 09 Nov 2019 18:02:54 +0800</pubDate><description><![CDATA[先看一个实际的需求



因为该图片记录了很多没用的值，都是0，所以用稀疏数组来实现优化。





应用实例：





接下来就是 代码的实现




public class SparseArray {

	public static void main(String[] args) {
		// 创建一个原始的二维数组 11 * 11
		// 0: 表示没有棋子， 1 表示 黑子 2 ...]]></description><category></category></item><item><title><![CDATA[Java   23 种设计模式 - 2 -单例模式(Singleton)]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/80306435</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/80306435</guid><author>cyberHerman</author><pubDate>Mon, 14 Oct 2019 22:57:57 +0800</pubDate><description><![CDATA[在 Java 应用中,单例对象就是保证在一个 JVM 中,该对象只有一个实例存在。这样的模式有几个好处:
1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。
2、省去了 new 操作符,降低了系统内存的使用频率,减轻 GC 压力。
3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。
单例模式有三步：
1.持有私有静态实例,防止被引用
2....]]></description><category></category></item><item><title><![CDATA[docker报错“net/http: TLS handshake timeout”]]></title><link>https://blog.youkuaiyun.com/cyberHerman/article/details/102558226</link><guid>https://blog.youkuaiyun.com/cyberHerman/article/details/102558226</guid><author>cyberHerman</author><pubDate>Mon, 14 Oct 2019 22:30:06 +0800</pubDate><description><![CDATA[docker默认镜像拉取地址为国外仓库下载速度较慢，则会报错“net/http: TLS handshake timeout”

修改/etc/docker/daemon.json文件并添加上 registry-mirrors 键值。


{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

修改保存后重启 Docker 以...]]></description><category></category></item></channel></rss>