随笔分类 - Java基础
关于java基础的
摘要:有时候我们需要对线上的JVM信息以及GC信息进行统计。基于Java的agent 技术可以实现。 1. 新建agent 相关的类 工具类 package org.example.jvmdebug; import java.lang.management.GarbageCollectorMXBean;
阅读全文
摘要:之前见过好多种-javaagent 参数,比如我们IDEA启动一个类的时候就会有好多的javaagent。 好像又叫探针技术,简单研究下其过程。 Java 5 中提供的 Instrument 包启动时往 Java 虚拟机中挂上一个用户定义的 hook 程序,可以在装入特定类的时候改变特定类的字节码,
阅读全文
摘要:java 中有许多native 方法,下面简单研究下native 方法的实现以及在java 中调用native 方法。 下面以简单的操作加减乘除实现 1. 新建java 类 源码如下: package com.zd.bx; public class Operation { public native
阅读全文
摘要:javassit 用法 在看dubbo源码和mybatis源码的时候发现代理用的是javassist, 简单研究下。可以动态的修改一个类,也可以动态的创建类,也可以实现代理(可以基于继承和接口两种)。 pom如下; <dependency> <groupId>org.javassist</group
阅读全文
摘要:参考菜鸟教程:https://www.runoob.com/java/java8-new-features.html 1. 接口默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法;而且允许定义static方法,使用的时候直接类名
阅读全文
摘要:1.事件监听器模式简单使用 比如监听门开关改变事件以及name改变事件。 1.事件相关类 抽象门事件 package cn.qlq.event.base; import java.util.EventObject; public abstract class DoorEvent extends Ev
阅读全文
摘要:研究一下正则表达式的用法。java中正则表达式还是非常常见的。最常用的就是字符串切割,或者判断系统某一设置是否满足指定的格式。 1. 介绍 正则表达式定义了字符串的模式。 正则表达式可以用来搜索、编辑或处理文本。 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。 2. 语法 在其他语言
阅读全文
摘要:1. 什么是内省? 内省(Introspector)是Java语言对JavaBean类属性、事件的处理方法。 例如类User中有属性name,那么必定有getName,setName方法,我们可以通过他们来获取或者设置值,这是常规操作。 Java提供了一套API来访问某个属性的getter/sett
阅读全文
摘要:今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: 测试: 结果: [-64, 16, 0, 0, 0, 2, 4, 0, 1, 0, 0, -94, 111]C010
阅读全文
摘要:在学习多线程的时候用到了匿名内部类,匿名内部类可以访问static静态成员变量或者final修饰的局部变量。 匿名内部类在编译之后会生成class文件,比如Test内的第一个匿名内部类编译之后就是Test$1.class; 匿名内部类中访问的final修饰的局部变量在生成Test$1.class之后
阅读全文
摘要:类型转换 在项目中经常会遇到数组转集合、集合转数组、数组之间类型转换等操作 1.数组转集合 为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码: Arrays.asList确实会返回一个ArrayList对象,但是该类是Arrays类 中一个私有静态内部类,而不是常见
阅读全文
摘要:我们知道main函数是java程序的入口,main函数的参数类型是String[]。 1.Eclipse中向main方法传递参数 例如: 直接运行是不会打印任何信息的,所以需要传递参数。 (1)右键 run as -> run configuration (2)在Arfuments中输入参数:(多个
阅读全文
摘要:前提需要明白List是引用类型,引用类型采用引用传递。 我们经常会遇到一些需求求集合的交集、差集、并集。例如下面两个集合: List<String> list1 = new ArrayList<String>(); list1.add("A"); list1.add("B"); List<Strin
阅读全文
摘要:JDK内存 jdk内存实际是jvm内存,jvm有一个运行时数据区,其实就是对这一部分的大小分配。 运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method
阅读全文
摘要:String不是基本数据类型,String和8种包装类型是不可变类。String和8种基本数据类型采用值传递。 关于方法区中的常量区和class文件中的常量区的关系,参考:https://www.cnblogs.com/qlqwjy/p/8515872.html 前言: 静态常量池(class文件的
阅读全文
摘要:一个由try...catch...finally引出的思考,在前面已经初步了解过不可变与可变、值传递与引用传递,在这里再次深入理解。 1.先看下面一个try..catch..finally的例子: Person.java 结果: s3Person [age=0, name=finally] 总结:
阅读全文
摘要:对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。实现多态的两种方式也是接口和抽象类,当然重写是多态的第三种表现方式。 1.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声
阅读全文
摘要:在Java集合的学习中,我们明白了: 看到tree,可以按顺序进行排列,就要想到两个接口。Comparable(集合中元素实现这个接口,元素自身具备可比性),Comparator(比较器,传入容器构造方法中,容器具备可比性)。 那么Comparable和Comparator有什么区别呢? 1. Co
阅读全文
摘要:首先需要明白 final和finally是关键字,finalize是一个方法。 1. final关键字 final可以修饰类、方法、变量, 修饰类表示类不可以被继承 修饰方法表示此方法不可以被重写(覆盖)但是可以被重载 修饰变量表示变量不可变(引用不可变--也就是不可以重新指向另一个对象,但是引用内
阅读全文
摘要:之前在项目中用的日志记录器都是log4j的日志记录器,可是到了新公司发现都是slf4j,于是想着研究一下slf4j的用法。 注意:每次引入Logger的时候注意引入的jar包,因为有Logger的包太多了。。。。。。 Logger必须作为类的静态变量使用。原因如下: 1 使用static修饰的属性是
阅读全文