自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Quantai的博客

生命中所承受的苦难,终将以灿烂来偿还。

  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用Typora+Picgo+Gitee配置Markdown图床

前言之前一直使用有道云笔记作为个人笔记方案,但是笔记又包括一些word,pdf等文档,所以后面使用了WPS的云盘方案,个人体验比百度云好。但是WPS中写markdown,文档中图片需要在本地保存,如果是在同目录下简历asset文件夹,有点不美观,如过写死放在某一个路径,后续移动又不方便,刚好在网上看到Typora使用图床的方案,在此记录自己的配置流程。一. 环境准备Typora : 好用的Markdown编辑器Gitee账户 : 创建图床仓库PicGo :自动上传图片并返回markdown格式的

2020-12-10 17:10:39 232 2

原创 Ubuntu16使用小米WIFI做为AP

目前小米WIFI没有Linux客户端,所以只能自己手动编译驱动来使用。1. 安装驱动小米WIFI使用的是MTK7601u芯片,在百度上搜了一下,发现有些博文给的驱动git库太旧,在Ubuntu16上一直编译不过,后面在Github上搜到一个能用的:mt7601u-ap参考git库的说明文档,拉下来编译安装$ git clone https://github.com/Anthony96922/mt7601u-ap$ cd mt7601u-ap$ make$ sudo make install

2020-09-14 19:29:17 675 1

原创 一、黄金思维圈

人是一种很奇怪的东西,做什么事情都会追问意义,尤其是长期坚持做一件事情,必然要搞清楚坚持的意义,否则肯定是坚持不下去,最好的坚持,必然是想清楚了坚持的理由、努力的方向。看的越清,行动就越坚定、有力。TED演讲者Simon Sinek在《伟大的领袖如何激励行动》中对这种对意义的追寻,总结为一个天才般的思考模型,即黄金思维圈。why:为什么做,既是意义也是动机。What:做成什么样,即目标。...

2020-02-08 11:33:05 2447

转载 C++静态库与动态库的区别

                &nbs...

2019-08-31 16:11:52 4200

原创 Git常用命令

将个人经常使用的Git命令记录在此,长期补充一、仓库管理git init:create a git depository from a directory

2018-04-10 22:23:57 152

原创 Linux常用命令

将个人经常使用的Linux命令记录在此,长期补充一、系统相关- 二、文件处理相关-

2018-04-10 22:19:56 124

原创 RILD - 第八章 - 如何自定义request

八、AT命令不同手机厂家的AT命令集都不一样,而在Android源代码中只实现了GSM27.007标准定义的Telephony基本功能。因此,在Android手机平台的定制过程中,免不了要修改或是增加AT指令。8.1 AT LOG不单是RILC可以向Modem发起AT命令,在ReferenceRIL中也会接收到Modem发出的AT命令,如何区分是谁给谁发送的命令,可以通过Radio Log来看出来。

2017-08-21 00:55:08 838

原创 RILD - 第七章 - RILProxy

七、RilProxy对于MTK平台,在RILC与RILJ之间,有一个RilProxy层。之所以要使用proxy,一个好处是在上层,不仅仅是RILJ与RILC通过Socket连接,还有其他地方也可以与RILC连接,来向下才层Modem通信,比如如可以通过终端ATCI接口直接向Modem发送命令。另一个好处是proxy层的下层,可以自由选择切换其所对接的RILC层,因为对于不同的项目,所需要适配的RIL

2017-08-21 00:41:48 1393

原创 RILD - 第六章 - 其他比较重要的结构体

