`
jiq408694711
  • 浏览: 33246 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论
文章列表
客户端: #include "apue.h" #include <netdb.h> #include <sys/socket.h> /* 问题: UDP通信套接字描述符没有同任何地址绑定,那么在这个套接字描述符上面发送数据有什么意义 ??? 是不是系统默认将其与本机地址绑定了? 答案:假如c_fd没有显式和任何本地"端口"绑定,那么内核会为其绑定一个临时"端口", 以便其可以通过该"端口"将数据发送到目的地址 !!! >>>同Unix域套接字通信不同,这 ...
小端: 低地址存放低位字节。(x86是小端模式) 大端: 低地址存放高位字节。(非x86是大端模式) 例1:看下面的几个字段 void testEndianMem(){ char a[] = {0x12,0x34}; short b = 0x5678; int c = 0x1a2b3c4d; } 栈的按照地址的反方向增长,故存放到内存的情况应该是: 先存a,再存b,再存c。 因此c的地址最小,其次是b,其次是a。 内存中的情况如下图所示: 单独看a,因为存放的类型是字节长度,故按照地址增长方向存放的是12,34。 在看b,b是两字节的类型,x86是小端,所 ...
为什么要地址对齐? * 我们在访问内存时,如果地址是按4字节对齐,则访问效率会高很多。 * 这个问题的原因在于访问内存的硬件电路。一般情况下,地址总线总是按照对齐后的地址来访问。 * 例如你想得到0x00000001开始的4字节内容,系统首先需要以0x00000000读4字节, * 然后从中取得3字节,然后在用0x00000004作为开始地址,获得下一个四字节, * 在从中得到第一个字节,两次组合出你想得到的内容。但是如果地址一开始就是对齐到 * 0x00000000,则系统只要一次读写即可。 所以,为了性能考虑,编译器会做地址对齐。 地址对齐的原则: 每个基本类型有自己默认的对齐值。 然 ...
#include <iostream> using namespace std; #pragma pack(2) class A{ int i; //4 union U{ //14 char buff[13]; int i; }u; //注意,这里是申明了一个union变量 enum{red, green, blue} color; //4 void foo() {} //0 typedef char* (*f)(void*); //0 i ...
(一)第一个例子是简单的Socket通信,一个客户端和一个服务器线程: /** * SimpleClient.java */ package network; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; public class SimpleCl ...
package someTest; public class BreakLoops { public void test(){ int i; breakPoint: for(i=0;i<1000;i++){ for(int j=0;j<1000;j++){ if(i+j == 1000) break breakPoint; } } if(i != 1000)System.out.print("Break from loops\n"); } public static void mai ...
/** * */ package iostream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import ...
/** * */ package string; /** * @author Administrator * “==” 比较引用,即判断是否指向同一个对象 * “equals()” 默认是比较引用,包装类重写了这些方法,比较对象内容,我们自己的类一般也重写equals方法 * * equals方法属于Object类,默认的是比较两个对象引用是否相等,即是否指向同一个对象 * 和使用==号来比较的结果是一样的。 * * 对于String,Integer等包装类型来说,他们已经重写了Object的equals方法,根据内容判断是否相等。 * ...
package container; import java.util.HashMap; import java.util.HashSet; import java.util.Map.Entry; /** * @author jiq408694711@163.com * * 测试HashSet中,通过equals方法检测到重复之后会发生什么。 * 以及测试hashCode函数生成的散列码相同之后,会不会被去掉。 * */ class TestObject{ int x; int y; public TestObject(int x, ...
#include <iostream> #include <memory.h> using namespace std; /* */ void test(){ char *a = "hello"; char b[] = {'h','e','l','l','o','\0'}; char c[] = "hello"; cout<<sizeof(a)<<endl; //4 cout<<sizeof(b)<<endl; //6 cout<&l ...
#include <iostream> using namespace std; /** * 二分查找之一: 可以找到连续重复出现的第一个出现的元素 */ int binarySearch(int a[], int n, int x){ int l = 0, h = n-1; int m; while(l <= h){ m = (l+h)/2; if(x <= a[m]) h = m-1; //如果相同,仍然向前走 else l = m+1; //否则向后走 } //如果查找的元素没有连续出现,则取更大的指针 ...
上交的july的文章: http://blog.csdn.net/v_july_v/article/details/6897097 他从 前缀树(Trie树),到后缀树(suffix树),再谈到自动机(automation machine)和KMP。 都是解决字符串的经典方法。有兴趣的同学可以仔细研读。 =========== 后缀树 与 KMP等算法 ==================== 后缀树(SuffixTree)的文本匹配算法后缀树(SuffixTree)是一种特殊的Trie,它的用途非常广泛,其中一个主要的应用是作文本匹配,也像KMP等算法一样,它也是空间换时间的一个典 ...
【特别注意】:这个方法有问题,正确的方法是用堆实现,最近比较忙,没时间写代码,过一段时间补上。/** * 两个数组a1和a2,大小都为k。 * 有两个序列A和B,A=(a1,a2,...,ak),B=(b1,b2,...,bk),A和B都按升序排列, * 对于1<=i,j<=k,求k个最小的(ai+bj),要求算法尽量高效。 */ #include <stdio.h> #define M 6 #define N 8 int a1[M] = {1,3,5,6,9,10}; int a2[M] = {2,2,3,3,5,11}; int x = 0; ...
/** * 区间覆盖问题: 要求给定一组已经排好序数字,每个数字代表一个以其为起点的单位区间。 * 然后给定一个区间长度L, 要求能够覆盖到最多的单位区间,并且整个长度不超过L。 * 同时给出覆盖了哪些区间。比如L=5,{1,2,7,10,11,12,14,20,22,23}, * 能够覆盖最多10,11,12,14四个区间,覆盖长度长度为5 <= L。 */ #include <stdio.h> #define M 10 //单位区间数目 #define L 5 //区间长度 int a[M] = {1,2,7,10,11,12,14,20,22,23 ...
/** * 有一个 M x N 的矩阵,其中每个格子里面都有特定的钱。 * 左上角走到右下角,只能向右或者向下走,问怎么走才能捡到最多的钱。 * 输出捡钱的路径。 * 解析: 动态规划。 首先找到子结构,构造递推式。 * 对于每个位置能捡到的最多的钱是: * a[i][j] = max{a[i-1][j] + w[i][j],a[i][j-1] + w[i][j]} */ #include <stdio.h> #define M 5 #define N 4 int w[M][N]; //矩阵 int a[M][N]; //当前捡到的最大的钱的值 int ...
Global site tag (gtag.js) - Google Analytics