TA的博客

143

概述本文参考《Java并发编程的艺术》一书,温故而知新,加深对基础的理解。一、指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能,编译器和处理器常常会对指令做重排序。从Java源码到最终实际的指令,需要经过三个阶段的重排序:1)编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。2)指令级并行...

Annotation中文译过来就是注解、标释的意思,在Java中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我们经常可以看到一些文章对注解的解释如下:Java注解用于为Java代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可以用于这一目的。Java注解是从Java5开始添加到Java的。这段对于注解(Annotation)的解释确实正确,但是...

一、网络中进程之间如何通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如:UNIXBSD有:管道(pipe)、命名管道(namedpipe)软中断信号(signal)UNIXsystemV有:消息(message)、共享存储区(sharedmemory)和信号量(semapho...

其中比较重要的字段:(1)序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。(2)确认号ack:占4个字节,表示期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的...

一、代理代理是英文Proxy翻译过来的。我们在生活中见到过的最常见的代理大概就是顾客和商家的关系了按理说,顾客可以直接从厂家购买产品,但是现实生活中,很少有这样的销售模式。一般都是厂家委托给代理商进行销售,顾客跟代理商打交道,而不直接与产品实际生产者进行关联。所以,代理就有一种中间人的味道。接下来,我们说说软件中的代理模式。二、代理模式代理模式是面向对象中比较常见的一种设计模式了。这是代理模...

1、配置示例1要求:在浏览器地址栏中输入www.123.com,跳转到Linux服务器中的tomcat主页面声明:本次实验在我电脑的Linux虚拟机上进行,Linux系统信息如下:图1实验系统信息1.1准备工作(1)安装nginx(参考:Nginx快速入门—基本概念以及在Linux上安装Nginx(2)启动一个tomcat(注意:在启动之前一定要配置好Java环境变量,参考:记一次在云服务器...

一、OAuth2简介OAuth是目前最流行的授权机制,用来授权第三方应用,获取用户数据。OAuth在全世界已经得到广泛应用,目前的版本是2.0版。简单说,OAuth就是一种授权机制。数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据。系统从而产生一个短期的进入令牌(token),用来代替密码,供第三方应用使用。因此令牌(token)与密码(password)的作用是一样的,都可以...

一、sort命令sort命令对指定的文件中的行排序,并将结果写到标准输出。如果指定多个文件,那么sort命令将这些文件连接起来,并当作一个文件进行排序。1、sort命令语法:常用可选OPTION:选项参数作用-f忽略大小写的差异,例如A与a视为相同-b忽略最前面的空格符部分-M以月份的名字来排序,例如JAN,DEC等等的排序方法-n使用『纯数字』进行排序(默认是以文字型态来排序的)-r反向排...

Linux哲学思想中有一条就是Linux下一切皆文件。因此当我们操作Linux的时候,本质是在操作各种文件。因此掌握文本编辑的命令也是至关重要的,Linux提供了很多的文本编辑命令,以及被称为Linux"三剑客“的grep、sed和awk命令。一、cat命令cat命令(concatenate(连接、连续)的简写)用于连接文件并打印到标准输出设备上,也可以把几个文件内容附加到另一个文...

Shell除了有输入/输出重定向的功能,还可以将两个或者多个命令(程序或者进程)连接到一起,把一个命令的输出作为下一个命令的输入,以这种方式连接的两个或者多个命令就形成了一种特殊的文件称为管道(pipe)。Linux中管道分为两种:匿名管道和命令管道一、匿名管道我们常见的管道符|它是一个匿名管道,只能用于具有亲缘关系的进程之间,这是它与命名管道的最大区别。命名管道叫namedpipe或者FI...

LinuxShell重定向分为两种,一种输入重定向,一种是输出重定向;从字面上理解,输入输出重定向就是改变输入与输出的方向的意思。一般情况下,我们以CPU为参考,CPU读入数据就是输入,CPU写出数据就是输出。在Linux中从键盘输入数据被称为标准输入,向屏幕/显示器上显示数据被称为标准输出。一、硬件设备和文件描述符1、文件描述符定义计算机的硬件设备有很多,常见的输入设备有键盘、鼠标、麦克风...

和大多数编程语言一样,Shell也可以定义和使用函数(function)。Shell函数的本质是一段可以重复使用的脚本代码,这段代码被提前编写好了,放在了指定的位置,使用时直接调取即可。Shell函数定义的语法格式如下:说明:Shell的函数定义的时候可以使用function关键字,也可以不使用funname:函数的名字在每个语句后面可以写上;(分号)也可以不写Shell的函数没有形参的概念...

数组中可以存放多个值。BashShell只支持一维数组(不支持多维数组),初始化时不需要定义数组大小。Shell中的数组有两类:普通数组和关联数组。普通数组就是我们熟悉的一维数组,它的索引只能为整数;关联数组实质是一种key-value的集合,key和value既可以是整数也可以是字符串。一、Shell数组的基本语法1、普通数组(1)定义数组Shell中没有多维数组的概念,只有一维数组,它的...

BashShell中主要提供了三种循环方式:for、while和until一、for循环与其他编程语言类似,Shell支持for循环。for循环的运作方式,是将串行的元素意义取出,依序放入指定的变量中,然后重复执行含括的命令区域(在do和done之间),直到所有元素取尽为止。其中,串行是一些字符串的组合,彼此用$IFS所定义的分隔符(如空格符)隔开,这些字符串称为字段。for循环一般格式为:...

case语句和if…elif…else语句一样都是多分支条件语句,不过和多分支if条件语句不同的是,case语句只能判断一种条件关系,而if语句可以判断多种条件关系。case语句的语法结构:case语句应该注意一下几点:case语句会取出变量中的值,然后与语句体中的值逐一比较。如果数值符合,则执行对应的程,之后就不会在往下走;如果数值不符,则依次比较下一个值;如果...