自定义博客皮肤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/

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

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

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

2025-01-24 16:29:45 569

原创 使用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 215

原创 unbound–DNS服务器搭建

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

2025-01-16 20:40:05 1211

原创 autotools 和 cmake 构建 Makefile

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

2025-01-14 18:17:03 1270

原创 CMakeLists.txt常用内置模块

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

2025-01-14 16:33:08 631

原创 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 462

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

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

2025-01-01 19:04:30 654

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

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

2024-12-25 11:31:28 924

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

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

2024-12-22 15:39:36 852

原创 pnpm开发环境搭建

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

2024-12-19 20:21:55 495

原创 delve调试环境搭建—golang

由于平时不用 IDE 开发环境,习惯在 linux终端+vim 环境下开发,所以找了golang的调试工具,delve类似gdb的调试界面,根据个人习惯还是比较好用的。进入拉取的代码目录,有Makefile文件,这就比较好办了。

2024-12-18 22:09:37 971

原创 windows常用快捷指令

windows键 + R 输入以下指令,敲回车,就可以快速打开对应程序。wmimgmt.msc 打开win管理体系结构。winver 检查windows版本。diskmgmt.msc 磁盘管理。shrpubw 创建共享文件夹。nslookup 网络管理工具。eventvwr 事件查看器。sndvol 音量控制器。sfc 系统文件检查器。regedit 注册表。mspaint 画板。shutdown 关机。write 写字板。mstsc 远程桌面。

2024-12-18 16:03:21 316

原创 分享一个开源代理池项目

分享一个搜集代理的开源项目,可以扫描全网的公共代理,包括HTTP、HTTPS、SOCKS4、SOCKS5 四种类型的代理。当某些网站不好访问的时候,或者运行爬虫被封禁IP的时候,可以挑选一个代理,帮助访问。自己测试有些代理稳定,有些不太稳定,这个和代理来源有关系。可以在浏览器、操作系统、应用软件上配置使用,也可以作为接口在代码中获取临时代理来使用。项目中定时轮询也是在检测代理的稳定性,以便筛选出高质量的代理。不添加密码,可以把密码去掉,具体修改内容如下图所示。源,一直觉得这个源挺好用的。

2024-12-17 20:09:09 730

原创 python历史版本安装

在python的项目中,由于不同版本的 Python 可能在语法、标准库接口以及第三方库支持方面存在差异。所以,python 有时候需要指定版本运行。但是 linux 系统里一般只预装了两三个python版本,所以就需要我们自己安装指定版本了。以下以 python3.9.19 为例在系统安装。默认会修改对应的子版本,可以手动修改回去。python 公布一个发行版本的地址,从这里可以搜集到你需要的所有版本。

2024-12-17 15:30:17 335

原创 linux环境一句话后门

还有别的方法,可以自己探索。在 肉鸡 上回连到 CC 服务器,把输入输出重定向到 回连CC服务器的tcp连接中;CC 发送的数据,用shell(bash、dash等)脚本执行后,把指令结果返回给 CC 服务器。这种后门还是比较好检测的,自己运行一下,从操作历史记录、进程、端口连接、系统日志中找一些特征就可以识别到此后门。此处用 192.168.1.53 作为CC服务端的示例,这些后门回连到此服务器。5555端口输入,6666端口输出。则监听5555端口,作为后门的回连端口。也可以叫一句话木马,一个意思。

2024-12-13 21:36:27 500

原创 手搓一个极简远端git库

最小的管理只需要 git 就可以了。那么 gitlab 和 git 到底是什么关系呢?原来,git 才是 Linus Torvalds 的杰作,而 gitlab 则是基于 git 开发的。以 git 为核心,又增加了一些权限管理验证、CI/CD、代码库管理、讨论、wiki等附加功能。那么,想做一个 极简的 代码库管理平台,只需要一个 git 工具,可不可以实现呢?完全可以!准确的说,git + openssh-server 可以实现。

