
JAVA
文章平均质量分 54
千念飞羽
这个作者很懒,什么都没留下…
展开
-
日常小结-Strust导入相关源码
把源码跟.jar库相关联。 Strust的lib里的库比较多但是不是所有库都有源码的。这里只导入struts-core-x.x.x.jar的源码。在src/core/src/main/java中间 其他的源码好像导入不了。比较奇怪的是jre的源码貌似导入了也没有反应但是crtl加左键可以访问源码。但是从JRE System Library就访问不了。原创 2016-06-22 22:13:18 · 445 阅读 · 0 评论 -
源码分析-java-AbstractList-Itr和ListItr的实现
AbstractListAPI文档AbstractList实现了List接口,又因为List继承自Collection,Collection继承自Iterable。因此List接口包含很多的方法。AbstractList实现了List接口的最小实现。 他是针对随机访问储存数据的方式的,如果需要使用顺序访问储存数据方式的List还有一个AbstractSequentialList它是继承自Abstr原创 2016-07-17 16:02:51 · 3140 阅读 · 0 评论 -
源码分析-java-AbstractCollection
AbstractCollection概述概述首先AbstractCollection是java自己提供的一个最基本的Collection的实现。当然它依然是一个抽象类。对于一个不可更改的集合,只要继承这个类并且实现迭代器和size()方法就行。对于一个可更改的集合,需要实现add和返回Iterator的方法,当然可选的实现remove方法通常应该提供两个构造器,一个无参的,一个是包含集合元素的pub原创 2016-07-16 16:37:52 · 3212 阅读 · 3 评论 -
源码分析-java-Iterator接口和Iterable<T>接口
API文档:首先Iterator的出现是为了替代Enumeration.它和Enumeration不同的是,它可以删除迭代的内容。并且被更好的命名这个接口只有四个方法: boolean hasNext() E next() default void remove() default void forEachRemaining(Consumer源码分析:d原创 2016-07-16 14:46:56 · 1449 阅读 · 0 评论 -
源码分析-java-collection接口
以下内容是api资料的简单汇总:API概述Collection接口是集合继承的根,一个集合表示一组对象,即元素,的集合。Collection是一个抽象层次比较高的类,java没有提供直接的实现,通常都是对子类提供实现。一般的Collection实现应该提供两种标准的构造器: 一个是无参构造器,用于创建一个空集合 另一个是有参的构造器,参数为集合内集合内元素。(当然这个方法并没有办法提供强制类型转原创 2016-07-13 18:24:49 · 452 阅读 · 0 评论 -
日常小结-java随机数类Random
Random类首先java的Random采用48位的种子用linear congruential formula方法实现了一个生成随机数的类。构造函数Random类有两个构造函数。 一个是无参的,一个是以long为参数的。 这个long就是生成随机数的种子,当然这里需要区别一下,种子和生成随机数的范围为无关。种子的意义简单的说java生成的随机数实际上是伪随机数,也就是一个很大周期的循环,如果两原创 2016-07-10 13:40:23 · 752 阅读 · 0 评论 -
读书笔记-java网络编程-7URLConnection-缓存
7.5 缓存7.5.1缓存简述通常来说,get通过http访问获得的页面可以缓存,也应当缓存,使用HTTPS或者POST方法访问的页面通常不应该缓存。不过HTTP首部可以对此作出调整:Expires首部(主要用于HTTP1.0)指示可以缓存这个资源表示,直到指定的时间为止Cache-control首部(HTTP1.1)提供了粒度更细的缓存策略: max-age=[seconds]s-maxa原创 2016-07-06 13:59:57 · 525 阅读 · 0 评论 -
读书笔记-java网络编程-7URLConnection-获取URL首部
7 URLConnection7.1 URLConnection简介URLConnection是一个抽象类,表示指向URL指定资源的活动连接。有两个不同但是相关的用途: 1. 一个是与服务器(特别是HTTP服务器)的交互,可以用来查看服务器发送的首部,设置连接的属性,设置客户端的请求的首部等。利用它也可以实现POST和PUT方法来发送数据。 2. URL是Java的协议处理器机制的一部分。所谓的原创 2016-07-06 13:48:01 · 686 阅读 · 0 评论 -
读书笔记-java网络编程-6URL和URI-HTTP协议和cookie的java实现
6 HTTP协议这章内容大部分比较浅显。这里抽取一部分不太熟悉的说下:6.1 HTTP协议6.1.1 概述6.1.2 Keep-Alive6.2 HTTP方法get: 可以获取一个资源的表示。 get没有副作用,如果失败可以重新获取。 通常get的输出会缓存。可以通过首部来控制 可以对get请求加书签。也可以预取get请求。但是其他方法不可以。 如果没有明确的用户动作,好的浏览器和爬虫不原创 2016-07-06 11:39:08 · 1040 阅读 · 0 评论 -
读书笔记-java网络编程-5URL和URI-代理
5. 代理代理的作用:出于安全原因防止远程主机了解到本地网络配置的秘密细节为了通过滤出站请求,限制可以浏览的网络。出于性能考虑,运行多个用户从本地缓存获取同样的一些经常访问的文档,而不是重复从远程主机下载5.1 系统属性 没看懂基本操作所要做的就是设置一些系统属性,指示本地代理服务器的地址。 如果使用存储的HTTP代理,则将http.proxyHost设置为代理服务器的域名或IP地址原创 2016-07-05 12:02:06 · 841 阅读 · 0 评论 -
读书笔记-java网络编程-5URL和URI-x-www-form-urlencoded
4. x-www-form-urlencodedURL中使用的字符必须是来自ASCII码的固定子集。具体的说:大小写字母,数字标点符号:- _ .!~*’(和,)用于特定用途的符号:/ & ? @ # ; $ + = 和 %其他所有字符均需要用%转义,特定用途的符号不做特定用途用时也要转义URL类不自动编码解码,但是由getPath和toExternalForm时候回出现错误。 java原创 2016-07-05 11:26:58 · 998 阅读 · 0 评论 -
读书笔记-java网络编程-5URL和URI-URI类
3. URI类URI是对URL的抽象,不仅包括URL还包括URN。 实际使用的URI大多是URL,但是大多数规范和标准都是URI定义的。在Java中这里两个类的主要区别是: 1. URI类完全有关于资源的标识和URI的解析,它没有提供方法来获取URI所标识资源的表示 2. 相比URL,URI类更规范 3. URI对象可以表示相对的URI,URL类在储存URI之前会将其绝对化。简单的原创 2016-07-05 10:53:53 · 614 阅读 · 0 评论 -
读书笔记-java网络编程-5URL和URI-URL类
2. URL类java.net.URL类是对url的抽象,是一个final类。URL类不可变,构造一个URL对象后,其字段不在改变,因此它是线程安全的。使用了策略设计模式。2.1 创建新的URLpublic URL(String url) throws MalformedURLExceptionpublic URL(String protocol, String hostname, String原创 2016-07-04 23:02:52 · 670 阅读 · 0 评论 -
读书笔记-java网络编程-5URL和URI-简述
1. 简述1.1 URI统一资源标识符(Uniform Resource Identifier, URI)采用一种特定语法标识一个资源的字符串语法: 模式:模式特定部分模式包括: data 链接中直接包含的Base64编码数据 file 本地磁盘上的文件 ftp ftp服务器 http 使用超文本传输协议的国际互联网服务器 mailto 电子邮件地址 telnet 基原创 2016-07-04 21:00:48 · 645 阅读 · 0 评论 -
读书笔记-java网络编程-4Internet-NetworkInterface类
3. NetworkInterfaceNetworkInterface表示一个本地的IP地址。如物理接口:以太网卡,虚拟接口:与机器的其他IP地址绑定到同一个物理硬件。 它提供了一些方法枚举所有本地地址(而不考虑接口),并由他们创建InetAddress对象,然后这些对象可用于创建socket,服务器socket等等。3.1 工厂方法可以通过IP地址、名字或者枚举来请求一个NetworkInter原创 2016-07-04 17:55:13 · 1166 阅读 · 0 评论 -
读书笔记-java网络编程-4Internet-InetAddress类
2. InetAddress类java.net.InetAddress类是java对IP地址的高层表示。一般来说他包含一个主机名和一个IP地址2.1创建新的InetAddressInetAddress没有公共的构造函数,而是采用静态方法,可以连接到DNS服务器来解析主机名。最常用的是:2.1.1 getByName和getAllByNameInetAddress address = InetAdd原创 2016-07-04 16:19:29 · 756 阅读 · 0 评论 -
读书笔记-java网络编程-4Internet地址-地址简述
1. 地址简述连接到Internet网络的设备为节点node,计算节点称为主机host 地址IPv4: 4字节长 点分十进制dotted quad格式 152.19.134.132IPv6 16字节长。 通常写成为冒号分隔的8个区块,每个区块是4个十六进制。 前导的0不需要写出。 两个冒号表示多个0区块,但是每个地址中双冒号最多出现一次。在混合网络中,IPv6的最后四个字节有时写为原创 2016-07-04 15:49:38 · 494 阅读 · 0 评论 -
读书笔记-java网络编程-3线程-线程池和Executor
5. 线程池和Executor如果线程之间的切换太过频繁也会消耗过多的资源,避免大量的线程切换可以保证提高任务完成的效率 如果线程自然阻塞如等待网络数据,没什么正常影响,但是如果是CPU受限,如果能避免大量线程切换可以提高效率。java.util.concurent中的Executors类可非常容易的建立线程池。 只需要将各个任务做完一个Runnable对象通过submit提交给这个线程池,你就原创 2016-07-04 15:35:18 · 632 阅读 · 0 评论 -
读书笔记-java网络编程-3线程-线程调度
4. 线程调度4.1线程调度java中10是最高优先级,0是最低优先级,默认的优先级5。 这与Unix优先级相反。 Windows只有7个优先级。 尽量不要设置过高的优先级否则会导致低优先级饥饿。public final void setPriority(int newPriority)使用这条语句来指定设置优先级。4.2 抢占主要有两种线程调度机制: 抢占式(preemptive):调度器原创 2016-07-03 20:06:21 · 601 阅读 · 0 评论 -
读书笔记-java网络编程-3线程-同步
3. 同步当不同的进程方法同一个资源的时候,只有一个进程可以获得资源的访问权限,而其他进程将要继续阻塞。3.1同步块 synchronized (System.out) { System.out.print(input+":"); System.out.print(DatatypeConverter.printHexBinary(dige原创 2016-07-03 17:01:10 · 514 阅读 · 0 评论 -
读书笔记-java网络编程-3线程-从线程返回信息
2. 从线程返回信息run()和start()方法都是没有返回值也没有输入参数的。那如何返回参数就是一个比较麻烦的事情。 最直接的想法是建立一个私有的字段,然后通过get之类的方法访问,但是这样的思路会有一个基本的问题就是竞态条件: race condition:竞态条件,能否得到正确的结果依赖于进程的相对速度,而你无法控制这一点。 否定了这样直接的方法后,还有一种新手常用的获取数据的方法。原创 2016-07-03 16:02:10 · 506 阅读 · 0 评论 -
读书笔记-java网络编程-3线程-java线程概述
解决服务器超负荷问题: - 重用进程 - 采用线程 如果一个应用同时需要大量的长时间链接,就应该考虑异步IO而不是线程。1. java的线程简介:1.1 java线程实例Thread t = Thread();t.start();在主线程中运行上述代码,就会自动的创建一个线程。并运行Thread实例t的run()方法。当然run方法要实现定义好。原创 2016-07-03 15:57:32 · 444 阅读 · 0 评论 -
读书笔记-java网络编程-2java流的工作原理及应用-
java流的基本原理和结构1.java流的基本原理和结构1.1采用装饰者模式的java流设计java流的设计采用装饰器模式的方式,装饰者模式采用共同抽象类或者接口A,被装饰者的组件B直接继承于抽象类,而所有的装饰者也有一个共同的抽象类或者接口C,而这个装饰者们的公共抽象类和接口C也是继承或者实现了A。下面是一张装饰者模式的通用原理图。 而在装饰者模式的所有类中实现了相同原创 2016-07-02 21:55:18 · 764 阅读 · 0 评论 -
日常小结-XPath用于解析XML文档
使用XPath的时候,除了dom4j以外,还需要额外添加一个.jar包-jaxen包。package sax;import java.io.File;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;public class Demo2 { //用XPath提原创 2016-06-27 08:58:31 · 771 阅读 · 0 评论 -
日常小结-DOM4J解析XML文档
下面为DOM4J解析的方式。DOM4J有教程写的很好可以直接看快速开始。 另外DOM4J通常只需要一个.jar但是依然有很多支持.jar包,在使用DOM4J的时候如果提示找不到.jar类可以尝试添加支持.jar包package sax;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;原创 2016-06-26 20:58:01 · 653 阅读 · 0 评论 -
日常小结-SAX解析xml
SAX可用在解析的过程中处理xml而不需要等到整个文件都存入内存在进行解析:SAX解析SAX采用事件处理的方式解析XML文件,利用SAX解析XML文件,涉及两个部分,解析器和事件处理器。解析器可用使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个xml文档。解析器采用sax方式在解析某个xml文档时,它只要解析到xml文档的一个组成部分,都会调用事件处理器的一个方法,解析原创 2016-06-26 16:17:05 · 1419 阅读 · 0 评论 -
日常练习-xml成绩管练习
package dao;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NodeList;import utils.XmlUtils;import domain.Student;import exception.StudentNotExistException;public class Stu原创 2016-06-26 13:09:44 · 755 阅读 · 0 评论 -
日常小结-java何时抛出异常
通常来说编译时异常不应抛出,而是自己解决。 而运行时异常,可以往上抛出,当然也可以自己解决。 编译时异常只有在一种情况下才会抛出,就是将其作为返回值的时候,比如一个常见的例子,在进行数据删除的操作的时候,如果你未找到删除项,同时又不可以改变函数的标签。可用返回一个编译时异常来强制上一级处理这个问题。异常的另一种用法,是将编译时异常转换为运行时异常,后抛出。因为运行时异常可用不予处理。但编译时异常原创 2016-06-26 10:46:45 · 937 阅读 · 0 评论 -
日常小结-调整jvm内存大小
默认jvm占用64M的内存myeclipse中间,右键.java文件->run as->Open Run Dialog..->Argument->VM arguments:-Xmx80m //80m程序原创 2016-06-22 15:15:19 · 507 阅读 · 0 评论 -
日常小结-内省、beanutils
内省(Introspector)用来操作bean属性的。内省访问javaBean属性的两种方式: 1. 通过PropertyDescription类操作Bean的属性。 2. Introspctor类获得Bean对象的BeanInfo,然后通过BeanInfo来获取属性的描述器(PropertyDescriptior)。通过这个属性描述器就可以获得某个属性的getter/setter方法。然后通原创 2016-06-22 00:50:10 · 500 阅读 · 0 评论 -
日常小结-Junit、for循环、可变、枚举、eclipse快捷键
JUnit java测试类增强for循环可变参数类型枚举类型eclipse快捷键JUnit java测试类@Test 用于运行测试类。 @before/after用于分别运行与每个测试方法之前和之后 @classbefore/classafter用于运行于每个测试类之前和之后 结合assert断言对输出结果进行自动处理。增强for循环类似C++中迭代器。但是只提供读取不可写入。但是容器中必原创 2016-06-21 19:28:07 · 4129 阅读 · 0 评论 -
日常小结-strust2配置
Struts2。配置Struts2的时候需要配置.jar文件。 实际生产环境中应该是配置CLASSPATH。但是不知道为什么我配置了CLASSPATH在myeclipse不能用。 如果只是在IDE里用的话。一般是新建一个用户库,然后倒入一些.jar包。通常是需要用到几个就倒入几个,一般来说有几项是必须导入的,一个是ognl,framework,logging,core。老版本还有xwork但是后原创 2016-06-20 19:35:54 · 302 阅读 · 0 评论 -
怎么把存储UTF-8编码的字符串转换成实际字符
踩过的坑1:怎么把存储UTF-8编码的字符串转换成实际字符首先说明下问题。之前用爬虫从网上down数据的时候因为没有思考到位,结果出现了一个很奇葩的问题。一般来说中文采用UTF8编码后写成byte[]的格式然后存储在计算机中什么问题都没有,但是在写代码的时候我居然把byte[]又转换成了UTF8格式然后在存储。比如说“阜”会以\u961c这样的byte[]格式存储。但是我却存储了”\u961c”这样原创 2016-03-16 23:01:04 · 3599 阅读 · 0 评论 -
java泛型表达式和方法工作原理小结
java编译器在处理泛型表达式和泛型方法时的原理,明确编程人员,编译器和虚拟机之间的分工。原创 2016-02-18 14:46:50 · 1172 阅读 · 0 评论 -
在运行时使用反射分析对象
在运行时使用反射分析对象看java核心技术的里面的反射的时候反射运行机制看得有些糊涂这里把代码贴上来把过程分析一遍。源码代码分析过程原创 2016-02-16 19:17:59 · 819 阅读 · 1 评论 -
读书笔记-现代操作系统-2进程与线程-2.1进程2.2线程
1. 进程与线程首先,应该考虑的是引入进程和线程需要解决的问题是什么? 以我个人的意见来看,进程的抽象解决了这样的一个问题:使同一台计算机上可以运行多道不相关联的任务,而进程的引入主要目的在于提高同一个任务完成的效率。如果围绕这个进程和线程的目的来看分析进程和线程的区别就比较容易总结了。1.1 进程:由于需要解决多个任务的问题,进程首先需要的就是资源分组处理和执行能力。这些资源和能力定义了进程。原创 2016-07-07 09:28:02 · 1046 阅读 · 0 评论 -
日常小结-关于模拟登陆的小结-okhttp库的使用小结
本文主要写一下okhttp库的使用小结。OkHttp库是一个支持HTTP协议和HTTP/2协议的java版本客户端程序。是替代httpclient的库,Okhttp目前据说已经时安卓标配。不过我没做过安卓,这里仅仅解释基本的功能。我自己用的时候确实觉得Okhttp用起来很方便,因为第一次用第三方库,感觉比java自带的要好用的多。Okhttp主要类Okhttp主要的类并不多打开doc基本上就一列就结原创 2016-08-08 22:05:54 · 1271 阅读 · 0 评论 -
日常小结-关于模拟登陆的小结-fastjson库的使用小结
上节说道okhttp库,它主要负责的是http协议部分,通过http得到的数据有很多种,常用的有html之类的网页、此外就是json比较多,据说还有xml,但是目前我还没有用过,当然还有很多其他格式不再赘述。json解析和常用json库因为我是为了做抓包,主要就是分析内容,通常来说,html网页主要的内容都是通过正则表达式来实现的。java自带的正则表达式就足够了。但是如果是json就没办法用jav原创 2016-08-08 23:00:34 · 512 阅读 · 0 评论 -
日常小结-信号量和互斥量
信号量概念首先信号量是一种函数调用,而不是一种语言特性(如管程),也就是说只要有底层的支持就可以实现。(个人认为只要支持CAS就可以实现)。 信号量初始化的时候会给出一定的值,这个值决定了同时可以有几个访问对象。通常来说是1,也就是同时只能有一个访问对象。 信号量为非负整数。在执行down操作的时候讲信号量减1,如果信号量本身为0,减一则进行阻塞,直到有其他线程操作信号量up才进行判断是否唤原创 2016-10-23 14:32:47 · 605 阅读 · 0 评论 -
日常小结-java中同步方式概述
本文概述了一线java中三种实现同步的方式的异同,volatile、synchronized和Lock相关类原创 2016-10-23 15:41:43 · 484 阅读 · 0 评论