- 博客(50)
- 收藏
- 关注
原创 KMM 入门(七)处理 HTTP 网络请求
众所周知,一条HTTP请求报文,包含几个重要部分Method、Host、Path及Query、HTTP版本、Headers、Body(主要是POST、PUT)这些内容,Ktor也都支持定义,封装在当中,并在HttpClient的初始化闭包中的子闭包,以及HttpClient的各个扩展方法中,作为最后一个参数的Block参数返回,即可在HttpClient.request或get、post等扩展方法调用的后的闭包中操作HttpClient初始化时,添加闭包,并利用其。...
2022-07-27 00:02:18
2219
6
原创 KMM 入门(六)使用 SQLDelight 操作数据库
数据库在 App 中的作用移动 App 的数据库与 Server 数据库不同,其主要目的是为了缓存一些数据,如:历史消息、数据打点、列表数据缓存等,宗旨都是为优化用户体验建立一套简单的数据基础由于 SQLite 完全开源,且比较轻量(不需要像 MySQL 这样建立一个单独的进程,直接操作 DB 文件),目前,在各类移动端操作系统(包括不限于 Android、iOS、Windows)当中,都会内置 SQLite,以便开发者存取结构化数据于是,围绕 SQLite 展开的开发框架也越来越多,比如:iOS 上
2022-02-24 16:45:41
4669
10
原创 KMM 入门(五)处理多线程
为什么需要在 KMM 中处理多线程?我们使用 KMM,通常是处理和 UI 无关的业务逻辑,所以多数情况是网络请求、数据缓存、文件读写等操作,为了不影响 UI 绘制,这些操作往往都会在异步线程中执行,而 KMM 模块的线程切换,调用方肯定是不应该去管理的,所以需要探索一种在 KMM 中比较靠谱的多线程处理方式可行的多线程切换方式协程(kotlinx-coroutines)Kotlin 协程不依赖于 JVM 实现,可以应用在 Kotlin Native 项目当中,不需要再实现平台差异化代码,且协程开
2022-02-24 16:45:36
1490
4
原创 KMM 入门(四)与依赖库交互
KMM 的依赖类型KMM 的依赖根据平台分为三类,分别是 Common 依赖、Android 依赖、iOS 依赖,其中 Common 依赖顾明思议,是用于通用逻辑的,这种依赖只能使用基于最标准的 Kotlin 底层能力(不可以耦合 JVM、JS)构建例如,在 Android 端上比较常用的 Kotlin Reflect、OkHTTP、GSON、Fresco,在 iOS 上比较常用的 AFNetworking、YYModel 之类的库,都不能直接用在 KMM 模块的 Common 代码库中那么,上面说的
2022-02-24 16:45:30
3084
5
原创 KMM 入门(三)平台差异化实现
文章目录平台差异化代码的使用场景差异化代码的基本实现Demo 及注意点expect & actual 实现方式在 Common 中建立一个 expect 类或 Top-Level 方法完成 actual 实现Android 示例:iOS 示例:注入式实现定义注入实现Android 示例:iOS 示例:平台差异化代码的使用场景由于 KMM 运行在各平台时,实际上是翻译成了各平台专用的库,如:Android 上就会将共享模块编译成 Dalvik Bytecode 然后打包成 AAR 文件,而 iOS
2022-02-24 16:45:24
4317
14
原创 KMM 入门(二)在现有工程中集成 KMM
为什么要在现有工程中集成?直接用 KMM 插件生成的工程不香嘛?为什么还要讲在原有的工程中集成?不香,确实不香!默认工程结构局限性高由 KMM 插件建立的工程,默认使用 Kotlin(*.kts 文件)进行 Gradle 配置,虽然用 Android Studio 新建一个 Android 工程会默认使用 kts,但很多项目现在都还在使用 Groovy,要改回去也需要一定工作量和学习成本默认建立的 iOS 工程使用 Swift UI,目前大多数 iOS App 都会使用代码开发 UI,并没有
2022-02-24 16:45:11
4091
原创 KMM 入门(一)简介与基本环境搭建
文章目录什么是KMM?Kotlin Mutiplatform 之间的关系与其他跨平台框架的简单对比KMM 与 Flutter 的基本思路差异成本差异其他业界类似框架跑一个 KMM DemoKMM 工程文件结构什么是KMM?KMM 全称:Kotlin Multiplatform Mobile,是基于 Kotlin 语言进行多平台开发的一套技术框架,它和 Kotlin Native(简称 KN)有一定联系,但 KMM 主要面相移动端开发,即:Android、iOS、Web,而 KN 则主要面相 Linux、
2022-02-24 16:44:57
21874
8
原创 淘宝系App图片为什么在北京电信网络加载这么慢?
欢迎访问我的个人网站:https://coderyuan.com文章目录先讲讲怎么回事不能抓包初步判断是DNS或IPv6问题(其实不是)反馈被逼无奈,只好搞逆向利用LayoutInspector找到ImageView探究一下TNodeImageView的源码尝试修改Smali——放弃编写Xposed插件,抓取图片URL利用Xposed进一步研究淘宝的图片加载流程发现ImageLoader分析PhenixCreator捕获图片网络流发现淘宝的网络框架分析ANetwork网络框架首先要把图片的URL抓出来尝试
2020-05-26 13:20:12
4350
原创 Kotlin编码规范
欢迎访问我的个人网站:https://coderyuan.com文章目录1 介绍2 源文件规范2.1 文件编码2.2 文件命名2.3 特殊字符2.3.1 空格2.3.2 特殊转义字符2.3.3 非ASCII字符2.3.4 文件结构2.3.4.1 版权/许可证2.3.4.2 文件级注解2.3.4.3 Package声明语句2.3.4.4 Import语句2.3.4.5 顶级(Top-Level)定...
2019-09-24 17:25:37
1458
2
原创 修改Android源码,解放HTTPS抓包
文章目录为什么HTTPS不能抓包了?如何解决这一问题?基本的几个思路寻求一个适合自己的办法如何改Android源码准备工作分析源码修改相关源码刷机验证为什么HTTPS不能抓包了?Google在Android 7.0以后的版本中,添加了“网络安全配置(Network security configuration)”的相关配置项。其旨在增强App的安全性,可以避免TargetSDK版本>=N...
2019-09-23 17:26:23
3051
6
原创 优化Android Studio在AMD 2990WX上的编译速度
文章目录由来了解一下牛逼的架构内存访问的不足NUMA推测&调优查到一篇官方资料了解JVM调优参数Android Studio调优Gradle调优Java Compiler、Kotlin Compiler、Android Compiler调优其他优化选择合适的JRE相对独立Module操作系统总结由来一个月前,剁手了AMD Ryzen Threadripper 2990WX(官网),这个...
2018-11-02 17:13:16
3245
9
原创 使用Node.js开发一个简单的图片服务器
文章目录背景基本原理及流程判断浏览器是否支持WebP完整的图片请求流程图片上传技术框架expressnode-static实现图片解析及传输服务文件上传服务接管Express的文件上传使用GraphicsMagick添加图片水印生成WebP格式文件回调可供访问的完整URL部署后继优化背景之前在开发实验室官网(https://www.xiyoumobile.com)的时候,由于图片特别多,学校服...
2018-09-24 02:02:48
6614
原创 小试Flutter
Flutter是什么环境搭建运行一个Demo使用Flutter进行APP开发Dart程序入口(Entry Point)组件(widget)布局(Layout)输入(Input)图像(Assets、Images、Icons)样式(Styling)异步(Async)特别的UI组件库其他组件总结Flutter是什么我觉得可以理解为Google做的Re...
2018-07-17 10:42:16
1812
原创 Android P非SDK的隐藏API调用检测
为什么要检测?Google在2018年的I/O大会上发布了Android P的Developer Preview 2(简称DP2)版本,其中还说明了在以后的Android P上,将对非SDK API的调用进行限制。目前,开发者对于非SDK API的调用,只能采取反射或JNI间接调用的方法进行调用。由于Android是开源的,所以开发者对非公有SDK的调用十分混乱,Google此举也是为了进一步...
2018-05-29 14:24:05
8832
3
原创 Smali基础知识
Smali是什么?简介Smali是用于Dalvik(Android虚拟机)的反汇编程序实现,汇编工具(将Smali代码汇编为dex文件)为smali.jar,与之对应的baksmali.jar则是反汇编程序(下载地址),官方所说的基于Jasmin/dedexer语法,实际根不知道是什么鬼……Smali支持注解、调试信息、行数信息等基本Java的基本特性,可以说是很接近Java编译在...
2018-05-29 11:22:39
61916
25
原创 浅析Android的Context
欢迎访问我的个人网站:https://coderyuan.comContext是Android App中用的非常多的一种概念,常被翻译成上下文,这种概念在其他的技术中也有所使用,无意间点了Context的源码,那么就来分析分析Context在Android中到底是什么东西?先贴段代码/** * Interface to global information about an ...
2018-04-23 16:28:04
8204
原创 Android启动速度优化
欢迎访问我的个人网站:https://coderyuan.com最近做了一些Android App启动速度的优化,有一些心得,整理整理影响启动速度的原因高耗时任务数据库初始化、某些第三方框架初始化、大文件读取、MultiDex加载等,导致CPU阻塞复杂的View层级使用的嵌套Layout过多,层级加深,导致View在渲染过程中,递归加深,占用CPU资源,影响Me...
2018-04-23 16:20:54
21477
6
原创 React Native布局实践:开发京东客户端首页(四)——首页功能按钮及控件封装
从我写第一篇React Native文章以来,我们几乎是把所有的代码都放在一个js文件中实现的,随着工程复杂度的增加,各种自定义控件的代码就和业务逻辑代码耦合严重,这篇文章就来解决这一问题,让我们一起来学习控件封装的方法吧!
2016-02-03 17:52:03
10058
8
原创 React Native布局实践:开发京东客户端首页(三)——轮播图的实现
上篇文章中,我们一起构建了京东客户端的TabBar,在本文中,将继续向大家介绍京东客户端首页轮播图及其下发功能按钮的开发方法,现在就让我们开始吧!
2016-01-28 15:32:11
21704
6
原创 React Native入门——布局实践:开发京东客户端首页(二)TabBar的构建
本文主要对京东客户端TabBar的样式进行了分析,并对React Native中tabnavigator控件进行了说明,并一步一步讲将TabBar的构建步骤呈现出来,让我们一起来开发自己的TabBar!
2016-01-21 16:27:51
19031
17
原创 React Native入门——布局实践:开发京东客户端首页(一)
有了一些对React Native开发的简单了解,让我们从实战出发,一起来构建一个简单的京东客户端。这篇文章会对京东客户端首页的布局进行简单的分析,并对搜索框部分的开发进行介绍,其他内容在后面的文章中继续介绍。
2016-01-19 17:56:47
34652
40
原创 使用Gson结合泛型类灵活解析JSON数据
一般比较规范的后端JSON返回数据,会遵循一些指定的JSON格式,比如:错误:{ "status": -1, "data": null, "err": "not_found"}正确:{ "status": 0, "data": { "price": 4, "name": "脉动", "type":
2016-01-07 16:41:03
21572
原创 React Native入门——组件构成及生命周期简介
刚开始接触React Native开发的程序猿可能会拿着网上的例子和文档一头雾水,毕竟不是像C语言有个main、Android有个OnCreate,iOS有个ViewDidLoad那样,加上JavaScript语法的随意性,让很多人无从下手,本文主要介绍React Native组件的生命周期,帮助读者理解一个React Native组件如何进行展示,如何进行开发。
2016-01-07 16:05:16
8708
原创 React Native入门——IDE及其他相关基础技术
关于React Native的开发,其中一个问题是缺少好用的IDE,有一款好的IDE还是能提升开发效率的,本篇文章从不同角度对Atom、Sublime、WebStorm进行比较,分部介绍了他们对React Native开发的支持情况,大家可以选择自己喜欢的IDE用于React Native应用的开发,提示工作效率。文章末尾也对学习React Native有所帮助的其他基础技术进行了简介,帮助开发者提升。
2016-01-06 16:45:25
8818
原创 React Native入门——环境配置及Hello World
最近React Native很火,这篇文章主要介绍如何快速创建一个RN应用,包含一些以后会用到的环境配置,适合希望初步了解React Native的读者,欢迎各位提出建议和问题!
2016-01-06 14:08:16
10831
10
原创 MongoDB在CentOS 7上的systemctl服务配置
[Unit]Description=mongodbAfter=network.target remote-fs.target nss-lookup.target [Service]Type=forkingPIDFile=/mongodb_data/data/mongod.lockExecStart=/usr/local/mongodb/mongod --dbpath=/
2014-07-29 15:40:49
5661
1
原创 在CentOS 7上利用systemctl添加自定义系统服务
CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,本文是对自定义系统服务的初探。
2014-07-21 17:08:19
43994
2
原创 利用Node.js实现模拟Session验证的登陆
Web站点的身份验证和用户登陆通常使用Session实现,如何使用Node.js来模拟用户数据的提交,进行“登陆”呢?请看下文!
2014-07-09 22:23:28
22389
原创 一起来当网管(一)——Windows Server上的DHCP配置
学校实验室里大大小小设备还不少,网络环境虽说不复杂,但也比家用的复杂一些,就当练练手吧,刚好写点文章,免得以后实验室网络没人管了。那么就先从DHCP的配置来讲吧!
2014-07-09 16:52:20
24377
4
原创 利用forever在Linux上实现Node.js项目自启动
Node.js项目如何在Linux上自启动?远程服务器重启了怎么办?……你是否在开发和部署Node.js项目时遇到过这些问题,来看看这篇文章,或许你能找到满意的答案!
2014-07-08 17:42:45
12216
转载 【转】再谈RESTAPI最佳实践
本文由 伯乐在线 - Justin Wu 翻译自 javacodegeeks。欢迎加入技术翻译小组。转载请参见文章末尾处的要求。近一年半,我参与了两到三个项目的工作,这些项目涉及到大量供“外部”使用的REST API,稍后我们会看到为什么要将“外部”这个词放在引号之中。在项目工作期间,我不得不对这些API进行反复地设计,再设计和重构,这篇文章是我对Rest API最佳实践的一些个人
2014-06-09 17:37:05
1127
转载 【转】Silverlight与WPF中BeginInvoke的差异
Silverlight/WPF中,如果要在多线程中对界面控件值做修改,用Dispatcher对象的BeginInvoke方法无疑是最方便的办法,见:温故而知新:WinForm/Silverlight多线程编程中如何更新UI控件的值但今天发现WPF中的BeginInvoke却无法自动将匿名方法/Lambda表达式转变成Delegate类型(注:对委托,匿名方法,Lambda感到陌生的朋友先阅读温
2014-06-09 17:33:03
1757
原创 面向新手的Web服务器搭建(一)——IIS的搭建
很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题。看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器怎么搭,让不太涉及Web的童鞋快速上手。
2014-05-14 21:06:39
147972
18
原创 IIS上的反向代理
说起反向代理服务器,nginx再有名不过了,不过IIS的使用量也很多,IIS7以后的Web服务器操作更是人性化,来看看在IIS服务器上如何实现反向代理!
2014-04-13 03:22:53
51603
原创 来看看.NET 4.5的新功能
.NET Framework 4.5和4.5.1都已经发布,都有什么新的东西?在Windows 桌面程序、Windows 应用商店应用和Windows Phone 8应用中支持如何?一起来看看.NET Framework 4.5新增的内容吧!
2013-12-21 22:42:43
8179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人