日常问题随记


日常问题随记

文件

WEBM - WebM是一种视频文件格式,旨在Web上优化视频的存储和播放。它使用VP8或VP9视频编解码器以及Vorbis或Opus音频编解码器,是HTML5

CPUPROFILE - CPU性能分析文件,通常包含CPU使用情况的数据,用于分析和优化程序的性能

DMP - 内存转储文件,当Windows系统崩溃时,会生成DMP文件来记录当时的内存状态,以便于调试和错误分析

FODG, FODP, FODS, FODT - 这些是OpenDocument格式的文件扩展名,分别代表图形、演示文稿、电子表格和文本文档。它们是开放标准的文档格式,类似于Microsoft Office文件
ODF - OpenDocument格式,是一种办公文档的国际标准格式,包括文本文档(ODT)、电子表格(ODS)、演示文稿(ODP)和图形(ODG)。

ODG - OpenDocument图形文件,属于OpenDocument格式家族的一部分,用于矢量图形的存储和交换。

ODP - OpenDocument演示文稿文件,也是OpenDocument格式的一部分,用于创建幻灯片演示文稿。

ODS - OpenDocument电子表格文件,同样属于OpenDocument格式家族,用于电子表格数据的存储和处理。

ODT - OpenDocument文本文件,用于文字处理文档,是OpenDocument格式的核心组成部分。

PATCH - 补丁文件,通常包含对软件的更新或修复,用于修正软件中的错误或增加新功能
GZ - GNU zip文件,是一种文件压缩格式,使用Lempel-Ziv (LZ77)算法进行压缩。常用于软件包的分发和日志文件的压缩存档

WOFF(Web Open Font Format)是一种专为网页设计而开发的字体格式,是TrueType或OpenType字体经过特定编码工具压缩后形成的,这种格式不仅支持元数据包的分离,还允许在字体文件中包含许可数据,以解决版权问题

数字证书
1:数字签名

  • hash技术,保证数据完整性
  • 抗抵赖,对称加密,知道密码,既可以加密又可以解密
    非对称加密,公钥,私钥,私钥解密公钥解密,不可逆
    2:证书颁发者
    根证书
    数字证书过期,app停摆,而浏览器允许走后门

OCR(Optical Character Recognition)
光学字符识别

共享协议有哪些
FTP,WebDav,SMB,NFS

共享协议是用于在网络中实现文件、数据或资源共享的一组规则和标准。以下是一些常见的共享协议及其用途:

FTP(文件传输协议):

用途:用于在客户端和服务器之间传输计算机文件,适用于内网文件传输。
特点:基于TCP/IP协议族,使用独立控制和数据连接,支持跨平台文件传输。
NFS(网络文件系统):

用途:允许不同计算机之间共享文件和目录,常用于Linux和Unix系统之间的文件共享。
特点:客户端通过挂载NFS服务器上的共享目录进行访问,支持断点续传和文件锁定等功能。
SMB(服务器消息块):

用途:提供共享访问和文件管理功能,支持多种操作系统平台之间的文件共享和打印服务。
特点:兼容性好,易于配置和使用,但性能和稳定性受网络质量影响较大。
WebDAV(基于Web的分布式编写和版本控制):

用途:扩展HTTP协议以实现远程文件管理,包括创建、删除文件等基本功能。
特点:具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的版本控制功能。

macOS(unix内核)在文件系统中
DS_Store(desktop service store)
Finder_FE(前端用户界面展示)
Finder_BE(后端文件枚举,处理元数据等)

一个IP(开启tcp的服务),如何知道它是Linux还是Windows
通过tcp协议判断操作系统的类型,发送SYN握手包,利用tcp确认机制,超时重传
区别:三次握手中的SYN+ACK重传次数
Linux:5次;Windows:2次

Talkatone申请美国实体电话卡(不易受限,通用性强):需要静态住宅IP
Google Voice申请的是虚拟的VOIP(虚拟电话号)
talkatone官网:https://www.talkatone.com
(实体卡检验)https://www.freecarrierlookup.com
(实体卡检验)https://phonevalidator.com/index.aspx

