#概述
|
|
#概述
|
|
|
|
TCP提供一种面向连接的可靠的字节流服务
最近公司里要求使用ecplise上的阿里代码扫描插件来扫描代码,自己装上后看了下,问题还挺多的。其中Blocker的大多数都明白,只是有一条报错很有疑惑:
这是我创建线程池常用的方法,设置线程池了的上限,难道有什么问题吗?
启动线程的顺序可以是有序的,但执行的顺序并非是有序的。这是因为线程是并行执行而非顺序的。JVM和操作系统一起决定了线程的执行顺序,它和线程的启动顺序并非一定是一致的。
volatile要求程序对变量的每次修改,都写回主内存,读变量是从主内存中读取,这样便对其他线程可见,解决了可见性问题,但是不能保证数据的一致性;特别注意,原子操作:根据Java规范,对于基本类型的赋值或者返回操作,是原子操作。但这里的基本数据类型不包括long和double,因为JVM看到的基本存储单位是32位,而long和double是64位。所以无法在一个时钟周期内完成。
通俗的讲一个对象的状态就是它的数据,存储在状态变量中,比如实力域或者静态域;无论何时,只要多于一个的线程访问给定的状态变量。而且其中某个线程会写入该变量,此时必须使用同步来协调线程对该变量的访问。
本地内存
,是单独给某个线程分配的,存储局部变量等,同时也会复制主内存
的共享变量到本地内存
作为副本,目的是为了减少和主内存
的通信频率,提高效率。启动数据库服务和监听器
|
|
登录,修改密码
JDK1.8在CentOS7中的安装与配置
环境配置:
因为卸载软件需要root用户的权限,所以需要先切换到root用户:
输入密码就可以切换到root用户。
因为我在安装系统时选择了基本的开发环境,因此系统中已经有JDK了,不过为了体验这个安装过程,我选择先卸载掉:
1.终端输入:
普通IO使用流的方式使用I/O。所有I/O都被视为单个的字节的移动,通过一个称为Stream的对象一次移动一个字节。流I/O用于与外部世界接触。它也在内部使用,用于将对象转换为字节,然后再转换为对象。
NIO以块的方式处理数据。
通道(Channel)和缓冲区(Buffer)是NIO中的核心对象,几乎在每一个I/O中都要操作他们。
通道是对原I/O包中的流的模拟。到任何目的地的所有数据都必须通过一个Channel对象。一个Buffer实质上是一个容器对象。发送给一个通道的对象都必须首先放入到缓冲区中;同样地,从通道中读取的任何数据都要读到缓冲区中。