王培顺的博客&WangPeishun’s Blog

wangpeishun 发布的文章

以下是一份详细的 Python Reflex 使用手册,包含核心概念、组件使用和代码示例:

Python Reflex 全栈开发手册

目录

  1. 框架简介
  2. 环境配置
  3. 项目结构
  4. 核心概念
  5. 组件系统
  6. 状态管理
  7. 路由系统
  8. 样式处理
  9. API 集成
  10. 部署指南

框架简介

Reflex 是一个基于 React 的纯 Python 全栈框架,特点:

  • 实时前端更新
  • 自动处理客户端-服务器通信
  • 支持响应式布局
  • 内置组件库
  • 基于 FastAPI 的后端

环境配置

安装要求

  • Python 3.7+
  • Node.js 16+
# 创建虚拟环境
python -m venv reflex_env
source reflex_env/bin/activate  # Linux/Mac
reflex_env\Scripts\activate    # Windows

# 安装框架
pip install reflex

项目结构

my_app/
├── my_app/             # 主包
│   ├── __init__.py     # 项目初始化
│   └── my_app.py       # 主应用文件
├── assets/             # 静态资源
├── .env                # 环境变量
└── requirements.txt    # 依赖列表

核心概念

基本应用结构

import reflex as rx

class State(rx.State):
    """应用状态定义"""

def index():
    """页面组件定义"""
    return rx.container(
        rx.heading("欢迎使用Reflex"),
        rx.text("当前状态:", State.text_var)
    )

app = rx.App()
app.add_page(index, route="/")  # 注册页面
app.compile()  # 编译应用

组件系统

基础组件使用

def form_example():
    return rx.vstack(
        rx.input(
            placeholder="输入姓名",
            on_change=State.set_name,  # 绑定状态变更
            width="300px"
        ),
        rx.button(
            "提交",
            on_click=State.handle_submit,
            color_scheme="blue"
        ),
        rx.divider(),
        rx.text("您输入的是:", State.name)
    )

布局组件

def responsive_layout():
    return rx.responsive_grid(
        rx.box("左侧内容", bg="blue.100", p=4, col_span=2),
        rx.box("右侧内容", bg="green.100", p=4),
        columns=[1, 2, 3],  # 响应式列数
        spacing="4"
    )

状态管理

基础状态类

class CounterState(rx.State):
    count: int = 0  # 自动响应式变量

    def increment(self):
        self.count += 1

    def decrement(self):
        self.count -= 1

def counter():
    return rx.hstack(
        rx.button("-", on_click=CounterState.decrement),
        rx.text(CounterState.count),
        rx.button("+", on_click=CounterState.increment),
        align="center"
    )

复杂状态管理

class FormState(rx.State):
    username: str = ""
    password: str = ""
    submitted: bool = False

    def handle_submit(self):
        self.submitted = True
        yield [rx.set_value("password", "")]  # 清除密码字段

    @rx.var
    def form_valid(self) -> bool:
        return len(self.username) > 3 and len(self.password) > 6

路由系统

多页面配置

def about_page():
    return rx.box(rx.heading("关于我们"), rx.link("返回首页", href="/"))

app = rx.App()
app.add_page(index, route="/")
app.add_page(about_page, route="/about")

动态路由

class PostState(rx.State):
    @rx.var
    def post_id(self) -> str:
        return self.router.page.params.get("id", "0")

def post_detail():
    return rx.vstack(
        rx.heading(f"文章ID:{PostState.post_id}"),
        rx.text("动态路由参数示例")
    )

app.add_page(
    post_detail,
    route="/posts/[id]",
    on_load=PostState.load_post  # 页面加载时触发
)

样式处理

Tailwind CSS 集成

rx.box(
    "样式示例",
    class_name="p-4 bg-blue-500 rounded-lg shadow-lg",
    _hover={"transform": "scale(1.05)"}
)

全局样式配置

app = rx.App(
    style={
        "font_family": "Inter",
        "theme": rx.theme(
            appearance="dark",  # 暗黑模式
            has_backdrop=True
        )
    }
)

API 集成

后端路由定义

import requests

class APICallState(rx.State):
    data: dict = {}
    loading: bool = False

    async def fetch_data(self):
        self.loading = True
        yield
        response = requests.get("https://api.example.com/data")
        self.data = response.json()
        self.loading = False

