自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Paranoid

要像一张邮票,坚持一件事情直到你到达目的地。

  • 博客(70)
  • 论坛 (1)
  • 问答 (4)
  • 收藏
  • 关注

原创 Java并发--synchronized实现原理及锁优化

注:本文中的部分内容摘抄自他人博客,如有侵权,请联系我,侵删~本篇博客主要讲述 synchronized 关键字的实现原理以及 JDK 1.6 后对 synchronized 的种种优化。synchronized 的使用不再赘述。博主目前依旧存在的疑惑请在阅读完此篇博客之后,帮助博主回答这三个问题:多线程争夺 Monitor 的具体过程是怎样的?是根据 ObjectMonit...

2018-04-27 11:38:27 4000 2

原创 Java源码--JDK 1.8 HashMap 重点源码部分剖析

注:感谢 美团点评技术团队 的分享~~,博客部分内容摘抄自其中。侵删!今天我们来探究一下 HashMap 的内部实现机制。 明确 JDK 1.8 中的 HashMap 使用数组 + 链表 + 红黑树的结构进行实现。HashMap 的底层思想主要是哈希表,我们来看看 Java 的设计者们是怎么使用数组 + 链表 + 红黑树设计出 HashMap 的。HashMap的基本...

2018-04-20 21:55:40 733

原创 JVM--从volatile深入理解Java内存模型

在上一篇博客JVM–解析Java内存区域及数据的内存分配与线程安全之间的一些联系中也说到了,想要理解volatile关键字,我们需要掌握Java虚拟机运行时数据区的相关知识,但是这还不够,只有理解了Java的内存模型,我们才能开始讲述volatile,而Java虚拟机运行时数据区是掌握Java内存模型的基础,所以如果你还没有看上一篇博客,请点击上方链接~~~引言既然本节讲述volatile关键字,那

2017-08-16 09:39:38 1465 5

原创 Geek--博客已迁

新博客地址:H.Y’s BLOG。CSDN有可能弃用,最后欢迎大家访问我的小站~

2018-12-08 18:41:56 429 3

原创 Spring--《Spring实战》The temporary upload location [/tmp/uploads] is not valid

在看《Spring实战》第七章的时候,需要上传文件,书上说的是将上传的图片保存在/tmp/uploads这个目录下,因此我给项目的根路径下创建了/tmp/uploads这个目录,但是却出现了标题中的错误,经过一番斗争之后,明白了问题的所在。问题分析要解决这个问题,我们需要看一下Spring的源码:public class StandardMultipartHttpServletRequest ext

2017-11-14 08:52:43 4580

原创 Spring--《Spring实战》第6章ValidationMessages.properties使用问题

package spittr.model;import org.apache.commons.lang3.builder.EqualsBuilder;import org.apache.commons.lang3.builder.HashCodeBuilder;import javax.validation.constraints.NotNull;import javax.validation.

2017-11-10 10:49:02 6048

转载 Spring--关于《Spring实战》中第5章SpringMVC中表单验证无效问题

原文地址:关于SpringMVC中表单验证无效问题

2017-11-10 10:23:15 550

转载 Spring--SpringMVC中使用bean来接收form表单提交的参数时的注意点

原文地址:SpringMVC中使用bean来接收form表单提交的参数时的注意点

2017-11-08 23:33:46 2520

转载 IDEA--【Intellij Idea】Project Structure 讲解

原文地址:【intellij idea】Project Structure 讲解

2017-11-06 17:58:12 1238

原创 Spring--java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource问题解决

IDEA报错如下:Caused by: java.lang.ClassNotFoundException: org.apache.commons.dbcp2.BasicDataSource at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1465)at org.apache.catali

2017-11-06 17:49:28 6996 3

原创 Web--Web缓存机制

什么是缓存Cache? 为什么人们要使用它?一个使用缓存Cache的站点会监听客户端向服务器端发出的请求,并保存服务器端的回应——比如HTML页面、图片等文件。接着,如果再次使用相同URL发送请求,他能够使用之前已经保存下来的反馈文件,而不是再次向服务器发出请求。有两个主要的理由让人们使用缓存: 减少延迟 — 因为所发出的网页请求是指向更接近客户端的缓存而不再是源服务器端,因此请求所花费时

