0%

Golang的优势和特点

  • 可直接编译成机器码,不依赖其他库,glibc 的版本有一-定要求,部署就是扔一个文件上去就完成了
  • 静态类型语言,但是有动态语言的感觉,静态类型的语言就是可以在编译的时候检查出来隐藏的大多数问题,动态语言的感觉就是有很多的包可以使用,写起来的效率很高。
  • 语言层面支持并发,这个就是Go最大的特色,天生的支持并发。Go就是基因里面支持的并发,可以充分的利用多核,很容易的使用并发。
  • 内置runtime,支持垃圾回收,这属于动态语言的特性之一吧,虽然目前来说GC(内存垃圾回收机制)不算完美,但是足以应付我们所能遇到的大多数情况,特别是Go1.1之后的GC
  • 简单易学,Go语言的作者都有C的基因,那么Go自然而然就有了C的基因,那么Go关键字是25个,但是表达能力很强大,几乎支持大多数你在其他语言见过的特性:继承、重载、对象等
  • 丰富的标准库,Go目前已经内置了大量的库,特别是网络库非常强大。
  • 内置强大的工具,Go语言里面内置了很多工具链,最好的应该是gofmt工具,自动化格式化代码,能够让团队review变得如此的简单,代码格式一模一样,想不一样都很困难
  • 跨平台编译,如果你写的Go代码不包含cgo,那么就可以做到window系统编译linux的应用,如何做到的呢? Go引用了plan9的代码,这就是不依赖系统的信息。
  • 内嵌C支持,Go里面也可以直接包含C代码,利用现有的丰富的C库。

Nginx在CentOS上安装可以使用yum或源码安装,推荐使用源码安装的方式,因为yum的版本比较旧,而且使用源码可以自定义功能,方便业务的上的使用,源码安装需要提前准备标准的编译器和依赖即可。下面记录一下如何编译安装Nginx,避免在安装时各种缺少依赖库的情况!

0、浏览器跨域问题

看到浏览器报Access-Control-Allow-Origin毫无疑问了,看来是跨域问题

CORS是一种访问机制,英文全称是Cross-Origin Resource Sharing,即我们常说的跨域资源共享,通过在服务器端设置响应头,把发起跨域的原始域名添加到Access-Control-Allow-Origin 即可

浏览器端:发送AJAX请求前需设置通信对象XHR的withCredentials 属性为true。

服务器端:设置Access-Control-Allow-Credentials为true。

两个条件缺一不可,否则即使服务器同意发送Cookie!

这篇文章主要是谈谈计算机网络常见的面试个考察点,记录一下,里面有很多问题之前面试也遇到过,特此记录一下!

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

虚拟机设置为固定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的形式实现分布式锁。