自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫其修远兮

android、Web

  • 博客(105)
  • 资源 (2)
  • 收藏
  • 关注

原创 webpack快速基础

webpack 了解基础概念与配置

2024-03-25 16:25:56 795

原创 webpack从零开始搭建vue项目

webpack vue typescript 项目搭建

2024-03-20 15:17:25 1193

原创 数据结构树-->B+树

B+树1. 特性数据个数比孩子节点个数少1.B+树包含两种节点,索引节点和叶子节点,所有数据都保存在叶子节点中,索引节点只保存索引,根节点可以是索引可以是叶子节点。m阶B+树节点最多有 m-1个索引或数据。节点索引或数据都从小到大排列,内部索引后数据大于左子树,小于或等于右子树。每个叶子节点都右相邻叶子节点的指针。2. B+树的插入B+树的插入和B树的插入类似,都是节点的分裂和数据的上移,只是分裂后中间数据变为了右子树的起始数据,上移的数据为中间数据的索引。eg: 5阶B+树插入 5

2021-08-12 14:04:19 492

原创 数据结构树-->B树

B树1. B树的定义B 树是一颗多路不平衡树,我们描述一颗B树时需要指定它的阶数,eg: 这是一颗5阶B树,阶数表示了一个节点最多有多少孩子节点,一般用M表述。m就是B树的阶数,当 m=2 时就是我们常见的二叉查找树。一个m阶B树的定义如下:每个节点最多有m-1个关键字。根节点最少可以只有1个关键字。非根节点至少有m/2个关键字。所有叶子节点都位于同一层,或者说根节点到每个叶子节点的长度都相同。每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树

2021-08-12 14:02:19 5256 3

原创 数据结构树-->二叉堆

二叉堆1. 什么是二叉堆首先二叉堆是一个完全二叉树。它又分最大堆与最小堆1.1 最大堆特性:父节点的值都大于或等于左右孩子的值。1.2 最小堆特性:与最大堆相反,父节点的值都小于或等于左右孩子的值。2. 二叉堆的插入2.1 插入位置首先满足的完全二叉树的特性,所以我们新插入的节点是按照完全二叉树的下一个位置来插入的。我们以最小堆为例2.2 插入后"上浮"插入节点与父节点比较,如果小于父节点则插入节点与父节点交换位置,递归操作,直到找到父节点比插入节点小。结果为:最大堆的插入同

2021-08-12 12:07:29 304

原创 数据结构树-->红黑树

红黑树前一篇文章我们了解了平衡二叉树,也知道了平衡二叉树的缺点:大量的插入删除操作影响性能,所以产生了红黑树。首先:红黑树与平衡二叉树的目的是一样的,都是解决了二叉查找树退化为链表的问题。平衡二叉树使用的平衡因子,红黑树使用的是几个特性来达到解决二叉查找树退化链表的问题。1. 红黑树的特性:节点是黑色或者红色。根节点为黑色。每个叶子节点都是黑色(叶子节点是NIL节点)每个红色节点的两个子节点都是黑色(或从根节点到每个叶子节点的路径上不能有两个连续的红色节点)。从任一节点到其每个叶子节点的

2021-08-12 12:05:02 464

原创 数据结构树-->霍夫曼树

霍夫曼树1. 霍夫曼树的定义霍夫曼树又称最优二叉树。了解霍夫曼树之前先了解几个名词,节点的权:若将树中的节点赋给一个有某种含义的值,这个值称为节点的权。路径:从一个节点到另一个节点之间的分支构成两个节点之间的路径。路径的长度:路径上的分支数量。树的路径长度:从树的根到树中每一个节点的路径长度之和。节点的带权路径长度:从该节点到树根之间的路径长度与节点上权的乘积。树的带权路径长度:树中所有叶子节点的带权路径长度之和。上图是个霍夫曼树,其中。节点的权: A:7 B:5 C:2

2021-08-12 11:55:32 7596 3

原创 数据结构树-->平衡二叉树

