HTML+CSS+JS
【CSS布局】结构伪类选择器、伪元素、浮动
1.结构伪类选择器**作用与优势: **
作用:根据元素在HTML中的结构关系查找元素
优势:减少对于HTML中类的依赖,有利于保持代码整洁
场景:常用于查找某父级选择器中的子元素
选择器:
选择器
说明
E:first-child {}
匹配父元素中第一个子元素,并且是E元素
E:last-child {}
匹配父元素中最后一个子元素,并且是E元素
E:nth-child {}
匹配父元素中第n个子元素,并且是E元素
E:nth-last-child(n) {}
匹配父元素中倒数第n个子元素,并且是E元素
案例:
1234567891011121314151617181920212223242526272829303132333435363738394041424344<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA- ...
HTML+CSS+JS
【CSS布局】盒子模型
1.盒子模型的介绍
盒子的概念
页面中的每一个标签,都可看做是一个“盒子”,通过盒子的视角更方便的进行布局
浏览器在渲染(显示)网页时,会将网页中的元素看做是一个个的矩形区域,我们也形象的称之为盒子
盒子模型
CSS 中规定每个盒子分别由:内容区域(content)、内边距区域(padding)、边框区域(border)、外边距区域( margin)构成,这就是盒子模型
记忆:可以联想现实中的包装盒
案例:
12345678910111213141516171819202122232425262728<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" conten ...
HTML+CSS+JS
【CSS基础】选择器进阶+背景属性+元素显示模式+三大特性
1.CSS的复合选择器1.1 后代选择器作用:
根据 HTML 标签的嵌套关系,选择父元素后代中满足条件的元素
选择器语法:
1元素1 元素2 { 样式声明 }
结果:
在选择器1所找到标签的后代(儿子、孙子、重孙子…)中,找到满足选择器2的标签,设置样式
注意点:
后代包括:儿子、孙子、重孙子……
后代选择器中,选择器与选择器之前通过空格隔开
例如:
1ul li { 样式声明 } /* 选择 ul 里面所有的 li 标签元素 */
元素1 和 元素2 中间用 空格 隔开
元素1 是父级,元素2 是子级,最终选择的是 元素2,即:元素1 是不会生效样式的
元素2 可以是儿子,也可以是孙子等,只要是 元素1 的后代即可
元素1 和 元素2 可以是任意基础选择器
小案例:
1234567891011121314151617181920212223<!DOCTYPE html><html lang="en"><head> <meta charset=&q ...
HTML+CSS+JS
【CSS基础】基础选择器+字体文本相关样式
1.CSS基础选择器1.1 标签选择器标签选择器(元素选择器)是指用 HTML 标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的 CSS 样式。
语法:
123456标签名 { 属性1: 属性值1; 属性2: 属性值2; 属性3: 属性值3; ...}
作用:
通过标签名,找到页面中所有这类标签,设置样式
**注意点: **
标签选择器选择的是一类标签,而不是单独某一个
标签选择器无论嵌套关系有多深,都能找到对应的标签
1234567891011121314151617181920212223<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" ...
VScode
VSCode去掉拷贝来的代码前的行号
当我们从某些地方复制代码过来的时候,代码前面常常会显示行号,就像下面这样,真的很烦人呢
下面我来介绍一种方法,废话不多说
在VSCode中用快捷键Alt+Shift的同时,选中前面的行号(光标最好先移动到要删除的第一行的上面一行)开始往下选中,这样会更好操作一些,效果就像下面这样:
然后直接按删除键
这样就大功告成啦,是不是很简单呢
HTML+CSS+JS
【HTML基础】基础认知 + HTML标签
1.HTML基础结构标签每个网页都会有一个基础的结构标签(骨架标签:4组),页面内容也是在这些基础标签上书写的。
HTML 页面也称为 HTML 文档。
【HTML 基础结构】
1234567<html> <head> <title></title> </head> <body> </body></html>
标签名
定义
说明
<html> </html>
根标签
页面中最大的标签(最基础的标签)
<head> </head>
头部标签
在 head 标签中我们必须要设置 title 标签
<title> </title>
标题标签
页面自己的网页标题
<body> </body>
主体标签
包含文档的所有内容
在VsCode中按快捷键!号即可快速生成基础结构,如下图所示
2.HTML中的注释如果需要在 HTML 文档 ...
Linux系统编程
Linux系统编程之线程同步
1.线程同步的概念同步即协同步调,按预定的先后次序运行。
线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。
假设有 4 个线程 A、B、C、D,当前一个线程 A 对内存中的共享资源进行访问的时候,其他线程 B, C, D 都不可以对这块内存进行操作,直到线程 A 对这块内存访问完毕为止,B,C,D 中的一个才能访问这块内存,剩余的两个需要继续阻塞等待,以此类推,直至所有的线程都对这块内存操作完毕。 线程对内存的这种访问方式就称之为线程同步,通过对概念的介绍,我们可以了解到==所谓的同步并不是多个线程同时对内存进行访问,而是按照先后顺序依次进行的==。如果不按照这种规则,就会产生数据混乱。
2.数据混乱原因
资源共享(独享资源则不会)
调度随机(意味着数据访问会出现竞争)
线程间缺乏必要的同步机制。
以上 3 点中,前两点不能改变,欲提高效率,传递数据,资源必须共享。只要共享资源,就一定会出现竞争。只要存在竞争关系,数据就很容易出现混乱。所以只能从第三点着手解决。使多个线 ...
Linux系统编程
Linux系统编程之守护进程、线程
1.守护进程守护进程(Daemon Process),也就是通常说的Daemon(精灵)进程,是 Linux 中的后台服务进程,通常独立于控制终端并且周期性地执行某种任务或等待处理 某些发生的事件。一般采用以 d 结尾的名字。
Linux 后台的一些系统服务进程,没有控制终端,不能直接和用户交互。不受用户登录、注销的影响,一直在运行着,他们都是守护进程。如:预读入缓输出机制的实现;ftp 服务器;nfs 服务器等。
创建守护进程,最关键的一步是调用 setsid 函数创建一个新的 Session,并成为 Session Leader。
1.1 进程组多个进程的集合就是进程组,也称之为作业。BSD 于 1980 年前后向 Unix 中增加的一个新特性。代表一个或多个进程的集合。每个进程都属于一个进程组。在waitpid函数和 kill 函数的参数中都曾使用到。操作系统设计的进程组的概念,是为了简化对多个进程的管理。
当父进程,创建子进程的时候,默认子进程与父进程属于同一进程组。进程组 ID == 第一个进程 ID(组长进程)。 所以,组长进程标识:其进程组 ID & ...
Linux系统编程
Linux系统编程之信号
1.信号的概念信号在我们的生活中随处可见, 如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪…… 他们都有共性:1. 简单 2. 不能携带大量信息 3.
满足某个特设条件才发送。
信号是信息的载体,Linux/UNIX 环境下,古老、经典的通信方式, 现下依然是主要的通信手段。
Unix 早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley 和 AT&T 都对信号模型做了更改,增加了可靠信号机制。但彼此不兼容。POSIX.1 对可靠信号例程进行了标准化。
2.信号的机制A 给 B 发送信号,B 收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行, 去处理信号,处理完毕再继续执行。与硬件中断类
似——异步模式。但信号是软件层面上实现的中断,早期常被称 为“软中断”。
信号的特质: 由于信号是通过软件方法实现,其实现手段导致信号有很强的延时性。但对于用户来说,这个延迟时间非常短,不易察觉。
==每个进程收到的所有信号,都是由内核负责发送的,内核处理。==
3.与信号相关 ...
Linux系统编程
Linux系统编程之进程间通信(IPC)
1.IPC 方法Linux 环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另 一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区, 进程 1 把数据从用户空间拷到内核缓冲区,进程 2 再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcess Communication)。
在进程间完成数据传递需要借助操作系统提供特殊的方法,如:文件、管道、信号、共享内存、消息队列、套 接字、命名管道等。随着计算机的蓬勃发展,一些方法由于自身设计缺陷被淘汰或者弃用。现今常用的进程间通信方式有:
① 管道 (使用最简单)
② 信号 (开销最小)
③ 共享映射区 (无血缘关系)
④ 本地套接字 (最稳定)
下面重点介绍管道,其余方式后续会再讲。
2.匿名管道2.1 什么是匿名管道匿名管道是管道的一种,既然是匿名也就是说这个管道没有名字,但其本质是不变的,就是位于内核中的一块内存,匿名管道拥有上面介绍的管道的所有特性,额外的我们需要知道,匿名管道只能实现有血缘关系的进程间通信,什 ...