CSS基础语法
CSS基础CSS基本语法
CSS选择器,通过选择器,选中页面中的指定元素
CSS声明块,通过声明块来为元素设置样式,声明是一个名值对结构,冒号连接,分号结尾
CSS选择器元素选择器
根据标签名选中指定的元素
id选择器
可以为标有特定id的HTML选择器指定特殊的样式
格式:#id{ }
类选择器
根据class属性选中一组数据
格式:.class属性值{ }
可以为一个元素指定多个class属性,多个class之间使用空格隔开
通配选择器
选中页面中的所有元素
格式:*{ }
复合选择器交集选择器
同时选中符合多个条件的元素
语法:选择器1选择器2选择器3……{ }
注意:如果有元素选择器,必须使用元素选择器开头
选择器分组(并集选择器)
同时选择多个选择器对应的元素
语法:选择器1,选择器2,选择器3,……{ }
关系选择器
父元素
直接包含子元素的元素
子元素
直接被父元素包含的元素
子元素选择器,选中父元素的指定子元素
格式:父元素>子元素{ }
祖先元素
直接或间接包含后代元素的元素
后代元素
...
Python中值得注意的基础语法
循环部分for-in循环range类型用于产生不变的数值序列,例如:
range(101)产生从0到100的整数序列
range(100)产生从0到99的整数序列
range(1,100,2)产生从1到99的技术序列,2作为步长(每次增加的值)
函数部分函数的参数处理 python对于函数的参数并没有严格的限制要求,一个函数可以有默认的参数值(在没有参数传入的时候就会调用该默认值),但在实际执行的时候,并不一定完全按照函数声明时的参数来传入,这样就使得一个函数有多种不同的使用方式,不必再像其他语言那样额外写函数的重载。
除此之外,当我们不确定函数的参数个数的时候,可以使用可变参数,例如:
123456# 参数前加“*”表示可变参数,可以是零个或多个def add(*numbers): total = 0 for i in numbers: total += i return total
使用模块管理函数 由于python不支持函数的重载,因此,如果在同一个项目中发现有两个同名的函数 ,那么最后声明的函数就会覆盖之前的所有同名函数。为 ...
Java基础类库
Java的基础类库 Java的基础类库JFC为我们提供了程序接口API,能够帮助我们更加高效快捷的开发,降低开发的难度。
基本类型的包装类 尽管Java是一种面向对象的编程语言 ,但是最简单的基本数据类型却不具有面向对象的特性,因此,JDK中给出了一种包装类的解决方案,简单来说就是把基本数据类型转变成引用数据类型。从而实现基本类型的值的传入。
基本数据类型
包装类
int
java.lang.Integer
long
java.lang.Long
short
java.lang.Short
float
java.lang.Float
double
java.lang.Double
byte
java.lang.Byte
char
java.lang.Character
boolean
java.lang.Boolean
数字类型的包装类的父类都是Number,Number是一个抽象类,不能实例化对象
Boolean和char类型的包装类的父类是Object
装箱和拆箱
装箱:将基本数据类型转换成引用 ...
Java面向对象(下)
Java面向对象(下) 本文继续讲述Java面向对象的相关知识,主要介绍继承和多态,还涉及到final关键字、抽象类、接口、包和控制访问
1. 类的继承 描述类的所属关系,主要用于已有类属性和行为的沿用和扩展。被沿用的类称为父类(基类)、新的类称为子类(派生类)。
值得注意的是,Java只支持单继承,就像你只有一个亲生父亲一样,一个子类只能继承一个父类。但是你却还有一个爷爷、一个太爷爷,我们称之为多层继承。换句话说,Java类可以有无限多个间接父类。
1.1 重写父类方法 我们已经知道子类能够继承父类的属性和方法,但是父类的方法往往不能令我们十分满意,就像是你时常也会不太理解你的父亲那样。在生活中我们往往会参考父亲的建议来使用我们自己的方法,Java中也是同样,这个过程称为方法的重写或覆盖。方法重写要求我们重写的方法名、返回值类型和参数列表需要相同。
在这里需要注意访问权限的问题,子类重写的方法不能有比父类更严格的访问权限。打个比方,这就像是你想要改变父亲的想法,但前提是你不能瞒着他,必须要让他知道你改在哪儿了 ...
Java面向对象(上)
Java面向对象(上) 在开始学习Java之前就知道Java是一种面向对象的编程语言,但是对于什么是面向对象却没有明确的了解,在学习了本章之后,对于面向对象有了初步的了解,本篇文章梳理了该章节的重点知识。
如果感兴趣的话就继续看下去吧!
面向对象的概念 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是种具有对象)概念的程序编程典范,同时也是一种程序开发的抽象方针。
简单概括,面向对象开发是相对于结构化开发而言的,这种思想的产生来源于自然界,对于存在于自然界中的所有物质我们都能够将他归类,例如人类、动物类、食物类等等,而对于这些类我们都能够概括定义出他的属性和功能。针对程序设计,我们可以把程序看作是各种对象的集合。
程序 = 自然界
对象 = 人类、动物类……
面向对象的特点
封装性:核心,将对象的属性和行为封装成类,实现对用户隐藏细节
继承性:不同类之间关系的一种,目前还不太明确:(
多态性:以统一的风格编写程序
1. 类与对象1. ...
在搭建和优化Hexo时遇到的问题
记录自己在搭建博客的过程中所遇到的问题以及最终的解决办法
修改背景图的问题 今天想要进一步的优化一下自己疫情期间搭建的博客,想要解决替换页面背景的问题。由于NexT版本的更新,在搜索引擎上得到的大部分指引都是针对在NexT 7.3.0以前的文件设置,而在NexT 7.3.0之后的版本无法找到hexo/next/source/css/_custom/_custom.styl文件,搜索到的解决办法也五花八门,尝试了很多方法都出现了不同的错误,比如今天所遇到的错误:
初步尝试
将原本放在hexo/next/source/css/_custom/_custom.styl中的自定义样式代码放在hexo/source/_data/styles.styl中
在NexT的基本配置文件中将#style: source/_data/styles.styl的注释符号删除
出现错误1234567891011ERROR Asset render failed: css/main.cssError: D:\blog\themes\next\source\css\main.styl:4 ...
Hexo中我们常用的命令及文章配置
Hexo中我们常用的命令及文章配置
相关命令123456hexo new "postName" # 新建文章hexo new page "pageName"# 新建页面hexo generate # 生成静态页面至public目录hexo server # 本地预览页面默认端口4000,可以通过‘ctrl+c’关闭serverhexo deploy # 将文章部署到Githubhexo version # 查看Hexo的版本
常用的缩写命令:
1234hexo n == hexo new hexo g == hexo generatehexo s == hexo serverhexo d == hexo deploy
常用的组合命令:
12hexo s -g # 生成并本地预览hexo d -g # 生成并上传
写文章时需要执行的命令:
1hexo new '文章名称'
此时,Hexo会自动帮助我们在_ ...
数据结构与算法——线索二叉树
线索二叉树的引入
二叉树的结构特点会导致有大量的指针域空间的浪费,并且在二叉树的遍历时,每一次要想知道该结点的前驱和后继都需要进行一次遍历,这样会导致空间和时间上的浪费。因此,我们利用浪费的指针域,引入线索二叉树,同时解决上述两个问题。
线索二叉树的原理 初步想法是在二叉树中,我们利用没有指向孩子的指针域,使其指向该结点的前驱或后继。并且规定,原本指向左孩子的指针域负责指向前驱结点,原本指向右孩子的指针域负责指向后继结点。
为了方便记忆,我们可以把二叉树按照某种遍历次序想象成一个线性表,从左到右就是从前到后,方便记忆前驱和后继的指针位置。
但是,这样的方式会导致我们无法得知,在指针域中究竟指向的是该结点的孩子结点还是指向前驱或后继。为此,我们需要稍加修改结点的结构,在其中加入两个域,分别为 ltag 和 rtag,用于分辨上述问题。
数值
1
0
rtag
后继结点
右孩子结点
ltag
前驱结点
左孩子结点
线索存储结点的结构定义代码如下
12345678910typedef ...
数据结构与算法——串
数据结构与算法——串块链串
前言
在学习串的存储结构时我们知道,顺序存储的方式往往会导致越界的问题出现,然而当我们采用链式存储结构动态分配内存时,如果仅仅是每一个结点只对应一个字符,就会导致很大的一部分空间被浪费。因此,我们使用块链串的概念来完善串的链式存储结构。
什么是块链串
简单来说,块链串就是将链表中的结点定义成一个数组,实现一个结点可以存储多个字符。而具体存储多少个字符,则要依据实际的情况做出选择。
块链串的结构定义
123456789101112 typedef struct _clock{ char ch[BLOCK_SIZE]; //用于存放字符串的数组 struct _block *next; //用于链接的指针} Block;typedef struct{ Block *head; //指向块链串的头结点 Block *tail; //始终指向块链串的尾结点 int len; //记录块链串的总长度}BLString;
块链串的初始化
123456void blstr_init( ...
数据结构与算法--树与二叉树
数据结构与算法树的表示方法孩子表示法每个结点设置多个指针域,指针指向子树的根结点。即多重链表表示法由于每个结点的度不相同,指针域的个数难以统一,通过两种方案解决
方案一
以树的度作为指针域的个数 ——在各个结点的度相差很大时会导致空间的浪费
适用于结点的度相差不大的情况
方案二
再取一个位置用来保存统计出的结点指针域的个数,提高了空间利用效率,但是却浪费了时间。
综上所述
采取数组和单链表综合的方法,把树中的结点采用线性存储结构连成一个数组,并将其作为头指针连接一个由孩子结点构成的链表。
结构定义代码如下
12345678910111213141516#define MAX_TREE_SIZE 100typedef struct CTNode //孩子结点 -> 孩子链表 { int child; struct CTNode *next;} *ChildPtr;typedef struct //表头结构 -> 表头数组{ TElemType data; ChildPtr firstchild; ...