平衡二叉树平衡二叉树又叫 AVL树前面我们介绍了二叉查找树,二叉平衡树是二叉查找树的一种,为什么会有二叉平衡树呢?这时因为二叉查找树的排序引起的,看下图。这也是一个二叉查找树,但因为数据的原因这个二叉查找树基本成了链式结构,无法达到二叉查找树的快速查找能力,这就引入了平衡二叉树。平衡二叉树在二叉查找树的基础上添加了平衡因子。1. 平衡因子平衡因子:二叉树所有节点左子树高度与右子树的高度差值的绝对值不能大于1。 只有满足这个平衡因子的二叉查找树就是一颗合格的平衡二叉树。如图就是一个合格的平衡

2021-08-12 11:53:20 975

原创 数据结构树-->二叉查找树\二叉排序树

二叉查找树\二叉排序树二叉查找树是一种有序的二叉树,也叫儿叉排序树,它在二叉树的基础上添加了位置排序的规则。规则: 每颗子树的根节点值比左子树大,比右子树小。二叉查找树的缺点: 二叉查找树有了排序,但当我们的数据顺序与大小规律一致是就会发现,二叉查找树基本退化为了链表,导致达不到二叉查找树快速查找的目的。后续我们在介绍平衡二叉树的时候会解决之一问题。1. 二叉查找树的查找更具儿叉查找树的特性二叉查找树查找元素快速简单,快速:二叉查找树查找基本就是二分查找,所以快速。2. 二叉查找树的插入

2021-08-12 11:48:31 2153

原创 数据结构树-->二叉树

二叉树在数据结构树中我们最常用的就是二叉树,二叉树的分类又有很多种,利用好二叉树我们可以快速的从大数据量中找到我们所需的数据。1. 什么是二叉树前面我们介绍了树,二叉树顾名思义就是每个数据节点最多有两个叉,也就是每个数据节点最多是有两个孩子节点。特点:每个节点最多有两个孩子节点。即使节点没有孩子节点,新添加的节点也要区分是该节点左孩子或者右孩子。2. 满二叉树特点:树中所有的非叶子节点都有左孩子和右孩子。所有叶子节点都在同一层上。3. 完全二叉树定义: 对一个有n个节点的二叉树,

2021-08-12 11:39:43 581

原创 数据结构树-->树基础

1. 定义树 是 n(n>=0) 个有限节点组成的具有层次关系的集合,当 n=0 时称为空树。树很多人有很多定义,其实满足树的特点就称之为树。特点:有且仅有一个特定的节点称为根节点。每个节点有0个或多个子节点。每一个非根节点有且只有一个父节点。除根节点外,每个子节点可以分为多个不想交的子树。如图:如图明确几个名词:节点:树的所有点称之为节点,如上图的圆圈。根节点,头部第一个节点。叶子节点: 4 5 6 7 处于树的末端,称为叶子节点。孩子节点: 节点关系, 4节点属于2

2021-08-12 11:34:19 609

原创 ExoPlayer的详细使用事件篇

ExoPlayer提供的主要事件我们可以查看源码中的PlayerControlView.ComponentListener,它对事件的处理比较多,也比较符合我们使用所要了解的监听。1. Player.EventListenerEventListener提供了两种方式来监听播放器的视频回调1.1 总的回调函数EventListener.onEvent(Player player, Events events)​ Events携带了播放器所发生的事件,Events属于一个集合来保存的事件,时间以i

2021-06-22 10:43:10 5942

原创 Exoplayer的详细使用UI篇

1. ExoPlayer中的UI主要分主视频播放控件PlayerView 、StyledPlayerView控制控件PlayerControlView主视频覆盖view,exo_overlay其他还有包括字幕,插图等控件2. 使用方式控件PlayerView与PlayerControlView都提供的是布局layout id设置方式来让用户自定义界面。在控件中解析layout id中特定id的控件来达到用户自定义布局中的控件与视频播放ExoPlayer关联<com.google.a

2021-06-22 10:41:41 4766 2

原创 ExoPlayer简单介绍与使用

