自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

C安君的博客

撸起袖子加油干,越是艰险越向前

  • 博客(151)
  • 收藏
  • 关注

原创 VSCode之CMake使用

vscode通过cmake构建项目

2023-03-17 13:38:32 13241 3

原创 Vmware Ubuntu虚拟机扩展一块新的磁盘

VMware中Ubuntu虚拟机新增一块磁盘,来扩容。笔者是为了编译AOSP。一次实战经历。

2023-03-17 06:57:21 2286

原创 Printk打印内核日志

Android 系统 printk 打印内核日志

2023-03-16 15:23:56 2013 1

原创 MacOs编译AndroidQ

一、准备工作1.1 系统介绍Mac系统版本: 12.3.1内存: 16GB**CPU: ** 4核i5 2GHz磁盘:180GB笔者曾在 Ubuntu中编译该版本,最后占用磁盘空间为154GB。具体请查看 Ubuntu16.04编译Android10源码并刷机Pixel1.2 AOSP版本选择编译选择user、user-debug、eng的区别1.3 磁盘准备MacOS会在一个保留大小写,但是不区分大小的文件系统中运行。git不支持。所以需要开辟一块磁盘空间,并重新设计其格式。

2022-05-26 07:56:02 706

原创 学习力提升之一理解力

学习力提升之一理解力一、理解力1.1 什么是理解力1.2 认知模型1.3 如何提升理解力--结构性思维二、框架理解力2.1 主线思维2.2 重点思维2.3 关系思维2.4 总结思维三、课程回顾一、理解力1.1 什么是理解力测试:理解力:能迅速的在一堆信息中清晰、准确的抓住对方的意思重点的能力1.2 认知模型怎么才能做到上面的状态呢?认知模型:请心算完成:7x8那心算 178*178背景知识。工作记忆空间有限 (模式7+2 理论)我们没有合理,或者不懂得使用我们

2022-02-27 10:37:34 660 2

原创 2021-12-31

2021 总结本来不想写总结的,因为今年的后半程并没有发布自己的学习内容。今天是2021年的最后一天,这一年望去,又是两个形容---- 惭愧。 这一年也没有闲着,但是貌似都是在瞎忙。我最大的错误就是:认为学习是一个装灌的过程,而其实是一个过滤的过程,过滤完还需要重复。这也决定了我在2022 的第一件事情就是 整理、总结这些内容,并发布到博客上,算是一个学习的记录过程。体重仍然没有下降。虚涨了一岁。但是对于自己的方向更加清晰了一些。忙碌,当收效不大。2022 目标运动和减肥坚持每个

2021-12-31 18:52:35 1030

原创 AndroidStudio 格式化代码

