自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

转载 ConditionObject分析

  ConditionObject是AQS中的内部类,提供了条件锁的同步实现,实现了Condition接口,并且实现了其中的await(),signal(),signalALL()等方法。  Condition的分析点此  AbstractQueuedSynchronizer(AQS)的分析点此  ConditionObject主要是为并发编程中的同步提供了等待通...

2018-04-30 10:23:00 183

转载 AbstractQueuedSynchronizer原理分析

  AbstractQueuedSynchronized 以下简称AQS,是用来构建锁或者其他同步组件的基础框架。  在AQS中,为锁的获取和释放提供了一些模板方法,而实现锁的类(AQS的子类)需要实现这些模板方法中的同步方法。  这些方法包括:  ·tryAcquire():尝试以独占模式获取锁  ·tryRelease():尝试释放独占模式的锁  ·tryA...

2018-04-30 08:49:00 178

转载 Condition分析

  Condition中提供了一组类似于Object中的监视器方法。与Lock配合可以完成等待通知模式。    Condition只能通过Lock#newCondition()方法获取,所以Condition是依赖于Lock的,而在调用这个方法之前,线程需要先获得锁,  同时,在一个Lock中,可以获取多个Condition对象。  主要方法:  void...

2018-04-28 12:56:00 170

转载 Lock分析

  Lock接口是锁的实现,用来控制多个线程访问共享资源的方式,是在java 1.5的时候引入的,在此之前,只能通过synchronized的方式来取得对象的锁。  synchronized中的锁是隐式获取释放的,而Lock中的锁需要显示的获取和释放,同时提供了可中断,超时获取等Synchronized不具备的特性。    由于Synchronized中的是隐式的获取和...

2018-04-28 12:27:00 120

转载 LockSupport分析

LockSupport是java.util.concurrent.locks包中的一个工具类,主要提供了一些在创建锁和同步类中用来阻塞其他线程的原始操作。当有多个线程需要获取同一个资源的锁的时候,如果第一个线程已经获取了锁,则后面的线程需要阻塞等到前面的线程释放锁。这个阻塞的操作就是通过LockSupport的park方法来实现的,而唤醒阻塞的线程则是通过LockSuppo...

2018-04-28 12:03:00 85

转载 ConcurrentHashMap源码分析(1.8)

0、说明1、ConcurrentHashMap跟HashMap,HashTable的对比2、ConcurrentHashMap原理概览3、ConcurrentHashMap几个重要概念4、ConcurrentHashMap几个重要方法5、ConcurrentHashMap的初始化6、ConcurrentHashMap的put操作详解7、ConcurrentH...

2018-04-22 09:56:00 483

转载 Virtual Box下虚拟机复制后ip地址重复

通过桥接模式上网的虚拟机在复制之后,出现三台机器的ip地址都是一样的,还都可以上网,主要是因为在复制的时候,把网卡信息啥的都一起复制了,为了设置为不同的ip,需要修改复制后的机器的mac地址。首先删除/etc/udev/rules.d目录下的两个文件·70-persistent-cd.rules·70-persistent-net.rules然后,在Virtual...

2017-10-16 12:32:00 1056

转载 vi/vim下tab的长度修改

默认下的长度是8,如果要想修改可以在根目录下新建‘.vimrc’文件里面的内容是:[root@localhost 09:06 ~]# cat .vimrcset tabstop=4set shiftwidth=4[root@localhost 09:07 ~]#然后让配置立即生效[root@localhost 09:08 ~]# source .v...

2017-09-18 09:49:00 94

转载 Redis集群搭建

  Redis集群是一个提供在多个Redis节点间共享数据的程序集。  Redis集群中不支持处理多个keys的命令。  Redis集群通过分区来提供一定程度的可用性。在某个节点宕机或者不可用的时候可以继续处理命令。Redis集群数据分片  在Redis集群中,使用数据分片(sharding)而不是一致性hash(consistency hashing)来实现,一个Red...

2017-09-12 21:20:00 89

转载 Redis事务管理

  用过其他关系型数据库(比如msql)的肯定都指定,在关系型数据库里面的事务可以保证多个命令操作要么同时成功,要么同时失败。并且在执行事务的时候,可以有隔离级别。  但是在Redis中的事务,只是保证事务同时执行多个命令,并且不会被其他客户端的命令所打断,但是,如果在执行的时候发现中断,错误之类的,Redis中的事务是没有回滚的功能。  在Redis中提供了DISCART、EX...

