- 博客(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
原创 二叉树前中后序遍历
先序遍历递归实现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关注的人