更新文章

This commit is contained in:
lsy 2025-04-19 01:06:52 +08:00
parent c2adcec23e
commit 428b2597d7
273 changed files with 10731 additions and 69 deletions

View File

@ -1,6 +1,7 @@
---
title: "常用软件"
date: 2023-04-28T20:56:00Z
tags: []
---
### Windows 应用

View File

@ -1,5 +1,5 @@
---
title: "Simple_rust_wasm"
title: "用rust实现第一个wasm"
date: 2024-10-19T15:09:25+08:00
tags: ["rust", "webassembly"]
---

View File

@ -41,4 +41,4 @@ tags: []
关于ARM版本
**一般近两年发布的手机ARM版本都是ARMv8。如果是老手机可以先搜一下自己的ARM版本。
也可以直接下载universal版本也就是兼容v8和v7的版本。**
也可以直接下载universal版本也就是兼容v8和v7的版本。**

View File

@ -0,0 +1,54 @@
---
title: web技术思路
date: 2025-01-15T00:34:11Z
tags: []
---
## 前端
## tailwind
> 快速构建css样式器
### 可响应式布局
利用媒体查询器
### 黑暗模式
```javascript
/** @type {import('tailwindcss').Config} */
module.exports = {
mode: "all",
content: ["./src/**/*.{rs,html,css}", "./dist/**/*.html"],
theme: {}, //自定义配置
plugins: [],
darkMode: ['data-theme="dark"'], //以自定义数据theme的方式生成对应的css文件
};
```
## 后端
### 安全
1. json web token保证用户令牌不是篡改或伪造注意是明文传输
2. hash密码避免数据库泄漏带来的隐私风险
3. cors可以避免其他站点的非法请求不过只适用用浏览器
4. 构建sql查询器中间件使sql语句可以结构化可以根据危险等级构建不同的查询等级最大程度避免xxs
### 接口
1. 适用restful接口具有很好的可读性
## 其他
1.设计尽量无状态,低耦合,使后期即使出现问题也是独立的状态

View File

@ -0,0 +1,22 @@
---
title: 人性的本质
date: 2024-10-30T15:24:15Z
tags: []
---
* 这个世界不是非黑即白,更多的是由黑白交杂而成的灰度世界
* 自私是人的本能,道德是为了获取更大利益的"公约"
* 在未经别人允许,或者是别人根本不需要帮助的情况下给予别人帮助,本质上是为了满足自己内心的优越感,做事是为了有所得,如果别人没有明确提出需求,所做的事情只是自己的一厢情愿
* 期待过高是痛苦产生的原因,由薄而厚,反而会填加一些惊喜
* 遇到问题刨根问底的找出问题的原因,只是为了将责任推给外界,给自己心理安慰,应该寻找解决方案而不是刨根问底
* 人的跟谁和离开是源于人趋利避害的本性,只有不断提升自己的核心竞争力和不可替代性
* 习惯性防御,人在受到批评的时候,会下意识的将它作为攻击,会进行本地的防御(逃跑-战斗),但批评并不是一种攻击,需要抑制本能的想法,判断价值
* 未完结情结,想改变一件事情,但是无法改变的时候,就会将这件事情压在潜意识里,有机会能改变的时候,就会复现这个事件来进行完成
* 沉没效应,在对一方更好的时候,会自证另一方也会对自己好
* 逆向合理化,现在的的行为和之前贯彻的认知不同时,人们就会找一个理由来合理化现在的行为
* 保持敬畏之心,避免无望之灾,尽人事,听天命
* 钱是一种社会贡献价值的媒介,可以通过这种媒介获取商品和服务,获得自己想要得到的情绪体验
* 做事之前,想为什么,投入,期望结果
* 人都死不认错,寻求建议只是为了肯定自己的选择,不撞南墙不回头

View File

@ -0,0 +1,11 @@
---
title: 从内耗到心流:复杂时代下的熵减行动指南
date: 2024-11-26T08:58:22Z
tags: []
---
* 大脑处理问题时会首先通过路径依赖,达到用最少的能力解决问题
* 熵是一个系统的状态函数,指一个系统的混乱程度,越混乱做功效率越低,熵值就会越高,便是增熵,反之越稳定做功效率越高,便是减熵(逆熵),系统内部的序列极为简洁有序,做功效率几乎没有损耗非常稳定便称谓负熵,在增熵的过程中能量不会百分百的转换,这部分无法转换的能量像垃圾一样不断沉积在系统中,到达一个极点系统崩溃便是熵死
* 你的潜意识在操纵你,却被你称为命运

View File

@ -0,0 +1,18 @@
---
title: part1
date: 2024-06-06T23:51:35Z
tags: []
---
1. 学习新技术
使用新技术在新技术.等新技术稳定后.3.4年后避免新技术前期重大改动和bug
2. 有宏观视野
某些功能和技术要长远考虑
3. 分清利弊
在使用时,搞清产量侧重点,使用符合产品特性的技术,而不是一味使用新技术
4. 应对改需求
设计功能,想好后续更改情况
5. 搞懂业务
搞懂业务正在需求,如无必要勿增实体
6. 见人说人话见鬼说鬼话
提取主题,精简表述内容,转为对应知识水平的话

View File

@ -0,0 +1,18 @@
---
title: part2
date: 2024-06-06T23:51:35Z
tags: []
---
1. 过度开发
没有的需要,短期用不到功能,没必要开发增加工作量,留好接口等,以免更改需求就行
2. 没有规矩不成方圆
写项目之前,应该制定,使用一个规则
3. 代码是工具
写代码美观不是最重要的,方便才是最重要的
4. 技术栈膨胀
使用的技术栈越多,维护所需的技术越多,应当采用较少的技术栈实现相同的功能
5. 不要重复造轮子
造轮子费时间,后期轮子也是一个单独的生命,需要维护,后期维护成本高
6. 没必要的复杂
实现相同的需求,用法越简单越好,解决问题才是最重要

