自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个金牛座猿猿子的技术分享空间

欢迎参观我的个人博客 https://www.madbull.site/

  • 博客(91)
  • 收藏
  • 关注

原创 ip rule 策略路由

Linux策略路由核心命令iprule解析:通过from、iif等条件控制流量路由选择。主要功能包括:基于源IP(from)选择路由表,控制本机出站流量;通过入接口(iif)匹配转发/回包路径;支持to、fwmark等高级匹配条件。规则按priority优先级顺序执行,建议自定义规则显式指定优先级。典型应用包括多WAN出口、对称路由和基于应用的流量分类。需注意路由表预定义和实际路由配置,可使用iprouteget等命令调试。

2025-10-17 13:52:24 968 1

原创 Lua C API 中的 lua_rawseti 与 lua_rawgeti 介绍

摘要:Lua C API中的lua_rawseti和lua_rawgeti是专门用于操作表中整数键的函数,不触发元表机制,适合性能敏感场景。lua_rawseti将栈顶值赋给指定整数键并弹出值,lua_rawgeti获取指定键值压入栈顶。这两个函数常用于数组操作、注册表管理及元方法内部实现,相比普通表访问函数性能更优,但仅支持整数键。使用时需注意栈平衡,适合高频数组访问或需要绕过元方法的场景,是Lua C API中高效稳定的基础工具。

2025-10-17 13:50:35 579

原创 Lua C API 中的注册表介绍

Lua CAPI注册表是专为C代码设计的全局存储区,使用伪索引LUA_REGISTRYINDEX访问。它为C代码提供了安全存储Lua对象的方式,避免被垃圾回收和栈变化影响。推荐使用luaL_ref获取整数引用作为键,通过lua_rawgeti取回值,并用luaL_unref及时释放。典型应用包括保存回调函数、管理对象生命周期等。注意避免使用字符串键以防冲突,并确保及时释放引用防止内存泄漏。注册表机制简单实用,是C与Lua交互的重要工具。

2025-10-16 09:42:44 380

原创 Lua 中的 __index、__newindex、rawget 与 rawset 介绍

文章摘要:Lua中的元表机制通过__index和__newindex两个关键元方法控制表的读写行为,分别处理不存在的键的读取和写入操作。配套的rawget和rawset函数可绕过元表直接操作,避免递归问题。__index常用于实现默认值/继承,__newindex适用于数据校验/日志记录。使用时需注意:仅对不存在键生效、元方法内部必须用raw操作、性能敏感场景慎用。这些机制为构建配置系统、对象模型等提供了灵活支持。

2025-10-16 09:39:26 493

原创 Lua中,表、元表、对象、类的解析

本文系统解析了Lua中的表、元表、对象和类的关系。表是Lua唯一的复合数据结构,可作数组、字典、对象等用途。元表作为表的"行为说明书",通过元方法(__index、__call等)控制表的操作行为。对象本质上是表+方法+可选元表,支持状态和行为封装。通过原型继承机制,利用元表的__index特性可实现类式编程,包括构造函数、继承等面向对象特性。文章详细介绍了四者的实现方式、核心作用及最佳实践,提供了完整的代码示例和关系图谱,揭示了Lua基于原型实现面向对象编程的核心机制。

2025-10-15 09:56:45 1137

原创 Lua C API 中一段LUA建表过程解释

这段代码展示了Lua C API中创建表的详细过程。首先通过lua_newtable()创建空表并压栈,然后依次压入键值对("cookie"字符串和数字0x2b21ef6f),使用lua_settable()将这对元素存入表中。接着通过luaL_register()将textlib_f数组中的函数注册到该表。整个过程演示了Lua栈操作的基本原理,包括压栈、设置表元素和函数注册等核心操作,最终返回包含这些元素的表。

2025-10-15 09:18:17 451

原创 C++中,标准库中的容器

这篇文章详细介绍了C++标准库中的容器(Containers)及其分类。主要分为三大类:序列容器(如vector、list、deque等)、关联容器(如set、map等)和无序关联容器(如unordered_set、unordered_map等)。文章还介绍了容器适配器(如stack、queue等)以及它们各自的特点、使用场景和性能特征。通过具体代码示例展示了各种容器的使用方法,并提供了如何根据需求选择合适容器的速查表。最后强调在现代C++编程中应优先使用标准容器,以获得更安全、高效和易维护的代码。

2025-10-14 11:18:28 939

