自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 问答 (1)
  • 收藏
  • 关注

原创 开源项目Egg简介

Egg 简介Egg 它一个通用高效的爬虫,希望它能够替大家实现一些需求,更希望能为开源做出自己的贡献。目前,还在成长,在我的构想下,它还需要添加很多功能,我会继续完善。有任何疑问以及需求请以与作者交流:630841816@qq.comEgg是一个通用,多线程的Java爬虫框架。Egg简单小巧,api非常简单,容易上手。Egg性能不错,并实现多种请求方式。能够比较快的响应使用者的需求速度说

2015-08-23 16:30:02 1642

原创 深入理解jvm之一【内存区域】

文章开始之前,首先需要申明,本系列文章讨论的是HotSpot VM,文章中多数观点基于《深入理解Java虚拟机:JVM高级特性与最佳时间   周志明》,笔者如有理解错误,欢迎指正。在开始探索jvm虚拟机之前,不得不对jvm的内存区域进行讨论,依旧先附上图表:程序计数器程序计数器,也能叫做PC寄存器,从名字上来理解可能会把它想成一个计数的内存区域,但是,了解汇编的人会知道

2015-05-16 20:16:52 990

原创 常用算法之Trie【字典树,前缀树】

Trie中文名又叫做字典树,前缀树等,因为其结构独有的特点,经常被用来统计,排序,和保存大量的字符串,经常见于搜索提示,输入法文字关联等,当输入一个值,可以自动搜索出可能的选择。当没有完全匹配的结果时,可以返回前缀最为相似的可能。其实腾讯的面试题有一个:如何匹配出拼写单词的正确拼写。其实用匹配树非常合适。基本性质:1.根节点不含有字符,其余各节点有且只有一个字符。2.根节点到某一节

2015-05-16 00:40:11 2383

原创 常用算法之排序算法四【归并排序】

归并排序是将排好序的序列逐步合成一个大序列的算法,从字面上来分析,主要分为归并和排序。算法描述:1.申请一块空间,大小为两个排好序序列长度之和,用来存放归并后的序列。2.设两个指针,分别指向两个已经排好序的序列的起始地址。3.比较两个指针指向位置的值大小,根据升序降序,选择较小值或者较大值存储在合并空间内,并将相应指针后移。4.重复3操作,直至指针移至序列尾部。5.将另一个

2015-05-15 00:13:54 896

原创 从源码分析java集合【HashMap】

Map如我们所知,存储的是键值对,它的基本单位是实现了Map.Entry的Node,Node 的属性如下:static class Node implements Map.Entry { final int hash; final K key; V value; Node next;}看定义就能知道它的作用了,能够看到它存储

2015-05-13 00:05:00 844

原创 从源码分析java集合【ArrayList】

ArrayList的内部实现其实就是我们熟悉的数组,它继承了AbstractList,实现了List,RandomAccess,Cloneable和Serializable接口。RandomAccess接口是说明实现类是支持快速随机访问的,它的随机访问的性能非常好,通常它的List的实现类: for (int i=0, n=list.size(); i < n; i++)

2015-04-26 20:50:56 750

原创 从源码分析java集合【LinkedList】

LinkedList是一个双端链表,他继承了AbstractSequentaiList,实现了List,Deque,Cloneable,和Serializable接口。Deque是双端队列的接口,LinkedList有记录头的 first 和 尾的 last,所以我们可以对队列的两端进行操作。它还实现了Cloneable和Serializeble接口,它们分别是实现队列进行拷贝和序列化的接口。

2015-04-25 20:20:50 529

原创 常用算法之排序算法三【快速排序】

快速排序是东尼·霍尔在1962提出的划分交换排序,并采用一种分治的策略。在这,我们先总结一下:快速排序 = 划分交换排序 + 分治。然后我们在一一介绍他。划分交换排序

2015-04-13 17:40:42 554

原创 常见算法之排序算法二【插入排序】

什么是插入排序!简单的介绍一下它的思想(假设为升序):在已经排好序的数组内,插入新的元素,从后往前找,当找到某个比它小的数,则停止,并将它插入这个与上一个数之间。先给大家看个图:具体算法描述如下:1.从第一个元素开始,因为只有一个元素,所以它有序。2.拿它后面的一个元素和它进行比较。3.它后面的元素比它大,把他往后移,并把它后面的元素赋给它原来的位置。4.重复3的动作,

2015-04-10 21:00:02 646

原创 常见算法之排序一【冒泡排序】

冒泡排序是我们编程刚入门基本都会接触的一个排序算法,以来它比较简洁,也比较形象。它的思想就是,让每一个相邻的元素进行比较,假如他们不是按照升序或降序,则交换他们位置,重复这个操作,最大或最小的元素就像泡泡一样,升到了最上面,对剩下的元素重复这个操作,所有的元素就可以排好序了。它的运作方式:1.从头向后比较,假如相邻的元素之间的大小不是按升序或降序则将他们进行比较,若不是指定规则,则交换

2015-04-10 12:58:44 619

原创 常见算法之全排列 全组合

