自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

LinuxEngineer的专栏

屌丝气质

  • 博客(111)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 分治算法

基本思想分治算法是将规模比较大的问题,拆解成规模较小的问题,递归拆解下去,一直到问题小到可以直接得出结论.最终,再将这些子问题的解合并成最终问题的解.分治算法与动态规划算法的本质区别是,子问题之间相互独立,能够最终合并成最终解.动态规划算法分解的子问题有以下特点:一个子问题在下一阶段决策中可能被多次使用到!经典例题题目:剑指 Offer 53 - I. 在排序数组中查找数字 I描述:统计一个数字在排序数组中出现的次数示例 1:输入: nums = [5,7,7,8,8,10],

2021-02-20 10:30:17 248 1

原创 动态规划算法

题目剑指 Offer 10- II. 青蛙跳台阶问题难度简单126收藏分享切换为英文接收动态反馈一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1提示:0 <= n <= 100注..

2021-03-10 00:04:27 257 1

原创 链表求和

题目:分析:算法

2021-02-25 15:49:57 421

原创 算法系列文章1:约瑟夫环

问题:0,1,2,...n这n个数排成一个圈, 从数字0开始,每次从这个圈里删除第m个数字.删除后从下一个数字开始,求出从这个圈里剩下的最后一个数字.例如:0,1,2,3,4,5 m=3 最后剩下的是数字3.分析:首先,我们考虑是否能够按照平时最常规的方法(循环处理的方式进行求解)进行处理.虽然能够处理但时间复杂度应该比较高.但我们在这里也把代码写出来.算法:算法1,使用循环处理的方式,但这种方法时间复杂度较高.class solution{public: int l

2021-01-29 19:34:16 162

原创 软件程序员必备技能

从业多年后,根据自身的工作经验和网上的一些文章,简单总结了一下作为一个程序员应该具备哪些技能。鄙人浅见,如果有遗漏或者不对的地方,还请大家指正,我们共同讨论。...

2019-06-06 15:45:09 628

转载 高通kernel顶层目录下的AndroidKernel.mk文件

目录(?)[-]高通kernel顶层目录下的AndroidKernelmk文件文件层级结构文件具体内容带注释定义变量第一处PERL变量KERNEL_TARGET 和 INSTALLED_KERNEL_TARGET 变量TARGET_KERNEL_ARCH 和 KERNEL_ARCH 变量TARGET_KERNEL_HEADER_ARCH 和 KERNEL_HEADE

2017-10-10 13:46:10 1581

转载 git如何合并只有两个commit到一个

用rebase -i比如下图的commit 历史,想要把 "Second change" 和 "Third change" 这两个commit合并到一起那么可以 1git rebase -i 7a734e9d47895e096313003d6a2e4f697a16e2e3注意 7a734e9d4

2017-09-18 15:05:59 3802

转载 Linux终端使用技巧

Shift+Ctrl+T:新建标签页Shift+Ctrl+W:关闭标签页Ctrl+PageUp:前一标签页Ctrl+PageDown:后一标签页Shift+Ctrl+PageUp:标签页左移Shift+Ctrl+PageDown:标签页右移Alt+1:切换到标签页1Alt+2:切换到标签页2Alt+3:切换到标签页3Shift+Ctrl+N:新建窗口Shif

2017-01-09 12:15:44 807

转载 ADB不识别device not found

ADB不识别device not found,以下是5条简单方法:1.手机usb 数据线连接pc咯,在设备管理器里看看有没的黄色的未安装驱动的设备,有的话就把手机驱动拿过来装下(尽量多刷新几次)。2. 在cmd里直接adb shell,有问题的话会出现"device notfound",我呢,参考网上的说法“adbkill-server”再"adbstart-server"..算是一种方式

2016-05-05 14:43:32 25029

转载 c++动态联编与静态联编

摘要】:本文阐述了静态联编和动态联编的概念和区别,通过具体实例分析了实现动态联编的条件,指出了虚函数是实现动态联编的基础。【关键词】:静态联编;动态联编;虚函数在C++中,联编是指一个计算机程序的不同部分彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。    1. 静态联编静态联编是指联编工作在编译阶段完成的,这种

2015-12-06 17:11:30 761

原创 Linux shell command

Linux shell commandVerify the file size For example: dump -h –max-depth=1 Work/This command can show the size of all files located in the “Work” directory.

2015-10-12 11:22:28 610

转载 WIFI基本知识整理

这里对wifi的802.11协议中比较常见的知识做一个基本的总结和整理,便于后续的学习。因为无线网络中涉及术语很多,并且许多协议都是用英文描述,所以有些地方翻译出来会有歧义,这种情况就直接英文来描述了。 主要内容:一、基本概述二、实践基础三、一些原理四、补充五、其它  一、基本概述===============

2015-09-15 15:46:41 553

转载 package用法

java应用程序文件这个说法是我自己抽象出来的,指的是一般的组织在package中的所有文件。大体分成这三种:1,java程序源文件,扩展名为.java。2,编译好的java类文件,扩展名为.class。3,其他文件,除了以上的,就是资源文件。例如图片文件,xml文件,mp3文件等等等等都可以组织在package之中。(你当然也可以把一部电影放在package里面,当然

2015-08-25 17:36:59 1447

转载 Linux下查看文件和文件夹大小

当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择。    df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。    du可以查看文件及文件夹的大小。    两者配合使用,非常有效。比如用df查看哪个一级目录过大,然后用df查看文件夹或文件的大小,如此便可迅速确定症结。    下面分别简要介绍    df命令

2015-08-20 10:15:01 666

转载 Android Alarm自上而下 调试浅析

1.为了创建一个新的Alarm,使用set方法并指定一个Alarm类型、触发时间和在Alarm触发时要调用的Intent。如果你设定的Alarm发生在过去,那么,它将立即触发。这里有4种Alarm类型。你的选择将决定你在set方法中传递的时间值代表什么,是特定的时间或者是时间流逝:❑ RTC_WAKEUP在指定的时刻(设置Alarm的时候),唤醒设备来触发Intent。

2015-08-15 15:39:21 764

转载 C语言指针强制类型转换

概要:C语言中,任何一个变量都必须占有一个地址,而这个地址空间内的0-1代码就是这个变量的值。不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。但是,不同的变量在机器中都是0-1代码,所以,我们不能简单的通过检查一个值的位来判断它的类型。例如,定义如下:int a; fl

2015-05-15 20:57:50 1182

转载 复制构造函数(拷贝构造函数)

也许很多C++的初学者都知道什么是构造函数,但是对复制构造函数(copy constructor)却还很陌生。对于我来说,在写代码的时候能用得上复制构造函数的机会并不多,不过这并不说明复制构造函数没什么用,其实复制构造函数能解决一些我们常常会忽略的问题。       为了说明复制构造函数作用,我先说说我们在编程时会遇到的一些问题。对于C++中的函数,我们应该很熟悉了,因为平常经常使用;对于类的

2015-04-19 17:00:13 675

原创 Linux Driver porting的步骤

1. 认真阅读IC的spec,我们需要从中读出一些有用的信息。    1) IC正确的(或者可以说精确的)上电时序,这其中包括,Host端控制IC时存在几个pin(regulator, GPIO等),这几个pin严格的上点时序是怎么样的。    2)IC上电时,是否需要发送一定的初始化序列,来保证IC的正常工作。    3)IC的正常工作时的工作原理及工作模式等。2. Driver

