- 博客(30)
- 收藏
- 关注
原创 如何优化Flutter和React Native与原生平台交互的性能,同时保证数据类型安全和线程隔离?
在原生与JavaScript端定义严格的参数校验规则。示例:JavaScript端使用TypeScript或Flow进行类型安全保障。原理:通过显式类型校验减少数据错误。Flutter: 利用Dart语言的强类型特性进行数据安全保障。示例:结合等库自动生成数据转换代码,以确保类型一致性。原理:Dart的强类型和断言机制可避免隐式类型转换错误。通过优化通信机制、数据类型校验和线程隔离策略,Flutter和React Native应用的性能和数据安全性均可显著提升。
2025-03-24 10:57:29
788
原创 2025年移动端开发性能优化实践与趋势分析
性能优化本质是在资源约束下通过软硬件协同最大化应用效能。需结合场景特性选择:移动端用Limbo等轻量语言降低GC压力,游戏用Vulkan/Metal显式控制渲染管线,AR场景通过跨平台框架的GPU加速实现流畅交互。
2025-03-24 10:16:09
892
原创 手机端Flutter、React Native与原生安卓、iOS交互的方案及设计原理
Flutter优先使用Channel机制:直接通过引擎层减少桥接开销,适合高性能需求场景。React Native依赖Bridge:需注意线程安全,对复杂数据结构建议采用JSON Schema定义。通用原则:以数据绑定驱动交互,减少命令式操作(如强制刷新UI),符合响应式架构的思想。通过上述设计,可在保证跨平台一致性的同时,维持性能与开发效率的平衡。
2025-03-17 11:36:31
802
1
原创 AI时代移动端程序员的思考20250314
程序员的核心价值在于系统性思维、业务理解力与复杂问题解决能力,而非单纯编码。为了保持竞争力,需聚焦AI难以复制的领域(如架构设计、跨团队协作、创新创断),并通过持续学习、实践与品牌建设强化自身不可替代性。日常工作中,平衡技术深度与软技能提升,同时善用AI工具优化效率,是应对行业变革的关键。
2025-03-14 16:12:36
386
原创 AI时代移动端程序员应该如何破局?
未来十年,移动端程序员需通过技术深度 + 跨领域广度 + 软技能 + 敏捷学习构建护城河,尤其注重AI融合、全栈能力及对行业趋势的预判。只有持续进化,才能在技术变革中保持竞争力。
2025-03-14 15:22:52
402
原创 Flutter Widget框架
现代响应式框架主要用于构建UI根据状态渲染(当widget的状态发生变化时,widget会重新构建UI,Flutter会对比前后变化的不同, 以确定底层渲染树从一个状态转换到下一个状态所需的最小更改(译者语:类似于React/Vue中虚拟DOM的diff算法)编写一个MyAppBar/** * 创建一个自定义的AppBar */class MyAppBar extends Sta...
2018-11-19 17:18:01
314
原创 Flutter入门项目解析
对于一个应用来讲,无非就是页面、导航、网络加载、动画等等,那么Flutter也不例外,现在从官方入门项目来分析一下Flutter的基本结构。库的引入(使用外部包)Flutter的外部包都放在这个文件下 dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to...
2018-11-05 10:47:44
1137
1
原创 Flutter从入门到放弃之坑的神奇之处?
坑一关于环境变量的配置,这里要注意几点,不然你将会在这里卡死。这里只说Mac OS环境变量的配置。因为我是Mac首先 command+shift+.打开隐藏文件如果你是用的是自带的终端,请在这个文件中配置如果你使用的是zsh请在这个文件中配置环境变量。至于zsh是什么,不解释了需要配置的东西坑二虽然,我按照官方中文网配置了一番。遇到了Could not f...
2018-10-31 16:03:05
7663
原创 Retrofit网络库使用笔记
Retrofit网络库介绍- Retrofit是Square公司基于Restful风格推出的网络框架的封装- Retrofit与OKHttp的关系Retrofit是基于OKHttp的网络请求框架的二次封装,其本质仍然是OKHttp- Retrofit库包结构不到40个类的对OKHttp的封装- 与其他网络库对比Retrofit优点Retrofit网络库使用...
2018-10-23 15:46:04
372
翻译 Android 代码命名规范
目的增强代码的可读性增强代码的可维护性需要命名的代码有哪些?包 com.x.y.z 固定com+个人/公司名+应用名+功能模块名类 驼峰命名法 UpperCamelCase变量 小骆驼拼写法方法参数 小驼峰命名法资源文件常见单词缩写...
2018-10-09 18:09:27
356
翻译 Android App 性能优化
快、稳、省、小流程的操作体验稳定省电、省流量安装包小不好的体验卡顿内存泄露、崩溃代码质量和逻辑差导致耗流量、耗电安装包过大快 怎么才能快?影响卡顿的因素?UI的刷新、绘制启动,冷启动、热启动、温启动跳转、页面跳转、前后台切换即时反馈、点击事件、滑动事件、系统事件等等UIUI绘制原理Android 显示过程可以简单概括为:Android 应用程序把...
2018-10-09 17:06:16
424
原创 微信支付宝H5支付二合一
1:支付宝根据官方文档导入最新jar包、mainXml文件中加入支付宝的Activity、混淆文件等等按照官方配置配置即可。2:注意点(坑) (1):如果 WebView需要支持JS之间交互,请把JS代码放在一下代码中,不然会存在调不起来支付三方的H5页面@Override public void onPageStarted(WebView view, String url,...
2018-08-20 15:30:19
2962
原创 Android富文本之给一段字符串中某一段字符上色、添加点击事件等
// 给Terms添加点击 以及颜色 val registerTips:String = getString(R.string.vpe_register_tips) val spannable = SpannableString(registerTips) // 添加点击事件 要放在上色前面,不然上色会被覆盖掉 spannable.setSpan(object :...
2018-07-13 10:37:02
1415
原创 Android Studio 使用一段时间卡顿的解决办法
选择此处如果没有此文件,新建一个粘贴以下代码也就是为Android Studio分配最小内存和最大内存-Xms1024m -Xmx4096m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=96m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=t...
2018-07-11 15:31:13
3052
原创 循环&选择
cmp(Compare)比较指令 CMP 把一个寄存器的内容和另一个寄存器的内容或立即数进行比较。但不存储结果,只是正确的更改标志。 一般CMP做完判断后会进行跳转,后面通常会跟上B指令!BL 标号:跳转到标号处执行B.GT 标号:比较结果是大于(greater than),执行标号,否则不跳转B.GE 标号:比较结果是大于等于(greater than or equ...
2018-05-12 13:58:14
305
原创 还原高级代码
通过Main函数一段代码来测试#import <UIKit/UIKit.h>#import "AppDelegate.h"int glabel = 12;int func(int a,int b) { printf("haha"); return a + b + glabel;}int main(int argc, char * argv[]) {...
2018-05-12 11:18:56
762
原创 安卓DataBing解决问题
VM管理视图和数据package com.vpgame.eric.main.articles;import android.databinding.Bindable;import android.databinding.ObservableBoolean;import android.util.Log;import android.view.View;import com...
2018-05-07 18:43:51
1303
原创 内存分区
代码区可读可写可执行栈区 放参数和局部变量 也是可读可写堆区域 可读可写 动态申请 全局变量区域 可读可写 常量区域 所谓只读 逆向可读可写 因为都是IDE的限制而已...
2018-05-07 18:10:57
211
原创 状态寄存器
测试状态寄存器也称之为标记寄存器,其实都是一个东西。那么这个标记寄存器可以很方便的帮助我们进行破解,那么怎么破解呢?俗称暴力破解先看断点处的汇编代码:发现cpsr的地址为16进制:0x80000000那么 0x80000000的二进制是多少呢?0x1000 0000 0000那么我想把此寄存器地址改为 0x0100 0000 0000 怎...
2018-05-06 22:53:30
8341
原创 函数的参数和返回值
函数的参数和返回值ARM64下,函数的参数是存放在X0到X7(W0到W7)这8个寄存器里面的.如果超过8个参数,就会入栈. 函数的返回值是放在X0 寄存器里面的.模拟函数的参数和返回值//// main.m// 5.1huibian//// Created by 贾元发 on 2018/5/1.// Copyright © 2018年 贾元发. All ...
2018-05-01 18:47:52
602
原创 栈
栈栈:是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)SP和FP寄存器sp寄存器在任意时刻会保存我们栈顶的地址.fp寄存器也称为x29寄存器属于通用寄存器,但是在某些时刻我们利用它保存栈底的地址!() 注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\st...
2018-04-25 22:38:58
504
原创 函数的本质
关于CPU的补充寄存器CPU除了有控制器、运算器还有寄存器。其中寄存器的作用就是进行数据的临时存储。 CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中,运算时就在这一小快临时存储区域内进行。我们称这一小块临时存储区域为寄存器。对于arm64系的CPU来说, 如果寄存器以x开头则表明的是一个64...
2018-04-23 23:54:20
799
原创 寄存器
不同的CPU,寄存器的结构和个数是不同的。ARM64有31个64位的寄存器,x0~x30,通常用来存放一般性的数据,被称为通用寄存器。w0~w28是32位的寄存器,因为64位是兼容32位的,所以可以使用64位寄存器的低32位,w0就是x0的低32位。通常CPU会将内存中的数据存储在寄存器中,然后对通用寄存器中的数据进行计算。mov只是读取内存的值,但是不会对内存中的值进行修...
2018-04-23 23:10:32
970
原创 进制
做个练习1 + 1 在__情况下等于 3 ? 十进制由10个符号组成: 0 1 3 2 8 A B E S 7 逢十进一如果这样定义十进制: 1 + 1 = 3!就对了!这样的目的何在? 传统我们定义的十进制和自定义的十进制不一样.那么这10个符号如果我们不告诉别人这个符号表,别人是没办法拿到我们的具体数据的!用于加密! 十进制由十个符号组成,逢十进一,符号...
2018-04-20 00:47:43
495
原创 CPU与内存
寻址能力决定了什么?决定了你需要多大的内存条,也就是你的CPU一定要和内存条相匹配。如果CPU地址很低,装了很大的内存条,那么发挥不出应有的性能。64位CPU就有64个总线。...
2018-04-20 00:19:48
474
原创 汇编初识
安装在手机上的App本质是可执行的二进制文件由CPU执行汇编语言的发展机器语言由0和1组成的机器指令汇编语言:使用助记符代理机器语言。高级语言:Object、Swift、Java等汇编语言种类8086汇编Win32 Win64 ARM汇编 (嵌入式、Mac、iOS )CPU硬件结构App的执行过程...
2018-04-19 23:57:44
273
原创 RN的高性能FlatList(相当于安卓的RecycleView、iOS的TableView)组件的基本使用
电影列表Item 先输出Item组件/** * Sample React Native App * https://github.com/facebook/react-native * @flow */import React, { Component } from 'react';import { Platform, StyleSheet, Text, View,
2018-04-12 18:18:43
1523
原创 RN盒模型以及FlexDirection布局
颜色值https://reactnative.cn/docs/0.51/colors.html#content盒模型加边框垂直关系是否换行主轴排列方式次轴排列方式学会使用界面调试器进行调试三个Item平分布局Item组件/** * Sample React Native App * http...
2018-04-12 11:00:08
1909
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人