六、几个重要结构体6.1 RILChannelCtx封装了AT通道的上下文信息typedef struct RILChannelCtx { const char* myName; RILChannelId id; pthread_t tid_reader; pthread_t tid_myProxy; int fd; ATUnsolHandler un

2017-08-21 00:27:44 349

原创 RILD - 第五章 - 一个完整的request流程

五、一个完整的过程一个完整的过程包括以下四个步骤: 1、Eventloop接收RILJ的请求,并负责把请求发送给reference库:RILJ –> Eventloop –> reference 2、reference负责把命令转化为AT命令,然后发送给Modem:reference –> Modem 3、reference通过readerLoop得到Modem回应后把数据返回给Eventlo

2017-08-21 00:19:08 1828

原创 RILD - 第四章 - LibRIL Register

四、LibRIL启动注册联通RILJ与RILC前面ReferenceRIL的init函数参数s_rilEnv是吧LibRIL的回调传入ReferenceRIL,这样ReferenceRIL就可以向LibRIL传递数据。 而init函数的返回值返回了自己的回调函数funcs,这样LibRIL就可以向ReferenceRIL传递数据。这一步就是把funcs放入LibRIL中。 并且进行了一些端口参数

2017-08-21 00:07:45 509

原创 RILD - 第三章 - ReaderLooper的建立

三、 ReaderLooper()ReaderLooper主要用来监听Modem上发信息RIL需要加载一个AT相关的reference-ril.so的动态链接库。之所以使用 库的形式,就是考虑到每个厂商使用的Modem不同,我们没法用统一的接口去向底层负责,因此使用库的形式。这样一来,不同的Modem厂商提供不同的链接库,只要符合RIL层的框架即可。3.1 ReadLoop预备知识3.1.1 Ref

2017-08-20 23:58:02 581

原创 RILD - 第二章 - EventLoop机制的建立

二、EventLoop机制LibRIL负责接收来自RILJ的数据,并传递给ReferenceRIL。实现这一功能的主要机制就是EventLoop机制。 分析LibRIL主要就是分析EventLoop。2.1 EventLoop相关预备知识2.1.1 EventLoop中的Event在ril_event.h头文件中可以看到ril_event的结构体定义//定义Event回调函数指针typedef

2017-08-20 21:49:43 735

原创 RILD - 第一章 - RILD流程概览

注:本文基于MTK Android N平台分析 参考: - 《深入理解Android:Telephony原理剖析与最佳实践》—杨清平 - 大神写的分析博客前言目前在负责Telephony模块,自己也想从上到下看下Telephony模块的相关代码流程。如此,就讲自己的总结的笔记保存于此,既可以随时查阅,也希望能帮助到有缘人。一、框架入口1.1 说明RILC主要分三块RILD,LibRIL,Ref

2017-08-20 21:35:00 1647

原创 (九)多线程

一,简介1.1 线程和进程的区分进程是一个“进行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。一个进程可以有多个线程,但必定有一个主线程一个线程必定只属于一个进程线程间可以使用进程数据段来进行通信,二进程需要使用IPC(Inter-Progress Communication)机制1.2 线程的分类线程=守护线程+用户线程 J

2017-04-14 23:46:27 246

原创 (八) IO

一、说明IO(Input/Output),输入输出,指Java与其他设备文件交互。如读文件,写文件。对于Java的IO工具类,都在java.io.* 包下。二、IO相关类的使用2.1 File类:2.1.1 类说明文件和目录路劲名的抽象表示,与平台无关只能操作文件面上的东西,不能访问文件内部(需使用IO流)File对象可以作为io流具体类的构造器的形参2.1.2 常用方法:文件名/文

2017-04-12 23:46:14 257

原创 (七)枚举 & 注解

一、枚举类(对象的个数确定):枚举类可以使用在switch case语句中1.1 自定义枚举类: //Step1:私有化不可更改属性 private final String seasonName; private final String seasonDesc; //Step2:私有化构造器,构造器内初始化属性,初始化后不可被更改 private Season

2017-04-09 10:58:26 211

原创 (六)泛型

一、引言泛型定义的是一种类的约束关系二、泛型的使用集合中使用泛型//定义Map的键值对数据类型Map<Person,Integer> map = new TreeMap<>();//定义Entry的数据类型Set<Map.Entry<Person, Integer>> set2=map.entrySet();自定义泛型类,泛型接口:1.定义类,接口时可使用泛型< >,如class A<T

2017-04-04 22:57:17 206

原创 (五)容器-集合

一、引言程序中那么多的数据。我们总是想把它们梳理的整齐一些,如有一个100个学生的对象,按照前面所学的数组,我们可以把他放到一个Student[] students = new Student[100]的数组中。但是如果数组中某一个学生辍学了,那么怎样便于处理这个数组呢?怎么知道这100个学生多少个也是另一个培训机构的学生呢? 假设我们有这样一个容器,容器中保存了许多相同的对象。这个容器有一些方法

2017-04-04 22:43:08 295

原创 (四)Java异常处理

一、导言当学习完前面的知识,我们能够写一些简单的功能性的软件了,对于数据的输出,可以使用系统的标准输出打印。但是当我们碰到一些特殊情况,如://定义了一个数组int[] i = new int[3]//输出不存在的元素System.out.print(i[3]);这样编译时是没有语法错误的,但是当运行时,会找不到数组角标为3的元素。那么这就是一个异常行为。 从上面这个例子,我们不能100%的

2017-04-04 22:11:19 277

原创 (三)Java类特性 & 设计模式初窥

一、Object类Object类是一切类的源头,是所有类的父类。因为它是所有类的父类,那么它体现了所有类的共性。 通过查看Object类,可以看到Java中的类都有哪些共性。.equals()方法 Object类中为比较两个对象的首地址值(其实现就是使用了”==”号),这里注意,基本数据类型不是对象。子类一般要重写此方法以用来比较两个类的内容。.toString(); Object类中为

2017-04-04 21:36:12 226

原创 (二)初遇面向对象

一,Java面向对象概述1.1 面向对象和面向过程的区别面向过程编程: 强调的是功能行为,体现的思路是一个功能是由一系列明确的有顺序的实现步骤来完成的。因为逻辑更抽象,代码运行的更快,一般使用在底层比较需要性能的功能性场所。面向对象编程: 将功能封装进对象,强调具备了功能的对象。因此,编程时在脑海中抽象出来的是一个个鲜活的对象。这种思想更加强调运用人类在日常的思维逻辑中采用的思想方法与原则。

2017-04-04 13:07:06 314

原创 (一)基本语法与运算符

一,基本常识1.1. 编译相关命令javac 编译Java文件javac -encoding 编译Java文件,指定编码方式javadoc -d mydoc -author -version 1.java 生成Java Doc1.2. 关于源文件注释: //单行注释 /* 多行注释 */ /** 文档注释 @author @version @param */源文件以.j

2017-04-04 10:42:52 259

原创 (四)C语言基础(结构体,联合体,枚举,别名)

八、结构体,联合体1. 说明结构体: - 类似Java中的封装类 联合体: - 所有字段公用一块内存空间2. 实例#include<stdio.h>/*联合体,结构体,结构体指针 */ //定义一个结构体 struct Student { int age; float score; char sex;}; //定义一个联合体:所有字段公用一块内存空间 //使用

2016-12-10 12:44:56 617

原创 (三)C语言基础(数组,内存分配,函数指针)

六 数组1. 数组基础取数组地址:&cArray,与cArray相同,其为数组第一个元素地址取数组对应索引元素的值:cArray[0] 或 *(cArray+0)(注意与 “*cArray+0” 的区别)取数组对应索引元素地址:&cArray[0] 或 cArray+0#include<stdio.h>#include<stdlib.h>/*数组:1.数组的取值2.数组的取地址(数

2016-12-10 12:39:08 614

原创 (二)C语言基础(指针)

五、指针1. 基础数据存储结构:内存地址 <===> 实际值一个指针变量其内存中实际值为一个地址;当然,它还有自己的地址定义一级指针变量 : int*引用指针指向变量 : *int取变量地址 : &i#include<stdio.h>#include<stdlib.h>/*指针就是内存地址内存地址就是指针 */main(){ int i=10; //定义一个in

2016-11-20 10:29:29 289

原创 (一)C语言基础(基本数据类型,输入输出)

一 、Hello.c#include <stdio.h> //导入头文件 ,类似于Java中的import #include <stdlib.h>main(){ printf("Hello world !\n"); //格式化输出函数 system("calc"); //调起计算器 system("pause"); //让DOS执行pause命令 }二 、基本类型#

2016-11-06 22:11:30 5201

原创 SQLite Database Storage

一,说明保存有一定结构的数据文件类型 .db保存路径:data/data/packageName/databases/xxx.db默认其他应用不能访问,当前应用可通过Content Provider(四大组件之一)提供其他应用操作随着应用卸载删除数据SQLite介绍优点:安装文件小,最小只有几百K,Android中已安装支持多种操作系统:Android,WP,IOS,Windows

2016-08-09 22:12:40 413

原创 SD Card File Storage

一,说明应用运行用到的数据文件可以保存到SD卡中文件类型:任意数据保存路径: 路径一:/storage/sdcard/Android/data/packageName/files/此路径其他应用可以访问,应用卸载时删除路径二:/storage/sdcark/xxx此路径其他应用可以访问,应用卸载时不删除必须保证sd卡挂载在手机上才能读写,否则不能操作 二,API操作SD卡的工具类E

2016-08-09 21:11:46 963

原创 Inner File Storage

一,说明保存应用运行时需要较大的数据或图片文件类型:任意存储路径:/data/data/packageName/files/可以设置为当前应用私有应用卸载时删除此数据二,API读取文件FileInputStream fis=openFileInput("logo.png") 得到文件输入流保存文件FileOuputStream fos=openFileOutput("logo.p

2016-08-09 21:10:45 250

原创 SharedPreferences

一,说明存放单一小数据存储数据类型:boolean,String,int,long,float存储路径:/data/data/packageName/shared_prefs/yyy.xml可以设置为当前应用私有应用卸载时删除此数据二,APISharedPreferences相关SharedPreferences context.getSharedPreferences(String

2016-08-09 21:07:34 193

原创 UI布局

注:任何View的属性id:指定idlayout_width:宽度layout_height:高度text:文字textSize:文字大小background:背景(图片或颜色)layout_gravity:相对父视图位置gravity:内部位置padding:内边距layout_margin:外边距其他一,LinearLayoutoritation:方向vertical:

2016-08-03 22:45:51 241

原创 Simple UI Component

一. Some Simple Component1.TextViewXML<TextView android:id=“@+id/tv_test1_message“ //指定id android:layout_width=“match_parent“ //宽度 android:layout_height=“wrap_content“ //高度 android:

2016-08-03 22:34:14 358

CSS 2.0样式表中文手册

CSS 2.0样式表中文手册

2013-07-19

空空如也

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

TA关注的人

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