博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
Java中的内部类
分类成员内部类得先创建外部类,然后才能创建内部类。 保存了一个指向外部对象的引用,所以可以访问外部对象的成员。 方法内部类匿名内部类匿名类没有名字,继承自父类或者实现了某个接口,它是没有构造器的,因为它连名字都没有。 通过使用实例初始化,就能达到为匿名内部类创建一个构造器的效果(其实就是在定义类的时候在大括号里面再加个大括号写入想要初始化的内容)。 静态内部类(嵌套类 Nested Clas...
2019-10-22
Java
Java
Read More
Java中的ReentrantReadWriteLock
ReentrantReadWriteLock 看下它的类图 可以看到ReentrantReadWriteLock实现了ReadWriteLock接口。ReadWriteLock就是读写锁的意思,那么问题来了,为什么要有个读写锁呢?为什么要把读锁和写锁分开呢?这里就是出于对性能的考虑了,多个线程之间,可以同时读,但是不可以同时写或者一个读一个写,所以分开之后,读锁和写锁各司其职,可以提高效...
2019-10-17
Java
Java
Read More
Java中的AQS
AbstractQueuedSynchronizer 简写AQS, 队列同步器,是用来构建锁或者其他同步组件的基础框架,Lock接口的实现,如ReentrantLock等都有它的身影,都是通过它来实现线程同步的。从名字可以看出,首先它是个同步器,其次它里面还有个队列。 AQS使用了模板方法模式,这意味着AQS类里面大体有两种方法:需要被子类重写的涉及到具体细节的方法和模板方法,而模板方法...
2019-10-17
Java
Java
Read More
Java中的Lock
Lock是JUC包中的一个接口,是在synchronized关键字之后出现的,用来提供锁的功能,本文主要讨论Lock接口以及其实现类,以及为什么有了synchronized关键字了还要有Lock. synchronized作为内嵌的Java关键字,其可以隐式地获取和释放锁,它简化了同步的管理,同时也固化了锁的获取和释放,缺少灵活性。 在Java SE 5 之后,新增了Lock接口(以及相...
2019-10-16
Java
Java
Read More
https协议
相比于http的明问传输,易被篡改的特点,提出了https。 https利用了对称加密和非对称加密,引入了第三方机构CA,证书权威机构 协议上讲它在应用层下面加了个SSL/TLS层。 首先服务端会向第三方机构申请证书,如何申请呢?服务端告诉认证中心自己的个人身份信息以及公钥,认证中心经过核实后发给服务端一个证书。证书包含了哪些内容呢? 证书颁发机构名称 证书本身的数字签名(先hash再用...
2019-10-15
网络
网络
Read More
强化学习
前言强化学习是一类算法, 是让计算机实现从一开始什么都不懂, 脑袋里没有一点想法, 通过不断地尝试, 从错误中学习, 最后找到规律, 学会了达到目的的方法。 那计算机通过什么来学习呢? 原来计算机也需要一位虚拟的老师, 这个老师比较吝啬, 他不会告诉你如何移动, 如何做决定, 他为你做的事只有给你的行为打分, 那我们应该以什么形式学习这些现有的资源, 或者说怎么样只从分数中学习到我应该怎样做...
2019-10-14
机器学习
机器学习
Read More
Java中的final关键字
用法修饰变量修饰基本类型:基本类型的值不可被改变 修饰引用:引用的指向不能被改变 被final修饰的基本类型和String类型会在编译器被放到常量池 修饰方法方法不可被覆盖 修饰类类不可被继承 原理我们反编译如下代码: 123456789public final class Tiger { private final String name ="tiget&quo...
2019-10-11
Java
Java
Read More
Java中new对象时到底发生了什么
Java中有许多创建对象的方式,比如使用new关键字,使用反射,使用序列化/反序列化,使用克隆,其内部原理也都不一样,本文主要讨论在使用new关键字创建对象的前前后后JVM都做了那些事。要讲清楚这个事情,需要了解一定的JVM内存模型,以及类加载机制。 ###缘起 首先要明白,创建对象这是一个运行期的动作,在运行期前面,还有一个编译期。编译期就是将我们写的java文件编译成class文件的过程...
2019-10-10
Java
Java
Read More
一次由继承引发的思考
本文主要讨论,我在考虑java种private修饰的属性和方法到底有没有被继承下来的一系列思考。 使用反射?观察class文件?new一个对象时到底发生了啥?创建一个对象常常需要经历如下几个过程:父类的类构造器() -> 子类的类构造器() -> 父类的成员变量和实例代码块 -> 父类的构造函数 -> 子类的成员变量和实例代码块 -> 子类的构造函数。 先依次执...
2019-10-10
Java
Java
Read More
HashMap中的hash方法
在HashMap,HashTable和ConcurrentHashMap中,hash()方法主要是拿来做定位,即通过对key进行散列,从而确定这个entry的存储位置。但是为了避免发生碰撞,java中的hash方法还是有许多细节操作的。 HashMapjdk 7代码如下: 1234567891011121314final int hash(Object k) { in...
2019-10-08
Java
Java
Read More
Previous
6 / 10
Next