- 博客(117)
- 资源 (2)
- 收藏
- 关注
原创 std::unique_ptr
std::unique_ptr是C++11提供的用于管理资源的智能指针,它的一个很重要的特性就是独享被管理对象指针所有权。也就是说,unique_ptr对象无法被赋值,只能移动。如下: auto p = std::make_unique<int>(); auto x = p; // 编译报错 auto q = std::move(p); // 所有权转移,q指向p之前指向的对象,p变成nullptrunique_ptr的定义如下:tem
2020-09-04 11:17:33
1555
原创 Camera Metadata原理
文章目录概述相关文件路径数据结构metadata关键函数接口allocate_camera_metadata (分配metadata)find_camera_metadata_entry(从metadata中根据tag查找value)add_camera_metadata_entry(增加tag和value到metadata)概述在Camera2 + HAL3的架构中,App --> Framework --> HAL通过metadata的方式来传递参数。metadata实际上就是一个参数对
2020-07-07 11:12:37
8717
10
原创 Android系统架构概览
在软件工程里面,没有一个中间层解决不了的问题。换句话说,就是"任何软件工程遇到的问题都可以通过增加一个中间层来解决"。Android系统基于这样一个分层的理念,自上而下将系统架构划分成了App Framework、Android System Service、HAL、Kernel这四个层次。
2019-10-31 07:34:03
685
原创 5、实现
文章目录条款26:尽可能延后变量定义式的出现时间条款27:尽量少做转型动作条款28:避免返回handles指向对象内部成分条款29:为“异常安全”而努力是值得的条款30:透彻了解inlining的里里外外条款31:将文件的编译依存关系降至最低条款26:尽可能延后变量定义式的出现时间std::string encryptPassword(const std::string& passwo...
2019-03-22 20:11:17
172
原创 4、设计与声明
文章目录条款18:让接口容易被正确使用,不易被误用条款19:设计class犹如设计type条款20:宁以pass-by-reference-to-const替换pass-by-value条款21:必须返回对象时,别妄想返回其reference条款22:将成员变量声明为private条款23:宁以non-member、non-friend替换member函数条款24:若所有参数皆需类型转换,请为此采...
2019-03-19 13:27:58
223
原创 3、资源管理
文章目录条款13:以对象管理资源条款14:在资源管理类中小心对copying行为条款15:在资源管理类中提供对原始资源的访问条款16:成对使用new和detele时要采取相同形式条款17:以独立语句讲newd对象置入智能指针条款13:以对象管理资源所谓资源,就是一旦使用,将来必须归还到系统。资源包括:内存、文件描述符、互斥锁等。以对象管理资源的核心是:使用RAII(Resource Acqui...
2019-03-14 13:13:47
303
原创 2、构造/析构/赋值运算
文章目录条款05:了解C++默默编写并调用哪些构造函数条款06:若不想使用编译器自动生成的函数,就该明确拒绝条款07:为多态基类声明virtual析构函数条款08:别让异常逃离析构函数条款09:绝不在构造和析构过程中调用virtual函数条款10:令operator=返回一个reference to *this条款11:在operator=中处理“自我赋值”条款12:复制对象时勿忘其每一个成分条...
2019-03-14 13:12:41
233
原创 1、让自己习惯C++
文章目录条款01:视C++为一个语言联邦条款02:尽量以const, enum, inline替换#define条款03:尽可能使用const条款04:确定对象被使用前已被初始化条款01:视C++为一个语言联邦C++是由下述四个次语言组成:C。C++支持面向过程编程,所用基础语法完全等同于C。Object-Orited C++。C++面向对象编程,级C with Classed。Tem...
2019-03-14 13:11:00
259
原创 Android 查看内存命令总结
文章目录内存相关概念解析dumpsys meminfoprocrankcat /proc/meminfofreeshowmapvmstat小结内存相关概念解析一个进程占用了多少内存,主要有下述四种说法:VSS(Virtual Set Size),虚拟内存。RSS + 未分配实际物理内存单个进程可访问的全部虚拟内存地址空间,其大小包括未实际申请的物理内存。RSS(Residen...
2019-03-14 12:33:03
6054
原创 一步一步解析google camera2 demo(四)
拍照1、给拍照按钮注册事件,onViewCreated()方法是Fragment加载布局(即onCreateView())完成后响应的。public void onViewCreated(final View view, Bundle savedInstanceState) { view.findViewById(R.id.picture).setOnClickListener(this);...
2019-03-04 15:58:27
995
原创 一步一步解析google camera2 demo(三)
三、起预览1、openCamera后,会响应CameraDevice.StateCallback的onOpened回调,拿到device,如下:/** * {@link CameraDevice.StateCallback} is called when {@link CameraDevice} changes its state. */private final CameraDevic...
2019-03-04 14:29:54
1096
原创 距1970的天数与年月日的转换算法
背景在日志系统中调用localtime来转换为用户可见的时间(即距1970-01-01的秒数转换为年月日时分秒),会低概率的出现异常。原因是localtime()这个函数是线程不安全的,函数返回一个指向struct tm结构体的指针,这个指针指向一个静态变量。所以在多线程下,会概率性导致踩内存问题。另外,虽然localtime_r()可以处理这个问题,但是localtime_r()的底层实现上...
2019-02-20 22:18:47
6782
原创 Android Camera2+HAL3架构
文章目录整体架构概述整体架构概述Android Camera2整体架构如下图:大致分为这几个部分:Application framework这一层是用于给APP提供访问hardware的Camera API2,通过binder来访问camera service。有两个主要的类:这一层是用于给APP提供访问hardware的Camera API2,通过binder来访问camera s...
2019-02-15 15:34:55
17072
10
原创 Android native Thread类解析
Android native的Thread类是Android提供的一个基础类,源码路径:system\core\include\utils\Thread.hsystem\core\libutils\Threads.cpp该类提供的基础功能涵盖了线程的生命周期:创建、运行、销毁。主要成员函数如下:线程创建通过执行run函数,默认只需要传入线程名作为参数:status_t Thread::...
2019-01-25 15:42:29
2715
原创 安装apue.h
下载: src.3e.tar.gz解压: tar xvf src.3e.tar.gz安装相应库: sudo apt-get install libbsd-dev进入到apue.3e目录,执行: makecp ./include/apue.h /usr/include/ cp ./lib/libapue.a /usr/local/lib/ 编译时链接到相应库: gcc -o 1-3 1-3
2017-05-30 13:59:09
3626
2
原创 <二> 搭建struts框架并实现简易登录
搭建框架使用myeclipse创建 Java Web 项目StructsDemo右键该项目MyEclipse -> Project Facets[Capabilities] ->Install Apache Struts(1.x) Facet WebRoot目录下新建 login.jsp, welcome.jsp, error.jsp<%@ page language="java" impor
2017-03-29 18:21:17
367
原创 <一> Struts 简介
概述Struts 为 Web 应用提供了通用的框架,让开发人员可以把主要精力集中在如何解决实际业务问题上,与此同时 Struts 框架也允许开发人员根据实际需要进行扩展和定制,从而可以更好的适应用户的需求。采用 Struts 可以简化遵循 MVC 设计模式的 Web 应用的开发工作,很好地实现代码重用,使开发人员从一些繁琐的工作中解脱出来,快速开发能够充分发挥 JSP/Servlet 优点、并具有强
2017-03-29 17:18:35
409
原创 sed 命令详解
简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。sed 的命令开始于单
2017-03-08 15:56:53
2480
原创 bios内存分布详解
概述计算机开机后的第一件事是读取ROM芯片中的bios,此时系统工作在实模式下,寻址范围只有1MB(0x00000 ~ 0xFFFFF)。 内存分布0x00000 ~ 0x9FFFF: 基本内存(640KB)0x00000 ~ 0x003FF: 中断向量表(1024B)0x00400 ~ 0x004FF: bios数据区(256B)0x00500 ~ 0x07BFF: 自由内存区0x07C
2016-12-07 14:58:27
8584
原创 Bash测试----test, [], [[]], (())
test 和 []test是一条内置命令, test 根据表达式expr 求值的结果返回 0(真)或 1(假),可以用echo $?查看返回的退出状态。[等价于test,即test expr 和 [ expr ] 是等价的。 test的三个基本作用是判断文件、判断字符串、判断整数。test中可用的比较运算符只有==和!=,两者都是用于字符串比较的,不可用于整数比较,整数比较只能使用-eq, -gt
2016-10-26 16:30:09
3608
原创 正则表达式详解
正则表达式是一种符号表示法,被用来识别文本中的模式。grepgrep [options] regex [file…]grep选项列表 例子ls /bin > dirlist-bin.txtls /usr/bin > dirlist-usr-bin.txtls /sbin > dirlist-sbin.txtls /usr/sbin > dirlist-usr-sbin.txtls d
2016-06-06 22:47:45
415
原创 归档和备份及相关命令详解
gzip – 压缩或者展开文件压缩分为无损压缩和有损压缩。无损压缩保留了原始文件的所有数据。有损压缩会删除数据,当它被还原的时候,它是元文件的一个近似值.gzip 程序被用来压缩一个或多个文件,压缩后原始文件消失。 压缩文件为.gz后缀 gunzip 程序被用来解压gzip生成的压缩文件。ls -l /etc > foo.txtls -l foo.*-rw-rw-r-- 1 manjusaka
2016-06-06 22:44:26
436
原创 ssh详解
大多数 Linux 发行版自带OpenSSH软件用来提供 SSH 功能,一些发行版默认包含客户端和服务器端两个软件包(例如,Red Hat),而另一些(比方说 Ubuntu)则只是提供客户端服务。为了能让系统接受远端的连接,它必须安装 OpenSSH-server 软件包,再进行相关配置即可SSH要认证远端主机是否为它所知道的那台主机,并且加密了本地与远程主机之间所有的通讯信息。第一次尝试连接,提示
2016-06-06 22:38:34
526
原创 ftp详解
简介ftp使用文件传输协议被广泛地用来从因特网上下载文件,网络浏览器都支持FTP,URL以 ftp:// 开头。它以明码形式发送帐号的姓名和密码,这就意味着这些数据没有加密,任何嗅探网络的人都能看到。ftp常用命令 ftp fileserver 登录,之后输入”help”,会显示所支持命令的列表 get filename 下载文件到本地 get filename 上传本地文件配置ftp服务器
2016-06-03 23:46:34
649
原创 重定向详解
I/O 重定向允许我们可以更改输出走向和输入来向。一般地,输出送到屏幕,输入来自键盘, 但是通过 I/O 重定向,我们可以改变输入输出方向。 输入重定向符<,输出重定向符号>重定向标准输出ls -l /usr/bin > ls-output.txt (把 ls 命令的运行结果输送到文件 ls-output.txt 中去,会删除ls-output.txt中原来的内容。) ls -l /usr/
2016-06-02 23:28:20
837
原创 KMP算法
串的简单模式匹配给出主串S和模式串T,要求找出T在S中的第一个位置。很容易想到的枚举法,就是从第一个字符开始,逐个比较S和T的字符,若相等就继续比较后续字符,否则从S当前与T匹配的第一个字符的下一个字符起再重新和T的第一个字符比较。即初始化 i = j = 0,若S[i] == T[j],则 i++; j++; 否则 i = i - j + 1; j = 0;代码如下:int Matc
2016-05-28 13:03:18
335
原创 find 命令详解
find 程序能基于各种各样的属性, 搜索一个给定目录(以及它的子目录)来查找文件。 例如:统计家目录的所有目录及文件的总数find ~ | wc -l文件类型限定只搜索目录find ~ -type d限定只搜索文件find ~ -type f大小单位查找家目录下大于1M的所有文件find ~ -size +1M+ 表明我们正在寻找文件大小大于指定大小的文件- 表明我们正在寻找文件大小
2016-05-19 00:23:54
1840
原创 Ubuntu使用过程中遇到的问题及解决办法
拨号连接配置PPPoE连接: sudo pppoeconf 连接: pon dsl_provider 断开: poff 查看连接状态: plog安装新字体安装微软雅黑(msyh.ttc, msyhbd.ttc),将文件放到~/Desktop/font/目录下.步骤如下:sudo mkdir -p /usr/share/fonts/winFonts sudo cp ~/D
2016-05-11 21:25:25
3140
原创 软件包管理及常用指令
简介早期的Linux系统,用户是通过下载和编译源码的方式来安装软件。然而如今,所有的主流Linux系统都提供了强大的包管理系统来安装软件。这使得普通用户可以很轻易的安装各种软件。不同的Linux ditributions使用不同的包管理系统。但大多数是Debian 的”.deb”,和红帽的”.rpm”。 包管理系统 发行版 (部分列表) Debian Style (.deb) Deb
2016-05-03 23:57:40
429
原创 Python challenge
python练习题:python challengelevel 0print 2**38答案:274877906944(用这个数字替换掉URL的0)level 1# s = raw_input()# s = list(s)# for i in range(len(s)):# if 'a' <= s[i] <= 'z':# num = ord(s[i]) + 2#
2016-05-02 20:45:21
2987
1
原创 Ubuntu安装reportlab
使用 pip install rlextra -i https://www.reportlab.com/pypi 安装reportlab时,出现问题如下Python.h: No such file or directory解决办法:sudo apt-get install python-dev
2016-05-01 14:35:43
1840
1
原创 浅拷贝和深拷贝详解
在python中,对象赋值实际上是对象的引用。浅拷贝: 拷贝对象的值,但不拷贝对象内部元素,只拷贝内部元素的引用>>> SL = {'name': 'SL', 'friend': ['A', 'B', 'C']}>>> YS = SL.copy()查看SL,YS的id值>>> print id(SL), id(YS)139783840481360 139783840476248可以看出,
2016-04-21 00:25:31
338
原创 Shell的特殊变量
$0获取当前Shell脚本的文件名$n获取当前Shell脚本的第n个参数值,n=1…9$*获取当前Shell的所有参数$#获取当前Shell命令行中参数的总个数$$获取当前Shell的PID(进程号)$!执行上一个命令的PID$?获取执行上一个命令的返回值 数字 含义 0 运行成功 2 权限拒绝 1~125 运行失败:脚本命令,系统命令错误或参数传递错误
2016-04-12 10:40:37
604
原创 str和repr的区别
Python打印值的时候会保持该值在Python代码中的状态,不是用户所希望看到的状态。而使用print打印值则不一样,print打印出来的值是用户所希望看到的状态。 例如:>>> "Hello, world!"'Hello, world!' # Python打印出来的值是给python理解的,这里python理解为字符串,所以带着引号>>> 1000L # python理
2016-04-08 22:45:13
28389
1
原创 HTML
元素元素用于结构化HTML文档,并告知浏览器如何呈现网页。一般来说,一个元素包括一个首标签(start tag)、零或多个属性(attribute)、内容(content)和一个尾标签(end tag)。如下图:标签格式:以小于号“<”开头,以大于号“>”结尾 分为首标签(start tag)和尾标签(end tag)。它们唯一的区别在于,尾标签多一条斜杠”/”。你通过把内容放在首标签和尾标签之间
2016-03-17 17:25:06
344
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人