粉丝专属福利
美区id共享(注:id并不是永久的会改密码 用完请记得退出)
账号:gsl13842@icloud.com
密码:315Gongzhonghaoios365365
第一:登陆app store下载东西 和你设置里面的iCloud账号是两回事 第二:下载东西也根本不需要退掉iCloud,只需要切换app store账号就行了,下完以后换回自己的ID就可以了。第三:锁机的情况是别人诱导你登陆设置里面的iCloud,然后远程锁机,让你出高价钱才给你解开,奈斯这里是绝对不会干这种事儿,也不会诱导别人登陆iCloud

WildCard官网:大陆可申请的美国信用卡
https://www.bilibili.com/video/BV1Q3UoYkEpA/

前端

css换行元素:
1.word-break:break-all; 只对英文起作用,以字母作为换行依据
2. word-wrap:break-word; 只对英文起作用,以单词作为换行依据
3. white-space:pre-wrap; 只对中文起作用,强制换行
4. white-space:nowrap; 强制不换行,都起作用
5. white-space:nowrap; overflow:hidden; text-overflow:ellipsis; 不换行,超出部分隐藏且以省略号形式出现
注意:一定要指定容器的宽度(width),否则没用

history.pushState是HTML5中新增的API,用于在浏览器历史记录中添加新的状态,允许改变浏览器的URL而不刷新页面,从而创建一种无刷新页面的交互体验

基本用法
history.pushState方法接受三个参数:
状态对象(state object)一个JavaScript对象,与用pushState()方法创建的新历史记录条目关联。无论何时用户导航到新创建的状态,popstate事件都会被触发,并且事件对象的state属性包含历史记录条目的状态对象的拷贝

标题(title)大多数浏览器目前忽略这个参数,最好用null代替23。
URL:定义了新的历史URL记录。调用pushState()后浏览器并不会立即加载这个URL,但可能会在稍后某些情况下加载这个URL,比如在用户重新打开浏览器