原创 lvm扩展thin pool

本文介绍了如何利用LVM技术扩展ThinPool存储空间。ThinPool由数据卷和元数据卷组成,支持按需分配空间的ThinVolume。文章详细说明了扩展步骤:1)对新硬盘分区创建PV;2)将PV加入现有VG;3)扩展ThinPool逻辑卷。同时提供了相关命令(pvcreate/vgextend/lvextend)及查看工具(pvdisplay/lvscan等)。最后还介绍了从ThinPool创建/删除LV的方法。适用于需要在LVM环境下扩容ThinPool存储的技术人员。

2025-10-14 11:16:06 369

原创 mysql、mariadb修改数据存储路径

MySQL/MariaDB修改数据存储路径的步骤:1)停止服务;2)查找默认路径(/var/lib/mysql);3)带权限复制数据到新位置;4)修改配置文件中的datadir参数;5)重启服务。注意移动数据时需使用cp -rfp命令保留文件权限。

2025-10-13 10:43:45 214

原创 frp反向代理工具

本文介绍了在内网搭建邮件服务器(Postfix+Dovecot)后,通过FRP工具实现公网访问的完整方案。详细讲解了FRP的下载、配置和部署过程,重点包括:1)双向TLS认证配置;2)服务端与客户端证书生成要求;3)多端口映射配置(SMTP/IMAP等);4)Systemd服务文件编写。相比SSH隧道方案,该方案更稳定可靠,适合长期运行。文中还提供了相关证书生成方法的往期文章链接供参考。

2025-10-13 10:39:33 2105

原创 PVE虚拟机缩小磁盘

本文介绍了在PVE虚拟环境中缩小Ubuntu虚拟机磁盘的具体步骤。首先在虚拟机内部操作:关闭swap、卸载并删除多余分区,重新创建3G的swap分区。然后在宿主机端使用lvresize缩小LVM卷,利用gdisk工具重建损坏的GPT分区表。最后修改虚拟机配置文件完成磁盘容量调整。文章特别指出,系统盘和数据盘应分开创建虚拟磁盘以便管理,并提供了详细的操作截图和命令说明。整个过程涉及虚拟机内部和宿主机端的双重操作,技术要点包括分区调整、LVM卷管理以及GPT分区表修复。

2025-08-07 09:53:52 2009

原创 基于ubuntu搭建gitlab

本文介绍了在Ubuntu系统上搭建GitLab的两种方法:1. 原生安装:通过添加GitLab软件源、安装必要软件包、配置gitlab.rb文件(设置外部URL、时区、Nginx等参数)并启动服务;2. Docker安装:使用docker-compose创建容器,配置数据卷和端口映射。两种方法首次登录都需要使用root账户,初始密码分别保存在/etc/gitlab/initial_root_password和./config/initial_root_password文件中。文中还提到需要配置SSL证书以实

2025-08-07 09:50:58 546

原创 ubuntu增加一个软件仓库流程

本文介绍了如何为Linux系统添加第三方软件源的方法。主要内容包括:1.通过编辑/etc/apt/sources.list文件或在/etc/apt/sources.list.d/目录下创建单独.list文件添加软件源地址;2.添加官方GPG密钥以验证软件包真实性;3.最后执行apt update更新软件包列表。文章详细说明了软件源地址的格式要求,并提供了添加GPG密钥的具体命令行操作。

2025-08-07 09:49:38 572

原创 使用OMV+NextCloud搭建私有云

本文介绍了使用OpenMediaVault(OMV)和NextCloud搭建私有云存储系统的详细步骤。首先通过PVE安装基于Debian的OMV系统,配置硬件并安装compose插件;然后创建共享文件夹作为数据存储;最后通过Docker Compose部署包含NextCloud、MariaDB和Redis的容器组,配置端口映射和环境变量。文章提供了完整的docker-compose.yml配置示例,并说明首次访问和手机客户端安装方法。该方案适合家庭和小型企业构建私有云存储,既能保障数据隐私,又提供文件同步、

2025-08-04 19:07:42 2067 3

原创 PVE环境对网口和wifi的配置

本文介绍了在PVE 8.4.0环境中配置网络接口的完整流程。首先通过MAC地址重命名网口为eth0、eth1和wlan0;然后为wifi配置连接密码,包括安装必要工具和设置wpa_supplicant配置文件;最后详细说明了创建网桥、设置IP地址、子网掩码和网关的方法,并提供了/etc/network/interfaces文件的完整配置示例。配置完成后可通过重启网络服务或PVE服务器来验证设置,最终可在PVE管理页面查看网络配置情况。

