自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bobolan

记录、学习、分享

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

原创 如何通过adb命令查找android应用进程中包含的所有线程?

2、根据pid查询出当前进程所有的线程。1、根据应用包名查找对应的pid。

2024-05-21 08:27:37 61

原创 面向对象的四大特性:封装、抽象、继承、多态

封装主要讲如何隐藏信息、保护数据,那抽象就是讲如何隐藏方法的具体实现,让使用者只需要关心方法提供了哪些功能,不需要知道这些功能是如何实现的。抽象可以通过接口类或者抽象类来实现,但也并不需要特殊的语法机制来支持。抽象存在的意义,一方面是提高代码的可扩展性、维护性,修改实现不需要改变定义,减少代码的改动范围;另一方面,它也是处理复杂系统的有效手段,能有效地过滤掉不必要关注的信息。

2023-11-30 08:00:00 510

原创 Android Studio Error “Unsupported class file major version 61“---异常信息记录

问题出在JAVA 17上,并且使用的Gradle JDK是:Android Studio java home版本17.0.1将其更改为:Android Studio默认JDK版本11.0.10 即可解决。

2023-11-18 08:00:00 1638 1

原创 MAC 如何解决GitHub下载速度慢的问题

解决github下载速度慢的方法很多,本文主要介绍通过Git镜像的方式解决下载慢的问题。主要步骤有:1、找到gitconfig文件, 2、通过git命令查看当前生效的config 配置 3、使用git config命令编辑并添加国内镜像源。

2023-09-28 17:37:04 1480

原创 Android Studio log的快捷键和使用

输入logi,然后按下Tab键,会自动补全一条info级别的打印日志。输入logw,按下Tab键,会自动补全一条warn级别的打印日志,以此类推。

2023-08-01 07:00:00 225 1

原创 Android 四大组件之广播

在Android中, 什么是广播?、系统广播、自定义广播、本地广播、广播的注册

2023-07-09 15:14:09 4034 5

原创 类与类之间的6种交互关系

一、概述类与类之间都有哪些交互关系呢?UML 统一建模语言中定义了六种类之间的关系。它们分别是:泛化、实现、关联、聚合、组合、依赖。二、详解1. 泛化(Generalization)可以简单理解为继承关系。具体到 Java 代码就是下面这样:public class A { ... }public class B extends A { ... }2. 实现(Realization)一般是指接口和实现类之间的关系。具体到 Java 代码就是下面这样:public interface A

2022-01-08 18:05:14 1188

原创 结构化思维

什么是结构化思维?那么到底是什么是结构化思维呢?简单来说,结构化思维的定义就是:逻辑+套路。表达要有逻辑所谓逻辑是指我们的结构之间必须是有逻辑关系的。例如,你说话的时候用“第一、第二、第三”这个逻辑顺序是合理的,但是,用“第一,第二,第四”就会显得很奇怪。当然,即使你用了”一、二、三”,也不一定就意味着你的内容有逻辑关系。想让内容有逻辑关系,我们要学会四种组织思想的逻辑关系:1)演绎(因果)顺序:“大前提、小前提、结论”的演绎推理方式就是演绎顺序。比如,经典三段论:所有人都要死,苏格拉底是人,苏格拉

2021-01-31 12:47:11 932

原创 重构方法_在对象之间搬移特性

Move Method(搬移函数)Move Field(搬移字段)EXtract Class(提炼类)Inline Class(将类内联化)Hide Delegate(隐藏“委托关系”)Remove Middle Man(移除中间人)Introduce Foreign Method(引入外加函数)Introduce Local Extension(引入本地扩展)...

2021-01-23 12:29:54 234

原创 重构方法_重新组织函数

概述1、重构手法中很大一部分是对函数进行整理,使之更恰当地包装代码。几乎所有时刻,问题都源于Long Method(过长函数)。这很讨厌,因为它们往往包含太多信息,这些信息又被函数错综复杂的逻辑掩盖,不易鉴别。对付过长函数,一项重要的重构手法就是Extract Method(提炼函数),它把一段代码从原先函数中提取出来,放进一个单独函数中。Inline Method(内联函数)正好相反:将一个函...

2021-01-17 17:45:59 1511

