![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础知识
文章平均质量分 64
gdp5211314
这个作者很懒,什么都没留下…
展开
-
Java多线程:volatile变量、happens-before关系及内存一致性
什么是 Volatile 变量?Volatile 是 Java 中的一个关键字。你不能将它设置为变量或者方法名,句号。认真点,别开玩笑,什么是 Volatile 变量?我们应该什么时候使用它?哈哈,对不起,没法提供帮助。volatile 关键字的典型使用场景是在多线程环境下,多个线程共享变量,由于这些变量会缓存在 CPU的缓存中,为了避免出现内存一致性错误而采用 volat转载 2015-12-16 16:16:51 · 690 阅读 · 0 评论 -
判断一个数组中是否有重复的元素
判断数组中是否存在重复的元素: Java代码 import org.apache.commons.lang.ArrayUtils; public boolean isDupInArray(Object[] array) { if (ArrayUtils.isEmpty(array) == true) {转载 2013-11-16 21:00:56 · 1957 阅读 · 0 评论 -
java中的classpath(基础知识学习)
拿maven打包之后的路径作为例子,classes文件夹下,是classpath的根目录,在使用这种方式加载文件的时候,如果文件不在这个根目录下,要进行配置到具体的路径,例如,如果是classpath的根路径,应该这样配置:如果在根路径下的路径的话,要这样配置:这代表根路径下的所有*.xml文件多谢正则大师的知道原创 2013-10-30 17:25:29 · 568 阅读 · 0 评论 -
一个“java.lang.NoSuchMethodError”异常引发的思考
这几天一直很郁闷,我的系统在启动后,访问某个页面一直抛错:ERROR impl.WebxRootControllerImpl - Error occurred while process request /auction/publish/publish.htmjava.lang.NoSuchMethodError: com.taobao.shopservice.client.tai原创 2013-10-18 14:22:47 · 828 阅读 · 0 评论 -
深入分析 Java 中的中文编码问题
编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一个 HTTP 请求怎么控制编码格式?如何避免出现中文问转载 2013-10-10 19:55:44 · 751 阅读 · 0 评论 -
利用jOOR简化Java 反射使用
原文:http://lukaseder.wordpress.com/2011/12/29/a-neater-way-to-use-reflection-in-java/ Java的反射机制是Java一个非常强大的工具, 但是和大多数脚本语言相比, 使用起来却是有种"懒婆娘的裹脚布——又臭又长"的感觉. 比如在PHP语言中, 我们可能这样写: Php代码转载 2013-06-26 19:09:42 · 720 阅读 · 0 评论 -
关于static的使用
在面向对象的Java里使用static是罪恶的,首先想到使用static是邪恶的。 但不是意味着使用static是错误的,因为使用static在部分场景下也是有优势的,我觉得基本有三种场景下适合使用static:1、全局不修改的常量,注意是全局不修改。比如JDK中的Integer.MAX_VALUE 2、非常基础且无状态的功能方法。比如Math中的各个方法3、创建对象。j转载 2013-03-20 10:26:52 · 659 阅读 · 0 评论 -
java异常链
Java版1.4后呢,有了异常链的概念什么叫异常链呢?这里不说概念性的解释,我举个例子来解释说明它。比如有A和B两个方法,当A方法调用B方法时,B方法抛出异常,这个时候呢A方法就有两种处理的方式1.用throws将异常再次抛出。2.就是用try-catch做具体的处理。这个道理大家应该明白吧。不明白的再把异常的基础看看。异常链这个时候好像还没有说到吧??就是说,在t转载 2013-03-28 17:40:13 · 881 阅读 · 0 评论 -
Java自定义注解
注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据)。注解的语法比较简单,除了@符号的使用以外,它基本上与java的固有语法一致,java内置了三种注解,定义在java.lang包中。@Override 表示当前方法是覆盖父类的方法。@Deprecated 表示当前元素是不赞成使用的转载 2013-03-01 14:31:52 · 287 阅读 · 0 评论 -
抽象类继承接口的用法缘由
用接口的同时,又用抽象类,这是很常见的一种设计方式这样可以在提供一定重用代码的基础上,也为user扩展提供了切入点。举个例子,ASP.Net里的IHttpHandler接口和Page类。Page是abstract class,其实现了接口IHttpHandler。在Page基类里微软实现了一个页面生命周期的模板,这样一般的用户你可以直接从Page基类里继承,只要去Overr原创 2013-03-12 13:51:34 · 578 阅读 · 0 评论 -
java的volatile与多线程
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。 Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。 下面是个例子:恢复注释转载 2013-02-22 09:30:43 · 343 阅读 · 0 评论 -
Java内存模型happens-before法则+单例的延迟加载
什么是happens-before? happens-before就是“什么什么一定在什么什么之前运行”,也就是保证顺序性。 因为CPU是可以不按我们写代码的顺序执行内存的存取过程的,也就是指令会乱序或并行运行, 只有上面的happens-before所规定的情况下,才保证顺序性。 如: Java代码 public class Test {转载 2013-02-05 09:44:11 · 484 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一转载 2012-12-18 13:14:44 · 322 阅读 · 0 评论 -
Java IO体系之强大的RandomAccessFile
现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下“Lucene是一款非常优秀的全文检索库”。可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实现了,直接使用Java中的流读取了txt文本里原来所有的数据转成字符串后,然后拼接了“Lucene是一款非常优秀的全文检索库”,又写回文本里了,至此,大功告成。后来需求改了,向5G数据的txt文本里追转载 2013-11-07 13:12:59 · 965 阅读 · 0 评论 -
【性能跟踪】btrace学习二--btrace一个简单例子
btrace安装好了,就看一些语法吧。可以到btrace的官方帮助文档中去看,基本上就可以http://kenai.com/projects/btrace/pages/UserGuide 【注:你本地的jdk要是1.6及以上才行,1.5可是不支持的】 下面以一个例子来说明:新建了一个工程,目录结构如下: 写btrace脚本和一般的java差别不大,只是用了一些ann转载 2014-03-28 16:26:27 · 533 阅读 · 0 评论 -
在遍历List时,对List里的对象进行remove(),此操作会改变List的大小()
先看看代码:1for(ComType com : ComList){2 if(!com.getName.contains("abc")){3 CosList.remove(com);4转载 2014-04-22 15:17:57 · 2538 阅读 · 0 评论 -
依赖注入与JSR-330的参考实现——Guice
依赖注入(控制反转的一种形式),它是Java开发主流中一个重要的编程范式(思维方式)。简单的说,使用DI技术可以让对象从别处获得依赖项,而不是由它自己来构造。使用DI有很多好处,它能降低代码之间的耦合度,让代码更易于测试、更易读。Java DI的官方标准是JSR-330,本文我们还会介绍JSR-330的参考实现Guice 3,一个轻量级 的DI框架。IoC and DI使用Io转载 2015-08-03 16:41:30 · 636 阅读 · 0 评论 -
JNA 之 初识(上)
JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。使用JNI调用共享类库(.dll/.so文件)是非常麻烦的事情,既需要编写java代码,又要编写C语言的代理方法,这其中需要很多数据类型的转换,是让人非常头痛。JNA框架就是为了解决这些问题和繁琐的事情而开发的,它提供一组Java工具类用于在运行期动态访问系统转载 2015-01-19 15:33:06 · 474 阅读 · 0 评论 -
将JNI的dll添加到jar包并发布和执行的方法
原文链接:http://blog.csdn.net/caesarzou/article/details/5672760参考英文链接:转载 2014-10-30 09:39:25 · 1820 阅读 · 0 评论 -
危险!在HashMap中将可变对象用作Key
本文中我们将会讨论在Java HashMap中将可变对象用作Key。所有的Java程序员可能都在自己的编程经历中多次用过HashMap。那什么是HashMap呢?HashMap是一种用哈希值来存储和查找键值对(key-value pair,也称作entry)的一种数据结构。为了正确使用HashMap,选择恰当的Key是非常重要的。Key在HashMap里是不可重复的。内容转载 2014-10-22 11:01:31 · 1069 阅读 · 0 评论 -
Java中的泛型方法
泛型是什么意思在这就不多说了,而Java中泛型类的定义也比较简单,例如:public class Test{}。这样就定义了一个泛型类Test,在实例化该类时,必须指明泛型T的具体类型,例如:Test t = new Test();,指明泛型T的类型为Object。 但是Java中的泛型方法就比较复杂了。 泛型类,是在实例化类的时候指明泛型的具体类型;泛型方转载 2014-08-12 10:02:55 · 451 阅读 · 0 评论 -
JQuery+ajax+jsonp 跨域访问
Jsonp(JSON with Padding)是资料格式 json 的一种“使用模式”,可以让网页从别的网域获取资料。关于Jsonp更详细的资料请参考http://baike.baidu.com/view/2131174.htm,下面给出例子: 一.客户端Html代码 > html> head> meta http-equi转载 2014-07-10 15:23:10 · 465 阅读 · 0 评论 -
跨域的理解与实现
域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系(即Trust Relation)。信任关系是连接在域与域之间的桥梁。当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可以跨网分配文件和打印机等设备资源,使不同的域之间实现网络资源的共享与管理。 有一种简明的说法来解释广域跨域:跨域访问,简单来说就是 A 网站的 javascript转载 2014-07-10 14:40:55 · 467 阅读 · 0 评论 -
AJAX 跨域请求 - JSONP获取JSON数据
Asynchronous JavaScript and XML (Ajax ) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术。Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索。使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器。Ajax 也是许多 mas转载 2014-07-10 15:20:50 · 512 阅读 · 0 评论 -
有关“双重检查锁定失效”的说明
双重检查锁定(以下称为DCL)已被广泛当做多线程环境下延迟初始化的一种高效手段。遗憾的是,在Java中,如果没有额外的同步,它并不可靠。在其它语言中,如c++,实现DCL,需要依赖于处理器的内存模型、编译器实行的重排序以及编译器与同步库之间的交互。由于c++没有对这些做出明确规定,很难说DCL是否有效。可以在c++中使用显式的内存屏障来使DCL生效,但Java中并没有这些屏障。转载 2014-05-26 16:36:37 · 911 阅读 · 0 评论 -
Java中的软引用,弱引用和虚引用
在Android的图片处理中,碰到的一个非常普遍的问题便是OOM错误 为此网上也有很多例子,而在之前的一篇转载里 提到了ListView中加载图片的ImageLoader,而其中有一处,使用到了名为SoftPreference的类 这是Java中的一个类 也就是所谓的软引用 在查询了相关的资料以后 会发现SoftPreference的特性,非常适合用来处理OOM引起的问题 下面是百度文库的转载 2014-05-19 14:13:41 · 465 阅读 · 0 评论 -
Apache HTTP Server 与 Tomcat 的三种连接方式介绍
首先我们先介绍一下为什么要让 Apache 与 Tomcat 之间进行连接。事实上 Tomcat 本身已经提供了 HTTP 服务,该服务默认的端口是 8080,装好 tomcat 后通过 8080 端口可以直接使用 Tomcat 所运行的应用程序,你也可以将该端口改为 80。既然 Tomcat 本身已经可以提供这样的服务,我们为什么还要引入 Apache 或者其他的一些专门的 HTTP 服转载 2014-04-24 11:49:37 · 528 阅读 · 0 评论 -
关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
今天是个很丰富的日子,早上一上班,第一个听到的惊爆消息就是楷子得了肠胃炎,一大早去医院挂水了…… 随后风胜和笑虎也没来,后来得知他们俩去去华星现代产业园参加培训,内容是关于Apache与Nginx的。于是乎,我非常感兴趣地查了一下培训用的PPT,并跟旁边的俊牧了解了一下关于服务器的一些东西……整个交流过程中,我发现好多概念已经被我遗忘了,有的也很模糊,于是乎,我还是决定到网上查一下,并记录转载 2014-04-24 11:16:56 · 812 阅读 · 0 评论 -
技巧:ArrayList删除元素时, 从尾部开始遍历,可大大提升执行效率
一.描述: 1. 工作中,常常遇到这样的要求: 将列表里符合(或不符合)某条件的元素删除, 如: 有列表list = [ "a", "b", "c", "d" ], 删除其中的"a", "b", "c" 2. 关键在于遍历: 建议从尾部开始, 取代常规的从头部开始 3. 有人会说 使用 LinkedList 更合适 -- 此处只考虑转载 2012-12-15 17:12:26 · 660 阅读 · 0 评论 -
KMP算法详解
相信很多人(包括自己)初识KMP算法的时候始终是丈二和尚摸不着头脑,要么完全不知所云,要么看不懂书上的解释,要么自己觉得好像心里了解KMP算法的意思,却说不出个究竟,所谓知其然不知其所以然是也。 经过七八个小时地仔细研究,终于感觉自己能说出其所以然了,又觉得数据结构书上写得过于简洁,不易于初学者接受,于是决定把自己的理解拿出来与大家分享,希望能抛砖引玉,这便是Bill写这篇文章想要转载 2012-09-18 21:56:15 · 430 阅读 · 0 评论 -
Java内部类总结
Java内部类其实在J2EE编程中使用较少,不过在窗口应用编程中特别常见,主要用来事件的处理。其实,做非GUI编程,内部类完全可以不用。 内部类的声明、访问控制等于外部类有所不同,要灵活使用内部类来编写程序,还是有相当难度的,Java发明了这种难懂的玩意儿,在其他语言中是没有的,但是在Java中,内部类也相当的重要,尤其做GUI开发时候,事件的响应处理全靠内部类了。转载 2012-08-26 14:00:52 · 449 阅读 · 0 评论 -
自制单机多线程查询器
程序如下:/** * Java线程:多线程查询 * * @author zaixing 2012-02-28 00:00:00 */public class Test2 {public static boolean hit = false;public static ExecutorService threadPool;public static void ma原创 2012-02-28 10:50:14 · 440 阅读 · 0 评论 -
自制单机多线程查询器(改进)
/** * Java线程:多线程查询(改进) * * @author zaixing 2012-02-28 00:00:00 */public class Test3 {public static boolean hit = false;public static ExecutorService threadPool;public static void main(原创 2012-02-28 13:18:04 · 424 阅读 · 0 评论 -
CountDownLatch与CyclicBarrier二者很重要的区别
1.看一下一下的程序:public class Test {public static void main(String[] args) {ExecutorService threadPool = Executors.newFixedThreadPool(3);CountDownLatch cb = new CountDownLatch(7);// 创建障碍器,并设置MainT原创 2012-02-22 20:03:41 · 523 阅读 · 0 评论 -
java打包小技巧(eclipse IDE下)
1.打包的时候选择:2.选择3.看看最终打包出来的东东,解压一下:看一下“MANIFEST.MF”文件,展示一下:看出来什么端倪了吗?我们只要将需要的附属包加到ocr_lib目录下,就可以运行程序了。4.说了这么多,这种方式有什么好处呢?不用“java -Xbootclasspath/a:/usrhome/thirdlib.jar:原创 2012-02-22 17:23:42 · 542 阅读 · 0 评论 -
Java Remoting远程服务(上)
今天我们来聊聊Java远程服务的解决方案。Java分布式远程服务的解决方案,近几年在互联网应用越来越普及。我们简单分析下,形成这种格局的背景。相关厂商内容Mobile Up!第一期:跨平台框架(1月11日 周三晚)盛大云计算创意&开发大赛火热报名中!高速下载:Adobe Flash Builder 4.5 简体中文正式版 for Windows高速下载:转载 2012-01-03 20:48:58 · 591 阅读 · 0 评论 -
基础概念
1.宽表:一行多字段,缺点在于有数据冗余,优点在于查询数据的时候不需要join.2.窄表:一列多行表,每个行的字段要有一个ID,这个ID代表该行的这个字段代表的意义,这种表的好处在于降低数据冗余,因为,一个ID可能会对应多条数据,缺点在于当查询数据的时候要进行join.3.维度表,事实表:事实表就是窄表中带有ID的表,维度表就是包含ID和ID对应值的表。4.domain object(原创 2012-02-07 19:44:13 · 303 阅读 · 0 评论 -
Java编程最差实践
原文地址:http://www.odi.ch/prog/design/newbies.php 每天在写Java程序, 其实里面有一些细节大家可能没怎么注意, 这不, 有人总结了一个我们编程中常见的问题. 虽然一般没有什么大问题, 但是最好别这样做. 另外这里提到的很多问题其实可以通过Findbugs(http://findbugs.sourceforge.net/ )来帮我们进行检查出来.转载 2012-02-07 19:27:03 · 594 阅读 · 0 评论 -
java基础学习笔记
1.java静态方法(继承)在java中,子类可以继承父类的静态方法。同时,如果N是M的子类,M m = new N();这样调用静态方法,是会调用父类的静态方法的,和调用非静态方法是不同的,这点是需要注意的。2.final关键字如果在类中没有初始化final属性,那么请在所有的构造方法中,初始化final属性。如果是final属性,是原生类型时,不允许修改其值;如果是对象引用时,原创 2012-01-26 14:37:25 · 391 阅读 · 0 评论 -
java泛型
Java泛型编程指南此系列文章译自SUN的泛型编程指南, 看不懂译文的请看原文http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf一、绪言JDK1.5对JAVA语言进行了做了几个扩展,其中一个就是泛型。本指南旨在介绍泛型。如果你熟悉其它语言的构造类似的东西,特别是C++的模板(template),你会很快发现它们之间的转载 2012-01-18 11:39:39 · 322 阅读 · 0 评论