- 博客(28)
- 收藏
- 关注
原创 Go 环境部署 (linux 和Windows 下的 GoLand )
因此,go env -w CGO_ENABLED=1命令将设置CGO_ENABLED环境变量为1,并将其写入到当前的shell配置文件中,以便在新的shell会话中永久生效。注意:确保你的项目目录中不要包含go.mod文件,否则Go会忽略.go-version文件,使用go.mod中指定的Go版本。在Go中,go env -w命令用于设置环境变量。gvm会检查当前目录或其父目录中是否存在.go-version文件,如果存在,它会自动切换到该文件指定的Go版本。打开bashrc文件。
2024-07-09 10:44:22
4384
原创 python环境部署
最好在虚拟环境内执行下面的命令(可以将先前安装的依赖一次性加入到 requirements.txt 中)当用新环境时,可以用 下面的命令一次性安装所有依赖。
2024-06-18 09:41:46
258
原创 Android 平台下 调用第三方 so 库
1、对于 第三方已经编译好的so库,其接口符合JNI 规范的,比如:Java_com_example_callso33_NDKTools55_stringFromJNI这种接口的so库,可以在Java代码中声明它对应的native方法,直接调用根据其接口 先声明 NDKTools55 的java类public class NDKTools55 { static { System.loadLibrary("ndkdemotest-jni"); } public
2020-06-04 17:44:35
1124
原创 脱离 Android 开发环境,直接利用 NDK 生成so
1、利用 记事本 (notepad.exe) 创建 testNdk.h/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_example_mp3encode_NdkTest */#ifndef _Included_com_example_mp3encode_NdkTest#define _Included_com_example_mp3encode_N
2020-06-04 14:17:50
408
原创 JNI 应用:使用 CMake 编译 生成 so
1、下载安装 CMake先前如果没有选中CMake ,表示没有安装过 CMake,选中它,并点击 “Apply”, 开始下载,并自动安装2、创建一个 Empty Activity 的新项目: JniDemoByCMake3、在 com.example.jnidemobycmake 包下 新java 类 NdkJniTest.java并加入代码public static native String stringFromJNI();4、编译java 文件:点击菜单 Build -》Make
2020-06-03 17:22:30
835
1
原创 JNI 应用:使用ndk 编译 生成 so
1、先下载并安装ndk菜单 Tools -》SDK Manager : 如果没有选中 说明没有安装,选中 它 ,并点击按钮 “Apply”就会下载,自动安装了2、新创建一个工程 JniDemoByNDK ,并选择 空的 Activity。3、创建一个新的 Java 类 :NDKTools:其类的定义为:package com.example.jnidemobyndk;public class NDKTools { public static native String
2020-06-03 15:23:06
971
原创 windows 下 用 Visual Studio 2017 编译 librtmp
第一、下载 librtmp (rtmpdump)源码,把 librtmp目录下的 非 .h 和 非 .c 文件 全部删除掉第二、用 Microsotf Visual Studio 2017 创建一个 静态库 (lib)项目,将librtmp目录下的所有 .h 和 .c 文件 加载到 此 项目中。第三、打开 rtmp.c 文件 ,找到并注释掉下面的三句 语句:#ifdef _WIN32#in...
2019-10-16 18:32:31
608
原创 ffmpeg 源码分析 命令参数篇(二)
接上一篇,接着分析 命令参数 从 OptionGroup 类型的数组列表中的 arg 和 *opts 是如何转移到 OptionsContext 中的,不过 OptionsContext的变量也是 临时变量这里要先看一下 全局变量 options的 定义(ffmpeg_opt.c),只看其中的几个元素,便于理解.#define OFFSET(x) offsetof(OptionsContext...
2019-09-19 17:12:02
960
1
原创 ffmpeg 源码分析 命令参数篇(一)
在使用ffmpeg工具进行各种操作时,会输入一些命令参数,这些参数是如何被解析,如何被存储,以及如何最终被转移到 几个最重要的结构变量中去的,通过对其源码的分析,来看看是如何实现的。由于涉及到的模块及函数较多,流程也颇为复杂,故分几篇文章来剖析ffmpeg 命令参数的格式:ffmpeg [全局选项] [输入选项] -i [输入源] [输出选项] -f [格式] [输出流及文件]注:1:此处...
2019-09-17 19:40:16
1244
原创 CentOS 7 + OpenResty/Nginx 使用 Certbot 配置 HTTPS 和自动续期
本文介绍了使用Let's Encrypt免费SSL证书的配置流程:1. 在域名平台(如阿里云)注册并解析域名到目标IP;2. 在服务器上配置Nginx,创建HTTP验证目录;3. 通过certbot工具申请证书;4. 修改Nginx配置为HTTPS服务。重点包括:创建.well-known/acme-challenge验证目录、certbot证书申请命令、HTTP到HTTPS的301跳转配置,以及SSL证书路径设置等。该方案支持自动续期,提供了完整的配置文件示例,适用于需要免费HTTPS证书的场景。
2026-07-27 15:56:13
229
原创 编译支持HEVC/H.265 over RTMP / Enhanced RTMP 的 ffmpeg
本文介绍了如何编译支持HEVC/H.265 over RTMP/Enhanced RTMP的FFmpeg 7.1稳定版本。首先通过git克隆release/7.1分支,然后进行编译配置,启用必要的协议(包括RTMP)、解复用器、编解码器(特别是HEVC/H.265)等选项。接着使用多线程编译并安装到指定目录,最后验证安装的FFmpeg版本。整个过程包括清理旧版本、配置编译选项、编译安装等标准步骤,适用于需要支持高级视频编码功能的FFmpeg定制编译场景。
2026-05-01 10:04:35
110
原创 点播、直播各种协议汇总
本文介绍了点播和直播场景下的主流协议方案。点播推荐HTTP Range+MP4和HLS VOD两种方式,其中MP4需预处理优化索引位置,HLS VOD建议H.265场景使用fMP4封装。直播协议选择建议:HLS作为主流方案,HTTP-FLV/TS适用于低延迟场景,WebRTC适合互动直播,RTMP主要用于推流而非拉流。文章详细说明了各协议的特点、适用场景和技术实现要点,为音视频传输方案选择提供了实用参考。
2026-04-25 09:58:01
369
原创 在windows下编译go语言编写的dll库
这套 Go toolchain(用的是 module toolchain go1.24.2)在 Windows 下的 cgo 流程默认按“gcc/clang”来喂参数,所以用 cl 会炸。go/cgo 用gcc 编译器(虽然Go 在 Windows 上支持用 MSVC 的 cl.exe 作为 cgo 编译器 ,但真正编译时,会有一个问题,下面有详细的说明)在用 MSVC 的 cl.exe 编译时,会报出一个错误 error D8021 :��Ч����ֵ������/Werror。
2026-02-01 11:54:39
853
4
原创 手动编译wsdd2,然后到其他机器上安装
本文介绍了如何在不同Linux系统间迁移wsdd2服务程序的注意事项和完整步骤。关键要点包括:1) CPU架构必须一致(arm64/x86等);2) 建议在老系统编译以兼容新系统的glibc版本;3) 提供从源码编译、打包到目标机安装的完整流程,包含二进制文件和服务配置的部署方法;4) 特别说明多网卡环境下的绑定配置方式;5) 给出服务状态检查和网络抓包等验证手段。整个过程涵盖了编译环境准备、程序打包传输、服务安装配置等关键环节,适合测试或小规模部署场景。
2026-01-11 11:11:06
223
原创 docker常用命令
因为 Docker 容器的生命周期由“前台主进程”决定:主进程结束,容器就停。用 tail -f /dev/null 相当于放一个永不结束的进程在前台,容器就保持运行状态,方便后续 docker exec 进去做编译、调试等操作。–name debian_10:给容器指定名字叫 debian_10 ba58cfa2eb92:镜像(image)标识。tail -f /dev/null :这是容器启动后执行的命令。/dev/null> 是“空设备”,不会有内容输出。-v: -v 宿主机路径:容器内路径。
2026-01-11 10:47:36
277
原创 OpenResty/Nginx 事件驱动和lua协程非阻塞I/O 原理
OpenResty通过Nginx事件驱动模型和Lua协程实现高性能非阻塞I/O处理。其核心机制是:当协程遇到I/O操作时,注册事件后立即挂起,由Nginx处理其他请求,待事件就绪后恢复执行。这种设计使得单线程Worker能高效处理大量并发连接,如WebSocket长连接,通过非阻塞I/O和协程调度实现高并发。关键点包括:1)协程轻量级且非抢占式调度;2)所有I/O操作设置超时避免阻塞;3)事件驱动模型高效轮询就绪事件。4个Worker进程可支撑数千连接,突破了传统阻塞模型的限制。
2026-01-02 13:13:14
799
原创 Nginx Location 匹配优先级详解
Nginx的location匹配规则按优先级排序如下:1.精确匹配(=) 2.前缀匹配(^~) 3.正则匹配(区分大小写~) 4.正则匹配(不区分大小写~*) 5.普通前缀匹配 6.通用匹配(/)。精确匹配优先级最高,通用匹配最低。前缀匹配优先于正则匹配,正则匹配中区分大小写的优先于不区分大小写的。多个普通前缀匹配时采用最长匹配原则。实际应用中需根据业务需求合理组合不同匹配类型,注意优先级顺序和匹配特性,如精确匹配需完全一致,正则匹配区分大小写等特性。
2025-12-11 16:22:03
748
原创 检测并让磁盘真正休眠
最近的一个项目,用户总是反馈我们的产品磁盘无法休眠,总是无休止的干活状态,查找此问题的过程也相当艰辛,不过还好,总算一步一步找到各种影响磁盘休眠的因素。
2025-11-25 18:21:51
574
原创 configfs配置usb gadget, USB 的 “OTG 模式”
这条命令的作用是将设备的 USB OTG 模式设置为 “外设模式”,让你的设备能以 “USB 外设” 的身份被其他设备(比如电脑)识别。
2025-08-05 17:04:56
1091
原创 git的使用:不同分支代码的物理隔离
通常情况下,一个远程仓库的 fetch 和 push 地址是相同的(如示例中都是 https://gitee.com/deepnas/backend.git),特殊场景下,两者也可以不同(例如从仓库 A 拉取代码,推送到仓库 B),可通过 git remote set-url 分别设置。执行 git fetch 命令,将远程仓库的所有分支信息同步到本地(不会合并代码,仅更新分支列表)简单说:fetch 是 “从哪里下载远程代码”,push 是 “往哪里上传本地代码。会输出:(目前没有本地分支)
2025-07-29 11:52:01
516
原创 不使用OpenResty框架,让nginx动态执行lua脚本
动态执行 lua 脚本, Nginx + LuaJIT + ngx_http_lua_module
2025-07-16 07:13:55
580
原创 nginx中的location配置信息之特殊符号= , ^~ , ~ , $ , ~* , . , ? , * , + , | , ^ , {} 详解
location 的配置信息的详解,包括 = ^~ ~* ~ {} $ ^ | + * ? .
2025-07-14 14:44:46
637
原创 redis 与 memcache区别
1、redis 支持存储 value 的类型相对更多,包括 string (字符串)、list (链表)、set (集合)、zset (sorted set –有序集合) 和 hash(哈希类型)2、这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。3、Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。1、都是 对 key-value 关系型数据存储及操作。2、都是在内存中存储。
2022-12-26 08:34:43
188
原创 在 linux 下 利用 NDK 编译 ffmpeg (android 平台下使用 so)
1、下载最新的 ndk下载页面:https://developer.android.google.cn/ndk/downloads/赋值 下载链接(linux版本)(最好在 linux 下载)https://dl.google.com/android/repository/android-ndk-r21-linux-x86_64.zip进入linux 系统:mkdir ndk_buildcd ndk_buildwget https://dl.google.com/android/reposit
2020-06-05 18:12:00
512
原创 Failed to resolve:com.android.support 问题
问题:在创建一个工程时出现 这样的错误:这是因为 本机安装的 Android SDK 版号 低于 Gradle 中的 所要求版本 造成的。图1解决方法:1、查看:Android Studio : Tools -> Android -> SDK Manager :图2可以在图2中看到本机中已经安装的Android SDK Tools版本(本例为26.1.1)图3可以在图3中看到 Android SDK Build-Tools 版本号为 :30.0.0Android SDK
2020-05-30 13:09:40
4023
原创 linux 下 编译 x264 遇到的 No working C compiler found 错误
在 linux 下, 下载 x264 源码,解压 后执行 :./configure --enable-shared --enable-static --disable-asm则出现 No working C compiler found 的错误由于以前 在另外一个系统上 成功编译过,就对系统做了对比,用命令:getconf LONG_BIT 查看两个系统,先前的系统是 64位,而现在出现错...
2019-10-10 17:31:26
4385
1
原创 在mac 下 利用 ffmpeg 工具 采集音视频
查看设备列表ffmpeg -f avfoundation -list_devices true -i “”[AVFoundation indev @ 0x7fce08d0f000] AVFoundation video devices:[AVFoundation indev @ 0x7fce08d0f000] [0] FaceTime HD Camera[AVFoundation inde...
2019-10-03 20:17:15
856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