2024-12-13 19:01:13 993

原创 vim插件(三)之doxygen

如果每次写代码还要考虑注释的格式问题,又产生了一部分精力开销,有没有好用的插件呢?如果要手动安装,只需要下载了 DoxygenTookit.vim,直接把文件放在 ~/.vim/autoload/ 目录下也是一样的效果。如果是手动安装,这样章节就结束了,可以直接测试了。然后在 vim 命令行模式下输入: :Dox 、 :DoxLic 、 :DocAuthor 等指令,会向文件自动添加预设的数据。这样这个插件就安装完成了。在 ~/.vim/vimrc 增加 DoxygenTookit.vim 的支持。

2024-12-12 14:31:27 408

原创 vim插件(二)之coc.nvim

使用 vim 作开发,竟然非常友好的给出了提示,使用上下键可以选择使用给出的提示内容,然后使用 Ctrl + Y 快捷键可以把选中的内容写到当前位置。本来使用 vim 开发就是因为 vim 运行比较轻量,操作丰富、高效,界面简洁突出重点,也不用鼠标和键盘之间来回切换,更省去了精确控制鼠标指针这种精神高度集中的消耗。之前写了一些 vim 基本操作和 vim 相关操作的文章,最好先看一下之前写的关于 vim 插件的用法,也好理解今天分享的内容。打开 vim,不用加任何参数,直接执行:vim 命令即可。

2024-12-12 00:26:47 1761

原创 doxygen–自动生成文档工具

doxygen是软件开发中广泛使用的文档生成工具。它可以从源代码注释中自动生成文档,解析类、函数、参数相关信息,并生成 HTML 和 PDF 格式的文档。doxygen 简化了并且标准化了文档生成过程,可以实现跨编程语言和项目来维护管理项目,增强编码协助能力。官方地址:https://www.doxygen.nl/index.html

2024-12-11 11:42:23 571

原创 log4cxx在C语言中使用

另外,还需要对每一个 _logger 对象编写对应的 日志接口函数(指的是下方代码中的宏和函数,例如:LOGGER_ERROR、logger_error等)。另外对于公网邮箱可能会做一些基本的垃圾邮件拦截策略,所以需要做一些基本的 DNS 设置,至少设置自己的 公网IP 为一个合法的 MX 记录值。log4cxx 支持 普通日志文件、按照文件大小轮转的日志、按照日期轮转的日志、syslog日志、控制终端、smtp、socket、数据流多种方式记录日志。配置的是 aaa@aaa.com 账号的登录地址。

2024-12-11 10:01:55 1195

原创 minio添加证书–linux环境

myCA.crt 是用来验证对方的证书是否合法的,例如 node1 访问 node2,node2 把 public.crt 推送给 node1 ,node1用系统信任的证书或者用指定目录的证书(在本文章是 certs/CAs/myCA.crt 文件)对证书做验证,通过了,则继续会话。三台设备用到的根证书,也就是 CAs/myCA.crt 是同一个,但是 服务端私钥和服务端证书则各不相同。第二,集群设备相互之间做验证,合法的签名证书才能和minio集群通讯。自建根证书,并用此根证书给三个设备分别颁发证书。

2024-12-09 22:24:37 611

原创 minio集群部署–linux环境

我这里准备了3台设备分别是 xxxnode1 xxxnode2 xxxnode3,每台设备提供两个磁盘,挂载到 /data/minio_1 和 /data/minio_2目录,所以这样配置。其中,环境变量文件,默认是 EnvironmentFile=-/etc/default/minio。创建 /usr/lib/systemd/system/minio.service 文件。打开 /etc/hosts 文件,添加需要做集群的几台系统 IP 地址和主机名,如下图,这是3台设备的配置。

2024-12-07 15:40:20 1042

原创 golang实现单例日志对象

本次给出的示例使用 logrus 和 lumberjack 两个库实现日志轮转和自定义日志格式。golang有很多日志包,通过设置和修改都能实现日志轮转和自定义日志格式。

