首页 文章 精选 留言 我的

精选列表

搜索[模块],共10000篇文章
优秀的个人博客,低调大师

《深入理解Nginx:模块开发与架构解析》一3.8 将磁盘文件作为包体发送

3.8 将磁盘文件作为包体发送 上文讨论了如何将内存中的数据作为包体发送给客户端,而在发送文件时完全可以先把文件读取到内存中再向用户发送数据,但是这样做会有两个缺点:为了不阻塞Nginx,每次只能读取并发送磁盘中的少量数据,需要反复持续多次。Linux上高效的sendfile系统调用不需要先把磁盘中的数据读取到用户态内存再发送到网络中。当然,Nginx已经封装好了多种接口,以便将磁盘或者缓存中的文件发送给用户。 3.8.1 如何发送磁盘中的文件 发送文件时使用的是3.7节中所介绍的接口。例如: ngx_chain_t out; out.buf = b; out.next = NULL; return ngx_http_output_filter(r, &out); 两者不同的地方在于如何设置ngx_buf_t缓冲区。在3.2.5

优秀的个人博客,低调大师

张高兴的 Windows 10 IoT 开发笔记:HC-SR04 超声波测距模块

HC-SR04采用IO触发测距。下面介绍一下其在 Windows 10 IoT Core 环境下的用法。 项目运行在 Raspberry Pi 2/3 上,使用 C# 进行编码。 1. 准备 HC-SR04 ×1 Raspberry Pi 2/3 ×1 公母头杜邦线 ×4 2. 连线 Vcc - 5V Gnd - GND Trig - GPIO 17 - Pin 11 Echo - GPIO 27 - Pin 13 3. 代码 GitHub :https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/HC_SR04Demo 你需要在项目中添加一个 C# 代码文件 HCSR04.cs,将下面的代码复制粘贴,并且不要忘记添加引用Windows IoT Extensions for the UWP using System.Diagnostics; using System.Threading.Tasks; using Windows.Devices.Gpio; namespace HC_SR04Demo { class HCSR04 { private int sensorTrig; private int sensorEcho; private GpioPin pinTrig; private GpioPin pinEcho; Stopwatch time = new Stopwatch(); /// <summary> /// Constructor /// </summary> /// <param name="trig">Trig Pin</param> /// <param name="echo">Echo Pin</param> public HCSR04(int trig, int echo) { sensorTrig = trig; sensorEcho = echo; } /// <summary> /// Initialize the sensor /// </summary> public void Initialize() { var gpio = GpioController.GetDefault(); pinTrig = gpio.OpenPin(sensorTrig); pinEcho = gpio.OpenPin(sensorEcho); pinTrig.SetDriveMode(GpioPinDriveMode.Output); pinEcho.SetDriveMode(GpioPinDriveMode.Input); pinTrig.Write(GpioPinValue.Low); } /// <summary> /// Read data from the sensor /// </summary> /// <returns>A double type distance data</returns> public async Task<double> ReadAsync() { double result; pinTrig.Write(GpioPinValue.High); await Task.Delay(10); pinTrig.Write(GpioPinValue.Low); while (pinEcho.Read() == GpioPinValue.Low) { } time.Restart(); while (pinEcho.Read() == GpioPinValue.High) { } time.Stop(); result = (time.Elapsed.TotalSeconds * 34000) / 2; return result; } /// <summary> /// Cleanup /// </summary> public void Dispose() { pinTrig.Dispose(); pinEcho.Dispose(); } } } 4. 如何使用 第一步调用构造函数将 HCSR04 实例化,请传入 Trig 和 Echo 的连接值 第二步调用Initialize() 初始化设备 第三步调用ReadAsync() 读取数据,返回的是一个 double 类型的值 当需要关闭设备时,调用Dispose() 详见 GitHub

优秀的个人博客,低调大师

当WebRTC Pion示例无音频流的时候,如何添加音频模块并通过浏览器播放?

Pion WebRTC是纯Go语言实现的WebRTC框架库。可以用于开发WebRTC服务器和WebRTC客户端。API接口与JavaScript类似,减少学习成本。在TSINGSEE青犀视频研究pion的示例中,只有视频流,因此拉流肯定也会只拉到视频流,而不会有音频流。那如何添加音频流,并在浏览器播放出来?本文研究一下实现方法。 由于pion示例没有音频流,因此要使用webrtc pion将音频流添加进去,需要修改的地方是webrtc pion的go服务,将音频流添加进去。我们先从Go服务端到浏览器端进行一次逻辑流程的分析。一、Go服务的修改 1、pion添加的视频流如下: 所以需要在此处在添加个音频流。 2、pion接收的视频流,并添加个变量保存: 此处需再添加个变量把音频轨道保存。 3、拉流添加轨道: 以上go端的修改就完成了,下面进行浏览器端的修改。浏览器虽然比较简单,但是也需要进行修改。二、浏览器端的修改 1、向WebRTC Go服务推流,需要修改参数: 2、拉取WebRTC的流,需要添加音频: 至此两个端的分析就已完毕,目前就可以大致知道对两个端如何修改了,具体修改内容则如下: 1、修改Go服务端 1)添加音频 2)保存音频的流 3)拉流的时候,需要额外添加音频轨道 2、浏览器修改或添加 1)向WebRTC推流 2)拉取WebRTC流

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册