Java基础
文章平均质量分 71
梦境迷离
点关注不迷路,您的点赞就是我的动力。
展开
-
Java对象的内存布局
在本文中,下面的mark即表示Mark World结构,klass即表示Klass Word结构。它们是oopDesc中的数据结构。在本文中,hashcode 就是 identity hash code(是指不经重写过由jvm计算的hashcode)。总览在本教程中,我们将了解JVM如何在堆中布置对象和数组。首先,我们将从一些理论开始。然后,我们将探讨在不同情况下的不同对象和数组的内存布局。通常,运行时数据区域的内存布局不是JVM规范的一部分,并由实现者自行决定。因此,每个JVM实现可能具有不同.翻译 2020-11-02 13:44:19 · 485 阅读 · 1 评论 -
Java内存模型-编译器开发人员视角
title: Java内存模型2categories:复习整理tags: [Java底层]description: 主要介绍为编译器开发人员提供关于JSR-133的一些描述以及一些自己的总结和补充。目录{:toc}本文是为编译器开发人员提供的 JSR-133 Cookbook,为程序开发人员提供的JMM入门请参考 Java内存模型。前言:自从最初编写以来已有10多年了,许多处理器和语言内存模型规范和问题已经变得更加清晰和易于理解。许多还没有。虽然本指南保持准确,但其中一些不断演变.翻译 2020-11-02 13:40:23 · 287 阅读 · 0 评论 -
javap反编译和ASM的基础分析和应用介绍
本文是ASM与CGLIB的简单使用的后续,更多的是提供思路和总结自己觉得比较有用的内容javap 是 Java class 文件分解器,可以反编译(即对 javac 编译的文件进行反编译),也可以查看 java 编译器生成的字节码。用于分解 class 文件。先看看 javap 都有哪些参数(java 8):参数说明-help --help -?输出此用法消息-version版本信息-v -verbose输出附加信息-l输出行号和本地变量表-p原创 2020-09-03 15:09:32 · 754 阅读 · 0 评论 -
JAVA序列化技术-----二进制数据详细介绍
待序列化的对象有一个值是1000的属性numpackage serializable.test; import java.io.FileOutputStream;import java.io.ObjectOutputStream;import java.io.Serializable; public class SerializableTestimplement原创 2017-09-08 13:48:11 · 1480 阅读 · 0 评论 -
java 引用类型 虚引用
对象终止化机制(finalization) Object类中有一个finalize方法,设计初衷是在一个对象被真正回收之前用来执行一些清理工作 java并没有类似c++的析构函数就通过finalize方法实现。 java垃圾回收器的运行时间是不固定的,所以清理工作的实际运行时间 是不能预知。 虚引用用来解决(幽灵引用) 创建虚引用PhantomReference的时候必须指定一个引用队列原创 2017-08-22 10:38:10 · 291 阅读 · 0 评论 -
java基础加强-注解(Annotation)
原文:http://www.cnblogs.com/xdp-gacl/p/3622275.html一、认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,现在已经有不少的人开始用注解了,注解是JDK转载 2017-08-07 10:00:06 · 255 阅读 · 0 评论 -
JAVA CAS原理深度分析
出处:http://zl198751.iteye.com/blog/1848575看了一堆文章,终于把JAVA CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.net/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey转载 2017-08-04 17:46:04 · 482 阅读 · 0 评论 -
java基础复习-线程
-----------------线程优先级 设置方法类:public class ThreadPriority extends Thread { //extends Thread public void run() { for (int x = 0; x < 100; x++) { //getName()在接口thred中,如果是其他接口,用Th原创 2017-08-04 15:30:40 · 206 阅读 · 0 评论 -
java基础复习-时间
* Calendar:它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。Calendar rightNow = Calendar.getInstance(); // 子类对象 // 获取年 int year = rightNow.get(Calendar.YE原创 2017-08-04 15:30:01 · 263 阅读 · 0 评论 -
java基础复习-Math和String StringBuffer类使用
/* * Math:用于数学运算的类。 * 成员变量: * public static final double PI * public static final double E * 成员方法: * public static int abs(int a):绝对值 * public static double ceil(double a):向上取整 * publi原创 2017-08-04 15:22:14 · 308 阅读 · 0 评论 -
java基础复习-IO附加
数据输入流:DataInputStream * DataInputStream(InputStream in) * 数据输出流:DataOutputStream * DataOutputStream(OutputStream out) ------------------------------------------------------------------- D原创 2017-08-04 15:15:08 · 266 阅读 · 0 评论 -
java基础复习-map与collection set+list集合总结
-------------MAP Map成对出现,K唯一,V可重复。 举例: 学号 姓名----HashMap特点:无序 建立集合: Map map = new HashMap 添加元素: map.put("邓超","孙俪") 返回上一个值(后面那个)原创 2017-08-04 15:10:14 · 541 阅读 · 0 评论 -
MyEclipse中将maven项目转化为动态web项目/直接生成简单maven或生成web-maven项目
直接生成简单maven项目将箭头的地方选中即可--带来的结果是--快速建起一个maven,生成的不是web项目,需要转换图1转化为动态 webMyEclipse中新建简单maven生成的是普通java maven项目需要转成web项目maven转动态web项目---->选择项目----->MyEclipse------>project facets---原创 2017-07-28 17:29:17 · 4270 阅读 · 0 评论 -
java基础复习--复习总结12
2:Set集合(理解) (1)Set集合的特点 无序,唯一 (2)HashSet集合(掌握) A:底层数据结构是哈希表(是一个元素为链表的数组) B:哈希表底层依赖两个方法:hashCode()和equals() 执行顺序: 首先比较哈希值是否相同 相同:继续执行equals()方法 返回true:元素重复了,不添加 返回false:直接把原创 2017-08-04 14:52:54 · 245 阅读 · 0 评论 -
java代码效率优化
JAVA代码效率优化分类: JAVA2015-01-04 13:54 250人阅读 评论(0) 收藏 举报java代码效率性能优化 最近在想自己编程时是否注意过代码的效率问题,得出的答案是:没有。代码只是实现了功能,至于效率高不高没怎么关注,这应该是JAVA程序员进阶的时候需要考虑的问题,不再是单纯的实现功能,也不是完全依赖GC而不关注内存中发生了什么,而要考虑到代码的转载 2017-08-15 21:03:57 · 529 阅读 · 0 评论 -
Java中的深拷贝和浅拷贝介绍
对象拷贝(Object Copy)就是将一个对象的属性拷贝到另一个有着相同类类型的对象中去。在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用对象的部分或全部 数据。Java中有三种类型的对象拷贝:浅拷贝(Shallow Copy)、深拷贝(Deep Copy)、延迟拷贝(Lazy Copy)一、引言 对象拷贝(Object Copy)就是将一个对象的属性拷贝到另转载 2017-09-23 17:05:33 · 239 阅读 · 0 评论 -
transient关键字小结
java 的transient关键字的作用是需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。 transient使用小结1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。2)transient关键字只能修饰变量,而不能修饰方法和类。注意,原创 2017-08-30 14:50:04 · 316 阅读 · 0 评论 -
Java字节数组序列化读取时异常的有效解决方案 java.io.StreamCorruptedException: invalid stream header: EFBFBDEF
读取对象的字节数组转化为String,当String再转化字节数组时,无法还原Java对象的坑网上的都没用,后来自己尝试解决了写入对象ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream sOut; try { sOut = ne...原创 2018-08-09 19:33:57 · 22491 阅读 · 7 评论 -
读取/写入文件
package java1;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.FileWriter;import ja原创 2017-09-07 20:13:46 · 234 阅读 · 0 评论 -
排查Java的内存问题
核心要点排查Java的内存问题可能会非常困难,但是正确的方法和适当的工具能够极大地简化这一过程;Java HotSpot JVM会报告各种OutOfMemoryError信息,清晰地理解这些错误信息非常重要,在我们的工具箱中有各种诊断和排查问题的工具,它们能够帮助我们诊断并找到这些问题的根本原因;在本文中,我们会介绍各种诊断工具,在解决内存问题的时候,它们是非常有用的,包括:HeapDumpOnO...转载 2018-04-17 10:38:06 · 1283 阅读 · 0 评论 -
Java NIO Demo全
1、文件NIOpackage cn.edu.jxnu.nio;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;import ...原创 2018-03-28 11:38:31 · 646 阅读 · 0 评论 -
垃圾回收总结
1.垃圾回收对象是使用new创建的, 但是并没有与之相对应的delete操作来回收对象占用的内存. 当我们完成对某个对象的使用时, 只需停止该对象的引用:->将引用改变为指向其他对象->将引用指向null->从方法中返回, 使得该方法的局部变量不复存在要点:->当我们从任何可执行代码都无法到达某个对象时, 它所占用的空间就可以被回收.->垃圾回收意味着我们永远不用担心...原创 2018-04-14 22:08:02 · 285 阅读 · 0 评论 -
java 反射机制复习
Person p=new Person();这是什么?当然是实例化一个对象了.可是这种实例化对象的方法存在一个问题,那就是必须要知道类名才可以实例化它的对象,这样我们在应用方面就会受到限制.那么有没有这样一种方式,让我们不知道这个类的类名就可以实例化它的对象呢?Thank Goodness!幸亏我们用的是java, java就提供了这样的机制.1).java程序在运行时可以获得任何一个类的字节码信...原创 2018-04-14 21:46:21 · 210 阅读 · 0 评论 -
二进制和16进制的转化与输出
package sha;import java.io.UnsupportedEncodingException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.Arrays;/** * 总结2进制16进制 * 注释的是sha的部分 *原创 2017-10-10 10:15:10 · 1161 阅读 · 0 评论 -
BASE64、MD5、SHA1
BASE64package base64;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class BASE { /** * BASE解密 * * @param key * @return * @throws Exception */ public static byte转载 2017-10-10 08:50:53 · 358 阅读 · 0 评论 -
程序运行时三种内存分配策略:静态的、栈式的、和堆式的,以及区别 按照编译原理的观点
程序运行时三种内存分配策略:静态的、栈式的、和堆式的,以及区别按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代码中不允许有可变数据结构(比如可变数组)的存在,也不允许有嵌套或者递归的结构出现,因为它们都会导致转载 2017-09-18 20:50:08 · 5216 阅读 · 0 评论 -
JAVA类的加载,链接,初始化总结
类->加载->链接->初始化类加载,最终定义一个类,将字节码转化为Class类的对象1、类加载器分为两类用户自定义类加载器---继承ClassLoader类,同时jiJVM会提供一些默认实现启动类加载器---由JVM的原生的代码生成最常用的system类加载器 通过ClassLoader的getSystemClassLoader()方法可以获取该类加载器的对象2、原创 2017-09-10 19:33:43 · 327 阅读 · 0 评论 -
java基础复习--复习总结11
1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 LinkedList: 底层数据结构是链表,查询慢,增删快 线程不安全,效率高 (2)ArrayList A:没有特有功能需要学习 B:案原创 2017-08-04 14:51:44 · 195 阅读 · 0 评论 -
java基础复习--复习总结10
1:对象数组(掌握) (1)数组既可以存储基本数据类型,也可以存储引用类型。它存储引用类型的时候的数组就叫对象数组。 (2)案例: 用数组存储5个学生对象,并遍历数组。2:集合(Collection)(掌握) (1)集合的由来? 我们学习的是Java -- 面向对象 -- 操作很多对象 -- 存储 -- 容器(数组和StringBuffer) -- 数组 而数组的长度固定,所原创 2017-08-04 14:50:24 · 210 阅读 · 0 评论 -
java基础复习-数组排序
冒泡排序和选择排序package array;public class TestArraySort { /** * @Title: main * @Description: TODO(数组的排序) * @param @param args 设定文件 * @return void 返回类型 * @throws */ public stat原创 2017-08-04 09:37:00 · 205 阅读 · 0 评论 -
一位资深程序员大牛给予Java初学者的学习路线建议
一位资深程序员大牛给予Java初学者的学习路线建议java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈每个阶段要学习的内容甚至是一些书籍。这一部分的内容,同样适用于一些希望转行到Java的同学。 在大家看之前,我要先声明两点。1、由于我本人是转载 2017-08-03 17:15:02 · 357 阅读 · 0 评论 -
java并发Fork/join框架-java并发编程的艺术
package testforkandjoin;import java.util.concurrent.ForkJoinPool;import java.util.concurrent.ForkJoinWorkerThread;import java.util.concurrent.Future;import java.util.concurrent.RecursiveTask;//原创 2017-08-07 17:45:23 · 325 阅读 · 0 评论 -
大公司最喜欢问的Java集合类面试题
大公司最喜欢问的Java集合类面试题 来源:IT宅男看了一些所谓大公司的JAVA面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧。java.util包中包含了一系列重要的集合类,而对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式。接口:CollectionCollection是最基本的集合接口,一个Col转载 2017-08-16 19:39:47 · 2090 阅读 · 0 评论 -
提高 Java 代码性能的各种技巧
提高 Java 代码性能的各种技巧 来源:字节技术Java 6,7,8 中的String.intern –字符串池这篇文章将要讨论 Java 6中是如何实现 String.intern 方法的,以及这个方法在Java 7 以及Java 8 中做了哪些调整。字符串池字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示转载 2017-08-16 19:31:48 · 353 阅读 · 0 评论 -
写好Java代码的30条经验总结
写好Java代码的30条经验总结 来源:希望未来成为一个优秀的Java程序员,有着良好的代码编写习惯是必不可少的。下面就让我们来看看代码编写的30条建议吧。(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:ThisIsAClassNamethisIsMethodOrFiel转载 2017-08-16 19:28:33 · 205 阅读 · 0 评论 -
Java程序员们最常犯的10个错误
原文:don'tknow将数组转化为一个列表时,程序员们经常这样做:List list = Arrays.asList(arr);Arrays.asList()会返回一个ArrayList对象,ArrayList类是Arrays的一个私有静态类,而不是java.util.ArrayList类,java.util.Arrays.ArrayList类有set()、get()、contain转载 2017-08-16 19:25:48 · 188 阅读 · 0 评论 -
Java 8 默认方法和多继承
Java 8 默认方法和多继承原文出处: colobu-鸟窝以前经常谈论的Java对比c++的一个优势是Java中没有多继承的问题。 因为Java中子类只能继承(extends)单个父类, 尽管可以实现(implements)多个接口,但是接口中只有抽象方法,方法体是空的,没有具体的方法实现,不会有方法冲突的问题。这些都是久远的说法了,自从今年Java 8发布后, 接口中也可以定义方法转载 2017-08-16 19:02:56 · 188 阅读 · 0 评论 -
高吞吐低延迟Java应用的垃圾回收优化
高吞吐低延迟Java应用的垃圾回收优化本文由 ImportNew - hejiani 翻译自 linkedin。欢迎加入翻译小组。转载请见文末要求。高性能应用构成了现代网络的支柱。LinkedIn有许多内部高吞吐量服务来满足每秒数千次的用户请求。要优化用户体验,低延迟地响应这些请求非常重要。比如说,用户经常用到的一个功能是了解动态信息——不断更新的专业活动和内容的列表。动态信息在Lin转载 2017-08-16 18:49:31 · 301 阅读 · 0 评论 -
Thread.sleep还是TimeUnit.SECONDS.sleep
Thread.sleep还是TimeUnit.SECONDS.sleep转载 2017-07-01 22:24:59 · 649 阅读 · 0 评论 -
关于堆和栈
转自:码农社区:独酌逸醉关于堆和栈的那些事2014-09-14 分类:算法设7问题描述编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?1. 在通常情况下由操作系统(OS)和语转载 2017-06-21 18:38:57 · 411 阅读 · 0 评论