def api_example():
    return rx.cond(
        APICallState.loading,
        rx.spinner(),
        rx.json(data=APICallState.data)
    )

部署指南

生产环境配置

# 安装生产依赖
pip install gunicorn uvicorn

# 设置环境变量
export REFLEX_ENV=production

Docker 部署

FROM python:3.9-slim

WORKDIR /app
COPY . .

RUN pip install --no-cache-dir -r requirements.txt
CMD ["reflex", "run", "--host", "0.0.0.0", "--port", "80"]

完整示例:待办事项应用

class TodoState(rx.State):
    items: list[str] = ["学习Reflex"]
    new_item: str = ""

    def add_item(self):
        if self.new_item.strip():
            self.items.append(self.new_item)
            self.new_item = ""

    def delete_item(self, item: str):
        self.items.remove(item)

def todo_list():
    return rx.container(
        rx.heading("待办事项"),
        rx.input(
            value=TodoState.new_item,
            on_change=TodoState.set_new_item,
            placeholder="添加新事项"
        ),
        rx.button("添加", on_click=TodoState.add_item),
        rx.vstack(
            rx.foreach(
                TodoState.items,
                lambda item: rx.hstack(
                    rx.text(item),
                    rx.button(
                        "删除",
                        on_click=lambda: TodoState.delete_item(item)
                    )
                )
            ),
            spacing="2"
        ),
        max_width="600px",
        padding="2rem"
    )

最佳实践

  1. 使用小型状态类管理不同功能模块
  2. 优先使用内置组件保持一致性
  3. 合理使用 rx.foreach 处理列表数据
  4. 通过 @rx.var 创建计算属性
  5. 使用 rx.cond 处理条件渲染
  6. 为复杂组件创建自定义组件
  7. 定期运行 reflex db migrate 管理数据库变更

常见问题

Q: 如何调试状态变更?
A: 在开发模式下运行时,访问 /state 查看当前状态

Q: 如何自定义404页面?
A: 添加 app.add_page(not_found, route="/404")

Q: 如何集成第三方React组件?
A: 使用 rx.chakra 命名空间或创建自定义组件


本手册覆盖了Reflex的核心功能,建议通过官方文档和示例项目深入学习更高级的用法。

以下是 MySQL 命令行操作的常用命令及示例说明,覆盖了数据库管理、表操作、权限控制等核心场景,按功能分类整理,供大家参考:


一、连接与退出

  1. 连接 MySQL 服务器

    mysql -u 用户名 -p

    示例

    mysql -u root -p  # -u 指定用户名为 root,-p 表示需要输入密码
  2. 退出 MySQL

    exit;  -- 退出 MySQL 命令行(也可用 \q 或 Ctrl+D)

二、数据库管理

  1. 显示所有数据库

    SHOW DATABASES;  -- 列出当前 MySQL 服务器中所有数据库
  2. 创建数据库

    CREATE DATABASE 数据库名;  -- 创建一个新数据库

    示例

    CREATE DATABASE testdb;  -- 创建名为 testdb 的数据库
  3. 选择数据库

    USE 数据库名;  -- 切换操作上下文到指定数据库

    示例

    USE testdb;  -- 后续操作默认在 testdb 数据库执行
  4. 删除数据库

    DROP DATABASE 数据库名;  -- 彻底删除数据库(谨慎操作!)

    示例

    DROP DATABASE olddb;  -- 删除名为 olddb 的数据库

三、表操作

  1. 显示当前数据库所有表

    SHOW TABLES;  -- 列出当前数据库中的所有表
  2. 创建表

    CREATE TABLE 表名 (列定义);  -- 定义表结构(列名、类型、约束等)

    示例

    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,  -- 自增主键,唯一标识每行
      name VARCHAR(50),                  -- 用户名,最大 50 字符
      email VARCHAR(100)                 -- 邮箱,最大 100 字符
    );
  3. 查看表结构

    DESC 表名;  -- 显示表的列名、类型、是否允许 NULL 等详细信息

    示例

    DESC users;  -- 查看 users 表的结构
  4. 修改表结构(添加列)

    ALTER TABLE 表名 ADD 列名 数据类型;  -- 向表中添加新列

    示例

    ALTER TABLE users ADD age INT;  -- 添加 age 列,类型为整数
  5. 删除表

    DROP TABLE 表名;  -- 彻底删除表及其数据(不可恢复!)

    示例

    DROP TABLE temp_users;  -- 删除名为 temp_users 的表