View File

@ -0,0 +1,13 @@
---
title: part3
date: 2024-06-06T23:51:36Z
tags: []
---
## 学好英语
1. 大多数编程语言都是基于英语发源的
2. 大多数新技术也是英语
3. 国内论坛的编程技术汉译过来,有滞后性
4. 在国外能不能更方便找到答案,甚至能找到作者
5. 可以吸收全世界的经验

View File

@ -0,0 +1,12 @@
---
title: part4
date: 2024-06-06T23:51:41Z
tags: []
---
1. 经验最宝贵
不断进步,年度总结,不要止步不停
2. 学会与人打交道
技术不能代表成就,个人技术只有代表个人成就,如果有团队,那就是团队成就
3. 不要固化技术栈
技术更迭很快,不要只停留在现有技术,要学会尝试不同的技术,说不定新技术更方便

View File

@ -0,0 +1,10 @@
---
title: part5
date: 2024-06-06T23:51:46Z
tags: []
---
需要项目都是在"温室"中产生,只考虑了给定的需求,在生成环境中出现的的问题,没有考虑"现实"出现的问题,需要打破温室,考虑现实中出现的温室

View File

@ -0,0 +1,17 @@
---
title: part6
date: 2024-06-06T23:51:42Z
tags: []
---
## 紧迫感
不必把自己的时间,按照最高效率安排,多给自己一些容错时间
## 无知感
每个人都不是事事精通,如果自己不感兴趣,将知识了解到足以解决项目问题就够了
## 成就感
多完成项目

View File

@ -0,0 +1,17 @@
---
title: 非暴力沟通
date: 2024-10-28T14:37:44Z
tags: []
---
* 发生了什么事情,我的感受,为什么我会有个感受,我希望怎么解决这件事情
* 常常对别人进行道德评判,别人的行为不符合自己的价值观便是错误的行为,其实背后的逻辑只是没有满足自己的需求,遇到问题时先明白自己的需求再做选择
* 被自恋的想法所影响,想要证明这个想法,就需要和别人进行比较,两个人开始比较就是站在对立面,从而产生矛盾,不应该选择相似的点进行比较,应该选择相似的点上的优点,进行学习
* 常用"不得不""让人感觉"等回避了自己内心的想法和所负的责任,长时间会缺乏主观能动性,成为麻木执行命令的人,应该讲想法转我"因为(自己的原因)所以xxx"
* 在现实生活中有许多"主流的价值观"或别人的建议,童年的教育教导需要听从这些建议,导致压制了某些"劣质"的天性,应该开始聆听内心真正的声音和想法
* 语言是一门年代久远的工具,是有一些缺陷的,用静态的语言表达瞬息万变的世界,会带来许多问题,不断变化的世界和静态语言不匹配是带来许多问题的原因,谨慎使用!!!
* 标签常用于快速了解一个人,这种了解来自于经验主义,如果给人贴上标签,就会给这个人先入为主的带入过去的主观看法,就会妨碍中立的全面的看待一个人,拒绝给别人和自己贴标签,要通过不断观察交流来了解和认识
* 人们会对各种事情进行评论,评论并非公平公正,评论是带有未负责的话或预测,臆想的"事实"等自己"总结起来"的话,常常言过其实或带有强烈的主观色彩,只需要陈述观察,而不是评论,什么时间+什么情景
* 通过正确建立表达感受的词汇表,更加明确的体会和表达自己的感觉,与他人建立更好的连结,有时将自已的感受表达出来,别人更能理解自己的情绪和观点

View File

@ -0,0 +1,35 @@
---
title: "第一次出国旅行-东南亚"
date: 2025-04-18T22:01:57+08:00
tags: []
---
>大多数和别人的对话都是使用谷歌翻译的同声翻译
## 睁眼说瞎话
  值机的时候碰到本次旅行第一个交流的外国人一个会讲中文的马来西亚男人感觉马来西亚男人说话像乱序中文但是能听懂马来西亚男人知道了我没有马来西亚货币提出换一点林吉特给我马来西亚男人的老婆说人民币拿去没用我都不抱希望了但是马来西亚夫妻还是兑换了100人民币给我。
  还没出国门就遇到第一个问题海关闸机刷了不开门海关警察来了对我进行盘问海关的警察问我很多问题其中就有我父母是否同意现在遇到突发问题也是可以面不改色的说假话了不过好在中午的时候打电话询问了一下我爹的意见虽然我爹不同意但是好在留下了通话记录我将过去的旅游照片给海关看与海关警察周旋了10多分钟幸好过海关的时候快到晚上12点了不好向我父母核实差点这次旅行计划早夭了。
  第一次做廉航,亚航位置空隙比国内任何大巴空隙都要小,最难受的交通出行方式。
  飞行途中透过对侧窗户看到了漂亮的满月,在我这一侧看到了美丽的星空和晨昏线
