移动开发

Android DataBinding系列详解(四)

对DataBinding简单使用基本讲解完成了,大家一定很好奇DataBinding怎么实现的呢,下面结合源码讲解DataBinding的实现原理。 现在就从代码一步一步看。如图1,通过DataBindingUtil setContentView得到ActivityMainBinding对象 图1 省略中间步骤,最终是调用sMapper.getDataBinder,sMapper是Da

adb常用命令

引言 本文为小编学习总结的一些adb的常用命令,可能一些命令有待验证,更多内容可以参考adb用法大全 基本用法 语法命令 adb 命令的基本语法如下: adb [ -d| -e| -s <sericalNumber>] <command> 如果只有一个设备/模拟器连接时,可以省略掉[ -d| -e| -s] <sericalNumber>] 这一部分,直接使用a

React Native 0.70 发布,Hermes 成为默认引擎

React Native 0.70 版本正式发布,这个版本有几项改进,比如 Codegen 的新的统一配置、Hermes 作为默认引擎、对 Android 构建的完整 CMake 支持,还有对新架构文档的更新。 具体更新内容如下: New Architecture 的新文档 在过去的几个月里,Meta 一直在努力为文档中的 New Architecture 部分增加更多的内容。在新的部分,你可以找

手写RxJava简易框架领悟RxJava的美秒

RxJava笔记 前言 看此篇之前最好知道RxJava的使用。由于RxJava内部源码实现有点复杂,既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能、兼容性、扩展性有关的代码剔除,只留下核心代码,加上我个人的理解,带大家揭秘RxJava的实现原理(本文不涉及框架的使用介绍)。 一、构建观察者类 Subsribler在RxJava里面是一个抽象类,它实现了Obs

浅谈 RunLoop

什么是RunLoop     RunLoop 是事件接收和分发机制的一个实现,是线程相关的基础框架的一部分,一个 RunLoop 就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。一般来讲,一个线程一次只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时处理事件但并不退出,通常的代码逻辑是这样的: do{ //... }while(//...)     

【源码】Vue3 Ref原理,套娃的艺术

前言 Vue3有个Ref API,官网文档 说明其主要的用处是:1、将一个原始类型值 (例如,一个字符串),变成响应式的。2、当解构的两个 property 的响应性都会丢失时,可以将我们的响应式对象转换为一组 ref。这些 ref 将保留与源对象的响应式关联。 下面是对应的两个例子: import { ref } from 'vue' const count = ref(0) console.

ThreadLocal的简单理解

[TOC] 一、背景 最近有人问我ThreadLocal是如何做到在每个线程中的值都是隔离的,此处写篇文章来简单记录下。 二、ThreadLocal解决的问题 该数据属于该线程Thread自身,别的线程无法对其影响。(需要注意:需要调用ThreadLocal的remove方法) 不存在线程安全问题。(因为ThreadLocal类型的变量只有自身的线程可以访问,所以这点是成立的。) 比如:

单系统使用JWT实现登录案例

一、JWT简介 在上一篇中介绍了使用cookie+session实现登录的案例,最后介绍了其缺点,就是需要在服务器端存放用户的信息,增加了服务端的压力,并且如今移动端盛行,用户端不支持cookie的问题也要求我们需要寻找其它方案。 JWT,Json Web Token,定义了一种紧凑的,自包含的方式,用于在各方之间以json对象的方式安全地传输信息,该信息可用于验证身份信息。如下是JWT的工作流程

2022-04-10 QT6.0以上使用qcustomplot报错简单解决法

qcustomplot是qt一个好用的图形绘制库,最近更新qt版本到6.2.4后,发现原先的qcustomplot会报错,报错原因如下: 图片.png MinGW_64_bit-Debug\debug\moc_qcustomplot.cpp:249: error: template argument 1 is invalid debug\moc_qcustomplot.cpp:24