无需言 做自己 业 ,精于勤 荒于嬉.

AI大模型 常用文本嵌入模型

发表日期:2025-03-01 16:55:24 | 来源: | 分类:AI大模型


OpenAI的开源嵌入模型维度多语言性能(MIRACL)英语性能(MTEB)
text-embedding-3-large307254.9%64.6%
text-embedding-3-small153644.0%62.3%
text-embedding-ada-002153631.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‌

        专注大规模数据索引与检索优化,支持树形索引、向量相似性搜索等高效检索方法,适配主流LLM‌35。

  • ‌NeMo Guardrails‌

        NVIDIA 推出的开源工具包,用于为对话系统添加安全防护规则,控制话题边界并提升交互可靠性‌13。


二、向量数据库


  • ‌Chroma‌

        轻量级开源向量数据库,支持快速嵌入存储与相似性搜索,适合中小规模RAG应用‌35。

  • ‌Pinecone‌

  • 托管式向量数据库,提供高吞吐量检索服务,支持自动扩缩容与低延迟响应‌23。

  • ‌FAISS‌

        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

image.png

阅读全文 »

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 (双精度)INT8INT4显存CUDA 核心数发售时间发售价(人民币)
NVIDIA H100Hopper134 TFLOPS67 TFLOPS34 TFLOPS2000 TOPS4000 TOPS80 GB HBM314,5922022 Q3¥237,600+
NVIDIA A100Ampere312 TFLOPS19.5 TFLOPS9.7 TFLOPS624 TOPS1248 TOPS40/80 GB HBM26,9122020 Q2¥79,200+
NVIDIA V100Volta125 TFLOPS15.7 TFLOPS7.8 TFLOPS--16/32 GB HBM25,1202017 Q3¥57,600+
NVIDIA TITAN VVolta110 TFLOPS13.8 TFLOPS6.9 TFLOPS--12 GB HBM25,1202017 Q4¥21,593
NVIDIA RTX 6000 AdaAda Lovelace91.1 TFLOPS45.6 TFLOPS0.71 TFLOPS730 TOPS1460 TOPS48 GB GDDR618,1762022 Q4¥52,560
NVIDIA RTX 4090Ada Lovelace165 TFLOPS82.6 TFLOPS1.3 TFLOPS1322 TOPS2644 TOPS24 GB GDDR6X16,3842022 Q4¥11,513
NVIDIA RTX 4080Ada Lovelace97.4 TFLOPS48.7 TFLOPS0.76 TFLOPS779 TOPS1558 TOPS16 GB GDDR6X9,7282022 Q4¥8,633
NVIDIA RTX 3090 TiAmpere80 TFLOPS40 TFLOPS0.63 TFLOPS320 TOPS640 TOPS24 GB GDDR6X10,7522022 Q1¥14,393
NVIDIA RTX 3090Ampere72 TFLOPS36 TFLOPS0.56 TFLOPS285 TOPS570 TOPS24 GB GDDR6X10,4962020 Q3¥10,793
NVIDIA RTX 3080 TiAmpere68 TFLOPS34 TFLOPS0.53 TFLOPS272 TOPS544 TOPS12 GB GDDR6X10,2402021 Q2¥8,633
NVIDIA RTX 3080Ampere60 TFLOPS30 TFLOPS0.47 TFLOPS238 TOPS476 TOPS10/12 GB GDDR6X8,7042020 Q3¥5,033
NVIDIA RTX 3070 TiAmpere44 TFLOPS22 TFLOPS0.34 TFLOPS174 TOPS348 TOPS8 GB GDDR6X6,1442021 Q2¥4,313
NVIDIA RTX 3070Ampere40 TFLOPS20 TFLOPS0.31 TFLOPS163 TOPS326 TOPS8 GB GDDR65,8882020 Q4¥3,593
NVIDIA RTX 3060 TiAmpere32.4 TFLOPS16.2 TFLOPS0.25 TFLOPS129 TOPS258 TOPS8 GB GDDR64,8642020 Q4¥2,873
NVIDIA RTX 3060Ampere25.4 TFLOPS12.7 TFLOPS0.2 TFLOPS101 TOPS202 TOPS12 GB GDDR63,5842021 Q1¥2,369
NVIDIA RTX 2080 TiTuring26.8 TFLOPS13.4 TFLOPS0.42 TFLOPS107 TOPS214 TOPS11 GB GDDR64,3522018 Q3¥7,193
NVIDIA RTX 2080Turing20.2 TFLOPS10.1 TFLOPS0.32 TFLOPS81 TOPS162 TOPS8 GB GDDR62,9442018 Q3¥5,033
NVIDIA RTX 2070Turing15.8 TFLOPS7.9 TFLOPS0.25 TFLOPS63 TOPS126 TOPS8 GB GDDR62,3042018 Q4¥3,593
NVIDIA RTX 2060Turing13 TFLOPS6.5 TFLOPS0.2 TFLOPS52 TOPS104 TOPS6 GB GDDR61,9202019 Q1¥2,513
NVIDIA TITAN RTXTuring32.6 TFLOPS16.3 TFLOPS0.51 TFLOPS130 TOPS261 TOPS24 GB GDDR64,6082018 Q4¥17,993
NVIDIA GTX 1080 TiPascal22.6 TFLOPS11.3 TFLOPS0.35 TFLOPS--11 GB GDDR5X3,5842017 Q1¥5,033
NVIDIA GTX 1080Pascal17.8 TFLOPS8.9 TFLOPS0.28 TFLOPS--8 GB GDDR5X2,5602016 Q2¥4,313
NVIDIA GTX 1070Pascal13 TFLOPS6.5 TFLOPS0.2 TFLOPS--8 GB GDDR51,9202016 Q2¥2,729
NVIDIA GTX 1060Pascal8.8 TFLOPS4.4 TFLOPS0.14 TFLOPS--6 GB GDDR51,2802016 Q3¥1,793
NVIDIA TITAN XpPascal22.6 TFLOPS11.3 TFLOPS0.35 TFLOPS--12 GB GDDR5X3,8402017 Q1¥8,640
NVIDIA TITAN XPascal22.6 TFLOPS11.3 TFLOPS0.35 TFLOPS--12 GB GDDR5X3,5842016 Q2¥8,640
NVIDIA GTX 980 TiMaxwell11.3 TFLOPS5.6 TFLOPS0.18 TFLOPS--6 GB GDDR52,8162015 Q2¥4,673
NVIDIA GTX 980Maxwell9.2 TFLOPS4.6 TFLOPS0.14 TFLOPS--4 GB GDDR52,0482014 Q3¥3,953
NVIDIA GTX 970Maxwell7.0 TFLOPS3.5 TFLOPS0.11 TFLOPS--4 GB GDDR51,6642014 Q3¥2,369
NVIDIA GTX 960Maxwell4.6 TFLOPS2.3 TFLOPS0.07 TFLOPS--2/4 GB GDDR51,0242015 Q1¥1,433
NVIDIA GTX 750 TiMaxwell2.2 TFLOPS1.1 TFLOPS0.03 TFLOPS--2 GB GDDR56402014 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

阅读全文 »

全部博文(1589)
集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。