自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(244)
  • 资源 (32)
  • 收藏
  • 关注

原创 C++ const

目的: 值代替。 预处理宏定义的缺点: 只做文本替换,并没有类型检查,这样会产生风险。      内存存储形式,常量折叠常量的定义会保存在符号表中,可折叠的常量像宏一样,在预编译阶段对常量的引用一律被替换为常量所对应的值。但在运行时常量也是会被分配内存空间的。下面的程序可以说明。  int main() { const in

2016-11-24 09:32:57 1234

原创 编程之美 - 分层遍历二叉树

问题描述一棵二叉树,按从上到下,从左到右的方式进行遍历,打印它的所有的节点。例如二叉树输出的结果为abcdef 思路:二叉树遍历的方式为分层方式每一层都可以看做是一个链表,根节点level 0可以看做只有一个元素的链表。当遍历level 0时,可以同时将根节点的左右子树放入level 1的链表中。当遍历level1的链表时可以同理生成

2016-10-31 15:46:54 1210

原创 编程之美 - 重建二叉树

问题描述: 给出二叉树先序遍历和中序遍历的结果,根据结果重建二叉树。举例: 例如二叉树先序遍历结果 为 abdcef  中序遍历结果为 dbaecf,现根据结果重构二叉树。思路: 关键需要找到二叉树每一层的根节点和子树的长度。例如先序遍历中根节点必然是第一个 abdcef ,  通过中序遍历可以发现 dbaecf a的左侧有两个,右侧有3个,

2016-10-30 17:16:11 1166

原创 编程之美 - 求二叉树节点的最大距离

问题描述:把在二叉树中,从一个节点到另一个节点的需要经过的边数,定义为距离。求一棵二叉树中,距离最远的两个节点之间的距离是多少?问题分析:最远的节点可能出现两种情况:1)  位于根节点下面两棵不同的子树上,例如节点C和D2)  位于根节点下面同一棵子树上,例如节点 F 和 I,他们位于B子树上。这样问题可以转化为求二叉树子树上的最远节点,根节

2016-08-27 10:45:20 1366

原创 编程之美 - 无头链表删除节点

问题描述:一个没有头指针的链表,从其中删除任意一个中间节点(非第一个,也不是最后一个)。思路:没有头指针,所以无法使用遍历的方式找到目标节点的上一个节点。但可以使用的是目标节点的下一个节点。因为当前节点是要被删除的,所以当前节点的值已经不需要被保存了,可以直接用下一个节点的值将其替换。然后,直接删除下一个节点即可。代码:void delete_node(

2016-08-10 09:05:45 1097

原创 编程之美 - 计算字符串相似度

问题描述:有两个不同的字符串,通过使用一套操作方法可以把两个字符串变成一样的。例如:1)  "a" 和 "b"  ==>  把a变成b,或把b变成a  变化了一次2)  "abc" 和 "ade"  ==>  把bc变成de,或把de变成bc  变化了两次3)  "abcd" 和 "abcde"  ==>  删除e  变化了一次每操作一次,两个字符串的距离就

2016-08-05 08:35:21 1333

原创 编程之美 - 电话号码对应英语单词

问题描述:电话的号码盘上一个数字对应着几个字母,一串数字对应着几种字母的组合。现在给定一组数字,列出对应的字母的组合。思路:例如:4对应键盘上 GHI, 2对应键盘上 ABC数字 42 的组合对应的字符串,用树的表现形式:                                      424:                

2016-07-18 08:37:05 1549

原创 编程之美 - 字符串移位包含

问题描述:两个字符串s1, s2,将s1循环位移,判断s2是否被包含在其中。例如:s1 = "ABCD"  s2= "CDA"  将s1循环位移后得到BCDA,s2被包含在s1循环位移后的字符串中。思路 1:将s1移位一次,然后与s2比较一次。如果字符串比较长,效率很低。思路 2:假设保留s1移位的结果,例如:s1 = "ABCD"  位移一次