## 可恶的公交车司机
  马来西亚第一站计划去粉红清真寺从吉隆坡机场1楼乘坐巴士直接过去但是购票的时候公交车售票厅工作人员说没有到粉红清真寺的公交车只能打出租车前往看了一下打车的价格决定重新做攻略再挣扎一下在休息长椅坐了半个小时终于找到新路线`地铁站->布城->公交站->粉红清真寺`往机场3楼地铁站走的时候发现斜挎包不见了听说国外酒店工作人员会翻包偷钱就买了个斜挎包放护照现金等重要的东西惊慌了一会还好头脑风暴了一会想起来了在做攻略的长椅忘拿了。
  布城的公交车站是始发站,在最后一个站台才找到`T523`,我想上车但是司机朝我摆手,我就在车子旁边的亭子研究如何打车,研究了一会司机叫了我一声,给我一个招揽的手势,上去了我给司机看我的谷歌地图,用翻译软件软件问司机可以去这里吗,司机用本地话说一大堆,我将谷歌同声翻译打开司机,告诉司机对着这个说我就可以听懂了,但是给司机一个字不说,拿开了手机司机又开始说本地话,僵持了一会司机不耐烦的打手势让我去旁边公交车,我以为上错车了,我将地图给旁边公交车司机看,说要去地图的地方,旁边公交车的司机指着`T523`告诉我那辆车可以去回到T523后告诉司机就是这个车车开了一会司机说 three ,我本以为司机完全不会英语呢,途中看到一个清真寺,打开谷歌地图显示现在要去的最后一个站,我指着清真寺问司机"is there?",司机说"yes,down"看着绿色的清真寺我觉得现在照骗太多了看着别人拿着证件或者是手机给安保人员看了才能进去我想网上不要预约和门票的说法看来是过时了不过来都来了我要去试试到了门口工作人员拦下我我告诉工作人员我没有预约但是我想进去参观工作人员反复询问我确定要进去吗我告诉工作人员我专程过来参观这个清真寺工作人员的话翻译过来是“这是政府办公的地方不允许外人靠近但是你是第一次”我打开地图重新导航显示距离粉红清真寺还有1.2km。
  粉红清真寺的穹顶真的是粉红色的!穹顶里面看更漂亮,由红色,浅粉色,白色构成的图案
  在粉红清真寺里面有两幅捐款地图,捐款一次可以用针扎自己的家乡,一副世界地图一副中国地图,世界地图上的中国和中国地图都是密密麻麻的针
  国外的公交车不适合i人,我打算从布城从地铁到市中心需要先坐公交车到布城去差10秒就赶上了但是站台没人所以公交车司机没有停第二次在休息区等了半个小时司机又没停可能是司机没看到我吧第三次我站在公交车站台等车的位置等待可是他还是没停这次可能是没有给司机信号第四次等公交车快到的时候我死死的看着司机与他建立心灵链接但他还是不停浏览器查询原来要招手用打车软件看了一下两公里还是选择打车了
  在去酒店的路上看到了很多流浪汉,不过感觉他们的穿搭和我没有区别,一个包+拖鞋,酒店的位置和平台给的地址不同还好遇到一个好心的印度男人,打电话和酒店交流,告诉我酒店在哪里
  晚餐找了家本地人多的店,点了一个大虾饭,没想到是正宗印度菜,`米饭味道=70%八角+20%洗衣服+10%辣椒`
  凌晨3点被炸街吵醒没想到精神小伙也是全世界统一

View File

@ -0,0 +1,53 @@
---
title: pymssql
date: 2024-06-06T23:51:35Z
tags: []
---
```python
import pymssql
```
### 建立连接
```python
conn = pymssql.connect(server='server_name', user='username', password='password', database='database_name', port=port_number)
```
### 创建游标
```python
cursor = conn.cursor()
```
### 执行查询
```python
cursor.execute('SELECT * FROM table_name')
```
### 获取结果
获取一行结果
```python
row = cursor.fetchone()
```
获取所有结果
```python
rows = cursor.fetchall()
```
### 提交更改
```python
conn.commit()
```
### 关闭连接
```python
conn.close()
```

View File

@ -0,0 +1,30 @@
---
title: 事务
date: 2024-06-06T23:51:47Z
tags: []
---
```sql
begin transaction
declare @MyError
set @MyError = 0
begin transaction
语句1
set @MyError += @@error
语句2
set @MyError += @@error
if @MyError = 0
begin
commit transaction
print N'成功'
end
else
begin
rollback transaction
print N'失败'
end
```

View File

@ -0,0 +1,11 @@
---
title: 体系
date: 2024-06-06T23:51:45Z
tags: []
---
体系
C/S(Clioent/Server,客户端/服务器):基于企业内部的应用系统
DBMS:客户端负责执行前台功能,实现各自的用户界面和业务逻辑的处理;而服务器运行数据库管理系统

View File

@ -0,0 +1,17 @@
---
title: 储存过程
date: 2024-06-06T23:51:46Z
tags: []
---
```sql
CREATE PROC 储存过程名
@参数1 类型,
@参数2 类型
AS
BEGIN
-- 存储过程主体可以包含各种SQL语句
RETURN 0; -- 示例中的RETURN语句用于返回值这里返回0表示成功
END;
GO
```

View File

@ -0,0 +1,58 @@
---
title: 函数
date: 2024-06-06T23:51:35Z
tags: []
---
## 系统函数
## 自定义函数
### 标量值函数(返回单个值)
创建
````
create funcition 函数名(@参数 类型)
returns 类型
as
begin
条件
return 值
end
````
### 值表函数(返回值查询结果)
创建
#### 方案一(处理复杂逻辑,函数体除了sql查询之外还有其他逻辑代码)
````
create function 函数名(@参数 类型)
returns @表名 table
(
数据结构
)
as
begin
insert into @表名
条件
return
end
````
#### 方案二(只能return+sql查询结果)
````
create function 函数名(@参数 类型)
return table
as
return
条件
go
````
## 调用
SELECT dbo.函数名(值)

View File

@ -0,0 +1,19 @@
---
title: 分页
date: 2024-06-06T23:51:44Z
tags: []
---
## top分页
```sql
select top 码数 * from 表名
where 列名 not in(select top (码数*页数-1) 列名 from 表名)
```
## 使用row_number分页
```sql
select * from
(select ROW_NUMBER() over(order by主键) 别名,* from 列名) Temp where 别名 between (当前页-1)页码大小+1 and 当前页页码大小
```