2024-12-05 19:57:08 679

原创 top命令CPU值都是什么意思

st : 虚拟化环境中,虚拟机等待管理程序执行的时间百分比(非虚拟环境中通常为0)值通常意味着系统正在经历 I/O 瓶颈,系统可能正在进行大量的读写操作。ni : 改变过优先级的进程所占用的CPU时间百分比,sy : 由内核消耗的CPU时间百分比(系统调用)wa : 等待I/0完成的CPU时间百分比,高。us : 用户进程执行占用CPU时间百分比。si : 软件中断所占用的CPU时间百分比。id : CPU处于空闲状态的时间百分比。hi : 硬件中断所占CPU时间百分比。

2024-12-05 09:35:06 534

原创 ssh隧道:本地转发和远端转发

3、我们能控制 C服务器,由于端口映射、开放网络策略、代理、VPN等等或者其他原因,我们可以用 C服务器 作为客户端登录到 B服务器;会在 C服务器 上开放一个 63790 的端口,D服务器访问 C服务器 的此端口,就是访问 A服务器 的 6379 端口。会在 C服务器 上开放一个 63790 的端口,访问此端口,就是访问 A服务器 的 6379 端口。A服务器的6379端口,也可以是 B服务器上监听在127.0.0.1的端口。A服务器的6379端口,也可以是 B服务器上监听在127.0.0.1的端口。

2024-12-04 14:00:06 1006

原创 nginx配置常用参数

nginx配置常用参数。

2024-12-04 10:16:59 579

原创 优雅关闭进程

信号,直接强制关闭进程。进程所持有的一些资源,由操作系统来回收处理,这样确实很省事。是可以被捕捉的,也经常用来优雅地关闭进程。我们可以让进程捕捉这两个信号,然后设置信号处理函数,来主动释放进程所持有的资源,让进程自动退出。当然也可以直接发送 2 和 15 信号让进程自动关闭。信号是不可被捕捉,也就不可以被进程重新设置信号处理函数。如果要 C 语言实现,也是同样的道理,捕捉信号,设置信号处理函数,主动退出。一个进程正常运行的时候,可以通过给进程发送。这就需要给进程设置信号响应。信号,让进程主动退出。

2024-12-03 22:23:40 422

原创 设置终端提示格式——PS1变量含义

直接在终端设置,改变当前终端的提示信息。例如:PS1=’\u@\h:\w\$ ‘,显示格式为 root@kali:/data#也可以把变量设置写在 ~/.bashrc 最后一行,每次打开终端都生效。除了上述特殊字符外,

2024-12-03 13:53:56 323

原创 chrony实现NTP时间同步

pool 选项设置 从哪个NTP服务池上同步时间,例如从 阿里云 上同步时间可如下图设置。其中iburst可在初次连接时加速时间同步。域名 或者 IP都可以配置。可以配置多个NTP时间源,以防止某一个时间源无法连接或者不工作。每行一个pool 配置项。增加此配置项,则 chrony 服务可作为一个时间源,给其他系统提供时间同步服务。yum install chrony 或者 apt install chrony。打开配置文件:/etc/chrony/chrony.conf。

2024-12-02 21:53:05 557

原创 linux好玩又没用的命令

介绍 linux 环境下几款好玩但又没用的命令,使用 linux 系统的时候增加一些乐趣。1、cmatrix黑客帝国电影中,字符动画的效果安装:apt install cmatrix测试直接执行 cmatrix 开启,关闭 ctrl + c / \ / z 都可以。

2024-12-01 22:26:00 443

原创 在python中连接elasticsearch

【代码】在python中连接elasticsearch。

2024-11-29 15:04:59 490

原创 elasticsearch现有集群扩展节点