2016-07-11 11:08:03 1050

原创 编程之美 - 只考加法的算术题

问题描述:给定一个正整数 N,将N分解为几个(2个以上)连续的自然数的和。是否所有的数都可以做到。例如 10 = 1 + 2 + 3 + 4。思路:以最简单的方式开始思考:1) N为奇数,奇数可以分解为两个连续的自然数的和。例如 9 = 4+5。2) 当N为偶数,如果N可以被 3 整除, 假设a = N/3,那么N还可以被分解为 a-1,a,a+1三个数3)

2016-07-10 09:01:50 1041

原创 编程之美 - 区间重合判断

问题描述:给定一个源区间 (x, y)和若干个无序的目标区间 (x0, y0), (x1, y1), (x2, y2), ...... (xn, yn), 判断源区间是否在目标区间内。思路 1:分解源区间把目标区间逐一的映射在源区间上,可以将源区间分解为更小的区间。最后看是否能将源区间全部分解。例如:源区间 {1,6},  目标区间 {{2,3}, {3,9}, {1,2}

2016-07-07 15:57:40 2416

原创 编程之美 - 数组分割

问题:有一个没有排序,有2N个元素的数组,要求把这个数组分为两部分,分别含有N个元素,并使两个子数组的和最接近。这里的程序主要是计算这个和的值。比如数组 {1, 10, 100, 1000},计算后符合的分法是 {1, 1000} {10, 100} 和算出比较小的就可以了是  110例如数组 {1, 2, 3, 4}  分开后是 {1, 4} 和 {2, 3}

2016-07-02 19:28:17 1707

原创 SIP Call Flow - Initiation of IMS Session

这里在 IMS 网络中,手机 abc会与另一部手机xyz建立起会话。基本步骤:手机abc构造了一个INVITE消息,其中包含另一部手机xyz的 public user identity。所有的SIP消息需要通过P-CSCF和S-CSCF的转发手机和P-CSCF间的SIP消息都是通过IPSec完整性保护的手机和P-CSCF间的SIP都是经过压缩的手机间交互/协商媒体流的属性U

2016-06-23 22:43:50 2748

原创 SIP Call Flow - Registration

Session Initiation Protocol (SIP) registration 注册的过程是将 IP 地址和当前用户的公共用户ID(Public user ID:SIP URI  (uniform resource identifier)) 绑定的过程。SIP (Session Initiation Protocol) 绑定的过程UE 发送 Regis

2016-06-21 21:13:26 4410

原创 编程之美 - 数组循环移位

问题描述:将一个数组向右循环移位 k 位,要求只使用两个参数,时间复杂度为 O(N)。思路 1:采用蛙跳的方式,用当前的元素 i,替换第i+k个元素,这样逐一替换N次后,数组被移位完成。当然这时要区分能两种情况,N能整除k 和 N不能整除k,这时跳的方式是不一样的。时间复杂度 O(N)假设 N = 7 k = 3 (N不能整除k),  假设 N = 9 k

2016-06-01 23:03:47 1056

原创 编程之美 - 数组最长子序列

问题描述:求一个一维数组的最长递增子序列,时间复杂度尽可能小。例如:数组 1, -1,2,-3,4,-5,6,-7它的最长递增子序列是 1,2,4,6。思路:创建一个数组,用于记录到它为止递增元素的最大个数。从目标数组的第一个元素开始,寻找从数组0元素开始到当前元素中间的递增的元素个数,并记录。时间复杂度 O(N*N)。#include

2016-06-01 23:01:29 1898

原创 编程之美 - 二维数组最大和的子序列

问题描述:找出二维数组中的最大和的子序列。二维数组中的子序列是二维数组中的一个方块。思路一:使用暴力的方式,从每一个元素开始,变量以它为左上定点的所有的可构造的方块。时间复杂度 N*N*M*M* sum(MN)函数:getMaxSum1()思路二:参考一维数组的方式,将二维数组的转化为一个一维数组后,再进行求和。例如:在二维数组中选择了 a

2016-05-25 10:06:31 2160

原创 编程之美 - 数组最大和的子序列

问题描述:一个数组有N个元素,求这个数组中子数组的最大和。要求:子数组是数组中连续的几个元素数组的元素包含正数,负数,0思路:使用动态规划的方式从第n-1个元素开始,向前累加。如果当前值 大于当前值+以前和则在当前和的位置保存当前值,否则保存当前值+以前和sum[n-2] = max(a[n-2],  sum[n-1]+a[n-1]),

2016-05-13 09:22:00 2555

原创 编程之美 - 子数组的最大乘积

问题描述:给定一个长度为N的整数数组,只允许用乘法,不许用除法,求数组中任意N-1个数字的最大乘积想法1:计算数组中除去 a[i]以外后的其他数字的乘积,然后在其中找到最大值。s[i] = s[i-1]*arr[i-1];      t[i] = t[i+1]*arr[i+1];p[i] = s[i]*t[i];代码示例中 : calc1()

2016-05-13 09:19:20 1489

原创 编程之美 - 满足条件的两个数字及扩展问题

问题描述: 对应函数 find_two快速找出数组中的两个数字,让这两个数字之和等于给定的数字。想法:如果把任意两个数字组合进行尝试的话,运算量是N*N不适合。先将数组进行排序,然后从两头分别取数字进行组合,如果和大于目标数字则在大数字侧找下一个稍小一点的数字。如果和小于目标数字则在小数字侧找下一个稍大一点的数字扩展问题 1:  对应函数 find_th

2016-05-13 09:17:36 1111

原创 编程之美 - 寻找合适的数字

问题描述:给一个整数N,求一个整数M,使M*N 的十进制结果中只有 1 和 0。问题分析:问题从结果入手,十进制表示只有 1 和 0,这个数字的集合有规律,例如: 1,10,11,100,101,110,111.....10k次方与前面的每个的数的和。例如 k=1  ==> 10 ,在 10这个阶段的数字有 1 + 10 = 11例如 k=2  ==> 100 ,在

2016-04-14 23:12:55 1032

原创 编程之美 - 浮点数的精确表示

问题描述:如何将浮点数(小数)转换为分数的形式,这样可以更精确的表达出浮点数的值。问题分析:小数可以分为两种,有限小数和无限循环小数。有限小数的处理相对简单:只要把它乘以10的N次方,转换为整数,再和10的N次方都除以它们的最大公约数即可。例如:0.25  把它乘以 10的2次方 变成25, 25/100 分子分母除以最大公约数25变成1/4即可。

2016-04-14 21:44:35 746

原创 07 VoLTE - Signaling - IMS Client Deregistration

触发IMS Deregistration的情形UE触发UE power offUE LTE RAT is disabled网络触发网络将UE从EPC中去附着Service 触发LTE/IMS注册超时IMS注册失败达到最大次数IMS Deregistration的过程1)  UE释放与

