自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

achilles没有踵

输赢不重要,开心才重要

  • 博客(57)
  • 问答 (5)
  • 收藏
  • 关注

原创 系统编程的概念

内核:管理计算机资源的程序内核功能特点:进程调度:linux是抢占式多任务系统,多任务是指多个任务可以同时驻留在内存中,抢占式:是指某个任务在何时使用cpu,并且使用多长时间的规则。分配的是cpu资源。内存管理:为了合理的在任务间分配内存资源,linux也使用了虚拟内存技术,虚拟内存技术的优点:进程间相互隔离,一个进程无法访问或者修改另一个进程的内存进程仅需要部分程序留在内存中,降...

2020-03-08 18:34:40 572

原创 pixel2真机调试aosp

文章目录pixel2真机调试aosp2.下载源码3.下载完成后编译aosp4.as导入aosp1.导入加速2.配置正确的源码跳转3.调试aosp4. 其他repo查看其他分支pixel2真机调试aosp##1. 前置工作解锁手机,让手机允许刷机adb reboot bootloader # 重开机后看到机器人fastboot flashing unlock #进入解锁画面,音量键选择...

2019-08-15 18:42:49 1343

原创 使用intellij生成jar包同时打包依赖的第三方包

使用intellij生成jar包同时打包依赖的第三方包1.打开java工程的moudle settings。一次点击artifacts,点击“+”选择jar ,选择from moudles with dependencies2.moudle选择想要打包成jar的moudle3.main class选择对应moudle的入口函数。防止选错,可以点击project 双击对应的类来选择4....

2019-02-18 17:26:27 1961

原创 AnimationDrawable

尽量不要使用 AnimationDrawable,它在初始化的时候就将所有图片加载到内存中,特别占内存,并且还不能释放,释放之后下次进入再次加载时会报错。说明:Android 的帧动画可以使用 AnimationDrawable 实现,但是如果你的帧动画中如果包含过多帧图片,一次性加载所有帧图片所导致的内存消耗会使低端机发生 OOM 异常。帧动画所使用的图片要注意降低内存消耗,当图片比较大

2018-03-19 23:28:39 1779

原创 LocalBroadcastManager原理解析

