<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[饶艳辉]]></title><description><![CDATA[小辉哥的博客]]></description><link>https://blog.youkuaiyun.com/raoyanhui_java</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; raoyanhui_java]]></copyright><item><title><![CDATA[JS批量加载图片是否完成]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108040408</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108040408</guid><author>raoyanhui_java</author><pubDate>Sun, 16 Aug 2020 18:37:10 +0800</pubDate><description><![CDATA[项目中JS异步加载图片，且需要在图片全部加载完成后调用第三方插件对图片进行自动排版

难点在于，如何判断异步加载的图片都加载完毕？废话不多说，直接上代码，如下：


/**
 * 菜单点击后, 数据区显示
 * @param {Object} _TYPE_
 * @param {Object} _KEY_
 */
function loadPortfolioItem(_TYPE_, _KEY_) {
	// &lt;!-- &lt;p&gt;&lt;/p&gt; 调整子菜单导航栏和搜索后高度不一致问题。没有]]></description><category></category></item><item><title><![CDATA[百度地图样式冲突问题]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108039219</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108039219</guid><author>raoyanhui_java</author><pubDate>Sun, 16 Aug 2020 17:56:12 +0800</pubDate><description><![CDATA[前段时间做项目需要用到地图显示，于是我这边就选择了百度地图（考虑到之前用过百度地图）。

页面使用百度地图步骤还是比较简单的，如下：

首先获取一个ak，具体步骤可以百度
	页面引入CSS文件
	
&lt;link href="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.css" rel="stylesheet"&gt;

	   
	
	页面引入JS文件
	
&lt;script sr...]]></description><category></category></item><item><title><![CDATA[页面区分终端加载不同的CSS]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108038648</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108038648</guid><author>raoyanhui_java</author><pubDate>Sun, 16 Aug 2020 17:16:02 +0800</pubDate><description><![CDATA[我们开发前端项目有时候需要根据不同的终端适配不同的样式。例如公司网站在PC端和移动端显示样式基本需要搞两套。

那么怎么尽量少改动前端代码的情况下满足此类需求呢？这里我说一下之前我在某公司的处理经验，如下：


&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http:/]]></description><category></category></item><item><title><![CDATA[个人网站就这样上线了]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108037180</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/108037180</guid><author>raoyanhui_java</author><pubDate>Sun, 16 Aug 2020 16:18:44 +0800</pubDate><description><![CDATA[作为程序员的你，有没有想过做一个自己的个人网站？

或许有小伙伴已经拥有了自己的个人网站，也或许还有小伙伴们并没有自己的个人网站。那到底有没有必要搞一个自己的个人网站呢？这个问题很难回答，因人而异。我个人觉得如果感兴趣，那么做一个自己的个人网站又何妨！

这里我简单说一下实现个人网站需要哪些步骤：

需要在阿里云购买一台ECS实例（当然也可以考虑其它平台例如：腾讯云等）
	需要在阿里云购买一个域名（考虑到阿里云购买域名比较方便）
	需要具备一定的技术能力，这里需要自己写网站的前端、后端代码，同时需要具备li]]></description><category></category></item><item><title><![CDATA[人生第一次私活就这样不期而遇]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107166264</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107166264</guid><author>raoyanhui_java</author><pubDate>Mon, 06 Jul 2020 22:09:51 +0800</pubDate><description><![CDATA[程序员接私活，你有经历过吗？

程序员接私活，往往在程序员的圈子是很常见的事情。可是参加工作十年了，我真真意义上就这么一次。虽然之前有帮忙做过一些零散的事情，但是都不够体系化。这一次才是真正意义上第一次接私活。话不多说，直接入正题。

2020-06-21 当天中午，接到老家一个亲戚的电话，告知他们企业想做一个网站（绝对是膜拜的人物，年纪轻轻在老家已经开了好几家公司，手下有近百号人），深思熟虑了一番还是答应了。于是当天我的私活微信对接群成立了。

他们企业算是老家发展的比较好的中小型公司，不过和IT不是同一]]></description><category></category></item><item><title><![CDATA[ideaIU-2019.2.4版安装]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107159693</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107159693</guid><author>raoyanhui_java</author><pubDate>Mon, 06 Jul 2020 16:40:53 +0800</pubDate><description><![CDATA[JAVA开发神器，IntelliJ IDEA，越来越多的小伙伴从eclipse 改用这款IDEA，其实我个人还同时再用eclipse的，有时候总感觉IntelliJ IDEA的快捷键老是忘记（可能是用的不太熟悉的缘故）。

大家可以去官网自行下载，有安装版的也有解压版的。下图是我自己之前在官网下载的ideaIU-2019.2.4版本：



然后选择安装版或者解压版，直接运行或解压。这时候不用做任何操作，直接打开到IDEA 内部进行激活等操作。之前很多博客描述直接在安装的时候进行激活操作，个人亲测我这...]]></description><category></category></item><item><title><![CDATA[Axure9.0原型设计安装包]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107154910</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107154910</guid><author>raoyanhui_java</author><pubDate>Mon, 06 Jul 2020 15:04:14 +0800</pubDate><description><![CDATA[作为开发程序员，产品原型设计或多或少都有接触过，之前一直都是用Axure8的， 突然有一天产品发了一份需求原型rp文件，居然打不开，最后才知道，Axure9打开过的文件，用Axure8是无法打开的。（顿时头大，居然有这种神约束）

没办法，活还是要干的，于是上官网下载Axure9。



RP 9 Pro 专业版  Team 团队版  Enterprise 企业版 三种下载

简单概括就是 1、企业版包含团队版功能 2、团队版包含专业版功能。 于是果断下载企业版（虽然作为技术开发仅仅简单的应用A...]]></description><category></category></item><item><title><![CDATA[PowerDesigner16.6最新安装包]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107158538</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/107158538</guid><author>raoyanhui_java</author><pubDate>Mon, 06 Jul 2020 14:53:09 +0800</pubDate><description><![CDATA[PowerDesigner相信做开发的同学都不陌生，我们数据库设计必备的神器。这里就不过多介绍PowerDesigner的使用。直接讲解如何下载安装最新版PowerDesigner16.6。

首先直接上官网：http://powerdesigner.de/如图所示：





点击TRIAL，输入信息和邮箱地址后点击SUBMIT，如图所示：



然后就去输入的邮箱查看，会发现下载地址：



什么情况，怎么会是16.5版本，我在官网一路孟操作都是针对16.6版本的？

然后，在回到官网查看 P...]]></description><category></category></item><item><title><![CDATA[深入浅出设计模式：建造者模式]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/103001351</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/103001351</guid><author>raoyanhui_java</author><pubDate>Sun, 10 Nov 2019 20:21:30 +0800</pubDate><description><![CDATA[设计模式是程序员必须掌握的技能，熟练应用各种设计模式，不仅可以提升我们的编码能力，也可以使得我们的编码更美观。在这里我们来讲解一下建造者模式。


百度百科定义如下


建造者模式（Builder Pattern）是设计模式的一种，将一个复杂对象的构建与它的表示分离，使得同样的构建过程可以创建不同的表示。

实用范围

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。

...]]></description><category></category></item><item><title><![CDATA[JS代码实现图片懒加载]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/102997247</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/102997247</guid><author>raoyanhui_java</author><pubDate>Sun, 10 Nov 2019 14:37:12 +0800</pubDate><description><![CDATA[现如今富媒体信息时代，很多电商产品都会有大量的图片素材展示，无论是移动端、PC端都会可能遇到。如果一个展示页面有大量的图片需要加载，那么该如何进行优化？在这里，给大家整理一下我是怎么使用JS代码实现图片懒加载的。


&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht...]]></description><category></category></item><item><title><![CDATA[深入浅出设计模式：模板模式]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/102907238</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/102907238</guid><author>raoyanhui_java</author><pubDate>Mon, 04 Nov 2019 23:04:38 +0800</pubDate><description><![CDATA[设计模式是程序员必须掌握的技能，熟练应用各种设计模式，不仅可以提升我们的编码能力，也可以使得我们的编码更美观。在这里我们来讲解一下模板模式。

模板模式（Template Pattern）中，一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现，但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。

优点：1、封装不变部分，扩展可变部分。 2、提取公共代码，...]]></description><category></category></item><item><title><![CDATA[MongoDB mapReduce填补自带group的限制问题]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100568657</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100568657</guid><author>raoyanhui_java</author><pubDate>Thu, 05 Sep 2019 22:35:32 +0800</pubDate><description><![CDATA[用过MongoDB的小伙伴或多或少都会遇到MongoDB自带group的限制问题，即group不支持大于2万的结果集！

我曾在任职公司做过某网站小区均价数据抓取，采用的是Groovy技术。数据抓取下来后存放在MongoDB中。数据抓取完成都是需要经历数据清洗处理的，其中有一项数据去重时候就遇到MongoDB自带group的限制问题，即group不支持大于2万的结果集。几番折腾后来采用MongoD...]]></description><category></category></item><item><title><![CDATA[VBA实现Excel模块筛选高级应用场景！]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100249034</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100249034</guid><author>raoyanhui_java</author><pubDate>Mon, 02 Sep 2019 13:34:33 +0800</pubDate><description><![CDATA[做过项目管理或者产品管理的小伙伴或多或少都会对Excel比较依赖，那么你了解过什么是VBA吗？

复杂场景下对Excel的高级应用可能需要借助VBA代码才能实现。有些小伙伴可能了解VBA，有些可能还没接触过。今天我给大家讲一个复杂场景下通过VBA实现Excel模块筛选的高级应用。

这里我们先通过图片和文字描述一下需要实现的一个需求场景：

首先有一个Excel，其中有两个Sheet，Sheet1...]]></description><category></category></item><item><title><![CDATA[Thread线程有哪几种状态，这篇文章带你深入了解！]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100176128</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100176128</guid><author>raoyanhui_java</author><pubDate>Sat, 31 Aug 2019 19:14:07 +0800</pubDate><description><![CDATA[Thread线程有哪几种状态，这也是面试中很多小伙伴都会被问到的知识点。Thread线程状态是应该掌握的基础知识。但是很多小伙伴如果没有总结过的话，面试过程可能会懵圈，这里我稍作整理，希望小伙伴们可以查漏补缺。

Thread源码中有定义State的枚举类，State枚举类中有明确定义线程的状态。源码如下。


public enum State {
        /**
         * ...]]></description><category></category></item><item><title><![CDATA[并发编程之LockSupport源码分析及简单使用]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100168510</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100168510</guid><author>raoyanhui_java</author><pubDate>Sat, 31 Aug 2019 06:20:19 +0800</pubDate><description><![CDATA[曾经面试被问到JAVA中实现线程挂起和唤醒有哪些方式，除了采用Object类中wait notify/notifyAll实现还有其他方式吗？当时真心没答上来，后来做了功课才知道还有LockSupport类中park/unpark可以实现。

大家如果了解AQS（全称AbstractQueuedSynchronizer），就知道并发编程中很多类都是基于AQS实现的，例如ReentrantLock、 ...]]></description><category></category></item><item><title><![CDATA[为什么重写equals方法同时需要重写hashCode方法？]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100149477</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100149477</guid><author>raoyanhui_java</author><pubDate>Fri, 30 Aug 2019 00:43:03 +0800</pubDate><description><![CDATA[为什么重写equals方法同时需要重写hashCode方法？

众所周知equals()和hashCode()是Object类中定义的方法。Object类定义的方法如下：



Object的equals()定义如下：



注释部分大概意思是：

请注意，每当重写此方法时，通常需要重写哈希代码，其中规定相等的对象必须具有相等的哈希代码。

Object的hashCode()定义如下：



以上...]]></description><category></category></item><item><title><![CDATA[CopyOnWriteArrayList源码分析、使用场景说明]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100070415</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100070415</guid><author>raoyanhui_java</author><pubDate>Mon, 26 Aug 2019 07:01:16 +0800</pubDate><description><![CDATA[java.util.concurrent包下提供了很多并发编程使用的类，CopyOnWriteArrayList就是其中之一。

CopyOnWriteArrayList是线程安全容器(相对于ArrayList)，底层通过复制数组的方式来实现。CopyOnWriteArrayList在遍历的使用不会抛出ConcurrentModificationException异常，并且遍历的时候就不用额外加锁...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap弱一致性迭代器]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100068130</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/100068130</guid><author>raoyanhui_java</author><pubDate>Sun, 25 Aug 2019 21:40:44 +0800</pubDate><description><![CDATA[什么是弱一致性迭代器？？？

当创建迭代器后，其他线程删除了该元素时候并不会抛出java.util.ConcurrentModificationException异常，能够保持创建迭代器后的元素被正确的Iterator.next()出来。例如ConcurrentHashMap就是弱一致性迭代器，HashMap就是强一致性迭代器。

通过下面代码部分，我们可以更好的理解弱一致性和强一致性迭代器。

...]]></description><category></category></item><item><title><![CDATA[总览十大经典排序算法]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/99699109</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/99699109</guid><author>raoyanhui_java</author><pubDate>Sat, 17 Aug 2019 22:52:24 +0800</pubDate><description><![CDATA[排序算法是《数据结构与算法》中最基本的算法之一，排序算法可以分为内部排序和外部排序，内部排序是数据记录在内存中进行排序，而外部排序是因排序的数据很大，一次不能容纳全部的排序记录，在排序过程中需要访问外存。

十大经典排序算法分别是：

1、冒泡排序
	2、选择排序
	3、插入排序
	4、希尔排序
	5、归并排序
	6、快速排序
	7、堆排序
	8、计数排序
	9、桶排序
	10、基数排序
用一张图...]]></description><category></category></item><item><title><![CDATA[详解JAVA插入排序]]></title><link>https://blog.youkuaiyun.com/raoyanhui_java/article/details/99699038</link><guid>https://blog.youkuaiyun.com/raoyanhui_java/article/details/99699038</guid><author>raoyanhui_java</author><pubDate>Sat, 17 Aug 2019 22:46:42 +0800</pubDate><description><![CDATA[插入排序（Insertion sort）是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列，要求在这个已经排好的数据序列中插入一个数，但要求插入后此数据序列仍然有序，这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中，从而得到一个新的、个数加一的有序数据，算法适用于少量数据的排序，时间复杂度为O（n²）。是稳定的排序方法。插入排序...]]></description><category></category></item></channel></rss>