原创 设计模式_单例模式

单例模式概述1、核心:保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。2、单例模式的优点:1)由于单例模式只生成一个实例对象,减少了系统的性能开销。当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决2)单例模式可以在系统设置全局的访问点,优化共享资源的访问,例如可以设计一个单例类,负责所...

2020-02-22 09:49:53 106

原创 重学JAVA_字符集与编码

概念解释编码:在Java中将字符转化为字节的过程称为编码。解码:在Java中将字节转化为字符的过程称为解码。补充(定义):编码是信息从一种形式转化为另一种形式的过程; 解码则是编码的逆过程。...

2020-01-23 15:26:11 255

原创 UML使用

在线UML博客:https://blog.csdn.net/chktsang/article/details/79697747UML在线编辑:https://online.visual-paradigm.com/cn/diagrams/features/uml-tool/UML中描述对象和类之间相互的关系,常用以下几种方式表示:1、依赖(Dependency):表示的是类之间的调用关系。UM...

2020-01-16 20:54:31 489

原创 Android内存泄漏分析

摘要:内存泄漏,即Memory Leak,指程序中不再使用到的对象因某种原因而无法被GC正常回收。它会导致一些不再使用到的对象没有及时释放,这些对象占据着宝贵的内存空间,很容易导致后续分配内存的时候,内存空间不足而出现OOM(内存溢出)。无用对象占据的空间越多,那么可用的空闲空间也就越少,GC就会更容易被触发,GC进行时会停止其他线程的工作,因此有可能造成卡顿等情况。Java内存分配策略Ja...

2020-01-09 22:01:53 124

原创 重学JAVA_IO流——File类

概述

2020-01-09 21:59:32 142

原创 Git版本控制工具——常用命令(二)

安装git和基本用法1、从git 官网下载程序,默认安装即可。2、设置账号和邮箱关联,账号和邮箱可以是码云、GitLab…的账号都行:$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"3、选择合适地方,创建空目录:$ m...

2019-10-24 21:58:16 144

原创 操作系统概述

操作系统(Operating System, OS)是计算机系统中必不可少的核心系统软件,其他软件(如编辑程序、汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件)是建立在操作系统的基础上,并在操作系统的统一管理和支持下运行。操作系统是用户与计算机之间的接口,用户可以通过操作系统提供的功能访问计算机系统中的软硬件资源。一、操作系统的作用、特征与功能操作系统有效地组织和管理系统中的...

2019-10-21 23:00:22 367

原创 单元测试

一、什么是单元测试?单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。二、单元测试的好处?1)减少bug一个机器,由各种细小的零件组成,如果其中某件零件坏了,机器运行故障。必须保证每个零件都按设计图要求的规格,机器才能正常运行。一个可单元测试...

2019-10-18 23:41:04 15391 1

原创 Thread类的使用

一.线程的状态在学习Thread类中的具体方法之前,先了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行某个子任务时...

2019-10-17 22:36:02 209

原创 Git版本控制工具——背景介绍(一)

一.Git是什么版本控制工具!Git是目前世界上最先进的分布式版本控制系统(没有之一)。这个软件用起来就应该像这个样子,能记录每次文件的改动这样,你就结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪。二、Git发展史cvs --svn在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!你也许会想,为什...

2019-10-16 22:52:54 426

原创 MessageQueen源码分析