2025-08-04 19:03:39 1341

原创 getopt_long命令行解析

本文介绍了Linux中getopt_long函数的用法,用于解析命令行参数。该函数支持长短选项混合使用,通过struct option结构体定义参数属性。文章详细说明了各参数含义,包括no_argument/required_argument/optional_argument三种参数类型,并提供了完整示例代码演示如何解析verbose、output和count等不同参数,最后输出配置结果。示例展示了getopt_long处理必须参数、可选参数及错误检测的能力。

2025-07-23 15:17:22 393

原创 信号量demo

本文对比了条件变量和信号量两种同步原语的核心区别,并通过生产者-消费者模型演示了信号量的使用。关键区别在于:条件变量无状态需手动唤醒,而信号量有计数器自动控制。代码实现了一个缓冲区大小为5的生产者-消费者系统,使用三个信号量(empty、full、mutex)协调两个生产者和两个消费者线程的同步操作,确保线程安全和资源有序访问。最后通过编译测试验证了程序的正确性。

2025-07-21 18:20:36 362

原创 Docker制作python环境

本文介绍了使用Docker制作Python3.7.8环境的详细步骤。通过阿里龙蜥8.6作为基础镜像,配置国内镜像源后,安装编译依赖并设置时区。重点讲解了Python3.7.8的源码编译安装过程,包括创建符号链接、配置pip源以及处理特殊依赖库的方法。文章还提供了手动添加无法通过pip安装的库的解决方案(如yara库),并说明了工作目录设置和服务部署方法。最后强调了Docker容器启动命令不能后台运行的技术要点。该方案适用于需要为老代码搭建特定Python环境的场景。

2025-07-01 15:37:19 560

原创 kali系统apt密钥丢失解决方法

摘要:本文介绍Kali Linux系统APT密钥丢失的解决方法:1)备份并重置软件源为官方源;2)手动下载安装新格式GPG密钥;3)允许不安全的仓库更新;4)重装APT工具及密钥管理包;5)执行完整系统更新。修复后可切换至国内镜像源(中科大/阿里云/清华等),并提供了各镜像源配置示例。方法涵盖从密钥修复到系统更新的完整流程。(148字)

2025-07-01 14:44:20 650

原创 AI接口使用–阿里云百炼

本文分享了使用阿里云百炼AI文本生成接口开发抖音起名小程序的实践经验。作者详细介绍了四个关键步骤:首先注册阿里云百炼账号并获取API-Key;其次安装Python SDK(DashScope库);然后选择文本模型并按接口格式开发;最后进行功能测试。文中提供了完整的代码示例,包括模型选择、API调用和响应处理逻辑,特别展示了如何处理返回的JSON格式内容。该教程为开发者使用阿里云百炼进行AI文本生成提供了实用参考,其经验也可应用于其他类似AI集成项目开发。

2025-06-27 15:00:25 1075

原创 docker-compose配置文件解析

本文介绍了使用Docker Compose管理多容器应用的方法,重点解析了docker-compose.yml配置文件的编写格式。文章以一个开源项目的compose.yml为例,详细说明了配置文件中各个关键部分的含义,包括日志记录模板、网络定义、卷存储以及服务配置等。特别讲解了服务配置中的镜像指定、端口映射、环境变量、启动依赖和日志模板引用等重要功能。通过该配置文件,开发人员可以用单一命令轻松管理多容器Docker应用的生命周期。

2025-06-27 12:06:25 487

原创 搭建私有docker库

《搭建安全私有Docker仓库指南》 摘要:本文详细介绍了如何搭建带有加密通讯和登录认证功能的私有Docker仓库。通过使用registry:2镜像,配合htpasswd工具创建认证文件,并生成自签名SSL证书实现安全连接。文章包含完整的操作步骤:从准备证书和认证文件,到通过docker run命令启动容器(配置端口映射、目录挂载及环境变量),最后测试镜像推送/拉取功能。针对证书验证问题,还提供了在daemon.json配置非安全仓库的解决方案。整个过程兼顾了私有仓库的管理便利性和通信安全性,适合企业级应用

2025-06-26 18:34:20 531

原创 判断给定字符串是不是IP地址