2016-04-14 21:21:24 1346

原创 06 VoLTE - Signaling - Call Release and Error Handling

VoLTE Call 的释放过程,以及出错时的处理方式。出错时有的情况是可以恢复的,但有时只能让 VoLTE Call 结束。VoLTE Call Release在VoLTE Call的释放过程中, MO UE 和MT UE 都可以主动释放,然后由另一端发送 200 OK进行确认。VoLTE Call Failure 以及 Rec

2016-04-14 21:17:28 961

原创 05 VoLTE - Signaling - Call Scenarios

VoLTE Call 的建立对于VoLTE call 来说,MO Call 和 MT Call 的过程基本是一致的。这里假设主叫UE和被叫UE已经在IMS网络中注册成功了。并且两个UE都处于RRC Idle状态。呼叫的过程可以大致分为下面 4 个阶段MO-MT VoLTE Call InitiationMO-MT VoLTE Call Proceedin

2016-04-14 21:13:14 2398

原创 04 VoLTE - Signaling - IMS Client Registration

IMS Client Registration过程主要分为两个部分发现 P-CSCFIMS 注册过程P-CSCF Discovery OverviewP-CSCF是通向IMS的网关,它是UE的代理。P-CSCF的信息:P-CSCF IP AddressP-CSCF server portP-CSCF transport pro

