自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (2)
  • 收藏
  • 关注

原创 websocket 设计

之前没有做web开发,认为web上进行数据传输只依赖http. 后来同事用到websocket, 才知道web上也能用socket. 那为什么出现了websocket? 大家都知道,http是无状态的。一个请求对应一个响应。请求必须由client端发起,如果server端主动向client发送数据怎么办呢? 1. client轮询向serve发送请求,比如每一秒就发送一次请求,查看ser

2016-09-26 17:03:37 946

原创 xml中的转义字符

今天在开发中遇到一个问题,写了如下的一名话: link . 结果将这句文本发送到服务器以后,总是发送失败。最后发现是&字符惹的祸。为什么呢?这在html中应该是再普通不过的一句话了。原来在xml中,有些字符是不允许被使用的。如 . 因为在xml中, 它有自己单独的意义,就是用作标签区域。那如果在xml,想输入带if price  100. 这个时候就出现了我们很常使用的方法,转义

2016-08-26 11:45:28 1928

原创 Use Azure Service Application and Service Principal

Azure has many functions that I don’t know. Recently I need to dynamically create Virtual Machines, but using my own credential is not properly since it needs 2FA to authenticate. I searched the docume

2016-08-01 15:26:09 890

原创 Android 开发环境安装

最近在学习Android开发,第一步得把开发环境搭好。因为Android上是使用java进行开发的,所以我得需要安装java的 jdk.去java的官网上就可以下载安装。 使用什么IDE呢,我下载了Android Studio,但是在运行时遇到了以下错误:>emulator: ERROR: x86 emulation currently requires hardware acceleration

2015-03-30 16:59:59 836

原创 unit test pattern--1

首先要说一下哪部分code一定要有unit test. 1. 依赖第三方接口的模块。因为第三方提供的结果不一定完全可信,数据可能会变化。如果有针对第三方接口的测试,当程序出现问题时,我们跑一下unit test, 就可以先判断出是第三方接口数据有变化还是自己的代码有问题。这样可以缩短debug的时间。 2. 模块之间的接口。和上面的原因一下,模块之间的接口是连接几个模块的唯一通道。通过对接口测试

2015-03-26 16:48:19 842

原创 为什么要有Unit Test

为什么需要写Unit Test?我刚开始工作的时候,每次测试自己的代码,都是从main函数开始。要测哪些代码就在main函数中写上调用代码的逻辑。有时甚至为了测一个小功能,把整个大的逻辑都要测。对我来说,这样测最大的问题在于:每次测试的代码都太多,导致总有些地方跑不到。所以我也不确定我写的代码到底有多少潜在的bug。后来老板以及同事都说写unit test。对代码加上unit test之后,发

2015-03-25 15:42:29 2391

原创 ArgumentException vs FormatException

今天在写程序的时候,传入的参数格式有问题,到底是抛出 ArgumentException 还是 FormatException呢?在网上一搜,发现了有人问了一个问题,见 http://stackoverflow.com/questions/2135328/why-does-formatexception-not-inherit-from-argumentexception这个同学说的是:F

2015-03-12 20:43:09 575

原创 robocopy来帮你copy文件

copy paste 估计是我们最常用的命令了。如果文件小的话没有问题,关键是文件大了,copy时间就会很长。时间长倒不要紧,在copy的过程中,经常中断。所以这个时候我们就需要robocopy了。robocopy用法很简单,你只需要打开命令行窗口, 再执行命令就可以了,当然也支持机器间的copy. 最简单的用法:> robocopy /MIR src dest你可以通过 roboco

2015-01-16 19:10:16 661

原创 Python包的安装

用到python,是因为我要用到画图。同事建议我

2014-07-27 09:45:56 519

原创 WPF Control event 触发

今天用WPF想实现一个简单的功能 : 一个Button,

2014-06-05 09:32:28 771

原创 循环数组实现一个队列

