golang基础笔记(4):Map
map
map是Go语言中提供的映射关系的容器类数据结构,其内部使用散列表(hash)实现。
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。
构建map
var
1var m map[KeyType]ValueType
make()
1m := make(map[KeyType]ValueType,[cap])
cap为可选参数
使用字面值
map支持在声明的时候填充元素
1234m := map[KeyType]ValueType{ "Key1":value1, "Key2":value2,}
大括号内也可以为空
1m := map[string]int{}
通过使用空接口,可以在同一个map中存储不同类型的value
1234m := map[string]interface{}{ "name": "张三", //string "age" ...
golang基础笔记(3):数组、切片
数组
与大多数语言中的数组都类似,Go语言的数组也是从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。但是实际上,Go中的数组并不常用,而常用为切片。
声明
1var 数组变量名 [元素数量]T
初始化
基础写法
123var testArray [3]int //数组会初始化为int类型的零值var numArray = [3]int{1, 2} //使用指定的初始值完成初始化var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化
编译器判断长度
12var numArray = [...]int{1, 2}var cityArray = [...]string{"北京", "上海", "深圳"}
指定索引值
1r := [...] ...
golang基础笔记(2):程序结构
Hello World!
从每个语言学习的开始讲起:
1234567package mainimport "fmt"func main() { fmt.Println("hello golang")}
包
每个Go程序都是由包构成,每个项目都是从main包作为入口的。
导入包
使用import语句导入包,在Hello World程序中,我们导入了fmt包
1import "fmt"
常常的,我们在写程序时都会遇到需要导入多个包的情况,在Golang中,我们有两种形式导入多个包:
第一种是多个import
12import "fmt"import "math"
我们还可以选择将多个包用括号括起来在一个import中
1234import ( "fmt" "math")
值得注意的一点:import语句只对当前文件有效
导出名
在Java中,我们用public和private关键词来标记一个方法是包外是否可用的。
而在Go中,使用 ...
golang基础笔记(1):环境配置
Golang安装
Go语言支持大部分常见系统与处理器架构:
Linux
MacOS
Windows
…
我们可以前往Golang的官方网站下载对应安装包或者二进制包
本文以Linux平台作为演示,类Unix使用二进制包安装的流程大致相同
步骤大致如下
下载二进制包 go1.x.x.linux-amd64.tar.gz
进入保存的文件夹,将二进制包解压到/usr/local目录下:
1tar -C /usr/local -xzf go1.x.x.linux-amd64.tar.gz
将/usr/local/go/bin目录添加到PATH环境变量下:
直接使用命令只能临时添加,因此我们选用编辑终端的配置文件,首先我们需要确定自己的终端配置文件是哪个
我是zsh终端,因此我们需要修改~/.zshrc,将命令添加到该文件末尾(最好做上注释)。
12#golangexport PATH=$PATH:/usr/local/go/bin
测试
安装完成!
Python基础笔记(3):基本数据类型
标准数据类型
在上个笔记中,我们提及了Python中的六个标准的数据类型:
Number(数字)
String(字符串)
List(列表)
Tuple(元组)
Set(集合)
Dictionary(字典)
Number 数字
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
在 Python3.6+ 中书写很大的数时,可以在任意位置加入下划线,使数字更清晰易读,但是请注意Python3中的数字是没有限制大小的
1universe_age= 14_000_000_000
bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回True,但可以通过is来判断类型:
1234>>> 1 is TrueFalse>>> 0 is FalseFalse
而其他三种则为三种不同的数值类型
三种数
整型( int ) : 通常被称为整型或整数
浮点型( float ) : ...
Python基础笔记(2):基础语法
标识符
Python中的标识符规则与大多数语言都类似:
第一个字符必须是字母表中字母或下划线 _ 。
标识符的其他的部分由字母、数字和下划线组成。
标识符对大小写敏感。
在Python3中非ASCII标识符也受允许,例如中文
与其他语言不同的是,Python中标识符前后的下划线是具有特殊含义的,起着Java等语言中public等关键词的作用:
单下划线开头 _var
说明是仅供内部使用的方法变量,举个例子
首先创建一个test.py模块,包含了一个带下划线和不带下划线的方法:
1234567def func(): print("hello world")def _func(): print("NO Hello")
接着我们去引用这个模块,并分别调用方法:
123from test import *func()
123from test import *_func()
这时候它告诉我们 _func 没有定义,它只能被模块内部使用。
简单输入输出
使用input()与print()实现在命令行窗口简单输入输出:
12str ...
Python基础笔记(1):简介、环境部署
Python简介
Python是一门解释性语言,简单易学,上手容易。
因此作为一门胶水语言,在许多非计算机专业都有广泛学习。为了可以编写一些简单的脚本,学习Python还是有一定的必要性的。
本笔记基本内容为根据
Python3
菜鸟教程 Python3 教程 | 菜鸟教程 (runoob.com)
NX的博客 Python | NX の 博客 (nickxu.top)
所编写。
环境部署
前往官网Python.org下载最新的Python安装包,按流程安装。
在代码编辑器上有两个推荐,一个是VSCode,一个是Pycharm:
VSCode在拓展应用商店安装Python插件与Code Runner插件即可
Pycharm的配置与安装不再赘述,向导非常详细,遵循向导即可
当然,作为一个解释型语言,我们也可以在命令行中进行交互式的编程,但是这种方式并不是很常用。
Rust基础笔记(1):基础结构
序
此笔记为在学习Rust圣经《The Rust Programming Language》时记录的笔记,为基础学习
中文版书籍:Rust 程序设计语言 - Rust 程序设计语言 简体中文版 (kaisery.github.io)
安装过程不再赘述,可直接参考Rust官方网站的安装过程
官方网站地址:Rust Programming Language (rust-lang.org)
本人开发环境为:
ManjaroWSL2
Clion
学习Rust纯属为个人一时兴起,本笔记随时弃坑。
一个简单的Rust程序
1234567891011use std::io;fn main() { println!("Guess the number!"); println!("Please input your guess:"); let mut guess = String::new(); io::stdin() .read_line(&mut guess) .expect(" ...
vim自用使用指南
vim模式
vim主要分为几种模式:普通、命令、插入、可视
其中普通模式是vim启动时默认的模式,非普通模式之间的切换,需要回到普通模式才能进行切换。
普通模式 --> 插入模式:通过i、a、o等进入
i在光标前插入 I在行首插入
o在下一行插入 O在上一行插入
a在光标后插入 A在行尾插入
插入模式 --> 普通模式:通过ESC退出插入模式
由于ESC键较远,往往的我们会映射一些键作为ESC,例如j j、CapsLock等,这个可以根据个人喜好来进行映射
普通模式 --> 可视模式:通过v进入
可视模式 --> 普通模式:通过ESC或者再按一边v退出
普通模式 --> 命令模式:通过:进入
命令模式 --> 普通模式:命令以回车结束运行,或者通过ESC退出
光标移动
vim的光标移动均是在普通模式下移动的
以字符为单位(类似方向键)的光标移动是使用hjkl进行移动
以单词为单位的移动
w(word)跳到下一个单词的开头
b(begin)跳到本单词或上一个单词开头
e(end)跳到本单词或下一个单词的结尾
ge跳 ...
Web开发基础(5):盒模型
盒子模型
基本概念
所有的HTML元素都可以看作如下图的盒子
margin:外边距 border:边框 padding:内边距
CSS盒模型本身是一个盒子,封装HTML元素
它包括了四个属性,外边距、边框、内边距、内容,通过设定盒子的四个属性,我们做到布局与设计网页
当我们指定一个元素CSS的宽度width和高度heigh属性的时候,我们设定的是内容部分的宽度和高度。一个完整的元素的,应当还包括了内边距,边框和外边距
因此,一个元素的宽度的计算公式应该是
宽度 + 左内边距 + 右内边距 + 左边框 + 右边框 + 左外边距 + 右外边距
而一个元素的高度的计算公式为
高度 + 顶部内边距 + 底部内边距 + 上边框 + 下边框 + 上外边距 + 下外边距
边框border
border这个属性实际上是border-width、border-style、border-color的简写属性,即粗细、样式、颜色三个属性
粗细的设置就是使用px、rem等等用于粗细上的值来设定边框粗细
样式的值可以参考border-style - CSS(层叠样式表) | MDN (mozilla.org) ...