全排列算法是一种比较常考的算法,他的做法也比较多样。首先我们来看看最符合我们直观思考的,思路是这样的:假如没有重复元素时,传入一个数组A,并插入到另外一个数组B中,假如B中已经包含这个元素,则跳过,否则插入数组B。我们来看看具体代码:public static void permutation1(final String str, String buffer){ if (s

2015-04-09 16:06:12 1082

原创 java 多线程再探

我们知道线程能通过继承Thread和实现Runnable接口来实现,但是,他们都有一个弊端,就是run之后不能有返回值,当然我们可以通过向线程中传入变量的方式解决,但是貌似又不总是那么可靠,还好,java给了我们另外的接口Callable和Future.我们先来看看他们的结构:public interface Callable{ V call() throws Except

2015-04-09 10:49:31 595

原创 java 多线程初探

一直都很想写关于多线程的东西,以来可以巩固巩固自己的知识,而来可以看看自己的掌握的水平,因为一直都觉得这方面挺有意思的好了。废话不多说,入正题。java多线程,我们首先想多的是什么。进程,Thread,Runnable,start,run...那我们就先从他们入手了。为什么会想到进程呢。以为一直都是多线程多进程的说。那他们有什么区别。进程:进程是程序的运行和操作系统分配资源的最基本的独

2015-04-09 09:34:52 624

原创 浅谈java集合类(三)【Set,Queue】

Set是一个有趣的集合。它看起来有点像List,实际操作却有点像Map。Set也是记录一系列值的集合,但是呢,它和Map的key相同,它不能重复,否则会插入失败。所以呢,我们经常可以看见在Map中可以调用keySet()。说到这呢,它貌似就已经能做很多事了。假如你有兴趣做网络爬虫的话,有一个过滤重复链接的问题就不得不考虑了。Set貌似就是一个非常简单的解决办法了,我们可以用它来去重。好了,我们

2015-04-04 22:31:08 923

原创 关于java对象初始化的一点有意思的东西

这篇文章实际的内容并没有多少,或者说对实际编程影响并不大,主要是为了可能的笔试面试之类的,还有就是有点好玩而已。有一天我在书上看到很有意思的代码:class A{ { System.out.println("----->A的初始化块"); } static { System.out.println("----->A的静态初始化

2015-04-01 08:46:52 591

原创 浅谈java集合类(二)【Map】

上一节,我们聊了聊List,接下来,我们来看看Map接口。Map是一种Key,value的存储的结构,也就是说,我们可以通过key来找到value,他们之间是一一映射的。Map的主要实现类有:HashMap,TreeMap...我们先来看看他的主要方法:V get(Object key);//获取与key相对应的值。如果映射表中没有key所映射的值,则返回nullv put(K k

2015-03-31 22:21:31 576

原创 浅谈Java集合类(一)【List】

前不久,面试的时候被主考官问道集合,一直以来都以为概念应该不会出错的,但是,竟然令人发指的打错了,哎,久久不能平复呀好了,废话不多说,开始正文吧。java集合为我们定义了大量的接口和抽象类,他们都支持泛型编程,所以使用起来很方便。首先集合有两个基本的接口:Collection和Map。List,Set,Queue...的就实现了Collection。像什么SortMap,HashMap..

2015-03-31 19:09:19 639

原创 初探java 对象中wait(),notify(),notifyAll() 和线程中的synchronized

因为学习和兴趣需要,自学一点java的多进程,这两天好像刚刚明白了什么,一查博客,众说纷纭,有些越看越糊涂,所以想结合几篇自己认为还不错的博客,在这算是一个总结了。首先,我们先谈谈wait(),notify()和notifyAll()

2014-11-02 16:25:54 664

原创 php:获取校内图书借阅信息,并用飞信进行提醒

最近,向图书馆借了两本书,没看也不记得还书,最后拖欠了十几天,因而交了十几元的延误费。甚是心痛。一直都知道学校有个网站能改查询借书信息,能够获取应还日期的。我想,既然是学计算机的怎么就不能用自己所学的知识,弄一个会自动发短信提醒自己的程序呢。        于是,我找到了学校图书馆的主页http://www.lib.xiyou.edu.cn/,查看源代码,找到了登录的入口http://22

2014-06-30 12:09:12 928

原创 .c .h文件小议

好久没有更新文章,其实一直想发表,也写过一些稿子,但是,最后还是放弃了。      好了,言归正转,我们来讨论今天的话题。      个人认为,就这话题而言,我现在只能是飘在水面上和大家讨论讨论我看过一些博文的理解,要想真正深入还是要去看看编译原理的。       在一开始的岁月,编译器知道的只有.c(.cpp)文件,还没有.h文件的概念但是随着大家写代

2013-12-11 22:25:50 785

原创 内存对齐方式

看到这篇博文题目,你可能会想,什么题目到底啥意思!首先,你在申请一块空间时,系统会根据你所申请的空间大小,按照一定规则,给他分配一段空间的起始地址,然后你就可以安心的开始写你的数据了。今天,这篇博文便是谈一谈,系统是按照怎么样的规则进行分配空间的。在正式开始之前,我们先小试牛刀:struct t1{char a;short b;int c;};请问:si

2013-07-24 11:26:05 724

原创 二进制文件和文本文件读取的区别小议

在学习了文件的输入和输出之后,本人一直存在一个疑问,我想可能也是好多人的疑问。那就是二进制文件和文本文件中的内容到底是怎么读写的?我们为什么打开二进制文件看到的是一些乱码?由于今天的时间充足,编找了一点相关资料,并总结了一下。文件分为两类:文本文件,二进制文件。文件在计算机中存储的信息是由1或0表示的,所以按照严格意义来说,两者不存在根本区别。但是两者之间又有区别:

2013-07-21 01:01:02 1358 2

原创 内存中的堆和栈

前文:本文是大量借鉴前人之作,因为找不到原创地址,所以无法提供原博客地址。在学习编程过程中,总是会遇到这样的说法,什么东西存储在栈中,啥啥啥的又在堆中,搞得我甚是糊涂,今天查了一点资料,谈谈心得。首先:要说一下,程序内存的分配。一个C/C++的编译把内存分为五种:1.栈:栈中主要存放的是函数参数,函数中的局部变量......其空间由操作系统进行分配释放。其操

2013-07-16 20:27:37 670

空空如也

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

TA关注的人

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