2017-11-01 11:46:48 421

原创 JVM--Class类文件结构(二)

之所以将属性表拿出来单独进行讲解,就是因为在上一篇博客中我已经说过,在Class类文件中,最重要的当属常量池与属性表部分,而属性表中的属性目前已高达21项,当然我们不用全部记住它们,只需要熟悉其中的几个关键属性。属性表基本结构我们今天只谈其中的5种属性,如果你有兴趣,请下去自行了解~每个属性的名称都引用自常量池中一个CONSTANT_Utf8_info类型的常量来表示,属性...

2017-10-30 16:10:04 628

原创 C语言--一个实参与形参赋值引发的思考

首先来看一段代码:#include<stdio.h>void foo(const char **p) { }void main(int argc, char **argv) { foo(argv); return ;}我们对这段代码进行编译,发现它报出了警告:test.c: In function ‘main’:test.c:14:9: warning: passing arg

2017-10-27 00:24:51 1024 2

原创 JVM--Class类文件结构(一)

不知道大家有没有对.java文件进行编译之后生成的.class文件好奇过。我们都知道Java中的class文件是经过Java编译器对Java类文件进行编译后的产物。我想有不在少数的C程序员在学习Java之后在认知上会粗略的认为C程序在经过编译后产生的.out文件与.class文件在各方面大概相同,我刚开始也这样迷惑自己,但是随着学习的深入,我们必须搞清楚.class文件到底是个什么东西。那...

2017-10-20 23:50:16 2666 1

原创 Linux 新建用户、用户组以及为新用户分配权限

useradd命令useradd 选项 用户名 -d 目录,指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组,指定用户所属的用户组。 -G 用户组,指定用户所属的附加组。 -s Shell文件,指定用户的登录Shell。 -u 用户号,指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。例1:# useradd –d

2017-10-20 11:46:02 23176

原创 Java网络爬虫(十三)--PhantomJs的使用及性能优化

先说点题外话吧,在我刚开始学习爬虫的时候,有一次一个学长给了我一个需求,让我把京东图书的相关信息抓取下来。恩,因为真的是刚开始学习爬虫,并且是用豆瓣练得手,抓取了大概500篇左右的影评吧,然后存放到了mysql中,当时觉得自己厉害的不行,于是轻松的接下了这个需求。。。然后信心满满的开始干活。。首先查看网页源代码。。。???我需要的东西源代码里面没有!!!然后去问了学长。学长给我说,这是AJAX

2017-10-10 22:29:57 9243 8

原创 Java网络爬虫(十二)--使用tcpdump和Wireshark进行网络抓包与分析

最近打算通过学校的某某系统抓取一下每个学生的个人信息,由于需要进行模拟登录,所以就要对登录页面进行post参数的提交。但是在进行网络抓包的过程中,使用chrome自带的网络抓包分析工具(也就是F12)发现每次在进行登录提交表格之后,chrome并不能将所需要提交的参数表单抓取下来。(评论区提供的依然使用chrome的方法也可以解决这个问题)问了学长原因,觉得是登录成功之后因为页面的跳转需要进行

2017-09-24 16:00:03 3743 4

原创 Java并发--DCL双检查锁机制中的volatile

作为被面试官最喜欢问到的23种设计模式之一,我们不得不熟练掌握单例模式以及洞悉多线程环境下,单例模式所存在的非线程安全问题以及它的解决方式。注:这篇文章主要讲述多线程环境下单例模式存在的非线程安全问题,并不详细讲述单例模式。何为单例模式首先我们先大概了解一下单例模式的定义: 单例类只能有一个实例。 单例类必须自己创建自己的唯一实例。 单例类必须给所有其他对...

2017-08-29 14:14:58 1316

原创 Java网络爬虫(十一)--重构定时爬取以及IP代理池(多线程+Redis+代码优化)