View File

@ -0,0 +1,47 @@
---
title: 创建数据库
date: 2024-06-06T23:51:38Z
tags: []
---
## 注释
`--`
## 创建数据库
`create database`
### 数据文件
```sql
on --对配置文件描述
(
name = '一般与数据库名相同_data', --逻辑名称
filename = '路径\一般数据库名_data.mdf', --物理路径和名称
size = 数字MB, --文件初始化大小
maxsize = 最大大小
filegorowth = 2MB --文件的增长方式可以写大小,也可以写百分比
)
```
### 日志文件
```sql
log on --对配置文件描述
(
name = '一般与数据库名相同_log', --逻辑名称
filename = '路径\一般数据库名_log.ldf', --物理路径和名称
size = 数字MB, --文件初始化大小
maxsize = 最大大小
filegorowth = 2MB --文件的增长方式可以写大小,也可以写百分比
)
```
## 删除数据库
```sql
drop database 数据库名
```

View File

@ -0,0 +1,47 @@
---
title: 创建用户
date: 2024-06-06T23:51:34Z
tags: []
---
## 创建登录名
```sql
CREATE LOGIN login_name
WITH PASSWORD = 'password';
```
> login_name 是要创建的登录名。
> password 是登录名的密码。
> 如果你想在特定数据库中为用户创建用户,可以使用以下语法:
## 创建用户
```sql
USE your_database_name;
CREATE USER user_name
FOR LOGIN login_name;
```
> your_database_name 是数据库的名称。
> user_name 是要创建的用户的名称。
> login_name 是已创建的登录名。
> 你也可以为用户分配权限:
## 给单个表赋权
```sql
GRANT SELECT, INSERT, UPDATE, DELETE ON your_table_name TO user_name;
```
> your_table_name 是要分配权限的表的名称。
> user_name 是已创建的用户的名称。
> 这只是基本的创建用户和分配权限的示例。在
## 给表赋权
```sql
USE your_database_name;
ALTER ROLE db_owner ADD MEMBER user_name;
```

View File

@ -0,0 +1,28 @@
---
title: 创建表
date: 2024-06-06T23:51:44Z
tags: []
---
## 切换数据库(默认master)
```bash
use 数据库名
```
## 创建表的基本语法
```bash
create table 表名 (
字符段名 数据类型 可选(添加到后面)
可选 {
设置主键:primary key
设置增长:identity(初始值,增长步长)
不能为空:not null
设置默认:default
限制:check(条件)
唯一的:unique not null
}
引用外键:键名称 数据类型 references 表名(主键)
)
```

View File

@ -0,0 +1,39 @@
---
title: 变量
date: 2024-06-06T23:51:39Z
tags: []
---
### 信息打印
```sql
print
```
```sql
select
```
### 局部变量:以@开头,先声明,再赋值
```sql
declare @变量名 类型
set @变量名 = 值
```
```sql
select @变量名=值
```
> 变量只能接收一个值
> set赋值变量指定的值只能插入一条
> select:一般用于表中查询出的数据赋值给变量(如果有多条,把最后一行赋值给变量)
### 全局变量:以@@开头,由系统进行定义和维护
### go
1.等待go语句之前的代码执行完之后才能执行后面的代码
2.批处理结束的一个标志

View File

@ -0,0 +1,152 @@
---
title: 基本查询
date: 2024-06-06T23:51:01Z
tags: []
---
### query all table
```docker-compose
select * from [table]
```
### query specified column
```docker-compose
select [column1],[column2] from [table]
```
### set alias
```docker-compose
select [column1] AS [alias1],[column2] AS [alias2] from [table]
```
### Remove the same
```docker-compose
select distinct([column]) from [table]
```
### Operator
equal
unequal
greater than
less than
greater than or equal
less than or equal
|||
| -----------------------| :----: |
|equal|`=`|
|unequal|`!=`|
|greater than|`>`|
|less than|`<`|
|greater than or equal|`>=`|
|less than or equal|`<=`|
### function
IS NULL:比较为空
IS NOT NULL:比较不为空
in:比较是否在其中
like:模糊查询
BETWEEN...AND....:比较是否在两这直接
and:与
or:或
not:非
## 排序
### 升序
```sql
select * from 表名 order by 列名
```
### 降序
```sql
select * from 表名 order by 列名 desc
```
## 查询数量
```sql
select top 数量 * from 表名
select top 比例 percent * from 表名
```
## 条件日期
### 月
```sql
where month(列名) >= '数字'
```
### 日
```sql
where day(列名) >= '数字'
```
## 子查询
```sql
select *from 表名 where 列名 运算符 (select 列名 from 表名 where 条件 )
```
## 模糊查询
字段 link 条件
%:代表0个或多个字符
_:代表只有一个字符
[ ]:代表了限定范围
[^]:代表匹配不在范围内
## 聚合查询
count 求数量
max 求最大值
min 求最小值
sum 求和
avg 求平均
## 分组查询
group by 条件
## 笛卡尔乘积
select * from 表1,表2
> 依次排列出现结果
## 内连接
```python
select * from 表名1 inner join 表名2 on 表名1.列名= 表名2.列名
```
### 外连接
left join以左表为主
### 右连接
right join以右表为主
### 全连接
full join 两张表无论是否符合关系都要显示

View File

@ -0,0 +1,35 @@
---
title: 数据
date: 2024-06-06T23:51:40Z
tags: []
---
## 插入
### 单行
```sql
insert into 表名(列名1,表名2)
values('数据1','数据2')
```
### 多行
```sql
insert into 表名 (列名1,列名2)
select 数据1','数据2' union
select 数据1','数据2'
```
## 修改
```sql
update 表名1 set 字段1=值1,字段2=值2 where 条件
```
## 删除
```sql
delete form 表名 where 条件
```

