JAVA
文章平均质量分 81
NoClay
立志成为一名段子手
展开
-
开发的过程中注意下自己的代码质量
背景大多数项目中,存在着或多或少的“屎山”代码,这些代码臭不可闻,又无法进行变更,让人每次看到都不仅眉头紧皱,直呼What’s up! 为了不让别人在接手自己代码时一边厚礼蟹,一边优美的中国话,所以在开发的过程中也要关注自己的代码质量问题。本文仅从Android开发角度阐述。魔法值代码中遗留魔法值,比如1000,0, 10, 1.0,这些值单独出现在某一处代码,会让人摸不着头脑,且如果涉及到传参协议的地方,如果用魔法值为key,很可能在解析数据的地方会出现错误的解析。这些既不美观,也存在风险。if原创 2021-10-22 17:51:06 · 258 阅读 · 0 评论 -
HashMap源码分析(中)--Java篇
HashMap内部的常量与Android比较共同拥有的: /** * The default initial capacity - MUST be a power of two. * 默认的初始容量,必须是2的次方 */ static final int DEFAULT_INITIAL_CAPACITY = 4; /** * The maximu原创 2017-03-13 21:13:13 · 273 阅读 · 0 评论 -
HashMap源码分析(下)--Android篇
HashMap中的常量/** * The default initial capacity - MUST be a power of two. * 默认的初始容量,必须是2的次方 */ static final int DEFAULT_INITIAL_CAPACITY = 4; /** * The maximum capacity, used i原创 2017-03-13 21:13:44 · 351 阅读 · 0 评论 -
对象的内存布局与锁类型
对象的内存布局对象在内存中的存储的布局可以分为3块区域:对象头(Header)、示例数据(Instance Data)、和对齐填充(Padding)1. 对象头对象头分为两部分,一部分用于存储自身对象的运行时数据,如哈希码,GC粉黛年龄,锁状态,等等,这里举例了32位虚拟机上的mark word。另一部分是类型指针,即对象指向它的类的元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,并不原创 2017-05-28 18:26:30 · 670 阅读 · 0 评论 -
类文件结构
声明转载请注明出处:http://blog.csdn.net/ns_code/article/details/17675609 本文在原文的基础上进行了一些整理无关性的基石实现语言无关性的基础仍然是虚拟机和字节码存储格式,java虚拟机不和包括java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了java虚拟机指令集和符号表以及若干其他辅助信息,原创 2017-06-06 20:29:44 · 388 阅读 · 0 评论 -
JVM垃圾回收机制与内存回收
垃圾回收机制GC是垃圾回收机制,java中将内存管理交给垃圾回收机制,这是因为在面向对象编程中一个对象的生命周期往往无法预料,所以我们无法为每个对象指定回收时机。但是我们可以采用System.gc()和Runtime.getRuntime().gc()进行请求垃圾回收,可以使用对象的finalize()对必要资源在垃圾回收之前进行处理。优点:使得java程序员不需要考虑内存管理,由于垃圾回收机制,j原创 2017-06-04 10:56:27 · 923 阅读 · 0 评论 -
类加载机制
类加载机制在java语言里边,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会另类加载时稍微增加一些性能开销,但是会为java语言程序提供高度的灵活性,java里天生就可以动态扩展的语言特性就是依赖运行期间动态加载和动态连接的特点是显得。类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的原创 2017-06-22 16:03:22 · 356 阅读 · 0 评论 -
Java中的最常犯的错误Top10
1. 数组转ArrayList为了实现把一个数组转换成一个ArrayList,很多java程序员会使用如下的代码:List<String> list = Arrays.asList(arr); Arrays.asList确实会返回一个 ArrayList对象,但是该类是 Arrays类 中一个私有静态内部类,而不是常见的 java.util.ArrayList类。这个 java.util.Array原创 2017-07-18 21:19:39 · 2392 阅读 · 3 评论 -
使用命令行javac命令出现编码GBK的不可映射字符
使用命令行javac命令编译java文件,提示错误:编码GBK的不可映射字符。在编译的时候,如果我们没有用-encoding参数指定我们的JAVA源程序的编码格式,则javac.exe会获得我们操作系统默认采用的编码格式。JDK根据操作系统的file.encoding参数(它保存的就是操作系统默认的编码格式,如WIN2k,它的值为GBK),把源程序从默认编码格式转化为JDK内部默认的UNICODE格转载 2017-07-21 10:17:10 · 697 阅读 · 0 评论 -
Util方法:收集了一些常用的方法,一起free,open,share啊
说明本Util方法集为博主收集使用而来,不一定都使用过,如遇到一下问题请联系博主!方法错误=_=请一定联系我,大家互相帮助下!方法过时=_=这个讲真,太有可能了,同上!有新的方法想要给我的,太感谢了!方法库:https://github.com/NoClay/UtilsRepositoryAndroidUtil方法列表 限定符和类型 方法和说明 static Bitmap ge原创 2017-07-22 17:11:20 · 528 阅读 · 0 评论 -
Java写文件的方式-二进制文件
前言当大家面临需要持久化的数据的时候,可能会面临很多选择,比如数据库,文件等。博主这里有一个需求,有很多组数据,0-4096的整型,很显然如果使用数据库,每一组数据作为一条记录,总是感觉浪费,而且这些数据,单一值的价值并不大,通常需要几百组放到一起才有价值。所以如果将几百组数据汇聚到一个cache文件中,那就可以解决这个问题了,但是考虑到整型,如果我们可以直接利用整型进行存储,那是不是可以达到最高的原创 2017-12-08 11:08:45 · 24557 阅读 · 1 评论 -
HashMap源码分析(上)
HashMap的继承关系 HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, serializable AbstractMap<K, V> implements Map<K, V>HashMap是基于哈希表的Map接口的一种实现,相对应的还有TreeMap,LinkedHashMap等实现方原创 2017-03-13 21:11:56 · 293 阅读 · 1 评论 -
每日十道面试题(六)
1. Spring框架的优点有什么?分层架构,可以选择使用自己需要的层而不用管不需要的部分Spring是POJO编程,POJO(简单对象,不实现任何接口)编程使得可持续构建和可测试能力提高依赖注入和IoC(控制反转)是的JDBC(Java Data Base Connectivity,java数据库连接)操作简单化开源免费对象集中化和简单化2. JVM加载类的原理机制?Java中,在调用原创 2017-03-12 22:01:16 · 289 阅读 · 0 评论 -
每日十道面试题(五)
1. Servlet的基本架构Servlet是Server与Applet的缩写,是服务端小程序的意思。是SUN公司提供的一门用于开发动态Web资源的技术。 Servlet本质上也是Java类,但要遵循Servlet规范进行编写,没有main()方法,它的创建、使用、销毁都由Servlet容器进行管理(如Tomcat)。Servlet是和HTTP协议是紧密联系的,其可以处理HTTP协议相关的所有内容。原创 2017-03-12 00:04:41 · 341 阅读 · 0 评论 -
JAVA--简易聊天室程序
写在前面: 网络程序设计是指编写与其他计算机进行通信的程序,java已经将网络程序所需要的东西封装成不同的类。只要创建这些类的对象,进行实例化,使用相应的方法,即可实现功能。本实例使用的类(swing部分不进行列举):Socketpublic Socket(InetAddress address,int port) throws IOExceptionpublic Socket(S原创 2016-04-28 21:55:10 · 1426 阅读 · 2 评论 -
JAVA--浅谈线程
写在前面: 以下均为楼主自己理解,请多指正!线程简介现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某原创 2016-04-21 16:28:12 · 413 阅读 · 0 评论 -
JAVA--浅谈集合
写在前面: 请多多指正。集合类概述 参考文献 http://blog.csdn.net/liulin_good/article/details/6213815java集合类图上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线原创 2016-04-22 22:15:27 · 2115 阅读 · 1 评论 -
JAVA--继承与初始化
当我们创建一个类的对象的时候会发生以下事情:类的加载,初始化静态变量,对象的创建。加载策略:当我们创建某个对象的时候,加载器会加载其类文件,当加载器注意到该类有其父类,即该类继承自其他类,加载器会继续向上加载其父类,直到找到其祖先。初始化策略:当我们加载到根基类之后,根基类的static变量开始初始化,然后是下一个导出类,对其static变量进行初始化,接着以此类推,直到要创建原创 2017-01-17 13:45:39 · 445 阅读 · 1 评论 -
JAVA--String类简介
字符串操作是计算机程序设计中最常见的行为。在java中更是如此,但是java中String对象是不可修改的,当你查阅了jdk文档后,你会发现,String类中的每一个看起来会修改String值的方法,实际上是创建了另外一个全新的String对象,以包含修改后的字符串内容,而最初的String对象则丝毫未动。我们发现String对象的只读属性,所以指向它的任何引用都不可能改变它的值,因此,也就不原创 2017-01-21 21:49:39 · 470 阅读 · 0 评论 -
每日十道面试题(二)
1. short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错?前者有错,s1 = s1 + 1 后边的s1 + 1会将结果提升为int型进行运算,但是s1 为short型,所以必须显示的进行类型转换,后者虽然是对的,但是short的存储范围过小,还是有可能产生溢出的。2. sleep和wait有什么区别?sleep可以使线程休眠一段时间,在原创 2017-03-08 16:18:46 · 368 阅读 · 0 评论 -
每日十道面试题(三)
1. 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类,但是前提是实体类必须有明确的构造函数。2. 启动一个线程是用run()还是start()?启动一个线程调用的是start方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由jvm调度并执行,这并不意味着会立即执行,还需要线程调度,run方法可以产生必须退原创 2017-03-08 21:31:43 · 556 阅读 · 0 评论 -
每日十道面试题(四)
1. 编程题:写一个单例模式出来懒汉模式public class Singleton { private static Singleton instance = null; private static Object lockObject = new Object(); //私有构造方法 private Singleton() { } public st原创 2017-03-10 00:08:02 · 282 阅读 · 0 评论 -
每日十道面试题(一)
1. 谈谈final,finally,finalize的区别final(修饰词):如果一个类被声明为final,那么这个类无法被继承,所以一个类无法同时既是abstract的,也是final的,如果使用final修饰方法或者变量,可以保证它们不会被修改,但是需要注意的是引用类型的变量final对其引用生效,比如数组int []a,对于数组a,a为对整个数组的引用,但是可以修改a[0]之类的值。被声原创 2017-03-07 20:56:28 · 414 阅读 · 0 评论 -
JAVA--List的应用
1、List中可以添加任何对象,包括自己定义的新的类class Person{ ….. } 上面定义了一个Person类,下面看好如何使用List:Person p1=new Person();Person p2=new Person();List list=new ArrayList();list.add(p1);list.add(p2);//这里是将对象加入到list中for(i转载 2016-03-20 21:42:50 · 505 阅读 · 0 评论