2017-09-10 09:21:00 76

转载 Redis管理之持久化

Redis的一大重要特征就是支持持久化。Redis提供了两种不同的持久化方式:RDB和AOF。 RDB持久化可以在指定的时间间隔内生成数据集的快照。由于是定期的生成数据集的快照,所以,如果服务器出现异常停止的时候,那可能就会造成上一次备份后面的数据没有被保存下来。AOF持久化以纯文本的方式记录了所有的操作命令。aof支持不同的fsync策略,可以选择每秒fsync,默认是每秒。如...

2017-09-09 21:25:00 79

转载 Redis常用命令--SortedSet

SortedSet是一个类似于Set的集合数据类型,里面的每个字符串元素都关联到一个score(整数或浮点数),并且总是通过score来进行排序着。并且可以取得一定范围内的元素。在Redis中大概有21个用来操作SortedSet的命令。ZADD key [NX|XX] [CH] [INCR] score member [score member ...]:将一个或多个...

2017-09-09 15:09:00 97

转载 Redis常用命令--Sets

Set是不重复且无序的字符串元素的集合。还可以对set集取交集,并集,差等等。在Redis中大概有15个操作Set的命令。SADD key member [member ...]:添加一个或者多个元素到集合(set)里,复杂度O(N),N为要添加的元素个数。SMEMBERS key:获取集合key里面的所有的成员。复杂度为O(N),N为集合的基数。SCARD k...

2017-09-08 21:00:00 77

转载 Redis常用命令--Hashes

Hash是由键值对组成的map。Hashes的底层是通过字典实现的。一个哈希表里面可以有多个哈希表节点。而每个哈希节点就保存了字典中的一个键值对。字典是一种用于保存键和值对的抽象数据结构。字典里的每一个键都是唯一的。在哈希表里面存在一个哈希表数组。其中每个元素指向一个字典的键值对。在哈希表里面还记录了一个哈希表的大小。已经使用的节点数。还有一个sizemask,它总是比哈希表...

2017-09-08 19:19:00 80

转载 Redis常用命令--Lists

List是一个双向链表,按照插入顺序排序,可以添加一个元素到头部或者尾部。当对一个空key执行插入操作的时候会创建一个新表。如果要清空列表,则会杀出对应的key空间。在List中保存了头节点和未节点,以及链表包含的节点数量。所以查询链表中节点数量的复杂度为O(1)。在List中保存的每个节点都保存了前一个节点,后一个节点,以及节点本身。头结点的前一个节点为NULL,尾节点...

2017-09-07 20:11:00 115

转载 Redis常用命令--Keys

Redis是一个key-value型的数据库。所以在Redis也提供了很多操作key的命令,大概有22个。EXISTS key [key ...]:查询一个key是否存在,时间复杂度为O(1),存在返回1,否则返回0DEL key [key ...]:删除指定的key(一个或多个),时间复杂度O(N),N为要删除的key的个数DUMP key:序列化给定key,并返...

2017-09-06 19:46:00 88

转载 Redis数据类型--string

在Redis中支持丰富的数据类型的存储系统,包括:字符串(string),散列(hashes),列表(lists),集合(sets),有序集合(sorted sets),与范围查询,bitmaps,hyperloglogs和地理空间(geospatial)索引半径查询。针对每一种数据类型都提供了丰富的操作命令。字符串(String)  我们知道,redis是用C语言编写的,但...

2017-09-04 19:44:00 190

转载 Redis安装与卸载

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持丰富的数据类型,和高速的内存读写。正在逐步取代memcached的地位。下面就演示下在centos6.9的32位下的安装配置过程。1、安装2、配置3、卸载1、安装  ①我们可以通过在官网下载tar.gz的安装包,或者...

2017-09-03 14:20:00 218

转载 Shiro加密

在开发的时候,很多数据我们都希望是以加密过后的形式存储起来,而不是最原始的数据。在shiro中也提供了编码,解码,加密,加密算法实现等等一系列的内容。编码/解码在org.apache.shiro.codec包中,提供了Base64,16进制等的编码解码工具类的实现。package com.fuwh.demo;import org.apache.shiro...

2017-09-02 13:21:00 158

转载 Shiro整合Spring

首先需要添加shiro的spring整合包。要想在WEB应用中整合Spring和Shiro的话,首先需要添加一个由spring代理的过滤器如下:<!-- The filter-name matches name of a 'shiroFilter' bean inside applicationContext.xml --><filter> ...