View File

@ -0,0 +1,17 @@
---
title: 数据库结构设计的三范式
date: 2024-06-06T23:51:42Z
tags: []
---
## 第一范式
属性具有原子性,不可分解
## 第二范式
要求记录唯一的标识,即实体的唯一标识,即不存在部分一列
## 第三范式
要求任何字段不能由其他字段派生出来,他要求字段没有冗余,即不存在依赖关系

View File

@ -0,0 +1,14 @@
---
title: 数据类型
date: 2024-06-06T23:51:47Z
tags: []
---
`char`:定长,无论存储是否到达存储的字节,都要占用设定的字节
`varcher`:变长,最多占用设定的字节
`text`:长文本
`char`,`varchar`,`text`,前面加`n`存储unicode字符,对中文友好
`date`(低版本可能没有):只能年月日
`datetime`:年月日时分秒
`smalldatetime`:相对datetime表示的时间较进
`decimal`:(总长度,小数点后的长度)

View File

@ -0,0 +1,48 @@
---
title: 流程控制
date: 2024-06-06T23:51:44Z
tags: []
---
## WHILE AND IF...ELSE
````sql
WHILE 条件
BEGIN
-- 代码块
IF 某条件
BEGIN
BREAK; -- 退出循环
END
ELSE IF 另一条件 -- 使用 ELSE IF 来处理另一个条件
BEGIN
CONTINUE; -- 跳过当前迭代的剩余代码
END
-- 更多代码
END
## TRY...CATCH
```
BEGIN TRY
-- 可能引发错误的代码
END TRY
BEGIN CATCH
RAISEERROR('错误消息', 严重程度, 状态); -- 处理错误的代码
END CATCH
BEGIN CATCH
THROW 51000, '自定义错误消息', 1; -- 处理错误的代码
END CATCH
````
## CASE
````sql
case
when 条件 then 结果
when 条件 then 结果
else 结果
end
````

View File

@ -0,0 +1,51 @@
---
title: 游标
date: 2024-06-06T23:51:28Z
tags: []
---
定位到结果集中的某一行
## 分类
### 静态游标
在操作游标的时候,数据发生变化,游标中数据不变
### 动态游标
在操作数据的时候,数据发送变化,游标中数据改变,默认值
### 键集驱动游标
在操作游标的时候,被标识的列发生改变,游标中的数据改变,其他列改变,游标中数据不变
## 创建
> scroll:滚动游标没有scroll只进
declare 游标名 cursor scroll
-- 限定列
for select 列名 from 表名
## 打开
open 游标名
## 提取数据
fetch frist from 游标名 --第一行
fetch last from 游标名 --最后一行
fetch absolute 行数 from 游标名--第几行
fetch relative 行数 from 游标名--当前下移几行
fetch next from 游标名 --下移一行
fetch prior from 游标名 --上移一行
## 关闭
close 游标名
## 删除
deallocate 游标名

View File

@ -0,0 +1,41 @@
---
title: 索引
date: 2024-06-06T23:51:24Z
tags: []
---
聚集索引和非聚集索引是数据库中两种不同的索引类型。
## 聚集索引Clustered Index
- 聚集索引是按照索引键的顺序物理地重新排列表中的行。
- 一个表只能有一个聚集索引,因为表的行实际上按照聚集索引的顺序存储。
- 聚集索引通常是主键,但不一定要求是主键。
## 非聚集索引Non-Clustered Index
- 非聚集索引是单独存储索引键和指向表中实际数据行的指针。
- 一个表可以有多个非聚集索引。
- 非聚集索引的查询速度取决于索引的键的选择和索引的大小。
在选择索引类型时,需要考虑查询的类型、数据的特点以及性能需求。
## 创建索引
```sql
CREATE [UNIQUE] [CLUSTERED(具体索引) | NONCLUSTERD] INDEX <INDEX NAME> ON 列名(需要索引的列)
```
## 删除索引
```sql
drop index 索引名 on 表名
```
## 使用指定的索引查询
```sql
select * from 列名with(index = 索引名)
where 索引设置的列名 = '需要查询的数据'
```

View File

@ -0,0 +1,47 @@
---
title: 表结构和约束的维护
date: 2024-06-06T23:51:27Z
tags: []
---
## 表结构
### 添加列
alter table 表名 add 新列名 数据类型
### 删除列
alter table 表名 drop column 列名
### 修改列
alter table 表名 alter column 列名 新数据类型
## 维护约束
### 删除约束
alter table 表名 drop constraint 约束名
### 添加约束
#### check
alter table 表名 add constraint 约束名 check(表达式)
#### 主键
alter table 表名 add constraint 约束名 primary key(列名)
#### 唯一
alter table 表名 add constraint 约束名unique(列名)
#### 默认值
alter table 表名 add constraint 约束名 default 默认值 for (列名)
#### 外键
alter table 表名 add constraint 约束名 foreign key(列名) references 关联表名(列名(主键))

View File

@ -0,0 +1,27 @@
---
title: 视图
date: 2024-06-06T23:51:42Z
tags: []
---
## 创建
```sql
create view 视图名
as
查询的语法
go
```
## 删除
```sql
drop view 视图名
```
## 查看
```sql
select * form 视图名
```

View File

@ -0,0 +1,17 @@
---
title: 触发器
date: 2024-06-06T23:51:43Z
tags: []
---
## instead of(事前触发器)
## After(事后触发器)
## 创建触发器
```sql
create triggrt 触发器名字 on 表名 [instead of | After] 操作类型
AS
GO
```

View File

@ -0,0 +1,70 @@
---
title: 运算符
date: 2024-06-06T23:51:47Z
lastmod: 2024-07-01T18:33:14Z
---
* 算数运算符
| 运算符 | 含义 |
| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ |
| [+(加)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/add-transact-sql?view=sql-server-ver16) | 加法 |
| [-(减)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/subtract-transact-sql?view=sql-server-ver16) | 减法 |
| [(乘)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/multiply-transact-sql?view=sql-server-ver16) | 乘法 |
| [/(除)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/divide-transact-sql?view=sql-server-ver16) | 部门 |
| [%(取模)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/modulo-transact-sql?view=sql-server-ver16) | 返回一个除法运算的整数余数。 例如12 % 5 \= 2这是因为 12 除以 5余数为 2。 |
* 逻辑运算符
| 运算符 | 含义 |
| ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| [ALL](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/all-transact-sql?view=sql-server-ver16) | 如果一组的比较都为 TRUE那么就为 TRUE。 |
| [AND](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/and-transact-sql?view=sql-server-ver16) | 如果两个布尔表达式都为 TRUE那么就为 TRUE。 |
| ANY | 如果一组的比较中任何一个为 TRUE那么就为 TRUE。 |
| [BETWEEN](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/between-transact-sql?view=sql-server-ver16) | 如果操作数在某个范围之内,那么就为 TRUE。 |
| [EXISTS](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/exists-transact-sql?view=sql-server-ver16) | 如果子查询包含一些行,那么就为 TRUE。 |
| [IN](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/in-transact-sql?view=sql-server-ver16) | 如果操作数等于表达式列表中的一个,那么就为 TRUE。 |
| [LIKE](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/like-transact-sql?view=sql-server-ver16) | 如果操作数与一种模式相匹配,那么就为 TRUE。 |
| [NOT](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/not-transact-sql?view=sql-server-ver16) | 对任何其他布尔运算符的值取反。 |
| [OR](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/or-transact-sql?view=sql-server-ver16) | 如果两个布尔表达式中的一个为 TRUE那么就为 TRUE。 |
| [SOME](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/some-any-transact-sql?view=sql-server-ver16) | 如果在一组比较中,有些为 TRUE那么就为 TRUE。 |
* 赋值运算符 `=`
* 字符串运算符 `+`
* 比较运算符
| 运算符 | 含义 |
| ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
| [(等于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/equals-transact-sql?view=sql-server-ver16) | 等于 |
| [(大于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/greater-than-transact-sql?view=sql-server-ver16) | 大于 |
| [(小于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/less-than-transact-sql?view=sql-server-ver16) | 小于 |
| [(大于或等于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/greater-than-or-equal-to-transact-sql?view=sql-server-ver16) | 大于等于 |
| [(小于或等于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/less-than-or-equal-to-transact-sql?view=sql-server-ver16) | 小于或等于 |
| [(不等于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/not-equal-to-transact-sql-traditional?view=sql-server-ver16) | 不等于 |
| [!(不等于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/not-equal-to-transact-sql-exclamation?view=sql-server-ver16) | 不等于(非 ISO 标准) |
| [!(不小于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/not-less-than-transact-sql?view=sql-server-ver16) | 不小于(非 ISO 标准) |
| [!(不大于)](https://learn.microsoft.com/zh-cn/sql/t-sql/language-elements/not-greater-than-transact-sql?view=sql-server-ver16) | 不大于(非 ISO 标准) |
* 位运算符
| 运算符 | 位运算 |
| ------------------------------------------------------------ | -------------------------------------------------------------------------- |
| **AND**如果两个位置上的位均为 `1`​,则结果为 `1`​。 | `1010 1010` \= 170`0100 1011` \= 75-----------------`0000 1010` \= 10 |
| **OR**如果两个位置上任意一个位置的位为 `1`​,则结果为 `1`​。 | `1010 1010` \= 170`0100 1011` \= 75-----------------`1110 1011` \= 235 |
| **NOT**对每个位位置上的位值取反。 | `1010 1010` \= 170-----------------`0101 0101` \= 85 |
* 复合运算符
| 运算符 | 操作 |
| ------ | ---------------------------------------------- |
| +\= | 将原始值加上一定的量,并将原始值设置为结果。 |
| -\= | 将原始值减去一定的量,并将原始值设置为结果。 |
| \*\= | 将原始值乘上一定的量,并将原始值设置为结果。 |
| /\= | 将原始值除以一定的量,并将原始值设置为结果。 |
| %\= | 将原始值除以一定的量,并将原始值设置为余数。 |
| &\= | 对原始值执行位与运算,并将原始值设置为结果。 |
| \^\= | 对原始值执行位异或运算,并将原始值设置为结果。 |
| \|\= | 对原始值执行位或运算,并将原始值设置为结果。 |

View File

@ -0,0 +1,22 @@
---
title: 位置参数
date: 2024-06-06T23:51:36Z
tags: []
---
$n
> n代表数字,$1-$9代表第一到第九个参数,十以上需要用大括号把位置值包含类似 ${10}
$*
> 代表命令行中的所有参数(所有参数当作一个整体)
$@
> 代表命令行中的所有参数(所有参数区别对待)
$#
> 代表所有参数的个数

View File

@ -0,0 +1,73 @@
---
title: 变量
date: 2024-06-06T23:51:24Z
tags: []
---
## 引用变量用`$`
## 系统变量
|变量|作用|
| ------| --------------------------------------|
|`$USER`|当前用户的用户名|
|`$HOME`|当前用户的家目录|
|`$PATH`|包含可执行文件的目录列表,用冒号分隔|
|`$PWD`|当前工作目录的路径|
|`$SHELL`|当前正在使用的 Shell 的路径|
|`$?`|表示上一个命令的退出状态|
|`$$`|表示当前Shell进程的PID进程ID|
|`$#`|表示传递给脚本的位置参数的数量|
|`$1, $2, ...`|用于访问传递给脚本的参数|
## 定义变量
直接定义比如
`A=100`
`$100`就可以引用
## 释放变量
unset 变量
## 静态变量
定义变量前加`readonly`
> 不可以被释放
## 定义名称规则
字母,下划线,数字组成,不能以数字开头
等号两侧不能有空格
变量名称不能为大写
### 命令
``=$()
例如
A=`ls -l`等于A=$(ls -l)
### 限定范围
`declare` 在函数内默认声明局部变量,但可用 `-g` 声明全局变量
- **`-r`**​:将变量声明为只读
- **`-i`**​:将变量声明为整数
- **`-a`**​:声明一个索引数组
- **`-A`**​:声明一个关联数组(有时也称为哈希表或字典)
- **`-f`**​:列出所有函数名或者显示指定函数的定义。
- **`-x`**​:通过环境导出变量。这使得在子进程中也能访问这些变量。
- **`-g`**​:在函数内部强制声明全局变量。如果不使用 `-g`​,在函数内部使用 `declare` 默认声明的是局部变量。
`local` 总是声明局部变量。`declare`:脚本