一直觉得自己之前写的使用定时抓取构建IP代理池实在过于简陋,并且有一部分的代码写的并不合理,刚好最近又在学习多线程,就将之前的代码进行了重构,也方便对抓取代理ip有需求的人。之前自己写的那篇文章就不删除了,里面用到了MySQL以及循环调用ip的方法(一些东西也是值得了解的。取其精华,弃其糟粕吧),大家有兴趣的可以看一下(最主要的还是不舍得访问量,哈哈)。注:由于xici代理网的ip代理并不是很

2017-08-10 17:16:02 11253 7

原创 JVM--解析Java内存区域及数据的内存分配与线程安全之间的一些联系

最近一直在看《Java多线程编程核心技术》的第二章,主要讲的是线程共享变量与线程私有变量以及如何写出线程安全的代码。看这部分一开始没太注意,只是记住了一条规则,“类中的成员变量,也叫实例变量,也叫全局变量,它是非线程安全,是所有线程共享的变量,定义在方法中的私有变量是线程安全的,是每个线程私有的”。很好理解不是吗,然后一帆风顺的看到了关于volatile这部分的知识,看过之后我陷入了凌乱。。。关于...

2017-08-08 14:26:58 3187 15

原创 Java并发--详解this与Thread.currentThread()的区别

注:本系列博客参考《Java多线程编程核心技术》,主要是对书上的知识点进行总结,并记录学习过程。一直对并发这块比较感兴趣,也到了系统学习Java多线程的时间。目前所学习的书籍是《Java多线程编程核心技术》,买回来之后听说这本书不怎么样,豆瓣评分也就7点几,目前读完了第一章,感觉确实不是很好,但是也不算太坑,总的来说还是可以入手的。好了,废话不多说,开始正题。首先我们来看一份代码:...

2017-08-04 10:15:20 3627 5

原创 查找--二叉查找树分析与实现

为什么我们需要掌握这些“高端”的树型结构事实上,大型数据库的组织结构一般采用树型结构,我们必须要解决频繁更新数据的能力,要求支持高效的动态查找能力,包括记录的插入,删除,精确匹配查询,范围查询和最大值、最小值查询。但是由于数据库中包含了大量的记录,所以线性表的查询本身会因为记录太大而无法存储到主存之中,另外对于记录的插入和删除操作更需要移动大量的元素,这本身的效率是非常低下的。二叉...

2017-08-03 10:16:00 419

原创 排序--快速排序分析

