文档章节

程序员易混淆的10个基础概念

fengsehng
 fengsehng
发布于 2016/11/09 09:07
字数 2211
阅读 3
收藏 0

1.java初始化过程:

  1. 初始化父类中的静态成员变量和静态代码块 ;

  2. 初始化子类中的静态成员变量和静态代码块 ;

3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;

4.初始化子类的普通成员变量和代码块,再执行子类的构造方法;

2.instance是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例

3.linux的启动过程文件

/sbin/init在核心完整的加载后,开始运行系统的第一支程序,主要的功能就是准备软件运行的环境,包括系统的主机名称、网络配置、语系处理、文件系统格式及其他服务的启动等。

/bin/sh解释脚本的shell命令,开机后运行

/etc/sysvinit就是 system V 风格的 init 系统,顾名思义,它源于 System V 系列 UNIX。sysvinit 中运行模式描述了系统各种预订的运行模式。

/etc/inittab定义了系统引导时的运行级别, 进入或者切换到一个运行级别时做什么。

1,启动init进程的配置文件是/etc/inittab

2,/etc/sysvinit是系统初始化用的

4.linux重启命令

在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。

shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告信息。该命令还允许用户指定一个时间参数,可以是一个精确的时间,也可以是从现在开始的一个时间段。
精确时间的格式是hh:mm,表示小时和分钟,时间段由+ 和分钟数表示。系统执行该命令后会自动进行数据同步的工作。
该命令的一般格式: shutdown [选项] [时间] [警告信息]
命令中各选项的含义为:
- k 并不真正关机而只是发出警告信息给所有用户
- r 关机后立即重新启动
- h 关机后不重新启动
- f 快速关机重启动时跳过fsck
- n 快速关机不经过init 程序
- c 取消一个已经运行的shutdown
需要特别说明的是该命令只能由超级用户使用。
例1,系统在十分钟后关机并且马上重新启动: # shutdown –r +10
例2,系统马上关机并且不重新启动:# shutdown –h now
halt是最简单的关机命令,其实际上是调用shutdown -h命令。halt执行时,杀死应用进程,文件系统写操作完成后就会停止内核。
halt命令的部分参数如下:
[-f] 没有调用shutdown而强制关机或重启
[-i] 关机或重新启动之前,关掉所有的网络接口
[-p] 关机时调用poweroff,此选项为缺省选项

reboot的工作过程与halt类似,其作用是重新启动,而halt是关机。其参数也与halt类似。reboot命令重启动系统时是删除所有的进程,而不是平稳地终止它们。因此,使用reboot命令可以快速地关闭系统,但如果还有其它用户在该系统上工作时,就会引起数据的丢失。所以使用reboot命令的场合主要是在单用户模式。

init是所有进程的祖先,其进程号始终为1。init用于切换系统的运行级别,切换的工作是立即完成的。init 0命令用于立即将系统运行级别切换为0,即关机;init 6命令用于将系统运行级别切换为6,即重新启动

5.进程和进程控制块

进程是指一个具有一定独立功能的程序关于某个数据集合的一次运动活动。简单地说进程是可以并发执行的程序的执行过程,它是控制程序管理下的基本的多道程序单位。
进程控制块(PCB )是由系统为每个进程分别建立的,用以记录对应进程的程序和数据的存储情况,记录进程的动态信息。
PCB是一个进程存在的标志。系统根据PCB而感知进程的存在,根据PCB中的信息对进程实施控制管理,当进程结束时,系统回收对应的PCB,进程随之消亡。
进程控制块中包含一系列信息,其中进程名即进程标识符唯一标识对应进程,系统根据该标识符来识别一个进程。
一个进程只有唯一的进程控制块,不可和其他进程共用一个进程控制块。

6.编译基本概念

编译:进行语法检查、函数分配空间,将各个函数编译成二进制码,按照特定目标文件格式生成目标文件。
连接:把程序中各个文件编译生成的目标文件连接起来,同时还要同系统提供的资源(如函数库)连接成为一个整体,得到可执行文件。
运行:执行连接好的程序。
重定位:把程序的逻辑地址空间变换成内存中的实际物理地址空间的过程,也就是说在装入时对目标程序中指令和数据的修改过程。

7.程序实现链接的方式有三种(链接时间不同):

1.静态链接
2.动态链接(装入时)
3.动态链接(运行时)

8.如果在一个建立了TCP连接的socket上调用recv函数

<0 出错
=0 连接关闭

0 接收到数据大小

9.有关http keep-alive

在HTTP1.0和HTTP1.1协议中都有对KeepAlive的支持。其中HTTP1.0需要在request中增加“Connection: keep-alive” header才能够支持,而HTTP1.1默认支持

当使用Keep-Alive模式时,Keep-Alive功能使客户端到服 务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接

可以在服务器端设置是否支持keep-alive
server为多为静态内容时,开启keep-alive,增加传输效率。动态请求,已占用的资源得不到释放,效率低下。

10.硬链接和软链接