给现有的 elasticsearch 集群扩展节点比较容易,已有的集群不需要做任何修改,也不用对服务做任何处理,只需要新的节点主动发现并把添加到现有的集群中即可。和重新搭建 elasticsearch 集群部署类似,只需要修改一下 elasticsearch.yml 配置文件即可。discovery.seed_hosts: 项增加 xxxxnode4 即可。最后只启动新添加的节点即可。现有集群不需要做任何改动。elasticsearch集群部署及加密通讯。

2024-11-29 11:29:46 855

原创 elasticsearch集群部署及加密通讯

第零步,准备给各台设备配置虚拟主机名,这样集群不依赖IP,即使IP变动,改动也更方便。参考往期文章:https://www.madbull.site/?p=1094 第三步 3.2 一节。第一步,颁发证书本次文章自建CA根证书,以自建证书给各个子节点颁发服务端证书。参看这篇文章:https://www.madbull.site/?p=1111 自建根证书,并用此根证书给三个设备分别颁发证书。注意:在创建服务端证书时,用到的 csr.conf 文件中,commonName 和 alt_

2024-11-28 18:30:43 1667

原创 linux系统信号简介

信号是一种重要的进程间通讯方式,这些信号有的有特定的用法,有的可作为扩展和自定义使用。并且大多数信号是可以被重新定义处理函数的。此篇文章逐一解释一下每一个信号的作用。可以看出,linux 系统一般支持 1-31、34-64 共62个信号。其中:1-31 是传统信号,这些信号在Unix和类Unix操作系统中是标准化的,每个信号都有其特定的用途和行为。34-64 是实时信号,用于应用程序之间自定义的进程间通信。

2024-11-27 16:11:20 1569

原创 C语言解析命令行参数

C语言有一个 getopt 函数,可以对命令行进行解析,下面给出一个示例,用的时候可以直接copy过去修改,很方便。

2024-11-26 19:51:54 422

原创 线程池pthread-pool

分享一个线程池库第一步,解压: tar pzxvf pthread-pool.tar.gz,进入工作目录: cd pthread-pool-0.0.2第二步,编译,执行里边的脚本即可: bash autocompile.sh 。第三步,安装,执行命令:make install。动态库libpthreadpool.so会自动安装到 /usr/local/lib 目录,头文件则在 /usr/local/include 目录。

2024-11-25 19:45:10 346

原创 elasticsearch单节点模式部署

第一步:下载官方下载地址:https://www.elastic.co/cn/downloads/elasticsearch,可以 wget 直接下载。第二步:创建用户此示例运行用户使用的是 elstc 用户,同时创建同名用户组。第三步:安装第四步:配置及启动第五步,测试

2024-11-25 11:54:58 1459

原创 xxhash——快速计算哈希的C语言库

分享一个快速计算HASH的开源C语言库–xxhash源代码地址:https://github.com/Cyan4973/xxHashxxHash 是一种极快的哈希算法,它的限制在于 RAM 的速度。 代码具有高度可移植性,并在所有平台上生成相同的哈希值(小端/大端)。 该库包括以下算法: XXH32 :使用 32bits 算术生成 32bits 哈希 XXH64 :使用 64bits 算术生成 64bits 哈希 XXH3 (从 v0.8.0 开始):使用矢量化算术生成 6

2024-11-23 10:16:59 636

原创 openssl创建自签名证书

1 生成私钥openssl genrsa -out server.key 20482 创建证书请求文件openssl req -new -key server.key -out server.csr3 用私钥和证书请求文件,生成签名文件openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt

2024-11-22 15:37:29 847

原创 无锁编程–C语言

锁带来的开销是比较大的,对于高并发处理的数据,使用一些原子操作函数,可以有效避免上锁的开销。GCC内置了一些原子操作函数,可以用来支持无锁编程,用伪代码比较好理解这些函数的具体处理方式。重点是:这些都是原子操作,是线程安全的。常用来实现无锁编程的函数有:

2024-11-22 11:32:49 521

空空如也

空空如也

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

TA关注的人

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