2016-04-10 20:02:23 2199

原创 03 VoLTE - Initial LTE Attach

概述Initial LTE Attach 过程包括RRC Connection set upAuthentication and security proceduresPDN connection set upPDN connection 可以看做是IMS PDN set up,并且VoLTE 相关的UE Capability 都在initial ATTAC

2016-04-10 19:58:22 1322

原创 02 VoLTE - Domain Selection 和 VoLTE Signaling Overview

概要关于 VoLTE 信令流程的整理包括几个部分:LTE网络Initial AttachIMS Client 注册VoLTE Call 的建立VoLTE Call 的释放IMS Client 去注册VoLTE Protocol StackSIP 协议可以通过TCP 或 UDP进行传输,RTP/RTCP负责媒体数据的传输域的选择

2016-04-10 17:22:16 1145

原创 01 VoLTE - Introduction

What is VoLTE and Why?Voice Over LTE,,它是一种IP数据传输技术,无需2G/3G网络支持,全部业务承载于4G网络上,可实现数据与语音业务在同一网络下的统一。VoLTE的实现主要是基于IMS框架。语音在LTE网络中传输的几种解决方案Circuit-Switch Fallback (CSFB)可以在

2016-04-10 17:16:28 1014

原创 编程之美 - 1 的数目

问题:给定一个十进制整数N,写下从1开始到N的所有数字,然后数一下其中1的个数。例如N = 16,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16其中 1 的个数为 9 个。分析:第一种方式比较暴力, 一个数字一个数字的查。复杂度为  N*(log2N)第二种方式找规律,如例子中N

2016-04-07 21:53:55 930

原创 Android 内核 - 05 SystemServer

概要SystemServer 由 ZygoteInit 创建的第一个子进程,负责系统管理framework\base\services\java\com\android\server\SystemServer.javaSystemServer.java中其实包含了两个 class, SystemServer 和 ServerThread。Sy

2016-03-27 21:57:25 472

原创 Android 内核 - 04 Framework 的启动

从Linux的角度看,Android只是Linux中的一个应用程序而已。启动Android便是启动一系列的服务和应用模块。从这个角度去理解Android的启动过程会使问题变得简单点。先启动一个原始进程,加载必要的资源,建立原型,并开启socket等待命令(进程间通信的一种手段)当原始进程收到命令时,把原始进程的资源信息复制一份,fork一个子进程以节省启动时间。

2016-03-26 21:59:46 518

原创 Android 内核 - 03 创建应用窗口 和 子窗口

Android 的窗口分三类,应用窗口,子窗口,系统窗口,这里整理的是应用窗口和子窗口的创建。应用窗口每个Activity会对应着一个窗口。应用窗口的创建,相当于是 Activity,Window(PhoneWindow), WindowManager,WindowManagerImpl,和 View相互关联,并建立互动的一个过程。可以把这个过程分成两个部分,初始化设置和与

2016-03-17 22:17:35 1067

原创 Android 内核 - 02 Context

理解 Context上下文,环境,场景,一个动态的过程,用户和Android系统交互的一次过程。Context贯穿整个App,理解它的源码,可以比较好的理解一个App的执行过程。一个Activity或一个Service本质上就是一次与用户交互的,一个Activity或一Service就对应着一个Context。Context 个数 = Service个数 + Activ

2016-03-17 22:07:31 389

原创 Android 内核 - 01 Binder