View File

@ -0,0 +1,75 @@
---
title: 操作符
date: 2024-06-06T23:51:45Z
tags: []
---
### 基本和高级条件表达式操作符
|符号|作用|
| ------| -------------------------------------------------------------------------|
|`{}`|代码块不创建新的子shell用于组织一系列的命令|
|`()`|创建一个子shell并在其中执行命令|
|`[[]]`|执行高级条件表达式,支持模式匹配、正则表达式等|
|`$`|用于变量引用、命令替换、算术运算等|
|`\|`|管道运算符,将一个命令的输出作为另一个命令的输入|
|`!`|逻辑非运算符,用于否定一个条件表达式的结果|
|`&&`|逻辑与运算符,如果左边的命令/条件表达式返回真(成功),则执行右边的命令|
|`\|\|`|逻辑或运算符,如果左边的命令/条件表达式返回假(失败),则执行右边的命令|
### 特殊
|符号|作用|
| ------| ----------------------|
|`\|`|在正则中表示或|
|`!`|在引用中表示间距引用|
|`#`|在数组中表示长度|
### 条件操作符
|操作符|描述|
| --------| ------------------------------------------------------------|
|`=`|字符串比较(相等)|
|`!=`|字符串比较(不等)|
|`-lt`|数值比较(小于)|
|`-gt`|数值比较(大于)|
|`-le`|数值比较(小于等于)|
|`-ge`|数值比较(大于等于)|
|`-eq`|数值比较(等于)|
|`-ne`|数值比较(不等于)|
|`=~`|正则表达式匹配|
|`-z`|字符串为空|
|`-n`|字符串不为空|
|`:=`|在参数扩展中使​用,用于在变量未设置或为空时赋予一个默认值|
### 逻辑操作符详解
|操作符|描述|
| --------| ---------------|
|`&&`|逻辑与AND|
|`\|\|`|逻辑或OR|
|`!`|逻辑非NOT|
### 算术操作符详解
|操作符|描述|
| --------| --------|
|`+`|加法|
|`-`|减法|
|`*`|乘法|
|`/`|除法|
|`%`|取模|
|`**`|幂运算|
### 文件测试操作符
|操作符|描述|示例|
| --------| ----------------------| ------|
|`-f`|文件存在且为普通文件|`if [[ -f $file ]]`|
|`-d`|目录存在|`if [[ -d $directory ]]`|
|`-e`|文件存在|`if [[ -e $filepath ]]`|
|`-r`|文件存在且可读|`if [[ -r $file ]]`|
|`-w`|文件存在且可写|`if [[ -w $file ]]`|
|`-x`|文件存在且可执行|`if [[ -x $file ]]`|
|`-s`|文件存在且非空|`if [[ -s $file ]]`|