2017-09-01 21:31:00 78

转载 Shiro集成Web

Shiro不仅可以集成到web中,也可以集成Spring。1、在WEB中添加Shrio支持2、WEB中INI配置3、JSP/GSP标签在WEB中添加Shrio支持如果要想在web中使用Shrio,需要在web.xml文件中添加一个监听器和过滤器。<listener> <listener-class>org.apache.sh...

2017-08-31 20:22:00 75

转载 Shrio授权验证详解

所谓授权,就是控制你是否能访问某个资源,比如说,你可以方位page文件夹下的jsp页面,但是不可以访问page文件夹下的admin文件夹下的jsp页面。在授权中,有三个核心元素:权限,角色,用户。每个用户可以有多个角色,每个角色也可以有多个权限。权限:代表了可以执行的行为,例如对表的读写之类的。角色:代表了一组权限用户:代表了一个subject,可以为用户赋予角色,或...

2017-08-27 15:06:00 257

转载 Shrio认证详解+自定义Realm

Authentication(身份认证)是Shiro权限控制的第一步,用来告诉系统你就是你。在提交认证的时候,我们需要给系统提交两个信息:Principals:是一个表示用户的唯一属性,可以是用户名,邮箱之类的。Credentials:是证明用户身份的证书,可以是密码或者指纹之类的。认证主要分为三步:1、收集认证信息2、提交认证信息3、如果认证成功,则允许访问...

2017-08-26 16:15:00 140

转载 Shiro入门

Shiro是由Apache提供的一个强大且易用的Java安全开源框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。在Shrio中主要提供了授权,认证,加密,事务管理(可以不需要web容器 ),web集成,集成等主要功能。Shrio主要内容:Authenticat...

2017-08-20 20:18:00 83

转载 Log4j1.2配置详解

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志的输出到控制台,或者文件等等。同时,在各大框架中也主要是使用log4j来进行日志的输出。下面是log4j1.x版本的详细配置:在1.x版本的log4j中,只需要一个依赖包:log4j-1.x.x.jar要使用log4j还需要一个配置文件(log4j.properties),来指定log输出的...

2017-08-20 14:55:00 253

转载 linux之awk命令详解

AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据...

2017-08-14 17:32:00 147

转载 linux之sed命令详解

sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以来自键盘输入,文件重定向,字符串,变量,或者是管道的文本。并将其复制到缓冲区,然后读取命令行的命令,对此命令要求的行号进行编辑。用法:sed共有三种用法:①直接在命令行中使用  sed [选项] 'sed命令' 输入文件②将sed命令写入脚本文件中,使用sed命令调用  sed [选...

2017-08-11 22:17:00 162

转载 Linux数据流重定向与管道

数据流重定向简单来说就是把原本应该输出到某处(比如说屏幕)的数据,重定向其输出目的地,到其他的地方(比如文件)。linux中的输入与输出:  标准输入(stdin):默认从键盘输入  标准输出(stdout):执行的正常结果信息,默认输出到屏幕  标准错误输出(stderr):执行的错误信息,默认输出到屏幕那就让我们来体验下这三个鬼东西吧:[fuwh@loca...

2017-08-05 09:03:00 76

转载 Linux提示字符设置

当我们登陆linux后,显示的提示字符究竟是什么意思呢?又可不可以设置呢。首先来看看默认的显示:普通用户:[fuwh@localhost ~]$root用户:[root@localhost ~]#可以看到,普通用户和root用户的显示是有差别的。那每个符号又是什么意思呢 ?fuwh/root:当前登陆的用户。@localhost:连接的主...

2017-07-30 14:09:00 171

转载 HtmlUnit入门二

  由于在在WebClient中,默认支持对CSS,JavaScript的解析,因此会总是会出现很多错误信息,并且执行速度也很慢。  因此,我们可以选择关闭掉WebClient对CSS,JavaScript的解析。  使用WebClient#getOption()方法,返回一个WebClientOptions对象,可以对WebClient进行很多设置。比如:使用代理,设置连接的有...

2017-07-29 20:24:00 97

转载 HtmlUnit入门一

htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容。项目可以模拟浏览器运行,被誉为java浏览器的开源实现。是一个没有界面的浏览器。采用的是Rhinojs引擎。模拟js运行。使用htmlunit抓取网页大概可以分为以下几个步骤:1、定义一个WebClient客户端。  就相当于定义了一个没有界面的浏览...

2017-07-29 15:01:00 130

转载 jsoup入门

jsoup是一款Java的HTML解析器,主要用来对HTML解析。官网 中文文档在爬虫的时候,当我们用HttpClient之类的框架,获取到网页源码之后,需要从网页源码中取出我们想要的内容,就可以使用jsoup这类HTML解析器了。可以非常轻松的实现。虽然jsoup也支持从某个地址直接去爬取网页源码,但是只支持HTTP,HTTPS协议,支持不够丰富。所以,主要还...

2017-07-27 21:22:00 452

转载 Centos常用命令之:正则表达式

我们知道,正则表达式可以大大的提高我们的工作效率。在了解正则表达式之前,我们需要了解,通配符的概念。在linux中,我们在使用ls这个命令的时候经常会使用下面这种用法[fuwh@localhost stu]$ ll lin1*-rw-r--r--. 1 fuwh fuwh 2865 7月 26 10:45 lin1-rw-r--r--. 1 root root ...

2017-07-27 14:24:00 139

转载 HttpClient入门三

我们在爬取网页的时候,由于需要不断的访问目标服务器,因此给目标服务器带来了很多的压力。因此,很多访问量大的服务器都会有保护措施,如果检测到我们的行为,可以会禁止我们的ip访问。这个时候,我们就需要使用到代理ip来进行访问了。在HttpCLient中,提供了一个org.apache.http.client.config.RequestConfig这个类,可以通过它的custom...

2017-07-26 13:19:00 57

转载 Centos常用命令之:压缩与解压缩

  在Linux中,压缩文件的扩展名主要是:[*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2],虽然,我们知道,在LInux中,文件的扩展名没有什么作用,但是由于在Linux中支持的压缩命令非常的多,为了在解压缩的时候知道用那种方式来解压缩,就需要带上特定的扩展名。扩展名对应的压缩方式:◇*.Z:compress程序压缩的文件  ◇*.gz:gzip程...

2017-07-26 11:05:00 192

转载 Centos常用命令之:搜索

在linux中,所有的文件都是以目录树的形式存在的。而每个发行版的文件存放之间又会有些差别。这时候,如果我们想看某个命令或者文档的时候就必须先通过某种方式找到改文档的所在位置。在linux中提供了以下几种方式来查找◇which:查找命令◇whereis:寻找特定文件◇locate:寻找特定文件◇find:查找文件◇grep:查找文件内容(重要)◇wh...

2017-07-25 10:40:00 84

转载 Centos常用命令之:ln

在linux中[ln]这个命令用来创建连接文件。共有两种连接文件:一种是类似与Windows的快捷方式(软链接),另一种就是通过文件系统的inode来产生的新的文件名(硬链接)。这里解释下什么叫inode。我们在讲解[ls]命令的时候,说过[-i]这个选项可以查看到该文档的inode。其中最前面一列的数字就表示inode,它保存了该文档很多信息,其中有一项就是该文件真...

2017-07-25 09:33:00 190

转载 Centos常用命令之:VI

在Linux中,对文件内容的编辑莫过去vi命令了,它是每个发布版本中的标配。并且功能强大。在vi中一共有三种模式,一般模式(命令参照),编辑模式(命令参照)与命令模式(命令参照)。◇一般模式:当我们用vi打开一个文档的时候,就是一般模式了,这个时候,我们可以删除字符,删除行,也可以用上下左右来操作光标。也可以复制粘贴。◇编辑模式:当在一般模式下按下【i, I, o, O, a...

2017-07-24 21:06:00 123

转载 HttpClient入门二

通过上一节我们已经可以实现对一个网站源码的抓取。但是,有一些网站,在爬取的时候会出现如下的错误:HTTP/1.1 503 Service Unavailable<!DOCTYPE html><html> <head> <meta http-equiv="Content-Type" content...

2017-07-24 09:53:00 62

转载 HttpClient入门一

HttpClient是一个实现了Http协议的功能强大的编程工具包。要使用HttpClient,通常需要以下几部:1、常见一个HttpClient实例2、创建一个get或者post方法3、告诉HttpClient去执行获取的方法4、读取服务器的响应5、释放连接6、处理响应的内容下面这个实例就实现了一个从指定网页去读取网页内容的代码。...

2017-07-23 21:18:00 86

空空如也

空空如也

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

TA关注的人

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