记录一下,等用到的时候直接copy, 不过这个不是线程安全的,如果需要多线程访问,需要加锁。using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace test{ public class Q

2014-03-27 17:00:35 541

原创 bcdedit error的问题

在执行 bcdedit -set TESTSIGNING ON 时,总是出现如下错误:An error has occurred settiing the element data.The Value is protected by Secure Boot policy and cannot be modified o deleted.在网上找了好久,没找到答案。在

2013-06-06 16:50:46 3827

转载 C#中byte数组与结构体之间的转换

原文: http://www.cnblogs.com/sunrack/articles/1244043.html在写C#TCP通信程序时,发送数据时,只能发送byte数组,处理起来比较麻烦不说,如果是和VC6.0等写的程序通信的话,很多的都是传送结构体,在VC6.0中可以很方便的把一个char[]数组转换为一个结构体,而在C#却不能直接把byte数组转换为结构体,要在C#中发送结构体,可以

2013-05-17 10:20:07 3760

原创 使用c#进行socket编程时,获取网卡的信息

在进行编程时,有时候,我们需要知道数据包是来自哪个网卡,网卡的IP地址是多少,以便于进行进一步的操作。由于收到的数据包可能是广播包或者是组播包,所以我们不能根据IP数据包的目的地址进行判断。那么使用C#进行网络编程时,如何获取到数据包相关的网卡信息?我在网上查阅了一些资料,感觉有的地方有些错误,导致自己运行了好久都有结果,最后在我们同事的指点下,明白了。书到用时方恨少!下面就介绍一下如何调

2013-05-06 21:38:01 2950

原创 VS中启动多个project

在VS中,可能会遇到这种情况,即一个solution中有多个project, 比如,有客户端和服务器端的程序,这样在运行的时候我需要同时启动这些project, 来进行测试,那一般情况下,我们只是启动一个project, ctrl + F5, 或者F5调试。那如何启动多个project呢?我查了一下msdn的帮助文档,里面的原文如下:To set the order in which

2013-05-02 10:35:41 3017

转载 office2007 word 从任意页插入页码,写毕业设计论文的进来看一下!

原文出处:http://blog.csdn.net/zg2010/article/details/5506068最近设计一份毕业论文,想从正文开始插入页面,但是设置页码的时候封面和目录都显示了页码,本人花了一翻功夫才把目录与正文分开(一般封面与目录无需设置页码)。步骤如下: 1、将光标移到正文第一个字符处,然后点击命令“页面布局->分隔符->分节符->下一页”(分节符中还有个连

2012-12-27 17:01:43 3580

原创 在pdf中增加签名

最近找工作,经常是发的offer是电子版的,需要你在上面签名。一般是先把offer letter打印出来,再签名,再扫描,感觉这样好麻烦,作为一个学计算机的,应该多用现成的工具,自食其力。莫非就是用ps,但是本人对ps几乎都不会,全是在网上查,最后终于弄好了。其实就是在pdf中添加图片。在网上找了一个pdf编辑的软件很好用,多谢网友推荐。软件准备:1. PDFEditPortable,网上

2012-12-07 19:04:37 5109

原创 一个环,有n个点, 问从0点出发,经过k步回到原点有多少种方法

一个环,有n个点, 每次只能走一步, 问从原点0出发,经过k步回到原点有多少种方法?                     0                  /         \                 /           \              2  ---------1    现在把环上的点编号为0 到 n-1, 即从0点出发,再回到0点有

2012-10-21 21:23:35 6307 3

原创 关于图的几个算法

在数据结构中,会涉及到图的几个算法: 最小生成树,拓扑排序,关键路径,从某点到其余点的最短距离。最小生成数的算法有 Prim(普里姆)算法和Kruskal(克鲁斯卡尔)算法。 从某点到其余点的最短距离是 Dijkstra(迪杰斯特拉)算法。最小生成树:构造边通网的最小代价的生成树。在构造最小生成树时,利用了其性质: 假设 N=(V, {E})是一个连通网, U是顶点集V的一个非

2012-09-25 11:24:05 810

原创 java中的反射机制——如何访问私有成员的私有方法

接触java的反射机制,是因为对程序进行测试时用到的。为了方便代码管理,测试代码和开发代码可以单独存放。但是你会用到某些函数进行测试,但是又不是对外公开的接口,这个时候,就可以使用java的反射机制来进行测试。基本的反射机制的例子,网上有很多,现在说一下需要注意的几点。 j2se api文档是一个不错的工具,尤其是对接口不熟悉的时候,能够进行很方便的查找。最基本的反射机制调用分为以下步

2012-09-21 19:21:46 2029

原创 java中的velocity

之前没接触过,在看别人代码的时候,发现有用到。后来一查,原来velocity是实现MVC的一个好工具。在我使用中遇到的一个问题是,如何把java中的list通过velocity呈现在界面上。如果list里面是String类型的话,比较简单。如果是一个,也不复杂,只不过要知道怎么用。以下两个链接供参考:http://www.blogjava.net/changedi/archive/20

2012-08-17 17:23:37 886

原创 【编程珠玑】实现位数组

在C++中,有现成的接口, bitmap。那如何实现自己的位数组呢,即按位操作。有时会用到使用位数组对数据进行排序的情况(数据跨度不大,整数),这样在O(n)的时候内就可以完成排序。【编程珠玑上】的实现非常简单。其实和内存定位是一样的,先缩写大范围,再缩写小范围。内存查找的时候,先找到相应的段地址,再在段内寻址。使用数组实现,先定位到某一位在第几个数组元素中,再设定这个元素的第

2012-06-12 17:30:17 1375

原创 先序遍历和后序遍历为什么不能唯一地确定一棵树?

以前大学学数据结果的时候,我们就知道,根据一棵树的先序遍历和中序遍历,或者后序遍历和中序遍历序列,都可以唯一地确定一棵树。树中的节点,分为度为0,1,2的结点。如果树中只有一个节点,那么可以唯一确定一棵树,即只有一个节点的树。当树中结点个数大于等于2的情况,树中的叶子结点和它的父亲结点中,至少有一种存在如下的情况。(为方便起见,我们先从叶子节点入手)             case

2012-05-28 16:54:27 21074 6

原创 归并排序

归并排序,不单单是归并排序,应该更重要的是一种分治的思想。把问题大而化小,再将小问题的结果汇总,得到大问题的解。递归的写法更能体现归并的分治思想,但是递归调用,当层次非常多的时候,会影响性能,现在考虑如何把归并的递归方式变成非递归方式。归并的完整描述是:假设初始序列含有n个记录,则可看成是n个有序的子序列,每个子序列的长度为1, 然后两两归并,得到[n/2]个升序为2(或1,最后一个可

2012-05-25 15:31:42 748

转载 二分查找,要注意的地方

二分查找的思想,大家都知道,但是要写出完整的二分查找,还是有几点需要注意的。在mid=(low+high)/2时,为了防止两个大数相加越界,我们可以使用 mid = low + (high-low)/2同时要注意while的判断条件,下面是转载的别人的博客,说的挺好的,希望大家也二分查找的时候,也注意。 low 和high的值如何变化的, 是要+1 , -1,还是不要呢--------

2012-05-11 10:16:36 2238

原创 二叉树的非递归遍历

树的递归遍历比较简单,就是两三句话,相对来说理解二叉树的非递归遍历稍微难一点。在数据结构上,有二叉树的中序遍历非递归算法。可以根据中序遍历来写出先序和后序遍历。 在中序遍历时,当非空元素进行出栈时进行访问。访问结束时,右子树结点进栈。会对先序遍历的特点,我们可以得到:可以在元素进栈的过程中,访问元素,这样就可以先序访问了。和中序遍历比,进行顺序都一样。 对于后序遍历,可能和

2012-04-19 15:59:38 500

原创 windows的命令行窗口

每次看到命令行窗口,太小了,就调成了全屏模式,但是怎么也回不去了。在网上查了一下用 alt + enter 就可以了。学习了。万一再有类似问题,就懂了

2012-04-19 08:19:52 513

原创 通用栈

栈是一种用得比较多的数据结构,用处很广。但很多时候,栈中的元素是不一样的。那如何写一个通用的栈呢。在C++中有模板,那如何用C实现通用的栈呢。在C语言中,不同的数据类型,占用的字节数不一样。参考qsort对不同数据类型的排序方法,可以得知,使用一个指针,以及此类型的大小即可。具体的请参考以下代码实现。/*实现通用的栈结构 */#include typedef struct

2012-04-18 14:37:42 1528

原创 foxmail接收163邮件的问题

用foxmail客户端接收邮件是挺方便的,但是对于163的邮箱,怎么也接收不了邮件,在网上查了好多,有的也不能用,最后找到一个可以用的。主要是启动安全。大家可以参考以下的链接: http://wap.mail.163.com/xm/static/html/163_symbian_2.html鉴于7.0和6.5版本可能不太一样,我以7.0为例说一下设置。建立好账号以后,请在 工具--

2012-04-16 20:27:26 8580

转载 C/C++中的自增操作

转自: http://developer.e800.com.cn/articles/2007/427/1177657988954238028_1.html总之,在进行表达式运算的时候(不加register, volatile),有个原则就是:自左向右运算, 两个数相加, 当这两个数中有++a时,则先对其进行自加再求和, a++永远是表达式计算完毕以后再自增。这里主要研究一下

2012-04-12 20:31:39 1599

原创 grep 命令好强大

想查找某个函数,但是又不知道目录下的哪个文件,或者打印出匹配的前后文,man 了一下grep, 发现grep好强大,而且学会使用man会使使用很方便。可以递归地匹配目录, 即 -r -R 参数 (以前只知道匹配文件呢)打印文件名: -H输出匹配前的n行: -B (Before)输出匹配后的n行: -A  (After)line number: -n最简单的,比如我想知道

2012-04-09 10:35:18 544

原创 数组元素的其它赋值方法

原来数组元素还可以这样赋值,C语言用法真多,表示知道的太少了。struct A{int a, b;};struct A arr[] = { [0] ={1,2}, [1] = {3,4}};原来还可以通过指定下标的方式赋值,长见识了

2012-04-03 10:51:52 461

转载 重新设置全局PATH

在一个terminal中,直接修改PATH时,在其它的terminal中PATH  的值并没有改变。修改方法如下:打开一个终端窗口,编辑/etc/profile,在该文件的末尾加入:    PATH=${PATH}:Your_path    比如:PATH=${PATH}:/usr/local/arm/2.95.3/bin编辑完成,保存profile文件。然后注销系统,

2012-03-26 21:22:27 624

原创 通用双向链表及宏的使用

在看openflow源代码的时候,发现各种宏定义,以及对链表的操作,简单拿出来一个小例子,供学习使用。#include #include #include #define LIST_FOR_EACH_SAFE(ITER, NEXT, STRUCT, MEMBER, LIST) \ for (ITER = CONTAINER_OF((LIST)->next, S

2012-03-20 09:54:32 841

转载 C语言中如何使用宏 包括单双井号 可变参数

C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) /

2012-03-19 09:41:59 412

转载 数组下标为0

长度为0的数组——C语言的非标准用法之一 在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,如果你致力于编写可移植,或者是稍稍需要跨平台的代码,这些Trick最好还是收起来的好。

2012-03-15 15:51:03 2309 1

原创 strtok_r

在 linux  下,我们可以通过  man strtok_r 来查看一下它的使用。它的基本作用是将字符串分成若干份,分隔符是指定的字符串中的任何一个字符。函数原型:char * strtok_r(char *str, const char *delim, char **saveptr);str: 是要分隔的字符串delim: 分隔符的集合。注:这是一个字符串,是所有分隔符的集合。

2012-03-09 14:08:18 594

原创 原来 C 里,也有bool 类型

原来C里面也有bool类型,以前只知道用 整型来判断。 C99以后,在 中也加入了bool类型。bool flag = true;  true的时候, 值为1, false 为0

2012-03-08 16:47:47 544

原创 getopt_long 与 optind

刚开始接触 一些处理命令行参数的操作,开始不太明白,用例子测试了一下,感觉比以前明了多了。命令行参数有长参数如version, 还有短参数 如 v, 那么用这两个都可以。程序处理的时候,会首先把长参数转换成对应的短参数,如会把version转成v, 再进行 v 对应的操作就可以了。命令行参数的选项,有的需要参数,有的不需要参数,或者有的参数是可选的,那么怎么区分呢?首先,对这些选项,如

2012-03-07 18:43:50 4209

原创 optind

在处理命令行参数时,用到一个变量 optind, 原来是系统定义的。可以在命令行中,通过 man optind 来看相关信息optind: the index of the next element to be processed in the argv.  The system initializes it to 1. The caller can reset it to 1 to re

2012-03-07 15:22:34 12215

二叉树非递归遍历(前序、中序、后序)

C语言实现通用栈结构 递归遍历二叉树 非递归遍历二叉树 (前,中,后序) exmaple.c为测试文件

2012-04-19

汉诺塔非递归算法 数据结构

汉诺塔非递归算法 用栈作为辅助存储结构 和数据结构中中序遍历二叉树的方法类似

2009-08-28

空空如也

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

TA关注的人

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