![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 88
薄荷
这个作者很懒,什么都没留下…
展开
-
JDK中的proxy动态代理原理剖析
主要API类是:Proxy.newProxyInstancepublic static Object newProxyInstance(ClassLoader loader, Class[] interfaces, Invocation原创 2017-03-16 22:05:05 · 742 阅读 · 0 评论 -
HTTP Header中的ETag
原文参考百度百科:http://baike.baidu.com/view/3039264.htm概念Etag[1] 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等。具体内部含义是使服务器控制的,就像Cookie那样。HTTP协议规格说明定义ETag为“被请求变量的实体值”。另一种说法是,ETag是一个可以与Web资源关联的记转载 2013-09-02 20:14:55 · 14088 阅读 · 0 评论 -
全零网络IP地址0.0.0.0表示意义详谈
RFC:0.0.0.0/8 - Addresses in this block refer to source hosts on "this"network. Address 0.0.0.0/32 may be used as a source address for thishost on this network; other addresses within 0.0.0.0/原创 2013-09-06 13:44:38 · 3192 阅读 · 0 评论 -
使用静态内部类提高封装性
原文链接:http://book.51cto.com/art/201202/317517.htmJava中的嵌套类(Nested Class)分为两种:静态内部类(也叫静态嵌套类,Static Nested Class)和内部类(Inner Class)。内部类我们介绍过很多了,现在来看看静态内部类。什么是静态内部类呢?是内部类,并且是静态(static修饰)的即为静态内部类。只有在是静态转载 2013-08-28 16:54:20 · 1120 阅读 · 0 评论 -
Executor线程,线程池
Executor 最近用了一次,简单记录下。Executor 是 java5 下的一个多任务并发执行框架(Doug Lea),可以建立一个类似数据库连接池的线程池来执行任务。这个框架主要由三个接口和其相应的具体类组成。Executor、 ExecutorService 和 ScheduledExecutorService 。 1 、 Executor 接口:是用来执原创 2013-04-27 22:51:38 · 703 阅读 · 0 评论 -
Java 中的堆和栈
Java 中的堆和栈 堆栈的简介Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配 。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由 new创建的对象和数转载 2013-04-28 17:38:39 · 662 阅读 · 0 评论 -
hashCode() 和equals() 区别和作用
HashSet和HashMap一直都是JDK中最常用的两个类,HashSet要求不能存储相同的对象,HashMap要求不能存储相同的键。 那么Java运行时环境是如何判断HashSet中相同对象、HashMap中相同键的呢?当存储了“相同的东西”之后Java运行时环境又将如何来维护呢? 在研究这个问题之前,首先说明一下JDK对equals(Object obj)和hashcode()这两个转载 2013-03-02 15:30:38 · 891 阅读 · 0 评论 -
Synchronized和Static Synchronized区别
原文地址:http://blog.csdn.net/lb85858585/article/details/7456096通过分析这两个用法的分析,我们可以理解java中锁的概念。一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全局锁(该锁针对的是类,无论实例多少个对象,那么线程都共享该锁)。实例锁对应的就是synchronized关键字,转载 2013-03-12 23:49:41 · 655 阅读 · 0 评论 -
Android 内存泄漏——context泄漏
Context泄漏。 这是一个很隐晦的内存泄露的情况。先看一个Android官网提供的例子: private static Drawable sBackground; @Override protected void onCreate(Bundle state) { super.onCreate(state); TextView label = new TextView(原创 2012-11-07 19:56:39 · 4786 阅读 · 1 评论 -
android 异步加载图片
ListView 是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很好滚动流畅是做不到的 所以这里就需要把这些信息利用多线程实现异步加载原创 2011-09-27 17:38:06 · 1396 阅读 · 1 评论 -
Etag和Expires
Etag和Expires题记:本文对页面中Etag和Expires标识处理,使得页面更加有效被Cache。摘要1、Etag和Expires中Client 端Http Request Header及Server端Http Reponse Header工作原理。2、静态下Apache、Lighttpd和Nginx中Etag和Expires配置3、非实时交互动态页面中Etag原创 2013-09-02 20:17:31 · 1115 阅读 · 0 评论 -
Java Process中waitFor()
在编写Java程序时,有时候我们需要调用其他的诸如exe,shell这样的程序或脚本。在Java中提供了两种方法来启动其他程序: (1) 使用Runtime的exec()方法 (2) 使用ProcessBuilder的start()方法 。Runtime和ProcessBulider提供了不同的方式来启动程序,设置启动参数、环境变量和工作目录。但是这两种方法都会返回一个用于管理操作系统进程的Pro原创 2013-09-04 21:43:13 · 4310 阅读 · 0 评论 -
JDK中的proxy动态代理
动态代理的原理:1. proxy0继承Proxy,实现IPackageManager 接口,需要传入 InvocationHandler,初始化对应的h对象。2. 我们的h对象就是PackageManagerWoker,所以我们会调用到PackageManagerWoker的 invoke方法。3. 所以是proxy0,调用InvocationHandler的 invoke 方法,传入对应的方法。InvocationHandler 放射调用对应的tagret中的方法。套了2层。原创 2016-03-15 22:01:58 · 5906 阅读 · 0 评论 -
Android签名介绍
Android签名介绍证书指纹获取证书指纹使用google map api 或者 百度lbs api 需要提交apk 的证书指纹,百度和google 提供的方法如下:1、> keytool –list –v –keystore d:\debug.keystore debug签名密码为 android 2、通过eclipse 获取原创 2014-10-14 16:38:17 · 899 阅读 · 0 评论 -
MeasureSpec介绍及使用详解
一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求。一个MeasureSpec由大小和模式组成。它有三种模式:UNSPECIFIED(未指定),父元素部队自元素施加任何束缚,子元素可以得到任意想要的大小;EXACTLY(完全),父元素决定自元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;AT_MOST(至多),子元素至多原创 2014-04-05 16:05:03 · 4757 阅读 · 1 评论 -
ByteBuffer
在NIO中,数据的读写操作始终是与缓冲区相关联的.读取时信道(SocketChannel)将数据读入缓冲区,写入时首先要将发送的数据按顺序填入缓冲区.缓冲区是定长的,基本上它只是一个列表,它的所有元素都是基本数据类型.ByteBuffer是最常用的缓冲区,它提供了读写其他数据类型的方法,且信道的读写方法只接收ByteBuffer.因此ByteBuffer的用法是有必要牢固掌握的.1.创建Byt转载 2014-02-19 16:43:07 · 878 阅读 · 0 评论 -
使用非阻塞ServerSocketChannel、SocketChannel代替ServerSocket和Socket
在使用传统的ServerSocket和Socket的时候 很多时候程序是会阻塞的比如 serversocket.accept() , socket.getInputStream().read() 的时候都会阻塞 accept()方法除非等到客户端socket的连接或者被异常中断 否则会一直等待下去read()方法也是如此 除非在输入流中有了足够的数据 否则该方法也会一直等待下去知道原创 2014-02-19 12:03:38 · 900 阅读 · 0 评论 -
Fiddler 教程
原文:Fiddler 教程Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大的帮助。阅读目录Fiddler的基本介绍Fiddler的工作原理同类的其它工具Fiddler如何捕获Firefox的会话Firefox 中使用Fi转载 2014-02-10 11:19:14 · 844 阅读 · 1 评论 -
Java对象的强、软、弱和虚引用
Java对象的强、软、弱和虚引用:http://java.chinaitlab.com/oop/716371.html简单理解Java GC与幽灵引用:http://developer.51cto.com/art/200906/128189.htm原创 2013-12-17 20:53:19 · 777 阅读 · 0 评论 -
BlockingQueue
一、概述:BlockingQueue作为线程容器,可以为线程同步提供有力的保障。二、BlockingQueue定义的常用方法1.BlockingQueue定义的常用方法如下: 抛出异常特殊值阻塞超时插入add(e)offer(e)put(e)offer(e转载 2013-09-25 11:44:37 · 1122 阅读 · 0 评论 -
java多线程系列
Java多线程系列学习,不是自己写的,觉得别人写得很不错,记录一下:Java多线程(一)之volatile深入分析Java多线程(二)之Atomic:原子变量与原子类Java多线程(三)之ConcurrentHashMap深入分析Java多线程(四)之ConcurrentSkipListMap深入分析Java多线程(五)之BlockingQueue深入分析Java多线程原创 2013-10-09 15:25:38 · 1368 阅读 · 0 评论 -
【Head First设计模式】-Decorator模式
原文:http://www.blogjava.net/sterning/archive/2008/01/21/176679.html一、要完成的任务星巴兹(Starbuzz)是以扩张速度最快而闻名的咖啡连锁店。如果你在街角看到它的店,在对面街上肯定还会看到另一家。因为扩张速度实在太快了,他们准备更新订单系统,以合乎他们的饮料供应要求。他们原先的类设计是这样的…… 购买咖啡时,也转载 2013-10-09 11:22:21 · 1274 阅读 · 0 评论 -
缓存ListView行中的 View
listView 在每次仅绘制可视范围内的item,这样当你滚动listview的实际上他是动态加载的。避免listView滚动刷新getView,所以就需要缓存ListView 中item中的view。具体实现如下: 定义ViewCacheimport原创 2011-09-27 17:36:53 · 552 阅读 · 0 评论 -
UML和Java的阻抗
<br />笔者在Jdon已经反复讨论了面向对象的Java和数据库的阻抗不匹配性(mismatch),并提出“数据库时代的终结”。但是,作为同为面向对象的工具实现UML和Java之间也同样存在着阻抗和匹配,在实际应用中,我们常用两种 方式来表达我们的设计意图:Java源码或UML图形,那么哪一个更方便更准确表达设计意图呢?这是仁者见仁智者见智了。 在实际中视使用者爱好。<br /> 那么,UML和Java同为表达工具,两者是否一致呢?回答是否定的。 根据Is UML out of date(http://转载 2010-06-12 22:21:00 · 566 阅读 · 1 评论 -
你还在用if else吗?
<br />面向过程设计和面向对象设计的主要区别是:是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else,当然,界面表现层除外,即使你使用Java/C#这样完全面向对象的语言,也只能说明你的思维停留在传统的面向过程语言上。<br />传统思维习惯分析<br /> 为什么会业务逻辑层使用if else,其实使用者的目的也是为了重用,但是这是面向过程编程的重用,程序员只看到代码重用,因为他看到if else几种情况下大部分代码都是重复的,只有个别不同,因此使用if else可以避免重转载 2010-06-12 22:15:00 · 407 阅读 · 0 评论 -
第二篇:JAVA字符编码系列二:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
1、函数介绍 在Java中,字符串用统一的Unicode编码,每个字符占用两个字节,与编码有关的两个主要函数为: 1)将字符串用指定的编码集合解析成字节数组,完成Unicode-〉charsetName转换 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 2)将字节数组以指定的编码集合构转载 2010-01-22 12:22:00 · 1193 阅读 · 0 评论 -
第三篇:JAVA字符编码系列三:Java应用中的编码问题
1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687"。注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示"。 2. 编码基本知识 最早的编码是原创 2010-01-22 12:25:00 · 487 阅读 · 0 评论 -
java 修饰符和访问权限介绍
java 修饰符和访问权限介绍 修饰符介绍:public 使用对象:类、接口、成员变量、方法介绍:无论它所处在包定义在哪该类(接口、成员)都是可访问protected使用对象:成员变量、方法介绍:成员变量只能在定义它包中被访问,如果在其他包中被访问,则实现这个思路方法类必须是该成员所属类子类private使用对象:成员变量、成员方法介绍:成员变量和方法都只能在定义它类中被访问,其他原创 2009-09-28 16:19:00 · 2369 阅读 · 1 评论 -
JAVA高手的基础素养
1、扎实的基础 数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握它们,很难写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。 2原创 2009-09-15 11:05:00 · 515 阅读 · 0 评论 -
Myeclipse 单步调试 详释
最基本的操作是: 1, 首先在一个java文件中设断点,然后运行,当程序走到断点处就会转到debug视图下, 2, F5键与F6键均为单步调试,F5是step into,也就是进入本行代码中执行,F6是step over, 也就是执行本行代码,跳到下一行, 3,F7是跳出函数 step return 4,F8是执行到最后。 =============原创 2009-07-11 22:17:00 · 1504 阅读 · 1 评论 -
打包jar文件
jar命令用于打一个xxx.jar文件 用法:jar {ctxu}[vfm0Mi] [jar-文件] [manifest-文件] [-C 目录] 文件名 ... 选项: -c 创建新的存档 -t 列出存档内容的列表 -x 展开存档中的命名的(或所有的〕文件 -u 更新已存在的存档 -v 生成详细输出到标准输出上原创 2009-09-04 18:58:00 · 654 阅读 · 0 评论 -
Java内存分析小节
Java内存分析小节:栈内存,堆内存:栈内存中存放局部变量(主函数中的数据也是局部变量),和形参。调用方法,执行方法是分配内存空间,但是这个内存空间会在方法结束后,自动消失。使用构造方法new出来的对象,一般有两部分内存,主要是引用类型有两部分内存空间。在栈内存中存放地址,用地址来指向。在堆内存中存放实例,实际数据。基本类型只分配一块内存。方法调用时,值传递,但是如果传原创 2009-09-04 19:01:00 · 524 阅读 · 0 评论 -
图形界面小结
图形界面有三种顶级Swing容器。JApplet, JFrame,JDialog我现在主要用JFrame JApplet: 一个重要方法paint,paint(Graphics g); 绘图还有一个绘制2D图形的方法 Graphics g2d=(Graphics2D)g;布局管理器 1 BorderLayout 东西南北中 可原创 2009-08-10 10:06:00 · 669 阅读 · 0 评论 -
要了解详细信息,请使用-xlint:unchecked重新编译
一、遇到问题:用ant执行jasperreport的samples/charts示例的build.xml时,无法编译,提示错误如下:javac: [javac] Compiling 2 source files to E:/jiangcm/workspace-forict-myeclipse/jasperreports/demo/samples/charts [javac] 注意: E原创 2009-07-19 15:26:00 · 10695 阅读 · 1 评论 -
StringBuffer和String的区别
Java 开发人员熟悉在一个循环中使用StringBuffer 来代替串联 String 对象能获得最佳性能。然而,多数开发人员从来没有比较两种方法产生的字节代码的区别。首先我们必须清楚的一点是String类是final类型的,因此你不可以继承这个类、不能修改这个类。我们使用String的时候非常简单,通常都是String s = "hello",但是Java API中同时提供了一个构造函原创 2009-07-18 00:11:00 · 1065 阅读 · 1 评论 -
JAVA字符编码系列一:Unicode,GBK,GB2312,UTF-8概念基础
Unicode: unicode.org制定的编码机制, 要将全世界常用文字都函括进去. 在1.0中是16位编码, 由U+0000到U+FFFF. 每个2byte码对应一个字符; 在2.0开始抛弃了16位限制, 原来的16位作为基本位平面, 另外增加了16个位平面, 相当于20位编码, 编码范围0到0x10FFFF. UCS: ISO制定的ISO10646标准所定义的 Universal Char转载 2010-01-22 12:02:00 · 583 阅读 · 0 评论 -
Eclipse常用技巧总结
Eclipse常用技巧总结2008-10-17 08:55关于eclipse的使用方面,其实有些东西都是小技巧的东西,知道了后,对编程会带来很大的方便。一.老是使用鼠标操作,有的功能要点好多次鼠标,eclipse都有哪些热键呢?平时使用eclipse编程中,我最常用的三个组合热键:1.alt+/ 代码提示功能,编程中首选热键 熟悉delphi编程的原创 2009-11-29 23:45:00 · 1047 阅读 · 0 评论 -
数据库连接池技术
<br />连接池原理<br />连接池技术的核心思想是:连接复用,通过建立一个数据库连接池以及一套连接使用、分配、治理策略,使得该连接池中的连接可以得到高效、安全的复用,避免了数据库连接频繁建立、关闭的开销。另外,由于对JDBC中的原始连接进行了封装,从而方便了数据库应用对于连接的使用(非凡是对于事务处理),提高了开发效率,也正是因为这个封装层的存在,隔离了应用的本身的处理逻辑和具体数据库访问逻辑,使应用本身的复用成为可能。连接池主要由三部分组成:连接池的建立、连接池中连接的使用治理、连接池的关闭。下面就转载 2010-08-07 09:12:00 · 426 阅读 · 0 评论 -
Java/JSP中文乱码问题解决心得
<br /> <br />一、Java中文问题的由来<br />Java的内核和class文件是基于unicode的,这使Java程序具有良好的跨平台性,但也带来了一些中文乱码问题的麻烦。原因主要有两方面,Java和JSP文件本身编译时产生的乱码问题和Java程序于其他媒介交互产生的乱码问题。<br />首先Java(包括JSP)源文件中很可能包含有中文,而Java和JSP源文件的保存方式是基于字节流的,如果Java和JSP编译成class文件过程中,使用的编码方式与源文件的编码不一致,就会出现乱码。基于这原创 2010-07-14 11:50:00 · 471 阅读 · 0 评论 -
Jsp中文乱码解决方法
<br />Jsp是一个很热门的话题,但让大多数人都头痛的是JSP页面中的乱码问题,笔者身有体会;曾为了解决中文乱码问题郁闷了好几天,试了很多方法都不行。最后在JSP专业人士的帮助下,终于解决。之后笔者曾对此做了一些小的研究。<br /> 首先我们先了解一下问题的原因。一般情况在在每个JSP页的头部都有这样一条语句:<br /><% page contentType="text/html; charset=gb2312" %>这条语句决定了此页面使用GB2312编码形式,而在数据库中一般用的是iso-885原创 2010-07-14 11:48:00 · 386 阅读 · 0 评论