本文介绍了如何判断字符串是否为IP地址的方法。作者提供了一个C语言函数is_valid_ip(),使用inet_pton()函数验证输入字符串是否符合IPv4或IPv6格式。若符合IPv4返回1,IPv6返回2,否则返回0表示非IP地址。该方法可用于在主机名转IP地址前进行预处理,避免不必要的转换操作。该函数封装简单高效,适合在网络编程中直接使用。

2025-06-26 10:46:37 347

原创 C语言中获取主机或者域名的IP地址

【摘要】本文介绍了在C语言中通过主机名/域名获取IP地址的实现方法,适用于Docker容器间网络通信场景。作者分享了一个可重用函数get_ip_by_hostname(),该函数使用getaddrinfo()系统调用解析IPv4/IPv6地址,支持动态内存分配,并提供了三种测试用例(本地hosts配置、localhost和网易域名)。代码通过socket编程接口实现网络地址转换,最终输出解析到的全部IP地址列表,为容器化服务通信提供了主机名解析的解决方案。(149字)

2025-06-25 15:26:09 348

原创 MySql常用指令

查询 ttt 表,并把结果写到 ttt.csv 文件,以 ‘,’ 作为分割符,以 ‘\r\n’ 作为换行,以 ” 作为每一项的结束符号。修改 rrr 表 sss 列类型为 varchar(5),备注改为 xxxxx。修改表 rrr 增加索引,以bbb建立iii索引。给表 rrr 在ccc后边增加 sss 列。执行xxx.sql文件中的sql语句;修改表 rrr 删除 ccc 字段。显示用户 ’user’ 的授权情况。显示 ‘a%’ 模式匹配的配置参数。列出当前库下所有的表名字。显示表xxx的建表语句。

2025-02-25 16:03:19 531

原创 pip更改源设置

添加配置文件 ~/.pip/pip.conf ,如果存在直接修改。在pip指令的时候使用 -i 参数指定。

2025-02-25 15:59:14 200

原创 docker-compose基本操作

使用场景:当你对服务进行了修改(如更新了代码或改变了环境变量),需要重新加载这些更改时使用。使用场景:当你修改了 Dockerfile 或者构建上下文中的文件后需要重新构建镜像时使用。使用场景:当你暂时不需要使用服务但希望保留其状态以便稍后快速恢复时使用。使用场景:当你想要彻底关闭你的应用环境,并清理所有相关资源时使用。使用场景:当你想要确保所有服务都使用最新版本的镜像时使用。使用场景:当你需要知道某个服务在主机上的映射端口时使用。使用场景:当你只是想重启已有的容器而不重建它们时使用。

2025-02-24 12:03:49 874

原创 正则表达式特殊字符

正则表达式特殊字符。

2025-02-20 09:47:15 551

原创 正则表达式–断言

正则表达式–断言。

2025-02-20 09:44:48 585

原创 《DeepSeek从入门到精通》下载

直接面向用户或者支持开发者,提供智能对话、文本生成、语义理解、计算推理、代码生成补全等应用场景,支持联网搜索与深度思考模式,同时支持文件上传,能够扫描读取各类文件及图片中的文字内容。DeepSeek:从入门到精通 @新媒沈阳 团队 :余梦珑博士后 清华大学新闻与传播学院新媒体研究中心 元宇宙文化实验室。DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应用。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费商用。

2025-02-14 10:36:05 400

原创 dify大模型应用开发平台搭建

镜像,所以会比较慢,需要等待一段时间。如果之前获取过镜像,就会直接启动了。右上角可以设置按钮可以设置模型供应商、成员、数据来源、API扩展。打开浏览器直接访问 http://xx.xx.xx.xx/install。继续设置,能成功打开下面的页面就是安装成功了。输入刚才设置的邮箱账号和密码登录。在上图中设置一个账号和密码。源的支持很不友好,为了更大可能下载到。镜像,建议多增加一些镜像源。方式运行,所以使用起来很方便。私有化部署的模型为例添加应用。开发平台搭建后是这个样子的。并启动,这两者兼容性非常好。

2025-01-24 16:29:45 1325

原创 使用spring框架搭建一个web项目。

如果想修改相关配置,可以在执行目录(在哪个目录运行java -jar xxxxx,就是哪个目录)下添加 application.propertie 文件,在里边修改spring相关的配置。例如下图,修改了监听端口,监听端口就按照配置的启动的。编写简单的业务处理代码,在src/main/java/com/example/demo/目录下,创建文件 HelloController.java。解压后就是一个完成的spring框架的web项目,我们只需要添加自己的业务代码就可以了。执行 打包后的jar包。

