2016年3月5日

Web开发相关

摘要: basePath String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+ 阅读全文

posted @ 2016-03-05 15:11 huashunli 阅读(174) 评论(0) 推荐(0) 编辑

2016年3月3日

static在C++和Java中的区别

摘要: 一.static涉及普通变量、函数: 1.静态全局变量/静态函数 隐藏特性 仅在声明它的文件中可见,同一工程的其它文件中不可见,可解决不同文件的变量/函数重名问题; 2.静态局部变量 记忆特性 作为static局部变量在函数内定义,其作用域同普通局部变量,但生存周期为整个源程序,在程序刚开始运行完成 阅读全文

posted @ 2016-03-03 19:31 huashunli 阅读(1748) 评论(0) 推荐(0) 编辑

2016年3月1日

Java内存分配

摘要: 方法区域:各线程共享的内存区域,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据;虽然Java虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做Non-Heap(非堆),目的应该是与Java堆区分开来;当方法区无法满足内存分配需求时,将抛出OutOfMemo 阅读全文

posted @ 2016-03-01 11:57 huashunli 阅读(158) 评论(0) 推荐(0) 编辑

C++内存分配

摘要: 栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等,操作方式类似于数据结构的栈; 堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收,操作方式类似于链表; 全局/静态区:全局变量和静态变量被分配到同一块内存中,初始化的全局变量和静态变量存放在一块区域,未初始化的全局变量和静态 阅读全文

posted @ 2016-03-01 11:50 huashunli 阅读(141) 评论(0) 推荐(0) 编辑

2015年9月4日

扩展哈夫曼编码

摘要: POJ1061青蛙的约会#include #include using namespace std;int gcd(long long m, long long n){ if(n == 0) return m; return gcd(n, m%n);}void Cal(lo... 阅读全文

posted @ 2015-09-04 15:58 huashunli 阅读(1768) 评论(0) 推荐(0) 编辑

2015年8月17日

用递归函数和栈操作逆序一个栈

摘要: 问题描述: 一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,而不能用另外的数据结构。实现代码:#include #include using namespace std;... 阅读全文

posted @ 2015-08-17 11:32 huashunli 阅读(304) 评论(0) 推荐(0) 编辑

2015年8月16日

非递归遍历二叉树

摘要: #include #include #include #include using namespace std;typedef struct node{ int flag; char value; struct node *lchild; struct node *rchil... 阅读全文

posted @ 2015-08-16 22:54 huashunli 阅读(140) 评论(0) 推荐(0) 编辑

malloc/free和new/delete

摘要: 一. 执行内容:malloc / free:malloc 函数的参数接收所需分配的内存字节数,如果内存满足请求量,将返回指向被分配内存起始地址的指针;free 释放指针所指向的内存,其中指针必须指向所释放内存空间的首地址;new / delete:new 分为两步:1).通过operator new... 阅读全文

posted @ 2015-08-16 17:30 huashunli 阅读(154) 评论(0) 推荐(0) 编辑

洗牌算法及其证明

摘要: 问题定义:给定有序序列1-n,要求将其打乱,使得每个元素在任意位置出现的概率均为1/n。程序实现:void shuffle(int *arr, int n) // n为序列中元素总数{ int idx; for(int i = 0; i < n; i++) { ... 阅读全文

posted @ 2015-08-16 16:06 huashunli 阅读(512) 评论(0) 推荐(1) 编辑

野指针问题

摘要: 1. 定义: 野指针是指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为NULL来避免,而只能通过养成良好的编程习惯来尽力减少,对野指针进行操作容易造成程序错误。2. 形成原因:(1)指针变量未初始化 任何指针变量刚被创建时不会自动成为NULL指针,... 阅读全文

posted @ 2015-08-16 10:59 huashunli 阅读(304) 评论(0) 推荐(0) 编辑

2015年8月15日

计算编辑距离

摘要: 编辑距离,又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g)问题:找出字... 阅读全文

posted @ 2015-08-15 22:54 huashunli 阅读(269) 评论(0) 推荐(0) 编辑

数组指针/指针数组的使用

摘要: #include #include #include using namespace std; #define M 4 #define N 5 int main() { int m = 4, n = 5; char arr[4][5] = { {'A','B','C','D','E'}, {'F','G','H','I','J'}, ... 阅读全文

posted @ 2015-08-15 21:56 huashunli 阅读(1142) 评论(0) 推荐(0) 编辑

2015年8月14日

sizeof/strlen/length

摘要: 1.sizeof() sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存... 阅读全文

posted @ 2015-08-14 22:55 huashunli 阅读(201) 评论(0) 推荐(0) 编辑

断言assert的用法

