java基础
文章平均质量分 57
lolichan
这个作者很懒,什么都没留下…
展开
-
PriorityQueue介绍(涉及大O和堆排序)
PriorityQueue是基于优先级堆的极大优先级队列此队列按照构造时所指定的顺序对元素排序,即可以根据元素自然顺序来排序(Comparable)也可以指定Comparator。该类还具有以下特点:1.用数组实现,但是数组大小可以动态增加且无上限2.改实现不是线程安全的,多线程时可以用PriorityBlockingQueue3.不允许使用null元素4.此实现为插入方法...原创 2017-02-06 17:21:07 · 159 阅读 · 0 评论 -
ServletContext总结
今天我们学习的是ServletContext的应用。 WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用。 ServletConfig对象中维护了ServletContext对象的引用,开发人员在编写servlet时,可以通过ServletConfig.getServletContext方法获得Servl...原创 2017-10-16 11:33:30 · 56 阅读 · 0 评论 -
剑走偏锋--tomcat中多项目共享信息的方法
最近看pluto源码,终于了解多个应用如何共享信息的一个小方法。然后写个小demo首先写一个jar包,包中只有两个类,一个单例,一个Person的beanpublic class MySingleClass { private static MySingleClass instance; public Person person; public MySingleClass(P...原创 2017-10-24 11:51:14 · 261 阅读 · 0 评论 -
class.getResource()方法
getResource返回一个URL,还有一个getResourceAsStream()方法,参数与getResource()一样,相当于用getResource获得File文件后,再new InputStream(file)一样 我们有一下目录|--project |--src |--javaapplication |--Test.j...原创 2017-02-15 14:41:27 · 434 阅读 · 0 评论 -
对象拷贝工具
目前较为流行的用于对象拷贝的工具类:Apache的两个版本:(反射机制)org.apache.commons.beanutils.PropertyUtils.copyProperties(Object dest, Object orig)org.apache.commons.beanutils.BeanUtils.copyProperties(Object dest, Object ...原创 2017-02-21 14:09:40 · 73 阅读 · 0 评论 -
System.getProperty()
System.getProperty()这个函数可以获取JVM和操作系统的一些参数,以供程序使用 如:System.getProperty("java.vm.version");//java虚拟机版本 System.getProperty("java.vendor.url"); //java官方网站 System.getProperty("java.vm.nam"); //jav...原创 2017-02-24 15:54:46 · 142 阅读 · 0 评论 -
java泛型详解
为什么使用泛型泛型能使类型转换的错误在编译时被发现,从而增加程序的健壮性。看一个例子public class Box{ private Object object; public void set(Object object) { this.object= object; } publi...原创 2017-12-13 15:25:12 · 89 阅读 · 0 评论 -
java中System.getProperty与System.getenv的区别
一、System.getenv()返回系统环境变量值,示例如下:[plain] view plain copy {PAPERSIZE=a4, TERM=xterm, XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session1, JAVA_HOME=/home/dsl/programs/jdk1.6.0_45,...原创 2017-12-13 16:48:22 · 1334 阅读 · 0 评论 -
xml解析的4种方式
关键字:Java解析xml、解析xml四种方法、DOM、SAX、JDOM、DOM4j【引言】xml是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性给数据集成与交互带来了极大的方便。目前在Java中用于解析XML的技术很多,主流的有DOM、SAX、JDOM、DOM4j,下文主要介绍这4种解析XML文档技术的使用、优缺点及性能测试。一、【基础知识——扫盲】sax、do...原创 2017-12-20 15:05:19 · 120 阅读 · 0 评论 -
xml解析技术性能对比
转自:http://blog.csdn.net/zgf19930504/article/details/49506567 java 解析XML 的方法有很多, 常见的解析技术有 SAX 解析, DOM 解析, JDOM 解析, DOM4J 解析, JAXB解析等,其中SAX 解析采用的是流式解析,一遍过,不能折回解析,占用内存少; 而DOM ,JDOM,DOM4J,JAXB 解...原创 2017-12-20 15:07:49 · 934 阅读 · 0 评论 -
通过spring bean的factory-method创建bean对象
首先通过静态内部类创建一个单例对象package com.spring.test.factorymethod;public class Stage { public void perform(){ System.out.println("演出开始..."); } private Stage(){ ...原创 2017-10-12 18:30:28 · 179 阅读 · 0 评论 -
WebApplicationContext初始化
ApplicationContext是Spring的核心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器”了;在Web应用中,我们会用到WebApplicationContext,WebApplicationContext继承自ApplicationContext;WebApplicationContex...原创 2017-10-12 16:46:09 · 271 阅读 · 0 评论 -
成员内部类
首先内部类是一个编译时概念,跟虚拟机无关,编译成功后就会形成两个class对象。如:外部类outer中的内部类inner,编译完成后出现outer.class和outer$inner.class 成员内部类写在外部类的方法之间,有两个主要特点:1.外部类作用范围内可以任意创建内部类对象,即使是私有的2.内部类可以范文外部类的所有域,即使是私有域 需要注意的是,成员内部类不...原创 2017-02-06 17:44:44 · 96 阅读 · 0 评论 -
关于锁
所有对象都自动含有单一的锁 不管是同步代码块还是同步方法,只要用的同一个锁,他们就是互斥的 如:当使用同步块时,如果多个方法的同步快都同步到一个对象的锁上,则所有线程只能互斥进入这几个不同的方法同步方法的锁对象是调用这个方法的对象...原创 2017-02-06 17:57:32 · 52 阅读 · 0 评论 -
生产者消费者多线程一个例子中while和notifyall的作用
代码如下public synchronized void put(Object o) { while (buf.size()==MAX_SIZE) { wait(); // 如果buffer为full,就会执行wait方法等待(为了简单,我们省略try/catch语句块) } bu...原创 2017-02-08 17:26:56 · 197 阅读 · 0 评论 -
try-catch中的同步代码块
在try-catch包裹的synchronized代码块如果抛出异常,则释放锁 解释是只要跳出synchronized代码块就会释放锁。。原创 2017-02-08 17:35:04 · 603 阅读 · 0 评论 -
Integer对象的值比较
1.Integer a = n ;Integer b = new Integer(n),a一定不等于b2.两个都是new出来的,肯定不等3.int与以上两种Integer对象比,只要值一样就相等(自动拆装箱) 有意思的来了,如果两个都是非new方法新建的对象,那么值在-128至127之间,则是相等,否则不等什么意思呢Integer i1 = 127;Integer i...原创 2017-02-10 17:25:28 · 135 阅读 · 0 评论 -
一个奇葩题目
群里面看到的一个奇葩题目与三个所谓答案如下:其中针对第二种解决方案写个测试代码Class cache = Integer.class.getDeclaredClasses()[0]; Field myChache = cache.getDeclaredField("cache"); myChache.setAccessible(true); ...原创 2017-02-10 17:42:38 · 156 阅读 · 0 评论 -
web.xml文件中添加taglib及再jsp中使用标签
在web.xml文件中添加tablib<taglib><taglib-uri>标签库唯一访问标识(必须与标签库tld描述文件中的uri一致)</taglib-uri><taglib-location>标签库tld描述文件本地路径(如/WEB-INF/mytag.tld)</taglib-location></taglib&...原创 2017-09-27 11:03:41 · 2144 阅读 · 0 评论 -
web.xml中的Security Constraint元素
<security-constriant>元素是tomcat用来指示服务器对客户端访问服务端资源进行安全约束。如果不通过验证则报403错误<security-constraint> <web-resource-collection> <web-resource-name>test</web-resource-...原创 2017-09-27 17:00:14 · 1377 阅读 · 0 评论 -
Servlet、Filter、Listener详解
ServletServlet接口 [java] view plain copy public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig get...原创 2017-10-11 18:11:12 · 282 阅读 · 0 评论 -
jaxb基本用法
转自:http://blog.csdn.net/heroson_chow/article/details/48627867JAXB用途JAXB(Java Architecture for XML Binding)封装在jdk中,jdk1.7及以上都不需要引入多于的jar包就可以完成JAXB代码开发了1、将Java对象序列化为XML,过程叫Marshal(出处)2、将XML数据文...原创 2017-12-21 09:59:43 · 239 阅读 · 0 评论 -
java中注解详解
什么是注解? 注解就是元数据,用于描述java代码的类、接口、方法、属性等等,然后应用程序可以根据注解做一些动作。比如Spring中的注解@Service,表明这是一个service类,然后Spring框架就会为其创建实例,并根据注解的参数来设置key值保存到ApplicationContext中,这些行为都是Spring框架来做的,注解只是提供元数据。详细可参见另一篇《动手写简单实现...原创 2017-12-22 18:30:56 · 91 阅读 · 0 评论 -
jdk动态代理
简介jdk动态代理用于在运行时生成实现多个接口的动态代理类,关键的类有两个Proxy:提供多个静态方法用于创建动态代理类和动态代理对象,同时也是所有此种方式生成的动态代理类的父类InvocationHandler:该接口只有一个方法如下,每个动态代理对象都有一个关联的InvocationHandler实例对象,当一个动态代理对象的方法被调用时,实际上是被分配到了Invocat...原创 2018-09-20 18:12:51 · 191 阅读 · 0 评论 -
嵌套类
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html 嵌套类java允许使用者在一个类里定义另外一个类,这样的类称之为嵌套类,比如像这样class OuterClass{ ... class NestedClass{ ... }} 嵌套类可以分为两种:...原创 2018-09-23 10:26:29 · 416 阅读 · 0 评论 -
本地类
本地类本地类指的是定义在一个代码块里的类,代码块指写在一组大括号里的代码。最典型的本地类是定义在方法内部 声明本地类可以在任意代码块内定义一个本地类,比如方法体、for循环、if语句等。下面是一个例子,LocalClassExample,验证电话号码。这它的方法validatePhoneNumber里定义本地类PhoneNumber class LocalCl...原创 2018-09-23 18:25:19 · 686 阅读 · 0 评论 -
匿名类
匿名类匿名类可以让你的代码更简洁,可以同时声明并实例化一个类。匿名类就像一个没有名称的本地类。如果有一个本地类只使用一次,那么就可以用到匿名类 声明匿名类本地类定义是类声明,匿名类是在表达式中定义。在下面的例子中,在本地变量spanishGreet的初始化语句中使用到匿名类,在本地变量的初始化中使用了本地类。(初始化和初始化语句的区别可以自己看代码理解)class He...原创 2018-09-24 16:45:13 · 314 阅读 · 0 评论 -
CPU的上下文切换
在高性能编程时,经常接触到多线程,起初总以为多线程并行执行总比单线程要快,然而实际情况是,多线程之间需要竞争IO设备,或者竞争锁资源,导致往往执行速度比不上单线程,那为什么要用多线程呢?这里稍微讲讲用多线程有几个好处1.在多核CPU上使用多线程能提高资源利用率2.多线程时模块化的编程模型,在单线程中如果在一个耗时较长的任务上卡住,那后面都别动了,这就很尴尬。多线程可以将程序分成几个功...原创 2017-03-13 14:56:38 · 127 阅读 · 0 评论 -
String.hash
/** * Returns a hash code for this string. The hash code for a * {@code String} object is computed as * <blockquote><pre> * s[0]*31^(n-1) + s[1]*31^(n-2) + ... + ...原创 2017-03-14 09:22:05 · 144 阅读 · 0 评论 -
多线程中yield和join的作用
join的作用在源码中就一句话Waits for this thread to die其实这句话有点不准确,它少了一个主语:父线程。完整的表述应该是parent thread waits for this thread to die。意思就是调用这个线程的父线程会处于阻塞状态知道这个线程执行完。比如:public static void main(String[] args) throw...原创 2017-03-16 15:46:32 · 178 阅读 · 0 评论 -
volatile关键字
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内...原创 2017-03-16 18:20:17 · 57 阅读 · 0 评论 -
源码java.util.concurrent.Executor
Executor接口就一个方法void execute(Runnable command)大致翻译下源码对类的注释 Executor对象用于执行提交的Runnable任务,这个接口提供了一种解藕提交上来的任务的运行方式(包括线程的使用,调度等)的方法。Executor的使用主要用于替代直接明确的线程创建 比如:相对于 new Thread(new (Runable Task...原创 2017-03-17 10:11:31 · 167 阅读 · 0 评论 -
Timer简介与不足
jdk自带定时器的使用包括两个类Timer、TimerTask,还有两个类是不需要使用者操心的TaskQueue和TimerThread。 类介绍与定时器原理TimerTask抽象类是用于定义定时执行的任务,它实现Runnable接口。使用者只要继承这个类,并将定时任务的业务逻辑写在run()方法里就行。但是不要误会,不是为每一个任务新建一个线程。这个抽象类还维护着任务的执行周...原创 2018-09-13 14:35:50 · 213 阅读 · 0 评论 -
java.io.File类介绍
File是用于表示或者说映射实际文件系统对象,如文件或目录。这样java代码就能操作计算机上的文件系统对象了。像setReadOnly()方法等一看就是设置该文件对象为只读。File类的实例是不可变的;也就是说,一旦创建,File对象表示的抽象路径名将永不改变。 File类内部维护一个FileSystem接口的实现类,这个实现类非常重要,File许多方法的具体操作都是由这...原创 2018-05-20 00:25:08 · 287 阅读 · 0 评论 -
String.split("\\\\")的含义
如题:String.split("\\\\")的含义,就是字符串以”\"分割得到,字符串数组比如String str = "a\\b\\c"; 即对字符串“a\b\c”进行操作 String a = "\\\\"; String[] arr = str.split(a); for(String k :arr){ ...原创 2018-05-17 00:10:37 · 3345 阅读 · 0 评论 -
outputstream中flush的作用
部分outputstream的子类实现了缓存机制,为了提高效率当write()的时候不一定直接发过去,有可能先缓存起来一起发。flush()的作用就是强制性地将缓存中的数据发出去 以下是outputstream源码注释:方法刷新此输出流并强制将所有缓冲的输出字节被写出。刷新的常规协定是,调用它是一个迹象表明,如果以前写的任何字节都被缓冲的输出流的实现,如字节应立即写入到它们的目的地。...原创 2017-03-01 09:47:01 · 5984 阅读 · 1 评论 -
OutputStream,write方法参数问题
OutputStream的write(int a)方法是往流里面写入一个byte,但是传入的却是int,会将int强制转换成byte在放入流中为什么呢? 有说是为了传输127~256之间的值,明显不是,java没有无符号数所以byte最大值只能是127这没错,但是难道就不管256之后的数了么 主要原因还是为了方便开发因为byte跟其他类型操作或者同类型位操作等会发生类型转...原创 2017-03-02 17:28:03 · 4753 阅读 · 0 评论 -
socket
Socket是一组接口,是应用层与TCP/IP协议族通信的中间软件抽象层。 对于开发者的我们socket就是一组接口,而本质上他把复杂的TCP/IP协议族隐藏在接口后面,让socket根据指定协议组织数据。 套接字结构或者说套接字数据结构,是指底层实现TCP/IP的数据结构集,它包括:1.该套接字所关联的本地和远程互联网地址和端口2.一个FIFO队列(RecvQ)用于存...原创 2017-03-08 18:43:51 · 84 阅读 · 0 评论 -
IO中的阻塞和同步等概念
1.同步与异步这对描述的是消息通信机制(synchronous/asynchronous communication)同步就是在发出一个‘调用’时,在没有结果前,该‘调用‘不返回。一旦返回就是携带返回值。或者说是调用者主动等待这个结果。异步就是调用发出后,该调用直接返回,而没有返回结果。而是在‘被调用者’有了结果后通过状态、通知来告诉调用者,或者通过回调函数来处理这个结果 2...原创 2017-03-13 14:07:33 · 187 阅读 · 0 评论 -
java位移运算符详解
转自:https://www.cnblogs.com/winsker/p/6728672.html 移位运算符操作的对象就是二进制的位,可以单独用移位运算符来处理int型整数。 运算符 含义 例子 <<左移运算符,将运算符左边的对象向左移动运算符右边指定的位数(在低位补0)x<<3&g...原创 2018-02-23 13:59:10 · 458 阅读 · 0 评论