- 博客(70)
- 资源 (1)
- 收藏
- 关注
转载 音频(基础知识)
一、采样和采样频率在音频处理时要先把音频的模拟信号变成数字信号,这叫A/D转换。要把音频的模拟信号变成数字信号,就需要采样,或者叫抽样。当要把音频播放出来时则需要把数字信号转换成模拟信号,这叫D/A转换。一秒钟内采样的次数称为采样频率。根据Nyquist采样定理,要想重建原始信号,采样频率必须大于信号中最高频率的两倍。采样频率越高,越接近原始信号,但是也加大了运算处理的复杂度。人能感受到的频率范围为20HZ--20kHZ, 一般音乐的采样频率为44.1kHZ(根据Nyquist采样定理,采样频率大于信号
2020-05-11 15:55:58
3161
转载 Retrofit 2.0框架使用
本文转载自:https://blog.csdn.net/carson_ho/article/details/73732076目录1、简介 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装 原因:网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责 网络请求接口的...
2019-11-08 22:26:22
370
原创 DBFlow框架基本用法
一、初始化DBFlow 新建类 MyApplication继承 Application,并在其中初始化DBFlow:public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); ...
2019-11-07 22:05:03
3959
原创 DBFlow配置
一、创建config.gradle 在指定module中创建config.gradle文件,并配置如下:// config.gradleext { compileSdkVersion = 26 buildToolsVersion = "26.0.2" minSdkVersion = 15 targetSdkVersion = 26 ...
2019-11-07 21:05:32
447
原创 Android后台处理
在Android中,UI线程中是不能执行耗时操作的,UI线程中执行耗时操作会导致ANR。子线程中也不能更新UI组件,否则会抛出异常。因此,Android提供了一套异步处理机制。一、Handler 现在有两个线程,UI线程和计算线程,现在有一个耗时操作,要想实现将耗时操作放在计算线程中执行,并将计算结果用来更新UI,就可以用Handler,步骤如下:在UI...
2019-11-05 20:48:31
633
原创 Android中的Uri详解
一、概述 通用资源标志符(Universal Resource Identifier, 简称"URI")。Uri代表要操作的数据,Android上可用的每种资源 (图像、视频片段、网页等) 都可以用Uri来表示。从概念上来讲,URI包括URL。 Uri的通用格式为:scheme:scheme-specific-part#fragm...
2019-10-30 12:27:22
28801
原创 Android持久化方案
Android中的持久化方式主要有三种:文件存储 SharedPreference存储 数据库存储一、文件存储 文件存储是将数据原封不动地保存到文件中,适用于一些简单的额文本数据或者二进制数据。 存数据 /* * 该方法可以利用指定context,将数据保存到指定文件中 * */ public static v...
2019-10-29 13:10:43
436
转载 git rebase 与git merge
git 官方教程:https://git-scm.com/book/zh/v2本文转自简书:https://www.jianshu.com/p/4079284dd970什么是rebase git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分支重新设置开始点。这个时候才能知道你当前分支于你需要比较的分支之间的差异。 原理很简单:reba...
2019-10-27 14:30:33
188
原创 Android广播机制
一、简介 Android中的每个app都可以对自己感兴趣的广播进行注册,这样程序就只会接收到自己关心的广播内容,这些广播可能是来自系统的,也可能来自其他应用程序。发送广播要用到 Intent,接收广播要用到BroadcastReceiver二、Android中广播的类型1、标准广播 标准广播是一种 异步执行的广播,在广播发出之后,所有Broa...
2019-10-26 18:31:31
234
原创 Android中的UI类关系图
Android中特有的基类有:Context、View、Dialog、Intent、Fragment、BroadcastReceiver一、Context Android程序不像Java程序一样,随便创建一个类,写个main()方法就能跑了,而是要有一个完整的Android工程环境,在这个环境下,我们有像Activity、Service、BroadcastReceive...
2019-10-25 21:50:31
1286
原创 Activity利用Intent传递数据
一、从父Activity启动子Activity并传递数据 Intent的中文意思是“意图,目的”的意思,可以理解为不同组件之间通信的“媒介”或者“信使”。Intent由以下几个部分组成:动作(action),数据(data),分类(Category),类型(Type),组件(Component),和扩展信息(Extra)。 Intent应该算是Android中特有的东西...
2019-10-25 18:32:17
4423
转载 MySQL 中 InnoDB 和 MyISAM 的联系与区别
数据库存储引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能如何知道自己的数据库用的什么引擎呢?使用下面语句: SHOW ENGINES; 我们可以看出数据库为我们提供了非常多的存储引擎,从表中看出,InnoDB 的...
2019-07-26 18:40:46
175
转载 Spring MVC 工作流程
Spring MVC工作流程图Spring工作流程描述用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的...
2019-07-24 15:06:47
315
转载 Servlet 详解
转载自博客园:https://www.cnblogs.com/whgk/p/6399262.html以及菜鸟教程:https://www.runoob.com/servlet/servlet-life-cycle.html一、什么是servlet? 处理请求和发送响应的过程是由一种叫做Servlet的程序来完成的,并且Servlet是为了解决实现动态页面而衍生的东西。理解这个的前提是了...
2019-07-24 14:49:06
246
原创 AQS
概述 AQS (AbstractQueuedSynchronizer)是JDK中java.util.concurrent.locks包里面的一个抽象类,JDK中很多和并发相关的类都使用了AQS。AQS在并发中的作用非常重要。 AQS内部维护了一个双向链表,该链表遵循FIFO,每个节点携带一个线程的信息。下图是往FIFO中新添加一个节点的示意图:一、两种模式/** Marker...
2019-07-23 15:22:51
135
原创 mysql 面试常见知识点
一、MySQL Server 系统架构二、MySql存储引擎 多存储引擎是 MySQL 有别于其他数据库管理软件的最大特色,不同的存储引擎有不同的特点,可以应对不同的应用场景,这让我们在实际的应用中可以根据不同的应用特点来选择最有利的存储引擎,给了我们足够的灵活性。1.MyISAM存储引擎 MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物...
2019-07-20 21:46:55
220
原创 Spring AOP
引言 AOP(面向切面编程)是一种思想,并不是Spring独有的,各种框架使用AOP的方式也不同,Spring的AOP是一种基于 方法拦截 的AOP。一、动态代理动态代理就是通过拦截器给一个方法进行修饰的过程。下面举例说明1、JDK动态代理 例子如下:Man.java 接口public interface Man { void sayHello();}Per...
2019-07-15 20:40:10
131
原创 Spring 装配Bean
引言Spring装配Bean的方式有3种:通过XML装配Bean通过注解装配Bean @Component自动装配一、通过XML装配Bean 通过XML装配Bean其实就是通过setter方法注入,通过在XML文件中设置Property值,使得对象在创建的时候就调用setter方法将初始值注入给对象。这里不再赘述。二、通过注解装配Bean 除了通过xml文件,Spr...
2019-07-14 17:33:17
176
原创 Spring 依赖注入的3种方式
在使用spring的功能之前必须要装配好bean,并且建立好他们之间的关系。 Spring中依赖注入有3种方式:构造器注入setter注入接口注入一、构造器注入public class Role{ private Long id; private String roleName; private String note; public Role(){ this....
2019-07-14 15:00:26
234
原创 Spring IoC和Spring Bean概述
引言 在Spring中,认为一切Java类都是资源,而资源就是Bean,容纳这些Bean的就是IoC容器 Spring的作用 Spring的作用主要有以下几点:1、提供轻量级和低侵入的编程,可以通过配置(XML、注解) 来扩展POJO的功能, 通过依赖注入去扩展功能,降低系统耦合度。2、提供切面编程,尤其是将数据库应用通过切面消除了以前复杂的try catch代码结...
2019-07-14 11:57:35
228
原创 线程安全与锁优化
1. 线程安全 线程安全的代码必须具备一个特征: 代码本身封装了所有必要的正确性手段,使得调用者无须关心多线程的问题,更无须自己采取任何措施来保证多线程的正确调用。 1.1 java中的线程安全 按照安全程度由强到弱排列,java中的共享数据可分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容、线程对立(1)不可变 不可变对象一定是线程安全的,无论是...
2019-07-02 11:38:44
205
原创 java内存模型与线程
1、概述 计算机的运算速度与它的IO速度差距太大,大量时间都花费在磁盘I/O、网络通信或者数据库访问上,为了不让CPU在大部分时间都处于等待IO的状态,应该使用多线程充分发挥CPU的运算能力。 2、内存模型2.1 物理机的内存模型(1) 为了解决CPU运算速度和IO速度差别太大的问题,加入了读写速度更快的高速缓存。(2) 由于每个处理器都有自己的高速缓存,它们共享一个主内存,为...
2019-07-01 14:17:10
277
原创 虚拟机如何执行字节码
1、概述 虚拟机和物理机是相对应的,这两种机器都具有代码执行能力。物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统上的,而虚拟机的执行引擎是自己实现的,可以自行定制指令集和体系结构。2、运行时栈帧结构 栈帧是虚拟机进行方法调用和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈中的栈元素。栈帧的概念结构如下: 在编译期,栈帧中需要多大的局部变量表,多深的操作...
2019-06-30 21:22:58
695
原创 InnoDB体系结构
一、体系架构内存池的作用:1、维护所有进程/线程需要访问的多个内部数据结构2、缓存磁盘上的数据,方便快速地读取,同时在磁盘文件的数据修改之前在这里缓存3、重做日志缓冲后台线程的作用:1、刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据2、将已修改的数据文件刷新到磁盘文件,保证在数据库发生异常时,InnoDB能恢复到正常运行状态二、后台线程1、MasterThread这是...
2019-06-30 18:37:12
170
原创 java虚拟机的类加载机制
一、概述 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和说出实话,最终形成可以被虚拟机直接使用的java类型,这就是 虚拟机的类加载机制。 与其他语言不同,java不是在编译期间进行连接的,java中类型的加载、连接和初始化都是在 程序运行期间 进行的。 二、类加载的时机 类有一个生命周期,类的生命周期如下图所示: 加载、验证、准...
2019-06-30 18:20:52
171
原创 jvm--Class类文件结构
在java中,任何一个Class文件都对应着唯一一个类或接口的定义信息。但是反过来说,类或者接口并不一定都得定义在文件中(类或者接口也可以通过类加载器直接生成)1.简述 Class文件是一组以8位字节为基础单位的二进制流,各个数据项严格按照顺序排列在Class文件中,中间没有任何分隔符。当遇到需要占用8位字节以上空间的数据项时,会按照 高位在前 的方式分割为若干个8位字节进行存储...
2019-06-19 20:52:26
116
原创 JVM-3 垃圾收集与内存分配
1.判断对象存活的方法 垃圾收集器在进行垃圾回收之前,第一件事就是得确定哪些对象是存活的。1.1 引用计数算法 给对象添加引用计数器,每当有一个地方引用该对象时,计数器就加1,当引用失效时,计数器减1,当一个对象的计数器值为0时,这个对象就不能被使用了。 缺点: 当两个对象相互引用时,会出错。1.2可达性分析算法 以一系列称为"GC Roots"的对象作为起点,...
2019-06-18 20:14:55
132
原创 JVM-2------Java内存区域和对象创建
1、运行时数据区1.1程序计数器 (线程私有) 它是一块很小的内存空间,是当前线程所执行的字节码的行号指示器。它记录了当前线程正在执行的虚拟机字节码指令的地址。字节码指示器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 每个线程都有一个自己的程序计数器,当在多线程环境下,多个线程进行切换的时候,就是通过程序计数器来保存线程之前的执行状态的。 ...
2019-06-18 16:34:50
152
原创 mysql 体系结构
一、数据库与实例数据库:物理操作系统文件或其他形式文件类型的集合。再MySQL数据库中,数据库文件可以是frm、MYD、MYI、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存中的文件数据库实例:Mysql数据库由后台线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。数据库实例才是真正用于操作数据库文件的东西。数据库实例是一个程序,位于用...
2019-06-10 16:21:33
299
原创 Git常用命令
Git常用命令1、ubuntu下安装gitsudo apt-get install git2、创建版本库在一个文件目录输入指令 git init ,即可将该文件目录用git进行管理。3、准备将文件提交到仓库 将想提交的文件都先add进来,然后最后使用 git commit命令将所有文件一并提交 git add < file1 name > git add &...
2019-06-01 15:46:12
187
原创 Redis 简介
Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。和Memcache类似,但很大程度补偿了Memcache的不足。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无法自动定期写入硬盘,这就表示,一断电或重启,内存清空,数据丢失。所...
2019-06-01 15:31:28
112
转载 Redis应用场景
Redis实际应用场景1、显示最新的项目列表下面这个语句常用来显示最新项目,随着数据多了,查询毫无疑问会越来越慢。SELECT * FROM foo WHERE … ORDER BY time DESC LIMIT 10在Web应用中,“列出最新的回复”之类的查询非常普遍,这通常会带来可扩展性问题。这令人沮丧,因为项目本来就是按这个顺序被创建的,但要输出这个顺序却不得不进行排序操作。类似的...
2019-06-01 15:24:40
182
原创 Redis事务
Redis通过 MULTI、EXEC、WATCH 等命令实现事务(transaction),事务提供了一种将多个命令请求打包,然后一次性、按顺序执行的机制。一、事务的实现1、事务开始MULTI命令将执行命令的客户端从非事务状态切换到事务状态。2、命令入队当客户端处于事务状态时,客户端发送的命令不一定被服务器马上执行,如果客户端命令是EXEC、DISCARD、WATCH、MULTI中的一个...
2019-06-01 15:02:11
97
原创 Redis发布与订阅
Redis的发布与订阅功能由 PUBLISH、SUBSCRIBE、PSUBSCRIBE 等命令组成。1、SUBSCRIBE通过subscribe命令,客户端可以订阅一个或多个频道,从而成为这些频道的订阅者:每当有其他客户端向被订阅的频道发送消息时,频道的所有订阅者都会收到这条消息。unsubscribe 命令可以退订指定频道2、PUBLISH通过命令 publish < channe...
2019-06-01 11:28:30
110
原创 Redis集群
Redis集群是Redis的分布式数据库方案,集群通过 分片 来进行数据共享,并提供了 复制和故障转移 功能。1、节点的握手命令 cluster meet < ip> < port> 可以将指定ip:端口的节点添加到当前客户端的集群中来。这时该节点会与集群中所有的节点进行握手。上图显示了集群中的节点A与节点B的握手过程,如果集群中还有其他节点,节点B还会依次与其他节...
2019-06-01 11:12:50
112
原创 Redis哨兵Sentinel
Sentinel 是Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器以及它们的下属从服务器。1、Sentinel基本监视原理如下图显示,Sentinel系统监视了一个主服务器server1和它的三个从服务器server2、3、4.当server1因为某种情况下线时,Sentinel系统会对server1做出 故障转移 处理,将...
2019-06-01 10:25:57
290
原创 Redis复制
在Redis中,用户可以通过执行 SLAVEOF 命令或者设置slaveof选项,让一个服务器去 复制(replicate) 另一个服务器,被复制的服务器叫 主服务器,主动去复制的服务器叫 从服务器。从服务器就相当于主服务器的客户端。命令 SLAVEOF < master_ip > < master_port > 可以让客户端去复制服务器。复制状态中的主从服务器双方的数...
2019-05-31 13:00:50
126
原创 Redis客户端和服务器
一、Redis客户端redisServer结构中保存了所有客户端的状态信息。struct redisServer{ //... //一个链表,保存了所有客户端状态 list *clients;};命令 client list 可以列出目前所有连接到服务器的客户端。命令 client setname < name > 可以给客户端设置一个名字。伪客户端由于服务器...
2019-05-31 12:33:18
1202
原创 Redis 事件
Redis服务器是一个事件驱动程序,服务器需要处理下面两种事件:1、文件事件:服务器与客户端的通信会产生相应的文件事件,服务器通过监听并处理这些事件来完成一系列网络通信操作。2、时间事件:Redis服务器中的一些操作需要在给定的时间点执行,服务器监听时间事件来完成一些定时操作一、文件事件Redis基于Reactor模式实现了 文件事件处理器:1、文件事件处理器使用 I/O多路复用程序 同...
2019-05-30 22:23:32
165
原创 Redis AOF持久化
1、概述与RDB持久化不同,AOF持久化是通过保存Redis服务器执行的写命令来记录数据库状态的因为客户端每发送一个命令就会导致AOF文件的更新,因此AOF文件的更新比RDB文件频繁很多。每当有一个新的命令到来,不一定是马上就写入到AOF文件中,这个与服务器配置中的appendfsync选项值有关。2、AOF文件的载入与数据库状态恢复因为AOF文件里包含了重建数据库状态所需的所有写命...
2019-05-30 19:47:46
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人