- 博客(57)
- 问答 (5)
- 收藏
- 关注
原创 系统编程的概念
内核:管理计算机资源的程序内核功能特点:进程调度:linux是抢占式多任务系统,多任务是指多个任务可以同时驻留在内存中,抢占式:是指某个任务在何时使用cpu,并且使用多长时间的规则。分配的是cpu资源。内存管理:为了合理的在任务间分配内存资源,linux也使用了虚拟内存技术,虚拟内存技术的优点:进程间相互隔离,一个进程无法访问或者修改另一个进程的内存进程仅需要部分程序留在内存中,降...
2020-03-08 18:34:40
691
原创 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
1460
原创 使用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
2073
原创 AnimationDrawable
尽量不要使用 AnimationDrawable,它在初始化的时候就将所有图片加载到内存中,特别占内存,并且还不能释放,释放之后下次进入再次加载时会报错。说明:Android 的帧动画可以使用 AnimationDrawable 实现,但是如果你的帧动画中如果包含过多帧图片,一次性加载所有帧图片所导致的内存消耗会使低端机发生 OOM 异常。帧动画所使用的图片要注意降低内存消耗,当图片比较大
2018-03-19 23:28:39
1861
原创 LocalBroadcastManager原理解析
最近看到阿里巴巴的android手册中提倡应用内用LocalBroadcastManager来发送本地广播。所以就分析一下其源码。单例模式public static LocalBroadcastManager getInstance(Context context) { synchronized (mLock) { if (mInstanc...
2018-03-19 23:08:58
417
原创 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
619
原创 开发中常用的adb命令
允许adb debugging需要在手机中进行设置(开发者选项中)使用无线连接设备 让手机和电脑连接同一个网络,先使用usb线连接手机,然后电脑终端设置手机在5555端口监听tcp(adb tcpip 5555),使用adb connect ip(手机ip)命令连接手机注意:如果连接丢失 可以尝试确保连接的是同一个无线重新使用adb connect ip命令重启adb server
2016-11-20 20:39:11
389
原创 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
313
翻译 Services
services是一种可以长时间在后台运行并且不与用户交互的一种组件,其他的应用组件可以开启一个service,并且这个service会一直在后台运行即使用户切换到其他的应用。另外一个组件可以bind to service来和它交互甚至进行(IPC)进程间交互。例如:一个service在后台处理网络,播放音乐,执行I/O,或者和一个contentprovider进行交互。service有两种启动方
2016-10-23 16:36:38
418
原创 java enum详解
enum enum是jdk1.5引入的概念。enum类型的值实际上是通过运行期构造的对象来表示。在定义enum的时候编译器会默认帮我们做些事:所有的枚举类会默认继承Enum(Enum默认实现 Comparable 和 Serializable 接口),所以枚举类不可以在继承其他的类(java单继承);所有的枚举类是final的,不可有子类所有定义的枚举常量,会在定义的枚举类中生成public
2016-05-06 16:32:37
1474
原创 别人总结的android学习资源汇总
优秀的网站google官方培训文档codekk开源项目分析代码零件优秀的技术阅读网站掘金开发技术前线开发者头条android开发周报csdn的android知识库segmentfaultgithub上的资源codekk搜集的开源项目github上google账号github上google samplesandroid ui开源项目的搜集2015google io大会d
2016-05-05 20:10:30
377
原创 使用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
1933
翻译 android中进程优先级问题
学习Android最好的途径当然是强大的官方文档了,其中在Processes and Threads一节中对于进程生命周期淘汰优先级,有着详细的介绍。就不给大家转帖了,直接放译文吧,如下: Android系统会尽量维持进程的存在,但毕竟资源有限,当系统资源告急的时候会淘汰一部分进程。淘汰顺序的凭据就是系统进程的优先级了,优先级越高越不容易被杀死,反之亦然。系统总共为进程分了五个优先级,如下 一、
2016-05-01 15:51:52
349
原创 算法(五)
利用递归来实现栈的倒序//这个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
350
原创 算法(四)
顺时针旋转矩阵 [[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
307
原创 算法(3)
压缩字符串比如fffff压缩成5f 预判断下一个字符是否与前一个相等,如果相等则进行计数,不等则直接放到新的数组中,注意判断计数值是否大于1来判断是否字符重复。还要记得将计数器的值还原public String compressChar(char[] a){ if(a==null||a.length==1) { return a.toString();
2016-04-29 21:40:10
259
原创 字符相关算法(二)
将字符串中所有的*移动到左边 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
264
原创 字符相关算法
字符串全组合 使用位图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
299
原创 基本排序算法
二分查找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
309
原创 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
506
原创 异步消息处理线程
普通的线程执行完run()方法线程就会结束,异步消息处理线程是指,线程启动后会进入无限循环体中,每循环一次就会从消息队列中取出一条消息,并且回调消息处理函数。执行完一条消息后继续循环。如果消息队列为空线程就会暂停,直到消息队列中有新的消息一般实现每个异步线程内包含一个消息队列,先到的消息先被处理线程的执行体中使用while(true)循环,不断的从消息队列中取出消息,并根据消息来源,回调相应的
2016-03-28 11:13:03
558
原创 java详解单例模式
简介 单例模式要求某个类只有一个实例变量。只有类提供了一个接口来获得类的唯一实例。所以不允许用户来创建实例。可想而知,类的构造函数只能由类本身来调用。所以类构造函数是private的。因为构造函数是private的。上面提到的获得类的唯一实例的接口肯定是static的。除了基本的要求外。合格的单例模式必须确保多线程下单例类的实例只有一个。 例如在android中ImageLoader应该是
2016-03-22 18:57:55
246
原创 java线程研究
线程的状态 创建状态:准备好了一个线程对象 就绪状态:调用了start()函数,等待cpu的调度 执行状态:运行了run()函数 暂停状态:暂停执行任务,可能交出cpu资源 终止状态:线程被销毁 一些常用的函数 Thread类的currentThread()函数返回代码段正在被哪一个线程调用 Sleep()让当前正在执行的线程休眠指定的毫秒数。这个“正在
2016-03-21 15:18:37
317
原创 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
325
原创 浅析android中AsyncTask
作用 android是单线程模型。如果在UI主线程中执行耗时操作。可能导致ANR(应用无响应)。系统就会弹出一个ANR对话框。用户选择等待或者离开应用 注意:ANR出现场景: 主线程被IO操作(4.0以后主线程中不允许进行网络IO操作)阻塞。主线程中进行耗时的操作。主线程中进行错的操作,如Thread.wait Thread.sleep Android系统会监视应用响应情况:如果
2016-03-21 00:19:15
436
原创 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
874
原创 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
258
原创 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
287
原创 理解view
layoutInflaterlayoutInflater是用来加载布局的,其实setContentView()也是调用layoutInflater来加载布局的 1.LayoutInflater layoutInflater=LayoutInflater.from(context); 2.LayoutInflater layoutInflater=(LayoutInflate
2016-03-19 13:24:26
313
原创 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
240
原创 应用层杂谈
应用层应用程序体系结构(c/s,p2p)主流 c/s:服务器总是打开,客户端打开或不打开 服务器有固定的ip地址 主机群集创建虚拟服务器 p2p:文件分发,文件搜索/共享,因特网电话 进程通信,不通端系统进程通过网络交换报文来相互通信 进程与计算机网络之间的接口:套接字(程序进程和运输层协议的接口) 可用吞吐量:发送进程能够想接受进程提供的交付比特的速率 运输层
2016-03-19 09:43:46
335
原创 docker入门
docker中基本概念 Docker 一款轻量级容器管理引擎,由 Docker Daemon、Docker Client 组成。Docker Daemon Docker 架构中常驻后台的系统进程,负责接收处理用户发送的请求和管理所有的 Docker 容器,所谓的运行 Docker 即代表运行 Docker Daemon。Docker Client Docker 架构中用
2016-03-18 19:34:41
307
原创 java基础
字节码 是Java 编译之后的 的代码 是为了让JVM执行的 jar可以分为 可执行的 和不可执行的 java -jar Test 可以直接运行可执行的 jar包 那些不可执行的 你看的最多的 就是 像JRE这样的依赖包 类之间关系 使用,聚合,继承 class A {} class B extends A//继承 是的关系 { A
2016-03-18 17:20:52
221
原创 http请求
http是超文本传输协议。目的是保证客户端和服务器端的通信get和post get和post是最常用的http方法。两者有以下区别: get是从指定的资源请求数据post是向指定的资源提交要处理的数据http的状态码: http中其他的一些方法get 类比数据库的话get方法相当于select。索引相应的资源put 相当于数据库的update,用来向已知的资源发出更改请求
2016-03-18 17:06:10
286
原创 TCP和UDP
Tcp(传输控制协议)和udp(用户数据报协议)是传输层的协议Tcp和Udp之间的区别tcp面向连接,udp是无连接的协议 tcp三次握手,四次挥手 首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。 四次挥手:中断请求可以是cli
2016-03-18 14:26:44
362
原创 计算机网络基本知识
TCP IP 是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。预备知识ip地址 网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32bit 的数字,被 . 分成 4 组,例如,255.255.255.255 就是一个 IP 地址。有了 IP 地址,用户的计算机就可以发现并连接互联网中的另外一台计算机。域名
2016-03-18 13:47:27
452
原创 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
539
原创 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
309
原创 java内存相关知识
java虚拟机会将其管理的内存划分为不同的数据区域 程序计数器:该程序计数器与cpu中的程序计数不同,java虚拟机在自己的内存中设立一片区域来模拟cpu程序计数器。虚拟机规定每一个线程都有自己的程序计数器。其作用是用来指向正在执行的字节码地址。 堆:jvm启动就创建了堆内存区,堆是线程共享的运行时内存区域,也是供所有类实例和数组对象分配内存的区域。它存储了被内存管理器监管的对象
2016-03-17 19:29:20
343
原创 关于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
343
空空如也
spring 配置数据源出问题
2015-04-27
配置bean不知道为什么出现问题
2015-04-16
android 嵌套布局出现width问题 不知n道什么原因
2015-03-25
增添一个系统调用,我的内核版本是linux3.13.0-46-generic.
2015-03-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人