ExoPlayer简单介绍与使用简单介绍ExoPlayer是运行在YouTobe app上的视频播放器。它功能强大的同时又兼容低版本Android设备,在ExoPlayer V2版本上最低支持 android 16 也就是android 4.1版本。功能强大在支持除Android内置媒体播放器支持的格式外增加自适应格式DASH 和SmoothStreaming, 同时ExoPlayer在代码结构设计上又支持高度定制和扩展。而对于我们普通开发者常使用在对二进制网络流媒体的播放处理。核心功能ExoP

2021-04-27 14:22:10 9002 4

原创 Android坐标系

Android坐标系Android view的摆放,宽高,绘制,都是需要位置的,而有位置就会有坐标系,有了坐标系我们就能将全部的view按照统一的坐标系来完成摆放,宽高,绘制等操作。Android中的坐标系。Android坐标系。视图view坐标系。1. Android坐标系Android坐标系以屏幕左上角为原点,向右为X轴正坐标。向下为Y轴正坐标。Android坐标系...

2021-01-22 11:17:28 50

原创 Android 自定义view目录

1. Android坐标系

2021-01-22 10:51:29 177

原创 Android 坐标系

Android坐标系Android view的摆放,宽高,绘制,都是需要位置的,而有位置就会有坐标系,有了坐标系我们就能将全部的view按照统一的坐标系来完成摆放,宽高,绘制等操作。Android中的坐标系。Android坐标系。视图view坐标系。1. Android坐标系Android坐标系以屏幕左上角为原点,向右为X轴正坐标。向下为Y轴正坐标。2. 视图坐标系视图坐标系为Android view相对于父控件的位置,坐标系原点为父控件左上角,x,y轴方向与Android坐标系相同

2021-01-22 10:49:10 1586

原创 Android 嵌套滑动

