无需言 做自己 业 ,精于勤 荒于嬉.
- AI大模型 常用文本嵌入模型
-
发表日期:2025-03-01 16:55:24 | 来源: | 分类:AI大模型
-
OpenAI的开源嵌入模型 维度 多语言性能(MIRACL) 英语性能(MTEB) text-embedding-3-large 3072 54.9% 64.6% text-embedding-3-small 1536 44.0% 62.3% text-embedding-ada-002 1536 31.4% 61.0% text-embedding-3-large 是 OpenAI 目前性能最强的嵌入模型,适用于高精度、多语言的语义检索和推荐任务。
nomic-embed-text 常见的嵌入模型,性能还行
m3e-base 针对中文进行优化
- AI大模型 大模型本地部署 ollama
-
发表日期:2025-03-01 14:52:07 | 来源: | 分类:AI大模型
-
示例1
#CMD 命令行 #下载大模型deepseek-r1:1.5b ollama push deepseek-r1:1.5b #启动deepseek1.5b大模型服务(如果没有下载会先自动下载模型后启动) ollama run deepseek-r1:1.5b #停止服务 ollama stop deepseek-r1:1.5b #列出所有已安装的大模型 #ollama list
- AI大模型 国内主流低代码AI构建平台
-
发表日期:2025-03-01 14:24:57 | 来源: | 分类:AI大模型
-
一、 国内主流低代码平台
Dify
特点:专注于大模型应用开发,支持通过可视化界面快速构建AI应用,提供数据管理、模型训练、API部署等功能。
适用场景:适合企业快速开发基于大模型的智能客服、内容生成等应用。
优势:开源、灵活、易扩展,支持多种大模型(如 GPT、LLaMA 等)。
Coze(扣子)
特点:字节跳动推出的无代码开发平台,支持单/多 Agent 模式,内置插件库(1万+)、知识库及多模型切换(如豆包、通义千问等),适合构建社交平台聊天机器人13。
优势:交互体验友好,支持图像流、数据库集成等复杂逻辑处理,适合 C 端用户快速部署15。
FastGPT
特点:专注于企业级知识库问答系统,支持工作流编排与 API 集成,在金融、医疗等垂直领域表现突出34。
优势:提供行业特化定制与数据隐私保护,符合企业级合规需求35。
文心智能体平台(百度)
特点:基于文心大模型,支持低代码构建行业智能体(如客服、营销助手),集成百度搜索、地图等生态能力45。
中软国际Lumi智能体开发平台
特点:深度融合DeepSeek全版本模型,支持100+企业级插件工具(搜索、代码、API等),预置50+业务场景模板。
适用场景:金融行业智能化需求。
商汤LazyLLM & 万象平台
LazyLLM:开源框架,仅需10行代码即可构建多Agent应用,支持数据流拼接和统一模型调用。
万象平台:支持零代码拖拽开发,集成数百种开源大模型(如DeepSeek),覆盖金融、建筑等行业场景。
金现代骑兵低代码开发平台
特点:集成大语言模型(LLM)、自然语言处理(NLP)等技术,应用于电力设备铭牌识别、文档审核等场景。
适用场景:国家电网等大型客户。
字节跳动MarsCode
特点:基于豆包大模型,支持AI编程功能(代码补全、智能问答),提供免费版和海外版Trae。
适用场景:Agent模式开发,战略布局国内外市场。
卓易信息SnapDevelop
特点:低代码IDE工具,支持.NET平台开发,海外版本接入AI大模型,可通过自然语言生成代码。
适用场景:提升编码效率,目前处于免费推广阶段。
- AI大模型 RAG检索增强生成
-
发表日期:2025-03-01 12:35:06 | 来源: | 分类:AI大模型
-
基本定义
RAG(Retrieval-Augmented Generation)将传统信息检索系统(如向量数据库、知识图谱)与生成式大语言模型(LLM)结合。其核心原理是通过检索外部知识库中的相关信息,并将检索结果作为上下文输入给LLM,指导其生成更精准的答案12。工作流程
检索阶段
:基于用户查询从大规模文档库中匹配相关段落(如使用BM25、DPR等检索模型)17;
增强阶段
:对检索结果进行过滤、重排或补充元数据,提升信息质量68;
生成阶段
:LLM结合检索到的上下文生成最终回答
RAG 常用工具分类及代表产品
一、框架与开发平台
LangChain
提供文档加载、检索器集成(BM25、Chroma、FAISS等)、提示工程等全流程开发支持,支持多模态数据源接入35。
LlamaIndex
专注大规模数据索引与检索优化,支持树形索引、向量相似性搜索等高效检索方法,适配主流LLM35。
NeMo Guardrails
NVIDIA 推出的开源工具包,用于为对话系统添加安全防护规则,控制话题边界并提升交互可靠性13。
二、向量数据库
Chroma
轻量级开源向量数据库,支持快速嵌入存储与相似性搜索,适合中小规模RAG应用35。
Pinecone
FAISS
托管式向量数据库,提供高吞吐量检索服务,支持自动扩缩容与低延迟响应23。
Meta 开源的相似性搜索库,适用于大规模向量聚类与高效近邻检索23。
Elasticsearch
支持全文检索与向量混合搜索,适合需要结合结构化与非结构化数据的场景25。
三、检索模型与算法
BM25
经典关键词检索算法,适用于精确匹配场景,常作为基线模型与向量检索互补35。
ColBERT
基于上下文的稠密检索模型,结合语义理解提升段落匹配精度34。
DPR(Dense Passage Retrieval)
双编码器架构的稠密检索模型,通过微调优化问答相关性15。
四、嵌入模型
OpenAI Embeddings
提供预训练文本向量化服务,支持多语言与长文本分块处理45。
BERT/Word2Vec
通用语义嵌入模型,可通过Hugging Face等平台快速部署24。
五、评估工具
TruLens
自动化评估RAG系统输出质量,分析上下文相关性与生成结果忠实性6。
RAGAS
开源评估框架,提供检索覆盖率、答案准确性等多维度指标6。
六、其他工具
Hugging Face Transformers
集成RAG预训练模型与微调工具链,支持快速实验25。
PyTorch/TensorFlow
深度学习框架,用于自定义检索或生成组件的模型训练2。
Jupyter Notebooks
交互式开发环境,常用于RAG流程原型设计与调试
- AI大模型 监控服务器硬件使用率工具nvitop
-
发表日期:2025-03-01 12:26:45 | 来源: | 分类:AI大模型
-
安装
pip install nvitop
输入命令 nvitop
- AI大模型 部署多模态语音大模型SenseVoice
-
发表日期:2025-03-01 01:23:50 | 来源: | 分类:AI大模型
-
示例1
conda create -n sense_voice_env python=3.10 conda activate sense_voice_env pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124 apt-get update && apt-get install ffmpeg pip install funasr addict datasets simplejson sortedcontainers
- AI大模型 英伟达NVIDIA各类型号显卡的ai算例表
-
发表日期:2025-02-26 13:49:20 | 来源: | 分类:AI大模型
-
本表格按 双精度算力(FP64)从高到低排序。
显卡型号 架构 FP16 (半精度) FP32 (单精度) FP64 (双精度) INT8 INT4 显存 CUDA 核心数 发售时间 发售价(人民币) NVIDIA H100 Hopper 134 TFLOPS 67 TFLOPS 34 TFLOPS 2000 TOPS 4000 TOPS 80 GB HBM3 14,592 2022 Q3 ¥237,600+ NVIDIA A100 Ampere 312 TFLOPS 19.5 TFLOPS 9.7 TFLOPS 624 TOPS 1248 TOPS 40/80 GB HBM2 6,912 2020 Q2 ¥79,200+ NVIDIA V100 Volta 125 TFLOPS 15.7 TFLOPS 7.8 TFLOPS - - 16/32 GB HBM2 5,120 2017 Q3 ¥57,600+ NVIDIA TITAN V Volta 110 TFLOPS 13.8 TFLOPS 6.9 TFLOPS - - 12 GB HBM2 5,120 2017 Q4 ¥21,593 NVIDIA RTX 6000 Ada Ada Lovelace 91.1 TFLOPS 45.6 TFLOPS 0.71 TFLOPS 730 TOPS 1460 TOPS 48 GB GDDR6 18,176 2022 Q4 ¥52,560 NVIDIA RTX 4090 Ada Lovelace 165 TFLOPS 82.6 TFLOPS 1.3 TFLOPS 1322 TOPS 2644 TOPS 24 GB GDDR6X 16,384 2022 Q4 ¥11,513 NVIDIA RTX 4080 Ada Lovelace 97.4 TFLOPS 48.7 TFLOPS 0.76 TFLOPS 779 TOPS 1558 TOPS 16 GB GDDR6X 9,728 2022 Q4 ¥8,633 NVIDIA RTX 3090 Ti Ampere 80 TFLOPS 40 TFLOPS 0.63 TFLOPS 320 TOPS 640 TOPS 24 GB GDDR6X 10,752 2022 Q1 ¥14,393 NVIDIA RTX 3090 Ampere 72 TFLOPS 36 TFLOPS 0.56 TFLOPS 285 TOPS 570 TOPS 24 GB GDDR6X 10,496 2020 Q3 ¥10,793 NVIDIA RTX 3080 Ti Ampere 68 TFLOPS 34 TFLOPS 0.53 TFLOPS 272 TOPS 544 TOPS 12 GB GDDR6X 10,240 2021 Q2 ¥8,633 NVIDIA RTX 3080 Ampere 60 TFLOPS 30 TFLOPS 0.47 TFLOPS 238 TOPS 476 TOPS 10/12 GB GDDR6X 8,704 2020 Q3 ¥5,033 NVIDIA RTX 3070 Ti Ampere 44 TFLOPS 22 TFLOPS 0.34 TFLOPS 174 TOPS 348 TOPS 8 GB GDDR6X 6,144 2021 Q2 ¥4,313 NVIDIA RTX 3070 Ampere 40 TFLOPS 20 TFLOPS 0.31 TFLOPS 163 TOPS 326 TOPS 8 GB GDDR6 5,888 2020 Q4 ¥3,593 NVIDIA RTX 3060 Ti Ampere 32.4 TFLOPS 16.2 TFLOPS 0.25 TFLOPS 129 TOPS 258 TOPS 8 GB GDDR6 4,864 2020 Q4 ¥2,873 NVIDIA RTX 3060 Ampere 25.4 TFLOPS 12.7 TFLOPS 0.2 TFLOPS 101 TOPS 202 TOPS 12 GB GDDR6 3,584 2021 Q1 ¥2,369 NVIDIA RTX 2080 Ti Turing 26.8 TFLOPS 13.4 TFLOPS 0.42 TFLOPS 107 TOPS 214 TOPS 11 GB GDDR6 4,352 2018 Q3 ¥7,193 NVIDIA RTX 2080 Turing 20.2 TFLOPS 10.1 TFLOPS 0.32 TFLOPS 81 TOPS 162 TOPS 8 GB GDDR6 2,944 2018 Q3 ¥5,033 NVIDIA RTX 2070 Turing 15.8 TFLOPS 7.9 TFLOPS 0.25 TFLOPS 63 TOPS 126 TOPS 8 GB GDDR6 2,304 2018 Q4 ¥3,593 NVIDIA RTX 2060 Turing 13 TFLOPS 6.5 TFLOPS 0.2 TFLOPS 52 TOPS 104 TOPS 6 GB GDDR6 1,920 2019 Q1 ¥2,513 NVIDIA TITAN RTX Turing 32.6 TFLOPS 16.3 TFLOPS 0.51 TFLOPS 130 TOPS 261 TOPS 24 GB GDDR6 4,608 2018 Q4 ¥17,993 NVIDIA GTX 1080 Ti Pascal 22.6 TFLOPS 11.3 TFLOPS 0.35 TFLOPS - - 11 GB GDDR5X 3,584 2017 Q1 ¥5,033 NVIDIA GTX 1080 Pascal 17.8 TFLOPS 8.9 TFLOPS 0.28 TFLOPS - - 8 GB GDDR5X 2,560 2016 Q2 ¥4,313 NVIDIA GTX 1070 Pascal 13 TFLOPS 6.5 TFLOPS 0.2 TFLOPS - - 8 GB GDDR5 1,920 2016 Q2 ¥2,729 NVIDIA GTX 1060 Pascal 8.8 TFLOPS 4.4 TFLOPS 0.14 TFLOPS - - 6 GB GDDR5 1,280 2016 Q3 ¥1,793 NVIDIA TITAN Xp Pascal 22.6 TFLOPS 11.3 TFLOPS 0.35 TFLOPS - - 12 GB GDDR5X 3,840 2017 Q1 ¥8,640 NVIDIA TITAN X Pascal 22.6 TFLOPS 11.3 TFLOPS 0.35 TFLOPS - - 12 GB GDDR5X 3,584 2016 Q2 ¥8,640 NVIDIA GTX 980 Ti Maxwell 11.3 TFLOPS 5.6 TFLOPS 0.18 TFLOPS - - 6 GB GDDR5 2,816 2015 Q2 ¥4,673 NVIDIA GTX 980 Maxwell 9.2 TFLOPS 4.6 TFLOPS 0.14 TFLOPS - - 4 GB GDDR5 2,048 2014 Q3 ¥3,953 NVIDIA GTX 970 Maxwell 7.0 TFLOPS 3.5 TFLOPS 0.11 TFLOPS - - 4 GB GDDR5 1,664 2014 Q3 ¥2,369 NVIDIA GTX 960 Maxwell 4.6 TFLOPS 2.3 TFLOPS 0.07 TFLOPS - - 2/4 GB GDDR5 1,024 2015 Q1 ¥1,433 NVIDIA GTX 750 Ti Maxwell 2.2 TFLOPS 1.1 TFLOPS 0.03 TFLOPS - - 2 GB GDDR5 640 2014 Q1 ¥1,073 ### **关键说明**
1. **FP16/FP32/FP64**:分别表示半精度、单精度和双精度浮点算力,单位为 TFLOPS。
2. **INT8/INT4**:表示整数精度算力,单位为 TOPS(每秒万亿次操作)。
3. **显存**:显存容量越大,支持的数据集和模型规模越大。
4. **CUDA 核心数**:CUDA 核心越多,显卡的并行计算能力越强。
5. **发售价**:按 **1 美元 ≈ 7.2 人民币** 换算,实际价格可能因市场供需波动。
---
### **精度说明**
1.FP32(单精度):通用计算精度,适用于大多数科学计算和深度学习任务。
2.FP64(双精度):高精度计算,适用于科学模拟和金融计算。
3.FP16(半精度):低精度计算,适用于深度学习训练和推理,性能更高。
4.INT8:整数精度,适用于 AI 推理任务,性能显著提升。
5.INT4:超低精度,适用于特定 AI 推理任务,性能进一步提升。
### **总结**
高性能计算:NVIDIA H100、A100 和 V100 是顶级选择,适合大规模 AI 训练和科学计算。
游戏与 AI:RTX 4090、RTX 3090 Ti 和 RTX 3080 Ti 提供极高的性能,适合高端用户。
性价比:RTX 3060 Ti 和 RTX 3060 是预算有限用户的最佳选择,性能足够应对大多数任务。
物尽其用 :可以看到专业级显卡针对双精度优化,消费级显卡针对半精度、单精度优化,以4090为例在单精度fp32及半精度fp16运算中速度远快于专业卡H100等。因此在一些量化模型中,如果显存够用,4090性能甚至强于单卡H100。
- AI大模型 部署大模型,验证cuda是否可用以及版本
-
发表日期:2025-02-23 06:04:19 | 来源: | 分类:AI大模型
-
示例1
import torch print(f"CUDA 是否可用: {torch.cuda.is_available()}") print(f"PyTorch 版本: {torch.__version__}") print(f"检测到的 CUDA 版本: {torch.version.cuda}")
- AI大模型 部署通易千问多模态大模型 Qwen2.5-VL-3B-Instruct /7B /72B 实战
-
发表日期:2025-02-23 05:14:38 | 来源: | 分类:AI大模型
-
示例1
#切换至D盘 d: #下载项目环境 至D:/Qwen2.5-VL git clone https://github.com/QwenLM/Qwen2.5-VL #切换至项目根目录 cd .\Qwen2.5-VL\ #创建这个项目的运行环境 conda create -n qwen_env python=3.10 #使用该项目 conda activate qwen_env #使用pip命令安装这个文件里写的项目依赖 -i 是使用这个阿里云镜像下载,原始库国外下载超慢 pip install -r .\requirements_web_demo.txt -i https://mirrors.aliyun.com/pypi/simple/ #使用pip命令卸载这三个依赖包(上一步的依赖文件里会下载这三个包2.4版本的,但是经测试报错) #OSError: [WinError 126] 找不到指定的模块。 Error loading "xxxx\fbgemm.dll" or one of its dependencies. #也可以把上面requirements_web_demo.txt里的依赖版本改一下就不需要卸载这三个包再重装了 pip uninstall torch torchvision torchaudio ####无NVIDIA独立显卡###### #重新安装这三个包(默认会下载最新版2.6) pip install torch torchvision torchaudio #或使用指定版本(推荐) pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 #----有NVIDIA独立显卡------ #安装cuda,去官网下载合适的版本,比如这个12.4的版本 ,然后安装 #https://developer.download.nvidia.cn/compute/cuda/12.4.1/local_installers/cuda_12.4.1_551.78_windows.exe #重新安装这三个包(默认会下载最新版2.6)最好翻墙要不然下载100kb+,2.5G太慢 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124 #或使用指定版本(推荐) pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124 #和上面一样,只是多加了个--index-url 参数安装cuda支持,cu124 对应官网下载的cuda驱动版本 #python web_demo_mm.py --checkpoint-path "Qwen/Qwen2.5-VL-3B-Instruct" #启动,会自己从抱脸网下载这个模型并运行,但是需要翻墙 #也可以用Git自己从国内镜像网站下载下来至 d:/Qwen2.5-VL-3B-Instruct git clone https://www.modelscope.cn/Qwen/Qwen2.5-VL-3B-Instruct.git #修改文件 \Qwen2.5-VL\web_demo_mm.py #把项目里配置的模型路径改为下载下来的保存路径 DEFAULT_CKPT_PATH = 'D:\Qwen2.5-VL-3B-Instruct' #启动 python web_demo_mm.py #不报错的话会显示:Running on local URL: http://127.0.0.1:7860 #打开这个web ui 网址就可以体验了,效果:
示例2
conda create -n qwen_env python=3.10 -y conda activate qwen_env pip install vllm -i https://mirrors.aliyun.com/pypi/simple/ pip install git+https://github.com/huggingface/transformers -i https://mirrors.aliyun.com/pypi/simple/ pip install torch -i https://mirrors.aliyun.com/pypi/simple/ vllm serve Qwen/Qwen2.5-VL-3B-Instruct --limit-mm-per-prompt image=4 #最终报错 import uvloopModuleNotFoundError: No module named ‘uvloop‘ #花了N个小时反复弄不成,最终得知windows 目前不支持uvloop,所以这套方案目前只能在Linux上面跑, #试错全是泪,没有一个文档和博主有提到这事
示例3
conda create -n qwen_env python=3.10 -y conda activate qwen_env pip install git+https://github.com/huggingface/transformers accelerate -i https://mirrors.aliyun.com/pypi/simple/ pip install qwen-vl-utils -i https://mirrors.aliyun.com/pypi/simple/ pip uninstall torch torchvision torchaudio pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://download.pytorch.org/whl/cu124 pip install modelscope -i https://mirrors.aliyun.com/pypi/simple/ #安装cuda,去官网下载合适的版本,比如这个12.4的版本 ,然后安装 # #最好先验证cuda是否可用,参考 http://www.canquick.com/article/ARTICLE_BB5E097E46C0CA60904B81FA.html
示例4
#新建Python文件 start.py:设置运行环境为上面创建的项目运行环境qwen_env , 运行 import torch from transformers import Qwen2_5_VLForConditionalGeneration, AutoTokenizer, AutoProcessor from qwen_vl_utils import process_vision_info from modelscope import snapshot_download # default: Load the model on the available device(s) model_dir = snapshot_download("Qwen/Qwen2.5-VL-3B-Instruct") # model = Qwen2_5_VLForConditionalGeneration.from_pretrained( # model_dir, # torch_dtype="auto", # device_map="auto" # ) # We recommend enabling flash_attention_2 for better acceleration and memory saving, especially in multi-image and video scenarios. model = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_dir, torch_dtype=torch.bfloat16, # attn_implementation="flash_attention_2", device_map="auto", ) # default processer processor = AutoProcessor.from_pretrained(model_dir) # The default range for the number of visual tokens per image in the model is 4-16384. # You can set min_pixels and max_pixels according to your needs, such as a token range of 256-1280, to balance performance and cost. # min_pixels = 256*28*28 # max_pixels = 1280*28*28 # processor = AutoProcessor.from_pretrained("Qwen/Qwen2.5-VL-3B-Instruct-AWQ", min_pixels=min_pixels, max_pixels=max_pixels) messages = [ { "role": "user", "content": [ { "type": "image", "image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg", }, {"type": "text", "text": "Describe this image."}, ], } ] # Preparation for inference text = processor.apply_chat_template( messages, tokenize=False, add_generation_prompt=True ) image_inputs, video_inputs = process_vision_info(messages) inputs = processor( text=[text], images=image_inputs, videos=video_inputs, padding=True, return_tensors="pt", ) inputs = inputs.to("cuda") # Inference: Generation of the output generated_ids = model.generate(**inputs, max_new_tokens=128) generated_ids_trimmed = [ out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids) ] output_text = processor.batch_decode( generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False ) print(output_text)
示例5
#1.将: model = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_dir, torch_dtype="auto", device_map="auto" ) #改为: model = Qwen2_5_VLForConditionalGeneration.from_pretrained( model_dir, torch_dtype=torch.bfloat16, device_map="auto", ) #使用bfloat16量化,比fp32显存降低一半,速度快一半。当然精度会有所下降 #2.将: processor = AutoProcessor.from_pretrained(model_dir) #改为 min_pixels = 256*28*28 max_pixels = 1280*28*28 processor = AutoProcessor.from_pretrained(model_dir, min_pixels=min_pixels, max_pixels=max_pixels,use_fast=True) #限制图片像素,得以减少内存消耗,提升性能
- 前端开发 npm install 报错 解决 RequestError: certificate has expired
-
发表日期:2024-03-26 17:19:00 | 来源: | 分类:前端开发
-
示例1
npm config set disturl https://registry.npmmirror.com/dist/ npm config set registry https://registry.npmmirror.com npm config set electron_mirror https://npmmirror.com/mirrors/electron/ npm config set strict-ssl false npm cache clean --force npm install
- Linux实战应用 解决 wsl 系统删除文件磁盘空间未得到释放
-
发表日期:2024-03-25 21:41:14 | 来源: | 分类:Linux实战应用
-
wsl 同虚拟机一样有此问题
1.先关闭wsl的Linux系统:
wsl --shutdown
2.打开磁盘收缩工具 ,cmd输入命令:
diskpart
3.先找到你的wsl系统的虚拟磁盘文件ext4.vhdx ,在diskpart 窗口里输入
select vdisk file="C:\Users\eniac\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\ext4.vhdx"
4.然后输入收缩命令,等待至100%收缩完成:
compact vdisk
5.最后卸载虚拟磁盘:
detach vdisk
- Linux实战应用 Linux服务器免费高效的安全软件
-
发表日期:2023-12-17 21:57:29 | 来源: | 分类:Linux实战应用
-
ClamAV:ClamAV是一款开源的防病毒引擎,用于检测木马、病毒、恶意软件和其他威胁。它支持多种平台,包括Linux,并且具有命令行和图形用户界面。
Fail2ban:Fail2ban是一个用于监控日志文件并自动封禁恶意IP地址的工具。它可以防止暴力破解和其他恶意行为。
SELinux:SELinux(Security-Enhanced Linux)是一个为Linux内核提供强制访问控制机制的安全模块。它可以限制进程和用户对系统资源的访问,从而增强系统的安全性。
AppArmor:AppArmor是一个Linux内核的安全模块,类似于SELinux,提供强制访问控制机制来保护应用程序和系统文件。
OpenSSH:OpenSSH是一个安全的远程登录工具,支持加密通信和身份验证。它可以帮助您在远程服务器上执行命令和管理任务。
Snort:Snort是一个开源的网络入侵检测和防御系统(IDS/IPS)。它可以实时监控网络流量,检测异常行为并生成警报。
OSSEC:OSSEC是一个开源的主机入侵检测系统(HIDS)。它可以监控系统日志、文件更改、进程活动等,以检测潜在的入侵行为。
UFW (Uncomplicated Firewall): UFW是一个用户友好的前端防火墙配置工具,旨在简化iptables防火墙规则的管理。它可以轻松地启用/禁用端口和服务,并管理网络流量。
ModSecurity: 这是一个开源的Web应用防火墙(WAF),用于保护Web应用程序免受各种攻击,如SQL注入、跨站脚本(XSS)等。
Lynis: Lynis是一个系统安全审计工具。它可以在不安装额外软件的情况下对系统进行全面的安全扫描,并提供加固建议。
AIDE (Advanced Intrusion Detection Environment): AIDE是一个用于检测文件系统完整性的工具,可帮助检测未经授权的文件修改或添加。
rkhunter (Rootkit Hunter): rkhunter是一个Unix平台的系统工具,用于扫描潜在的rootkit和其他恶意软件。
Tiger: Tiger是一个安全工具,用于收集和分析Linux系统上的安全相关信息,如系统日志、网络状态、已安装的软件等。
Chkrootkit: 类似于rkhunter,Chkrootkit也是一个用于检测rootkit和其他潜在恶意软件的工具。
DenyHosts: 这是一个Python程序,设计用于自动阻止SSH的暴力攻击。当发现过多的认证失败尝试时,它会更新/etc/hosts.deny来阻止攻击源。
John the Ripper & Hashcat: 这两个工具都是用于密码破解的,可以帮助测试系统的密码强度。
Key-based Authentication for SSH: 虽然不是软件,但使用SSH密钥进行身份验证是一种增强安全性的方法,可以避免使用弱密码。
- Linux实战应用 Virtualbox虚拟机磁盘收缩
-
发表日期:2023-11-13 00:57:42 | 来源: | 分类:Linux实战应用
-
当你的虚拟机磁盘是动态大小时,不知你是否发现当你把虚拟机里的文件删除时,虚拟机磁盘可用空间变大了,而宿主机的磁盘可用空间并没有变大?那么也就是说虚拟机里曾经删除的文件其实还在占用你的磁盘空间。
原因是虚拟机里删除文件其实只是文件的状态被标注了删除,对于宿主机来说磁盘内容并没有删除。其实通俗来讲我们从电脑中删除文件都只是标注文件的删除状态,数据任然在磁盘只是不让你看到了,当写入数据时其实相当于“覆盖被删除的文件所占用的磁盘空间”。
以Linux虚拟机为例:
1. 就是创造一个空文件把磁盘写满(覆盖被删除的文件=清空磁盘空闲内容)执行命令:
dd if=/dev/zero of=temp
2.把这个文件删了
rm -f temp
3.关闭虚拟机,在宿主机系统中进入虚拟机软件安装目录执行命令:
C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe modifyvdi "D:\你要收缩的虚拟磁盘.vdi" --compact
等待结果:0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
执行完成后你会发现虚拟磁盘变小了。
如果你的宿主机磁盘够用,那么其实你可以不用管它。比如你设置的虚拟磁盘大小限制为100G,那么宿主机虚拟磁盘大小到100G时将不再增长,只要虚拟磁盘里空间没满,那么再写入的数据就是覆盖删除文件的空间了。
- Linux实战应用 crontab 定时任务
-
发表日期:2023-05-31 09:48:06 | 来源: | 分类:Linux实战应用
-
示例1
crontab -e # 编辑定时任务 输入i 进入编辑模式 45 0 * * * /home/test.sh > /dev/null # 例如 每天0点45分 执行shell脚本 00 02 * * * rm -rf /home/canquick/cache/* # 例如 每天2点 删除/home/canquick/cache/ 下的所有文件 * * * * * curl http://xxx/api.json # 每分钟请求一次接口 * * * * * php /home/canquick/run.php # 每分钟执行一次php脚本 #保存并退出 先按一下 ESC键 然后输入:wq 回车 ,和vim命令一样
- Linux实战应用 FTP服务器软件 pureftpd 创建/删除用户
-
发表日期:2023-05-31 09:32:37 | 来源: | 分类:Linux实战应用
-
示例1
pureftpd 创建用户: #创建ftp项目目录 mkdir /home/wwwroot/test2/ #创建 test2FTP 用户 目录为 /home/wwwroot/test2/ echo "test2FTP:$6$bk3nSL0iiqvTM6t0$UxciEqn1zSd5fkTD4XIDI9nRsRu5a8LOukv19oSUaDMHr4BxWCG81UilttNAloPGOwmL/7gIb8WoLl.N8fD0z/:1001:1001::/home/wwwroot/test2/./::::::::::::" >> /usr/local/pureftpd/etc/pureftpd.passwd # 实际上 是给 /usr/local/pureftpd/etc/pureftpd.passwd 文件插入一行, # 也可以vim /usr/local/pureftpd/etc/pureftpd.passwd 复制插入上一行的用户数据 把用户名和 目录地址改为新的也行 #保存设置 /usr/local/pureftpd/bin/pure-pw mkdb #给test2FTP设置密码 ,输入两遍密码 /usr/local/pureftpd/bin/pure-pw passwd test2FTP #保持设置 /usr/local/pureftpd/bin/pure-pw mkdb #然后即可以用FTP软件登录 #如果上传文件提示没权限 那么ll 命令查看一下项目目录的组和所有者是否是root #如果是root那么把组和所有者改为网站访问的用户 如www即可 #chgrp www /home/wwwroot/test2/ 修改文件夹所有者 #chown www /home/wwwroot/test2/修改文件夹用户组
- SQLServer 触发器详解
-
发表日期:2022-10-19 11:20:47 | 来源: | 分类:SQLServer
-
示例1
create TRIGGER [dbo].[trigger_House(触发器的名字)] ON [dbo].[House(监听的表名)] AFTER INSERT, UPDATE -- 插入/修改后触发 ,delete 删除后触发 AS BEGIN SET NOCOUNT ON; -- 你的业务逻辑 update House set modify_microtime = getdate() where HID in (select HID from inserted); -- 注意这句非常重要 where HID in (select HID from inserted) 查找更新的记录行 -- 如果House表一次更新的是多行,那么触发的inserted 表也是多行,所以这里用了where in 而不是 = END
示例2
drop trigger 触发器名字
- SQLServer 自定义函数详解
-
发表日期:2022-08-22 11:12:52 | 来源: | 分类:SQLServer
-
示例1
CREATE FUNCTION [dbo].[函数名] ( @Id int,@date1 datetime --入参 ) RETURNS varchar(1000) -- 返回值 AS BEGIN declare @Str varchar(8000) -- 业务逻辑 -- SQL思路拔高可以参考存储过程那篇文章,写的非常细 -- http://www.canquick.com/article/ARTICLE_B176685DBB653F60CE765750.html RETURN @Str -- 返回值 END go grant execute, view definition on 函数名to [] go
示例2
CREATE FUNCTION [dbo].[MaxNumber]( @no1 float, @no2 float, @no3 float, @no4 float, @no5 float ) RETURNS float AS BEGIN declare @maxno float if isnull(@no1, 0) > isnull(@no2, 0) set @maxno = isnull(@no1, 0) else set @maxno = isnull(@no2, 0) if isnull(@maxno, 0) < isnull(@no3, 0) set @maxno = isnull(@no3, 0) if isnull(@maxno, 0) < isnull(@no4, 0) set @maxno = isnull(@no4, 0) if isnull(@maxno, 0) < isnull(@no5, 0) set @maxno = isnull(@no5, 0) return @maxno END go
- 页面相关 养老金测算
-
发表日期:2022-08-22 09:21:25 | 来源: | 分类:页面相关
-
示例1
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>养老金测算</title> <meta name="keywords" content="养老金测算|退休工资预估" /> <meta name="description" content="养老金测算|退休工资预估" /> </head> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <body> <div style="background-color: #eacccc"> </div> <div style="background-color: #a8d27e"> <h4>计算公式为:</h4> <hr> <p>个人账户养老金=个人账户余额/139 粗算=(月工资*缴费比例*12月*缴费年限)/139</p> <p>基础养老金=(上年度全市平均工资+个人缴费工资)/2*缴费年限*1%</p> <p>月退休工资估算=个人账户养老金 +基础养老金 </p> </div> <hr> <b>请输入:</b> <br>月缴费基数:<input type="text" name="gz" value="10000"> <br> 缴费年限:<input type="text" name="nx" value="15"> <br> 缴费比例:<input type="text" name="bl" value="8">% <br> 上年度全市平均工资:<input type="text" name="pj" value="7073">% <br> <hr> <div style="background-color: #b0a5e3"> <h4>计算结果为:</h4> <hr> <p>个人账户养老金=(<span class="gz"></span>*<span class="bl"></span>%*12*<span class="nx"></span>)/139 = <span class="gr"></span></p> <p>基础养老金=(<span class="pj"></span>+<span class="gz"></span>)/2*<span class="nx"></span>*1%=<span class="jc"></span></p> <p>月退休工资估算=<span class="gr"></span> +<span class="jc"></span> = <span class="gs"></span></p> </p> </div> <h3>本测算只是预估个大概并不是准确的,且缴费基数、市平均工资、政策每年都会有浮动调整,谁也不可能几十年同一个基数缴费,仅供参考娱乐。</h3> <script> function ab() { var gz = $("input[name=gz]").val() * 1; var nx = $("input[name=nx]").val() * 1; var bl = $("input[name=bl]").val() * 1; var pj = $("input[name=pj]").val() * 1; var gr = (gz * bl/100 *12 * nx / 139).toFixed(2) * 1; var jc = ((pj + gz) / 2 * nx * 0.01).toFixed(2) * 1; var gs = (gr + jc) .toFixed(2) $(".pj").text(pj); $(".gz").text(gz); $(".nx").text(nx); $(".bl").text(bl); $(".gr").text(gr); $(".jc").text(jc); $(".gs").text(gs); } ab(); $("input").keyup(ab) </script> </body> </html>
- 页面相关 canvas笔记
-
发表日期:2022-08-22 09:18:53 | 来源: | 分类:页面相关
-
示例1
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style> #imooc{ border:1px solid #ccc; /*width: 800px;*/ } </style> </head> <body> <canvas id="imooc" width="800" height="800"></canvas> <script> // 根据id属性获取到canvas标签 const canvas = document.getElementById('imooc'); // 获取到canvas的 渲染上下文, 渲染上下文的概念后面有讲到 const ctx = canvas.getContext('2d'); ctx.fillStyle = 'orange'; ctx.fillRect(10, 10, 100, 100); ctx.stroke(); // 打线笔移动到起点 ctx.moveTo(5,5); // 开始描线到终点 ctx.lineTo(80,30); // 选择绿色的画笔 ctx.strokeStyle="red"; // 开始用画笔描边 ctx.stroke(); ctx.beginPath(); //绘制第一条线段 ctx.moveTo(10,10); ctx.lineTo(100,50); ctx.lineTo(200,10); ctx.strokeStyle="red"; ctx.lineWidth=4; //设置线段宽度为4px ctx.stroke(); ctx.beginPath(); //绘制第二条线段 ctx.moveTo(10,30); ctx.lineTo(100,70); ctx.lineTo(200,30); ctx.strokeStyle="green" ctx.lineWidth=5; //设置线段宽度为5px ctx.stroke(); ctx.beginPath(); //绘制第三条线段 ctx.moveTo(10,50); ctx.lineTo(100,100); ctx.lineTo(200,50); ctx.strokeStyle="blue" ctx.lineWidth=6; //设置线段宽度为6px ctx.stroke(); ctx.beginPath(); ctx.moveTo(250,10); ctx.lineTo(250,100); ctx.lineTo(300,100); ctx.lineTo(300,10); ctx.lineTo(250,10); ctx.closePath(); ctx.strokeStyle="blue" ctx.lineWidth=8 ctx.stroke(); ctx.rect(350,10,300,100); ctx.strokeStyle = "hlsa(60,50%,50%,0.5)" ctx.fillStyle = "hlsa(60,50%,50%,0.5)" ctx.fill(); ctx.stroke(); ctx.closePath(); ctx.beginPath(); ctx.rect(10,200, 100,100) let lg = ctx.createLinearGradient(10,100, 110,100) // 1. 创建渐变线 lg.addColorStop(0, "#ff0000") // 2. 设定关键点 lg.addColorStop(0.5, "#fff") // 2. 设定关键点 lg.addColorStop(1, "#000") // 2. 设定关键点 ctx.fillStyle = lg; // 3. 填充应用渐变线 ctx.fill(); ctx.beginPath(); ctx.rect(200,200, 100,100) let lg1 = ctx.createLinearGradient(200,300, 300,300) // 1. 创建渐变线 lg1.addColorStop(0, "#ff0000") // 2. 设定关键点 lg1.addColorStop(0.5, "#fff") // 2. 设定关键点 lg1.addColorStop(1, "#000") // 2. 设定关键点 ctx.strokeStyle = lg1; // 3. 填充线性渐变 ctx.stroke(); ctx.beginPath(); ctx.rect(350,200, 100,100) let lg2 = ctx.createRadialGradient(400,250,0,400,250,50) // 1. 创建径向渐变线 lg2.addColorStop(0, "#ff0000") // 2. 设定关键点 lg2.addColorStop(0.5, "#fff") // 2. 设定关键点 lg2.addColorStop(1, "rgba(0,0,0,1)") // 2. 设定关键点 ctx.fillStyle = lg2; // 3. 填充应用渐变线 ctx.fill(); </script> </body> </html>
- SQLServer 大坑之分页
-
发表日期:2022-08-20 10:46:18 | 来源: | 分类:SQLServer
-
示例1
SELECT T1.* FROM (SELECT result.*, ROW_NUMBER() OVER ( ORDER BY rand()) AS ROW_NUMBER FROM (SELECT * FROM [Users] WHERE ustate = 1) AS result ) AS T1 WHERE (T1.ROW_NUMBER BETWEEN 1 AND 10)
示例2
SELECT top 10 * FROM [Users] WHERE ustate = 1 and uid not in( SELECT top ( N * 10) UID FROM [Users] WHERE ustate = 1 --N:0第一页 1第二页 类推 )
示例3
select top 10 * from Users where uid > ( select isnull(max(uid),0) from ( select top N uid from Users order by uid --N:0第一页 1第二页 类推 ) A ) order by uid
- 前端开发(1)
- 数据库(0)
- PHP(0)
- PHP杂项(34)
- PHP基础-李炎恢系列课程(20)
- 中文函数手册(0)
- 错误处理 函数(13)
- OPcache 函数(6)
- PHP 选项/信息 函数(54)
- Zip 函数(10)
- Hash 函数(15)
- OpenSSL 函数(63)
- Date/Time 函数(51)
- 目录函数(9)
- Fileinfo 函数(6)
- iconv 函数(11)
- 文件系统函数(81)
- 多字节字符串 函数(57)
- GD 和图像处理 函数(114)
- 可交换图像信息(5)
- Math 函数(50)
- 程序执行函数(11)
- PCNTL 函数(23)
- JSON 函数(4)
- SPL 函数(15)
- URL 函数(10)
- cURL 函数(32)
- 网络 函数(33)
- FTP 函数(36)
- Session 函数(23)
- PCRE 函数(11)
- PCRE 正则语法(19)
- 数组 函数(81)
- 类/对象 函数(18)
- 函数处理 函数(13)
- 变量处理 函数(37)
- SimpleXML 函数(3)
- 杂项 函数(31)
- 字符串 函数(101)
- JAVA(0)
- Android(0)
- Linux(0)
- AI大模型(9)
- 其他(0)