【Linux操作系统】简学深悟启示录:Linux环境基础开发工具使用
本文将介绍关于Linux系统常用的工具包,便于后续的代码操作 软件包管理器yum对于 Linux 系统来说,下载软件是必不可少的,就像平常使用手机下载软件一样满足我们的日常需求,一般 Linux 有三种下载方式: 源代码下载: 从官网下载代码自行配置,虽说可以充分利用代码自行调配,但是上手使用难度太高 rpm下载: 使用命令获取文件安装,但是会涉及该安装包依赖于其他安装包等问题,需要手动解决,过程繁琐 yum下载: 也是使用命令获取文件安装,能够自动分析软件包的依赖关系,并从 yum 源中下载并安装所需的依赖包,大大简化了软件安装过程,虽说安装的版本可能不是最新的,但是简单易上手,通常来说是够用的 因此我们主要使用 yum 🤔那么yum是如何下载的呢? 其实也没那么复杂,就拿手机来举例,跟 Linux 系统一样都叫做客户端,yum 就相当于是手机里的应用市场,是一个软件的仓库地址,告诉 yum 去哪里找软件,然后通过网络在服务器里找到对应的软件源来下载软件包,软件源又分为官方和第三方的 通常我们通过 yum list 查看可安装软件列表,或者 yum search...
【Linux操作系统】简学深悟启示录:Linux权限
Linux 权限是系统通过对文件 / 目录设置读(r)、写(w)、执行(x)权限,分别管控文件所有者、所属组及其他用户对其的访问操作,以保障系统安全 shell的运行原理 对于 Linux 来说,我们输入的命令行本质上就是在输入字符串,指令的本质就是调用在特定路径下存放的可执行文件,所有的指令最终都要在 OS(操作系统)内执行,但是 OS 的使用难度比较高,用户一般很难直接使用 OS 和他打交道,所以在用户输入的指令和 OS 之间设置了一层命令行解释器 命令行解释器会将命令翻译给核心(kernel)处理,同时将翻译后的结果给到使用者 存在的意义: 进行命令行解释 保护 OS,对于用户的非法请求直接拦截,起到过滤器的效果 用户的分类 用户一般分为: root:超级用户 普通用户:我们新建的用户,即 adduser 由于某些情况下,比如下载依赖的时候就需要切换到 root 账号才能下载,可以使用 su 指令进行切换 超级用户的命令提示符是 #,普通用户的命令提示符是 $ 用户的切换 root用户切换普通用户 12[root@hcss-ecs-6aa4 ~]#...
【Linux操作系统】简学深悟启示录:Linux基本指令
本篇将开启 Linux 操作系统的全面学习,默认使用的是 CentOS 操作系统,使用 Xshell 进行远程登录服务器进行操作测试 什么是操作系统? 这是一个计算机系统层次结构的示意图,运行的过程是从上往下实现的,操作系统其实本质也是一种软件,是一种基础软件,对下提供软硬件资源的管理,对上提供稳定、快速、安全的操作环境,给予应用软件功能的支撑,因此所有的软件最终都会转化为硬件行为,都要经过操作系统的管理 Xshell的使用 目前更新的最新的是Xshell8,可以直接下载家庭学校的免费版本,能够满足基本的 Linux 学习,再就是需要自己购买一台轻量级云服务器进行登录使用 1[C:\~]$ ssh root@公网IP地址 首先初始状态下只有一个主用户,即 root,输入 ssh root@公网IP地址,然后会弹出窗口让你输入密码,公网 IP 和密码都能在你购买服务器的地方找到 123456789101112[C:\~]$ Connecting to 公网IP:22...Connection established.To escape to local shell, press...
【前端基础】层叠宇宙的代码旅人:css(下)
本篇是 css 最后的布局优化 元素的显示模式块级元素✏️举个例子: 1234567h1 - h6pdivulolli... 特点: 独占一行 高度宽度,内外边距,行高都可以控制. 宽度默认是父级元素宽度的 100% (和父元素一样宽) 是一个容器(盒子),里面可以放行内和块级元素 🔥值得注意的是: 文字类的元素内不能使用块级元素,p 标签主要用于存放文字,内部不能放块级元素,尤其是 div 行内元素✏️举个例子: 1234567891011astrongbemidelsinsuspan... 特点: 不独占一行,一行可以显示多个 设置高度,宽度,行高无效 左右外边距有效(上下无效),内边距有效 默认宽度就是本身的内容 行内元素只能容纳文本和其他行内元素,不能放块级元素 🔥值得注意的是: a 标签中不能再放 a 标签 (虽然 chrome 不报错,但是最好不要这么做),a 标签里可以放块级元素,但是更建议先把 a...
【前端基础】层叠宇宙的代码旅人:css(中)
接上篇css的初步学习,本篇将针对具体内容进行美化,内容不难,主要是记忆理解 常用元素属性CSS 属性有很多, 可以参考文档 传送门: 常见元素属性参考文档 字体属性设置字体✏️举个例子: 1234567891011121314151617<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .song{ font-family: '宋体'; } ...
【前端基础】层叠宇宙的代码旅人:css(上)
在学完 html 的相关框架后,需要进一步学习 css 对网页的相关优化 什么是css? css 又叫做层叠样式表 (Cascading Style Sheets)css 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,能够做到页面的样式和结构分离 💻比如: 这样一个百度搜索栏,图标的大小,按键的颜色,字体的样式,都属于 css 的范围 简单来说: html 决定页面结构 css 控制页面的展示效果 基本语法规范 选择器 + {一条/N条声明} 🔥值得注意的是: 选择器决定针对谁修改 (找谁) 声明决定修改啥 (干啥) 声明的属性是键值对,使用 ; 区分键值对,使用 : 区分键和值 ✏️举个例子: 1234567891011121314151617<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta...
【前端基础】摩天之建的艺术:html(下)
接上一篇,继续学习剩下的 html 知识点 表格标签基本使用✏️举个例子: 1234567891011121314151617181920212223242526272829303132<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <table align="center" border="1" cellpadding="20" cellspacing="0"...
【前端基础】摩天之建的艺术:html(上)
从本篇开始学习前端基础之 html 的搭建路程,实现一个基本的静态网站框架,一般使用的软件是 VSCODE,可以自行上网查询下载配置教程 什么是html? html 即超文本标记语言(HyperText Markup Language)它是用于创建网页的标准标记语言,html 借助各类标签来对网页的结构和内容加以描述 html 代码是由标签构成的 💻比如: 1<body>hello</body> 标签名 (body) 放到 < > 中 大部分标签成对出现,<body> 为开始标签,</body> 为结束标签 少数标签只有开始标签,称为 “单标签” 开始标签和结束标签之间,写的是标签的内容(hello) 开始标签中可能会带有 “属性”,id 属性相当于给这个标签设置了一个唯一的标识符(身份证号码) html文件基本结构12345678<html> <head> <title>第一个页面</title> </head> ...
C++数据的输入输出秘境:IO流
C++ 的输入输出都依靠 IO 流实现,本章为 C++ 最后一章,后续如有遗漏将会继续补充 C语言IO流C 语言中我们用到的最频繁的输入输出方式就是 scanf () 与 printf(),scanf():从标准输入设备(键盘)读取数据,并将值存放在变量中。printf():将指定的文字/字符串输出到标准输出设备(屏幕) 注意宽度输出和精度输出控制。C 语言借助了相应的缓冲区来进行输入与输出。如下图所示: 对输入输出缓冲区的理解: 可以屏蔽掉低级 I / O的实现,低级 I / O 的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,可以很容易写出可移植的程序 可以使用这部分的内容实现“行”读取的行为,对于计算机而言是没有“行”这个概念,有了这部分,就可以定义“行”的概念,然后解析缓冲区的内容,返回一个“行” 流的概念 “流”即是流动的意思,是物质从一处向另一处流动的过程,是对一种有序连续且具有方向性的数据(其单位可以是 bit、byte、packet)的抽象描述C++...
C++显性契约与隐性规则:类型转换
关于类型转换,通常是隐式转换或者强制转换,C++ 提供了一些能够显式表示转换的运算符,能够更好的规避一些风险和错误 传统的类型转换在 C 语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回值类型不一致时,就需要发生类型转化 1234567891011void Test(){ int i = 1; // 隐式类型转换 double d = i; printf("%d, %.2f\n", i, d); int* p = &i; // 显示的强制类型转换 int address = (int)p; printf("%x, %d\n", p, address);} 转换分为显式和隐式: 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译失败 显式类型转化:需要用户自己处理 然而这两种转换的前提是逻辑相近: 基本类型间的转换(如 int ↔ double) 继承层级中的转换(如子类→父类、父类→子类) 用户定义的转换(如 operator T()...