四、数据操作(CRUD)

  1. 插入数据

    INSERT INTO 表名 (列1, 列2) VALUES (值1, 值2);  -- 插入一行数据

    示例

    INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); 
    -- 插入 name 为 Alice、email 为 alice@example.com 的记录
  2. 查询数据

    SELECT 列1, 列2 FROM 表名 [WHERE 条件];  -- 查询满足条件的数据

    示例

    SELECT * FROM users WHERE name LIKE 'A%';  
    -- 查询所有 name 以 A 开头的用户(* 表示返回所有列)
  3. 更新数据

    UPDATE 表名 SET 列名=新值 [WHERE 条件];  -- 修改符合条件的记录

    示例

    UPDATE users SET email='bob@new.com' WHERE id=2;  
    -- 将 id=2 的用户的 email 更新为 bob@new.com
  4. 删除数据

    DELETE FROM 表名 [WHERE 条件];  -- 删除符合条件的记录(无 WHERE 会清空表!)

    示例

    DELETE FROM users WHERE age < 18;  -- 删除所有 age 小于 18 的用户

五、索引与约束

  1. 创建索引

    CREATE INDEX 索引名 ON 表名 (列名);  -- 为列创建索引,加速查询

    示例

    CREATE INDEX idx_email ON users (email);  -- 为 email 列创建索引
  2. 添加主键约束

    ALTER TABLE 表名 ADD PRIMARY KEY (列名);  -- 将列设为主键(唯一且非空)

    示例

    ALTER TABLE orders ADD PRIMARY KEY (order_id);  -- 设置 order_id 为主键

六、用户与权限

  1. 创建用户

    CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';  -- 创建新用户并设置密码

    示例

    CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456';  
    -- 创建用户 dev,仅允许从本地登录,密码为 123456
  2. 授权

    GRANT 权限 ON 数据库.表 TO '用户'@'主机';  -- 授予用户特定权限

    示例

    GRANT SELECT, INSERT ON testdb.* TO 'dev'@'localhost';  
    -- 允许 dev 用户在 testdb 所有表上执行 SELECT 和 INSERT
  3. 撤销权限

    REVOKE 权限 ON 数据库.表 FROM '用户'@'主机';  -- 撤销用户权限

    示例

    REVOKE DELETE ON testdb.* FROM 'dev'@'localhost';  
    -- 禁止 dev 用户在 testdb 所有表上执行 DELETE
  4. 刷新权限

    FLUSH PRIVILEGES;  -- 使权限修改立即生效(授权或撤销后建议执行)

七、备份与恢复

  1. 导出数据库(命令行)

    mysqldump -u 用户名 -p 数据库名 > 文件名.sql  -- 将数据库导出为 SQL 文件

    示例

    mysqldump -u root -p testdb > backup.sql  
    # 导出 testdb 数据库到 backup.sql 文件(需输入密码)
  2. 导入 SQL 文件

    SOURCE 文件路径;  -- 执行 SQL 文件中的命令(用于恢复数据)

    示例

    SOURCE /home/user/backup.sql;  -- 导入 backup.sql 文件到当前数据库

八、事务管理

  1. 开启事务

    START TRANSACTION;  -- 开始一个事务(后续操作可回滚)
  2. 提交事务

    COMMIT;  -- 提交事务,确认所有修改
  3. 回滚事务

    ROLLBACK;  -- 撤销事务内的所有未提交操作

    示例

    START TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE id=1;  -- 账户1扣款100
    UPDATE accounts SET balance = balance + 100 WHERE id=2;  -- 账户2收款100
    COMMIT;  -- 若两条更新均成功,提交事务(否则用 ROLLBACK 回滚)

九、其他实用命令

  1. 显示服务器状态

    SHOW STATUS;  -- 查看 MySQL 服务器运行状态(连接数、查询次数等)
  2. 查看正在执行的进程

    SHOW PROCESSLIST;  -- 显示当前所有客户端连接及执行的 SQL
  3. 查看建表语句

    SHOW CREATE TABLE 表名;  -- 显示创建表的完整 SQL 语句
  4. 优化表(碎片整理)

    OPTIMIZE TABLE 表名;  -- 整理表碎片,回收未使用空间(适用于频繁修改的表)

