
Java
一个行走的民
业精于勤,荒于嬉,行成于思,毁于随。
展开
-
java抽象类,接口
抽象类注意:1、abstract不能与final并列修饰同一个类。(final表示该类不能被继承,abstract表示该类需要被实现,有矛盾。final和abstract这两个关键字是反相关的)2、abstract 不能与private、static、final或native并列修饰同一个方法。(被private修饰的方法只能在本类中访问,这将使子类无法重写该抽原创 2016-05-19 20:57:47 · 345 阅读 · 0 评论 -
Java中byte做&0xff运算的原因及解析
Java中byte数据使用到&0xff的原因及解析网上瞎写的一大堆,实在是无语。把自己理解的整理分享给大家。 首先要知道原码、反码、补码是什么。可以参考: http://blog.youkuaiyun.com/u011080472/article/details/51280919 http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/Com...原创 2018-03-18 17:23:05 · 10890 阅读 · 3 评论 -
Java中char占多少字节
-有些人可能很纳闷,在看资料书的时候书上Java基础数据类型章节中明明写着char在Java中占两个字节,但是自己去实践的时候却发现英文字母只占一个字节,而中文占两个字节???为啥????一、内码与外码这里涉及到两个概念:内码(internal encoding)和外码(external encoding) 这个知乎回答里有很好的解释:https://www.zhihu.com/question/原创 2018-03-18 18:01:46 · 11146 阅读 · 2 评论 -
Java annotation注解使用及全面解析
首先Java注解是什么?注解就是一个标签。通过注解你可以给类or方法or变量添加一个标签。除此之外它没有其他作用了。你所见到的那些关于注解的神奇用法其实都是Java反射和编译器的功劳。1.元注解(一切注解的老祖宗:用了给注解贴标签的注解) - @Documente表示拥有该注解的元素可通过javadoc此类的工具进行文档化。该类型应用于注解那些影响客户使用带注释(commen...原创 2018-06-22 16:55:07 · 418 阅读 · 0 评论 -
Java Annotation实现原理浅析(上)
0.之前的一篇博客中写了写关于Annotation使用相关的,今天来分析下Annotation是实现原理 由于RetentionPolicy.SOURCE RetentionPolicy.CLASS的两种注解是JVM不可见的(在程序运行时,就无法使用到该注解)所以不做分析。 Test.javaimport java.lang.annotation.ElementType;impo...原创 2018-09-09 15:14:24 · 1817 阅读 · 0 评论 -
Java 线程池一之使用线程池的好处,以及Executors类
最近准备详细的复习下Java线程池相关的所以知识。就从我们最初使用线程池开始,也就是Executors,慢慢展开。0x01先谈谈为什么要使用线程池第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳...原创 2018-12-02 20:42:35 · 1947 阅读 · 0 评论 -
Java 线程池二之Executors创建的五种线程池及使用注意
0x01 关于ThreadPoolExecutor上一篇博客已经说了,Executors就是一个工具类。他创建线程池时,实际上是通过如下:new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, milliseconds,runnableTaskQueue, handler);corePoolSize:线程...原创 2018-12-02 20:43:49 · 2769 阅读 · 0 评论 -
Java静态代理和动态代理
代理类的两个优点:可以隐藏委托类的实现可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。1静态代理UML图如下:ServiceInterface: 服务接口类ServiceImpl:服务具体实现类,也就是被代理类,即委托类Proxy:代理类。ServiceImpl和Proxy都继承自同一个接口,proxy类通过包含一个ServiceImpl的引...原创 2019-02-18 17:56:57 · 266 阅读 · 0 评论 -
深入Java虚拟机二:类的生命周期和加载流程
如下图所示,从上往下按照顺序排列。其中加载–>验证–>准备–>初始化–>卸载这个5个阶段的顺序是固定的,解析和使用阶段视情况的而定。...原创 2019-05-03 11:14:13 · 157 阅读 · 0 评论 -
Java获取一个类的Class对象的四种方式
1.通过ClassLoader对象的loadClass()方法比如以下方式: ClassLoader.getSystemClassLoader().loadClass("com.my.test.Hello")去看一下loadClass的源码:public Class<?> loadClass(String name) throws ClassNotFoundExceptio...原创 2019-05-04 10:14:39 · 10497 阅读 · 0 评论 -
深入Java虚拟机一:类文件结构
这个系列的博客大多是阅读《深入理解Java虚拟机》后整理而来,是本好书值得读好多遍。写在前面:1.先引用一下书中的话:Class文件各个数据项目严格按照顺序紧凑地排列着,中间没有添加任何分隔符因为Class文件要保持经凑,在一些不定长的数据结构中就经常会出现如下结构数据长度length数据data其中length表示了紧随其后的data所占字节数。2.consta...原创 2019-05-01 16:52:40 · 198 阅读 · 0 评论 -
Java 数据类型的自动提升
Java 二元运算中数据类型的自动提升(均是指在二元操作符的运算中。)首先要知道Java基本类型自动转换 https://www.cnblogs.com/ljdblog/p/6253799.html 这篇博客写的很好Java类型自动提升《Java核心技术卷I》P43 Java定义了若干使用于表达式的类型提升规则: - 如果两个操作数其中有一个是double类型,另一个操作就会转换为doub原创 2018-03-18 17:18:15 · 1355 阅读 · 1 评论 -
Java PipedInputSream/PipedOutputStream的使用及源码分析
PipedInputSream/PipedOutputStream首先:这两个类就是为了在线程之间传输数据,通过使用这两个类来实现各个程序模块之间的松耦合通信。一个PipedInputStream应该只一个PipedOutputStream 绑定,不然可能造成状态混乱的。关于其内部源码的实现:内部默认缓存数组大小1024PipedInputSream/PipedOutput...原创 2018-03-17 11:35:25 · 680 阅读 · 0 评论 -
理解java的三大特性之多态
文章转载自:作者: chenssy 出处: http://www.cnblogs.com/chenssy/ 面向对象编程有三大特性:封装、继承、多态。 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法。 继承是为了重用父类代码转载 2016-05-19 21:36:24 · 348 阅读 · 0 评论 -
C++/Java 实现多态的方法(Java)
原文地址:http://leowzy.iteye.com/blog/720950感谢原文作者。既然多态是面向对象的三大本质特征之一(其它两个是数据抽象和继承),那么C++为什么不将方法调用的默认方式设置为动态绑定,而要通过关键字virtual进行标记呢?Bruce Eckel在《Thinking in C++》中提到,这是由于历史原因造成的,C++是从C发展而来的,而C转载 2016-07-02 16:14:32 · 469 阅读 · 0 评论 -
Java Callable、Future的两种使用方式
Java Callable、Future的两种使用方式Callable+Futurepublic class Test { public static void main(String[] args) { ExecutorService executor = Executors.newCachedThreadPool(); Task task = new原创 2017-09-21 16:49:00 · 12252 阅读 · 3 评论 -
Java join()使用及源码分析
Java join()使用及源码分析(先铺垫下,最后上源码) 首先再说一下join()方法的作用:若在父线程main中创建了一个子线程son,如果父线程需要等待子线程执行完再执行,则在父线程main中调用son.join();即可 官方解释:join() method suspends the execution of the calling thread until the object原创 2017-09-22 15:55:04 · 1392 阅读 · 0 评论 -
使用maven将项目中的test代码打包进jar中
使用maven将项目中的test代码打包进jar中项目结构如下: …/src/main/java/package/** <– application code …/src/test/java/package/** <– test code需求: test中有一个包含main方法的主类TestMain.java,将main、test、全部依赖代码打包到一个jar包中,最终能通过java -jar原创 2017-11-13 17:05:02 · 17154 阅读 · 3 评论 -
Java Split()函数的一些坑
Java Split()函数的一些坑1.关于解析得到的数组长度阿里 java手册中原话:使用索引访问用 String 的 split 方法得到的数组时,需做最后一个分隔符后有无内容的检查,否则会有抛 IndexOutOfBoundsException 的风险。String str = "ab, ,s,,,";System.out.println(str.split(",").le原创 2018-01-12 10:19:48 · 7625 阅读 · 0 评论 -
Java之Callable Future FutureTask Exectuor使用笔记
文章列表: 1. Callable Runnable 2. Future FutureTask 3. Executor框架 java的线程既是工作单元,又是执行机制。从jdk 5开始,把工作单元与执行机制分离开来。工作单元包括Runnable和Callable,执行机制由Executor框架提供。 Executor框架主要由以下3个部分组成: 任务。原创 2016-05-09 19:39:21 · 361 阅读 · 0 评论 -
Java ThreadLocal 是如何发挥作用的
Java ThreadLocal 是如何发挥作用的。首先插入一个ThreadLocal的使用场景以及用法的链接,这个链接里讲的很通畅。 看完之后我们分析下源码:以下源码来自JDK1.8 Thread.java源码publicclass Thread implements Runnable { //... //Thread中包含了一个ThreadLocal.ThreadLocal原创 2018-02-27 17:36:50 · 1974 阅读 · 0 评论 -
JS全局变量与局部变量的坑
先吐槽一下,js中var变量的作用域问题太鬼畜,特别是对于之前写Java,C++的人来说。<script type="text/javascript"> var a = "Hello"; function test(){ alert(a); var a = "World"; alert(a); } </script> 上面代码你原创 2018-02-08 17:15:30 · 1416 阅读 · 0 评论 -
JPS无法查看已经启动的Java进程信息
问题描述:启动Hbase集群中RegionServer后,通过JPS无法查看到该进程号,导致无法通过jstat来查看regionserver的内存情况,来做一些JVM参数调优。在网上查询到的一些信息来看:java程序启动后,默认(请注意是默认)会在/tmp/hsperfdata_userName目录下以该进程的id为文件名新建文件,并在该文件中存储jvm运行的相关信息,其中的userName...原创 2019-06-03 20:07:39 · 3050 阅读 · 0 评论