一、由于MessageQueen是用来存放Message的,那么是如何存储Message的呢?由于Handler使用Post()方法将Message传递到MessageQueen中,在MessageQueen中会使用enqueueMessage()方法存储Message,其实现的方式是通过单链表的数据结构来存储消息列表boolean enqueueMessage(Message msg, lo...

2019-10-15 23:02:50 377

原创 Handler源码分析

一、Handler的创建Handler的创建会关联一个Looper对象,而Looper对象是关联着MessageQueen对象,所以在Handler创建时候,取出Looper和MessageQueenpublic Handler(Callback callback, boolean async) { ... //取出Looper mLooper = Looper.myL...

2019-10-15 22:38:35 187

原创 Looper源码分析

一、为什么Handler可以在主线程中直接可以使用呢?因为主线程(UI线程)的Looper在应用程序开启时创建好了,即在ActivityThread.main方法中创建的,该函数为Android应用程序的入口public static void main(String[] args) { ... Process.setArgV0("<pre-initialized>");...

2019-10-14 23:16:29 283

原创 IO流的概念和工作原理

流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出在IO流里,输入输出分为4步:格式化/解析,缓冲,编码转换和传递。格式化/解析:在内部数据表示(以字节为单位)与外部数据表示(以字符为单位...

2019-10-13 22:54:05 951

原创 CSDN Markdown编辑器——文本颜色、大小、字体设计

博客文本设计参考字体效果十六进制颜色值背景效果Darkorange#FF8C00 关键词DodgerBlue#1E90FF 概念定义Blue#0000FF rgb(0, 0, 255)Purple#800080 rgb(128, 0, 128)Green#008000 rgb(0, 128, 0)Lime#00F...

2019-10-13 16:59:37 172

原创 Java学习路线——Java基础

Java基础第一部分:Java开发介绍DOS常用命令JVM、JRE、JDK之间的关系Java开发环境的搭建:安装JDK,配置环境变量Java入门程序(Java的开发流程)Java的注释,标识符、标识符的命名规范Java基本数据类型变量和常量的定义及初始化Java的运算符运算符的优先级Java分支语句之if…else循环的嵌套...

2019-10-12 22:59:46 106

原创 Android消息机制Looper、Handler、MessageQueen(一)

一、消息机制相关概念的解释1、主线程(UI线程)定义:当程序第一次启动时,Android会同时启动一条主线程(Main Thread)作用:主线程主要负责处理与UI相关的事件2、Message(消息)定义:Handler 接收和处理的消息对象(Bean对象)作用:通信时相关信息的存放和传递3、ThreadLocal定义:线程内部的数据存储类作用:负责存储和获取本线程的Looper...

2019-10-11 23:01:03 197

原创 网络编程--什么是Socket?

序言传输层实现端到端的通信,因此,每一个传输层连接有两个端点。那么,传输层连接的端点是什么呢?不是主机,不是主机的IP地址,不是应用进程,也不是传输层的协议端口。传输层连接的端点叫做套接字(socket)。根据RFC793的定义:端口号拼接到IP地址就构成了套接字。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端...

2019-10-10 23:02:10 773

原创 进程/线程

什么是进程?什么是线程?两者间的关系是怎样的?

2019-10-09 23:10:33 93

原创 接口和抽象类

接口和抽象类1、抽象类要被子类继承,接口要被类实现。2、接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。4、接口是设计的结果,抽象类是重构的结果。5、抽象类和接口都是用来抽象具体对象的,但是接口的抽象级别最高。6、抽象类可以有具体的方法和属性,接口只能有抽象方法和不可变常量。7、抽象类主要用来抽象类别...

2019-10-05 21:15:19 258

原创 java源文件运行机制

java运行机制

2019-05-19 20:48:59 286

原创 Fragment详解

基本概念Fragment,简称碎片,是Android 3.0(API 11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。Fragment的优点模块化(Modularity):我们不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。可重用(Reusability):多个Activity可...

2019-05-12 16:34:50 226

转载 Eclipse使用快捷键

批量修改 ALT+SHIFT+R快速输入主方法 先敲入main 再敲 alt+/快速输入System.out.println 先敲入syso 再敲alt+/ 快速输入for 先敲入for 再敲alt+/查看java源代码 JDK里提供的类,比如String,Integer,System都是开源的,免费提供其源代码 可以很简便的通过eclipse就...

2018-08-05 22:47:19 119

转载 Map中的分拣存储思想

分拣存储的思想在Map中,一个键对应一个值,但是如果要一个键对应多个值(也就是一对多存储),你们就需要用到分拣存储的思想了。比如说:快递公司在分拣快递的时候,快递有北京的、上海的、广州的、深圳的等等,来自上海的快递肯定不止一个啦。那么,这就存在一个(1:N)的关系了,要将这些数据存放到 Map里,就需要分拣存储的思想咯,也就是(1:N); 1——&gt;key——&gt;上海或者北京的袋...

2018-08-05 19:10:32 198

空空如也

空空如也

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

TA关注的人

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