自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 android软件架构

系统应用:Android系统还包括了一些系统应用,这些应用程序是Android系统的一部分,用于提供系统级的功能和服务,如电话、短信、联系人、日历、设置等。提供统一的接口:硬件抽象层为每个硬件设备定义了一组标准的API接口,这使得上层的应用程序和系统组件可以使用统一的方式来访问和控制各种硬件设备。总之,硬件抽象层在Android系统中起到了桥梁的作用,它提供了一种统一的方式来访问和控制各种硬件设备,使得Android系统能够在不同的硬件平台上运行,并且为上层的应用程序和系统组件提供了简单和统一的硬件接口。

2023-09-09 17:15:32 2531

原创 java 锁相关知识总结

synchronized是一个同步关键字,是可重入的、独享的、悲观锁、非公平锁,在某些多线程并发改变临界资源(共享数据)场景下,如果不进行同步会导致数据不安全,而synchronized关键字就是用于代码同步。synchronized修饰普通同步方法锁对象是当前实例对象;synchronized修饰静态同步方法锁对象是当前的类Class对象;synchronized修饰同步代码块synchronized修饰普通同步方法锁对象是当前实例对象;synchronized修饰静态同步方法。......

2022-07-26 22:36:35 222 1

原创 Java 线程池知识总结

​ 在程序中经常需要用到多线程处理一些任务,这时候不建议单纯使用Thread或者实现Runnable接口的方式来创建线程,因为创建和销毁线程、和线程的上下文切换是需要耗费资源的,另一方面不加限制的创建线程可能导致系统资源耗尽。所以需要使用多线程的场景建议使用线程池,使用线程池会带来以下好处:创建一个固定大小的线程池,因为采用无界的阻塞队列,所以实际线程数量永远不会变化,适用于负载较重的场景,对当前线程数量进行限制。(保证线程数可控,不会造成线程过多,导致系统负载更为严重)使用的构造方式为new Threa

2022-06-27 00:02:53 751

原创 volatile 可见性与指令重排

​ 现在的CPU都是多核,程序可以在多核上并行执行,指令在执行时,数据会从主存拷贝好CPU的各级缓存上,执行完之后在写回到主存上,此时同一个变量可能在两个核上被操作,该变量在两个拷贝分布在两个核上,此时就会出现问题,比如简单的自增操作,就会是你做你的,我做我的,最后结果会偏离预期。​ 使用volatile修饰共享变量后,每个线程要操作变量时,会把变量拷贝到缓存中,当线程操作变量副本写回主存后,会通过CPU总线嗅探机制告知其他线程该变量副本已经失效,需要从主存中重新获取。​ 总线嗅探机制:CPU和内存有极大速

2022-06-19 00:06:08 389

原创 双重校验锁单例为什么这样写

详解双重校验锁的实现

2022-06-10 00:28:43 96

原创 二叉树前中后序遍历

先序遍历递归实现class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> res = new ArrayList<Integer>(); preorder(root, res); return res; } public void preorder(TreeNode root, L

2021-08-20 20:34:40 397

转载 设计模式介绍

设计模式简介设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大

2021-07-10 23:25:58 275

原创 重构之重构方法

坏味道与重构手法速查表坏味道(中文)常用重构异曲同工的类改变函数声明(124),搬移函数(198),提炼超类(375)注释提炼函数(106),改变函数声明(124),引入断言(302)纯数据类封装记录(162),移除设值函数(331),搬移函数(198),提炼函数(106),拆分阶段(154)数据泥团提炼类(182),引入参数对象(140),保持对象完整(319)发散式变化拆分阶段(154),搬移函数(198),提炼函数(106),提炼类(182)

2021-07-10 17:27:28 275

原创 重构之坏味道

坏味道神秘的命名命名是编程中最难的两件事之一,整 洁代码最重要的一环就是好的名字,所以我们会深思熟虑如何给函数、模块、变量和类命名,使它们能清晰地 表明自己的功能和用法。改名不仅仅是修改名字而已。如果你想不出一个好名字,说明背后很可能潜藏着更深的设计问题。为一个恼人的名字所付出的纠结,常常能推动我们对代码进行精简。重复代码如果你在一个以上的地点看到相同的代码结构,那么可以肯定:设法将它们合而为一,程序会变得更好。最单纯的重复代码就是“同一个类的两个函数含有相同的表达式”。这时候你需要做的

2021-07-10 16:34:18 403

原创 ContentProvide的生命周期

ContentProvide的生命周期https://blog.csdn.net/carson_ho/article/details/76101093定义 & 作用定义:即内容提供者,是 Android 四大组件之一作用:进程间 进行数据交互 & 共享,即跨进程通信原理ContentProvider的底层是采用 Android中的Binder机制具体使用关于ContentProvider的使用主要介绍以下内容:统一资源标识符(URI)定义:Uniform Reso

2021-07-03 11:49:49 779

原创 Service生命周期

Service的生命周期https://www.jianshu.com/p/8d0cde35eb10生命周期常用方法在Service的生命周期里,常用的有:4个手动调用的方法手动调用方法作用startService()启动服务stopService()关闭服务bindService()绑定服务unbindService()解绑服务5个自动调用的方法内部自动调用的方法作用onCreate()创建服务onStar

2021-07-03 11:41:15 209

原创 Binder系列1:初始Binder

初始BinderBinder 和 Linux其他IPC方式的对比Linux现有的所有进程间IPC方式:管道:在创建时分配一个Page大小的内存,缓存区大小比较有限消息队列:消息复制两次,额外的CPU小号,不适合频繁或信息量大的通信共享内存:无需复制,共享缓冲区直接附加到进程的虚拟进程空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;套接字:作为更通用的接口,传输效率低,主要用于不同机器或跨网络的通信;信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程

2021-07-03 11:28:21 128

原创 android工程师的四个阶段

android 四个阶段学习路线初级工程师Android入门的时候,需要有一本入门书,好好学习书中的内容,同时花一年时间把Android官方文档中的training和guide看一遍,同时通过写博客和记笔记的方式来做总结,建议让自己的每篇博客都有价值些。通过一年时间的学习,相信每个人都可以达到中级工程师的水平。技术要求:基本知识点,比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画等常见技术书籍推荐 《第一行代码 Android》、《疯狂Android》中

2021-06-23 22:55:58 114

原创 Activity生命周期

Activity生命周期activity从开始到结束的四个状态activity的生命周期activity的进程优先级activity的四个状态关于activity的四个状态:running-paused-stopped-killedrunning->当前显示在屏幕的activity(位于任务栈的顶部),用户可见状态。paused->依旧在用户可见状态,但是界面焦点已经失去,此Activity无法与用户进行交互。stopped->用户看不到当前界面,也无法与用户进行交互

2021-06-23 22:55:29 111

空空如也

空空如也

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

TA关注的人

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