Java基础
wu_cai_
这个作者很懒,什么都没留下…
展开
-
Java 多线程(六) synchronized关键字详解
Java 多线程(六) synchronized关键字详解 多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。 同步机制可以使用synchronized关键字实现。 当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。 当synchronized方法执行完或发生异常时,会自动释放锁。转载 2015-10-27 16:48:19 · 340 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的ConcurrentHashMap,让我们从原理上细致的了解它们,能够让我们在深度项目开发中获益非浅转载 2016-09-04 21:21:17 · 279 阅读 · 0 评论 -
Java以UTF-8编码读写文件
java中文件操作体现了设计模式中的装饰者模式 。以utf-8编码写入文件:[java] view plain copy FileOutputStream fos = new FileOutputStream("test.txt"); OutputStreamWriter osw = new OutputStreamWr转载 2016-10-14 16:29:23 · 578 阅读 · 0 评论 -
java 字节流与字符流的区别
字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。范例:使用字节流不关闭执行Java代码转载 2016-10-14 16:39:33 · 235 阅读 · 0 评论 -
菜鸟举例理解字节流和字符流区别
菜鸟举例理解字节流和字符流区别按照uft8编码方式存储文档文档存储路径在D盘下/*** 按照utf8格式存储文档*/public static void storeDataByUTF8(){ String path = "D:" + File.separator + "textutf8.txt"; File file = new File(path); try {原创 2016-10-14 21:01:59 · 1833 阅读 · 0 评论 -
Java 序列化的高级认识
如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。引言将 Java 对象序列化为二进制文转载 2016-10-15 15:36:29 · 210 阅读 · 0 评论 -
一个经典例子让你彻彻底底理解java回调机制
转载地址:http://blog.csdn.net/xiaanming/article/details/8703708/以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有转载 2016-10-15 23:50:59 · 434 阅读 · 0 评论 -
Java获取本机外网ip地址的方法
Java获取外网IP地址的方法获取本地IP地址的方法public static String getLocalAddress(){ String ip = ""; try { ip = InetAddress.getLocalHost().getHostAddress(); } catch (UnknownHostException e) { // TODO Auto-g原创 2016-10-16 17:25:42 · 28519 阅读 · 11 评论 -
深入研究java.lang.Class
Class的作用 Java程序在运行时,Java运行时系统一直对所有的对象进行所谓的运行时类型标识。这项信息纪录了每个对象所属的类。虚拟机通常使用运行时类型信息选准正确方法去执行,用来保存这些类型信息的类是Class类。Class类封装一个对象和接口运行时的状态,当装载类时,Class类型的对象自动创建。Class的特点Class没有公共构造方法。Class对象是在加载类原创 2016-10-03 16:16:44 · 243 阅读 · 0 评论 -
NIO - Buffer
Buffer 类是 java.nio 的构造基础。一个 Buffer 对象是固定数量的数据的容器,其作用是一个存储器,或者分段运输区,在这里,数据可被存储并在之后用于检索。缓冲区可以被写满或释放。对于每个非布尔原始数据类型都有一个缓冲区类,即 Buffer 的子类有:ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer、LongBuf转载 2016-10-07 01:43:28 · 289 阅读 · 0 评论 -
Java与C通过JNI指针相互传递
注意1、c中指针可以直接转为java里的int值,都是32位无损失(32位操作系统或者gcc 32编译器)。2、循环里要注意释放本地引用,因为循环太多或不可预知,容易溢出,你没有做着咯额异常处理,jvm会直接退出,看不到打印堆栈信息的,所以使用jni时如果程序没有打印就无故退出,就检查下本地方法。3、long 对应J不是L,会给出打印信息提示的(64位操作系统或gcc 64位)。转载 2017-09-19 14:37:07 · 12259 阅读 · 1 评论 -
Java中有关Null的9件事
对于Java程序员来说,null是令人头痛的东西。时常会受到空指针异常(NPE)的骚扰。连Java的发明者都承认这是他的一项巨大失误。Java为什么要保留null呢?null出现有一段时间了,并且我认为Java发明者知道null与它解决的问题相比带来了更多的麻烦,但是null仍然陪伴着Java。我越发感到惊奇,因为java的设计原理是为了简化事情,那就是为什么没有浪费时间在指针、操作符重载转载 2016-09-04 19:03:19 · 305 阅读 · 0 评论 -
套路重写Java的equals函数
String为什么要重写equals函数? 大多数学生都是从C++学起的,大家习惯用C++的==来比较两个string是否相等。为什么Java就要重写equals函数来比较两个String类是否相等呢?(叹气)其实是因为C++的string已经重载了操作符==(如果你还记得重写friendly operation==来比较两个类相等);但是在Java中操作符==比较的是对象指向的虚拟地原创 2016-07-22 01:57:38 · 2648 阅读 · 0 评论 -
java线程安全总结
要认识java线程安全,必须了解两个主要的点:java的内存模型,java的线程同步机制。特别是内存模型,java的线程同步机制很大程度上都是基于内存模型而设定的。浅谈java内存模型 不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的内存模型上,所谓线程安全无非是要控制多个线程对某个资源的有转载 2016-03-29 18:07:56 · 350 阅读 · 0 评论 -
面向对象基本特征
转载地址:http://www.360doc.com/content/12/0102/15/306774_176667425.shtml#向对象的三个基本特征是:封装、继承、多态。封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。转载 2016-03-20 17:16:55 · 290 阅读 · 0 评论 -
java 基本数据类型及自动类型提升
1.Java的8种基本数据类型及其所占空间大小: boolean 8bit/1byte byte 8bit/1byte char 16bit/2byte short 16bit/2byte float 32bit/4byte int 32bit/4byte long 64bit/8...原创 2016-04-30 17:49:43 · 4188 阅读 · 2 评论 -
互斥锁,自旋锁与自适应自旋锁
线程安全与锁的优化互斥锁:从 实现原理上来讲,Mutex属于sleep-waiting类型的锁。例如在一个双核的机器上有两个线程(线程A和线程B),它们分别运行在Core0和 Core1上。假设线程A想要通过pthread_mutex_lock操作去得到一个临界区的锁,而此时这个锁正被线程B所持有,那么线程A就会被阻塞 (blocking),Core0 会在此时进行上下文切换(Context Swi原创 2016-05-03 13:39:51 · 2274 阅读 · 1 评论 -
《Java虚拟机规范》阅读(三):Class文件格式
《Java虚拟机规范》阅读(三):Class文件格式 每一个Class都对应着唯一的一个类或借口的定义信息。这里,我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼,但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成,所有的16位、32位和64位长度的数据将被构造成 2个、4个和8个8字节单位来表示。转载 2016-05-03 13:45:31 · 430 阅读 · 0 评论 -
Java的System.out.println()的解析
System 是java.lang中的一个类。System.out 中的out, 是System类中的静态对象PrintStream,println是PrintStream中的方法。因为out是static的成员变量,所以可以使用“类名.成员”来引用。如果真想用out.println();import static java.lang.System.out; public class Test {原创 2016-04-22 21:06:10 · 723 阅读 · 0 评论 -
Java基础学习总结——Java对象的序列化和反序列化
一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是转载 2016-06-06 02:03:24 · 273 阅读 · 0 评论 -
Java IO流分析整理
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读转载 2016-06-06 14:53:09 · 272 阅读 · 0 评论 -
从计算机底层理解Java并发
网上有不计其数的并发编程文章,甚至有不计其数的书来介绍这个主题。你为什么要花10分钟时间来读完这篇文章呢?我给的答案:“他们全是废话。”,我觉得这个主题用10分钟就可以说完,根本不要用花这么长时间,也不用去折腾Java内存模型之类的东西。我只讲原理,不会告诉你怎么用Java的并发库,这是java doc干的事情理解Java并发原理或者其他语言的并发(没错,这篇文章是“跨语言”的!!!还这么转载 2016-07-02 16:50:57 · 1546 阅读 · 0 评论 -
Eclipse Debug不为人知的秘密
转载地址: http://blog.csdn.net/mgoann/article/details/7239492认识debug视图,红色部分框为线程堆栈视图,黄色部分框为表达式、断点、变量视图,蓝色部分为代码视图。 线程堆栈视图分别介绍一下这几个按钮的含义:1.表示当前实现继续运行直到下一个断点,快捷键为F8。2.表示打断整个进程3.表示进入当前方转载 2016-06-18 18:12:31 · 3469 阅读 · 0 评论