Binder 概述Binder是一种架构,一种进程间通信(IPC)的机制,它工作在Linux内核层面,属于驱动层的一个模块。但它其实并不是与硬件打交道,是上层消息转发的一个通道。工作在内核层效率更高。Binder的应用在这种架构中有三个模块,服务端接口,Binder驱动,客户端接口。服务端接口:是Binder的一个对象,向客户

2016-03-17 21:56:59 389

原创 编程之美 - 寻找灌水王及扩展问题

问题描述:在一个论坛中,一个ID发的帖子超过了半数,问怎样能快速的找出这个ID。算法描述:书中给出了几种不同的思考方式,1) 先排序,然后逐个统计2) 排序后,第 N/2个元素一定是这个ID最好的方式是第三种,每次删除两个不同的ID,那么水王的ID在剩下的列表中仍然超过一半。或者可以这样理解 假设总共有10个帖子,6个是水王的,假设水王的

2016-03-17 20:23:06 662

原创 编程之美 - 抓石头游戏(3)

游戏规则: 有两堆石头,玩家A 和 B,两个人可以从一堆石头中取任意数目的石头或从两堆石头中取相同数量的石头。最后取得所有石头的人胜。书中的分析:从最简单的情况入手只有一块石头  == >  先拿的一定会赢。如果两堆石头数目相等   X:X  ==> 先拿的一定会赢。如果两堆石头数目为 1 和 2  ==> 先拿的一定会输。那么1 和 2 就

2016-03-11 08:57:09 1171

原创 趣味算法-求波峰波谷最大值

给一个数组,求它的最大的波峰波谷的落差。举例:数组  A={2, 3, 6, 5, 7, 9}, 其中 6 和 9 被看做是波峰,2和5则是波谷。D[2, 6]=4, D[6,5]=1, D=[5,9]=4. 则 Thus, MaxD(A)=4.想法:波峰不一定是数组中的最大值,他是趋势向下的转折点,波谷也不一定是数组中的最小值,他是趋势向上的转折点。数组中最边上的两个元素比较特殊

2016-03-07 20:36:20 14587

原创 趣味算法-0的迷宫

