自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (11)
  • 收藏
  • 关注

原创 java高级面试必知必会

ConcurrentHashMap & HashMap最清晰的底层原理分析(基于JDK1.7跟1.8比较) 类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机 JVM内存管理机制:有哪些区域,每个区域做了什么 zookeeper相关,节点类型,如何实现服务发现和服务注册 分布式系统---幂等性设计 线程池的基本知识 volatile的原理和使用...

2018-11-04 21:10:53 2600 1

原创 Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)

这篇文章是关于这两个同步锁的简单总结比较,关于底层源码实现原理没有过多涉及,后面会有关于这两个同步锁的底层原理篇幅去介绍。相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之间来回切换,代价很高...

2018-10-22 11:45:13 109617 33

原创 关于线程池最基本的东西

最近用到多线程了,特意翻看一些关于多线程、线程池的文章,因为平常用的不是很多所以对这方面不是特别的了解,只是简单会使用并不清楚原理什么的。今天我就总结下我这几天看的一些东西,深层次的就不写啦,也没有时间去仔细查看,只总结一些日常使用所需要了解的要点。一、创建线程池需要哪些参数先来说说ThreadPoolExecutor源码,查看创建线程池的构造函数:public ThreadPool...

2018-09-30 22:33:16 499

原创 使用map做定时缓存

今天做需求发现得使用缓存,但是这个项目里面没引入redis等,又不想麻烦引入所以就使用map作为缓存使用,便记录下来,也许对大家有需要。首先定义一些所需要的变量等作为Map的key: //用于缓冲数据Map private HashMap<String, Object> cacheMap = new HashMap<String, Object>(); //时间key...

2018-03-19 17:37:57 5337 6

转载 一个简单实用高效的内存缓存

思路也很简单。1、使用一个 static 修饰的 ConcurrentHashMap 对象保存数据。2、存入数据的时候把存入的实际数据增加一个外包装,顺便加上存入时间,和过期时间。3、取出数据的时候校验是否过期,如果过期则直接返回 null4、取数据的时候还可以增加一个数据装载器,如果缓存中没有数据或者已经过期,则调用数据装载器加载最新的数据并且加入缓存,并返回。基本思路有了...

2019-08-20 09:25:11 556

原创 快速排序原理解析(简单易懂图文代码配套)

什么是快速排序通冒泡排序一样,快速排序也属于叫唤排序,通过元素之间的比较和交换来达到目的。不同的是,冒泡排序在每一轮中只把1个元素冒泡到数列另一端,而快排则在每一轮挑选一个基准元素,并让其他比他大的元素移到数列一边,比它小的移到另一边,相当是把数列拆成了两个部分。这种思路其实叫分治法。选定基准元素(pivot)在分治过程中,以基准元素为中心,把其它元素移动到它的左右两边。那么怎么选基准...

2019-07-26 18:47:40 2435

原创 Redis快速理解---redis的对象类型与内部编码

Redis的对象类型与内部编码Redis支持5种对象类型,而每种结构都有至少两种编码;这样做的好处在于:一方面接口与实现分离,当需要增加或改变内部编码时,用户使用不受影响,另一方面可以根据不同的应用场景切换内部编码,提高效率。关于Redis内部编码的转换,都符合以下规律:编码转换在Redis写入数据时完成,且转换过程不可逆,只能从小内存编码向大内存编码转换。1、字符串(1)概况...

2019-04-04 20:03:28 636

原创 Redis快速理解---数据存储实现细节及内部结构

1、Redis数据存储的细节概述关于Redis数据存储的细节涉及到内存分配器(如jemalloc)、简单动态字符串(SDS)、5种对象类型及内部编码、redisObject。在讲述具体内容之前,先说明一下这几个概念之间的关系。下图是执行set hello world时,所涉及到的数据模型。(1)dictEntry:Redis是Key-Value数据库,因此对每个键值对都会有一个...

2019-04-04 19:58:31 880

原创 volatile的使用及其原理