2015-04-10 15:15:40 3055

原创 dev_get_drvdata()函数

在Linux Driver的代码中,我们经常看到标题中的函数。那么这个函数究竟如何使用,它的工作原理又是什么?下面,我们来详细看一下这个函数的实现。driver/base/dd.c 1. void *dev_get_drvdata(const struct device *dev)2. {3.      if (dev && dev->p) {4.          

2015-03-02 20:24:56 17858

转载 ubuntu 12.04下访问windows共享文件夹

常见有两种方法   1.terminal下    mount //192.168.0.88/share  -o user=DOMIAN\\xxx,pass=xxx /mnt/share    注:其中192.168.0.88是windows主机名称,share是其共享文件夹名。domain是windows主机域名,必须大写。     2. GUI方式 

2015-01-21 11:08:10 699

转载 Linux设备驱动之semaphore机制

Linux设备驱动之semaphore机制在Linux系统中,信号号是一种重要的加锁机制,特别在互斥型资源中,semaphore更能很好的工作。1: semaphore结构体定义在Linux2.6.35内核中,semaphore的实现机制与以前的版本一点不同,在其中去除了DECLARE_MUTEX_LOCKED这个初始化互斥宏定义,但是,又添加了一个特别重要的函数,down_killa

2015-01-14 16:50:18 1042

转载 深入探讨this指针

深入探讨this指针 为了写这篇文章,准备了好长时间,翻遍了箱底的书籍。但是现在还是不敢放开手来写,战战兢兢。不是担心自己写错,而是唯恐自己错误误导别人。同时也希望这篇文章能给你一点收获。既然是深入探讨this指针,所以建议初学者,最好具有一定编译基础,调试基础。如果大家认为这片文章有不满的地方,就给我发信批评一下,以便及时修正。关于this指针的描述我们一般从语言层次上讲;thi

2014-12-15 11:18:32 688

转载 Git使用基础篇

Git使用基础篇 Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍 Git的使用技巧,最后会在Git Hub上创建一个开源项目开启你的Git实战之旅1、Gi

2014-11-05 11:26:10 531

原创 Touch panel DTS 分析(MSM8994平台,Atmel 芯片)

Touch panel DTS 分析(MSM8994平台,Atmel 芯片)在MSM8994平台下,Touch panel的DTS节点写在/kernel/arch/arm/boot/dts/qcom/msm8994-mtp.dtsi文件中。具体代码如下:&soc {          i2c@f9924000 {                             

2014-10-28 11:29:08 5750

转载 编译警告(Warning)

如何看待编译警告 当编译程序发现程序中某个地方有疑问,可能有问题时就会给出一个警告信息。警告信息可能意味着程序中隐含的大错误,也可能确实没有问题。对于警告的正确处理方式应该是:尽可能地消除之。对于编译程序给出的每个警告都应该仔细分析,看看是否真的有问题。只有那些确实无问题的警告才能放下不管。说明:由于编译的警告各种各样,根本不可以一一罗列出来,下面只是列举出比较典型的一些警告,还有一些

2014-10-11 14:37:44 3258

转载 size_t

size_t在C语言中就有了。它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。size_t的全称应该是size type,就是说“一种用来记录大小的数据类型”。通常我们用sizeof(XXX)操作,这个操作所得到的结果就是size_t类型。因为size_t类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为i

2014-10-09 15:24:54 550

转载 Git diff usage

在git提交环节,存在三大部分:working tree, index file, commit

2014-09-10 14:08:36 704

转载 android repo学习

如何取得 Android 源代码 Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的分布式版本 控制软件,它不同于 Subversion、CVS 这样的集中式版本控制系统。在集中式版本控制系统 中只有一个仓库(repository) ,许多个工作目录(working copy) ,而像 Git 这样的分布式 版本控制系统中(其他主要的分布式版本控制系

2014-08-15 11:09:07 746

转载 kobject_uevent

前言这两天遇到一些 udev 的问题, 顺便阅读了一下文档(见参考文档), 基本了解了 udev的机制。嵌入式系统性能很重要,于是对内核这一块进行了性能方面的研究。内核大概20多处会调用了 kobject_uevent 函数发送 KOBJ_ADD / KOBJ_REMOVE等事件。其中我们最关心的就是在device_add/device_del 中向用户空间发送设备的添加、删除信息。k

2014-08-13 22:02:08 2938

原创 面向对象语言的多态性问题

一直以来在我们所见到的概念中,面向对象语言有三大特性:封装性、继承和多态。封装性:在面向对象的语言中存在有类的概念,因此实现了数据和行为(方法)的封装,在外部表现为统一的类或对象。在类的外部要访问类的公有成员(私有成员通过类或对象也是不能访问的),必须通过类名或对象来访问。继承:类的继承是在现有类的基础之上创建新的类,实现了代码的重用,并且扩展了现有类的功能的机制。关于继承方面,有

2014-08-01 09:40:47 1547

原创 MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE宏

在阅读Linux Driver源代码时,我们经常会在文件的结尾处看到诸如:MODULE_AUTHOR、MODULE_DESCRIPTION、MODULE_LICENSE等宏定义,这些宏主要是定义了一些模块信息。但这些模块信息具体是怎么加到模块里的?就需要深入分析一下这些宏定义具体是怎么定义的。下面我们以MODULE_AUTHOR为例,来具体分析一下有关module信息的宏。首先,我门来看一下M

2014-07-30 15:14:24 7321

原创 C语言函数参数传递原理

C语言中参数的传递方式一般存在两种方式:一种是通过栈的形式传递,另一种是通过寄存器的方式传递的。这次,我们只是详细描述一下第一种参数传递方式,另外一种方式在这里不做详细介绍。首先,我们看一下,下面一个简单的调用例程:int Add (int a, int b, int c){return a+b+c;}void main(){int x =0 , y = 1

2014-07-29 10:34:19 3238

转载 Linux I2C设备驱动编写

在Linux驱动中I2C系统中主要包含以下几个成员:I2C adapter 即I2C适配器I2C driver 某个I2C设备的设备驱动,可以以driver理解。I2C client 某个I2C设备的设备声明,可以以device理解。I2C adapter是CPU集成或外接的I2C适配器,用来控制各种I2C从设备,其驱动需要完成对适配器的完整描述,最主要的工作是需要完成i2c

2014-07-28 18:59:39 3924 3

转载 “asmlinkage” 的作用

什么是 "asmlinkage"?相信大家在看linux的source code的时候,都会注意到asmlinkage这个宏,它是用来做什么的呢?The asmlinkage tag is one other thing that we should observe about this simple function. This is a #define for some g

2014-07-25 13:53:37 5496

原创 C语言的预处理问题

C语言的宏定义问题

2014-07-04 15:45:35 1011

转载 linux内核原子操作的实现

所谓原子操作,就是“不可中断的一个或一系列操作”。硬件级的原子操作:在单处理器系统(UniProcessor)中,能够在单条指令中完成的操作都可以认为是“原子操作”,因为中断只发生在指令边缘。在多处理器结构中(Symmetric Multi-Processor)就不同了,由于系统中有多个处理器独立运行,即使能在单条指令中完成的操作也有可能受到干扰。在X86平台生,CPU提供了在指令执行

2014-06-30 14:16:20 1001

转载 单链表的逆置-C++实现

对于单链表的逆置有两种方法可以实现:(1)利用辅助指针         基本思想:在遍历结点过程中,设置辅助指针,用于记录先前遍历的结点。这样依次编译的过程中只需修改其后继结点的next域即可。         实现代码:[cpp] view plaincopyprint?typedef int DataType; /

2014-06-12 18:02:21 1162

原创 C 语言的若干问题(持续更新中)

1.c 语言声明的作用: 在C语言中你所声明的所有字符串,会根据你当初对它声明的不同表现出不同的含义!你对字符串的声明,即代表此字符串所拥有的属性!是变量还是函数都会依据你的声明所定!例如:int func(void) , 此声明为一个典型的函数声明,此后出现func字符串,即代表对func函数的调用!func字符串代表的是一个函数,即一个处理过程的地址!int a[2], 此声明为一个数组的

2014-06-06 22:40:46 1651

转载 android中hw_get_module函数分析

这个函数的主要功能是根据模块ID寻找硬件模块动态链接库德地址,然后调用load去打开动态链接库并从中获取硬件模块结构体地址。具体的源码如下:代码@/hardware/libhardware/hardware.cint hw_get_module(const char *id, const struct hw_module_t **module)120 {121   

2014-05-27 10:27:50 1380

转载 Android中HAL如何向上层提供接口总结-hw_device_t

参考文献:http://blog.csdn.net/luoshengyang/article/details/6573809http://blog.csdn.net/hongtao_liu/article/details/6060734建议阅读本文时先浏览以上两篇文章,本文是对上两篇文章在HAL对上层接口话题的一个总结.1 什么是HALHAL的全称是

2014-05-19 18:25:28 833

Java虚拟机详解

Java virtual machine

2014-04-17

android编译过程详解

Android compile principle

2014-04-17

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除