01 2021 档案
摘要:变量的存储类型 变量说明的一般形式是: <存储类型> <数据类型> <变量名>; <存储类型> 的关键词 auto、register、static、extern auto:默认的,表示存储在内存中,默认值是随机的 register: 存在寄存器中 static: 默认是0,全局变量, extern:
阅读全文
摘要:gcc编译器 gcc(GNU Compiler)是GNU推出的多平台编译器,可将C、C++源程序编译连接成可执行文件,支持以下后缀: .c c语言源代码 .h 程序所包含的头文件 .i 已经预处理过的C源代码文件 .s 汇编语言源代码文件 .o 编译后的目标文件 gcc -o hello hello
阅读全文
摘要:1. 熟练使用vi的光标命令 h:方向键,向左移动光标一个字符的位置 j:方向键,向下移动光标到下一行的位置 k:方向键,身上移动光标到上一行的位置 l:方向键,向右移动光标一个字符的位置 :N :移动光标到第N行(N待定) 1G: 移动光标到文件的第一行 G:移动光标到文件的最后一行 :set n
阅读全文
摘要:1. 熟悉vi的三种模式及模式切换命令 命令行模式 :用户在用vi编辑文件时,最初进入的为该模式,可以进行复制、粘贴等操作 插入模式 : 进行文件编辑,按ESC键可以回到命令行模式 底行模式 : 光标位于屏幕的底行,可以进行文件的保存、查找、替换、列出行号等 2. 熟练使用vi的拷贝和粘贴命令 [N
阅读全文
摘要:Linux的常用命令 whereis:查找某个命令的目录位置 pwd:打印当前目录 file:查看文件属性 echo:打印字符到屏幕上面 mkdir/rmdir:建立/移动文件夹 cat:把文本的内容输出到屏幕上面 cp,mv,rm:文件的拷贝、移动、删除 chown,chgrp:chage own
阅读全文
摘要:Android 系统架构分为五层,从上到下依次是:应用层、应用框架层、系统运行库层、硬件抽象层、Linux内核层 1. 应用层(SystemApps) 这层主要是JAVA开发的,负责与用户交互 2.应用框架层(Java API Framework) 这层是为开发人员提供了开发应用程序 所需的API,
阅读全文
摘要:Android开发前准备 开发环境准备:Ubuntu机、相差命令安装 源代码:源码下载、源码编译(4.4) 源码目录介绍 安装Ubuntu系统 配置开发环境 sudo apt-get install git-core gnupg flex bison gperf zip sudo apt-get i
阅读全文
摘要:流程: read(读取):从主内丰读取数据 load(载入):将主内存读取到的数据写入工作内存 use(使用):从工作内存读取数据来计算 assign(赋值):将计算好的值重新赋值到工作内存中 store(存储):将工作内存数据写入主内存 write(写入):将store过去 的变量值赋值给主内存中
阅读全文
摘要:1.初始化: 初始化列表 语法:构造函数():属性1(值),属性2(值2)……{} 实例: class Preso { public: //传统初始化操作 Preso(int a, int b, int c) { m_A = a; m_B = b; m_C = c; } //初始化列表初始化属性 P
阅读全文
摘要:1.引用 引用必须指向一个指向一块合法的内存空间,不可以指向一个常数。例如 int & ref = 10; 这个用法是错的,因为10不是一个合法的内存空间,它在常量区 const int & ref = 10;这个用法是正确的。加上const之后,编译器将代码 修改为 int temp = 10;
阅读全文
摘要:LeakCanary github地址:https://square.github.io/leakcanary/ 开始使用 目前为止最新的版本是2.3版本,相比于2.0之前的版本,2.0之后的版本在使用上简洁了很多,只需要在dependencies中加入LeakCanary的依赖即可。而且debug
阅读全文
摘要:常见的五种内存泄露: A. 单例造成的内存泄露 B. 非静态内部类创建静态实例造成的内存泄露 C. Handler造成的内存泄露 D. 线程造成的内存泄露 E. WebView造成的内存泄露 F.图片放错资源目录,列表释放时没有释放图片 1.造成内存泄露有哪些? 1.1单例造成的内存泄露 i举例:单
阅读全文
摘要:1.内存泄露介绍 定义:内存中存在已经没有用的对象 表现:内存抖动、可用内存逐渐变少 危害:内存不足、GC频繁、OOM 1.1 Memory Analyzer(mat工具) https://www.eclipse.org/mat/downloads.php 转换:hprof-conv原文件路径 转换
阅读全文
摘要:1.内存抖动介绍 定义:内存频繁分配和回收导致内存不稳定 表现:频繁GC、内存曲线呈锯齿奖 危害:导致卡顿、OOM 1.1 内存抖动导致OOM 频繁创建对象、导致内存不足及碎片(不连续) 不连续的内存片无法被分配,导致OOM 2.内存抖动解决实战 使用Memory Profiler初步排查 使用Me
阅读全文
摘要:1. java内存管理机制 1.1 java内存分配 方法区 虚拟机栈 本地方法栈 堆 程序计数器 1.2 java内存回收算法 1.2.1标记-清除算法 标记出所有需要回收的对象 统一回收所有被标记的对象 缺点: 标记-和清除效率不高 会产生大量不连续的内存碎片,出现内存空洞 1.2.1复制算法
阅读全文
摘要:1 内存优化介绍 内存抖动:锯齿状、GC导致卡顿 内存泄露:可用内存减少、频繁GC 内存溢出:OOM、程序异常 2 优化工具选择 2.1 Memory Profiler(androidstudio下的工具) 实时图表展示应用内存使用量 识别内存泄露、抖动等 提供捕获堆转储、强制GC以及跟踪内存分配的
阅读全文
摘要:1、你做启动优化是怎么做的 分析现状、确认问题 针对性优化 长期保持优化效果 2、是怎么异步的,异步遇到问题没有 体现演讲过程 详细介绍启动器 3、你做了启动优化,觉得有哪些容易忽略的 cpu time 与 wall time 注意延迟初始化的优化 介绍黑科技 4、版本迭代导致的启动变慢有好的解决吗
阅读全文
摘要:1、优化总方针 异步、延迟、懒加载 懒加载:当页面需要到的时候再去加载 技术、业务相结合 2、注意事项 wall time 与cpu time: cpu time才是优化方向 按照systrace 及cpu time跑满cpu 监控的完善 线上监控多阶段时间(App,Activity,生命周期间隔时
阅读全文
摘要:常见初始化痛点 1、可以通过延迟初始化(通过回调)来达到让主线程来少干活,提高性能 ,但是时机不便控制,仍然会对Feed滑动过程有卡顿 2、更优方案:(对上一种方法的升级) 核心思想:对延迟任务进行分批初始化,当空闲时再去初始化 利用IdleHandler特性,消息队列空闲时进行初始化工作。 实现方
阅读全文
摘要:优化小技巧 Theme切换:感觉上的快(实际上是启动的logo页面) 核心思想:子线程分担主线程任务,并行减少时间
阅读全文
摘要:1、AOP介绍 Aspect Oriented Programming,面向切面编程 针对同一类问题的统一处理 无侵入添加代码 1.1AspectJ使用(辅助AOP实现) classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2
阅读全文
摘要:注意点: 两种方式 互相补充 正确认识工具及不同场景选择合适 的工具 1、traceview工具: 图形的形式展示代码执行时间、调用栈等 信息全面,包含所有线程 使用方式: Debug.startMethodTracing("app");//在application类里的onCreate()方法最开
阅读全文
摘要:1、sdb命令: adb shell am start -W packagename/首屏activity的全路径名称 例如:adb shell am start -W com.optimize.performance/com.optimize.performance.MainActivity 结果
阅读全文