Tech Ranger
码龄6年
  • 107,861
    被访问
  • 103
    原创
  • 149,759
    排名
  • 77
    粉丝
  • 0
    铁粉
关注
提问 私信
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2016-12-07
博客简介:

sinat_36955332的博客

查看详细资料
  • 3
    领奖
    总分 379 当月 5
个人成就
  • 获得73次点赞
  • 内容获得34次评论
  • 获得520次收藏
创作历程
  • 19篇
    2021年
  • 94篇
    2020年
成就勋章
TA的专栏
  • 笔记
    61篇
  • 区块链
    1篇
  • Flutter
    5篇
  • Android
    42篇
  • 射频
    6篇
  • 基带
    1篇
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【区块链】一文了解区块链原理

1 数字货币1.1 比特币什么是比特币?1 诞生时间2008年11月1日,中本聪发表比特币白皮书,提出一种点对点的、去中心化的数字交易系统。比特币白皮书:Bitcoin:A Peer-to-Peer Electronic CashSystem2009年比特币网络诞生中本聪创造了第一个比特币区块。2 特点去中心化的电子记账系统:不依赖任何一个中心记账,没有中央银行,而是由所有人一起来维护一个账本,任何人都可以去抢记账权。图 ( c ) 就是描述了一个去中心化的场景,比特币就是应用了这
原创
发布博客 2021.12.10 ·
12413 阅读 ·
2 点赞 ·
0 评论

【XR】AR开发技术栈概述

1 AR技术脑图2 AR技术对比分析3 AR头戴设备
原创
发布博客 2021.11.23 ·
379 阅读 ·
0 点赞 ·
0 评论

【Flutter】一文搞懂异步编程

1 事件循环机制
原创
发布博客 2021.11.05 ·
1560 阅读 ·
0 点赞 ·
0 评论

【Flutter】绘制图形原理

1 Canvas画布API名称功能drawLine画线drawPoint画点drawPath画路径drawImage画图像drawRect画矩形drawCircle画圆drawOval画椭圆drawArc画圆弧1.1 drawLine使用方法及源码分析使用方法:源码: /// Draws a line between the given points using the given paint. The line
原创
发布博客 2021.10.23 ·
134 阅读 ·
0 点赞 ·
0 评论

【Flutter】时间轴高度自适应最佳实践