摘要: 1.首先明确assert实质上是宏,原型定义在中,作用是如果expression返回错误,则先向stderr打印一条出错信息,然后调用abort来终止程序的运行;使用assert的缺点是,频繁的调用会极大影响程序性能,增加额外开销。#include void assert( int expressi... 阅读全文

posted @ 2015-08-14 21:32 huashunli 阅读(284) 评论(0) 推荐(0) 编辑

2015年8月13日

union联合体

摘要: 共用体(或联合体)定义:在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中,也就是使用覆盖技术,几个变量互相覆盖。共用体运用规则:1.共用体变量分配的内存大小由最大成员的大小决定;2.共用体变量的地址和它各成员的地址都是同一地址,所有成员的存放都是从低地址开始;3.由于... 阅读全文

posted @ 2015-08-13 23:27 huashunli 阅读(312) 评论(0) 推荐(0) 编辑

2015年8月12日

八皇后问题之回溯法

摘要: #include #include #include #include #include using namespace std;#define N 20int n, sum, x[N+1]; // n:问题规模 sum:方案数目 x[]方案存储void Init(){ ... 阅读全文

posted @ 2015-08-12 19:57 huashunli 阅读(151) 评论(0) 推荐(0) 编辑

LIS/LCS/LCIS

摘要: 1.最长上升子序列2.最长公共子序列对于两个序列X={x1,x2,x3...xi...},Y={y1,y2,y3...yi...}3.最长上升公共子序列以下摘自刘汝佳《最长公共上升子序列(LCIS)的O(n^2)算法》预备知识:动态规划的基本思想,LCS,LIS。问题:字符串a,字符串b,求a和b的... 阅读全文

posted @ 2015-08-12 18:20 huashunli 阅读(222) 评论(0) 推荐(0) 编辑

2015年8月11日

最小生成树

摘要: 1.Prim算法:1.算法描述:1).输入:一个加权连通图,其中顶点集合为V,边集合为E;2).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空;3).重复下列操作,直到Vnew= V:a.在集合E中选取权值最小的边,其中u为集合Vnew中的元素,而v不在Vn... 阅读全文

posted @ 2015-08-11 12:50 huashunli 阅读(161) 评论(0) 推荐(0) 编辑

最短路径

摘要: 1.Dijkstra算法:1.定义概览Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构... 阅读全文

posted @ 2015-08-11 12:49 huashunli 阅读(178) 评论(0) 推荐(0) 编辑

2015年8月8日

DFS/BFS

摘要: Sudoku Killer#include #include #include int zeroNum;int map[9][9];int zero[81][2]; // 存储空位坐标,dfs直接搜索这些位置void print(){ for(int i = 0; i zer... 阅读全文

posted @ 2015-08-08 16:01 huashunli 阅读(124) 评论(0) 推荐(0) 编辑

2015年7月21日

快速幂/费马小定理

摘要: 1.为了理解快速幂思想,先看一个例子:求5 ^ 19 = ? 因为19(10) = 10011(2),所以有5 ^ 19 = 5 ^ (1+2+16) = (5^1) * (5^2) * (5^16); 将二进制分解思想实现,代码如下:#include int QuickPow(int p, int... 阅读全文

posted @ 2015-07-21 09:38 huashunli 阅读(417) 评论(0) 推荐(0) 编辑

2015年7月19日

快速排序/归并排序

摘要: #include #include #include #include int *array;int cnt, head, tail;void random(int cnt, int head, int tail){ srand((unsigned)time(NULL)); for(in... 阅读全文

posted @ 2015-07-19 22:45 huashunli 阅读(146) 评论(0) 推荐(0) 编辑

2015年7月17日

贪吃蛇游戏涉及的问题

摘要: 先上效果图,源码见github:https://github.com/xianshuihu/GreedySnake,此篇文章主要分析在编码时涉及到的相关问题:1. Windows API 函数实现这类游戏的基础是学会调用windows API函数,具体使用可查看Microsoft给出的文档Conso... 阅读全文

posted @ 2015-07-17 19:17 huashunli 阅读(560) 评论(0) 推荐(0) 编辑

2015年7月16日

卡塔兰数

摘要: 出栈次序问题:一个栈的进栈序列为1,2,3……n,有多少种不同的出栈序列?#include #include #include using namespace std;#define N 100int len, num[2], arr[N]; // num[2]分别记录剩余的入栈出栈操作次数st... 阅读全文

posted @ 2015-07-16 12:06 huashunli 阅读(198) 评论(0) 推荐(0) 编辑

三分法

