- 在项目开发过程中,有需要上传超大字符串数据的场景。但是又不是文件上传。经过思考对上传数据进行一次压缩,降低字符串长度即降低数据在网络传输过程中的大小,达到优化的目的。
- 客户端是由iOS或者Android开发的app,故需要客户端引入对zip压缩算法的支持,服务端由erlang开发,erlang的zip库模块基本已经够用了。
-
我是直接在Linux环境下,用zip命令压缩了一个数据文件,可以看出压缩率还是不错的。
1 2 3 4 5
MacBook-Pro:testweihualiu$zip-rtest.ziptracker.c adding:tracker.c(deflated54%) weihualiudeMacBook-Pro:testweihualiu$ls-ltr -rw-r--r--1weihualiustaff1675Apr2520:40test.zip -rw-r--r--1weihualiustaff3254Apr2520:44tracker.c
-
从上面可以看出,原文件大小是3254字节,压缩后是1675字节。
然后通过erlang代码将zip文件解压:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
weihualiudeMacBook-Pro:testweihualiu$erl Erlang/OTP17[erts-6.4][source][64-bit][smp:4:4][async-threads :10][hipe][kernel-poll:false][dtrace] EshellV6.4(abortwith^G) 1>file:read_file("test.zip"). {ok,<<80,75,3,4,20,0,0,0,8,0,187,69,155,71,17,230,25,143, 227,5,0,0,182,12,0,0,9,...>>} 2>{_,Bin}=file:read_file("test.zip"). {ok,<<80,75,3,4,20,0,0,0,8,0,187,69,155,71,17,230,25,143, 227,5,0,0,182,12,0,0,9,...>>} 3>zip:unzip(Bin). {ok,["tracker.c"]} 4>{_,[{_,RBin}]}=zip:unzip(Bin,[memory]). {ok,[{"tracker.c", <<"/*S0DAYEXPLOITISPRIVATEPLEASEDONOTDISTRIBUTE!\n =========================================="...>>}]} 5>size(RBin). 3254 -
从最后一行erl终端输出可以看出,已经成功解压zip文件,解压后大小与原有文件一致,都是3254字节。
相关推荐
【信息科学与工程学】【产品体系】【数据中心】第四十四篇 云资源部署设计04
设计基于SD-WAN的多云互联方案,通过软件定义的overlay网络连接阿里云、AWS、腾讯云、华为云等,实现动态路径选择和带宽聚合,替代传统MPLS VPN。- 综合评分函数:Scorei=w1⋅LiLmin+w2⋅(1−Pi)+w3⋅BmaxBi−w4⋅CmaxCi。设计基于eBPF/XDP的容器网络加速方案,替换传统的iptables/kube-proxy,实现Pod间通信零拷贝转发,降低延迟和CPU开销。
erlang中http请求
1..app文件中 {application,backend,[ {description,"ebank backend"}, {vsn,1.0}, {modules,[]}, {applications,[kernel,stdlib,yaws]}, {registered,[backend]}, {env,[{env,development}]}, {mod,backend_bo...
cowboy:Erlang OTP高效现代HTTP服务器的实现
本文还有配套的精品资源,点击获取 简介:cowboy是一个专门为Erlang OTP设计的高性能HTTP服务器,它以小型、快速和现代化为特点。它旨在提供高效的请求处理能力,并且可能是轻量级的,适合高并发处理。cowboy支持最新的HTTP协议,包括HTTP/2和WebSockets,并且是为构建RESTful API和实时Web应用而准备的,已经经过充分的测试和优化,适用于...
erlang http
http协议基础
hackney:Erlang中的简单HTTP客户端
hackney:Erlang中的简单HTTP客户端
erlang使用post方式发送json数据
学习erlang的时候尝试编写的小例子,使用post方式发送json数据来进行http请求,希望能帮到大家~
Erlang实现的简易HTTP服务器
-module(hello). -export([start/2]). start(Port, Doc) -> spawn(fun () -> {ok, Sock} = gen_tcp:listen(Port, [{active, false}]), loop(Sock, Doc) end). loop(Sock, Doc) -> {ok, Conn} = gen_tcp:ac
绝对旋转编码器学习笔记(基本原理,与PC通信等,不定期更新中)
前言 最近开始学习编码器相关内容,目的在于搞清楚编码器的原理,与上位机的联系等问题。笔记资料来源为网络,整理的同时也会有一些总结和感悟。由于研究方向需求,主要研究数字旋转编码器。 1.编码器的定义 编码器(encoder)是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。——摘自《百度百科》 通常来说,编码器可以将角度位移、直线位移、转速等物理量转换为电信号。这里的电信号根据不同原理的编码器输出脉冲、二进制数码等不同的类型,下面会提到。 2.编码器的分类 编.
Golang基础面试题汇总
channel、goroutine、slice、map、反射、内存、GC、Musql、Redis、ELK、K8s、Http、Https
GD32F4系列定时器正交译码器实战:用TIMER1读取旋转编码器信号(附完整代码)
本文详细介绍了GD32F4系列定时器正交译码器的实战应用,重点讲解如何使用TIMER1模块高效读取旋转编码器信号。内容涵盖硬件连接、定时器配置、方向判断与速度计算等关键环节,并提供了完整的代码实现和优化建议,帮助开发者快速掌握GD32微控制器在工业控制和消费电子领域的编码器接口设计。
自动驾驶仿真(五)—— 基于Carsim、Prescan、Simulink的联合仿真
自动驾驶仿真五——基于Carsim、Prescan、Simulink的联合仿真1. 联合仿真流程2. CarSim联合仿真配置要点3. Prescan联合仿真配置要点4. Carsim、Prescan、Simulink联合仿真结果5. 参考学习的书目教材 博主前面的博文已经介绍了Carsim和Prescan各自与Matlab/Simulink的相关联合仿真应用实例,并且论述过几款软件各自的优势及用法,CarSim适合动力学模型的建立,PreScan适合行车场景的搭建,Simulink适合控制算法的设计及信号
Mythos:可调度的漏洞发现力如何重塑AI安全工程范式
大模型在安全领域的应用正从‘辅助编码’迈向‘自主漏洞挖掘’,其核心已不再是参数规模或通用推理能力,而是面向二进制逆向、符号执行与利用链构建的专用化推理架构。Mythos所代表的‘可调度的漏洞发现力’,本质是将传统需多角色协作、数日完成的安全研究流程,压缩为单次API调用下的端到端闭环——涵盖跨文件控制流分析、内存腐败原语识别、绕过缓解机制的shellcode生成等关键环节。这一能力跃迁依赖长上下文推理、领域特化训练数据及强对齐约束,直接推动红队自动化、供应链风险评估与DevSecOps左移等真实场景落地。本
tcmalloc(高并发内存池)简化版讲解-项目
高清发不上去,私我发高清,项目完整代码@我。
liunx版本的
services:ports:volumes:network_mode: "host" # 添加此行(必须)kibana:ports:ELASTICSEARCH_HOSTS: http://192.168.1.145:9200 # 具体ip(必须)network_mode: "host" # # 添加此行(必须)
药物对接仿真软件:HADDOCK_(3).分子对接基本原理
分子对接(Molecular Docking)是计算化学和结构生物学中的一种重要技术,用于预测小分子(如药物分子)与大分子(如蛋白质)之间的相互作用模式和结合亲和力。这一技术在药物设计和开发中具有广泛的应用,尤其是在寻找和优化潜在的药物候选物方面。本节将详细介绍分子对接的基本原理,包括其理论基础、计算方法和应用。
innovus:NRDB-2276 special net route layer与NanoRouteMode route layer冲突问题解决方法
NanoRouteMode中设置绕线层次2-6,但是被动到的special net有8-11的preferred route layer,这个层次可能是create_route_type+set_ccopt_property -net_type 定义的。二者绕线层次范围有冲突,导致在调整过这条net后再绕线就会提示失败。然后再下route_design 等route命令去绕别的net。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?
MQ 面试防 “翻车” 指南:深挖 RocketMQ
消息队列(Message Queue)本质上是一个保存消息的FIFO(先进先出)数据结构,跨进程的通信机制。底层核心逻辑是通过"存储-转发"机制,将消息暂存于 Broker(消息服务器),避免生产者与消费者直接耦合,同时提供消息的持久化、路由、重试等能力,解决分布式系统中的通信问题。核心模型对比模型说明典型实现点对点(P2P)一条消息只能被一个消费者消费RabbitMQ(Queue模式)发布/订阅(Pub/Sub)一条消息可被多个消费者组消费RocketMQ(Topic模式)、Kafka。
uni-app开发-第6篇:uni-app 样式与主题
在 uni-app 开发中,样式与主题的管理是关键部分。样式分为全局样式和局部样式,全局样式在 App.vue 中定义,适用于整个应用,而局部样式在单个 .vue 文件中定义,仅对当前页面生效。局部样式优先级高于全局样式,内联样式优先级最高。样式属性如 font-family 和 color 可被子元素继承。要覆盖全局样式,可在局部样式中重新定义相同规则。主题切换通过 CSS 变量和类名实现,动态切换主题可通过修改元素的类名来完成。例如,定义浅色和深色主题,并通过按钮点击切换主题样式。这些方法帮助开发者灵活
全文 - Building AI Coding Agents for the Terminal: Scaffolding, Harness, Context Engineering, and Less
AI 编程辅助的格局正在经历一场根本性转变:从复杂的 IDE 插件转向通用的、终端原生的智能体(agent)。直接在开发者管理源代码版本控制、执行构建和部署环境的终端中运行,基于 CLI 的智能体为长程开发任务提供了前所未有的自主性。本文介绍OpenDev——一个专为这一新范式打造的开源命令行编程智能体。有效的自主辅助需要严格的安全控制和高效的上下文管理,以防止上下文膨胀和推理退化。
Python 爬虫实战:就业市场趋势数据抓取与行业洞察
在当今竞争激烈的就业市场中,了解行业趋势和就业形势对于求职者、学生以及人力资源专业人士来说至关重要。通过获取和分析就业市场数据,我们可以深入了解不同行业的招聘需求、薪资水平、技能要求等关键信息,从而为职业规划和人才发展提供有力支持。
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
聊聊接口性能优化的11个小技巧
聊聊接口性能优化的11个小技巧 - 云+社区 - 腾讯云
Probability and Statistics - 4th edition
Probability and Statistics - 4th edition
erlang 压缩zlib
一:写在之前 今天和同事讨论偶然提到了,代码中注释掉的压缩方法,想了想好像还没有看过压缩相关的内容 一位同事提出了,之前他们项目因为压缩崩溃过一次,这更激起了自己兴趣,晚上看了会,记录下一些心得 二:简介 erlang提供了一个压缩模块 zlib 那么,什么是zlib? wiki 连接点这里 wiki中的简介 zlib is a software lib
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况
主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。
erlang HTTP 客户端 使用实例
HTTPC的请求范式 HTTPC(Method(),Request(),Httoptions().Options()) 其中 Method=head|get|put|psot|trace|options|delete (一般主要用 get ,post ,put ,delete) Request= {url(),headers()}|{url(),headers(),content_...
Erlang发送HTTP请求(Get,Post)
在开发项目Erlang程序项目中 , 用到了HTTP请求 , 主要是Get和Post , 其他的类似Put和Post请求模式一样 ; 现将代码总结如下 : 发送HTTP-Get请求 inets:start(), ReqUrl = string:join(["http://www.example.com/user?access=",binary_to_list(Access)],""), R
[Erlang 学习笔记] 通过 erlang 向服务器发送 http post 请求
由于项目测试需要,在写机器人的时候用到了erlang的httpc来向server端发送post请求,自己做个记录,日后忘记了 可以查看,一下是使用实例: t.erl -module(t). -export([t/0]). -define(Name,"hosr"). -define(Passwd,112233). t()-> inets:start(), ssl:start(),
erlang http post and get 请求
参考: http://erlang.org/doc/apps/inets/http_client.html get 请求: %同步请求 createid() -> inets:start(), Rui = "http://some..../.php", {ok,Result}=httpc:request(get,{Rui,[]},[],[]),
31



被折叠的 条评论
为什么被折叠?



