主页

死锁是指什么?

定义 死锁通常是指操作系统中进程的死锁,在多线程程序中也可能发现死锁。 多个进程同时获取系统资源,但是互不相让,造成都在等待,谁也不能继续住下运行,这种状态就称为死锁。 举例理解: 两个人相向而行(两个进程在运行) 正好面对面碰上(两进程均占有资源,并需要对方占有的资源,这里的资源即道路) 互不相让(都不愿意释放占有的资源) 两人都无法继续前进(死锁) 两人相互礼让,但恰好同时站在同一边让路,再次相让,仍是同一边,不断重复,最终还是无法前进(活锁) 四种必要条件 禁止抢占:系统资源不能被其他进程抢过去,只能由当前进程释放。 持有和等待:一个进程可以在等待的时候持有系统资源。 互斥:资源不能同时分配给多个进程。 循环等待:...

阅读更多

C++ 100 问

受困于面试中对于基础知识的回答都不尽人意,于是写总结,以求形成自己的理解。 进程与线程的区别? 死锁是指什么? 怎样检测内存泄露? 代码在内存中的什么位置? 多核与多 CPU

阅读更多

进程与线程的区别?

什么是进程? 众所周知,单个 CPU 一次只能运行一个任务,这里的单个任务就是指进程。 执行单个任务时,除了 CPU 外,还必须有构成这个任务的的执行环境,称为程序上下文(Context)。 一个任务的执行其实包含 3 个步骤:CPU 加载上下文、CPU 执行、CPU 保存上下文,这些步骤的耗时总和就是进程。 什么是线程? 线程包含在进程中,是进程中的实际运作单位。 通俗来讲,一个任务(进程)可能会有多个子任务(线程),比如你可以在 IDE 中进行代码编写、代码分析、智能提示等很多工作同时进行。 在多核或多 CPU 上使用多线程能提高程序的执行吞吐率。在单核、单 CPU 的计算机上,使用多线程通常能够把耗时计算与人机交互分开来执行,从来不会让 GUI 程序卡死,提高程序的执...

阅读更多

C++ 中 const 的用法总结

修饰变量 内置类型 // 局部变量 const int a = 0; // 类的成员变量 class A { private: const int a; // 常对象成员只能在初始化列表中赋值 public: //A() : a(0) {}; // OK //A(int value) : a(value) {}; // OK A() { a = 0; // ERROR } }; 指针类型 // 指针指向的内容不可变 const int *p = 0; int p1; *p = 1; // ERROR p = &p1; // OK // 指针不可变 int* const p = 0; i...

阅读更多

Android 学习笔记 004:View.findViewById()、View Binding、Data Binding

仅作为学习记录,内容有待完善 findViewById 通过 findViewById 方法在 Activity 或者 Fragment 中引用布局中的视图。 Button myButton = (Button) findViewById(R.id.my_button); 这种方式引用布局有以下缺点: 布局中每一个用到的视图都需要通过 findViewById 实例化,代码重复 参数 id 可能写错,或者 id 不存在 类型转换可能写错 参数和类型转换只能在运行时检查出错误 View Binding 通过视图绑定,系统自动为 layout 文件生成绑定类,layout 中指定了 id 的视图都在会绑定类中实例化。 大多数情况下,视图绑定可以取代 f...

阅读更多

Android 学习笔记 003:关于 Context 的理解

仅作为学习记录,内容有待完善 官方文档定义 Interface to global information about an application environment. This is an abstract class whose implementation is provided by the Android system. It allows access to application-specific resources and classes, as well as up-calls for application-level operations such as launching activities, broadcasting and receivin...

阅读更多

Android 学习笔记 002:Activity 的生命周期

四种状态 Activity 整个生命周期可分为以下四种状态: 运行 暂停 停止 不存在 状态切换 Activity 状态切换时系统会进行相应方法的调用。 运行 & 暂停 运行 -> 暂停 onPause() 暂停 -> 运行 onResume() 暂停 & 停止 暂停 -> 停止 onStop() 停止 -> 暂停 onStart() 停止 & 不存在 停止 -> 不存在 onDestroy() 不存在 -> 停止 onCreate() ...

阅读更多

Android 学习笔记 001:Intent 的使用

是什么? Intent(意图) 是一个在组件之间进行消息传递的对象,不仅可用于应用间传递,还可用于应用内传递。 应用内信息传递主要有 3 种: 启动 Activity 启动服务 传递广播 使用方式 显式使用 一般用于同一应用内。 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); // public Intent(Context packageContext, Class<?> cls) startActivity(intent); 隐式使用 一般用于不同应用之间。 Intent intent = new Intent("com.example.ac...

阅读更多