参考教程: https://www.ruanyifeng.com/blog/2019/10/tmux.html
  • tmux使会话与窗口解绑,一个窗口source .bashrc更新了,另一个窗口可能没有
  • ctrl+b 前缀键
    % 分成左右两栏
    " 分成上下两栏
    up 选择上边的窗口
    [ 查看历史记录

窗口

  • <C-d> 删除窗口
  • <C-b> z 最大化/最小化一个窗口
  • <C-b> c 创建一个新的窗口,使用 <C-d>关闭
  • <C-b> N 跳转到第 N 个窗口,注意每个窗口都是有编号的
  • <C-b> p 切换到前一个窗口
  • <C-b> n 切换到下一个窗口
  • <C-b> w 列出当前所有窗口

ThinkPHP 6.0文档

Composer安装

composer create-project topthink/think tp
# tp是应用根目录名称,可以修改

访问

  1. localhost/tp/public/ 首页
  2. 首页/index.php/index controller下的Index类
  3. 首页/index.php/index/?s=hello/value 调用controller下Index类的hello方法,并传入参数value(URL兼容模式)
  4. 首页/index.php/hello_world 调用controller下HelloWorld类
  5. 首页/index.php/group.blog 调用controller/group下的Blog类

输出数组

$data = array('a' => 1, 'b' => 2, 'c' => 3);
return json($data);

开启调试

在应用根目录下新建.env文件

APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn

数据库

$user = Db::connect('mysql')->table('tp_user')->select();
// 确定数据库和数据表
return json($user);

// 或者有Model User
$user = User::select();

Model

<?php
namespace app\model;

use think\Model;

class User extends Model
{
protected $connection = 'databaseName';
}

查询

Db::getLastSql();可以看上一条sql语句

一条数据

Db::table('tableName')->where('fieldName', fieldValue)->find(); // 查询不到返回null
// findFail在查询不到时抛出异常;findEmpty在查询不到时返回空数组

整个表(数据集)

Db::table('tableName')->select();
Db::name('tableNameWithoutPrefix')->select();

某条记录的字段值

Db::name('tableName')->where('id', $id)->value('field');

一列(键值对)

Db::name('name')->column('fieldAsValue', 'fieldAsKey');

插入

一条数据

// strict 表示强行插入
Db::name('user')->strict(false)->insert($data);
// 有相同主键则替换
Db::name('user')->replace()->insert($data);
// 根据主键自动判断
Db::name('user')->save($data);

多条数据

Db::name('user')->insertAll($data);

修改

Db::name('user')->where('id', 232)
->update([
// 下面是SQL表达式
'email' => Db::raw('UPPER(email)'),
'price' => Db::raw('price + 1'),
'status'=> Db::raw('status - 2')
]);

删除

// 根据主键删除多条数据
Db::name('user')->delete([48,49,50]);
// 匹配删除
Db::name('user')->where('id', 47)->delete();
// 全部删除
Db::name('user')->delete(true);

模板

composer require topthink/think-view

Task Scheduler

WIN+R, taskschd.msc
在这里可以设置定时任务、登录任务。
有些软件的开机自启动就设置在这里。比起组策略有更多的可选项(延迟启动,网络和电源要求等)

Group Policy Editor

WIN+R, gpedit.msc
在这里可以设置一些开关机时执行的任务

Computer Configuration -> Windows settings -> Scripts -> Shutdown -> Properties -> Add

静默运行脚本

Task Scheduler没有办法隐藏窗口
在Task Scheduler运行该vbs脚本,目标脚本路径作为参数即可实现静默运行。

' minRun.vbs
' Run minRun.vbs Task Scheduler在可选参数提供实际脚本地址
' 检查是否提供了批处理文件路径参数
If WScript.Arguments.Count = 0 Then
WScript.Echo "Error: No batch file path provided."
WScript.Quit 1
End If

' 获取批处理文件路径参数
Dim batchFilePath
batchFilePath = WScript.Arguments(0)

' 检查批处理文件是否存在
If Not FileExists(batchFilePath) Then
WScript.Echo "Error: Batch file not found at " & batchFilePath
WScript.Quit 1
End If

' 创建 WScript.Shell 对象
Set oShell = CreateObject("Wscript.Shell")

' 执行批处理文件
' 使用 0 表示不等待批处理文件执行完成
' 使用 True 表示以同步方式运行(等待批处理执行完成)
oShell.Run batchFilePath, 0, True

' 清理
Set oShell = Nothing

' 检查文件是否存在的辅助函数
Function FileExists(filePath)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
FileExists = fso.FileExists(filePath)
End Function

1.0 编辑

% 表示注释
; 表示不显示结果,只执行语句
clear 清除内存变量
clc 清除全部
pretty 用分式表示公式
simplify 化简命令
exp(x) 指数, e^x
log2(x) 以2为底数的对数
阅读全文 »

全键盘操作指南

终端操作

  • code <Folder> 打开工作区;相当于 CTRL+K, CTRL+O
  • code -diff file1 file2 对比两个文件(颜色标注)
  • code <File> 打开文件
  • CTRL + ←/→ 逐词跳转
  • CTRL+K 清理终端
  • CTRL+P: >Tasks 新建任务,用 CTRL+P: >run 运行;相当于 make

Panel操作

CTRL+P 打开Panel

  • @ 符号:寻找symbol,如函数名、变量名;相当于CRTL+SHIFT+.
  • # <String> 符号:全局搜索字符串
  • >join line 选中多行合并为一行

编辑区操作

  • CTRL+G <Line_Number> 跳到指定行
  • CTRL + ←/→ 逐词跳转;相当于vim的 w
  • ALT + ↑/↓ 移动某行代码
  • ALT + SHIGT+ ↑/↓ 复制某行代码
  • CTRL+P: >Snippets 创建代码模板
  • SHIFT+ALT+F12 找到某个命名的全部引用(而不是简单的搜索)
  • SHIFT+ALT+F 格式化代码,相当于 >Format Document

设置 settings.json

显示.gitignore屏蔽文件

关闭 Search: Use Ignore Files,或

"search.useIgnoreFiles": false

自定义终端

"terminal.integrated.defaultProfile.windows": "MSYS2-UCRT64",
"terminal.integrated.profiles.windows": {
"MSYS2-UCRT64": {
"path": "D:\\your\\path\\MSYS2\\msys2_shell.cmd",
"args": [
"-defterm",
"-no-start",
"-here",
"-ucrt64"]
}
},

Chapter2 指令:计算机的语言

本章将介绍MIPS汇编语言指令。

三条设计原则

  1. 简单源于规整 Simplicity favors regularity.
  2. 越小越快 Smaller is faster.
  3. 优秀的设计需要适宜的折中方案 Good design demands good compromises.

2.2 硬件的操作与操作数

规整

add a, b, c // a = b + c MIPS汇编语言使用这样的固定记法。
每条MIPS算术指令只执行1个操作,仅有3个变量。

操作数必须来自寄存器

变量f、g、h、i、j依次分配给$s0~$s4,编译下面的C语句

f = (g + h) - (i + j);
---
add $t0, $s1, $s2 // t0 = s1 + s2
add $t1, $s3, $s4
sub $s0, $t0, $t1 // s0 = t0 + t1

数据传输

只有少量数据存在寄存器中,因此需要在存储器和寄存器间传输数据

A的基址是存在$s3,编译下面的C语句

A[12] = h + A[8]
---
lw $t0, 32($s3) // 先读数,再相加;32为偏移量,8*4byte
add $t0, $s2, $t0
sw $t0, 48($s3) // 存数

立即数

addi $t0, $t1, 4 // t0 = t1 + 4;无需读取4,作为立即数相加
subi $t0, $t1, 4
阅读全文 »

保护文件

防护中心 - 高级防护 - 自定义防护 - 锁定文件读取、创建、修改、删除权限

Flowchart

基本语法

flowchart LR/TD
id[Content]
item[Line1
Line2
Line3]
id --> item
flowchart TD
id[Content]
item[Line1
Line2
Line3]
id --> item
flowchart TD
item{Relationship}
id(Entity)

id -- Text --> item
flowchart TD;
item{Relationship};
id(Entity);

id -- Text --> item;

说明:%%是注释%%

程序设计

  1. 首先写<view class="class_name"></view>来结构化设计;每个class对应一个css样式
<view class="container">
<image class="avatar" src="../images/avatar/avatar-1.jpg"></image>
<text class="motto">Welcome, Orange Can</text>
<view class="journey-container">
<text class="journey">Start your journey of miniprogram</text>
</view>
</view>
  1. css中放样式信息,写法如下;全局样式可以放app.css
/* 示范写法 */
.class_name{
attribute: rpx;
location_attribute: center;
}
/* 一般网页可以这样布局 */
.container{ /* 最外层的<view> */
display: flex; /* 布局方式 */
flex-direction: column; /* 列,从上到下;reverse是从下到上;可选row */
align-items: center; /* 居中 */
}
阅读全文 »

9.0 代码风格

  1. 函数最好保持简单,只实现一种功能 (5-10个变量, 4个缩进以内)
  2. 函数命名包括动词,如get_current
  3. 使用下划线、详细地命名

第一阶段总结

(Kimi AI生成)在C语言中,源文件中的语法元素和规则如下:

  1. 源文件中所有函数定义之外可以出现的语法元素

    • 预处理指令(如#include, #define, #ifdef等)
    • 全局变量声明
    • 类型定义(如typedef
    • 函数原型声明(函数声明)
    • 静态变量声明
    • 静态函数声明
    • 枚举类型声明
    • 结构体和联合体声明
    • 宏定义
  2. 函数定义之中可以出现的语法元素

    • 局部变量声明
    • 语句(如赋值语句、控制流语句等)
    • 函数调用
    • 表达式
    • 语句块(由花括号{}包围的语句集合)
  3. 语句的种类

    • 表达式语句
    • 复合语句(由花括号{}包围的语句集合)
    • 空语句(由分号;表示)
    • 标签语句(由标签标识符和冒号:组成)
    • 选择语句(if, switch
    • 迭代语句(while, do-while, for
    • 跳转语句(break, continue, goto, return
  4. 需要遵循标识符命名规则的语法元素

    • 变量名
    • 函数名
    • 类型名
    • 枚举常量名
    • 结构体和联合体成员名
    • 宏名
  5. 表达式由哪些语法元素组成

    • 常量
    • 变量
    • 函数调用
    • 算术运算符和表达式
    • 逻辑运算符和表达式
    • 条件运算符和表达式
    • 逗号运算符和表达式
    • 位运算符和表达式
    • 赋值运算符和表达式
    • 地址运算符和表达式
    • 指针运算符和表达式
  6. 运算符的左值、整型操作数和Side Effect

    • 取操作数的左值的运算符:赋值运算符(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=
    • 操作数必须是整型的运算符:位移运算符(<<, >>
    • 有Side Effect的运算符:赋值运算符,自增/自减运算符(++, --),递增/递减运算符(++, --),取地址运算符(&),解引用运算符(*
  7. 左值和右值

    • 可以做左值的表达式:变量、数组元素、解引用指针、结构体成员、联合体成员
    • 只能做右值的表达式:字面量、函数调用、算术运算、逻辑运算、条件运算、逗号运算等
  8. 常量表达式和整数常量表达式

    • 必须用常量表达式的地方:数组大小、枚举常量、类型定义、宏定义中的常量参数等
    • 必须用整数常量表达式的地方:数组大小、枚举常量等

请注意,C语言的语法规则可能会随着不同的编译器和标准(如C89, C90, C99, C11等)有所不同。上述信息基于C语言的一般规则。

0%