首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    【字节码插】AOP 技术 ( “字节码插“ 技术简介 | AspectJ 插工具 | ASM 插工具 )

    文章目录 一、" 字节码插 " 技术简介 二、AspectJ 插工具 三、ASM 插工具 一、" 字节码插 " 技术简介 ---- 性能优化 , 插件化 , 热修复 , 等技术都需要用到 " 字节码插 给 Android 中所有的 Activity 添加安全策略 , 如果每个页面逐个手动添加 , 可能存在遗漏 , 并且会造成代码冗余 ; 通过 AOP 面向切面编程 , 完成上述操作 ; " 字节码插 技术应用 : 代码生成 : 编译时生成代码 , 提高开发效率 , 减少手工工作量 , 降低出错概率 ; 代码修改 : 为某些三方库添加崩溃 try catch 异常捕获机制 ; 代码监控 : 编译时插 , 监控应用各种性能 , 如页面打开时间 , 页面停留时间 ; 友盟应该用了该技术 ; 代码分析 : 使用编译时字节码插技术 , 自定义代码检查 ; 字节码插原理 : 使用 javac 编译出 .class ---- AspectJ 插工具 : 使用简单 : 使用 AspectJ 插工具修改字节码文件 , 不需要了解 .class 字节码文件的二进制格式 ; 成熟稳定 : 字节码操作 如果错了 1

    2.3K20编辑于 2023-03-29
  • 来自专栏小陈飞砖

    ASM插举例

    如何使用ASM给android的某个函数做插? io implementation 'org.apache.directory.studio:org.apache.commons.io:2.4' //引入ASM相关api,这是我们插的关键 ,要靠他实现方法插 implementation "org.ow2.asm:asm:$asmVersion" implementation "org.ow2.asm:asm-util: 3.下一步在App的build.gradle中配置插件 4.创建gradle的Transform实现 Transform是在.class -> .dex转换期间,用来修改.class文件的一套标准API // 判断方法name是onCreate if (name.startsWith("onCreate")) { //插函数的实现

    1.3K30编辑于 2022-10-28
  • 来自专栏Android面试

    ASM字节码插

    方案4:字节码插 字节码函数插目前有以下两种框架 ASM 思路:应用程序打包成APK之前会先编译成.class文件,然后打包成dex,最后组成apk。 ASM框架进行字节码函数插 ============== 经过上述方案的对比,最终采用ASM进行字节码插。主要是对代码的侵入低,可定制化配置(过滤采集页面,过滤时长,配置页面映射等)。 下图箭头指向处就是进行函数插的位置。 [a1f9efacc5684f4d5205165268b3a636.png] 代码侵入性低 ------ 方案实现是在代码文件编译成class文件之后进行方法的插入,无需在编写阶段进行。 当然回调的类型也可以从JSONObjetc变为String } }); 接入APP后 ------ 在APP中进行点击浏览页面,相应的事件进行触发: [e1f4bb0f42bf77b515ae7422cd7ef681

    1.3K50编辑于 2021-11-27
  • 来自专栏镁客网

    充电,“耗子尾汁”

    所谓“僵尸充电”,指那些没有电源、没有充电模块的废旧充电。 策划&撰写:家衡 近日,安徽省淮南市发现大量“僵尸充电”,在网上引起了热议。 事实上,这些废弃的充电,只是全国充电行业的一个缩影,也是对行业发展的一次反思。 没有运营,没有市场 早期充电行业也曾经历一次野蛮的生长。 这正是淮南市充电市场的现状。 在报道中,淮南市一家新能源汽车销售公司的负责人将整个市区的充电站进行了一次调查:全市20家充电站共有290个充电,但只有4个充电站的30多个充电可以使用。 “ 如果充电市场过度悲观,那么建设的滞后只会影响新能源汽车的销量。 充电是否能满足新能源车辆的充电需求,有一个关键指标叫做“车比”,在规划中,有关部门提到在2020年车比要达到1:1的水平。 这样换算下来,目前车比为3.43:1,距规划目标1:1差距甚远,而公共车比更高达8.35:1。这就是说,每3.5台新能源汽车只用使用一个充电,这其中还有很多充电是无法使用的。

    76720发布于 2020-12-08
  • 来自专栏米尔电子

    充电 SECC 方案:国产充电出海的跨协议通信基础

    前言 国产充电正在加速进入欧洲等国际市场,跨协议通信能力成为出海的核心门槛。不同地区车型使用不同协议体系,因此充电必须具备多协议适配能力。 本文将介绍 SECC 如何支撑充电出海,并呈现米尔 SECC 在此过程中的方案价值。 统一 SECC 架构使充电在出海过程中具备:  - 更快的适配速度  - 更低的协议开发成本  - 更高的通信稳定性  - 更强的国际化能力  在方案搭建中,米尔 SECC 提供结构化设计基础,使充电更容易适配多地区车辆通信要求 结语 跨协议通信能力是国产充电进入国际市场的关键能力之一。作为控制与通信核心,SECC 让充电在多协议环境中保持稳定运行。 米尔 SECC 方案以轻量方式为跨协议架构提供支撑,是国产充电出海的重要基础。

    23110编辑于 2026-01-23
  • 来自专栏刘晓杰

    说说编译插

    1.什么是编译插? 顾名思义,所谓的编译插就是在代码编译期间修改已有的代码或者生成新代码。 ? Java-字节码-dex 如图,这是Java代码的编译流程。 可以操作“.class”的 Java 字节码,也可以操作“.dex”的 Dalvik 字节码,这取决于我们使用的插方法。 缺点是:如果使用者对字节码不熟悉的话不好操作 3.掌握插应该具备的基础知识 (1)熟练掌握字节码相关技术。 共两步,第一步继承Transform接口,第二步register (4)字节码修改工具。 如AspectJ,ASM 4.插实践 字节码插--你也可以轻松掌握,Android字节码插——详细讲解 附带Demo 其实这两篇文章我只是大致理解了,并没有运行。

    1.4K20发布于 2020-06-02
  • 来自专栏Helloted

    LLVM-插

    0、Clang插原理 Clang在优化过程中,可以自己定义Pass来优化代码 1、编译插件的工具准备 1.1 新建文件夹llvm,下载LLVM(预计大小 648.2 M) $ git clone https xode使用clang的替代版本 3.5 将Enable Index-While-Building Functionality值改为NO,否则会报错 3.6 执行可以获取到log输出方法执行情况 4、 插的其他思路:SanitizerCoverage LLVM本身提供了一种覆盖函数的方案:SanitizerCoverage 在官方文档中就有说明,如果在编译配置里有-fsantize-cover等参数 5、插的其他思路:SanitizerCoverage OC 的方法调用在底层都是objc_msgSend函数。 所以,如果能够Hook它,获取每个调用objc_msgSend的方法名,也能够达到插效果。

    2.5K20编辑于 2022-06-08
  • 来自专栏刘旷专栏

    充电的中场战事

    这个时候,缓解电动车续航焦虑的充电就成了这些车主的“救命稻草”,也让充电的市场一片火热。 多方催生的巨大市场 让充电市场火热的原因主要有以下几个方面。 首先是充电已经成为新时代的刚需。 加油站对于燃油车来说是必需品,而充电对于电动汽车来说同样也是刚需,随着电动汽车越来越普及,电动车主对于充电的需求也将持续释放。 而按照国家提出车比1:1的目标来说,充电市场还有十分巨大的发展空间。 于是国内关于充电的企业也如雨后春笋一般涌出,截至2020年12月,国内与“充电”相关的企业就多达8.9万家。 寻求与个人电群用户等群体的合作。 具体来说,在有些城市之中,电动车主“一难求”的情况难以解决,而在有些地区,被投放的充电已经沦为“充数”,位附近杂草丛生,充电本身也已经完全不能使用。

    63540发布于 2020-12-25
  • 来自专栏路遥的专栏

    造轮子系列 —— 方法插

    今天推荐一个群友开源的插框架 —— Mamba ,想学习 Gradle Plugin 和 ASM 的朋友们可以关注一波。 ,则对方法进行插,插效果如下: System.out.println("========start========="); TimeUtil.setsStartTime("newFunc", System.nanoTime 4、Mamba Mamba 的实现类似于 Matrix,但插的内容不是 methodId,而是当前的类、方法名和方法参数,插效果如下: public void test() { 性能 大家可能会比较关心插后的性能问题,我这里列一下测试用例和结果: 1、方法插,多次测试耗时为 0 毫秒 2、方法参数插,多次测试,耗时大约在 2 毫秒 注意 方法的参数收集目前只支持最多 插时还需要为 Mamba 实现类配置 exclude,避免插导致方法循环调用 总结 总的来说,各个方案实现都差不多,略微的差异在于业务的不同实现。

    86820发布于 2021-08-31
  • 来自专栏工业4G路由器解决方案

    工业4G路由器 充电工业控制机器人户外WiFi上网

    作为工业互联网的重要基础设施之一,工业4G路由器也不断迭代升级,以满足企业多样化的应用需求。MR500E工业4G路由器采用超小体积设计,尺寸为长88mm高25mm宽62mm,便于携带和安装。 MR500E工业4G路由器还具备1个WAN口和1个LAN口或2个LAN口,网速速率为10/100Mbps,支持4G转LAN或WIFI以及WAN转LAN或WIFI等多种组网方式。 MR500E支持移动,联通,电信4G全网通。手机卡,流量卡,物联卡都适用。插卡即用,不拉宽带,插上SIM卡,接通电源,4G转WiFi/网口/有线即可上网。 此外,MR500E支持4G/有线智能切换备份,有线网络断开自动连接4G网络,提高网络的可用性。 图片MR500E工业4G路由器已经在多个领域得到应用,包括智能道闸、安防监控、智能家居、数据采集、智能电力、工业控制、自动售货柜、充电、自动快递柜、机器人联网、智能电箱等。

    472100编辑于 2023-07-05
  • 来自专栏燧机科技-视频AI智能分析

    充电消防烟雾着火检测系统

    一、引言 随着新能源汽车保有量激增,充电火灾成为新型安全隐患。 系统已在某城市充电站(含10个快充、5个慢充)试点部署,实测数据表明可将火焰识别准确率提升至97.5%,响应时间缩短至0.9秒内,火灾控制率达100%,为充电设施消防安全提供技术支撑。 云端管控平台:基于腾讯云TI平台开发,支持实时监控地图(充电状态着色:绿色正常/红色告警)、报警日志(含时间戳、火焰/烟雾截图/短视频、温升曲线)、消防报表(火情频次统计、高风险充电画像); 移动端 充电消防火焰检测系统的核心在于其强大的识别能力,充电消防火焰检测系统一旦检测到火焰或烟雾,系统会立即启动一系列自动响应机制。 同时,系统会自动切断充电的电源,从源头上消除火灾继续蔓延的可能性。这一措施不仅保护了充电本身免受进一步损害,也确保了救援人员和现场人员的安全。

    25210编辑于 2025-12-28
  • 来自专栏设计与思考

    压测设计与思考(一)

    于是外部接口我们计划全用。 对于第二点,做全流程对比测试。 在devcloud机器上单核心测试,在json字节长度4k(实际和这个差不多,可能还会有更长的),可以跑到1w/s。考虑到协程的调度和一些其他的逻辑,在8核机器上应该可以达到5w的并发。 的性能并不是关键,不要太差就可以了。因此也没在这里做更详细的测试。 一切看着都很顺利,时间符合预期,的性能也能达到要求。但实际真的会很顺利吗? 又通过其他方法验证了,不是程序问题,而是的问题。 再来细看一下的表现。开始一段时间都是正常的,压力上来后99%的调用都是OK的,1%没有正确回包。 的性能也和预期差不多,在8核机器上可达到5w/s。 后续的相关的新增需求与代码的重构会再起一篇文章,下次再写。 参考文献 内部文章暂不列出。

    57720编辑于 2021-11-29
  • 来自专栏智慧物联产品&方案

    基于4g智能路由器的充电远程监测管理应用

    随着我国电动车保有量的持续增加,充电的需求也水涨船高,成为城市发展必备的基础设施之一。相较加油站,充电分布更广泛,部署场景更多样,与场景的融合程度也更深,诸如各类停车与充电二合一的站点。 电动车充电包括集中式充电站,属于专门的停车充电场,需要车主排队、预约;以及分散式的独立充电,可部署于私人车库、私人停车位等。 但对于充电的安全性要求不会因为场景不同而降低,同样需要对充电的可靠监测和管理。本篇就位大家介绍基于4g智能路由器的充电远程监测管理应用。 4g智能路由器,工业级品质 BMR500系列无线智能路由器,支持5G/4G全网通,有线/无线互为备份,保障充电长久在线。路由器达到工业级品质,耐高低温、抗电磁干扰,适用于各种户外场景的设备设施监测。 4、智能告警:充电异常状态智能告警,包括倾斜告警、碰撞告警、进水告警、电线破损告警等 5、视频监控:路由器可接入摄像头,实时传输记录现场监控画面。

    50500编辑于 2023-02-16
  • 来自专栏云云众生s

    OpenTelemetry指标:概念、类型和插

    OpenTelemetry 指标插 OpenTelemetry 提供了几种类型的插,用于在应用程序中捕获和记录指标数据。 这些插具有不同的用途,适合各种用例: 时间序列: 时间序列插跟踪指标值随时间的演变。它们对于监控应用程序行为的趋势和模式非常有用。时间序列指标的示例包括CPU 使用率、内存消耗和请求延迟。 累加: 累加插通过将新的数据点添加到现有总数来累积指标值。它们非常适合测量累积量,例如处理的请求总数或传输的数据总量。 同步: 同步插在应用程序代码中被调用时立即记录指标数据。 选择正确的插类型取决于应用程序的具体要求和特性。 4. 定期审查和更新指标 持续审查和更新您的指标,以确保它们保持相关性和有用性。随着应用程序的发展,某些指标可能会变得过时,而新的指标可能需要监控新功能或组件。

    1.1K10编辑于 2024-08-02
  • 来自专栏ocr

    充电车牌识别相机算法

    充电车牌识别相机算法特殊调整 充电车牌识别应用场景,车牌识别相机采用吊装的方式安装到每个充电车位上,精准的识别停在该车位上的车牌号码。 充电车牌识别场景有着其独特的特点:识别距离短,安装位置高,车牌图像大,俯瞰角度大。易泊时代根据充电特殊应用场景,专门定制优化了车牌识别算法,保证在这种特定的应用场景下依然保持车牌识别的准确率。 新能源充电专用车牌识别设备技术参数 产品组成高清130万像素车牌识别相机、电动镜头、防护罩、补光灯、电源等; 像素1/2.5-inch 约130万像素(4:3); 处理器1GHz Cortex-A8,

    81310发布于 2020-05-27
  • 来自专栏软件测试那些事

    Jacoco字节码插案例

    bytes] ALOAD_x, ALOAD * 1 2 ICONST_x, BIPUSH, SIPUSH, LDC, LDC_W ** 1 3 ICONST_1 1 1 BASTORE 1 1 Total: 4 [](https://upload-images.jianshu.io/upload_images/2651525-0a155f5b1d9281a4.JPG? jacoco_throw.JPG 4 默认构造方法 ? jacoco_1类构造方法.JPG

    2.7K20发布于 2020-12-01
  • 来自专栏ocr

    用于充电的车牌识别相机

    充电车牌识别相机算法特殊调整 充电车牌识别应用场景,车牌识别相机采用吊装的方式安装到每个充电车位上,精准的识别停在该车位上的车牌号码。 充电车牌识别场景有着其独特的特点:识别距离短,安装位置高,车牌图像大,俯瞰角度大。易泊时代根据充电特殊应用场景,专门定制优化了车牌识别算法,保证在这种特定的应用场景下依然保持车牌识别的准确率。 新能源充电专用车牌识别设备技术参数 产品组成高清130万像素车牌识别相机、电动镜头、防护罩、补光灯、电源等; 像素1/2.5-inch 约130万像素(4:3); 处理器1GHz Cortex-A8,

    86810发布于 2020-05-20
  • 来自专栏前沿安全技术

    针对充电勒索攻击的防御

    在这个使用真实电动汽车和公共充电的攻击案例展示了一种新方法,即充电勒索攻击 (Charging Pile Ransom Attack, CPRA),它可以通过电动汽车和充电之间的充电连接器远程勒索电动汽车 二、攻击 攻击准备: 假设攻击者通过逆向设备微控制器单元固件获取了充电应用层协议报文格式和弱认证漏洞。 然后攻击者可以伪装成目标充电通过网络与服务器通信,使目标充电停用。 攻击目标:攻击目标是让充电电动汽车在没有接近目标的情况下无法停止充电或离开充电终端,直到受害者向攻击者支付赎金。 图片 攻击过程:充电勒索攻击流程如上图所示。 (2) 充电恢复在线状态后,攻击者发起新命令接管充电过程。 (3) 同时通过App上的通讯通道向受害者匿名发送勒索信息。 (4) 在支付赎金之前,攻击者将停止充电过程并放行车辆。 实验证明,充电勒索攻击在大众 ID.4 和国内相当一部分公共第三方充电(包括 TELD 和 Starcharge)上是有效的。

    1.4K31编辑于 2023-06-25
  • 来自专栏SRE运维实践

    VIM引发的血案

    4 如何改进 被人误杀,还是可以补救的: a 重量级的系统应该都有保活,也就是说,即使被人杀了,也能自动拉起,毕竟是重要的系统,这个时候就用到了supervisord程序; b

    3.1K10发布于 2019-11-28
  • 来自专栏悲了伤的白犀牛

    中国移动三大事!

    在短短几分钟的讲话中,杨杰董事长清晰地阐述了中国移动当前及至未来几年的“三大事”! 而这三大事,也正是实现这个新定位的三个关键! ---- “5G+算力网络+智慧中台”三大事,对应的是“连接+算力+能力”新型信息服务体系,这是中国移动迈向“创建世界一流信息服务科技创新公司”的新定位的关键路径,也是中国移动当前及未来几年至关重要、

    60220编辑于 2022-04-02
领券