MySQL事务
事务事务是一组操作的集合,是不可分割的工作单位。事务中的所有操作要么同时成功,要么同时失败。事务保证了MySQL的ACID特性。
事务操作1234567891011-- 方法一start transation;...-- 提交|回滚commit|rollback;-- 方法二set autocommit=0;...commit|rollback;set autocommit=1;
事务特性
Atomicity 原子性, 事务是不可分割的最小操作单元,要么全部成功,要么全部失败
Consistency 一致性, 事务完成,必须使所有数据保持一致性
Isolation 隔离性, 数据库系统提供隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
Durablitiy 持久性, 事务一旦提交或回滚,对数据的改变是永久的
事务隔离级别并发事务一般会有以下问题:
脏读:一个事务读到另一个事务还没提交的数据
不可重复读:一个事务先后读取同一记录,但两次读取的数据不同
幻读:一个事务按照条件查询数据时,没有对应的数据行,但在插入数据时,又发现该数据已经存在
MySQL隔离级别:
Rea ...
MySQL常用函数
字符串函数
concat(s1, s2, …, sn) 拼接多个字符串
upper(s) 将字符串中所有字符转化为大写字母
lower(s) 将字符串中所有字符转化为小写字母
lpad(str, n, pad) 用pad左填充字符串str至长度为n的字符串
rpad(str, n, pad) 类似lpad,但右填充
trim(str) 去掉字符串头尾的空格
length(str) 获取字符串长度
substring(str, start, len) 返回字符串str从start起len长度的字符串(MySQL中字符串下标从1开始计算)
12345678910111213select concat('Hello', 'World'); -- Hello Worldselect upper('Hello'); -- HELLOselect lower('Hello'); -- helloselect lpad('Hello', 6, '0'); -- 0Hellosel ...
SQL基础(基于MySQL)
DDL(Data Definition Language)表查询
查询当前所有表
1SHOW TABLES;
查询表结构
1DESC TABLE_NAME;
查询指定表建表语句
1SHOW CREATE TABLE TABLE_NAME;
表创建1234CREATE TABLE TABLE_NAME ( COLUMN_NAME TYPE [COMMENT] [CONDITION], ...);
数据类型
数值类型
TINYINT 1byte
SMALLINT 2bytes
MEDIUMINT 3bytes
INT / INTEGER 4bytes
SIGINT 8bytes
FLOAT 4bytes float(m, d) 类似decimal
DOUBLE 8bytes double(m,d) 类似decimal
DECIMAL decimal(a,b) a表示小数点左边能存储的十进制数字最大数,b表示小数点右边…
对于数值类型,可以在字段约束条件中 ...
Golang并发
并行与并发的区别:
并发是指一个处理器同时处理多个任务。
并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。
Go 的并发模型基于 协程 和 通道(channels)。
GoroutineGoroutine就是Go并发中的协程,是一种更轻量的用户级线程,由Go在运行时管理。特点如下:
轻量:系统线程栈空间通常$\ge$1MB,Goroutine 的栈空间初始大小只有 2KB,可以动态扩容
高效:Goroutine 的调度器采用 M:N 模型,可以将 M 个 Goroutine 映射到 N 个 OS 线程上,实现高效调度
高并发:可创建数十万协程
方便:在Golang中,只要在函数调用前加上关键字go就可以启动异步Goroutine
这里给出一个简单的Goroutine例子:
1234567891011121314151617181920212223242526272829303132333435package mainimport ( "fmt" "time")func worker(id int) { fmt.P ...
Django入门笔记
Django的安装使用Django 安装在pycharm里新建项目,在虚拟环境中下载Django包:
1pip install django
安装之后可以通过以下指令打印Django的版本
1python -m django --version
若终端打印出版本号说明Django安装成功
创建Django项目打开终端并输入以下命令:
1django-admin startproject demo .
即可在本目录下创建项目名为demo的Django项目(无外层容器)
终端先进入demo目录下再输入启动命令:
12cd ./demopython manage.py runserver
若成功运行Django服务器,说明Django项目创建成功。
创建Django的一个AppDjango 中的App可理解为网站的某一应用功能,而这种应用功能可以应用独立的表结构、函数、HTML模板等等。一般网站只需一个APP即可
在终端输入以下命令创建App:
1python manage.py startapp web
就可以创建一个名为web的App。
Django项目结构说明使用tree f ...
Golang 基础语法学习笔记
常量
关键词: const
用法:
单行声明:const variableName [Type] = value
并行声明:const p1, p2, p3 = v1, v2, v3
多行声明:
1234567891011const beef, two, c = "eat", 2, "veg"const Monday, Tuesday, Wednesday, Thursday, Friday, Saturday = 1, 2, 3, 4, 5, 6const ( Monday, Tuesday, Wednesday = 1, 2, 3 Thursday, Friday, Saturday = 4, 5, 6)const ( a = iota b = iota c = iota)
变量声明格式单行变量声明格式var name [type] [= val]
多行变量声明格式:
12345var ( a int b bool str string)
也可以同时给多个值声明类型:var a, ...
Javascript 笔记
概述本博客仅是本人学习原生Js时的一些记录和总结。注意:console.log(string)用于向控制台打印string字符串,是示例中最常用到的代码之一。
数据类型及其字面量EMCAscript规定了7大简单/原始数据类型:
Boolean 布尔值
String 字符串
Number 数值 包括整型和浮点数
null 空值 注意大小写区分,NULL和Null不是null类型
undefined 未定义值
BigInt 大整型数
Symbol 一种独特且不可修改的类型
还有Object 这种复杂数据类型
可以使用typeof x来判断变量的数据类型
字面量是直接在代码中的固定值,这里记录一些不同数据类型字面量的特点
整型与进制(Integer & BigInt)1234560, 117, 123456789123456789n (decimal, base 10, no prefix)015, 0001, 0o777777777777n (octal, base 8, prefix: 0 or 0o)0x1123 ...
一些 Golang 的内置包
Reflect
Go中每个接口变量都对应一个pair(value, concrete type), value是这个变量的值,而concrete type是这个变量在runtime系统中看见的类型。反射就是检查接口变量内部pair的机制
Type & Valuereflect包提供了Type和Value两种核心类型,代表Go中的变量值和变量类型。可通过TypeOf和ValueOf方法获取变量的Type和Value。
reflect的TyepOf和ValueOf函数签名如下:
12func TypeOf(i interface{}) Typefunc ValueOf(i interface{}) Value
这两函数先将传进来的变量转化为接口,再调用反射机制来实现对变量类型和值的查看
Type和Value也提供了一些方法:
Type
Kind() 对应的底层类型,返回Kind(本质是uint)
Elem() 返回元素的类型Type,参数必须是array,chan,map,pointer,slice等
Value
Kind()
El ...
MySQL之主从复制
概述主从复制指主数据库的DDL和DML操作通过二进制日志传送到从库服务器,在从库上对这些日志重新执行,从而使得从库和主库的数据保持同步
MySQL支持链状复制,一个主库可以向多个从库进行复制
作用:
主库故障,可以快速切换到从库提供服务
实现读写分离,降低主库的访问压力
从主库执行备份,避免备份期间影响主库服务
原理
Master将DDL/DML操作写入本地binlog
Slave的IO线程读取Master的binlog,并将其内容写入Slave本地的Relay log
Slave的SQL线程从中继日志Relay Log读取内容,并重做其中的时间,将改变反映到它自己的数据
搭建主库配置修改配置文件
1234# 要保证id在整个集群环境唯一server-id=1# 1表示只读,0表示读写read-only=0
这里read-only仅针对普通用户,super用户仍有权限对数据库进行写操作;可以使用super-read-only=1限制super用户进行写操作
重启服务后,主库还需要创建远程连接的账号,并赋予主从复制的权限
12CREATE USER 'X ...
Web之Http基础
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议。
打开浏览器,随便访问一个网站,按F12打开开发者工具,点击网络/Network,再次刷新网页,就可以看到你向这个网站服务器发送的HTTP请求数据包了。
HTTP请求格式HTTP请求包包含三个部分:请求行、请求头、请求体
HTTP请求行
请求行的内容
方法类型
资源路径+查询参数
协议版本
直观地分析一个请求行GET https://somewebsite.com/index.php?id=1 HTTP/1.1
GET 是请求方式中的一种
https://somewebsite.com/index.php?id=1 是URL,既资源路径+查询参数
HTTP/1.1 协议版本
请求方式只要有GET和POST两种方式,两者最直观的区别在于数据参数的位置
GET数据参数往往直接写在URL的尾部,比如访问https://somewebsite.com/index.php?usr=1&pwd=1时,就向目标网站传递了参数usr=1和p ...