volatile的作用相比Sychronized(重量级锁,对系统性能影响较大),volatile提供了另一种解决可见性和有序性问题的方案。对于原子性,需要强调一点,也是大家容易误解的一点:对volatile变量的单次读/写操作可以保证原子性的,如long和double类型变量,但是并不能保证i++这种操作的原子性,因为本质上i++是读、写两次操作。volatile的使用1、防重排序...

2018-11-04 20:56:32 533

转载 分布式系统---幂等性设计

WEB资源或API方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用。幂等性是系统的接口对外一种承诺(而不是实现), 承诺只要调用接口成功, 外部多次调用对系统的影响是一致的。幂等性是分布式系统设计中的一个重要概念,对超时处理、系统恢复等具有重要意义。声明为幂等的接口会认为外部调用失败是常态, 并且失败之后必然会有重试。例如,在因网络中断等原因导致请求方未能收到请求返回值的情况下,如果该...

2018-10-20 14:27:41 258

转载 ConcurrentHashMap & HashMap最清晰的底层原理分析(基于JDK1.7跟1.8比较)

前言Map 这样的 Key  Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。HashMap众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中...

2018-10-19 13:41:26 718

原创 redis五种常用的数据结构使用

     Redis之所以如此出名一大原因就是redis有多种数据结构,可以处理满足复杂的业务逻辑以及适应多种场景需求。接下来就简单介绍下五种常用的数据结构。1、String字符串String 数据结构是简单的 key-value 类型,value 不仅可以是 String,也可以是数字(当数字类型用 Long 可以表示的时候encoding 就是整型,其他都存储在 sdshdr 当做字符...

2018-09-26 22:06:21 771

原创 js页面加水印防复制防另存为代码(纯js)

这段代码是给前端页面添加水印的代码..何为水印?是可以显示登录人的姓名也可以定制一些内容等...代码如下:前提是得引用下面两个js  可以去下载引入<html><head> <script src="jquery-1.8.3.min.js" type="text/javascript"></script> <scri

2018-07-23 13:27:22 1828 1

原创 二维码生成小插件代码(纯js)

qrious是一款基于HTML5 Canvas的纯JS二维码生成插件。通过qrious.js可以快速生成各种二维码,你可以控制二维码的尺寸颜色,还可以将生成的二维码进行Base64编码。qrious.js二维码插件的可用配置参数如下: 参数 类型 默认值 描述 background ...

2018-07-22 21:59:03 2190 5

原创 idea URI is not registered

idea项目的xml文件报错如下图:解决方法:点击+号把红色路径加进去就OK了

2018-07-17 23:54:14 1162

原创 FastDFS分布式文件服务器快速入门案例

什么是FastDFSFastDFS 是用 c 语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用 FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS 架构包括 Tracker server 和 Storage server。客户端请求 Tracker server...

2018-07-07 13:39:24 460

原创 idea列编辑快捷键

当我们想要选中一列时,在eclipse中alt+shit+a就可以选中一列了,在网上很多的idea中列编辑的使用,但是对我的电脑却不管用,也不太清楚在哪里设置最后无奈乱试一通,结果找到了alt+capslk(大小写切换)+鼠标左键...

2018-06-23 17:24:10 7327

原创 list分批操作算法

 对于批量操作数据库,比如list批量更新、插入等。如果一次传入list太大比如2W数据这样数据库的压力会很大。可以利用list的subList方法实现分页分批效果:List<Integer> listPageExpress = new ArrayList<Integer>();List<Integer> pageList = new ArrayL...

2018-06-23 17:20:45 1063

原创 SpringBoot迁移遇到的一些坑

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org.springframework.data.redis.core.RedisTemplate<?, ?>' available: expected single matching bean but found 2: redisTemplate,stringRedisTemplate

2018-05-15 17:25:35 11112 4

原创 Git分布式 & SVN集中管理式

git&svn对比一、集中版本控制系统svnsvn属于集中式版本管理控制系统,系统中保存了所有文件的修订版本,而协同工作人员通过连接svn服务器(中央服务器),提取出最新的文件,获取提交更新下图就是标准的集中式版本控制工具管理方式:电脑A,电脑B,电脑C都提交代码到中央服务器,且从中央服务器下载,更新代码进行协同开发工作.集中管理方式在一定程度上看到其他

2017-10-06 20:26:56 493 1

原创 类加载机制的步骤,每一步做了什么,static和final修改的成员变量的加载时机

1.类的加载过程  JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始

2017-09-25 17:36:28 3599

原创 Memcached, Redis, MongoDB区别

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。  Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。  MongoDB是一个基于分布式文件存储的数据库,文档型的非关系型数据库,与上面两者不同。 1.性能上:     性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可

2017-09-24 23:04:35 235

原创 乐观锁与悲观锁

先说乐观锁和悲观锁的机制:1. 乐观锁是一种思想,具体实现是,表中有一个版本字段,第一次读的时候,获取到这个字段。处理完业务逻辑开始更新的时候,需要再次查看该字段的值是否和第一次的一样。如果一样更新,反之拒绝。之所以叫乐观,因为这个模式没有从数据库加锁。2. 悲观锁是读取的时候为后面的更新加锁,之后再来的读操作都会等待。这种是数据库锁乐观锁优点程序实现,不会存在死锁等问题。他的

2017-09-24 22:43:14 419

原创 redis基础信息

redis的应用场景缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)分布式集群架构中的session分离。聊天室的在线好友列表。任务队列。(秒杀、抢购、12306等等)应用排行榜。网站访问统计。数据过期处理(可以精确到毫秒) 数据结构有五种1.    字符串String2.    列表list redis中使用的是双向循环链表来实现的lis...

