0%

Java反射概念

反射是Java的特征之一,它允许运行中的Java获取自身的信息,并且可以操作类或对象内部的属性。
Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。

阅读全文 »

题目
在这里插入图片描述
思路

使用深度优先搜索,使用全局变量max,分成两种情况:

  • 一种是当前遍历的节点是中间的节点,计算这个节点左右子树的节点和(左右子树必须大于0,否则赋值为0),并与max比较。
    • 第二种是这个节点只作为中间路过的节点,计算左右子树的最大值(左右子树必须大于0,否则赋值为0),然后加上当前节点值 返回。
阅读全文 »

mysql 作为成熟稳定的数据持久化解决方案,广泛地应用在各种领域,但是MySQL在进行进行非常庞大的数据检索时速度会比较慢,而 elasticsearch可以作为一项解决方案,而我们要做的只需要将 mysql 中的数据同步到 elasticsearch 中即可。
这里使用的同步工具为Logstash

阅读全文 »

使用junit进行测试,对junit进行参数化设置,能够更容易的修改传入参数
要被测试类的代码

1
2
3
4
5
public class TaskTest {
public int add(int x,int y){
return x+y;
}
}
阅读全文 »

通信过程

  • 客户端发起一个与服务器的TCP连接,建立连接之后,A中的浏览器进程就可以通过Socket访问该TCP连接。
  • 客户端A进程通过该TCP连接向服务端B发送一个HTTP请求报文(ASCII码),报文中包含(百度首页为例)
阅读全文 »

自旋锁

  • Java没有自旋锁的API,因为自旋锁并不是一种锁,而是一种锁优化技术

  • 互斥同步进入阻塞状态的开销都很大,应该尽量避免。在许多应用中,共享数据的锁定状态只会持续很短的一段时间。自旋锁的思想是让一个线程在请求一个共享数据的锁时执行忙循环(自旋)一段时间,如果在这段时间内能获得锁,就可以避免进入阻塞状态。

  • 自旋锁虽然能避免进入阻塞状态从而减少开销,但是它需要进行忙循环操作占用 CPU 时间,它只适用于共享数据的锁定状态很短的场景。

  • 在 JDK 1.6 中引入了自适应的自旋锁。自适应意味着自旋的次数不再固定了,而是由前一次在同一个锁上的自旋次数及锁的拥有者的状态来决定。

阅读全文 »

1. InterruptedException

当阻塞方法收到中断请求的时候就会抛出InterruptedException异常。
通过调用一个线程的 interrupt() 来中断该线程,如果该线程处于阻塞、限期等待或者无限期等待状态,那么就会抛出 InterruptedException,从而提前结束该线程。

阅读全文 »

编译器的基本架构图

微信截图_20191029155423.png

输入系统的作用将源文件从磁盘或者内存中读入,词法解析器与输入系统进行交互,通过输入系统获得源代码文件的内容,如果输入系统是一个独立的模块,通过固定接口和词法解析器进行交互,这也输入系统的修改和维护就会十分灵活。
输入系统的效率决定整个编译系统的效率,例如C语言,C语言的库函数将数据读入程序的过程中,有三次拷贝,一是从磁盘将数据拷贝到操作系统,二是将数据从操作系统拷贝到y一个FILE结构中,三是将数据从FILE结构拷贝到程序的内存中,这些拷贝需要耗费时间和空间,所以需要专门的输入系统。

阅读全文 »