- 博客(68)
- 资源 (33)
- 收藏
- 关注
转载 OTA升级之BSDiff算法
转载于https://blog.youkuaiyun.com/add_ada/article/details/51232889 [差量更新系列1]BSDiff算法描述 BSDiff是一个差量更新算法,它在服务器端运行BSDiff算法产生patch包,在客户端运行BSPatch算法,将旧文件和patch包合成新文件。 差量更新算法的核心思想 尽可能多的利用old文件中已有的内容,尽可能少的加入新的内容来构建
2022-03-23 11:25:08
1527
转载 spi 单线、双线、四线区别
目录 1. QSPI是什么? 1. QSPI是什么? SPI协议其实是包括:Standard SPI、Dual SPI和Queued SPI三种协议接口,分别对应3-wire, 4-wire, 6-wire。 (1)通常我们说的SPI就是Standard SPI,有4根信号线,分别为CLK、CS、MOSI和MISO。数据线工作在全双工。 (2)Dual SPI,它只是针对SPI Flash而言,不是针对所有SPI外设。对于SPI Flas...
2022-03-03 09:46:10
27958
3
转载 spi总线协议
本文转载于: https://blog.youkuaiyun.com/as480133937/article/details/105764119, 觉得写的很通俗易懂,请给原作者点赞。 文章目录 什么是SPISPI主从模式SPI信号线SPI设备选择SPI数据发送接收SPI通信的四种模式SPI的通信协议SPI的三种模式SPI原理图连接ST...
2022-02-28 16:05:29
993
转载 EasyFlash V4.0 ENV 功能设计与实现
声明:本文档来源于EasyFlash的仓库,原作者armink。因github上图片显示缓慢,我转载到了优快云。 文档链接:EasyFlash V4.0 ENV 功能设计与实现 EasyFlash V4.0 ENV 功能设计与实现 1、为什么要开发 V4.0 Eas...
2021-09-08 17:32:58
929
转载 ASCII,Unicode、UTF-8由来和区别
转载自:https://blog.youkuaiyun.com/Deft_MKJing/article/details/79460485 前言 NSDictionary和NSMutableArray底层原理(哈希表和环形缓冲区) Django中CSRF防御全过程解析以及中间件作用机制 聊聊NSInvocation和NSMethodSignature JavaScript EventLoop 详解 平时喜欢写东西,看博客,一直对编码有些懵,今天下午在网上冲浪,突然想了解
2021-08-31 14:39:11
474
转载 SPI、I2C、UART(即串口)三种串行总线对比
以下内容转载自:https://blog.youkuaiyun.com/oqqHuTu12345678/article/details/65445338 以下内容均来源于网络资源的学习整理,如有侵权,请告知删除。 参考博客 https://blog.youkuaiyun.com/xiaodingqq/article/details/80342459 https://blog.youkuaiyun.com/weiqifa0/article/details/8845281 https://www.
2021-08-31 14:24:54
10745
转载 浅谈内核的Makefile、Kconfig和.config文件
转载于:https://blog.youkuaiyun.com/thisway_diy/article/details/76981113 Linux内核源码文件繁多,搞不清Makefile、Kconfig、.config间的关系,不了解内核编译体系,编译修改内核有问题无从下手,自己写的驱动不知道怎么编进内核,不知道怎么配置内核,这些问题都和Makefile、Kconfig、.config有关,下面简单谈谈Makefile、Kconfig和.config。希望对你有启发。 &n
2021-08-31 14:12:06
503
转载 七大查找算法
二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列适用场景1.必须采用顺序存储结构。2.必须按关键字大小有序排列。原理与步骤对于给定的已经有序的数列,我们需要在该数列中查找是否存在某个元素。每次都与数列最中间的元素进行比较,可以缩小一半的查找区间,直至找到目标元素或者区间被缩小为0,元素不存在。比如下面的数列中,我们想要查找元素19,那么大致的过程就是这样的:复杂度时间复杂度
2021-08-28 19:00:15
348
原创 I2C总线协议
1. 简介I2C (Inter-Integrated Circuit),是一种串行通信总线,用于连接微控制器及其外围设备,实现主控制器和从器件间的主从双向通信,是一种同步半双工通信(两端时钟频率一致,双向通信,但不能同时进行数据收发)。2. 原理I2C通信属于串行通信,具有两根串行信号线:数据线(SDA),时钟线(SCL)。如下图所示,主控制器与从器件(一个或多个)都通过两根信号线连接,信号线上主机和从机都可以扮演发送器和接收器的角色。为确保传输过程的指向准确性,每个接到I2C总线上的器件都有唯一的地
2021-05-06 18:37:36
4005
15
原创 配置Samba:Ubuntu - Windows文件传输工具
配置Samba:Ubuntu - Windows文件传输工具前言ubuntu配置windows配置前言在日常工作环境中,经常使用ubuntu编译代码,然后使用windows上的烧录工具,文件传输极不方便。后来发现了神器-Samba,真是太方便了。ubuntu配置环境:Ubuntu 10.10安装samba$ sudo apt-get install samba smbfs创建共享目录$ mkdir -p ~/share$ chmod 777 ~/share配置samba服务
2021-04-07 09:54:15
342
2
原创 解决Linux Android Studio查看不了未安装sdk与工具包的问题
解决Linux Android Studio查看不了未安装sdk与工具包的问题步骤一:步骤二:步骤三:步骤一:打开android studio 的"setting",搜索 “proxy”,选中"No Proxy"步骤二:打开http://ping.chinaz.com网站,输入dl.google.com地址,开始ping监测步骤三:修改hosts文件,Linux与Windows类似,这里以Windows举例C:\Windows\System32\drivers\etc\hosts.
2021-01-11 15:38:47
725
转载 Android Activity 生命周期
转载于 https://blog.youkuaiyun.com/Natsume_for_ever/article/details/1078404021. Activity简介Activity 类是 Android 应用的关键组件,而 Activity 的启动和组合方式则是该平台应用模型的基本组成部分。在编程范式中,应用是通过 main() 方法启动的,而 Android 系统与此不同,它会调用与其生命周期特定阶段相对应的特定回调方法来启动 Activity 实例中的代码。2. Activity概念移动应用体验与
2020-11-16 15:44:57
184
1
原创 Android Studio 启动不了模拟器
1. 进入sdk安装目录:默认安装路径的sdk安装目录:C:\Users\HP\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager本人安装目录:D:\work\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager2.进入目录后,点击intelhaxm-android.exe运行,然后重启Android St.
2020-11-14 15:59:01
2271
1
转载 Android studio sdk tools 下缺失下载选项问题
装载自原博客:https://blog.youkuaiyun.com/github_38016668/article/details/64919364
2020-11-14 14:42:32
1084
1
原创 Android MediaPlayer库源码解读(1):setDataSource()
前言MediaPlayer是Android音视频子系统中重要的一个子模块库,其功能丰富,且与Audio库联系紧密,是Android系统音视频子系统学习的第一站。源码解读需要具备相关Java、JNI、C++、Binder等知识,较为复杂难懂,简单记录追踪流程。java层【frameworks/base/media/java/android/media/MediaPlayer.java】**setDataSource()**在MediaPlayer.java中用户可直接调用的方法有四个:public
2020-10-21 23:25:17
4036
1
转载 Android Binder初识(二):实例
提要最近在Android 源码阅读与追踪中,跟踪代码Application -> Java Framework -> JNI -> Native C++的过程中,Native层涉及大量的进程间通信-Binder,实在是艰难理解,故通过分析一个Binder简单实例进行简单剖析,后续进一步通Android 子模块库进行实例分析。本实例工程目录结构 (以Test命名):接口端:ITestService.h、ITestService.cpp;客户端:TestClient.cpp;服务
2020-10-15 15:12:32
556
原创 Andorid MediaPlayer和AudioTrack 区别与联系
前言播放声音可以用MediaPlayer和AudioTrack,两者都提供了java API供应用开发者使用。虽然都可以播放声音,但两者还是有很大的区别的。区别:[1 ] 其中最大的区别是MediaPlayer可以播放多种格式的声音文件,例如MP3,AAC,WAV,OGG,MIDI等。MediaPlayer会在framework层创建对应的音频解码器。[2 ] 而AudioTrack只能播放已经解码的PCM流,如果是文件的话只支持wav格式的音频文件,因为wav格式的音频文件大部分都是P
2020-10-12 10:22:00
416
原创 Android Binder机制初识(一)
进程间通信(IPC)进程空间划分在Linux中,一个进程空间可以分为 用户空间(User space) & 内核空间(Kernel space),即把进程内 用户 & 内核 隔离开来;用户空间中的数据不可共享,内核空间中的数据可共享,这样做的目的在于保证内核的安全;进程内 用户 与 内核 进行交互 称为系统调用进程隔离与通信进程间通信(inter-Process Communication, IPC),是指两个进程之间进行数据交换的过程。而在Linux系统中为了保证 安全
2020-10-09 16:46:03
239
原创 Android audio框架初识
概述Audio音频子系统 是Android Framework 的一个重要的子系统之一,也是最复杂的子系统之一,其在Android中负责音频方面的数据流传输和控制功能,也负责音频设备的管理。一个完整的Android音频系统架构如下图所示:audio 框架分层application层应用层,调用音频服务的app或设置,如:音视频播放器、拨打电话、录音/录视频、音量设置等。Framework层Framework层包含java与c++,通过jni机制进行相互调用,主要分为以下三层:Framewor
2020-09-30 15:12:55
1038
转载 Environment.getExternalStorageDirectory()弃用替代方案
概要在使用Android SDK 版本超过29编译的时候,Android Studio会提示Environment.getExternalStorageDirectory()过时了,要用Context#getExternalFilesDir代替,Android Q以后Environment.getExternalStorageDirectory()返回的路径可能无法直接访问,所以改成了Context#getExternalFilesDir所以Environment.getExternalStorageD
2020-09-30 10:07:28
17245
原创 Android MediaMetadataRetriever 获取音乐的封面
private ImageView image; image = findViewBYId(R.id.imageView); private void loadCover(String path) { MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever(); mediaMetadataRetriever.setDataSource(path); byte.
2020-09-27 15:47:52
1314
原创 排序算法 java版
前言比较排序冒泡排序冒泡排序是一种比较简单的排序算法,它循环走过需要排序的元素,依次比较相邻的两个元素,如果顺序错误就交换,直至没有元素交换,完成排序。需要n-1次比较,第k次比较需要进行n-k次比较,比较次数为:(n-1) + (n-2) + … + 1 = n*(n-1) / 2,因此冒泡排序的时间复杂度为O(n^2)。算法简介:1.比较相邻的元素,前一个比后一个大(或者前一个比后一个小)调换位置2.每一对相邻的元素进行重复的工作,从开始对一直到结尾对,这步完成后,结尾为做大或最小的数
2020-09-22 16:08:10
146
原创 静态代码块、构造代码块、构造函数、普通代码块 定义与执行顺序
格式静态代码块格式在java类中(方法中不能存在静态代码块)使用static关键字和{}声明的代码块:public class CodeBlock { static{ System.out.println("静态代码块"); }}执行时机静态代码块在类被加载的时候就运行了,而且只运行一次,并且优先于各种代码块以及构造函数。如果一个类中有多个静态代码块,会按照书写顺序依次执行。静态代码块的作用一般情况下,如果有些代码需要在项目启动的时候就执行,这
2020-09-22 14:41:59
686
原创 Android init启动流程初识(基于Android10源码分析)
概要Android启动流程一般流程为:BootRom > Bootloader > Kernel > Init > Zygote > SystemServer > Launcher。其中,init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取init.rc中的相关配置,从而来启动其他相关进程以及其他操作。init进程启动前/ke
2020-09-18 14:37:41
3795
原创 Android 四大组件初识
Android四大组件分别为activity、service、content provider、broadcast receiver。1. activity一个Activity通常就是一个单独的屏幕(窗口);Activity之间通过Intent进行通信;android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。2. serviceservice用于在后台完成用户指定的操作。service分为两种:
2020-09-18 09:51:42
216
原创 Android Framework初识
前言如下图所示, 从顶层到底层Android的四层架构分别为:应用程序层应用程序框架层运行层(系统Native库和Android运行时环境)Linux内核层其中Framework层为我们开发应用程序提供了非常多的API,使得开发者通过简单调用API即可开始APP的开发,而不用详细了解Android系统纷繁复杂的底层知识。下面详细介绍下Framework到底在整个Android架构中的功能与构造。Framework简介Framework是一个中间层,一方面向上提供基本服务接口API给应用
2020-09-11 17:22:43
1326
原创 Java中String类使用总结
文章目录字符串定义直接定义String类定义字符串比较equals() 方法compareTo() 方法字符串数据类型转换常见数据类型转换String 与int相互转换字符串查找根据字符查找根据索引查找 String 在编程中被广泛使用,与C++不同的是,java中String类提供了许多封装好的方法,直接调用这些方法可以相当快速的加快程序的开发速度,其中包含:字符串比较、字符串与其他数据类型之间的转换、字符串查找、字符串截取与拆分、字符串替换与修改等。这些都值得我们去掌握,Stri
2020-09-08 17:20:34
746
转载 static关键字用法详解
文章目录修饰成员变量修饰成员方法静态块静态导包总结java中static关键字主要有四种用法:修饰成员变量修饰成员方法静态块静态导包修饰成员变量 日常使用中,static最常用的用法为修饰类的属性和方法,使之成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员。类变量从类定义时就开始存在,直到完全销毁,该类的所有实例共享同一个类变量,且只有一个类变量存储空间,而无static修饰的实例变量则只与类的每个实例有关。下面根据例子进行举例说明:public cla
2020-09-08 09:49:43
212
原创 java中初始化块&构造方法的区别以及执行顺序
区别初始化块是java语言中的第四种成员(其他的为属性、方法和构造器),一个类中可以有多个初始化块,相同修饰符的初始化块的执行顺序为:前面定义的初始化块先执行,后面的后执行。Java构造函数,也叫构造方法,是java中一种特殊的函数,函数名与相同,无返回值,且只运行一次。一般用来初始化成员属性和成员方法的,即new对象产生后,就调用了对象了属性和方法。执行顺序如下所示,当创建java对象的时候,系统总是先调用该类里定义的初始化块,然后再调用构造方法。public class Person {
2020-09-07 09:50:32
665
原创 Eclipse第三方主题设置
第三方主题效果设置步骤主题设置第一步:将eclipse主题设置为DARK。window -> preference ->general -> appearance -> theme。将theme修改为dark就行。第二步:将代码编辑区设置为自己喜欢的字体颜色风格。进入http://www.eclipsecolorthemes.org网站,下载喜欢的字体和代码高亮风格。点开其中任意一种,下载EPF格式文件,保存在硬盘的某个文件夹下面。然后打开eclipsefile -
2020-09-06 15:53:45
323
原创 多线程编程
文章目录进程与线程使用多线程Thread类Runnable接口使用Callable和Future创建线程创建线程的三种方式的对比进程与线程1.进程:操作系统中,所有运行的任务通常对应一个进程,进程是处于运行过程中的程序,是系统进行资源分配和调度的一个独立单位;进程在操作系统中是独立存在的实体,其拥有独立的资源与地址空间,进程之间不能直接进行访问;区别于程序概念,进程是一个正在系统中活动的指令集合,具有自己的生命周期与状态,而程序只是一个静态的指令集合;一个CPU在某个时间点只能执行一个进程,C
2020-09-04 17:29:01
163
转载 数据结构之九大排序
本帖转载至:https://blog.youkuaiyun.com/gyhgx/article/details/60468952最近面临实习面试,由于自己准备投开发岗,据...
2020-09-04 10:31:55
504
原创 栈和队列
文章目录栈Java实现栈栈定义进栈操作遍历栈出栈操作队列Java实现队列区别于数组和链表这种线性存储结构的基础,栈和队列都是线性存储结构的应用。栈栈可以看成一个放光盘的箱子,箱口与略大与光盘。然后往箱子里面放东西叫做入栈往箱子里面取东西叫做出栈箱子的底部叫做栈底箱子的顶部叫做栈顶先进后出,后进先出Java实现栈使用数组实现的叫静态栈使用链表实现的叫动态栈栈定义public class Stack { // 栈顶 public Node stackTop
2020-09-03 16:03:46
150
MediaPlayer+SurfaceView+视频播放器
2020-08-24
Android核心知识点笔记V2020.03.30.zip
2020-08-06
Python入门+进阶书籍.rar
2019-07-02
tensorflow视频目标检测
2018-08-08
tensorflow物体检测-图片目标分类计数
2018-08-03
TensorFlow实战---黄文坚pdf
2018-07-30
OPENCV入门书籍:opencv3机器视觉Python语言实现
2018-07-30
《opencv3机器视觉Python语言实现 》刘波 书本源码
2018-07-30
OpenCV3编程入门pdf
2018-07-20
MAC地址批量生成器 v1.4.1.zip
2021-05-12
Android Mediaplayer音乐播放器设计
2020-09-28
深度学习NLP入门资料合集
2019-07-17
数据结构与算法 Python语言描述 ——裘宗燕版
2019-07-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人