1 使用部件画圆圈:使用 canvas.drawCircle 和属性为_paint.style = PaintingStyle.fill;画笔画两个实心圆;画竖线:使用 canvas.drawLine 和属性为_paint.style = PaintingStyle.stroke;的画笔画直线,通过 p1 和 p2 两个端点使直线为竖线在 Container 中调用 decoration 组件使用 BorderTimeLine 类。decoration: BoxDecoration(border:
原创
发布博客 2021.10.20 ·
872 阅读 ·
1 点赞 ·
0 评论

【算法】一文刷完LeetCode(Java语言)全部典型题(持续更新)

1 题型分类2 贪心算法
原创
发布博客 2021.10.18 ·
211 阅读 ·
0 点赞 ·
0 评论

【Android】Gradle入门

是什么?在语法上是基于Groovy语言的(Groovy 是一种基于JVM的敏捷开发语言,可以简单的理解为强类型语言java的弱类型版本),在项目管理上是基于Ant和Maven概念的项目自动化建构工具。基础知识准备Java基础,命令行使用基础官方文档:https://docs.gradle.org/current/dsl/Gradle使用指南: https://gradle.org/docs/current/userguide/userguideAndroid插件文档:https://github
原创
发布博客 2021.10.16 ·
30 阅读 ·
0 点赞 ·
0 评论

【Flutter】使用GridView实现二维网格列表

1 GridView构造函数GridView({ Axis scrollDirection = Axis.vertical, bool reverse = false, ScrollController controller, bool primary, ScrollPhysics physics, bool shrinkWrap = false, EdgeInsetsGeometry padding, @required SliverGridDelegate gridDe
原创
发布博客 2021.09.21 ·
100 阅读 ·
0 点赞 ·
0 评论

【Flutter】详解BuildContext

framework.dart中BuildConttext源码:/// The [BuildContext] for a particular widget can change location over time as/// the widget is moved around the tree. Because of this, values returned from/// the methods on this class should not be cached beyond the exe
原创
发布博客 2021.09.06 ·
302 阅读 ·
0 点赞 ·
0 评论

【Flutter】应用开发笔记

1 获取Flutter SDK1.下载安装包2.将压缩包解压,然后把其中的 flutter 目录整个放在你想放置 Flutter SDK 的路径中勿将 Flutter 安装在需要高权限的文件夹内,例如 C:\Program Files\。2 配置环境变量2.1 更新path环境变量Environment Variables->User Variables->PATH->New加入 flutter\bin 目录的完整路径配置国内镜像,新增加环境变量2.2 配置Andro
原创
发布博客 2021.09.03 ·
994 阅读 ·
1 点赞 ·
3 评论

【Flutter】Dart学习笔记

1 变量(Variables)var name = 'Bob';Dart可自动推断变量的类型,也可以为变量指定类型,如果一个对象的引用不局限于单一的类型,可以将其指定为 Object(或 dynamic)类型。推荐通过 var 声明局部变量而非使用指定的类型未初始化变量默认值为null,包括数字,因为在 Dart 中一切皆为对象,包括数字。Final和Const这两个关键字可以替代 var 关键字或者加在一个具体的类型前。一个 final 变量只可以被赋值一次;一个 const 变量是一个编译时
原创
发布博客 2021.09.03 ·
117 阅读 ·
1 点赞 ·
1 评论

【Android】字节码插桩(一)

1 摘要字节码插桩技术可以帮我们实现业务层模块和功能模块的关联,并在项目结构避免其耦合,比如ARouter实现各模块路由表的注册;2 背景一般我们使用Transform会有下面两种场景我们需要对编译class文件做自定义的处理。 我们需要读取编译产生的class文件,做一些其他事情,但是不需要修改它。本篇主要介绍完成字节码插桩的第一步,通过Transform将编译后的class文件和jar包找到并输出;3 正文Transform的基本API参考:Transform的抽象方法:publi
原创
发布博客 2021.07.14 ·
504 阅读 ·
0 点赞 ·
0 评论

【Android】Android Butter Knife 框架——最好用的View注入

最近在看GitHub上的一些代码时,发现很多工程都用到了Butter Knife这个框架,能节省很多代码量。像findViewById这种代码就不用再出现了,而且这个框架也提供了很多其他有用的注解。抱着学习的心态看了官网上的文档,挺简单,也很实用,决定以后就用这个库了。下面是我翻译的官方文档,诸位看官轻喷。官方文档也挺简单,英语好的不好的,都建议去看看原文。另外注意,这个库的版本更新挺快的,我第一次用到的时候是7.1.0,而现在的最新版本已经是8.5.1了,也就是说大家可能需要去ButterKnife
原创
发布博客 2021.03.23 ·
100 阅读 ·
0 点赞 ·
0 评论

[Android]使用 Jetpack DataStore 进行数据存储

欢迎使用 Jetpack DataStore,这是一个经过改进的全新数据存储解决方案,旨在替代原有的 SharedPreferences。Jetpack DataStore 基于 Kotlin 协程和 Flow 开发,并提供两种不同的实现: Proto DataStore 和 Preferences DataStore。其中 Proto DataStore,可以存储带有类型的对象 (使用 protocol buffers 实现);Preferences DataStore,可以存储键值对。在 DataSto
原创
发布博客 2021.01.08 ·
368 阅读 ·
2 点赞 ·
2 评论

【Android】冷启动优化

1、app的启动流程App启动的描述。应用启动分为冷启动、热启动、温启动。而冷启动是应用程序从零开始,里面涉及到更复杂的知识。我们这次主要是对应用的冷启动进行分析和优化。应用在冷启动的时候,需要执行下面三个任务:加载和启动应用程序;App启动之后立即展示出一个空白的启动窗口;创建App程序的进程;在这三个任务执行后,系统创建了应用进程,那么应用进程会执行下一步:创建App对象;启动Main Thread;创建启动页的Activity;加载View;布置屏幕;进行初始绘制当应用进程
原创
发布博客 2021.01.07 ·
85 阅读 ·
0 点赞 ·
1 评论

【Android】MediaStore三种刷新方式简介

1、Media是MediaStore的内部类(MediaStore.Image.Media),它提供了几个insertImage方法,以方便我们想MediaStore插入图片数据,该操作会生成一张缩略图。插入有两个重载方法,一个是传入图片路径,一个是传入Bitmap;区别:传入图片路径的方法,会将制定的图片拷贝一份到Picture目录下,也就是SDCARD中共有两种相同的图片。传入Bitmap的方法,会将图片直接保存到Picture目录下。/**Insert an image and creat
原创
发布博客 2021.01.06 ·
861 阅读 ·
0 点赞 ·
0 评论

【Android】Jetpack的Data Binding库

Data Binding库支持使用声明性格式而不是以编程方式将layout中的UI组件绑定到应用程序中的数据源。我们通常在Activity中声明layout,并通过UI框架方法获取到UI控件。例如,下面代码演示调用findViewById()去获取TextView控件,然后将它绑定到viewModel的userName。TextView textView = findViewById(R.id.sample_text);textView.setText(viewModel.getUserName())
原创
发布博客 2021.01.05 ·
55 阅读 ·
0 点赞 ·
0 评论

【Android】动画设置监听器的一个方法

设置监听器的方法, ViewPropertyAnimator 和 ObjectAnimator 略微不一样: ViewPropertyAnimator 用的是 setListener() 和 setUpdateListener() 方法,可以设置一个监听器,要移除监听器时通过 set[Update]Listener(null) 填 null 值来移除;而 ObjectAnimator 则是用 addListener() 和 addUpdateListener() 来添加一个或多个监听器,移除监听器则是通过
原创
发布博客 2021.01.04 ·
925 阅读 ·
2 点赞 ·
0 评论

【Android】Android Studio Database Inspector 使用

今天在逛技术网站的时候,看到了一个好东西,Database Inspector 第一眼看上去感觉没有用过,老样子赶紧百度一下,发现基本没有这方面的文章,看来这个应该是在内测还未推出的工具,首先说一下 Database Inspector 是干什么的?其实要解决的问题就是我们在调试数据库的时候,使它可以想编辑 Excel 一样的简单,直接修改直接生效,这有什么好处呢?不用我们在一点一点的去 Debug 数据了,这个看来还是非常有用的。本来想找一些资料来整理一下,但无意间看到一个 Google 的大佬工程师已
转载
发布博客 2021.01.01 ·
1174 阅读 ·
0 点赞 ·
0 评论

【Android】线程池管理部分浅析

一、AsynTask1、构造NuAsyncTask实例该类是一个泛型类,取消了Process参数(因为更多情况下使用不到,保证接口的简洁性),只保留了Params,Result类型参数;另外,构造函数必须要求传入一个workName,以便来跟踪任务的执行时间。因为AsyncTask任务可以调用取消接口,所以该类为了保证功能的一致性,定义了一个NuFutureRunnable类,以来可以取消提交的任务。2、抽象接口定义抽象接口的定义,同AsyncTask的 doInBackground,onP
原创
发布博客 2020.12.31 ·
56 阅读 ·
0 点赞 ·
0 评论
加载更多