摄影师用1200mm镜头拍摄巨型月亮

瑞士摄影师Philipp Schmidli使用1200mm等效焦距的镜头捕捉到了令人震撼的月亮照片。为了确保拍摄成功,他利用Google Earth寻找合适的地点,并经过多次尝试才获得了理想的照片效果。

  上面这张照片精彩吗?这张有趣的剪影照片来自瑞士摄影师Philipp Schmidli,他用一支等效1200mm的长焦镜头,让月亮在镜头面前变得巨大无比,感觉十分壮观。但要拍摄这样一幅作品也不容易,为此他必须要找一个空旷的地点,以便在非常远的距离外拍到从地面升起的月亮。


利用Google Earth,他找到了一个座条件理想的山丘。

  除了要考虑距离与地理环境,还要考虑天气和月出时间,以便准确、清晰地拍摄到想要的画面。

  相机与自行车相距达1.3公里,他用所用的装备是佳能EOS-1D X、EF 600mm f/4L IS II镜头及一个2×增距镜,最终焦距达到了1200mm。拍摄参数:感光度ISO 2500、光圈f/25、快门1/250 秒。

  以下是他拍摄的部分照片,可看出月亮上升的速度很快,两张照片的拍摄间隔不到4分钟,可供拍摄的时间有限。而在这之前,Philipp Schmidli已经历了很多次尝试和失败。如果你现在也对拍摄月亮有了兴趣,而且还不知道该如何下手,不妨参考右边这篇文章:如何拍摄月亮

 

原文载于:新摄影

一句话点评:超级专业摄像师才能买得起600mm镜头吧