快速排序实现代码:快速排序可以看到我的代码有一个错误版,我在这里给大家分析一下为什么会出现错误,并且将之记录以便今后进行查阅。快速排序(错误版分析)int Quick :: process(int array[], int l, int r) { int temp = array[l]; while(l != r) { while(array[r] >= temp) r

2017-07-22 00:20:16 371

原创 排序--归并排序

了解归并归并排序算法和快速排序算法是java.util.Arrays中使用的排序算法。对于一般的基本数据类型,Arrays.sort函数使用双轴快速排序算法,而对于对象类型使用归并排序(准确的说使用的是TimSort排序算法,它是归并排序的优化版本)。这样做的原因有两点,第一个原因,归并排序是稳定的,而快速排序不是稳定的。第二个原因,对于基本数据类型,排序的稳定性意义不大,但对于复合数据类型(...

2017-07-21 15:04:15 547 3

原创 Linux--记录使用Centos 7 的坑点

设定防火墙开放指定端口由于自己的腾讯云突然无法访问8080端口,在网上查阅了相关资料之后发现是防火墙的问题,因为Centos 7防火墙默认是不开放任何端口的,所以我们要对防火墙进行设置。Centos 7 不在使用以前的iptables,而是对防火墙进行了加强,现在使用的是firewalld,它的位置在/usr/lib/firewalld(系统配置)和/etc/firewalld(用户配置)都有相关设

2017-07-10 11:34:15 885 2

原创 Java网络爬虫(十)--使用多线程提升爬虫性能的思路小结

在开始说正事之前我先给大家介绍一下这份代码的背景,以免大家有一种雾里看花的感觉。在本系列的前几篇博客中有一篇是用多线程进行百度图片的抓取,但是当时使用的多线程是非常粗略的,只是开了几个线程让抓取的速度提升了一些(其实提升了很多),初步的使用了一下线程,这篇博客将线程的使用进行了一些深入。项目背景博主这次的需求是抓取一些淘宝的数据,在此之前我们需要掌握基本的并行爬虫的相关知识。在这里

2017-06-14 15:04:26 10981 9

原创 Redis数据库--快速入门手册

注:本篇博客的所有测试环境均为Ubuntu16.04之下,本篇博客总结自Redis教程。数据库的安装与配置Ubuntu下安装 $sudo apt-get update $sudo apt-get install redis-server 服务端启动命令 redis-server客户端启动命令 redis-cli启动成功之后会出现: redis 127.0.0.1:

2017-06-07 20:32:02 812 1

原创 Java网络爬虫(九)--海量URL去重之布隆过滤器

简介布隆过滤器当我们要对海量URL进行抓取的时候,我们常常关心一件事,就是URL的去重问题,对已经抓取过的URL我们不需要在进行重新抓取。在进行URL去重的时候,我们的基本思路是将拿到的URL与已经抓取过的URL队列进行比对,看当前URL是否在此队列中,如果在已抓取过的队列中,则将此URL进行舍弃,如果没有在,则对此URL进行抓取。看到这,如果有哈希表基础的同学,很自然的就会想到那么如果用哈希...

2017-06-06 19:40:14 7218 9

原创 Servlet--Servlet进阶API、过滤器、监听器

Servlet初始化过程、ServletConfig每个Servlet都必须由Web容器读取Servlet设置的信息,初始化等,才能生成对应的Servlet实例。对于每个Servlet的设置信息,Web容器都会为其生成一个ServletConfig作为代表对象。在Servlet接口上,定义了与Servlet生命周期及请求服务相关的init,service,destroy三个方法。每一次请求来到容器时

2017-06-05 21:55:02 574

原创 Servlet--浅析会话管理之Cookie、URL重写、HttpSession原理

平常我们在浏览网页的时候,会有一些网站要求我们进行登录,当我们成功登录之后,会发现我们所浏览的所有相关网页都不再需要我们重新登录,这是为什么呢。还有当我们在电商平台进行购物的时候,我们虽然是在同一家电商平台进行购物,但是我们明明是在不同的页面进行的添加购物车的选项,为什么最后我们可以在购物车中找到我们所添加的所有商品呢。其实,这些都是我们在Web后台方面使用了Cookie技术。Cookie简介Coo

2017-06-04 00:17:32 2296

原创 查找--理解哈希算法并实现哈希表

我们喜欢使用数组进行数据的查找,就是因为数组是一种“随机存取”的数据结构,我们根据数组的起始地址和数组元素的下标值就可以直接计算出每一个数组元素的存储位置,所以它的查找时间是O(1),而与数组的个数无关。我们在这个思想的基础上,可以联想到,如果有一种数据结构,让我们在进行关键字查找的时候,也可以像数组一样,进行随机存储,使其时间复杂度从O(n)降到O(1),那就可以大大提高查找的效率。我们的前...

2017-06-01 22:12:17 2616 1

转载 Java--Integer与int的种种比较

本文转载至:残剑如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。...

2017-05-29 22:51:31 501

原创 Java网络爬虫--正则表达式之详解贪婪、逐步、独吐量词

除过正则表达式的基本概念与特性还有使用方法之外,我们在解析html的时候,如果要进行字符串的匹配,必须还要熟悉正则表达式之中量词的使用法则,今天我们就来谈谈贪婪、逐步、独吐这三种量词的使用。贪婪量词我们先来看一下经常使用的贪婪量词都有哪些: X?: X项目(项目也可以理解为X代表的变量,项目比较准确)出现一次或没有。 X*: X项目出现0次或多次。 X+: X项目至少出现1次。

2017-05-28 23:01:57 1545

原创 Java网络爬虫(八)--使用多线程进行百度图片的抓取

声明:如需转载本篇文章,请进行私聊并在文章首处注明出处,本代码未经授权不可用于获取商业价值,否则后果将由自己承担。这次的需求大概是从百度图片里面抓取任意的分类的图片,考虑到有些图片的资源不是很好,并且由于百度搜索越到后面相关度会越来越低,所以我将每个分类要爬的数据量控制在了600,实际爬下来,每个分类也就是500左右的图片。实现架构先来看一下本次代码的实现架构: htmlparse里面的两

2017-05-21 02:05:27 5010 8

原创 Java网络爬虫(七)--实现定时爬取与IP代理池

注:对代码及思路进行了改进—Java网络爬虫(十一)–重构定时爬取以及IP代理池(多线程+Redis+代码优化)定点爬取当我们需要对金融行业的股票信息进行爬取的时候,由于股票的价格是一直在变化的,我们不可能手动的去每天定时定点的运行程序,这个时候我们就需要实现定点爬取了,我们引入第三方库quartz的使用:package timeutils;import org.quart

2017-04-27 20:22:21 21474 7

转载 C语言--通过结构体成员的地址获取结构体变量的地址

注:本文转载自:http://blog.csdn.net/zhanshen2015/article/details/51500757C 语言的结构体可以将不同类型的对象聚合到一个对象中,在内存中,编译器按照成员列表顺序分别为每个结构体变量成员分配内存,但由于 C 的内存对齐机制以及不同机器间的差异,各个成员之间可能会有间隙,所以不能简单的通过成员类型所占的字长来推断其它成员或结构体对象的地址。 如

2017-04-21 13:20:20 8232 3

原创 操作系统--内存中的程序映像(printf函数的运算顺序)

先来看看c语言printf函数运算顺序为什么从右到左?从汇编角度来看,函数的参数总是从高地址压到低地址,而访问参数的时候又是通过基址加偏移量来的,所以按照逻辑,偏移量为0对应第一个参数,第一个参数在低地址,低地址最后压入栈,相对应的函数最右边的参数也就最先计算,并先压入栈。一个由C/C++编译的程序的内存分布分为以下几个部分:1、 栈(stack):也是我们所说的堆栈,是由编译器自动分配释放,用来

2017-04-20 20:22:35 935

原创 MySQL数据库--MySQL数据库语句、坑点总结

MySQL实用语句操作1.清空数据库表的同时将id的增长顺序重新设为从0开始:TRUNCATE TABLE 数据库表名2.在知道数据库原密码的时候进行修改密码:mysqladmin -u root -p password "new password"3.将选定数据库导出至sql脚本:(只导出表结构)mysqldump -u root -p -d "数据库名" > "sq

2017-04-14 18:04:23 1409 6

原创 Java--final关键字

final数据在Java中,编译器可以将final常量代入任何可能用到它的计算式中,也就是说,可以在编译时进行计算,这减轻了一些运行时的负担。final常量必须是基本类型。对于对象引用,final使引用恒定不变。一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象。然而,对象其自身却是可以被修改的,既是final又是static的域,将用大写表示,并使用下划线分割各个单词。...

2017-04-09 00:14:55 465

原创 Java网络爬虫(六)--JSON数据的解析

有时候,我们抓取下来一个html页面,发现浏览器页面可以显示的东西在html源码中却没有,这时候我们就要考虑服务器是以JSON格式将这部分数据发送到客户端的,对于这种情况的处理方式我们一般是在chrome的开发者工具中找到对应的JSON包,然后构建其URL,对JSON数据所在的源地址进行访问,然后使用一些工具对JSON数据进行解析,从而得到我们想要的东西。阿里巴巴FastJson是一个Json处理工

2017-04-02 20:42:45 6599

空空如也

清除浏览器Cookie之后,js页面加载不出来

发表于 2017-05-09 最后回复 2017-05-10

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

TA关注的人 TA的粉丝

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