自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

饶艳辉

小辉哥的博客

  • 博客(48)
  • 资源 (5)
  • 收藏
  • 关注

原创 JS批量加载图片是否完成

项目中JS异步加载图片,且需要在图片全部加载完成后调用第三方插件对图片进行自动排版难点在于,如何判断异步加载的图片都加载完毕?废话不多说,直接上代码,如下:/** * 菜单点击后, 数据区显示 * @param {Object} _TYPE_ * @param {Object} _KEY_ */function loadPortfolioItem(_TYPE_, _KEY_) { // <!-- <p></p> 调整子菜单导航栏和搜索后高度不一致问题。没有

2020-08-16 18:37:10 642

原创 百度地图样式冲突问题

前段时间做项目需要用到地图显示,于是我这边就选择了百度地图(考虑到之前用过百度地图)。页面使用百度地图步骤还是比较简单的,如下:首先获取一个ak,具体步骤可以百度 页面引入CSS文件 <link href="http://api.map.baidu.com/library/SearchInfoWindow/1.5/src/SearchInfoWindow_min.css" rel="stylesheet"> 页面引入JS文件 <script sr...

2020-08-16 17:56:12 948

原创 页面区分终端加载不同的CSS

我们开发前端项目有时候需要根据不同的终端适配不同的样式。例如公司网站在PC端和移动端显示样式基本需要搞两套。那么怎么尽量少改动前端代码的情况下满足此类需求呢?这里我说一下之前我在某公司的处理经验,如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/

2020-08-16 17:16:02 457

原创 个人网站就这样上线了

作为程序员的你,有没有想过做一个自己的个人网站?或许有小伙伴已经拥有了自己的个人网站,也或许还有小伙伴们并没有自己的个人网站。那到底有没有必要搞一个自己的个人网站呢?这个问题很难回答,因人而异。我个人觉得如果感兴趣,那么做一个自己的个人网站又何妨!这里我简单说一下实现个人网站需要哪些步骤:需要在阿里云购买一台ECS实例(当然也可以考虑其它平台例如:腾讯云等) 需要在阿里云购买一个域名(考虑到阿里云购买域名比较方便) 需要具备一定的技术能力,这里需要自己写网站的前端、后端代码,同时需要具备li

2020-08-16 16:18:44 245

原创 人生第一次私活就这样不期而遇

程序员接私活,你有经历过吗?程序员接私活,往往在程序员的圈子是很常见的事情。可是参加工作十年了,我真真意义上就这么一次。虽然之前有帮忙做过一些零散的事情,但是都不够体系化。这一次才是真正意义上第一次接私活。话不多说,直接入正题。2020-06-21 当天中午,接到老家一个亲戚的电话,告知他们企业想做一个网站(绝对是膜拜的人物,年纪轻轻在老家已经开了好几家公司,手下有近百号人),深思熟虑了一番还是答应了。于是当天我的私活微信对接群成立了。他们企业算是老家发展的比较好的中小型公司,不过和IT不是同一

2020-07-06 22:09:51 989

原创 ideaIU-2019.2.4版安装

JAVA开发神器,IntelliJ IDEA,越来越多的小伙伴从eclipse 改用这款IDEA,其实我个人还同时再用eclipse的,有时候总感觉IntelliJ IDEA的快捷键老是忘记(可能是用的不太熟悉的缘故)。大家可以去官网自行下载,有安装版的也有解压版的。下图是我自己之前在官网下载的ideaIU-2019.2.4版本:然后选择安装版或者解压版,直接运行或解压。这时候不用做任何操作,直接打开到IDEA 内部进行激活等操作。之前很多博客描述直接在安装的时候进行激活操作,个人亲测我这...

2020-07-06 16:40:53 2840 2

原创 Axure9.0原型设计安装包

作为开发程序员,产品原型设计或多或少都有接触过,之前一直都是用Axure8的, 突然有一天产品发了一份需求原型rp文件,居然打不开,最后才知道,Axure9打开过的文件,用Axure8是无法打开的。(顿时头大,居然有这种神约束)没办法,活还是要干的,于是上官网下载Axure9。RP 9 Pro 专业版 Team 团队版 Enterprise 企业版 三种下载简单概括就是 1、企业版包含团队版功能 2、团队版包含专业版功能。 于是果断下载企业版(虽然作为技术开发仅仅简单的应用A...

2020-07-06 15:04:14 2324

原创 PowerDesigner16.6最新安装包

PowerDesigner相信做开发的同学都不陌生,我们数据库设计必备的神器。这里就不过多介绍PowerDesigner的使用。直接讲解如何下载安装最新版PowerDesigner16.6。首先直接上官网:http://powerdesigner.de/如图所示:点击TRIAL,输入信息和邮箱地址后点击SUBMIT,如图所示:然后就去输入的邮箱查看,会发现下载地址:什么情况,怎么会是16.5版本,我在官网一路孟操作都是针对16.6版本的?然后,在回到官网查看 P...

2020-07-06 14:53:09 7303 5

原创 深入浅出设计模式:建造者模式

设计模式是程序员必须掌握的技能,熟练应用各种设计模式,不仅可以提升我们的编码能力,也可以使得我们的编码更美观。在这里我们来讲解一下建造者模式。百度百科定义如下建造者模式(Builder Pattern)是设计模式的一种,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。实用范围1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。...

2019-11-10 20:21:30 187

原创 JS代码实现图片懒加载

现如今富媒体信息时代,很多电商产品都会有大量的图片素材展示,无论是移动端、PC端都会可能遇到。如果一个展示页面有大量的图片需要加载,那么该如何进行优化?在这里,给大家整理一下我是怎么使用JS代码实现图片懒加载的。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xht...

2019-11-10 14:37:12 458

原创 深入浅出设计模式:模板模式

设计模式是程序员必须掌握的技能,熟练应用各种设计模式,不仅可以提升我们的编码能力,也可以使得我们的编码更美观。在这里我们来讲解一下模板模式。模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。优点:1、封装不变部分,扩展可变部分。 2、提取公共代码,...

2019-11-04 23:04:38 170

原创 MongoDB mapReduce填补自带group的限制问题

用过MongoDB的小伙伴或多或少都会遇到MongoDB自带group的限制问题,即group不支持大于2万的结果集!我曾在任职公司做过某网站小区均价数据抓取,采用的是Groovy技术。数据抓取下来后存放在MongoDB中。数据抓取完成都是需要经历数据清洗处理的,其中有一项数据去重时候就遇到MongoDB自带group的限制问题,即group不支持大于2万的结果集。几番折腾后来采用MongoD...

2019-09-05 22:35:32 243

原创 VBA实现Excel模块筛选高级应用场景!

做过项目管理或者产品管理的小伙伴或多或少都会对Excel比较依赖,那么你了解过什么是VBA吗?复杂场景下对Excel的高级应用可能需要借助VBA代码才能实现。有些小伙伴可能了解VBA,有些可能还没接触过。今天我给大家讲一个复杂场景下通过VBA实现Excel模块筛选的高级应用。这里我们先通过图片和文字描述一下需要实现的一个需求场景:首先有一个Excel,其中有两个Sheet,Sheet1...

2019-09-02 13:34:33 2952

原创 Thread线程有哪几种状态,这篇文章带你深入了解!

Thread线程有哪几种状态,这也是面试中很多小伙伴都会被问到的知识点。Thread线程状态是应该掌握的基础知识。但是很多小伙伴如果没有总结过的话,面试过程可能会懵圈,这里我稍作整理,希望小伙伴们可以查漏补缺。Thread源码中有定义State的枚举类,State枚举类中有明确定义线程的状态。源码如下。public enum State { /** * ...

2019-08-31 19:14:07 1646

原创 并发编程之LockSupport源码分析及简单使用

曾经面试被问到JAVA中实现线程挂起和唤醒有哪些方式,除了采用Object类中wait notify/notifyAll实现还有其他方式吗?当时真心没答上来,后来做了功课才知道还有LockSupport类中park/unpark可以实现。大家如果了解AQS(全称AbstractQueuedSynchronizer),就知道并发编程中很多类都是基于AQS实现的,例如ReentrantLock、 ...

2019-08-31 06:20:19 366

原创 为什么重写equals方法同时需要重写hashCode方法?

为什么重写equals方法同时需要重写hashCode方法?众所周知equals()和hashCode()是Object类中定义的方法。Object类定义的方法如下:Object的equals()定义如下:注释部分大概意思是:请注意,每当重写此方法时,通常需要重写哈希代码,其中规定相等的对象必须具有相等的哈希代码。Object的hashCode()定义如下:以上...

2019-08-30 00:43:03 4031 3

原创 CopyOnWriteArrayList源码分析、使用场景说明

java.util.concurrent包下提供了很多并发编程使用的类,CopyOnWriteArrayList就是其中之一。CopyOnWriteArrayList是线程安全容器(相对于ArrayList),底层通过复制数组的方式来实现。CopyOnWriteArrayList在遍历的使用不会抛出ConcurrentModificationException异常,并且遍历的时候就不用额外加锁...

2019-08-26 07:01:16 613

原创 ConcurrentHashMap弱一致性迭代器

什么是弱一致性迭代器???当创建迭代器后,其他线程删除了该元素时候并不会抛出java.util.ConcurrentModificationException异常,能够保持创建迭代器后的元素被正确的Iterator.next()出来。例如ConcurrentHashMap就是弱一致性迭代器,HashMap就是强一致性迭代器。通过下面代码部分,我们可以更好的理解弱一致性和强一致性迭代器。...

2019-08-25 21:40:44 1016 1

原创 金九银十来了,你准备好了吗?

又到一年的金九银十了,想要跳槽拿高薪的小伙伴你们准备好了吗?说实话,今年行情并不是特别好,很多企业招人对技术要求越来越高。当然,如果你是真正的大牛请忽视。本人亲身经历过一些互联网独角兽公司面试,需要强调一下,越是大公司越是注重技术基础、源码、底层。这里我稍微整理了部分面试题目(当然实际面试中远远不止),因此仅供大家参考。深入理解排序算法 深入理解JAVA虚拟机 深入理解JAVA内存模型...

2019-08-22 23:42:35 250

原创 总览十大经典排序算法

排序算法是《数据结构与算法》中最基本的算法之一,排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。十大经典排序算法分别是:1、冒泡排序 2、选择排序 3、插入排序 4、希尔排序 5、归并排序 6、快速排序 7、堆排序 8、计数排序 9、桶排序 10、基数排序用一张图...

2019-08-17 22:52:24 203

原创 详解JAVA插入排序

插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n²)。是稳定的排序方法。插入排序...

2019-08-17 22:46:42 209

原创 详解JAVA选择排序

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。选择排序时间复杂度为O(n²),具体关于时间复杂度的推理大家可以去看百度百科!!! ...

2019-08-16 23:44:25 140

原创 面试锦集:手写一个同步类容器之BlockingQueue实现

互联网大厂面试必考题目:手写一个同步类容器,支持多个生产者线程以及多个消费者线程的阻塞调用。采用BlockingQueue实现,我第一次去大厂面试都被难住了!!!package com.container;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue...

2019-08-14 13:18:58 573

原创 JAVA并发编程下保证车票出售线程安全之ConcurrentLinkedQueue

在并发编程场景下如何保证车票或者商品出售业务是线程安全的?首先我们就会想到加锁,来保证出售业务线程安全。但是加锁势必会带来性能上的瓶颈。那么我们就会思考,还有没有其它的方式避免加锁来实现同样的效果呢?这里我们就采用ConcurrentLinkedQueue方式避免加锁来实现。package com.sync.ticket;import java.util.Queue;impor...

2019-08-12 22:08:28 171

原创 JAVA并发编程下保证车票出售线程安全之synchronized锁

在并发编程场景下如何保证车票或者商品出售业务是线程安全的?首先我们就会想到加锁,来保证出售业务线程安全。但是加锁势必会带来性能上的瓶颈。那么我们就会思考,还有没有其它的方式避免加锁来实现同样的效果呢?这里我们带着这个问题,先采用常见的加锁方式来实现。package com.sync.ticket;import java.util.ArrayList;import java.ut...

2019-08-12 22:02:34 165

原创 JAVA并发编程Fork/Join(分而治之思想)之(ForkJoinPool/ForkJoinTask)

Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果从而得到这个大任务的结果。这里我们也借助这种思想来处理一个超大任务的运算,采用ForkJoinPool/ForkJoinTask这种方式。我们来看一段ForkJoinPool/ForkJoinTask方式实现的代码package com.forkjoin;impo...

2019-08-11 17:40:39 290

原创 JAVA并发编程Fork/Join(分而治之思想)之(Future/Callable)

Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果从而得到这个大任务的结果。这里我们也借助这种思想来处理一个超大任务的运算,但是不用ForkJoinPool/ForkJoinTask这种方式,而采用ExecutorService/Future/Callable方式。我们来看一段ExecutorService/Future/...

2019-08-11 17:35:15 654

原创 JAVA手写一个多线程死锁

大家都知道多线程并发的时候,我们一般会用到锁。但是锁用不好,就会导致死锁。那么,死锁是如何产生的呢?一般造成死锁必须同时满足如下4个条件:互斥条件:线程使用的资源必须至少有一个是不能共享的。 请求与保持条件:至少有一个线程必须持有一个资源并且正在等待获取一个当前被其他线程持有的资源。 非剥夺条件:分配的资源不能从相应的线程中被强制剥夺。 循环等待条件:第一个线程等待其他线程,后者又在...

2019-08-11 17:28:28 833

原创 JAVA多线程高并发之ReentrantLock讲解公平锁

JAVA中多线程高并发场景下保证线程安全通常都会考虑加锁。但是在特殊场景下我们也可以采用java.util.concurrent包提供的线程安全的对象,避免加锁从而达到高效的目的。但是,这些线程安全的对象仅仅指的是针对于原子性操作是线程安全的,如果多个方法同时调用无法保证线程安全,只能考虑加锁。这里我们举个列子:假设我们在多线程高并发场景下使用java.util.concurrent.Conc...

2019-08-10 18:23:34 285 1

原创 JAVA多线程高并发之ReentrantLock讲解lockInterruptibly方法

JAVA中多线程高并发场景下保证线程安全通常都会考虑加锁。但是在特殊场景下我们也可以采用java.util.concurrent包提供的线程安全的对象,避免加锁从而达到高效的目的。但是,这些线程安全的对象仅仅指的是针对于原子性操作是线程安全的,如果多个方法同时调用无法保证线程安全,只能考虑加锁。这里我们举个列子:假设我们在多线程高并发场景下使用java.util.concurrent.Conc...

2019-08-10 18:15:25 1295

原创 JAVA多线程高并发之ReentrantLock讲解lock/unlock/tryLock方法

JAVA中多线程高并发场景下保证线程安全通常都会考虑加锁。但是在特殊场景下我们也可以采用java.util.concurrent包提供的线程安全的对象,避免加锁从而达到高效的目的。但是,这些线程安全的对象仅仅指的是针对于原子性操作是线程安全的,如果多个方法同时调用无法保证线程安全,只能考虑加锁。这里我们举个列子:假设我们在多线程高并发场景下使用java.util.concurrent.Conc...

2019-08-10 18:05:58 2779

原创 面试锦集:手写一个同步类容器之Lock/Condition await signalAll实现

互联网大厂面试必考题目:手写一个同步类容器,支持多个生产者线程以及多个消费者线程的阻塞调用。采用 Lock/Condition await signalAll实现,更精确定位唤起的线程。我第一次去大厂面试都被难住了!!!package com.container;import java.util.LinkedList;import java.util.concurrent.Time...

2019-08-09 21:19:12 307

原创 面试锦集:手写一个同步类容器之wait/notify/notifyAll实现

互联网大厂面试必考题目:手写一个同步类容器,支持多个生产者线程以及多个消费者线程的阻塞调用。采用 wait notify/notifyAll实现。我第一次去大厂面试都被难住了!!!package com.container;import java.util.LinkedList;import java.util.concurrent.TimeUnit;import java.ut...

2019-08-09 21:13:41 220

原创 深入浅出设计模式:单例模式之静态内部类

谈到单例模式,首先需要说明一下,单例模式(Singleton Pattern)是JAVA中最简单的设计模式之一。这种类型的设计模式属于创建型模式。保证一个类仅有一个实例,并提供一个访问它的全局访问点。要实现一个线程安全的单例模式有多种做法。常见的有懒汉式、饿汉式、双检锁/双重校验锁、静态内部类、枚举等方式。每种方式都有优缺点,并不偏向某一种创建方式。具体情况具体分析,然后采用比较好的创建方式才...

2019-08-08 19:24:25 219

原创 设计模式:单例模式之双检锁/双重校验锁

谈到单例模式,首先需要说明一下,单例模式(Singleton Pattern)是JAVA中最简单的设计模式之一。这种类型的设计模式属于创建型模式。保证一个类仅有一个实例,并提供一个访问它的全局访问点。要实现一个线程安全的单例模式有多种做法。常见的有懒汉式、饿汉式、双检锁/双重校验锁、静态内部类、枚举等方式。每种方式都有优缺点,并不偏向某一种创建方式。具体情况具体分析,然后采用比较好的创建方式才...

2019-08-08 18:48:08 2075

原创 面试锦集:JAVA中存在i+1小于i的情况吗?

JAVA中存在i+1<i的情况吗,请代码实现并详细说明?面试中被问到这个问题,小伙伴们是不是很疑惑,此时内心是不是在想WHAT,发生了什么,这么多年的数学难道白学了。很显然在JAVA中是存在的,我们这里直接上代码。package com.algorithm;import java.util.ArrayList;import java.util.List;/** *...

2019-08-07 17:47:40 1318 1

原创 JAVA二分查找/折半查找

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二分查找时间复杂度为O(log2n),具体关于时间复杂度的推理大家可以去看百度百科!!!package com.algorithm;import java.util.Arrays;/** * 面试锦集: * 二分查找/折半查...

2019-08-06 18:26:32 284

原创 详解JAVA冒泡排序

冒泡排序可以说是常见的几种排序中相对简单的,冒泡排序时间复杂度为O(n²),具体关于时间复杂度的推理大家可以去看百度百科!!!package com.algorithm;import java.util.Arrays;/** * 面试锦集: * 冒泡排序你写得好吗? * * @author 小辉GE/小辉哥 * <p> * 2019年8月6日 下午12:30:...

2019-08-06 18:14:18 143

原创 探秘如何成为优秀的架构师

谈到架构师,大家都知道架构师是站在技术领域尖端人才,也是许多程序员梦寐以求的职位。但是很不幸,想成为一名优秀的架构师,需要太多的技术积累、知识沉淀!一名优秀的架构师不仅需要非常广的技术面,还需要深入技术底层原理,同时应该具备强大的学习能力,和勇于担当的精神。优秀的架构师需要了解前端、后端、大数据、人工智能领域等。毕竟,企业的技术能走多远除了CTO,架构师也是很重要的一环,关系到整个企业的技术规...

2019-08-05 16:45:10 360

原创 网络爬虫小区均价数据之Groovy

随着互联网信息大爆炸,网络爬虫应该是如今很多数据公司都会用到的技术,目前主流的技术有很多,例如:JAVA、Groovy、Python、Nutch等,太多各种各样的技术都可以实现。本人主要使用过JAVA、Groovy做过网络爬虫。对于有些小伙伴可能没有接触过Groovy,我在这里简单解释一下,Groovy是一种基于JVM(Java虚拟机)的动态脚本语言,详细的解释大家可以在百度百科搜索。下面是我...

2019-08-04 20:06:31 352

2019年9月统考-计算机应用基础资料.zip

2019年09月计算机应用基础统考资料。包含计算机应用操作题(excel电子表格、Internet应用、Outlook、PowerPoint演示文稿、Windows操作系统、多媒体技术)操作视频,以及近10套计算机应用基础综合模拟题。资料全面。身边朋友亲测过,基本考前提前一周至两周复习,基本都可以过。

2019-12-19

2019年9月统考-大学英语B资料.zip

2019年09月大学英语B统考最新资料,包含单项选择、综合复习、作文万能模板、统考大纲、统考必过秘诀,资料全面。身边朋友亲测过,基本考前提前一周至两周复习,基本都可以过。

2019-12-19

java-design-patterns-master.zip

JAVA设计模式一直是JAVA最考验内功的技术点。有句话说的很好,理解吃透设计模式概念如果是3分的难度,那么自己能写出来就是10分的难度,灵活应用在项目中就是100分的难度。java-design-patterns-master是github上比较优秀的设计模式项目,这里与大家分享!

2019-08-08

apollo-master.zip

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。 服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。 Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。 .Net客户端不依赖任何框架,能够运行于所有.Net运行时环境。

2019-08-08

JAVA JDK1.8_API(官方下载).zip

JAVA JDK1.8 API, 官方JDK手册。JAVA程序员开发必备手册,方便深入JDK 源码、学习源码!

2019-08-08

空空如也

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

TA关注的人

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