最近看到阿里巴巴的android手册中提倡应用内用LocalBroadcastManager来发送本地广播。所以就分析一下其源码。单例模式public static LocalBroadcastManager getInstance(Context context) { synchronized (mLock) { if (mInstanc...

2018-03-19 23:08:58 375

原创 app卡顿检测原理以及blockcanary源码分析

App检测卡顿的原理自定义Looper中的printer public static void loop() { final Looper me = myLooper(); if (me == null) { final MessageQueue queue = me.mQueue; for (;;) { ...

2018-03-19 22:57:54 555

原创 开发中常用的adb命令

允许adb debugging需要在手机中进行设置(开发者选项中)使用无线连接设备 让手机和电脑连接同一个网络,先使用usb线连接手机,然后电脑终端设置手机在5555端口监听tcp(adb tcpip 5555),使用adb connect ip(手机ip)命令连接手机注意:如果连接丢失 可以尝试确保连接的是同一个无线重新使用adb connect ip命令重启adb server

2016-11-20 20:39:11 349

原创 java中关于String

首先关于java传递值还是传递引用可参见java到底传递值还是引用 结论是java传递的是值 接下来看看这个例子:public class Test { public static void main(String[] args) { String b=new String("abc"); changeString(s); System.o

2016-10-27 23:20:04 279

翻译 Services

services是一种可以长时间在后台运行并且不与用户交互的一种组件,其他的应用组件可以开启一个service,并且这个service会一直在后台运行即使用户切换到其他的应用。另外一个组件可以bind to service来和它交互甚至进行(IPC)进程间交互。例如:一个service在后台处理网络,播放音乐,执行I/O,或者和一个contentprovider进行交互。service有两种启动方

2016-10-23 16:36:38 357

原创 java enum详解

enum enum是jdk1.5引入的概念。enum类型的值实际上是通过运行期构造的对象来表示。在定义enum的时候编译器会默认帮我们做些事:所有的枚举类会默认继承Enum(Enum默认实现 Comparable 和 Serializable 接口),所以枚举类不可以在继承其他的类(java单继承);所有的枚举类是final的,不可有子类所有定义的枚举常量,会在定义的枚举类中生成public

2016-05-06 16:32:37 1435

原创 别人总结的android学习资源汇总

优秀的网站google官方培训文档codekk开源项目分析代码零件优秀的技术阅读网站掘金开发技术前线开发者头条android开发周报csdn的android知识库segmentfaultgithub上的资源codekk搜集的开源项目github上google账号github上google samplesandroid ui开源项目的搜集2015google io大会d

2016-05-05 20:10:30 330

原创 使用gradle来编译生成apk

:简介 gradle基于groovy语言,跟maven相似,是一种依赖管理工具。androidstudio项目中的gradle每个moudle下会有一个build.gradle文件,算是项目中最主要的gradle文件//表明是android应用而不是java程序apply plugin: 'com.android.application'//声明sdk的版本android {

2016-05-05 16:45:10 1808

翻译 android中进程优先级问题

学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍。就不给大家转帖了,直接放译文吧,如下: Android系统会尽量维持进程的存在,但毕竟资源有限,当系统资源告急的时候会淘汰一部分进程。淘汰顺序的凭据就是系统进程的优先级了,优先级越高越不容易被杀死,反之亦然。系统总共为进程分了五个优先级,如下 一、

2016-05-01 15:51:52 311

原创 算法(五)

利用递归来实现栈的倒序//这个i定义在函数外面,防止每次递归调用将i的值初始化为0int i = 0; public int[] reverseStackRecursively(int[] stack, int top) { // write code here if(top>0) { int a = stack[top

2016-05-01 15:14:47 323

原创 算法(四)

顺时针旋转矩阵 [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5,2],[9,6,3]] for i 0->n-1(代表列) for j n-1->0(代表行) a[i][n-j-1]=mat[j][i];public int[][] rotateMatrix(int[][] mat, int n) { /

2016-04-30 16:30:12 283

原创 算法(3)

压缩字符串比如fffff压缩成5f 预判断下一个字符是否与前一个相等,如果相等则进行计数,不等则直接放到新的数组中,注意判断计数值是否大于1来判断是否字符重复。还要记得将计数器的值还原public String compressChar(char[] a){ if(a==null||a.length==1) { return a.toString();

2016-04-29 21:40:10 222

原创 字符相关算法(二)

将字符串中所有的*移动到左边 1.使用冒泡排序的方式,冒泡是稳定的,可以保证字符的顺序public void removeLeftAndRight(char[] a) { for(int i=0;i<a.length;i++) { for (int j=a.length-1;j>i;j--) {

2016-04-29 16:10:02 229

原创 字符相关算法

字符串全组合 使用位图0代表该字符不出现,1代表该字符出现public void Combinatin(char[] a) { int len=a.length; int n=0; if(len<32) { n=1<<len; } for(int i=0;i<n;i+

2016-04-28 21:40:48 262

原创 基本排序算法

二分查找public class BinarySearch { public int binarySearch(int[] a,int result) { int len=a.length; int left=0; int right=len-1; int mid; while (left<=right)

2016-04-25 10:58:20 280

原创 mac安装mysql和修改mysql密码

安装下载mac版mysql。 注意安装的过程中会出现随机给分配的密码一定要记住这个密码。如果没看到,可以在系统的通知栏中看到。修改密码首先停止mysql服务。可以在系统偏好设置中看到mysql。cd /usr/local/mysql/bin/sudo su获得管理员权限./mysqld_safe –skip-grant-tables & 这一步的作用是跨过权限验证
./mysql -u

2016-03-28 20:49:07 471

原创 异步消息处理线程

普通的线程执行完run()方法线程就会结束,异步消息处理线程是指,线程启动后会进入无限循环体中,每循环一次就会从消息队列中取出一条消息,并且回调消息处理函数。执行完一条消息后继续循环。如果消息队列为空线程就会暂停,直到消息队列中有新的消息一般实现每个异步线程内包含一个消息队列,先到的消息先被处理线程的执行体中使用while(true)循环,不断的从消息队列中取出消息,并根据消息来源,回调相应的

2016-03-28 11:13:03 498

原创 java详解单例模式

简介 单例模式要求某个类只有一个实例变量。只有类提供了一个接口来获得类的唯一实例。所以不允许用户来创建实例。可想而知,类的构造函数只能由类本身来调用。所以类构造函数是private的。因为构造函数是private的。上面提到的获得类的唯一实例的接口肯定是static的。除了基本的要求外。合格的单例模式必须确保多线程下单例类的实例只有一个。 例如在android中ImageLoader应该是

2016-03-22 18:57:55 218

原创 java线程研究

线程的状态 创建状态:准备好了一个线程对象 就绪状态:调用了start()函数,等待cpu的调度 执行状态:运行了run()函数 暂停状态:暂停执行任务,可能交出cpu资源 终止状态:线程被销毁 一些常用的函数 Thread类的currentThread()函数返回代码段正在被哪一个线程调用 Sleep()让当前正在执行的线程休眠指定的毫秒数。这个“正在

2016-03-21 15:18:37 294

原创 java中File基础

文件的基本操作public class Test { public static void main(String[] args) { File file=new File("hell.txt"); //判断文件是否存在 if(file.exists()) { //删除文件

2016-03-21 01:46:29 291

原创 浅析android中AsyncTask

作用 android是单线程模型。如果在UI主线程中执行耗时操作。可能导致ANR(应用无响应)。系统就会弹出一个ANR对话框。用户选择等待或者离开应用 注意:ANR出现场景: 主线程被IO操作(4.0以后主线程中不允许进行网络IO操作)阻塞。主线程中进行耗时的操作。主线程中进行错的操作,如Thread.wait Thread.sleep Android系统会监视应用响应情况:如果

2016-03-21 00:19:15 371

原创 sql基本语句

sql基本语句学习 1.create表:自增长 identity(0,1)从0开始1为增加量 (对比mysql类似于auto_increment=1 //省略不写默认自增1) primary key 可以像mysql直接用或者create table test(id int identity(0,1),name varchar(10),primary key(id)) 2.主码

2016-03-19 20:48:49 811

原创 c#学习

c#中所有的类型都来自object int i = 9; //object o = 4; //o=new Student();//装箱 // int i=Convert.ToInt32(o);//出箱> static void Main(string[] args) {

2016-03-19 16:14:27 233

原创 java中位运算的一点研究

简介 java位运算是对java中整型数据(byte char short int long)的二进制进行位操作的运算。java二进制最高位是符号位。0为正,1为负。主要有与(&只有1&1为1,其余为0),或(|只有0|0为0,其余为1),非(~取反),异或(^相异为1),有符号左移(<<),有符号右移(>>),无符号右移(>>>)。没有无符号左移。举例 ~4 0 0 0 0 0 0

2016-03-19 14:14:49 263

原创 理解view

layoutInflaterlayoutInflater是用来加载布局的,其实setContentView()也是调用layoutInflater来加载布局的 1.LayoutInflater layoutInflater=LayoutInflater.from(context); 2.LayoutInflater layoutInflater=(LayoutInflate

2016-03-19 13:24:26 279

原创 linux基本知识

linux知识软件包管理dpkg -S file——这个文件属于哪个已安装软件包。dpkg -L package——列出软件包中的所有文件。aptitude update 更新可用的包列表aptitude upgrade 升级可用的包aptitude dist-upgrade 将系统升级到新的发行版aptitude install pkgname 安装包aptitude

2016-03-19 10:22:57 214

原创 应用层杂谈

应用层应用程序体系结构(c/s,p2p)主流 c/s:服务器总是打开,客户端打开或不打开 服务器有固定的ip地址 主机群集创建虚拟服务器 p2p:文件分发,文件搜索/共享,因特网电话 进程通信,不通端系统进程通过网络交换报文来相互通信 进程与计算机网络之间的接口:套接字(程序进程和运输层协议的接口) 可用吞吐量:发送进程能够想接受进程提供的交付比特的速率 运输层

2016-03-19 09:43:46 309

原创 docker入门

docker中基本概念 Docker 一款轻量级容器管理引擎,由 Docker Daemon、Docker Client 组成。Docker Daemon Docker 架构中常驻后台的系统进程,负责接收处理用户发送的请求和管理所有的 Docker 容器,所谓的运行 Docker 即代表运行 Docker Daemon。Docker Client Docker 架构中用

2016-03-18 19:34:41 279

原创 java基础

字节码 是Java 编译之后的 的代码 是为了让JVM执行的 jar可以分为 可执行的 和不可执行的 java -jar Test 可以直接运行可执行的 jar包 那些不可执行的 你看的最多的 就是 像JRE这样的依赖包 类之间关系 使用,聚合,继承 class A {} class B extends A//继承 是的关系 { A

2016-03-18 17:20:52 200

原创 http请求

http是超文本传输协议。目的是保证客户端和服务器端的通信get和post get和post是最常用的http方法。两者有以下区别: get是从指定的资源请求数据post是向指定的资源提交要处理的数据http的状态码: http中其他的一些方法get 类比数据库的话get方法相当于select。索引相应的资源put 相当于数据库的update,用来向已知的资源发出更改请求

2016-03-18 17:06:10 265

原创 TCP和UDP

Tcp(传输控制协议)和udp(用户数据报协议)是传输层的协议Tcp和Udp之间的区别tcp面向连接,udp是无连接的协议 tcp三次握手,四次挥手 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 四次挥手:中断请求可以是cli

2016-03-18 14:26:44 307

原创 计算机网络基本知识

TCP IP 是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。预备知识ip地址 网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32bit 的数字,被 . 分成 4 组,例如,255.255.255.255 就是一个 IP 地址。有了 IP 地址,用户的计算机就可以发现并连接互联网中的另外一台计算机。域名

2016-03-18 13:47:27 368

原创 visual studio code基础

基本的用法 vsc同时可以打开三个文件,cmd+\可以在原有编辑区德基础上,多打开一个编辑区(最多三个)cmd+B可以打开或者关闭explorer部分,在explorer区cmd+shift+F可以在所有文件中查找关键字cmd+shift+P打开Command Palette(简称cp)开启或者关闭自动保存功能 打开cp输入auto 然后点击enter即可开启或者关闭自动保存功能打

2016-03-17 19:55:03 500

原创 python基础(二)

循环for循环基本构造是:for 元素 in 序列: statement range()函数。该函数的功能是新建一个表。这个表的元素都是整数,从0开始,下一个元素比前一个大1, 直到函数中所写的上限 (不包括该上限本身)。i=range(4)print i结果是[0,1,2,3]while循环while的用法是:while 条件:

2016-03-17 19:53:35 287

原创 java内存相关知识

java虚拟机会将其管理的内存划分为不同的数据区域 程序计数器:该程序计数器与cpu中的程序计数不同,java虚拟机在自己的内存中设立一片区域来模拟cpu程序计数器。虚拟机规定每一个线程都有自己的程序计数器。其作用是用来指向正在执行的字节码地址。 堆:jvm启动就创建了堆内存区,堆是线程共享的运行时内存区域,也是供所有类实例和数组对象分配内存的区域。它存储了被内存管理器监管的对象

2016-03-17 19:29:20 314

原创 关于try catch finally一点研究

关于try语句块中有return,finally中的语句块是否执行以下情况是不执行的 1.try语句块中有System.exti(0)语句。该语句执行完成后,jvm停止运行。所以之后的finally不会执行 2.如果try语句块没有执行,finally也不会执行finally如何执行 在try语句块中的return语句执行后,返回前执行public class Main {

2016-03-16 23:17:25 320

空空如也

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

TA关注的人

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