NestedScrollingParent与NestedScrollingChild1、 嵌套滑动的解决方案先看注释了解方法这时Google官方给的处理方案,在Androidx或者support包中public interface NestedScrollingChild { //设置是否允许嵌套滑动,允许的话设为true void setNestedScrollingEnabled(boolean enabled); //是否允许嵌套滑动 boolean i

2021-01-21 16:35:45 524 1

原创 Android view的位移滑动

Android view的位移滑动基础Android view的移动不管特效多么绚丽,都是view控件的基础移动实现的。方式:scrollTo/scrollby: view控件内容移动。动画:给view实现移动效果。LayoutParams: 使view重新布局实现view移动。1: scrollBy/scrollTo1.1: 内容左边界View:对于单个view,内容左边界就是文字图片等的左边界。eg:botton可以很大但他的内容显示可能就一个单词,而内容左边界就是这个单词的

2021-01-20 14:08:29 570

原创 Android 手势识别

手势识别原理:Android手势识别其实和我们平常对触摸事件的处理是一样的,都是对MotionEvent事件进行计算处理。Android为我们提供了两个基本的手势识别。GestureDetector:单手势识别,可以识别按下,单击,双击,长按,滑动,fling滑动。ScaleGestureDetector:缩放手势识别,1. GestureDetector单手势识别GestureDetector中有两个重要接口,OnGestureListener,识别单次点击,滑动,fling滑动的接口

2021-01-20 14:07:21 1851

原创 (四) Java多线程内存模型

Java多线程目录一 背景介绍1 并发编程有两个关键问题需要处理1.1 通信通信是指线程之间的信息交换,在命令式编程中有两种方式。共享内存线程之间共享程序的公共状态,通过读/写内存中的公共状态进行隐式同信。消息传递线程之间没有公共状态,必须通过消息来进行通信1.2 同步同步是指用于控制不同的线程并发执行的顺序的一种方式。共享内存并发同步是显示指定的例如synchronize...

2020-03-12 15:45:28 51

原创 (七) synchronized原理简单分析

Java多线程目录1 synchronized中各种锁是怎么竞争升级的synchronized锁1 前提知识介绍1.1 CASCAS简单点说就是比较交换,在Java中在进行CAS操作时,就会将变量新的值与旧的值先进行比较,再进行赋值。例如:i++如果i原理的内存值是0, 在进行CAS操作时这条语句会记录i原来的值,++完成后,原来记录的值与当前内存的值进行比较,如果记录的值...

2020-03-11 20:41:09 37

原创 (一)Java并发基础介绍

什么是线程现代操作系统运行一个应用程序的时候会创建一个进程,进程中包含多个线程,线程是现在操作系统的最小调度单元,也叫轻量级进程。这些咸亨都具有各自的计数器,堆和局部变量,并且能访问共享的内存变量。为什么要使用多线程更多的处理器核心多线程会将线程分配到 多个处理器CPU,程序云溪行时间显著减少。更快的响应时间更好的变成模型Java提供了很好的并且一致的编程模型,我们使用简单。线...

2020-03-11 11:45:18 52

原创 Android系统的启动过程

android源码学习目录Android系统的启动主要分为7个阶段,每个阶段都会做大量的工作,本文只简单介绍一个整个过程,后续文章会对过程中的几个主要内容进行相许分析。过程启动电源电源启动是所有系统启动的根本,当电源键按下时,就是引导芯片代码从预定义的地方开始执行,这个预定义的地方是固话在ROM里面的,会加载bootLoader到RAM,这也是绝大多数系统启动的第一步。引导程序Boot...

2019-12-12 20:15:11 34

原创 Android系统架构

android源码学习目录先上图android系统架构图.png这是google官方给的Android系统架构图,共分五层应用层 applications应用框架层 frameworks系统运行库层--natice c/c++ libraries/android runtime硬件抽象层--hardware abstraction layerLinux内核层--lin...

2019-12-12 18:31:14 25

原创 了解CardView

介绍Android 5.0之后Google提出了Material Design风格,界面的开发加入了z轴,也就是elevation属性,CardView就是Material Design风格设计的典型例子,从名字可以知道他是一个卡片式的view, 数据viewGroup的一种,它继承自FrameLayout,所以它具有FrameLayout的属性。属性app:cardBackgroundC...

2019-12-05 14:14:44 35

原创 (三):全注解下的spring IOC

1: 介绍IOC: Inverse of Control(控制反转),读作反转控制更好理解,它不是技术而是一种设计思想,将原本手动创建对象的控制权,交给spring框架来管理。控制什么?:这里的控制就是创建对象的过程,传统是我们直接使用new关键字让程序主动创建对象,而IOC由一个专门的容器来统一创建对象。反转?: 我们先理解正控,更具上面的理解,正控就是我们自己负责对象的创建,那...

2019-03-01 15:13:05 47

原创 (二):Spring Boot入门

Spring Boot入门1: 介绍spring boot是基于spring框架搭建起来的服务器应用框架,它嵌入Tomcat, Jetty或者Undertow等服务器,并且不需要传统的WAR文件进行部署。可以把它看成服务器总spring框架的一列整合,省去了我们很多配置等工作。可以帮助我们快速建立一个产品级别的企业级应用。1.1:原有的spring开发在原有的spring项目开发中,我们使...

2019-02-26 17:14:42 34

原创 maven基础

1: maven是什么?maven是Apache公司的开源项目,是一个服务于Java项目的自动化构建工具,用来管理依赖与项目。2: 好处与传统项目相比,使用maven工程只会有自己编写的文件,不再项目中直接依赖本地jar,项目占用内存会很小。maven的两大核心:依赖管理->对Jar包的管理, 项目构建->3:maven项目构建原始的我们使用IDE给我们的界面进行项目的...

2019-01-16 19:35:11 29

Gradle简介

gradle学习资源官网doc: gradle官网doc 书:Android gradle权威指南 电子资源:gradle android插件用户指南 视频资源:慕课网,gradle自动化项目构建技术精讲gradle简介Gradle是一个优秀的构建系统和构建工具,它允许通过插件创建自定义的构建逻辑,、 优点:采用了Domain Specific Language(DSL...

2018-09-13 14:23:36 873

原创 Rxjava合并,连接操作符

Rxjava合并操作符 合并操作符 作用 startWith 在Observable发射的数据前添加一个数据, merge, mergeDelayError 将多个Observable合并为一个,mergeDelayError,是全部Observable发射完执行onError zip 使用一个函数组合多个Observable发射的数据,然后再...

2018-07-26 16:26:25 922

原创 Rxjava条件和布尔操作符

Rxjava条件操作符 条件操作符 作用 amb 给定多个Observable,只让第一个发射数据的Observable发射数据 defaultIfEmpty 发射来自原始的Observable的数据,如果原始Observable没有发射数据则发射一个默认数据 skipUtil 丢弃原始Observable发射的数据,直到第二个Observab...

2018-07-26 13:35:48 390

原创 Rxjava变换过滤操作符

变换操作符rxjava中的变换操作符包括: 操作符 作用 map 对序列的每一项都用一个函数来变换Observable发射的数据序列 flatmap 将Observable发射的数据集合变换为Observables集合,然后将这些Observable发射的数据放入一个单独的Observable中 switchMap 将Observable发...

2018-07-25 20:24:15 316

原创 Rxjava线程操作

目录 (一):Rx简介 (二):Rxjava基础知识 (三):Rxjava创建操作符

2018-07-25 14:22:26 2951

原创 Rxjava创建操作符

目录 (一):Rx简介 (二):Rxjava基础知识 (三):Rxjava创建操作符

2018-07-20 14:41:43 377

原创 Rxjava基础知识

Rxjava基础支持Observable:一:Rxjava的Observable使用通常需要三步。 1:创建Observable(被观察者): Observable是Rxjava中的被观察者,Rxjava使用时需要创建一个被观察者, 他决定什么时候触发事件, 也就是被观察者发布信息. 2:创建Observer(观察者): Observer是观察者,用于接受Observable...

2018-07-19 20:20:20 351

原创 Rx简介

Rxjava产生的由来、历史、什么是Rx?这个可以自行百度,简单介绍,明白就好。Rx模式1:使用观察者模式:创建:Rx可以方便的创建事件流和数据流。组合:Rx可以查询式的操作符组合和变换数据流监听:Rx可以订阅任何可以观察的数据流并执行操作。!!!Rxjava和lambde结合使用可以极大简化代码。为什么选择Rxjava1:Rx扩展了观察者模式:用于支持数据...

2018-07-14 16:18:16 2928

原创 kotlin基础学习

一、基本语法1、 包:源文件通常以包声明为开头eg: package tian.song fun baz(){} fun goo(){}源文件所有内容都包含在声明的包内,所以baz全名为tian.song.baz, tian.song.goo若没有指明包,该文件属于无名的默认包。导入方式: 1&amp;gt;import foo.Bar //导入Bar,现在Bar可以...

2018-05-18 11:16:00 186

原创 java 中的线程池

合理利用线程池的好处1:降低资源消耗 : 重复利用已创建的线程,降低线程的创建和销毁的消耗2:提高响应速度:当任务到达时,线程不用创建就能立马执行。3:提高线程的可管理性:线程池可以对线程进行同意分配,调度和监控。线程池主要处理流程当提交一个任务到线程池后:1:线程池判断核心线程池里的线程是否都在执行任务,不是,则创建一个线程执行任务,是,进入下一个流程。2:线程池判断工...

2018-05-01 01:55:36 213

原创 线程间通信

使用wait/notify(等待/通知机制)实现线程间通信。wait/notify的实现wait():使当前执行代码的线程进行等待。该方法将当前线程置于”预执行队列”,并在wait所在代码出暂停 执行,直到获得通知或中断。在调用wait方法前,线程必须得到对象级锁,执行完wait后线程释放对象 锁,若没有合适的锁就会报异常。notify():需要再同步方法或者同步代码块...

2018-03-02 14:36:59 153

Jetpack Compose入门到精通

Jetpack Compose入门到精通

2023-02-07

MATLAB中的FCM 命令的源代码解释

模糊C均值代码解释 用于聚类分析的运用,可以帮助理解

2014-12-09

模糊C均值聚类的代码

调试的MATLAB代码,用于图像处理的模糊C均值聚类

2014-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除