摘要: 1.三分法模板double Calc(Type a){ /* 根据题目的意思计算 */}void Solve(void){ double Left, Right; double mid, midmid; double mid_value, midmid_value; L... 阅读全文

posted @ 2015-07-16 12:00 huashunli 阅读(256) 评论(0) 推荐(0) 编辑

哈弗曼编码

摘要: #include #include #include using namespace std;#define MAXNUM 10#define MAXBIT 10#define MINWEIGHT 1000000typedef struct{ char value; ... 阅读全文

posted @ 2015-07-16 10:57 huashunli 阅读(153) 评论(0) 推荐(0) 编辑

RAID01/RAID10

摘要: 1.RAID01和RAID10都是RAID0和RAID1的结合,兼顾在存储性能和安全性能方面的优点,先介绍二者各自原理:RAID01是加速镜像(即先条带再镜像),图中有8块物理磁盘,首先RAID控制器通过RAID0技术分别抓取四块磁盘组成两个虚拟盘,然后控制器再通过RAID1技术将两个虚拟盘形成一个... 阅读全文

posted @ 2015-07-16 09:42 huashunli 阅读(653) 评论(0) 推荐(0) 编辑

2015年7月13日

树状数组

摘要: 适用条件:给定一个规模较大的数组,其中元素变更频繁,随时对数组中所有数的求和。图中底层为给定数组a,上层为辅助求解的树状数组c,二者之间的关系为 :当c的下标i为奇数时,c[i] = a[i];当c的下标i为偶数时,取决于i的因子中最大的一个“2的整数次幂”是多少,如6的因子中为2,则c[6] = ... 阅读全文

posted @ 2015-07-13 17:30 huashunli 阅读(107) 评论(0) 推荐(0) 编辑

字符串匹配

摘要: KMP#include #include #define N 102int len1, len2;char des[N], pat[N];int next[N], ans;void Init(){ scanf("%d%d", &len1, &len2); getchar(); fo... 阅读全文

posted @ 2015-07-13 14:39 huashunli 阅读(128) 评论(0) 推荐(0) 编辑

二分图匹配

摘要: 1.相关概念理解:二分图:是这样一个图,它的顶点可以分为X和Y两个集合,所有边关联的两个顶点恰好分属于X和Y;二分图匹配:给定二分图G,在G的一个子图M中,M的边集中任意两条边都不依附于同一个顶点,则称M是一个匹配;最大匹配:包含边数最多的匹配称为最大匹配;完美匹配:若所有点都在匹配边上,则称这个最... 阅读全文

posted @ 2015-07-13 10:01 huashunli 阅读(193) 评论(0) 推荐(0) 编辑

2015年7月12日

SublimeText2

摘要: 插件使用方法:Ctrl+Shift+P 调用命令面板,我们就会找到一些以“Package Control:”开头的命令,我们常用到的就是:Install Package (安装扩展)List Packages (列出全部扩展)Remove Package (移除扩展)Upgrade Package ... 阅读全文

posted @ 2015-07-12 23:34 huashunli 阅读(202) 评论(0) 推荐(0) 编辑

并查集

摘要: 用并查集查找根节点,包括三种方法:1.朴素查找法:int find(int x){ int r = x; while(father[r] != r) r = father[r]; return r;}2.路径压缩(递归):int find(int x){ if(... 阅读全文

posted @ 2015-07-12 22:12 huashunli 阅读(155) 评论(0) 推荐(0) 编辑

素数筛选

摘要: 素数筛选目的是筛选出某一区间[m, n)内的所有素数,常见方法包括如下几种:1.朴素的筛选法:先写出判断函数isPrime(),再对区间内的数依次调用isPrime()进行判断,算法核心是以2~根号n作为除数。#include bool isPrime(int n){ /* C+... 阅读全文

posted @ 2015-07-12 15:01 huashunli 阅读(219) 评论(0) 推荐(0) 编辑

2015年7月6日

背包问题

摘要: ------------------- 0-1背包-------------------问题描述:N件物品和容量为V的背包;每种物品均只有一件,且第i件物品重量为weight[i],价值为value[i]。求将哪些物品放入背包可使物品重量总和不超过背包容量,且价值总和达到最大?解题思路:首先定义问题... 阅读全文

posted @ 2015-07-06 16:11 huashunli 阅读(153) 评论(0) 推荐(0) 编辑

2015年7月4日

基本TCP套接字编程

摘要: 在学习具体函数前,必须先有这样一个认识,socket和各种相关函数的实质是什么?socket源于Unix,而Unix有着“一切皆文件”的哲学思想,socket是“open-write/read-close”模式的实现,那么socket就会提供接口函数来实现对其进行相应操作。1.socket():在成... 阅读全文

posted @ 2015-07-04 23:07 huashunli 阅读(234) 评论(0) 推荐(0) 编辑

导航