文章目录前言一、给代码增加注释1.1 给类增加注释1.2 给方法增加注释1.3 使用指定的 formatter格式化代码1.4 Android Studio快捷键前言好的格式化的代码,“赏心悦目”一、给代码增加注释1.1 给类增加注释AndroidStudio作为Intelij IDEA中的一份子,其设置代码style的方式也与后者一致。/** * ${Description} * * @author ${Author} on ${DATE} */当我们创建一个源文件(Jav..

2021-03-29 16:36:50 5227

原创 Ubuntu16.04编译Android10源码并刷机Pixel

一、环境描述电脑配置:系统:Windows10内存:16GB硬盘:500GB软件环境:VirtualBox虚拟机虚拟配置:系统:Ubuntu16.04.7内存:9GB硬盘:300GB (编译完大概占用180GB)二、 虚拟机安装与配置2.1 虚拟机Ubuntu安装虚拟机镜像选择,我使用的是ubuntu-16.04.7-server-amd64,这是服务器的镜像,没有Ubuntu桌面,相比ubuntu桌面版更为轻量。安装细节,请参考安装教程参考:《virtualbox

2021-01-18 06:37:07 2621 1

原创 Gradle学习之七其他重要模块

文章目录概述一、Settings类讲解二、SourceSet类讲解三、自定义plugin3.1 创建一个插件项目3.2 开始gradle插件编写3.3 完善插件编写四、Android插件属性概述Settings类讲解SourceSet类讲解及实战Plugin讲解及自定义Pluginandroid插件对gradle的扩展如何迁移到gradle一、Settings类讲解//file setting.gradlerootProject.name='MavenSample'inclu..

2020-10-17 11:34:07 321

原创 Gradle学习之六Task详解

文章目录概述一、Task定义及配置二、Task的执行详解三、Task的执行顺序3.1 task依赖设置3.2 task依赖案例应用3.3 Task的输入输出概述Task定义及配置Task的执行详解Task的依赖和执行顺序Task类型挂接到构建生命周期Task实战一、Task定义及配置./gradlew tasks 命令可以查看当前项目中task的数目和Task的信息。定义Task有两种方式:1.使用Project的task的方法 2.使用Task容器创建//直接通过task函..

2020-10-17 07:52:01 1319 1

原创 Gradle学习之五Project详解

文章目录前言一、了解Project二、Project核心api前言一、了解Project虽然在项目中 AS有 Project 、 Module Library、Module App之分,但是对于Gradle来说,都是"project": 每一个module能把理解为gradle project的原因是存在build.gradle文件Root project 管理子project。子project负责本project的文件输出,并且能够调用父project api ,管理其子project.

2020-10-16 10:41:13 2586 6

原创 Gradle学习之四Gradle生命周期

文章目录前言一、gradle基本概念二、gradle优势三、gradle执行流程前言一、gradle基本概念构建工具和maven,ant统一对待。它也是一种编程框架。maven 和ant功能比较固定。Gradle更加灵活。二、gradle优势灵活性。 gradle可以写脚本粒度性。 Gradle 通过task一步一步执行的。扩展性。 基于插件的扩展兼容性。 兼容Maven和ant的功能三、gradle执行流程/*** 配置阶段开始前的监听*/this.beforeEv..

2020-10-16 05:36:50 345

原创 Gradle学习之三Groovy高级语法

文章目录前言一、概述二、json操作详解前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、概述二、json操作详解def list = [ new Person(name:'zhangsan',age: 18), new Person(name:'lisi',age: 18), ..

2020-10-16 05:15:31 440 2

原创 Gradle学习之二Groovy核心语法

文章目录一、基础语法二、String讲解2.1 三种定义方式2.2 新增操作符三、逻辑控制四、闭包4.1 闭包基础讲解4.2闭包的使用4.3 闭包进阶五、数据结构5.1 列表5.1.1 列表与数组的定义5.1.2 列表操作5.2 映射5.2.1 定义5.2.3 使用5.3 范围六、面向对象6.1 定义类6.2 元编程一、基础语法groovy中没有基本数据类型,编译器会将其装箱成对象类型变量定义 使用def 弱类型方式弱类型方式声明的变量,其类型可发生改变:二、String讲解2.1 .

2020-10-15 15:02:23 456

原创 Gradle学习之一入门介绍

文章目录第一章 课程导学第二章 快速入门2.1 概述2.2 特定语言DSL2.3 groovy初探第三章 开发环境搭建3.1 mac 安装3.1.1 下载Groovy SDK3.2 idea配置第一章 课程导学gradle的功能强大,maven和ant可以做的,它也可做。并且它使用SDL语言,是的配置更加灵活。掌握gradle:可以完善Android和Java技术体系提供自动化构建技术深度全语言全平台的自动化构建工具主要内容Gradle开发环境的搭建核心语法讲解和实战字符串、.

2020-10-15 14:41:26 475

原创 《C和C指针》之第三章数据

文章目录一、基本数据类型二、基本声明三、typedef四、常量五、作用域(scope)六、链接属性七、存储类型八、static关键字九、作用域、存储类型示例十、总结10.1 总结10.2 警告的总结10.3 编程提示的总结十一、问题一、基本数据类型二、基本声明三、typedeftypedef 关键字是用来为类型定义一个别名的。这样做的好处就是 提高代码的可读性与可维护性。//定义字符指针类型的别名为 ptr_to_chartypedef char *ptr_to_char;//声明变量a..

2020-10-15 00:01:06 165

原创 Maven管理Android项目

文章目录一、Maven是什么?二、Maven发布项目到本地2.1 准备工作2.2 创建上传任务2.3 开始上传2.4 使用上传到本地的依赖三、Maven发布项目到私服3.1 搭建私服3.2 配置需要上传的模块3.3 使用上传到私服的模块四、Maven发布项目到远程服务器4.1 搭建私服4.2 配置需要上传的模块4.3 使用上传到私服的模块总结一、Maven是什么?二、Maven发布项目到本地2.1 准备工作创建一个Android项目,其中包含两个模块:app module 和 baselibra..

2020-10-13 19:42:03 772

原创 Android开源框架之Dagger快速入门

文章目录一、Dagger是什么?二、使用步骤总结一、Dagger是什么?Dagger 会自动生成代码,该代码与您原本需要手动编写的代码相似。由于该代码是在编译时生成的,因此具有可追溯性,而且性能要高于其他基于反射的解决方案。优点:代码复用容易维护融易测试二、使用步骤总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。...

2020-10-13 13:35:03 2730 1

原创 算法之最小栈求解

问题描述设计一个支持 push ,pop ,top 操作,并能提供一个获取最小值的方法getMin() 。push(x) —— 将元素 x 推入栈中。pop() —— 删除栈顶的元素。top() —— 获取栈顶元素。getMin() —— 检索栈中的最小元素。解题思路创建一个类名为Stack,内部依赖两个栈结构(_stack 和_stageStack)。第一个用来存真实的数据;而第二个栈用来存储当前栈中的最小值。根据题意 新建头文件Stack.hpp,内容如下:#ifndef Sta

2020-09-30 13:21:28 191

原创 算法之循环有序列表的插入

题目描述解题思路由于是单向循环列表;能够保证每个元素都能遍历到要插入的元素,其插入的位置有两种情况a. 插入的位置 ,其前驱的值不大于 要插入的值 ,并且其后继的值要不小于当前值b.插入的位置, 不小于最大值或者不大于最小值#include "linked.hpp"void insert(Node * circle , int value){ if(circle == nullptr){ return; } //构建一个新的要插入的结点

2020-09-30 10:30:03 652

翻译 Jetpack之WorkManager(二)

文章目录前言一、自定义WorkManager二、WorkManager和Dagger总结前言前面已经学习了WorkManager的基本使用Jetpack之WorkManager(一),接下来我们学习如何自定义Manager。一、自定义WorkManagerhttps://medium.com/androiddevelopers/customizing-workmanager-fundamentals-fdaa17c46dd2https://medium.com/androiddevelop..

2020-09-29 11:07:20 540

原创 C语言问题记录之Conflicting types for ‘free

问题描述:今天在XCode中尝试练习C语言,使用malloc分配堆内存空间。但是想调用free释放堆内存空间时,Xcode编译失败,并且提示:Conflicting types for ‘free’int main(int argc, const char * argv[]) { int a = 10; int b = 20; int * r = IntOperate(&b,&a, MULT); printf("MULT : %d \n",*r);

2020-09-28 10:54:13 1263

原创 算法之由两个栈组成队列

题目编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。解决方案根据栈的特点:先进后出。如果要想使用两个栈实现队列(先入先出特点)。只需要定义两个栈,分别命名为input和output。当input 表示入队,而output表示出队。关键点在于,只要当input中的元素要一次弹栈并压入output栈中。并且只要output中元素全出弹出后,才能够再次重复此操作具体代码如下所示://-------------- FILE QList.hpp ---------------

2020-09-27 14:56:28 91

翻译 Jetpack之WorkManager(一)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、WorkManager简介1.1 WorkManager是什么?1.2 WorkManager什么时候使用1.3 为什么使用WorkManager1.4 WorkManager怎么制定工作计划的二、如何使用WorkManager2.1 准备工作2.2 定义后台任务为"work"2.3 定义如何执行具体的"work"2.4 运行你的"work"2.5 "work"是如何运行的2.6 使用链实现多任务有序执行2.7 关注Work

2020-09-27 13:47:24 650 1

原创 算法之使用递归实现栈翻元素转(C++)

问题描述通过递归函数实现栈元素翻转。例如:stack={1,2,3,4,5} ,将栈中的元素返回之后,变为stack={5,4,3,2,1};实现方式利用递归函数的调用栈存储栈中的每一个元素。只要实现先pop的元素,最后push即可。可以利用递归方法的调用栈,获取栈底元素。将stack中的数据,依次从栈底拿出。然后最后push到栈中即可。//方法声明//遍历打印栈中元素void printStack(stack<int>* _stack);//获取当前栈中,栈底的元素in

2020-09-23 10:34:38 454

原创 NDK sample之一HellojniCallback

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、宏定义日志输出二、定义全局变量2.1 初始化全局变量2.2 回调Java层方法三、通过回掉实现计时器的显示3.1 Java层代码3.2 native层的实现一、宏定义日志输出//宏函数定义,调用 头文件#include <android/log.h>中的日志函数static const char* kTAG = "hello-jniCallback";#define LOGI(...) \ ((void

2020-09-23 09:40:59 277

原创 算法之单链表翻转

问题描述实现一个单链表的翻转。例如给定链表如下:1->2->3->4翻转后,结果为:4->3->2->1实现方式//翻转指针//实现思路:本人第一思路如此(比较笨拙)//三指针,分情况讨论的(流汗,估计面试的话,一轮游的水平)。int reverse(struct node** node){ struct node* tmp = (*node)->next; struct node* last = NULL;

2020-09-22 17:31:45 224

原创 音视频之一FFmpeg交叉编译

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、下载ffmpeg源码1.1 注意二、配置编译脚本2.1 修改配置文件2.2 编写shell 编译脚本2.3 查看编译结果三、总结3.1 No such file or directory3.2 C compiler test failed3.3 参考链接一、下载ffmpeg源码FFmpeg官网下载地址下载最新的ffmpeg代码1.1 注意我们可以在如上图中所示的地方,下载已经编译好的ffmpeg二进制文件,免去编译

2020-09-22 15:55:00 2100

原创 Java并发编程实践之并发理论基础(一)

文章目录一、并发问题的源头1.可见性2. 原子性3. 有序性二、JMM1.引入库三、互斥锁(上)四、互斥锁(下)五、死锁如何处理六、等待唤醒机制七、安全性、活跃性、及性能问题八、管程九、Java线程的生命周期十、Java线程创建多少合适十一、为什么局部变量是线程安全的十二、如何用面向对象思想写好并发程序十三、问题答疑总结一、并发问题的源头1.可见性2. 原子性3. 有序性示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、JMM代码如下(示例): J

2020-08-31 11:53:56 268

原创 Android混合开发之WebView调用相机

文章目录前言一、H5页面的使用方式二、Android提供的支持1.WebView基本属性设置2.WebView实现调用相机的支持3.实现调用相机的代码总结前言最近有一个需求:H5通过标题input标签调用Android系统相机、相册的功能一、H5页面的使用方式<input type="file" accept="image/*" capture><input type="file" accept="video/*" capture>根据不同的accept的值,分别调用

2020-08-25 10:13:45 3956

原创 Android工具类之拍照、摄像和图片选择

文章目录一、权限动态申请1.EasyPermission的简单使用二、具体代码段1.拍照2.摄像3.图片选择4.图片、拍照多种选择混合使用三、注意点一、权限动态申请implementation 'pub.devrel:easypermissions:1.0.1'/** * 权限申请工具类 */public class PermissionsEasy extends EasyPermissions { private static final boolean ENABLED = tru

2020-08-25 09:51:46 1676 1

原创 Android之FileProvider的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、FileProvider是什么?二、FileProvider使用步骤1.定义一个FileProvider2.指定可访问的文件3.获取指定文件的Uri4.授予临时权限给Uri5.提供Uri给其他App三、案例一、FileProvider是什么?FileProvider是一个ContentProvider的子类,它取代了“file://”形式的Uri 通过“content://”形式的Uri实现了App间的安全通信。conte

2020-08-24 19:45:25 5353 4

原创 Bitmap和Base64之间的转换及其注意事项

BitmapUtil工具类public class BitmapUtil { /** * bitmap转为base64 * @param bitmap * @return */ public static String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; try

2020-08-24 17:52:58 2444

原创 安卓音频系统之一音频基础

音视基础声波音频的录制、存储与回放音频采样Nyquist-Shannon采样定律声道与立体声道声音定级—WeberFechner law音频文件格式声波从物理学的角度来讲,声音是机械波的一种。机械波是由机械震荡产生的。声音的传播需要介质。其重要属性如下:响度音调音色(初中物理都学过的)音频的录制、存储与回放多媒体并不是为计算机系统而生的,只不过后者的出现极大的推动了它的发展。那么传统多媒体和计算机多媒体系统之间有什么区别吗?一个很明显的问题就是:我们如何将媒体源数字化

2020-07-06 04:38:03 271

原创 RecyclerView源码分析三之动画分析

介绍在上一篇中,我们分析了RecyclerView的绘制与复用。接下来我们继续分析RecyclerView的动画实现原理。RecyclerView的动画分为两个阶段:PreLayoutPostLayout为什么RecylerView的动画要分为两个阶段众所众知,ViewGroup可以通过LayoutTransition实现其内部childView的动画变化。在普通的ViewGroup,其内部的View的动画就是显示和隐藏。但是ReyclerView需要的动画有些不同,因为它有滚动的效果。比如:

2020-07-01 15:28:27 398

原创 RecyclerView源码分析二之绘制与复用

介绍我们都知道在Android ViewGroup的绘制流程中,需要通过重写方法onMeasure(int width,int height) 和 onLayout(int l,int t,int r,int b)来实现自定定义ViewGroup的。RecyclerView的测量、绘制依然是依靠这两个方法来实现的。测量绘制复用...

2020-07-01 14:45:34 316

原创 RecyclerView源码分析一之简单介绍

介绍作为一个Android开发者,肯定对RecyclerView并不陌生。它相对ListView来说,有很多的优势,尤其是在使用方面。LayoutManagerRecyclerItemAnimatorItemDecoration

2020-07-01 13:51:56 216

原创 Android Studio 之 Warning: debug info can be unavailable

问题描述Warning: debug info can be unavailable. Please close other application using ADB: Restart ADB integration and try again解决办法重新ADB所连接的手机参考链接

2020-06-28 12:20:26 682

原创 算法之队列求第 k 个数

问题描述有些数的素因子只有 3,5,7,请设计一个算法找出第 k 个数。注意,不是必须有这些素因子,而是必须不包含其他的素因子。例如,前几个数按顺序应该是 1,3,5,7,9,15,21。示例 1:输入: k = 5输出: 9算法实现class Solution { /** * 丑数 * 通过三个索引记录最小值 */ public int getKthMagicNumber(int k) { int[] arr = new int[k]; ar

2020-06-28 09:55:09 469

原创 算法之链表环路检测

问题描述给定一个有环链表,实现一个算法返回环路的开头节点。有环链表的定义:在链表中某个节点的next元素指向在它前面出现过的节点,则表明该链表存在环路。示例 1:输入:head = [1,2,3,4], pos = 1输出:tail connects to node index 1解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [5,3], pos = 0输出:tail connects to node index 0解释:链表中有一个环,其尾部连接到第

2020-06-28 09:30:10 492 1

空空如也

空空如也

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

TA关注的人

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