- 博客(221)
- 资源 (1)
- 收藏
- 关注
原创 我的2016--找工作总结
时光飞逝,不知不觉间,2016年已经快要走到尾声,而我的研究生生涯也即将走到尽头。从今年3月份找实习开始,到10月份签了三方,这中间也经历了起起伏伏各种波折。现在总结一下找工作的这些事情。先说一下我的基本情况:中科大本硕,所学的专业是电子信息工程,班级排名常年中游,研究方向勉强算是计算机视觉。本科时候计算机方面就学过C语言和数据结构。读研时候做过的项目比较杂,嵌入式视频监控系统开发、数据挖掘比
2016-11-26 20:58:55 5530 19
原创 新的旅程~第二周
本周主要的收获:1.学习了Facebook dlrm模型的原理,并且基于tf编写了完整的模型训练、测试脚本工程,熟悉了tf常用Api的使用,完成模型收敛与论文结果复现2. 学习神经网络训练时,量化的方法和原理,并进行实践困惑点:1.后面的工作内容可能集中在python脚本和cuda编程上。并不是如我之前预计的基于tf做深层次优化,对于tf内核、c++的提升很有限,需要自己花时间自学提升技术水平。2. 发现自己越来越懒了,自律能力很差,这个要好好纠正一下,不能浪费宝贵的时间。python、cuda、
2020-11-07 22:46:30 180
原创 新的旅程~第一周
第一周工作,熟悉了工作内容与流程。后面主要的工作是基于tf开展,包括python前端优化、后端计算优化。预期目标:1.在工作中熟悉tf的python前端、c++后端源码,掌握基于tf的模型推理性能调优方法。以及熟悉cuda gpu编程的方法与性能优化2. 结合工作内容,阅读tf 推理框架源码及相关c++书籍,熟练掌握c++语言及大型工程架构...
2020-10-26 09:10:45 194
原创 Android Input系统源码分析一(启动与初始化)
一. Input系统的启动Android Framework是由一系列的Service所构建起来的,其中与Input相关的主要是InputManagerService(IMS)。我们看看IMS的启动流程。IMS是在SystemServer.startOtherService中起来的,相应的代码如下:private void startOtherServices() { ... InputMan...
2018-06-10 21:26:54 820
原创 Android Framework技术积累计划
工作快一年了,距离上一次写博客也有一年多了。现在回想一下,工作这一年有很多收获,但是也有很多的不足之处有待改进。其中对自己最不满意的一个地方,就是技术的积累碎片化很严重。知识掌握的不系统,缺乏对新掌握知识的梳理消化。在Android Framework这个领技术域,我应该像前辈老罗、gityuan学习,多总结多思考。Android系统博大精深,个人觉得是一个嵌入式OS的终极形态,希望自己能够多多从...
2018-06-03 20:56:58 403
原创 安卓学习资源整理
1.安卓的消息传递机制http://blog.csdn.net/luoshengyang/article/details/6817933/2.安卓的intent机制http://www.cnblogs.com/engine1984/p/4146621.html
2017-07-31 20:51:45 408
原创 《linux内核完全解读(基于0.11内核)》--环境搭建
最近开始阅读《linux内核完全解读(基于0.11内核)》,首先是要搭建linux 0.11内核的编译调试环境,可以参考下面的文章:http://www.tinylab.org/take-5-minutes-to-build-linux-0-11-experiment-envrionment/在ubuntun虚拟机上运行成功,会自动跑起来QEMU的虚拟环境,结果如下:
2017-03-06 21:45:09 1202
原创 存储器层次结构(《深入理解计算机系统》)
阅读《深入理解计算机系统》的第6章,也还是有一些收获的。首先在脑海中需要对计算机系统的存储器层次结构有个定性的认识,如下图所示: 从访问速率最高(容量最小)的寄存器到访问速率最低(容量最大)的分布式文件系统,计算机将不同类型的存储设备划分了多个层次。然后通过硬件和软件的协作,最终实现高性能的程序开发。每个层次的存储设备都会存储下一层次的设备中的部分数据,依赖于局部性原理,我
2017-02-25 16:10:58 797
原创 优化程序性能(《深入理解计算机系统》)
《深入理解计算机系统》的第5章讲的是优化程序性能,这一章看完了还是有不少收获的,现在简要的总结一下。书中总结了优化程序性能的策略,大致分为以下几类:1. 高级设计 为问题选择合适的算法和数据结构。这块很容易理解,选择合适的数据结构,设计算法复杂度低的算法。2. 基本编码原则 消除连续的函数引用,消除不必要的存储器引用。 消除连续的函数引用,这块好理解,每个函数
2017-02-22 17:00:40 938
转载 处理器体系结构(《深入理解计算机系统》)
处理器体系结构ISA一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。虽然每个厂商制造的处理器性能和复杂性不断提高,但是不同型号在ISA级别上都保持着兼容。因此,ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层。这个概念抽象层即ISA模型:CPU允许的指令集编码,且顺序地执行指令,也就是先取出一条指令,等到她执行完毕,再开始下一
2017-02-21 21:06:19 983
转载 window与linux下的换行
回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
2016-12-03 15:25:35 759
原创 双向解耦TCP协议开发(二)
在上一篇博客中已经说明了本项目的技术路线,本篇博客就来具体说说。一.利用虚拟化技术搭建双机器双网卡的测试环境首先是在VMWARE里面添加两个ubuntu虚拟机,这个网上资料很多,在此就不赘述。这两个ubuntu虚拟机可以视为是编译机,我们主要是借助他们来编译内核和制作文件系统。这两个虚拟机的网络配置需要都配置成桥接模式。所谓桥接模式,简单地说,就是把发送给虚拟网卡的数据直接发送给物理网卡,
2016-11-28 11:45:09 1053
原创 双向解耦TCP协议开发(一)
最近实验室安排了一个新的任务,是要做双向解耦的TCP协议开发。这个任务我是花了一个月时间,到现在基本做完了。接下来写一下博客来总结一下这个工作。一. 什么叫双向解耦TCP?大家都知道TCP协议是一个双向传输的协议,需要三步握手来建立连接、需要四次挥手来断开连接等等。现在的BSD TCP/IP协议栈实际上都是在两个IP地址(或者说两个网卡)之间建立TCP连接。不同节点的两个网卡构成一条路径,
2016-11-27 19:53:37 1152
转载 RAM、ROM、FLASH的存储原理及区别
一、RAM(Random Access Memory )随机存取存储器,主要作用是存储代码和数据供CPU 需要时调用。这些数据的存储并不像用袋子盛米那般,更像是图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来。对于RAM 等存储器原理类似,虽然存储的都是代表0 和1 的代码,但不同的组合即成为不同的数据。如果有一个书架有10 行和10 列格子(每行和每列都有0-9
2016-10-09 10:46:04 1376
转载 数据库的事务
事务(Transaction)是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。例如,银行转账工作:从一个账号扣款并使另一个账号增款,这两个操作要么都执行,要么都不执行。所以,应该把它们看成一个事务。事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持数据一致性。 针对上面的描述可以看出,事务的提出主要是为了解
2016-09-23 22:51:18 393
转载 c/c++ 各个类型所占的字节数
我用VC编译的,测试了一下,代码如下:#include "iostream"using namespace std;int main(){coutcoutcoutcoutcoutcoutreturn 0;}结果为:124448由此看出,32位系统,vc编译
2016-09-19 22:11:38 947
转载 linux下使用FIFO进行进程间通信
无名管道应用的一个重大限制是它没有名字,因此,只能用于具有亲缘关系的进程间通信,在有名管道(named pipe或FIFO)提出后,该限制得到了克服。FIFO不同于管道之处在于它提供一个路径名与之关联,以FIFO的文件形式存在于文件系统中。这样,即使与FIFO的创建进程不存在亲缘关系的进程,只要可以访问该路径,就能够彼此通过FIFO相互通信(能够访问该路径的进程以及FIFO的创建进程之间),因此,
2016-09-11 11:06:20 2582
转载 STL的sort算法
详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指定元素排序1.7 partition 和stable_partition2 Sort 和容器3 选择合适的排序函数4 小结5 参考文
2016-09-07 10:06:42 410
转载 c++模板的定义和实现为啥分开
http://www.gois.ws/showfile.asp?id=460:0:0如何组织编写模板程序 发表日期: 1/21/2003 12:28:58 PM 发表人: Nemanja Trifunovic前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WT
2016-09-06 10:20:15 956
转载 APUE可靠信号与不可靠信号
首先说明:现在大部分Unix系系统如Linux都已经实现可靠信号。1~31信号与SIGRTMIN-SIGRTMAX之间并不是可靠信号与不可靠信号的区别,在大多数系统下他们都是可靠信号。只不过:1~31信号 ——不支持排队,为普通信号。(不能用于统计信号发生次数的情景。)SIGRTMIN-SIGRTMA
2016-09-05 13:41:00 416
原创 【Leetcode】 Balanced Binary Tree
一. 问题描述Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every nod
2016-09-03 23:01:45 308
转载 C++中Operator类型强制转换成员函数
类型转换操作符(type conversion operator)是一种特殊的类成员函数,它定义将类类型值转变为其他类型值的转换。转换操作符在类定义体内声明,在保留字 operator 之后跟着转换的目标类型。转换函数又称类型强制转换成员函数,它是类中的一个非静态成员函数。它的定义格式如下: class { public: operator ();
2016-08-31 09:29:01 937
转载 STL与拷贝构造函数
所有容器提供的都是“value语意”而非“reference语意”。容器内进行元素的安插操作时,内部实施的是拷贝操作,置于容器内。因此STL容器的每一个元素都必须能够拷贝。---> 侯捷、孟岩译 p144页原文 以vector为例,往Vector中(实际上所有STL容器都是这样)放元素,Vector会调用元素类的拷贝构造函数生成的副本,当Vector走出生存期时(),会自动调用其中每个元素
2016-08-25 15:26:00 451
原创 【Leetcode】之 Binary Tree Level Order Traversal II
一.问题描述Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root).For example:Given binary tree [3,9,20,n
2016-08-25 11:54:57 276
转载 C++之string
通过在网站上的资料搜集,得到了很多关于string类用法的文档,通过对这些资料的整理和加入一些自己的代码,就得出了一份比较完整的关于string类函数有哪些和怎样用的文档了!下面先罗列出string类的函数有哪一些,然后再罗列出函数的原型,最后到代码的实现标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用。现将具体用法的一部分罗列如下,只起一个抛砖
2016-08-24 16:39:03 404
原创 【Leetcode】之Construct Binary Tree from Preorder and Inorder Traversal
一.问题描述Given preorder and inorder traversal of a tree, construct the binary tree.二.我的解题思路给定二叉树的前序遍历序列和中序遍历序列,要求重建二叉树。这道题可以采用递归的算法思想,每次将序列切分成左子树序列和右子树序列,然后递归生成即可。测试通过的程序如下:/** * Definition
2016-08-24 11:57:57 282
转载 effective c++条款4-确定对象在使用前被初始化
1. 内置类型C++中的内置基本类型,比如int,double,float等,初值都是垃圾值,即声明int i,i的初值是一个垃圾值。本书建议的最佳处理方法是:永远在使用对象之前将之初始化。比如:1 int x = 0;2 3 const char* test = “hello world”;4 5 double d; cin >> d;2. STLC+
2016-08-23 09:46:53 346
转载 为什么auto_ptr不可以用作stl容器的元素
上个星期的博客shared_ptr源码剖析里其实遗漏了一个问题:为什么auto_ptr不可以作为STL标准容器的元素,而shared_ptr可以? 我在网上看了好多篇讲shared_ptr的文章里讲到了这个问题,不过大多文章只是简单两笔带过。我研究了一下这个问题,发现还是有挺多有价值的内容,所以把这个问题单独成一篇博客和大家分享。先从表象上看看这个问题,假如有这样的一段代码,是否能够运行?
2016-08-21 21:59:40 1643
转载 scoper_ptr与auto_ptr
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include #include #include class implementation{public: ~implementation() { std::cout
2016-08-21 21:56:00 388
转载 C++中的前向声明
前向声明:可以声明一个类而不定义它。这个声明,有时候被称为前向声明(forward declaration)。在声明之后,定义之前,类Screen是一个不完全类型(incompete type),即已知Screen是一个类型,但不知道包含哪些成员。不完全类型只能以有限方式使用,不能定义该类型的对象,不完全类型只能用于定义指向该类型的指针及引用,或者用于声明(而不是定义)使用该类型作为形参类
2016-08-21 21:44:03 291
转载 Python-subprocess
这里的内容以Linux进程基础和Linux文本流为基础。subprocess包主要功能是执行外部的命令和程序。比如说,我需要使用wget下载文件。我在Python中调用wget程序。从这个意义上来说,subprocess的功能与shell类似。 subprocess以及常用的封装函数当我们运行python的时候,我们都是在创建并运行一个进程。正如我们在Linux进程基础中介
2016-08-08 09:44:32 406
原创 【Leetcode】之Binary Tree Level Order Traversal
一.问题描述Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree [3,9,20,null,null,15,7], 3
2016-08-05 23:21:28 273
原创 【Leetcode】之Symmetric Tree
一.问题描述Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2 / \ / \
2016-08-05 22:52:15 285
转载 求二进制中1的个数相同、且大小最接近的两个数
转自:http://blog.csdn.net/wangfengfan1/article/details/47957299 (程序员面试金典题解)public int getNext(int n){/*计算c0和c1*/int c=n;int c0=0;int c1=0;while(((c&1)==0) && (c!=0)){
2016-08-05 08:43:12 913
原创 【Leetcode】之Validate Binary Search Tree
一.问题描述Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the n
2016-08-04 23:50:36 297
转载 排序算法小结
排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所有常见的排序算法进行归纳。 我不喜欢死记硬背,我更偏向于弄清来龙去脉,理解性地记忆。比如下面这张图,我们将围绕这张图来思考几个问题。 上面的这张图来自一个PPT。它概括了数据结构中的所有常见
2016-07-30 20:32:03 275
转载 冒泡排序最好的情况下复杂度O(N)的原因
我在许多书本上看到冒泡排序的最佳时间复杂度是O(n),即是在序列本来就是正序的情况下。但我一直不明白这是怎么算出来的,因此通过阅读《算法导论-第2版》的2.2节,使用对插入排序最佳时间复杂度推算的方法,来计算冒泡排序的复杂度。1. 《算法导论》2.2中对插入排序最佳时间复杂度的推算 在最好情况下,6和7总不被执行,5每次只被执行1次。因此, 时间复杂度为O(n)
2016-07-30 20:29:50 1815
转载 std::map的机制
转自 http://blog.csdn.net/solstice/article/details/8521946陈硕 (chenshuo.com)2013-01-20std::set/std::map (以下用 std::map 代表) 是常用的关联式容器,也是 ADT(抽象数据类型)。也就是说,其接口(不是 OO 意义下的 interface)不仅规定了操作的功能,还规定
2016-07-30 14:01:46 8615
转载 堆排序算法原理
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>
2016-07-30 10:56:31 265
转载 C++模板的特化与偏特化
1.引言C++中的模板分为类模板和函数模板,虽然它引进到C++标准中的时间不是很长,但是却得到了广泛的应用,这一点在STL中有着充分的体现。目前,STL在C++社区中得到了广泛的关注、应用和研究。理解和掌握模板是学习、应用和研究以及扩充STL的基础。而STL模板实例中又充斥着大量的模板特化和偏特化。2.模板的定义(1) 类模板定义一个栈的类模板,它可以用来容纳不同的数据类型
2016-07-30 09:45:11 2769 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人