- 博客(109)
- 资源 (4)
- 收藏
- 关注
原创 ReactNative中Hooks封装与使用
组件是 React 代码复用的主要单元,但如何将一个组件封装的状态或行为共享给其他需要相同状态的组件并不是显而易见的。ReactNative 和 React 一样可以使用函数式组件或 Class 组件。最开始只有 Class 组件能够使用 state ,函数式组件都是无状态的。并且渲染结果只与参数有关,参数相同,每次渲染结果都相同。组件之间如果有复用的需求,有一些可复用的逻辑需要从组件中抽取出来,通常是使用 render props 或 高阶组件。render propsclass Mouse ex
2022-02-09 21:09:03
2432
转载 React Hooks 最佳实践
简介React 16.8 于 2019.2 正式发布,这是一个能提升代码质量和开发效率的特性,笔者就抛砖引玉先列出一些实践点,希望得到大家进一步讨论。然而需要理解的是,没有一个完美的最佳实践规范,对一个高效团队来说,稳定的规范比合理的规范更重要,因此这套方案只是最佳实践之一。精读环境要求拥有较为稳定且理解函数式编程的前端团队。开启 ESLint 插件:eslint-plugin-react-hooks。组件定义Function Component 采用 const + 箭头函数方式定义:
2021-07-25 15:11:29
450
转载 怎么用 React Hooks 造轮子
1 引言上周的 精读《React Hooks》 已经实现了对 React Hooks 的基本认知,也许你也看了 React Hooks 基本实现剖析(单向链表),但理解实现原理就可以用好了吗?学的是知识,而用的是技能,看别人的用法就像刷抖音一样(哇,饭还可以这样吃?),你总会有新的收获。这篇文章将这些知识实践起来,看看广大程序劳动人民是如何发掘 React Hooks 的潜力的(造什么轮子)。首先,站在使用角度,要理解 React Hooks 的特点是 “非常方便的 Connect 一切”,所以无论是
2021-07-25 15:08:39
597
转载 Function VS Class 组件
1. 引言为什么要了解 Function 写法的组件呢?因为它正在变得越来越重要。那么 React 中 Function Component 与 Class Component 有何不同?how-are-function-components-different-from-classes 这篇文章带来了一个独特的视角。顺带一提,以后会用 Function Component 代替 Stateless Component 的说法,原因是:自从 Hooks 出现,函数式组件功能在不断丰富,函数式组件不
2021-07-25 15:03:55
433
原创 抓包实现原理与反抓包
在理解抓包HTTPS的原理之前,需要先对HTTPS的原理有一定的理解。1.HTTPS 简介HTTPS全称:Hyper Text Transfer Protocol over SecureSocket Layer,基于SSL的超文本传输协议, HTTPS协议 = HTTP协议 + SSL/TLS协议,在HTTPS数据传输的过程中,需要用SSL/TLS对数据进行加密和解密,然后需要用HTTP对加密后的数据进行传输,由此可以看出HTTPS是由HTTP和SSL/TLS一起合作完成的。HTTPS的实质:H.
2021-07-11 15:25:37
4301
5
原创 ReactNaitve代码规范和工具格式化
1.代码格式规范1.1 命名命名优先使用英文全拼,过长可适当使用英文缩写,命名应少于20个字符文件夹名:小写,可以使用下划线进行分割order order_page文件名:使用驼峰命名且首字母大写HomeView.js组件名:组件名称应该和文件名一致,使用驼峰命名且首字母大写export default class ProjectDetail extends Component {}引用名:与组件名一致,使用驼峰命名法且首字母大写//bad import d
2021-06-24 22:59:42
632
1
原创 Bitmap使用优化
BItmap使用优化可以从三个方面进行:内存压缩、对象复用、内存磁盘缓存一. BItmap内存压缩当我们读取一个Bitmap图片的时候,有一点一定要注意,就是千万不要去加载不需要的分辨率。在一个很小的ImageView上显示一张高分辨率的图片不会带来任何视觉上的好处,但却会占用我们相当多宝贵的内存。需要仅记的一点是,将一张图片解析成一个Bitmap对象时所占用的内存并不是这个图片在硬盘中的大小(那是各种压缩格式压缩后的大小),可能一张图片只有100k你觉得它并不大,但是读取到内存当中是按照像素点来算的
2021-03-14 16:17:24
616
原创 加密算法及应用总结
加密算法使用密码学可以达到以下目的:保密性:防止用户的标识或数据被读取。数据完整性:防止数据被更改。身份验证:确保数据发自特定的一方。在加密中,应该保密的仅仅是明文和密钥。也就是说我们通常假设攻击者对加密算法和密文了如指掌,因此加密的安全性应该仅仅依赖于密钥而不是依赖于假设攻击者不知道加密算法。在如今的信息安全领域,有各种各样的加密算法凝聚了计算机科学家门的智慧。从宏观上来看,这些加密算法可以归结为三大类:哈希算法、对称加密算法、非对称加密算法。1. 哈希算法哈希算法:又称散列算法,是一
2020-09-01 13:03:22
8986
1
原创 Android ORM框架实现探索
ORM概念ORM 表示全称为对象关系映射(Object Relational Mapping),简单说,ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术。ORM通过描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系型数据库中。数据库的表(table) --> 类(class)字段(field)–> 对象的属性(attribute)记录(record,行数据)–> 对象(object)Android ORM框架目前业内有很多ORM框架如GreenDA
2020-08-21 13:08:46
1386
原创 Android IOC框架的实现原理
1. IOC思想先看一个简单的例子:如果在 Class A 中,有 Class B 的实例,则称 Class A 对 Class B 有一个依赖。例如下面类 Human 中用到一个 Father 对象,我们就说类 Human 对类 Father 有一个依赖。public class Human { ... Father father; ... public Human() { father = new Father(); }}仔细看这段
2020-08-17 23:57:10
2053
原创 针对RecyclerView的优化整理
1.使用DiffUtil去局部刷新数据采用android Support 包下的DiffUtil工具类,它主要是为了配合 RecyclerView 使用,通过比对新、旧两个数据集的差异,生成旧数据到新数据的最小变动,然后对有变动的数据项,进行局部刷新。https://www.cnblogs.com/plokmju/p/7385136.htmlhttps://zhuanlan.zhihu.com/p/260798032.有大量图片时,滚动停止加载图片,停止后再去加载图片https://www.jia
2020-07-01 10:44:33
4843
原创 RecyclerView问题总结
一、缓存机制分析RecyclerView缓存机制源码的一系列文章,分析的很清楚:RecyclerView缓存机制(咋复用?)RecyclerView缓存机制(回收些啥?)RecyclerView缓存机制(回收去哪?)RecyclerView缓存机制(scrap view)1. 总结RecycleView的四级缓存是由三个类共同作用完成的,Recycler、RecycledViewPool和ViewCacheExtension。Recycler用于管理已经废弃或者与RecyclerVie
2020-06-23 13:39:31
494
转载 Function Component 入门
1. 引言如果你在使用 React 16,可以尝试 Function Component 风格,享受更大的灵活性。但在尝试之前,最好先阅读本文,对 Function Component 的思维模式有一个初步认识,防止因思维模式不同步造成的困扰。2. 精读什么是 Function Component?Function Component 就是以 Function 的形式创建的 React 组件:function App() { return ( <div> <
2020-06-15 13:49:43
1599
1
原创 Android嵌套滑动
Android嵌套滑动讲解NestedScrolling机制之CoordinatorLayout.Behavior实战public interface NestedScrollingParent2 extends NestedScrollingParent { /** * 这个是嵌套滑动控制事件分发的控制方法,只有返回true才能接收到事件分发 * * @param child 包含target的ViewParent的直接子View * @param
2020-06-13 10:55:54
623
原创 Android动画整理和属性动画源码分析
一、基础1.动画总结2.补间动画总结3.帧动画总结4.属性动画总结属性动画 Property Animation(上手篇)属性动画 Property Animation(进阶篇)二、属性动画源码分析以 ObjectAnimator 为例来写一个简单的右移动画ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(iv,"translationX",0,100).setDuration(1 * 1000);objectAnimator.
2020-05-28 22:55:59
737
原创 Android屏幕适配方案总结
一、基础知识1.Android中常用的距离单位px(像素):每个px对应屏幕上的一个点。dip或dp:(device independent pixels,设备独立像素):一种基于屏幕密度的抽象单位。在每英寸160点的显示器上,1dip=1px.单随着屏幕的密度改变,dip和px的换算也会发生改变sp(scaled pixels, 比例像素):主要处理字体的大小,可以根据用户的字体大小首选项进行缩放。in(英寸):标准长度单位,1 英寸=2.54 厘米。mm(毫米):标准长度
2020-05-22 21:31:36
7650
原创 Android自定义View常用整理
1.Canvas常用操作操作类型相关API备注基础方法getDensity, getWidth, getHeight,getDrawFilter,isHardwareAccelerated(API 11),getMaximumBitmapWidth,getMaximumBitmapHeight,getDensity,quickReject,isOpaque,setBitmap,setDrawFilter绘制颜色drawColor, drawRGB, drawARGB,dr
2020-05-20 09:44:28
480
转载 App启动到View绘制源码分析
1.App启动流程Android源码分析之App启动流程(一)Android源码分析之App启动流程(二)2.Activity启动到View绘制流程Android源码分析之Activity启动与View绘制流程(一)Android源码分析之Activity启动与View绘制流程(二)3.View绘制流程(1)自定义View基础 - 最易懂的自定义View原理系列(2)自定义View Measure过程 - 最易懂的自定义View原理系列(3)自定义View Layout过程 - 最易懂的自
2020-05-14 20:30:55
241
原创 ReactNative code-push更新后重新打开回退问题
问题:使用code-push更新以后,关闭app重新打开会回滚到更新之前的版本,查看日志发现有这么一句话Update did not finish loading the last time, rolling back to a previous version更新判断代码如下 CodePush.checkForUpdate().then((update) => { ...
2020-04-20 17:02:15
2009
原创 使用FFmpeg实现rtmp播放和音视频同步
使用FFmpeg实现本地视频和rtmp直播流的播放,实现了音视频同步https://github.com/hxljy/FFmpegPlayer
2020-04-17 16:21:49
1900
2
原创 编译FFmpeg问题汇总
1.error: undefined reference to ‘av_version_info()’出错原因: ffmpeg是纯C的库,头文件没有做好C++调用的准备解决方案:用extern “C”{}套住ffmpeg头文件,用C语言的编译规则来编译ffmpeg代码,就可以了extern "C"{ #include <libavutil/avutil.h>}2.l...
2020-04-08 12:56:36
3477
2
原创 FFmpeg4.2.2和RTMP结合编译
一、编译librtmp下载librtmp源码,在GitHub上下载:可以用git下载:git clone https://github.com/yixia/librtmp.git编译librtmp脚本:#!/bin/bashNDK_ROOT=/root/ndk/android-ndk-r17cCPU=arm-linux-androideabiTOOLCHAIN=$NDK_...
2020-04-07 17:28:59
1082
原创 Android不同CPU架构下so文件兼容问题总结
一、Android 设备的CPU类型通常分以下几种armeabiv-v7a: 第7代及以上的 ARM 处理器,目前主流版本,大部分Android设备都使用它。arm64-v8a: 第8代、64位ARM处理器。armeabi: 第5代、第6代的ARM处理器,早期的手机用的比较多,缺少对浮点数计算的硬件支持,在需要大量计算时有性能瓶颈。x86 / x86_64: x86 架构的手机都会包含由...
2020-04-07 13:00:20
5379
原创 cmake配置ffmpeg时报错couldn't find "libnative-lib.so"
在使用cmake配置导入的ffmpeg静态库时,运行总是报错couldn't find "libnative-lib.so",错误日志如下:2020-04-05 23:45:11.261 30041-30041/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.ffmpegtest, PID: 30041 ...
2020-04-05 23:59:56
1510
2
原创 ReactNative WebView onNavigationStateChange等方法不响应
一、问题RN项目中因为多个页面使用h5来实现,因此需要使用到WebView,我这里使用的是官方社区维护的WebView。在使用中发现在h5中跳转到二级页面时,onNavigationStateChange、onLoad、onLoadEnd、onLoadStart等方法都不响应,因此无法获取到页面路由状态,Android端的物理返回键无法处理是应该webview回退还是页面关闭。二、原因经过...
2020-04-01 15:50:02
3773
原创 Java编译过程、c/c++编译过程区别
1、Java编译过程与c/c++编译过程不同Java编译程序将java源程序编译成jvm可执行代码–java字节码.c/c++编译过程:当C编译器编译生成一个对象的代码时,该代码是为在某一特定硬件平台运行而生成的。因此在编译过程中,编译程序通过查表将所有对符号的引用转换为特定的内存偏移量,以保证程序运行。Java编译过程:Java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序...
2020-03-29 11:30:23
1861
转载 展示组件和容器组件的区别和应用
在使用React中,你是否会出现过一个文件的代码很多,既存在应用数据的读取和处理,又存在数据的显示,而且每个组件还不能复用。首先我们来看一个容器组件和展示组件一起的例子吧。class TodoList extends React.Component{ constructor(props){ super(props); this.state ={ ...
2020-03-12 15:23:54
2056
原创 ReactNative 线上JS层错误统计解析
一、前言开发APP,通常都会接入一些第三方的错误统计工具,例如友盟、bugly等,而这些第三方提供的SDK目前来看,只支持Native层的统计。对于ReactNative项目来说,反馈的错误日志无法直接看出具体错误信息,如下是友盟统计的错误日志com.facebook.react.common.JavascriptException: TypeError: null is not an obj...
2020-03-10 16:53:25
2347
原创 ReactNative pod install卡在boost-for-react-native
在ios目录下pod install时,总是会卡在boost-for-react-native,因为国内用户拉GitHub的代码会卡住,一直失败解决办法:在ios目录下Podfile文件中,加入以下代码,再pod install就可以下载下来了。pod 'boost-for-react-native', :git => 'https://gitee.com/damon-s/boost...
2020-02-28 16:03:44
5878
1
原创 React Native 0.60以上集成code push热更新
安装 CodePush CLI管理 CodePush 账号需要通过 NodeJS-based CLI。只需要在终端输入 npm install -g code-push-cli,就可以安装了。安装完毕后,输入 code-push -v查看版本,如看到版本代表成功。创建一个CodePush 账号在终端输入code-push register,会打开注册页面让你选择授权账号。授权通过之后,C...
2020-01-20 16:55:52
2833
原创 ReactNative关于普通函数和箭头函数的调用方式
箭头函数1.无参 //无参箭头函数 press = () => { this.setState({ data: 1 }) };正确调用:直接使用函数名,因为整个函数赋值给了press,使用press代表箭头函数,这样不会出现初始化时自动调用 <Text onPress={this.press} >{this.state.data}...
2019-11-23 12:59:09
1109
原创 ReactNative打包错误:Execution failed for task ':xxxxx:verifyReleaseResources'.
错误日志:> Task :react-native-cookies:verifyReleaseResources FAILEDFAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':react-native-cookies:verifyReleaseResource...
2019-11-09 01:01:35
6471
1
原创 ReactNative学习路线
JavaScriptJS语法基础ES6ECMAScript 6 入门ReactNative基础ReactNative官网,最权威、内容最新ReactNative中文网(个人维护,非官方)ReactNative流行框架React Navigation:管理界面跳转和层级React Navigation官网Redux:状态容器,提供可预测化的状态管理Redux中文文档...
2019-11-07 00:16:30
1929
1
原创 使用react-native-camera后项目启动报错
reactnative 0.61.2版本在项目导入react-native-camera库后,启动报错,错误如下:error Failed to install the app. Make sure you have the Android development environment set up: https://facebook.github.io/react-native/docs/g...
2019-11-06 23:30:42
1475
原创 Android Studio 3.5格式化布局代码时错位、错乱bug
更新到3.5版本后,格式化布局文件代码,会自动给排序元素,导致界面布局错乱解决办法:设置 > code style > XML 右上角 Set from然后选择Predefined Style…>Android即可...
2019-10-08 11:43:03
1031
原创 EventBus源码分析
概述EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,具体使用方式参考github,本文我们将通过源码看下他是如何注册和发布事件的。https://github.com/greenrobot/EventBus1.获取实例//是一个“双重校验锁”的单例模式。 pub...
2019-10-05 23:27:27
827
原创 Activity调用finish却不立即执行onDestory
Activity.finish()在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。当你调用此方法的时候,系统只是将最上面的Activity(即当前的activity)移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的返回键时,也不会再找到这个Activity。Activity.onDes...
2019-09-29 17:44:52
3057
1
原创 onCreat()和onRestoreInstanceState()恢复数据区别
(1)因为onSaveInstanceState 不一定会被调用,所以onCreate()里的Bundle参数可能为空,如果使用onCreate()来恢复数据,一定要做非空判断。而onRestoreInstanceState的Bundle参数一定不会是空值,因为它只有在上次activity被回收了才会调用。(2)onRestoreInstanceState是在onStart()之后被调用的。有时...
2019-09-28 20:58:47
2550
原创 Glide实现原理解析
一.Glide缓存机制Glide采取的多级缓存机制,能够较为友好地实现图片、动图的加载。其主要有 内存缓存+磁盘缓存 ,当然他们的作用也有不同,其中内存缓存主要用于防止将重复的图读入内存中,磁盘缓存则用于防止从网络或者其他地方将重复下载和数据读取。默认情况下,Glide 会在开始一个新的图片请求之前检查以下多级的缓存:活动资源 (Active Resources)内存缓存 (Memor...
2019-08-15 15:49:04
15498
2
使用 poi 操作 doc 与 docx 相关读写的jar包
2021-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人