2017-09-23 20:30:53 258

原创 nignx 负载均衡的几种算法介绍

一、Nginx负载均衡算法    1、轮询(默认)        每个请求按时间顺序逐一分配到不同的后端服务,如果后端某台服务器死机,自动剔除故障系统,使用户访问不受影响。    2、weight(轮询权值)        weight的值越大分配到的访问概率越高,主要用于后端每台服务器性能不均衡的情况下。或者仅仅为在主从的情况下设置不同的权值,达到合理有效的地利用

2017-09-23 20:04:56 273

java并发编程实战pdf高清目录版

书深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册。书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。, 本书适合Java程序开发人员阅读。

2018-09-20

页面加水印防复制另存为

页面加水印防复制另存为页面加水印防复制另存为页面加水印防复制另存为纯js代码

2018-07-23

二维码生成插件

二维码生成插件二维码生成插件二维码生成插件二维码生成插件二维码生成插件点开就可以用

2018-07-22

亿级流量网站架构核心技术.

亿级流量网站架构核心技术.亿级流量网站架构核心技术.高清PDF高清PDF高清PDF高清PDF高清PDF高清PDF高清PDF高清PDF

2018-07-17

hadoop权威指南第四版高清目录

hadoop权威指南第四版高清目录hadoop权威指南第四版高清目录hadoop权威指南第四版高清目录hadoop权威指南第四版高清目录

2018-06-28

hadoop权威指南第三版中文目录清晰版

hadoop权威指南第三版中文目录清晰版hadoop权威指南第三版中文目录清晰版hadoop权威指南第三版中文目录清晰版

2018-06-28

jdk1.8免安装+一键设置环境变量工具

这是JDK免安装版本解压皆可用,而且带一键设置环境变量设置工具,超级方便

2018-06-23

高性能mysql

高性能mysql高性能mysql高性能mysql高性能mysql高性能mysql高性能mysql

2018-04-24

Python编程:从入门到实践原版高清PDF版

Python编程:从入门到实践原版高清PDF版,Python编程:从入门到实践原版高清PDF版,有目录原版

2018-04-24

大数据高级开发工程师课程大纲

大数据高级开发工程师课程大纲,只是学习所有的大纲,可以根据做对应的学习

2018-04-19

上传文件demo(包含图片压缩多图上传)

本小demo是一个上传文件demo(包含图片压缩多图上传),文档上传,上传到本地,运行先去改存到本地的地址位置。

2017-09-24

空空如也

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

TA关注的人

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