View File

@ -0,0 +1,75 @@
---
title: 流程控制
date: 2024-06-06T23:51:36Z
tags: []
---
## if
```shell
if [ condition ];
then
# 在条件为真时执行的命令
elif [ condition2 ];
then
# 在第一个条件为假,但第二个条件为真时执行的命令
else
# 在所有条件都为假时执行的命令
fi
```
## case
```shell
case <expression> in
"<pattern1>")
<command1>
;;
"<pattern2>")
<command2>
;;
"<pattern3>")
<command3>
;;
*)
<default_command>
;;
esac
```
case关键字表示开始一个case语句块。
expression是需要匹配的表达式或变量。
pattern1, pattern2, pattern3等是可能的匹配模式。
command1, command2, command3是与每个模式匹配时要执行的命令。
*)是通配符,用于匹配所有不符合前面模式的情况。
default_command是当没有匹配模式时执行的命令。
;;用于标识每个模式下命令的结束。
## for循环
### 第一种
```shell
for 变量名 in 列表
do
# 执行操作
done
```
### 第二种
```shell
for((初始化;判断;循环))
do
# 执行操作
done
```
## while
```python
while [条件控制式]
do
# 执行操作
done
```

View File

@ -0,0 +1,20 @@
---
title: 环境变量
date: 2024-06-06T23:51:42Z
tags: []
---
## 将Shell变量输出为环境变量
`export 变量名=变量值`
## 将修改后的配置信息立即生效
`source 配置文件`
## 查询环境变量的值
`env`

View File

@ -0,0 +1,30 @@
---
title: 自义定函数
date: 2024-06-06T23:51:42Z
tags: []
---
## 方法一:使用 function 关键字
```shell
function function_name {
# 函数体
# 可以包含多行命令
echo "This is a custom function."
}
```
## 方法二:直接定义函数名称
```shell
function_name() {
# 函数体
# 可以包含多行命令
echo "This is a custom function."
}
```
## 调用函数
function_name