一个 5*5的矩阵,其中包含0-24 25个数字,数字在矩阵中没有顺序,其中0比较特殊,它可以和上下左右不同的数字进行交换,但一定在矩阵的范围内。0和上面的元素交换可以用 "U"表示;0和下面的元素交换可以用 "D"表示;0和左面的元素交换可以用 "L"表示;0和右面的元素交换可以用 "R"表示;举例:[20, 18, 7, 19, 10 24, 4

2016-03-07 20:14:35 427

原创 趣味算法-巧填运算符

给定一个整数数组,和一个单独的数字,在数组的每一个元素中间填加 "+"或"-" 使其运算结果等于单独的数字例如给定的数组为{7 2 4} ,数字为 9。运算结果为7-2+4=9    规则1:数组中元素的位置不能变化。规则2:如果无法实现则输出 Invalid举例:Input:1 2 3 4 101 2 3 4 5Output:1+2+3

2016-02-28 17:10:45 1860

原创 趣味算法-打印数字 (1)

给出一个数字N,按下面的规律打印图形。例如 N=3  输出:1*2*37*8*94*5*6N = 5  输出:1*2*3*4*511*12*13*14*1521*22*23*24*2516*17*18*19*206*7*8*9*10示例程序:#include using namespace std;void pri

2016-02-24 20:03:00 685

nodejs + mongodb 合集 (1)

nodejs + mongodb 资源 合集 01

2017-03-21

Android Activity间共享数据

一些Activity间共享数据的代码实例,用于开发时参考。

2015-11-29

Android Style实例总结

总结了一些Android按钮不同风格Style使用的实例,以便开发时使用。

2015-11-28

C# 并行编程示例源码

C# 并行编程的示例源码,用于学习并行编程的原理和使用方法。

2015-06-29

C# 并行编程代码示例 - 命令式任务并行

C# 并行编程代码示例 - 命令式任务并行。其中总结了一些代码示例,便于以后开发过程中使用。

2015-04-21

实例代码 学习libgdx - SpriteBatch

一个学习libgdx中类SpriteBatch的代码实例,其中包含了四个例子能显示使用SpriteBatch类编程的效果。

2014-06-23

AVL Tree 代码实例

AVL Tree 的代码实例,包括插入和删除节点操作。

2014-02-02

C#进程间通信-共享内存代码实例

C#进程间通信-共享内存代码实例。用实现了2个进程,他们之间使用共享内存方式进行通信。

2013-12-04

C#进程间通信-消息队列代码实例

C#进程间通信-消息队列代码实例。用实现了2个进程,他们之间使用消息队列方式进行通信。

2013-12-04

C#进程间通信-管道代码实例

C#进程间通信-管道代码实例。用实现了2个进程,一个Client 一个Server他们之间使用管道方式进行通信。

2013-12-04

C# TPL 同步实例代码

几个C# TPL 同步的实例代码,来自MSDN和C#本质论中,用于参考。

2013-08-30

C# TPL Sample

几个使用C# TPL编程的小例子,例如创建任务,ContinueWith的使用,异常处理等等。

2013-08-14

Android 线程+View的使用

一个线程控制View的代码实例,其中主要使用了两种方式:Post方式和Handler方式。

2013-07-27

二叉树实例

二叉树实例代码,包括插入,遍历,查找,和删除等操作。

2013-06-30

App 间相互调用实例代码

App 间相互调用实例代码,包括启动,查询系统App信息,结束目标App。

2013-06-10

普通树实例代码

普通树实例代码,使用深度优先和广度优先进行遍历。

2013-05-26

SlidingDrawer 代码实例

SlidingDrawer的代码实例。一个最简单的SlidingDrawer的使用方法。

2013-05-25

动画播放实例代码

一段动画播放的实例代码,主要利用的是Android 的AnimateDrawer类。

2013-05-19

代码实例:保存View中的图片到文件中

一个代码实例:把ImageView中的图片保存到指定的图片文件中。

2013-05-11

Gallery and ImageView 实例代码

Gallery and ImageView 实例代码

2013-04-30

WCF 实例代码

一个 WCF 的实例代码,简单的例子,来描述WCF工作方式,和创建客户端的方法。

2012-12-21

多线程队列源代码

多线程队列源代码,包括一个多线程队列的实现和测试程序。

2012-12-16

WCF Sample code 2

使用配置文件方式实现的WCF Service 和 Client 的代码实例。

2012-11-28

WCF Sample code 1

使用代码方式实现的 WCF Service and Client 的代码实例。

2012-11-28

快速排序 --- 非递归实现

快速排序 非递归实现方式的完整源代码和测试结果。

2012-11-04

多线程栈 源码

多核程序与并行设计中多线程栈的实现的源代码,其中还包括测试结果,用于学习参考。

2012-10-27

多核编程第6章-实例代码

多核编程第6章-实例代码: 包含四个并行模型的实例代码,委托(boss-worker) 对等(peer to peer) 流水线(pipeline) 生产者-消费者(producer-consumer),仅是框架的实例代码不包含异常处理,容错等其他考虑。

2012-07-29

android高级编程

Android高级编程, 英文版。Android 开发,移动开发。

2011-12-20

大规模C++程序设计

大规模C++程序设计, C++开发大型系统,C++开发。

2011-11-27

UML 基础案例与应用

UML 基础案例与应用,UML 应用实例, OO基础知识介绍。

2011-11-26

Android基础教程(第3版)

Android 移动开发基础教程。基本环境搭建,程序实例。代码说明。

2011-10-05

GPRS 网络结构描述和图示

GPRS 网络结构描述和图示,详细给出了网络上的节点和接口协议。

2009-11-28

空空如也

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

TA关注的人

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