LINUX的硬链接不能链接到目录是因为引入了对目录的硬连接就有可能在目录中引入循环,在目录遍历的时候系统就会陷入无限循环当中,这样导致无法定位到访问目录。
硬链接:为原文件创建一个新的文件名,但本质中只增加了一个目录项,并使用与原来相等的inode,指向
原文件的区域。数据区为两个名字共享。
使用限制:源文件和链接文件必须在同一个文件系统内,且目录文件不能创建硬链接。
命令:ln a b // 给a创建链接文件b
可以使用ls -i查看两个inode是完全一样的。
同时注意连接计数count。count的意义对于文件来说是硬链接的个数,对于目录,一般(count-2)为目录包含的子文件个数。
注意:两者的权限也是完全一样的。对其中一个进行读写操作,另外一个也会更新。但删除其中一个,只会删除目录项,不会删除存储区数据。另外一个文件的使用和操作完全不受影响。除非count-1结果0,才将数据区删除。作用:节省空间,两个文件能同步更新,防止重要文件被“误删”。

软链接:也叫符号链接。本质是创建一个新的文件,保存源文件的路径名。因此inode和源文件的inode是不一样的。使用没有文件系统的限制,也没有文件和目录的限制。 命令:ln -s a b 注意:产生的文件权限和源文件是不一样的。由于软链接使用比较灵活,可能断链,也可以自循环,往往需要多次查找增加文件操作的步骤而降低效率。尽量少用,并避免出现循环。

我的微信二维码如下,欢迎交流讨论

这里写图片描述

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧

微信订阅号二维码如下:

这里写图片描述

本文转载自:http://blog.csdn.net/lpjishu/article/details/52583690

共有 人打赏支持
fengsehng
粉丝 4
博文 284
码字总数 214494
作品 0
朝阳
程序员
私信 提问
CLR开发商业3D游戏引擎实践(一)

[IT168 技术文档] 不知不觉,成为职业游戏程序员已经六年多了。从最初的程序员到技术总监,参与了多款商业游戏的开发,所有的项目都会建立在游戏引擎基础上。游戏引擎是一些常用的底层代码集...

IT168
2007/03/23
0
0
这是真的吗:码易众包平台致开源中国恶意剽窃的公开信

http://www.jifang360.com/news/2016523/n653182276.html 近日,开源中国旗下众包平台推出自助报价系统,对于软件众包行业而言,为用户提供清晰明了的产品报价体系本无可厚非,但一家互联网企...

公孙二狗
2016/05/24
8.2K
41
[概念辨析 系列 之四] 树的概念

刚做老师的时候,在考试、面试等场合发现大家对计算机科学中"树"的概念理解地非常不好,各种逻辑混乱的答案频繁出现。当时还不太理解,过了一段时间之后,对这个问题有了更全面的认识。"树"...

黄宇
2017/02/09
0
0
深入解析Windows操作系统笔记——CH1概念和术语

1.概念和工具 本章主要介绍Windows操作系统的关键概念和术语 1.概念和工具... 1 1.1操作系统版本... 1 1.2基础概念和术语... 2 1.2.1Windows API2 1.2.2 服务、函数和例程... 3 1.2.3 进程、...

fanr_zh
2014/05/11
0
0
关于高德地图的点点滴滴

众所周知,高德地图是在谷歌退出中国市场后,大家比较喜欢用的地图之一,而鄙人接触高德地图也是在去年才开始。 今年因为项目的需要,开始对原有在高德地图上做的二次开发,进行了综合整理。...

xiaobo137
2016/01/27
26
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot入门系列HelloWorld

根据咱们程序员学习的惯例,学习一门新技术都是从HelloWorld开始的。 感觉编程是一件非常富有意义的事情,程序员也是一群可爱的人,渴望被关怀和关注,因为我们总在和世界say Hi. 好了进入正...

凌宇之蓝
48分钟前
3
0
Linux之《荒岛余生》(二)CPU篇

温馨提示,动图已压缩,流量党放心查看。CPU方面内容不多,我们顺便学点命令。本篇是《荒岛余生》系列第二篇,垂直观测CPU。其余参见: Linux之《荒岛余生》(一)准备篇 如何做一个CPU cpu...

mskk
52分钟前
1
0
Java基础教程,第十讲,继承

前面我们学习了类和对象的概念,学习了方法的重载,今天我们将学习面向对象另一个重要特性,继承(inheritance)。利用继承,我们可以基于一个已经存在的类狗仔一个新的类,继承已经存在的类...

程序员补给栈
55分钟前
2
0
nginx的日志

nginx的日志包括错误日志和访问日志,分别使用不同的指令来定义其输出位置和相应的级别。 下面介绍其各自的用途。 错误日志 nginx提供了error_log指令来指定错误日志的输出文件和级别。 指令...

xtof
今天
3
0
【转】ubuntu18.04系统安装完之后显示未发现WiFi适配器【拯救者y7000亲测可用】

解决过程如下: 标题要大才醒目。 第一,插网线: 确保能通过网线连上网,通过路由器连还是直接接口连都没事,因为我们需要联网去下载些驱动以及更新。 第二,更改软件源: 打开“设置”,选...

Aomo
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部