对于IT行业的从业者或学生而言,无论从事嵌入式开发、后端开发以及前端开发,Linux是无法绕开的操作系统。从实际开发和就业的角度,学Linux是从业的必备技能。我将对Linux的原理(操作系统的进程、线程、信号、通信等,文件系统,文件,动静态库)以及Linux开发所需要的计算机网络(主要TCP/IP模型)、MySQL(常规操作+部分核心原理(索引,事务等))进行博客撰写。
操作系统是一款进行软硬件管理的软件。操作系统对软硬件进行合理管理(手段),以达到为上层用户提供良好的、稳定的、安全的运行环境的目的。计算机本质上就是一个工具,它比较复杂,因而需要管理。
Linux版本
技术版本线:主版本.次版本.修正次数 ;2.6.32
中次版本偶数:稳定版本,奇数:测试版本
商业化版本线:CentOS、Ubuntu 、kail、红旗…
Linux是开源系统,有着丰富的开源社区和项目;在Linux上开发能够避免不必要的垃圾代码,降低开发成本。此外,也有很多顶级工程师,免费参与撰写系统,其理想在于开源、改变世界。理论上越新的商业化版本匹配的是越新的内核代码。
为什么开源?有什么好处?
Linux
操作系统3-5年不关机不会出故障,而Windoes
一般1-2月不关机就显示很卡;
Windows
的图形化界面对普通人很友好;
Linux
更安全、更稳定、效率更高,普遍被企业接收;
涉及到数据安全,Linux
有无后门一览无余,而Windows
由于是闭源很难发现。
开源 | 闭源 | |
---|---|---|
稳定性 | 较强 | 中等 |
安全行 | 开源修复比较快 | 修复速度比较慢 |
效率 | 较快 | 较低 |
人多了,将自己的代码暴露出去,自然有很多人帮忙指出问题并提供标准答案。
指令操作,所有平台都支持,只不过指令操作是Linux上专业程序员应该懂得。
在学习基本指令前,需要了解几个知识。什么叫当前路径?即用户所处的路径。文件由下图组成:
文件的属性数据也是数据,因而文件 = 内容 + 属性
。
此外,/
是路径分割符。
绝对路径:麻烦,一般是在某些配置文件中,进行对某种文件 进行配置的时候采用;
相对路径:简单,一般学习、开发都能使用。
语法: ls [选项] [目录或文件]
功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。
常用选项:
-a //列出目录下的所有文件,包括以.开头的隐含文件。
-d //将目录象文件一样显示,而不是显示其下的文件。 如:ls -d 指定目录
-i //输出文件的i节点的索引信息。如ls -ai指定文件
-k //以k字节的形式文件的大小。如ls -aIk指定文件
-l //列出文件的详细信息
-n //用数字的UID,GID代替名称
-F //在每个文件名后附上一个字符以说明该文件的类型,“*”表示可执行的普通文件;“/”表示目录;“@”表示符号链接;“|”表示FIFOs;
“=”表示套接字(sockets);
-r //对目录反向排序
-t //以时间排序
-s //在I文件名后输出该文件的大小
-R //列出所有子目录下的文件(递归)
-1 //一行只输出一个文件
一般只需掌握-l
和-a
的即够使用。
adduser name //新增用户
passwd name //用户密码设置
userdel name //删除用户
pwd
指令当前用户所处的目录
mkdir
指令touch
指令在当前目录创建普通文件
cd
指令Linux系统中,磁盘上的文件和目录被组成一棵树,每个节点都是目录或文件。
几乎所有的操作系统,管理文件的方式,基本都是采用多叉树的形式。(目录约束)
为什么我们可以“采用路径”的方式,进行定位文件?
例如:/home/bit/test.c
具有唯一性–>因为每一个节点,都只有一个父节点。
从根目录开始的叫绝对路径。
cd ~
:直接进入当前用户(whoami)的家目录。
cd -
:回到上一次所处的路径
注意:ctr + c
:终止程序运行。
通过yum install -y tree
来安装tree
,通过tree
来展示lesson107
下的文件:
stat
指令上图,stat
指令只能查看文件的属性,具体如下:
-File:显示的文件名为test.c;
-Size:文件的大小;
-Blocks:文件test.c占用的数据块总数;
-IO Block:IO块的大小;
-Device:设备编号;
-Inode:Inode号;
-Links:链接数;
-Access:文件的权限;
任何一个文件,都会有三种时间,即ACM
rm
指令rm
删除普通文件test.c
。
redir
指令redir
只能删除空目录,如上图的空目录test_05
。
文章浏览阅读314次。JavaFX v.s. JavaJavaFX:声明式、静态类型的脚本语言;它具有一等函数、声明的语法、列表推导,以及基于依赖关系的增量式求值等特征;JavaFX 脚本式语言特别适用于Java2D swing GUI组件,它允许简单地创建图形界面;在JavaFX中可以直接调用Java的算术、逻辑运算符,instance等操作符,还可以显式调用Java类库和方法;使用JavaFX可以轻松的编写跨平台的..._jframe javafx
文章浏览阅读1.3k次。一、hive常见语法错误 图 1.1当我们在用hive进行数据表的操作时 我们会用得到group by函数那么如图1.1所示假如按照 name 和 month 进行分组SELECT tl.name ,tl.month,max(tl.amount) ASmonth_amount,sum(tr.amount)_hive跑聚合函数老出问题
文章浏览阅读829次。文章目录1.弃用构造函数2.新方法使用参考链接可用构造函数3.结果1.弃用构造函数@Deprecated public Builder(android.content.Context context)2.新方法使用参考链接参考链接:https://www.cnblogs.com/chunshu/p/10317960.html可用构造函数public Builder(@NonNull android.content.Context context, @NonNu_notificationcompat.builder 设置应用名称
文章浏览阅读597次。目录概要cas服务端测试idea配置tomcat概要在上两篇的教程中(cas服务端搭建、cas客户端搭建)仅仅是对搭建流程以及启动方式进行一个文字说明,具体测试过程中可能出现的问题,也还没有涉及,因此本篇课程主要就是带着大家从cas客户端到cas服务端的整体联调,以及引出相关的问题并进行解决。cas服务端测试在cas服务端搭建教程的第五小节介绍了启动cas服务的两种方式,我们现在使用外置tomcat启动方式,从idea配置到启动,再到测试登录进行统一的分步骤说明。idea配置tomcat这一步其_这么测试cas对接成功
文章浏览阅读686次。Oops 信息来源及格式Oops 这个单词含义为“惊讶”,当内核出错时(比如访问非法地址)打印出来的信息被称为 Oops 信息。Oops 信息包含以下几部分内容。1 一段文本描述信息。比如类似“Unable to handle kernel NULL pointer dereference at virtual address 00000000”的信息,它说明了_kernel 崩溃但是没有oops打印信息
文章浏览阅读948次。acl过滤hc文件一,配置指令RT1sysint g0/0ip add 10.0.0.1 24int g0/1ip add 20.0.0.1 24ripver 2undo sumnetwork 10.0.0.0network 20.0.0.0quip rou 30.0.0.0 24 20.0.0.2acl advanced 3000rule permit ip source 10.0.0.15 0 destination 30.0.0.17 0rule deny ip s._包过滤华三
文章浏览阅读8.8w次。Https与Http类似,只不过Https一般是通过post请求服务器,但是Https与http不同的是Https与服务器会话是处于连接状态。http则发送请求后连接就会断开。另外使用HttpsURLConnection时需要实现HostnameVerifier 和 X509TrustManager,这两个实现是必须的,要不会报安全验证异常。package cn.yws.httpstest_file:///android_asset/cac/warning.html
文章浏览阅读1.6w次。在push镜像到本地registry时,出现以下错误:]# docker push 192.168.163.131:5000/testThe push refers to a repository [192.168.163.131:5000/test]9ec45e5f0334: Retrying in 1 second 33f1a94ed7fc: Retrying in 1 second_retrying in 1 second
文章浏览阅读3.8k次。问题描述: Navicat连接Oracle时报错: ORA-28547:connection to server failed,probable Oracle Net admin error 问题原因:oci.dll版本不对,Navicat本地的OCI版本..._navicate 链接oracle 报错 net admin erro
文章浏览阅读784次。之前一直以为 Qt Quick 里 Canvas 才可以自绘,后来发觉不是,原来还有好几种方式都可以绘图!可以使用原始的 OpenGL(Qt Quick 使用 OpenGL 渲染),可以构造QSGNode 来绘图,还可以使用 QPainter !哇, QPainter 我很熟悉啊。于是,我用 QPainter 结合 QML 实现了一个简单的涂鸦程序: PaintedItem 。它有下列功能:_qml unable to assign int to qobject*
文章浏览阅读633次。php设置缓存时间的方法:首先创建一个PHP示例文件;然后通过“if(is_file('./index.html') && (time()-filemtime('./index.html')) < 60){...}”方法设置缓存时间即可。推荐:《PHP视频教程》本教程操作环境:Windows7系统、PHP5.6版适用于所有品牌电脑php处理静态页面:页面设置缓存时间1.页面添..._(time()-filemtime
文章浏览阅读6k次,点赞6次,收藏10次。学习Python这门语言首先要了解 什么是编译与解释,什么是连接,什么是动态库与静态库, 什么是编译:编译就是先把高级语言设计的程序翻译成二进制的机器语言,然后CPU直接执行机器码就可以了。一把翻译再执行编译型语言在于速度快。 什么是解释:解释就是在程序运行时,才把高级程序语言一条一条地翻译成二进制的机器语言。边运行边翻译成二进制机器语言。所以速度没有编译来得快。边执行..._python静态库和动态库的区别