预防rm -rf /*
1:权限管理(所有者;所属组,其他用户)

  • chmod(读:4,写:2,执行:1)确保没有写权限000
  • chstarr(+i:不得任意更改文件或目录)
  • 修改sudo(sudo visudo) 禁止所有用户使用sudo命令执行rm命令:ALL ALL=(ALL) NOPASSWD: !/bin/rm
  • alias(删除前先询问确认alias rm=”rm -i” 移动前询问确认:mv=’mv -i’)
  • trash目录(作为回收站,vim ~/.bashrc)
# .bashrc
# Source global definitions
if [-f /etc/bashrc ]; then
    . /etc/bashrc
fi
#将rm 命令替换为移动文件到回收站
del(){
    mv "$@" ~/.trash/
#将rm 命令别名为 del
alias rm='del'
  • 手动备份(cp test.txt test.txt.bak)
  • crontab定时脚本,文件同步,文件系统的快照功能
  • 宝塔面板,1panel

executeScriptCommand
executeScript:这个命令允许用户在Appium会话中执行任意的JavaScript代码。这可以用于自动化那些无法通过常规API调用实现的操作,或者进行一些复杂的逻辑处理。

script:要执行的JavaScript代码字符串。可以是任意有效的JavaScript代码,包括函数定义、变量赋值、条件判断等。

获取当前页面的标题

{
  "script": "return document.title;",
  "args": []
}

滚动到页面底部

{
  "script": "window.scrollTo(0, document.body.scrollHeight);",
  "args": []
}

获取某个元素的文本内容

{
  "script": "return document.getElementById('myElement').innerText;",
  "args": []
}

jsonArgument
args:一个JSON对象,包含了传递给executeScriptCommand的参数。这些参数将在JavaScript代码中作为局部变量使用。

type:参数的数据类型,如String、Number、Boolean、Object、Array等。
value:参数的实际值,根据type指定的数据类型进行解析

在JavaScript中,导入模块或文件的方法有多种:
1: 使用import关键字导入ES6模块
命名导出:

// 导出(export)
export function sayHello(name) {
  return `Hello, ${name}!`;
}
// 导入(import)
import { sayHello } from './greetings.js';
console.log(sayHello('Alice')); // 输出: Hello, Alice!

默认导出:

// 导出(export)
export default function sayGoodbye(name) {
  return `Goodbye, ${name}!`;
}
// 导入(import)
import sayGoodbye from './farewells.js';
console.log(sayGoodbye('Bob')); // 输出: Goodbye, Bob!

同时导入默认导出和命名导出:

import abc, { def } from './example.js';
abc();
def();

导入所有导出内容:

import * as example from './example.js';
example.method1();
example.method2();

2: 使用CommonJS规范的require函数

导出模块:

// math.js
function add(a, b) {
  return a + b;
}
module.exports = { add };

导入模块:

const math = require('./math');
console.log(math.add(1, 2)); // 输出: 3

3: 在HTML中使用模块化

通过<script type="module">标签引入JavaScript模块:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>模块化示例</title>
</head>
<body>
    <script type="module" src="main.js"></script>
</body>
</html>

4: 动态导入(适用于ES6模块)

使用import()表达式动态加载模块:

async function loadModule() {
  const module = await import('./module.js');
  module.someFunction();
}

5: 利用构建工具(如Webpack、Rollup)

通过配置文件定义入口文件、输出文件以及处理规则:
假设我们的项目结构如下:

my-webpack-project/
├── dist/
├── src/
│ ├── index.js
│ ├── math.js
│ └── greet.js
├── package.json
└── webpack.config.js

  1. 初始化项目
    首先,我们需要初始化一个Node.js项目并安装Webpack及其相关依赖:
mkdir my-webpack-project
cd my-webpack-project
npm init -y
npm install --save-dev webpack webpack-cli babel-loader @babel/core @babel/preset-env
  1. 创建源文件
    在src目录下创建以下文件:

src/index.js

import { add } from './math';
import { sayHello } from './greet';

console.log(add(2, 3)); // 输出: 5
console.log(sayHello('Alice')); // 输出: Hello, Alice!

src/math.js

export function add(a, b) {
    return a + b;
}

src/greet.js

export function sayHello(name) {
    return `Hello, ${name}!`;
}
  1. 配置Webpack
    在项目根目录下创建webpack.config.js文件:
const path = require('path');

module.exports = {
    entry: './src/index.js', // 入口文件
    output: {
        filename: 'bundle.js', // 输出文件名
        path: path.resolve(__dirname, 'dist') // 输出路径
    },
    module: {
        rules: [
            {
                test: /\.js$/, // 匹配所有.js文件
                exclude: /node_modules/, // 排除node_modules目录
                use: {
                    loader: 'babel-loader', // 使用babel-loader处理JavaScript文件
                    options: {
                        presets: ['@babel/preset-env'] // 使用@babel/preset-env预设
                    }
                }
            }
        ]
    },
    mode: 'development' // 开发模式
};
  1. 配置Babel
    在项目根目录下创建.babelrc文件:
{
    "presets": ["@babel/preset-env"]
}
  1. 构建项目
    在package.json中添加一个脚本来运行Webpack:

"scripts": {
    "build": "webpack"
}

然后运行以下命令进行构建:

npm run build
  1. 查看结果
    构建完成后,你会在dist目录下看到生成的bundle.js文件。这个文件包含了所有被导入的模块,并且可以在HTML文件中引用:
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>Webpack Example</title>
</head>
<body>
    <script src="dist/bundle.js"></script>
</body>
</html>

Windows

tmux(Terminal Multiplexer)是一个开源的终端复用工具,它允许用户在单个终端窗口中运行多个会话、窗口和分屏
docling - 文档解析工具

Windows特殊文件夹:
在文件管理器地址栏或者win+R输入:
shell:startup
当前用户开机自启动
shell:common startup
当前用户开机自启动

shell:fonts
windows上安装的所有字体

shell:sendto
右键发送到

shell:programs
开始菜单

shell:appsfolder
安装过的所有应用

shell:Quick Launch
快速启动,Quick Launch\User Pinned\TaskBar,固定任务栏

Windows PowerShell 的执行策略限制导致的。让我帮你解决这个问题。
有两种方法可以解决:
临时解决方法 - 只在当前 PowerShell 会话中允许运行脚本:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
永久解决方法 - 以管理员身份运行 PowerShell,然后执行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
选择其中一种方法执行后,你就可以正常运行 npm 命令了

windows修改文件名后返回卡死重启电脑:
1:找一个exe程序复制到桌面
2:改成超过130字符并带~符号的文件名exe或ico

ctl+alt+del去关机-》开机按f8-》”疑难解答“-》”高级选项“-》命令提示符-》进入C盘删除文件

一个字符等于多少个字节
1、ASCII码中:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。

2、UTF-8编码中:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

3、Unicode编码中:一个英文字符等于两个字节,一个中文(含繁体)等于两个字节。

符号:英文标点占一个字节;中文标点占两个字节。

举例:英文句号“.”占1个字节的大小;中文句号“。”占2个字节的大小。

4、UTF-16编码中:一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的一些汉字存储需要4个字节)。

DDos攻击:
DDoS攻击,全称为分布式拒绝服务攻击(Distributed Denial of Service),是一种常见的网络攻击形式。
它通过利用大量的恶意请求或流量来淹没目标服务器、服务或网络设备,从而耗尽其资源,导致合法用户无法访问或使用该服务

DDoS攻击的种类
网络层攻击:
ICMP Flood攻击:通过发送大量ICMP数据包消耗目标主机的CPU资源。传输协议:MEMCACHED
ARP Flood攻击:发送大量ARP请求广播,占用网络资源,造成网络拥堵。
IP分片攻击:将数据包恶意分段,导致目标网络在重组时耗费大量资源。
传输层攻击:
TCP Flood攻击:利用TCP协议的三次握手机制,发送大量SYN报文,使目标服务器产生大量半连接状态,耗尽系统资源。传输协议:NTP,流量形式:放大
ACK Flood攻击:发送大量ACK报文,引起链路拥塞或转发设备异常。
UDP Flood攻击:发送大量无状态的UDP数据包,充塞主机端口。传输协议:SSDP,流量形式:反射
应用层攻击:

DNS Flood攻击:操纵傀儡机器对目标发起海量域名查询请求,直接破坏DNS解析能力。
HTTP Flood攻击:包括HTTP GET和POST攻击,通过发送大量HTTP请求来消耗服务器资源。传输协议:CHARGEN
CC攻击:通过代理服务器向目标发送大量貌似合法的请求,使CPU长时间处于高负荷运行状态,直至宕机崩溃

UDP-NTP protocal
BAF:带宽放大因子
ip源伪造-》发给多个NTP server-》目标主机瘫痪
sudo masscan -pU:123 -oX ntp.xml –rate 100000 101.0.0.0-120.0.0.0

from scapy.all import *
data =”\x17\x00\x03\x2a”+”\x0”*44 # NTP monlist packet

data =”HELL0”.encode(“utf-8”)

packet = IP(dst=”221.179.53.116”) / UDP(sport=12345, dport=123) / Raw(load=data)
send(packet)

PHP中的 -> 相当于python的 .
:: 表示引用静态的属性
“=>”符号用于定义一个键值对,即将一个键和一个值关联在一起
使用点号(.)将多个字符串连接起来
以0开头的代表是八进制的数,所以010=08^0+18^1=8。此外,以0x开头的是十六进制的数

python

__name__在直接运行(python XXX.py)时值为”main
__name__被导入(imoprt XX)时值为所在的文件名

钩子函数(hook function)通常用于拦截或修改某些操作的行为。它们可以在特定事件发生时自动执行一些代码。钩子函数广泛应用于各种场景,如事件驱动编程、调试、日志记录等

  1. 装饰器(Decorators)
    装饰器是Python中一种非常强大的工具,可以用来修改函数或方法的行为。装饰器本质上就是一个高阶函数,它接受一个函数作为参数并返回一个新的函数。
    ```python
    def my_decorator(func):
    def wrapper(*args, **kwargs):
     print("Something is happening before the function is called.")
     result = func(*args, **kwargs)
     print("Something is happening after the function is called.")
     return result
    
    return wrapper

@my_decorator
def say_hello():
print(“Hello!”)

say_hello()


2. 上下文管理器(Context Managers)
上下文管理器允许你在进入和退出某个代码块时执行特定的代码。with语句常用于资源管理,比如文件操作、网络连接等。

```python
class MyContextManager:
    def __enter__(self):
        print("Entering the context")
        return self

    def __exit__(self, exc_type, exc_value, traceback):
        print("Exiting the context")

with MyContextManager():
    print("Inside the context")
  1. 信号处理(Signal Handling)
    在Unix系统中,可以使用信号来处理异步事件。Python的signal模块提供了对信号的支持。
import signal
import time

def handler(signum, frame):
    print(f"Signal {signum} received")

# Register the signal handler for SIGINT (Ctrl+C)
signal.signal(signal.SIGINT, handler)

print("Press Ctrl+C to trigger the signal handler")
while True:
    time.sleep(1)
  1. 回调函数(Callback Functions)
    回调函数是一种通过函数指针传递的函数,当某个事件发生时调用该函数。这在GUI编程、异步编程中非常常见。
def callback_function():
    print("Callback function called")

def do_something(callback):
    print("Doing something...")
    callback()

do_something(callback_function)
  1. 元类(Metaclasses)
    元类是创建类的“类”,可以控制类的创建过程。通过自定义元类,你可以在类被创建时插入自己的逻辑。
class MyMeta(type):
    def __new__(cls, name, bases, dct):
        print(f"Creating class {name}")
        return super().__new__(cls, name, bases, dct)

class MyClass(metaclass=MyMeta):
    pass

cusor十大技巧

1:默认开启的文件夹是项目的根目录
2:明确谨慎地表达需求内容
3:让cusor帮忙维护readme文档
4:写清楚代码注释
5:使用git做版本管理 git tag v1.0.0
6:调试使用save all
7:多用@codebase
8:添加常用的文档api链接
9:设置Rules for AI 在Cursor Settings
10:delete 账号重注册

GitHub

GitHub只允许上传的文件类型

Try again with GIF, JPEG, JPG, MOV, MP4, PNG, SVG, WEBM, CPUPROFILE, CSV, DMP, DOCX, FODG, FODP, FODS, FODT, GZ, JSON, JSONC, LOG, MD, ODF, ODG, ODP, ODS, ODT, PATCH, PDF, PPTX, TGZ, TXT, XLS, XLSX or ZIP

git restore 是 Git 中用于恢复文件或目录状态的命令。它可以用来撤销对工作区和暂存区的更改,或者从特定的提交中恢复文件
git restore [options]
–staged: 仅恢复暂存区中的文件,而不改变工作区的文件。
–worktree: 仅恢复工作区中的文件,而不改变暂存区的文件。
–source=: 从指定的提交中恢复文件。
–source=: 从指定的分支中恢复文件

git clone … –depth 10 最近10次提交内容
git submodule update –init –recursive 对于一些很久的分支,更新一下子模块
git graph(左旧右新)
git reset –soft HEAD^ 回退到上一次提交,在暂存区点“-”下放到代码区,点“discard change”放弃代码区的更改

git push -f 强制将提交推送到远端库
git remote -v 获取已配置的远端仓库地址
git fetch origin –depth 10 获取远端仓库最近10个提交

git cherry-pick允许用户从一个分支中选择一个或多个提交,并将这些提交应用到另一个分支上,而无需合并整个分支
git log命令查看提交历史并获取哈希值。例如,git cherry-pick abcdef123456会将哈希值为abcdef123456的提交应用到当前分支
遇到冲突,Git会停止并等待你解决冲突。使用git add命令标记已解决的冲突文件,然后使用git cherry-pick –continue继续cherry-pick过程
如果需要放弃cherry-pick操作,可以使用git cherry-pick –abort


文章作者: 读序
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 读序 !
  目录