View File

@ -0,0 +1,26 @@
---
title: 要求
date: 2024-06-06T23:51:38Z
tags: []
---
## 脚本要求
脚本以`#!/bin/bash`开头
用来指定哪一个shell进行解析,脚本需要可执行权限
## 脚本后缀
通用sh(不限制后缀)
## 执行方法
### 1.直接执行
> 赋可执行权限
> 输入程序相对路径或绝对路径
### 2.用bash
bash+绝对路径或相对路劲

View File

@ -0,0 +1,13 @@
---
title: 读取控制台
date: 2024-06-06T23:51:47Z
tags: []
---
```shell
read 选项 参数
-p 指定读取值的提示符
-t 指定读取的等待时间
```

View File

@ -0,0 +1,11 @@
---
title: 预定义量
date: 2024-06-06T23:51:47Z
tags: []
---
```shell
:这是当前 shell 进程的 PID进程ID
$!:这是最后一个后台进程的 PID。
$?:这是最后一个执行的命令的退出状态。成功的命令将返回 0而失败的命令将返回非零值。
```

View File

@ -0,0 +1,128 @@
---
title: DOM
date: 2024-07-21T18:29:25Z
tags: []
---
### get DOM object
#### CSS selector
1. select for first matching element
```javascript
document.querySelector('<CSS selector>')
```
2. select for all matching element
```javascript
document.querySelectorAll('<CSS selector>')
```
> there are pseudo array
>
> have length and index
>
> not have function such as push(),pop()
>
#### Other method
1. select for matching ID
```javascript
document.getElementById('<ID name>')
```
2. select for all matching Tag
```javascript
document.getElementByTagName('<element name>')
```
3. select for all matching class
```javascript
document.getElementClassName('<class name>')
```
### access
1. content
* ```javascript
<DOM>.innerText='<text>'
```
> only recognize text,do not parse tags
>
* ```javascript
<DOM>.innerHTML='<html>'
```
2. attribute
```javascript
<DOM>.<attribute> = '<value>'
```
3. style
> multiple words named with small humps
>
> `background-color` use `backgroundColor`
>
```javascript
<DOM>.style.<style> ='<value>'
```
4. class
```javascript
<element>.className = '<class name>'
```
5. classlist
* add
```javascript
<element>.classList.add('<class name>')
```
* remove
```javascript
<element>.classList.remove('<class name>')
```
* swich
```javascript
<element>.classList.toggle('<class name>')
```
* find
```javascript
<element>.classList.contains('<class name>')
```
### custom attribute
#### name
```javascript
data-<name>
```
#### dataset
```javascript
<DOM>.dataset.<name>
```

View File

@ -0,0 +1,193 @@
---
title: SE6
date: 2024-09-19T10:31:39Z
tags: []
---
### object
#### closure
closure=inner function+external function variable
```javascript
function f1() {
let i=0
function f2() {
i++
console.log(i)
}
return f2
}
const f=f1()
```
#### construct object
```javascript
function Pig(name,age,gender){
this.name = name
this.age = age
this.gender = gender
}
const pappe = new Pig('佩奇',6,'女')
```
Instance members: methods and properties on property objects
Static members: static properties and methods
##### convention
1. can only start with a capital letter
2. can only be executed using the 'new' operator
##### prototype
```javascript
function Pig(name,age){
this.name = name
this.age = age
}
Pig.prototype.sing=function(){}
const pappe = new Pig('佩奇',6)
```
1. each cpmstructor has a prototype property
2. This object mounting function will not create functions on the prototype multiple times during object instantiation, saving memory
##### constructor
1. Refers back to the constructor created
##### object prototype
`__proto__` =`[[proto]]`
##### inherit
```javascript
function Person(){
this.gender=1
}
function A(uname,age){
this.uname = uname;
this.age = age;
}
A.prototype=new Person()
A.prototype.constructor=A
```
##### Prototype Chain
Inheritance based on prototype objects associates different constructor objects together
##### instanceof
You can use `instanceof` to check if the prototype property of the constructor appears on the prototype chain of an instance object
### function
#### parmeter
* dynamics parmeter
```javascript
arguments
```
> The paseudo array includes all the parameters passed in
>
* remaining parameters
```javascript
function f(...<parameter name>){
<parameter name> //array
}
```
#### Arrow function
```javascript
const <function name> = () =>{}
```
##### rule
1. If the function has only one line, it can be written on one line, {} can be omitted, and there is no need to write a return to have a return value. If the return dictionary needs to be written, () needs to be added
2. if there is only parameter,()can beomitted
##### this
the arrow function does not have this,it wil only use this from the higer-level scope chain
#### deconstruction
```javascript
{name:newname,age:newage}={name:lsy;age:19}
```
1. The variable names for deconstruction need to be consistent with those in the object
2. Rename: The previous name is the opposite name, followed by the new name that needs to be changed. If not changed, do not use write
##### multistage
```javascript
obj={
a:1
b:{
b1:2
b2:3
}
c:4
}
{a,b:{b1,b2},c}=obj
```
### array
#### Expand operator
```javascript
...<array>
```
#### deconstruction array
```javascript
[a,b]=[1,2]
```
1. Assign the variables on the left to the variables on the right in sequence
2. Support multidimensional arrays
### copy
#### shallow copy
If it is a complex data type, only copy the address
1. object
```javascript
Object.assign(<new>,<old>)
```
2. array
```javascript
Array.prototype.concat()
```
#### deep copy
1. recursion
2. json
3. Library functions
### performance optimization
||explain|
| ----------| --------------------------------------------------------------------------------|
|debounce|Frequent triggering of events within a unit time, only executing the last time|
|throttle|Frequent triggering of events per unit time, only executed once|

Some files were not shown because too many files have changed in this diff Show More