内存泄漏/内存溢出
一、内存泄漏 & 内存溢出 在软件开发与运行过程中,内存管理是一个至关重要的环节。然而,由于各种原因,如程序设计的缺陷或资源管理的不当,可能会导致两种常见的内存问题:内存泄漏(Memory Leak)和内存溢出(Memory Overflow)。各种语言/操作系统上预防和解决也有不同方式方案,以下是关于两者概念的详细介绍:
内存泄漏: 内存泄漏指程序中已经不再需要使用的内存没有被释放,从而造成内存资源浪费和程序性能下降。其特征是程序使用内存总量持续增加,直到程序崩溃或者系统强制关闭。
原因:
资源未被正确释放:程序动态分配了内存资源,但没有及时释放,导致内存泄漏。
垃圾回收机制失效:在使用Java等高级语言编写的程序中,垃圾回收机制负责自动释放不再使用的内存资源。但如果程序员在编写代码时存在逻辑错误,就有可能导致垃圾回收机制失效,进而导致内存泄漏。
循环引用:在使用面向对象编程语言时,两个对象之间可能会发生相互引用的情况。如果这种引用形成了一个环路,就会导致这些对象永远无法被释放,从而产生内存泄漏。
影响:
系统崩溃:内存泄漏会导致系统可用内存不足,从而造成 ...
Android系统进程-思维构建
init进程概述init进程并非鼻祖进程, 真正的鼻祖是进程id为0的 swapper进程(idele进程).
init的进程(pid=1), 是Android用户空间所有进程的鼻祖, 还有一个兄弟进程kthread进程(pid=2), 是Android内核空间所有进程的鼻祖.
init会 fork/clone 多个子进程, vold\adbd\lmkd\logd\surfaceflinger\servicemanager\zygote(systemserver(AMS/WMS/PMS)/launcher/phone/camera)
surfaceflinger进程作用是:把多个来源的图像数据,如需合成则进行合成 否则直接提交给display驱动进行显示
lmkd进程 Low Memory Killer Daemon低内存杀手守护进程, 查杀进程的。会监控内存的使用情况,当达到一定阀值的时候,会去杀掉一些处于后台的、优先级低的、占用内存高的进程, 是一个守护进程,会在后台默默的为内存的健康保驾护航.
l ...
并行&并发 静心理解
并行 & 并发并行 : 并行是指多个任务或者操作再同一时间点上同时执行.(前提是在支持多处理器机器及调度系统上)
并发 : 并发是指多个任务或操作在同一时间段内交替执行, 快速地在多个任务之间切换, 看起来像是同时进行的.
并行 更依赖硬件TAG: 物理分离, 资源独立
在每个核上独立执行一个任务, 更依赖硬件
并发 更依赖系统TAG: 资源共享, 时间片, 上下文切换
操作系统通过时间分片实现并发, 快速的在多个任务之间切换, 每个任务获得一小段CPU时间.
从物理层面了解并行: 多个任务在物理上同时进行, 需要多个处理器或多核处理器来实现
并发: 多个任务在逻辑上同时进行, 实际是在单个处理器上通过快速切换来实现
问题并行: 包括负载均衡、通信开销、数据一致性等。需要处理任务之间的同步和通信问题。此外,并行程序可能受到资源限制(如内存带宽、网络延迟等)的影响,导致性能不如预期。
并发: 包括死锁、竞态条件、资源同步等。可以提高程序的响应性和吞吐量,但过多的上下文切换会增加系统开销,降低整体性能。
Android Rust NDK
一、集成Rust&NDK开发
创建 moudle [:encrypt] 将完成Rust&NDK
当前项目 build.gradle.kts 中引入插件
Rust Android Gradle Plugin
id(“org.mozilla.rust-android-gradle.rust-android”) version “0.9.3” apply false
1234567// Top-level build file where you can add configuration options common to all sub-projects/modules.plugins { id("com.android.application") version "8.1.0" apply false id("org.jetbrains.kotlin.android") version "1.8.10" apply false id("c ...
国密汇总
国产密码算法包括SM1、SM2、SM3、SM4和SM7。SM1 - 对称算法
分组长度和密钥长度均为128位.
该算法目前尚未公开.
该算法的安全性和软硬件实现性能与AES算法相当.
调用加密芯片的接口进行使用.
SM2 - 非对称密钥算法
加密强度为256位
该算法是一种基于椭圆曲线(ECC)
SM3 - 消息摘要
https://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml
密码杂凑算法消息分组长度 为 512b, 摘要长度 256b
该算法为不可逆的算法, 具体算法是保密的。
执行过程 = > 消息填充、消息扩展、迭代压缩
SM4
一种 Feistel 结构的分组密码算法,其分组长度和密钥长度均为128bit
该算法为对称加密算法,其加密强度为128位
SM7该算法是一种分组密码算法,分组长度为128比特,密钥长度也为128比特。
SM7适用于非接触式IC卡,应用包括身份识别类应用(门禁卡、工作证、参赛证),票务类应用(大型赛事门票、展会门票),支付与通卡类应用(积分消费卡、校园 ...
思考-写怎样的代码看着舒服(Java/Kotlin)
看整齐条理的类文件代码 真的会少几条皱纹
在想写怎么样的代码会舒服
深思熟虑问过各家AI后进行整合编码约定
目前对应代码量比较多的是Java\Kotlin, 算是阅读量和编写量最多的语言, 汇总如下
Java Class Layout属性变量
静态/常量变量
私有/公共成员变量(非静态变量)构造
构造方法方法
单例方法(如果有)
公共/私有方法(非静态)
静态方法内部类
静态/内部类(如果有)
Kotlin Class Layout
https://kotlinlang.org/docs/coding-conventions.html#class-layout
Property declarations and initializer blocks属性声明和初始值设定项块
Secondary constructors辅助构造函数
Method declarations方法声明
Companion object伴随对象
Kotlin Exception Handling
1. 普通处理异常
这种是普通的写法,明了的处理异常Kotlin也支持多个catch捕获
1234567891011try { throw Throwable("Diy Exception")}catch (e: Exception) { print("Exception-> ${e.message}")}finally { print("finally")}
2. inline模式处理异常
封装处理不会导致程序异常终止, 易于使用, 提供代码质量和开发效率吐槽一点 kotlin 不支持异常检查很不好, 需要人去识别可能出现的各种异常, 在对接各类功能接口很容易被忽略异常
123456789101112131415161718192021222324fun main() { var p = Person() p.name = null nameCatch(action = { ...
Flutter 记录
check 环境
1flutter doctor
同意 Android 协议
1flutter doctor --android-licenses
Android Scrcpy Frp 远程操控/调试Android手机
1234567891011121314151617181920212223242526272829303132333435361. 安装msys2https://www.msys2.org/2. 安装环境参考文档https://blog.csdn.net/u012787710/article/details/130430216pacman -S mingw-w64-x86_64-SDL2pacman -S mingw-w64-x86_64-ffmpegpacman -S mingw-w64-x86_64-libusbpacman -S mingw-w64-x86_64-makepacman -S mingw-w64-x86_64-pkg-configpacman -S mingw-w64-x86_64-meson3.pwdgit clone https://github.com/Genymobile/scrcpy.git4.# 进入代码仓cd./ scrcpy/# 编译scrcpy-server 如果慢 跳过 下载编译好的 https://github.com/Genymobile/s ...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment