
java基础
文章平均质量分 61
ADRU
这个作者很懒,什么都没留下…
展开
-
线程在操作系统以及java中的几种状态(源码分析)
例如,调用Object.wait()方法会使线程进入等待状态,直到其他线程调用Object.notify()或Object.notifyAll()方法唤醒它。(Blocked):当一个线程在执行过程中遇到某种情况,如等待输入、等待I/O操作完成等,它可能会暂时停止执行,进入阻塞状态。例如,调用Thread.sleep(long millis)方法会使线程进入限时等待状态,直到指定的时间过去或者被其他线程中断。当一个线程尝试获取一个已经被其他线程持有的锁时,它会被阻塞,直到该锁被释放。原创 2024-01-26 16:05:04 · 482 阅读 · 1 评论 -
如何利用线程打断机制优雅的实现日志监控?
然后,在main()方法中,我们启动了这个线程,并在1秒后调用了thread.interrupt()方法来中断它。当线程被中断时,它会抛出InterruptedException异常,从而使得线程从阻塞状态中恢复执行。:Thread.interrupt()方法可以实现线程的打断。当一个线程处于阻塞状态(如等待、睡眠等)时,可以通过调用该线程的interrupt()方法来中断它。当线程被中断时,它会抛出一个InterruptedException异常,从而使得线程从阻塞状态中恢复执行。原创 2024-01-26 11:50:42 · 422 阅读 · 0 评论 -
java中基本类型之间的转换
以double和int为例,如果将一个double类型的值强制转换为int类型,那么小数部分将被直接截断,而不是四舍五入。因此,如果你有一个带有小数部分的double值,如3.14,在强制转换为int类型后,你将得到3,而不是3.14的整数部分3。整形的数据在进行计算的时候会转换为int类型去进行计算 同时要注意的是不要超过类型的数值范围。java中的 8 种基本数据类型,以及它们的占内存的容量大小和表示的范围。这种可以使多大范围的强制转换为小范围的,但是如果范围超了会导致精度丢失。原创 2023-12-20 12:19:38 · 399 阅读 · 0 评论 -
String中的intern( )方法
String中的intern( )方法并不是返回当前字符串的地址,而且返回字符串常量池的地址,也就是第一次创建该字符串的时候,它对应的地址。因此这个方法就可以用来比较字符串是否相等,因为只要值相等,返回的结果就是该字符串在字符串常量池中的地址。这样的话,就是相等的,他返回的是首次创建该值的地址。正常情况下应该是false。原创 2023-08-13 16:40:31 · 130 阅读 · 0 评论 -
java中的动态代理机制
动态代理可以无侵入式的给代码增加功能。对象如果嫌弃身上的事情太多,就可以通过代理来转移部分的职责原创 2023-07-26 00:21:58 · 227 阅读 · 0 评论 -
java:利用反射判断一个类上面是否含有某个注解?
在SpringMVC中,我们的业务层需要加上@Controller注解和@Requestmapping注解,那么他是怎么知道我们这些类上是否含有这些注解的呢?编写代码判断这个类是否含有该Reference注解。答案就是反射,所以可以说框架的核心就是反射。现在我们利用反射进行模拟判断是否含有注解。原创 2023-07-24 15:17:27 · 951 阅读 · 0 评论 -
java利用反射机制获取类的方法
需要注意的是,应该带上方法的参数,就比如我的类里面有两个run方法,那么就应该通过参数来区分调用的是哪个方法。首先呢 还是先创建一个测试类,包括有参和无参构造器,注解,公开和私有的方法。要想操作方法,就必须要创建实例,也就是对象,我们采用反射的形式创建对象实例。如果是操作私有的方法,就需要加上setAccessible方法进行设置权限。获取私有的方法,可以获取到private方法,不能够获取父类的方法。获取所有public的方法,该方法会返回其父类的方法。操作public修饰的方法。原创 2023-07-24 14:59:12 · 232 阅读 · 0 评论 -
java 元注解||自定义注解的使用
当用户查询注解类型并且该类没有该类型的注解时,将查询该类的超类以获取注解类型。RetentionPolicy.CLASS,标记的注解在编译时由编译器保留,但被Java虚拟机(JVM)忽略。标记了另一个注解,以限制该注解可以应用于哪种Java元素。RetentionPolicy.RUNTIME,标记的注解由JVM保留,以便运行时环境可以使用。ElementType.ANNOTATION_TYPE,可以应用于注解类型。是JavaSE8中引入的,表示标记的注解可以多次应用于同一声明或类型使用。原创 2023-07-22 17:04:46 · 123 阅读 · 0 评论 -
一文看懂lambda表达式
可以看到其实lambda就是对匿名内部类的优化,在写代码的时候首先写成匿名内部类的形式,实际代码写得多了自然也就会了,尽量不要一来就想着写成lambda的形式。根据规则,我们不需要关注它的内部类名字和方法名,只需要关注参数和方法本法,就可以改写成下面的形式。可推导可省略,一般的匿名内部类或者能够推导出调用的是什么方法的时候就能够使用lambda简化代码。如果记不住,先写成匿名内部类的形式,之后在编译器内alt+回车 选择转换成匿名内部类。参数只有一个的时候,小括号可以省略。参数类型可以推导,省略!原创 2023-07-20 23:12:52 · 116 阅读 · 0 评论 -
java:序列化与反序列化
(1)Java序列化就是指把Java对象转换为字节序列的过程 比如可以将一个类转化为json类型Java反序列化就是指把字节序列恢复为Java对象的过程。(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。在Java中,只要一个类实现了接口,那么它就可以被序列化。1、在Java中,只要一个类实现了接口,那么它就可以被序列化。2、通过。原创 2023-03-24 20:52:31 · 709 阅读 · 0 评论 -
2023年 java核心知识点(前三章)
java核心知识点讲解 本次只更新到了第三章原创 2023-01-09 17:51:30 · 208 阅读 · 0 评论 -
java集合类|Map讲解附加代码和运行结果
TreeMap是利用红黑树实现的(树中的每个节点的值都会大于或等于它的左子树中的所有节点的值,并且小于或等于它的右子树中的所有节点的值),实现了SortMap接口,能够对保存的记录根据键进行排序。存储的内容是基于key-value的键值对映射,不能有重复的key,而且一个key只能映射一个value。Hashtable的key、value都不能为null;HashMap的key、value可以为null,不过只能有一个key为null,但可以有多个null的value;调用containsKey()方法。原创 2023-03-14 11:21:30 · 274 阅读 · 0 评论 -
23年 java核心面试知识点汇总
Integer的两个值取 -128到127 之间,相等,否则不等。128陷阱:通过查阅Integer源码,发现Integer自动装箱底层调用的是valueOf方法,该方法定义了一个catch数组,其中值范围是 -128~127之间,如果自动装箱的数据是在此范围中的,直接返回该数组的内存地址,所以比较两个变量时,数据值是在-128 ~ 127 之间的,返回相等,否则是重新开辟的内存空间存放数据,故返回不相等。原创 2023-01-10 17:18:04 · 562 阅读 · 0 评论 -
java:map集合的应用,含代码以及输出样例
在此我推荐大家用下面的getOrDefault()这个方法,如果没有这个key就返回一个你赋予的值,这样不会出现报空指针的情况,put方法用于向Map中添加一个键值对,如果Map中已经存在该键,则会将原来的值替换成新的值。entrySet方法用于获取Map中所有键值对的集合。remove方法用于从Map中删除指定键的值。keySet方法用于获取Map中所有键的集合。values方法用于获取Map中所有值的集合。size方法用于获取Map中键值对的个数。get方法用于从Map中获取指定键的值。原创 2023-05-29 17:36:01 · 3364 阅读 · 0 评论