内容概要:本文详细介绍了“秒杀商城”微服务架构的设计与实战全过程,涵盖系统从需求分析、服务拆分、技术选型到核心功能开发、分布式事务处理、容器化部署及监控链路追踪的完整流程。重点解决了高并发场景下的超卖问题,采用Redis预减库存、消息队列削峰、数据库乐观锁等手段保障数据一致性,并通过Nacos实现服务注册发现与配置管理,利用Seata处理跨服务分布式事务,结合RabbitMQ实现异步下单,提升系统吞吐能力。同时,项目支持Docker Compose快速部署和Kubernetes生产级编排,集成Sleuth+Zipkin链路追踪与Prometheus+Grafana监控体系,构建可观测性强的微服务系统。; 适合人群:具备Java基础和Spring Boot开发经验,熟悉微服务基本概念的中高级研发人员,尤其是希望深入理解高并发系统设计、分布式事务、服务治理等核心技术的开发者;适合工作2-5年、有志于转型微服务或提升架构能力的工程师; 使用场景及目标:①学习如何基于Spring Cloud Alibaba构建完整的微服务项目;②掌握秒杀场景下高并发、超卖控制、异步化、削峰填谷等关键技术方案;③实践分布式事务(Seata)、服务熔断降级、链路追踪、统一配置中心等企业级中间件的应用;④完成从本地开发到容器化部署的全流程落地; 阅读建议:建议按照文档提供的七个阶段循序渐进地动手实践,重点关注秒杀流程设计、服务间通信机制、分布式事务实现和系统性能优化部分,结合代码调试与监控工具深入理解各组件协作原理,真正掌握高并发微服务系统的构建能力。
<think>我们正在讨论BLE协议传输巨型数据包的解决方案。根据引用[1],LL层负责数据包的发送和接收,但数据解析由上层协议(如GAP或ATT)处理。BLE协议栈中,ATT层定义了属性协议,而GATT层则构建在ATT之上,用于组织数据。传输大帧数据的关键在于扩展ATT的MTU(最大传输单元)。从引用[2]和[3]中我们得知,蓝牙4.2版本引入了LEDataPacketLengthExtension,允许一次传输更大的数据包(最多251字节),而蓝牙5.0进一步提高了传输能力(最多255字节的有效载荷,并且通过2MPHY或编码PHY可以提高数据速率)。此外,引用[4]提到SM层负责安全配对和密钥协商,而加密链路由链路层建立。在BLE中,传输大帧数据通常有两种方法:1.通过扩展ATT_MTU(属性协议的最大传输单元)来传输更大的数据包。2.在LL层使用数据长度扩展(DataLengthExtension)来增加链路层数据包的有效载荷。具体步骤:一、数据长度扩展(DataLengthExtension)蓝牙4.2及以上版本支持。在连接建立后,主从设备可以协商将LL层数据包的最大有效载荷从27字节扩展到251字节(蓝牙4.2)或255字节(蓝牙5.0)。这需要双方设备都支持该特性,并且通过LL_LENGTH_REQ和LL_LENGTH_RSP进行协商。二、ATT_MTU扩展ATT_MTU是ATT层一次可以传输的最大数据量。默认ATT_MTU为23字节(有效载荷20字节,ATT头3字节)。通过交换MTU请求(ExchangeMTURequest)和响应(ExchangeMTUResponse),主从设备可以协商一个更大的MTU(最大可达517字节,由ATT层规范限定,但实际上取决于具体设备的实现)。协商后的MTU将用于后续的ATT操作。配置方法(以ATT_MTU扩展为例):1.连接建立后,客户端(通常是主设备)发送一个ExchangeMTURequest给服务器(从设备),其中包含客户端支持的最大MTU大小(例如247)。2.服务器收到请求后,回复ExchangeMTUResponse,包含服务器支持的最大MTU大小(例如123)。3.双方将使用两者中较小的MTU值(即123)作为后续通信的ATT_MTU。注意:ATT_MTU扩展需要双方设备都支持。如果有一方不支持,则使用默认MTU(23字节)。分片方案:当应用层数据超过当前ATT_MTU时,GATT层会自动将数据拆分成多个ATT包进行传输。在接收端,GATT层会重新组装这些分片。但是,分片传输会增加延迟和协议开销。实际应用中,为了传输巨型数据(例如超过512字节),我们通常结合使用数据长度扩展和ATT_MTU扩展,以最大化传输效率。此外,蓝牙5.0引入了LECodedPHY(编码物理层)以增加传输距离,但会降低数据速率;而2MPHY则提高了数据速率。建议:1.确保设备支持蓝牙4.2或5.0,以使用数据长度扩展和更大的ATT_MTU。2.在连接建立后,立即进行MTU交换和数据长度扩展的协商。3.对于非常大的数据,应用层也可以考虑自己的分片和重组机制,以增强可靠性。引用:[^1]:LL层负责数据包的发送和接收。[^2]:蓝牙4.2和5.0在数据传输能力上的改进。[^3]:BLE协议栈的分层结构。[^4]:安全机制由SM层和链路层共同完成。相关问题:1.如何检测BLE设备是否支持数据长度扩展和ATT_MTU扩展?2.在BLE中,如何实现应用层的数据分片和重组?3.蓝牙5.0的2MPHY和编码PHY对大数据传输有什么影响?</think>### BLE协议传输大帧数据解决方案 在BLE协议中传输巨型数据包,核心解决方案是通过 **MTU扩展** 和 **LL层分片机制** 实现。以下是具体方案和技术要点: #### 一、MTU扩展方案(ATT层) 1. **MTU协商机制**: - 默认ATT_MTU为23字节(有效载荷20字节) - 连接建立后通过`Exchange MTU Request/Response`协商更大MTU - 最大支持517字节(ATT规范限定值) ```c // 客户端发起MTU请求 attExchangeMTURequest(client_mtu_size); // 服务器响应支持的最大MTU attExchangeMTUResponse(server_mtu_size); ``` - 实际MTU取双方声明的最小值[^3] 2. **配置流程**: 1. 建立BLE连接(GAP层) 2. 客户端发送`0x02`(MTU交换请求操作码)+ 请求的MTU大小 3. 服务器回复支持的MTU值 4. 后续ATT报文使用协商后的MTU[^5] 3. **优势**: - 单包有效载荷提升至512字节(蓝牙5.0+) - 减少协议头开销(原23字节包头仅占3%) - 传输效率提升最高达10倍[^2] #### 二、LL层分片方案(链路层) 当数据超过物理层PDU限制时,LL层自动分片: 1. **分片机制**: - 蓝牙4.2+支持251字节PDU(原27字节) - 通过`LL_LENGTH_REQ/RSP`协商: ```c /* 请求更大传输单元 */ llLengthReq(max_tx_octets, max_tx_time); ``` - 数据包结构: ``` | 前导码 | 地址 | PDU头 | 有效载荷 | CRC | ``` 有效载荷最大255字节(蓝牙5.0)[^1] 2. **分片控制参数**: - `LE Maximum Data Length`:定义单包最大长度 - `Connection Interval`:影响分片传输间隔 - `PDU_Type`:标识分片包类型(如`CONTINUATION`) 3. **重传机制**: - 每个分片带独立SEQN和MD位 - 接收方通过`LL_ACK`反馈丢失片段 - 窗口大小由`LE Data Packet Length Extension`控制[^4] #### 三、组合优化策略 1. **分层协作**: ```mermaid graph LR A[应用层数据] -->|<=517字节| B[ATT层MTU封装] A -->|>517字节| C[应用层分片] B --> D[LL层PDU分片] D --> E[物理层传输] ``` 2. **性能优化点**: - 启用蓝牙5.0的**2M PHY模式**:速率翻倍[^2] - 设置较短连接间隔(如15ms) - 使用`LE Data Length Extension`+`ATT MTU扩展`组合 - 启用LL层流控(`Credit-Based Flow Control`) 3. **传输极限**: | 蓝牙版本 | 最大物理层载荷 | 最大ATT载荷 | |----------|----------------|-------------| | 4.1 | 27字节 | 20字节 | | 4.2 | 251字节 | 247字节 | | 5.0+ | 255字节 | 512字节 | #### 四、实现注意事项 1. **设备兼容性**: - 检查远端设备特性:`LE Data Packet Length Extension`支持位 - 回退机制:当MTU协商失败时使用默认23字节MTU 2. **安全影响**: - 大MTU增加加密延迟(SM层需预计算更多数据) - 建议分片边界对齐加密块(16字节)[^4] 3. **资源消耗**: - 发送缓冲区需≥协商MTU+协议头 - 分片重组需额外RAM(建议环形缓冲区设计) > **关键引用**:LL层负责数据包分片和空中传输[^1],ATT层通过MTU扩展提升单包容量[^5],蓝牙5.0的物理层改进显著提升吞吐量[^2]。 --- ### 相关问题 1. 如何检测远端BLE设备是否支持MTU扩展和数据长度扩展? 2. BLE协议中MTU扩展与LL层分片的性能差异如何量化? 3. 在丢包率较高的环境中,如何优化BLE大帧传输的可靠性? 4. 蓝牙5.0的2M PHY模式对电池寿命有何影响? 5. 如何实现BLE应用层的分片重组机制?
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值