0%

mark

因为笔者的电脑是Windows,所以要进行Linux系统编程不得不准备一台虚拟机,当然子系统Ubuntu也是可以的,因为昨天解决了一个虚拟机固定IP的问题, 《CentOS7虚拟机设置固定IP》 所以一旦连接稳定,那么就可以开始开发了,哈哈,今天主要是通过Clion这个工具(和IDEA是亲兄弟)来进行高效的Linux系统编程环境搭建!

mark

虚拟机设置为固定IP,不管主机在什么网络环境下,是断网环境,还是连接任何网段访问外网的环境下,虚拟机的IP都固定不变,而且使用终端连接,始终不变,正常连接; 虚拟机的固定IP可以按照自己想设置的IP地址网段随意设置,比如我就想设置固定IP为192.168.2.2;

经过查询资料,终于得出一个完美解决方案:采用方式为NAT模式+固定IP的模式

配置环境说明:主机为Win10专业版,虚拟机为VMware Workstation 15 Pro,虚拟机中的Linux系统为CentOS 7.3_64位。

1、CPU多核心缓存架构分析

并发编程:肯定是为了更合理充分的利用多核CPU架构的性能

CPU 主频率远远高于主存,所以引入CPU缓存,CPU加载数据无法绕过缓存,而且对于多核CPU,一级缓存不是共享的,二级和三级缓存是线程共享的!CPU计算的数据并不是直接从主存中去拿,而且通过层层在缓存中寻找。

在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。 但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢? 分布式锁的实现有很多,比如基于数据库、memcached、Redis、系统文件、zookeeper等。它们的核心的理念跟上面的过程大致相同。 本篇文章,主要讲如何用Redis的形式实现分布式锁。

TCP协议特点

1、面向连接

传输控制协议Transmission Control Protocol 要对数据的传输进行一个详细的控制,TCP是面向连接(虚连接)的传输层协议,但注意此处的连接是虚连接:

mark

1、ICMP协议概述

ICMP主要是用于确认IP包是否成功发送至目标地址,通知在发送过程中,IP包被废弃的具体原因,改善网络设置等。有了这些功能就方便对网络进行诊断。

ICMP也是基于IP协议工作的,但是它并不是传输层的功能,因此人们仍然把它归结为网络层协议;

1、什么是DNS技术

DNS(Domain Name System) DNS是一整套从域名映射到IP的系统

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序。但是IP地址不方便记忆。于是人们发明了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名和IP地址的关系。

最初,通过互连网信息中心(SRI-NIC)来管理这个hosts文件,如果一个新计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts文件,而且其他计算机也需要定期下载更新新版本的hosts文件才能正确上网。这样就太麻烦了,于是产生了DNS系统,一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系,如果新计算机接入网络,将这个信息注册到数据库;用户输入域名的时候,会自动查询DNS服务器,由DNS服务器检索数据库,得到对应的IP地址。

至今,我们的计算机上仍然保留了hosts文件,在域名解析的过程中仍然会优先查找hosts文件的内容。Windows和Linux上的host文件如图:

私有IP地址

之前我们讨论了, IPv4协议中,IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能; NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法; 很多学校, 家庭, 公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP; 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;