C++之numeric_limits函数详解
[TOC]
概述C++ 可以通过 std::numeric_limits 类模板来获取类型的最大值和最小值等,如:
123456789101112#include <iostream>#include <limits> // std::numeric_limitsusing namespace std;int main(int argc, char *argv[]) { std::cout << "long long max" << std::numeric_limits<long long>::max() << std::endl; std::cout << "long long min" << std::numeric_limits<long long>::min() << std::endl; std::cout << "int max" << ...
XCode使用基础教程学习
[TOC]
概述切换代码编辑区主题
Android性能优化之电量优化基础
文章参考:https://juejin.cn/post/7165802603870158855
概述耗电原理我们先了解一下Android系统是如何进行耗电的统计的,最精确的方式当然是使用电流仪来进行统计,但是正常状态下手机硬件不支持,所以系统统计耗电时,使用的基本是模块功率X模块耗时这个公式来进行的,但不同的模块还是会有一些差别。这种统计方式没法做到非常的精确,但是也基本能反应出各应用电量的消耗大小。
我们先来看看模块功率,每个模块的耗电功率都是不一样的,以计算方式来分,又分为下面三类
第一类是Camera、FlashLight、MediaPlayer等一般传感器或设备的模块的模块。其工作功率基本和额定功率保持一致,所以模块电量的计算只需要统计模块的使用时长再乘以额定功率即可。
第二类是Wifi、Mobile、BlueTooth这类数据模块。其工作功率可以分为不同的档位,比如,当手机的 Wifi 信号比较弱的时候,Wifi 模块就必须工作在比较高的功率档位以维持数据链路,所以这类模块的电量计算有点类似于我们日常的电费计算,需要 “阶梯计费”。
第三类是屏幕,CPU模块。CPU ...
Java并发集合类之CopyOnWriteArrayList学习
[TOC]
概述从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite容器非常有用,可以在非常多的并发场景中使用到。
CopyOnWriteArrayList是ArrayList的线程安全版本,从他的名字可以推测,CopyOnWriteArrayList是在有写操作的时候会copy一份数据,然后写完再设置成新的数据。CopyOnWriteArrayList适用于读多写少的并发场景。
那么什么是Copy-On-Write
Copy-On-Write顾名思义,在计算机中就是当你想要对一块内存进行修改时,我们不在原有内存块中进行写操作,而是将内存拷贝一份,在新的内存中进行写操作,写完之后呢,就将指向原来内存指针指向新的内存,原来的内存就可以被回收掉嘛!
CopyOnWriteArrayList源码add()方法1234567891011121314151617181920 /** * Appends the specified elemen ...
Java自动装拆箱及常见风险点的理解
概述1、什么是自动拆装箱?
先说说什么是自动拆箱装箱吧??
自动拆装箱在 Java5(就是Java1.5,后边改了命名) 中被引入,说白了,就是个语法糖。
自动装箱就是编译器自动将基础类型值转换成对应的包装类对象,比如将int的变量转换成Integer对象,这个过程叫做装箱;反之将Integer对象转换成int类型值,这个过程叫做拆箱。
2、基本类型与引用类型
稍有 Java 基础的同学都应该知道 Java 的数据类型,大的分类就分为基础类型与引用类型。
基础类型又能分为我们俗称的四类八种,分别为:
四种整型:byte,short,int,long
他们的区别是所能存储的数据的长度不同,也就是说他们在内存中分配的内存长度不同
两种浮点类型
32 位的单精度浮点 float,64位双精度浮点数double
1种Unicode编码的字符单元 char
最后就是boolean,真值布尔类型
与我们今天主题相关的重点是:类中基础类型的成员是存储在栈内存中的,在对象创建的时候就会被初始化,无论你用或不用,他都会被赋予默认的初始值,比如 int 类型,就是 ...
判断Android应用是否为设备启动后首次运行
[TOC]
概述Android系统中的时间
判断Android应用是否为设备启动后首次运行
[TOC]
文章参考:https://www.cnblogs.com/andy-songwei/p/10784049.html
文章参考:https://www.codenong.com/cs106221500/
概述 JDK提供了两个方法,System.currentTimeMillis()和System.nanoTime(),这两个方法都可以用来获取表征当前时间的数值。但是如果不仔细辨别这两个方法的差别和联系,在使用当中也很容易出错。笔者在前不久的工作当中使用System.currentTimeMillis()时就踩了一个大坑,后来在查明System.currentTimeMillis()和System.nanoTime()的特性后,才用System.nanoTime()来填了这个坑。本文,笔者就以自己的踩坑和填坑经历来介绍一下这两个方法。
文章的开头,笔者先描述一下自己前不久工作当中碰到的一个bug,分析过程以及解决办法。
1、问题描述
当手机按power键亮屏时,会调用人脸解锁功能来解锁手机。如果高频率不停地按power键,人脸解锁功能会被不停地调用,这样会产生很多 ...
C++之基础调试功能学习
[TOC]
概述文章参考:https://github.com/sogou/workflow
GDB 模式下的应用
1info sharedlibrary
C++异步调度框架Workflow的简介
[TOC]
文章参考:https://github.com/sogou/workflow
概述Workflow 异步调度框架
Clion调试功能使用指南
[TOC]
概述文章参考:https://www.jetbrains.com/help/clion/core-dump-debug.html#settings