十、高级功能

  1. 存储过程

    DELIMITER $$  -- 修改分隔符为 $$(避免与 SQL 语句中的 ; 冲突)
    CREATE PROCEDURE 存储过程名()
    BEGIN
      -- SQL 逻辑
    END $$
    DELIMITER ;   -- 恢复分隔符为 ;

    示例

    DELIMITER $$
    CREATE PROCEDURE GetUsers()
    BEGIN
      SELECT * FROM users;  -- 定义存储过程:查询所有用户
    END $$
    DELIMITER ;
    -- 调用存储过程:CALL GetUsers();

以下是一份详细的Docker使用手册目录及核心内容概要,涵盖从基础到进阶的实践指南,供您学习参考。


目录

  1. Docker 简介
  2. 安装与配置
  3. 核心概念
  4. 基础命令操作
  5. 镜像管理与Dockerfile
  6. 容器网络
  7. 数据持久化
  8. Docker Compose
  9. Docker Swarm 集群
  10. 安全与最佳实践
  11. 常见问题与调试

1. Docker 简介

  • 容器化技术:轻量级虚拟化,共享内核,隔离进程和资源。
  • Docker 优势

    • 快速部署
    • 环境一致性
    • 资源高效利用
    • 易于扩展
  • 核心组件

    • Docker Daemon(守护进程)
    • Docker Client(客户端)
    • Images(镜像)
    • Containers(容器)
    • Registry(镜像仓库,如Docker Hub)

2. 安装与配置

Ubuntu/CentOS 安装

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# 添加仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# 安装Docker Engine
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
sudo docker run hello-world

Windows/macOS

配置镜像加速器(国内用户)

// 编辑 /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com", "https://mirror.ccs.tencentyun.com"]
}

重启服务:sudo systemctl restart docker


3. 核心概念

  • 镜像 (Image):只读模板,包含运行环境和应用程序。
  • 容器 (Container):镜像的运行实例,具有可写层。
  • 仓库 (Registry):存储和分发镜像的服务(如Docker Hub、阿里云镜像仓库)。

4. 基础命令操作

镜像管理

docker pull ubuntu:20.04        # 拉取镜像
docker images                   # 查看本地镜像
docker rmi <image_id>           # 删除镜像

容器操作

docker run -d -p 80:80 --name mynginx nginx   # 后台运行容器并映射端口
docker ps -a                                  # 查看所有容器
docker start/stop/restart <container_id>      # 启停容器
docker exec -it <container_id> /bin/bash      # 进入容器终端
docker logs <container_id>                    # 查看日志
docker rm <container_id>                      # 删除容器

5. 镜像管理与Dockerfile

Dockerfile 示例

FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

构建镜像

docker build -t myapp:v1 .

推送镜像到仓库

docker tag myapp:v1 username/myapp:v1
docker push username/myapp:v1

6. 容器网络

  • 网络模式bridge(默认)、hostnone、自定义网络。
  • 创建自定义网络

    docker network create my_network
    docker run --network=my_network --name app1 myapp

7. 数据持久化

Volume 数据卷

docker volume create my_volume
docker run -v my_volume:/data --name db mysql

Bind Mount 目录挂载

docker run -v /host/path:/container/path nginx

8. Docker Compose

docker-compose.yml 示例

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

常用命令

docker-compose up -d    # 启动服务
docker-compose down     # 停止并删除容器
docker-compose logs     # 查看日志

9. Docker Swarm 集群

docker swarm init --advertise-addr <MANAGER_IP>
docker service create --replicas 3 -p 80:80 --name web nginx
docker service scale web=5

10. 安全与最佳实践

  • 最小化镜像:使用Alpine基础镜像,多阶段构建。
  • 非root用户运行容器

    RUN useradd -m myuser
    USER myuser
  • 定期更新镜像:修复安全漏洞。
  • 限制资源

    docker run -m 512m --cpus 1.5 myapp

11. 常见问题

容器无法启动

docker inspect <container_id>   # 查看详细配置
docker logs <container_id>      # 检查日志

清理无用资源

docker system prune -a          # 删除停止的容器、未使用的镜像和网络

附录


以下是一份详细的Nginx使用手册大纲,内容涵盖基础配置、高级功能及常见场景,供学习参考!


Nginx 使用手册

目录

  1. Nginx 简介
  2. 安装与卸载
  3. 基础配置与命令
  4. 核心配置详解
  5. 虚拟主机配置
  6. 反向代理与负载均衡
  7. SSL/TLS 配置
  8. 安全加固
  9. 高级配置(缓存、Gzip、WebSocket)
  10. 日志管理
  11. 常见问题排查
  12. 附录:常用模块与资源

1. Nginx 简介

  • 什么是Nginx
    轻量级、高性能的Web服务器/反向代理服务器,支持高并发、低内存消耗。
  • 核心特性

    • 处理静态资源
    • 反向代理与负载均衡
    • HTTP/HTTPS、HTTP/2支持
    • 模块化架构(如ngx_http_rewrite_module

2. 安装与卸载

2.1 安装

  • Ubuntu/Debian

    sudo apt update
    sudo apt install nginx
  • CentOS/RHEL

    sudo yum install epel-release
    sudo yum install nginx
  • macOS (Homebrew)

    brew install nginx

2.2 卸载

  • Ubuntu/Debian

    sudo apt purge nginx nginx-common
  • CentOS/RHEL

    sudo yum remove nginx

3. 基础配置与命令

3.1 配置文件结构

  • 主配置文件
    /etc/nginx/nginx.conf
  • 配置块类型

    • main:全局配置(进程数、用户等)
    • events:连接处理参数
    • http:HTTP服务配置
    • server:虚拟主机配置
    • location:URI路由规则

3.2 常用命令

# 启动
sudo systemctl start nginx

# 停止
sudo systemctl stop nginx

# 重启
sudo systemctl restart nginx

# 重载配置(不中断服务)
sudo systemctl reload nginx

# 检查配置语法
sudo nginx -t

4. 核心配置详解

4.1 main 块配置

user nginx;          # 运行用户
worker_processes auto; # 工作进程数(建议设为CPU核心数)
error_log /var/log/nginx/error.log warn; # 错误日志路径

4.2 events 块配置

events {
  worker_connections 1024;  # 单个进程最大连接数
  use epoll;                 # 高性能事件模型(Linux)
}

4.3 http 块配置

http {
  include /etc/nginx/mime.types;  # 文件类型映射
  default_type application/octet-stream;
  access_log /var/log/nginx/access.log;  # 访问日志
  sendfile on;                   # 零拷贝传输
  keepalive_timeout 65;          # 长连接超时时间
  gzip on;                       # 启用Gzip压缩
  include /etc/nginx/conf.d/*.conf; # 加载子配置
}

5. 虚拟主机配置

5.1 单域名配置

server {
  listen 80;
  server_name example.com;
  root /var/www/html;      # 网站根目录
  index index.html;

  location / {
    try_files $uri $uri/ =404;
  }
}

5.2 多域名配置

# 域名1
server {
  listen 80;
  server_name site1.com;
  root /var/www/site1;
}

# 域名2
server {
  listen 80;
  server_name site2.com;
  root /var/www/site2;
}

5.3 Location 匹配规则

  • 前缀匹配

    location /images/ { ... }
  • 正则匹配

    location ~ \.(jpg|png)$ { ... }
  • 精确匹配

    location = /login { ... }

6. 反向代理与负载均衡

6.1 反向代理配置

server {
  listen 80;
  server_name proxy.example.com;

  location / {
    proxy_pass http://backend_server; # 后端服务地址
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

upstream backend_server {
  server 192.168.1.100:8080;
  server 192.168.1.101:8080;
}

6.2 负载均衡策略

  • 轮询(默认)

    upstream backend {
      server srv1.example.com;
      server srv2.example.com;
    }
  • 加权轮询

    upstream backend {
      server srv1 weight=3;
      server srv2 weight=2;
    }
  • IP哈希

    upstream backend {
      ip_hash;
      server srv1;
      server srv2;
    }

7. SSL/TLS 配置

7.1 生成证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/example.key \
  -out /etc/nginx/ssl/example.crt

7.2 HTTPS 配置

server {
  listen 443 ssl;
  server_name example.com;

  ssl_certificate /etc/nginx/ssl/example.crt;
  ssl_certificate_key /etc/nginx/ssl/example.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_ciphers HIGH:!aNULL:!MD5;

  # 强制跳转HTTPS
  if ($scheme = http) {
    return 301 https://$host$request_uri;
  }
}

8. 安全加固

  • 隐藏版本号

    server_tokens off;
  • 限制访问

    location /admin {
      allow 192.168.1.0/24;
      deny all;
    }
  • 防止DDoS

    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
    location / {
      limit_req zone=one burst=20;
    }

9. 高级配置

9.1 缓存配置

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;

server {
  location / {
    proxy_cache my_cache;
    proxy_cache_valid 200 302 10m;
  }
}

9.2 Gzip 压缩

gzip_types text/plain text/css application/json;
gzip_min_length 1000;
gzip_proxied any;

9.3 WebSocket 支持

location /ws/ {
  proxy_pass http://backend;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
}

10. 日志管理

  • 访问日志格式

    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
  • 日志分割(使用logrotate
    创建 /etc/logrotate.d/nginx 配置定期归档。

11. 常见问题排查

  • 检查配置语法

    nginx -t
  • 查看错误日志

    tail -f /var/log/nginx/error.log
  • 验证端口监听

    netstat -tulpn | grep nginx

12. 附录

  • 官方文档
    Nginx Documentation
  • 常用模块列表

    • ngx_http_ssl_module
    • ngx_http_rewrite_module
    • ngx_http_proxy_module

本手册持续更新,建议结合实践操作加深理解。遇到复杂场景时,可参考官方文档或社区资源。

Windows 徽标键键盘快捷方式

Windows 徽标键: 打开或关闭“开始”菜单。

Windows 徽标键 + A:打开操作中心。

Windows 徽标键 + B:将焦点设置到通知区域。

Windows 徽标键 + C:在侦听模式下打开 Cortana。(注:此快捷方式默认情况下处于关闭状态。 若要打开它,请选择“开始” > “设置” > Cortana,并打开“当我按 Windows 徽标键 + C 时,让 Cortana 听我的命令”下的切换键。)

Windows 徽标键 + Shift + C:打开超级按钮菜单。

Windows 徽标键 + D:显示和隐藏桌面。

Windows 徽标键 + Alt + D:显示和隐藏桌面上的日期和时间。

Windows 徽标键 + E:打开文件资源管理器。

Windows 徽标键 + F:打开反馈中心并获取屏幕截图。

Windows 徽标键 + G:打开游戏栏(当游戏处于打开状态时)。

Windows 徽标键 + H:开始听写。

Windows 徽标键 + I:打开设置。

Windows 徽标键 + K:打开“连接”快速操作。

Windows 徽标键 + L:锁定你的电脑或切换帐户。

Windows 徽标键 + M:最小化所有窗口。

Windows 徽标键 + P:选择演示显示模式。

Windows 徽标键 + Ctrl + Q:打开快速助手。

Windows 徽标键 + R:打开“运行”对话框。

Windows 徽标键 + S:打开搜素。

Windows 徽标键 + Shift + S:获取部分屏幕的屏幕截图。

Windows 徽标键 + T:循环浏览任务栏上的应用。

Windows 徽标键 + U:打开轻松使用设置中心。

Windows 徽标键 + V:打开剪贴板。 (若要激活此快捷方式,请依次选择“开始”菜单 > “设置” > “系统” > “剪贴板”,然后打开“剪贴板历史记录”下的切换开关。)

Windows 徽标键 + Shift + V:循环浏览通知。

Windows 徽标键 + X:打开“快速链接”菜单。

Windows 徽标键 + 句号 (.) 或分号 (;):打开表情符号面板。

Windows 徽标键 + 逗号 (,):临时速览桌面。

Windows 徽标键 + Pause 键:显示“系统属性”对话框。

Windows 徽标键 + Ctrl + F:搜索电脑(如果已连接到网络)。

Windows 徽标键 + Shift + M:还原桌面上的最小化窗口。

Windows 徽标键 + Tab:打开任务视图。

Windows 徽标键 + 向上键:最大化窗口。

Windows 徽标键 + 向下键:自适应当前窗口大小。

Windows 徽标键 + 向左键:桌面窗口左侧最大化(半屏)。

Windows 徽标键 + 向右键:桌面窗口右侧最大化(半屏)。

Windows 徽标键 + Home:最小化活动桌面窗口之外的所有窗口(在第二个笔划时还原所有窗口)。

Windows 徽标键 + Shift + 向左键或向右键:将桌面上的应用或窗口从一台显示器移动至另一台显示器。

Windows 徽标键 + 空格键:切换输入法语言和键盘布局。

Windows 徽标键 + Ctrl + 空格键:对之前选择的输入所做的更改。

Windows 徽标键 + Ctrl + Enter:打开“讲述人”。

Windows 徽标键 + 等号 (=):打开“放大镜”。

Windows 徽标键‌ + Ctrl + Shift + B:从空白屏幕或黑屏中唤醒。

linux 使用vim修改文件内容

1.进入文件:vim 文件名

vim /etc/httpd/httpd.conf

2.查找待修改内容位置 :

(1)shift+“:”,使文件变成可查询状态

(2)输入 / +查询内容 (eg 查询Directory参数,即 /Directory

eg 找到Directory参数,注释掉Require all denied添加Require all granted

3.找到位置后修改:按键盘 i 键 即变成可编辑状态

4.修改文件内容后退出:按ESC键

5.保存修改:

(1)shift+“:”,使文件变成可查询状态

(2)输入 wq!

如果不保存修改,可:

(1)shift+“:”,使文件变成可查询状态

(2)输入 q!

进入MySql控制台

首先进入到MySql安装目录的Bin文件夹下
C:\Program Files\MySQL\MySQL Server 6.0\bin>
第一种
然后执行命令 mysql -uuser -ppassword database
比如用户名为root,密码为mysql,数据库为test
命令如下
mysql -uroot -pmysql test
也可以直接执行mysql -uroot –pmysql
然后use test(数据库名),使用该数据库
第二种
执行命令mysql -u root –p
键入密码即可

退出控制台

先用\c清屏,然后用exit退出

连接远程MySql

连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -u root -p 123;(注:u与root之间可以不用加空格,其它也一样)

修改密码

注意:这个命令要在Bin文件目录下执行
格式:mysqladmin -u用户名 -p旧密码 password 新密码
1.给root加个密码ab12。首先在DOS下进入目录mysql\bin,然后键入以下命令
mysqladmin -u root -password ab12
注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。
2.再将root的密码改为djg345。
mysqladmin -u root -p ab12 password djg345

增加新用户

(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符)
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
1.增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on . to [email=test1@”%]test1@”%[/email]” Identified by “abc”;
但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。
2.增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),
这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “abc”;
如果你不想test2有密码,可以再打一个命令将密码消掉。
grant select,insert,update,delete on mydb.* to [email=test2@localhost]test2@localhost[/email] identified by “”;

MySql数据库操作技巧

MYSQL中有关数据库方面的操作。注意:首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
一、操作技巧
1.如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。
也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。
2.你可以使用光标上下键调出以前的命令。
二、显示命令
1.显示当前数据库服务器中的数据库列表:
mysql> SHOW DATABASES;
注意:mysql库里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。
2.显示数据库中的数据表:
mysql> USE 库名;
mysql> SHOW TABLES;
3.显示数据表的结构:
mysql> DESCRIBE 表名;
4.建立数据库:
mysql> CREATE DATABASE 库名;
5.建立数据表:
mysql> USE 库名;
mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
6.删除数据库:
mysql> DROP DATABASE 库名;
7.删除数据表:
mysql> DROP TABLE 表名;
8.将表中记录清空:
mysql> DELETE FROM 表名;
9.显示表中的记录:
mysql> SELECT * FROM 表名;
10.往表中插入记录:
mysql> INSERT INTO 表名 VALUES (”hyq”,”M”);
11.更新表中数据:
mysql-> UPDATE 表名 SET 字段名1=’a',字段名2=’b’ WHERE 字段名3=’c';
12.用文本方式将数据装入数据表中:
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE 表名;
13.导入.sql文件命令:
mysql> USE 数据库名;
mysql> SOURCE d:/mysql.sql;
14.命令行修改root密码:
mysql> UPDATE mysql.user SET password=PASSWORD(’新密码’) WHERE User=’root’;
mysql> FLUSH PRIVILEGES;
15.显示use的数据库名:
mysql> SELECT DATABASE();
16.显示当前的user:
mysql> SELECT USER();
三、一个建库和建表以及插入数据的实例
drop database if exists school; //如果存在SCHOOL则删除
create database school; //建立库SCHOOL
use school; //打开库SCHOOL
create table teacher //建立表TEACHER
(
id int(3) auto_increment not null primary key,
name char(10) not null,
address varchar(50) default ‘深圳’,
year date
); //建表结束
//以下为插入字段
insert into teacher values(”,’allen’,'大连一中’,'1976-10-10′);
insert into teacher values(”,’jack’,'大连二中’,'1975-12-23′);
如果你在mysql提示符键入上面的命令也可以,但不方便调试。
(1)你可以将以上命令原样写入一个文本文件中,假设为school.sql,然后复制到c:\下,并在DOS状态进入目录[url=file://\mysql\bin]\mysql\bin[/url],然后键入以下命令:
mysql -uroot -p密码 < c:\school.sql
如果成功,空出一行无任何显示;如有错误,会有提示。(以上命令已经调试,你只要将//的注释去掉即可使用)。
(2)或者进入命令行后使用 mysql> source c:\school.sql; 也可以将school.sql文件导入数据库中。
四、将文本数据转到数据库中
1.文本数据应符合的格式:字段数据之间用tab键隔开,null值用[url=file://\n]\n[/url]来代替.例:
3 rose 大连二中 1976-10-10
4 mike 大连一中 1975-12-23
假设你把这两组数据存为school.txt文件,放在c盘根目录下。
2.数据传入命令 load data local infile “c:\school.txt” into table 表名;
注意:你最好将文件复制到[url=file://\mysql\bin]\mysql\bin[/url]目录下,并且要先用use命令打表所在的库。
五、备份数据库:(命令在DOS的[url=file://\mysql\bin]\mysql\bin[/url]目录下执行)
1.导出整个数据库
导出文件默认是存在mysql\bin目录下
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u user_name -p123456 database_name > outfile_name.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql
3.导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql

解锁与锁表

解锁
第一种
show processlist;找到锁进程,kill。
第二种
mysql>UNLOCK TABLES;
锁表
锁定数据表,避免在备份过程中,表被更新
mysql>LOCK TABLES tbl_name READ;
为表增加一个写锁定:
mysql>LOCK TABLES tbl_name WRITE;

两种工具具有docker本身部署。
一、portainer
Portainer是一个可视化的Docker操作界面,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作)、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。
1.下载portainer的docker映像

docker pull portainer/portainer

2.运行portainer

docker run -d -p 8088:9000 \--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

3.访问
浏览器访问:http://服务器公网IP:8088

二、docker.ui
1.使用 ssh部署

docker run --restart always --name docker.ui -d -v /var/run/docker.sock:/var/run/docker.sock -p 8999:8999 joinsunsoft/docker.ui

2.访问 ip:8999 ,默认账号 ginghan ,默认密码 123456

教育教学理论指导和支撑教育教学实践,是教育教学活动的思想基础和行动指南。它研究教育教学规律,提出教育教学目标、内容、方法、手段、评价等方面的原理和策略。

一、建构主义教学理论

二、多元智能理论

三、范例教学理论

四、掌握教学理论

五、合作教学理论

六、结构主义理论

七、发展性教育理论

八、过程最优化理论

九、非指导性教育理论

一、Docker
1.删除Docker旧版本

sudo yum remove docker \ 
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-selinux \
                docker-engine-selinux \
                docker-engine

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
# 如果 yum 报告未安装这些软件包,则可以忽略。

2.安装必要的工具

# 执行一下命令即可
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.添加软件源信息

# 添加软件源可以加快下载速度,因为默认的镜像下载是国外的链接。
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#  sudo的单词为super user do  表示以超级管理员的权限执行相关语句
#  su的单词为switch user   表示切换用户

4.安装docker社区版

yum install -y docker-ce

默认是未启动状态
5.启动docker

sudo systemctl start docker

关闭和重启命令
重启Docker服务:systemctl restart docker / service docker restart
关闭Docker服务:docker service docker stop / docker systemctl stop docker

6.通过运行hello-world镜像来验证是否正确安装了Docker Engine-Community。

// 拉取镜像
sudo docker pull hello-world
// 执行hello-world
sudo docker run hello-world

7.删除docker
删除安装包:

yum remove docker-ce

删除镜像、容器、配置文件等内容:

rm -rf /var/lib/docker

8.docker其他常见命令

搜索仓库镜像:docker search 镜像名
拉取镜像:docker pull 镜像名
查看正在运行的容器:docker ps
查看所有容器:docker ps -a
删除容器:docker rm container_id
查看镜像:docker images
删除镜像:docker rmi image_id
启动(停止的)容器:docker start 容器ID
停止容器:docker stop 容器ID
重启容器:docker restart 容器ID
启动(新)容器:docker run -it ubuntu /bin/bash
进入容器:docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。
更多的命令可以通过docker help命令来查看。

二、SRS
使用Docker启动SRS

docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \
    registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 ./objs/srs -c conf/docker.conf