2025-01-17 10:10:10 281

原创 unbound–DNS服务器搭建

unbound 是一个开源的、高性能、验证、递归和转发 DNS 解析器。unbound 设计的目标是提供快速、安全且易于管理的 DNS 服务,适用于各种规模的企业和组织。另外,unbound 可以作为 DNS 缓存使用,首次解析的结果在 unbound 中缓存,当相同的查询再次到来时,可以提高 DNS 解析速度。

2025-01-16 20:40:05 2365

原创 autotools 和 cmake 构建 Makefile

后来 autotools 发展成了许多开源项目的标准工具,在很多大型项目,尤其是起源比较早的项目经常会看到 autotools 相关的脚本。一般情况先,我们会在源文件目录下创建一个 build 目录,进入 build 目录,执行 cmake -DXXX=ON -DYYY=OFF .. ,这样构建不污染源代码,会在 build 本地生成中间文件以及某些根据系统生成的文件(例如:config.h)。遇到具体的报错情况,可以根据提示,把需要的安装的补上来即可。语法比较简洁,平台兼容好,模块化设计,内置了很多。

2025-01-14 18:17:03 1430

原创 CMakeLists.txt常用内置模块

你还可以通过INCLUDE引入自己编写的 CMake 脚本或模块,以实现特定的功能或逻辑。这可以是项目特有的配置脚本,或者是为了解决某些特定问题而编写的辅助函数集合。

2025-01-14 16:33:08 753

原创 cityhash–对字符串的哈希算法

找到需要在C语言调用的函数,在其前后增加 extern “C” { …动态库会安装在 /usr/local/lib/ 目录,头文件在 /usr/local/include/ 目录。在 /usr/local/include/ 目录下创建 cityhash.h 文件。可以按照下边 1.1节 的方式修改,也可以直接下载修改完的代码包。如果cpu不支持 sse4_2 指令,可以不加参数。如果cpu不支持 sse4_2 指令,可以不加参数。的方式解压,然后从 1.2节 开始操作就可以。

2025-01-06 18:35:44 682

原创 maxminddb地理信息库–C语言

这里我下载了两个库:GeoLite2-Country 和 GeoLite2-City,一个精确到国家或地区,一个精确到城市。maxminddb 是一个 IP 的地理信息库,可以根据 IP 地址给出对应的地理位置信息。在C语言中使用此离线库,需要用到的接口在 libmaxminddb 库中,代码是开源的。另外,大多数系统库里也有 libmaxminddb 库,也可以直接从系统源里安装。上述两个步骤都完成了,就可以在C语言中使用了,下面是给的一个示例。maxminddb提供在线查询,也提供了离线库。

2025-01-01 19:04:30 1016

原创 golang实现yaml配置文件的解析

原文地址:golang实现yaml配置文件的解析 – 无敌牛欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等go模块文件 go.mod,用于管理项目的依赖关系和版本信息。主程序 readyaml.go首先,需要整理和更新项目的依赖关系go mod tidy这个过程中,会下载缺失的模块。go.mod文件会进行更新,并且多出一个go.sum文件,用于记录项目依赖树中所有模块的特定版本内容的预期哈希值。在这个过程中,如果无法联网,或者无法访问源,则会报错如下图。如果没有报错

2024-12-25 11:31:28 1140

原创 私有化部署开源AI模型

ollama 是一个开源平台,提供了AI模型管理工具也叫ollama,可以用来下载、安装、删除、运行、停止开源模型。既然是个脚本,就手动调试一下吧。,官方给的 linux 安装方案很简单,如下图。只需要运行一个远端脚本,就能自动根据系统硬件情况下载对应的安装包来安装。由于我的电脑性能不高,所以获取一个 qwen2.5 的 0.5b 的模型来运行,更大的模型推理会比较慢。等下载完成后,修改 install.sh 脚本,如下图。于是手动下载文件,并修改脚本,跳过下载的部分。原来是因为文件下载的问题,如下图。

2024-12-22 15:39:36 1538

原创 pnpm开发环境搭建

如果没有pnpm命令,需要安装。如果已经有此命令,则不需要重复安装。用来设置API断点。下载依赖的时候,有可能会覆盖配置项,可用。本次以 debian 系列为例。自动下载项目依赖的库。查看配置是否被修改。

2024-12-19 20:21:55 902

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除