二叉树序列化

文件的大小尽可能的小。

     想了四种方法:

     第一种方法:把二叉树按前序和中序遍历一遍,存两次二叉树。

     第二种方法:将二叉树按左枝为0,右枝为1进行路径编码,那么每个节点都可以表示成,节点信息和路径信息进行永久化。 
     第三种方法:将二叉树变成满二叉树,采用数组存储满二叉树,那么数据index和根据二叉树的节点信息进行永久化。

0123456789
ROOTLRLLLRRLRRLLLLLRLRL


     第四种方法:采用一个位图和所有节点信息进行存储,位图上的0代表着相应满二叉树的节点没有节点,1代表有节点信息。
     四种方法比较:第一种方法,冗余信息量刚好是原有数据的两倍。
                                 第二种方法存储的是节点信息和路径信息,冗余信息量是(路径信息*节点数)
                                 第三种方法:冗余信息为,sizeof(unsigned int) * 节点数
                                 第四种方法:冗余信息为树的层数K,(2^k -1)bit 
      因此第四种方法在二叉树是满二叉树或者二叉树的层数比较小的情况下,信息量比较小,但是在树的层比较丰富的情况下,冗余信息非常大。我觉得也不是什么特别好的方法。貌似我还是没有得到正确答案。

[html] view plaincopyprint?
  1. #include<iostream>  
  2. #include <fstream>  
  3. #include<math.h>  
  4.   
  5. #define  max(a,b) ((a)>(b)?(a):(b))  
  6.   
  7. using namespace std;  
  8. //随机数大小  
  9. const int NUMBER = 9;  
  10. //修改树的深度  
  11. const int DEPTH = 6;  
  12.   
  13. //文件流  
  14. ofstream fout3("serialize3.txt");  
  15. ofstream fout4("serialize4.txt");  
  16. ofstream fout("tree.txt");  
  17.   
  18. //树节点信息  
  19. typedef struct Node  
  20. {  
  21.     int data;  
  22.     Node * left;  
  23.     Node * right;  
  24. } BinaryTree;  
  25.   
  26.   
  27. //随机生成二叉树  
  28. void generate(Node ** tree, int d)  
  29. {  
  30.     *tree = (Node *)malloc(sizeof(Node));  
  31.     (*tree)->data = rand()%NUMBER + 1;  
  32.   
  33.     int isleft = rand()%DEPTH;  
  34.     if(d+isleft < DEPTH)  
  35.         generate(&((*tree)->left), d+1);  
  36.     else  
  37.         (*tree)->left = NULL;  
  38.       
  39.     int isright = rand()%DEPTH;  
  40.     if (d+isright < DEPTH)  
  41.     {  
  42.         generate(&((*tree)->right), d+1);  
  43.     }  
  44.     else  
  45.         (*tree)->right = NULL;  
  46. }  
  47.   
  48. //获取树的深度  
  49. int getTreeDepth(Node * tree)  
  50. {  
  51.     if (tree == NULL)  
  52.     {  
  53.         return 0;  
  54.     }  
  55.     int left = getTreeDepth(tree->left);  
  56.     int right = getTreeDepth(tree->right);  
  57.       
  58.     return (max( left, right ) + 1);  
  59. }  
  60.   
  61. //打印第i层树  
  62. void printTreeLevel(Node * tree, int index, int level,int depth)  
  63. {  
  64.     if(tree == NULL)  
  65.     {  
  66.         int length = pow(2.0,(depth-index))-1;  
  67.         for (int i=1; i <= length; i ++)  
  68.         {  
  69.             fout << "  ";  
  70.             cout <<" ";  
  71.         }  
  72.         return;  
  73.     }  
  74.     if(index == level)  
  75.     {  
  76.         //左子树宽度  
  77.         int length = pow(2.0,(depth-level-1))-1;  
  78.         for (int j=1; j <= length; j ++)  
  79.         {  
  80.             fout <<"  ";  
  81.             cout <<" ";  
  82.         }  
  83.         fout << tree->data;  
  84.         cout << tree->data;  
  85.         //右子树宽度  
  86.         for (int j=1; j <= length; j ++)  
  87.         {  
  88.             fout <<"  ";  
  89.             cout <<" ";  
  90.         }  
  91.         return;  
  92.     }  
  93.   
  94.     printTreeLevel(tree->left, index +1,level, depth);  
  95.     fout <<"  ";  
  96.     cout <<" ";  
  97.     printTreeLevel(tree->right, index+1, level, depth);  
  98. }  
  99.   
  100. //逐层遍历二叉树  
  101. //两种思路,一种采用广度遍历的方法,利用链表空间逐层存储,逐层打印  
  102. //一种使用递归的方法逐层打印  
  103. void printTree(Node * tree)  
  104. {  
  105.     int depth = getTreeDepth(tree);  
  106.   
  107.     for (int i=0; i < depth; i ++)  
  108.     {  
  109.         printTreeLevel(tree, 0, i,depth);  
  110.         fout << endl;  
  111.         cout <<endl;  
  112.     }  
  113. }  
  114.   
  115. //序列化,四种方法  
  116. //第一种方法:把二叉树按前序和中序遍历一遍,存两次二叉树。  
  117. //第二种方法:将二叉树按左枝为0,右枝为1进行路径编码,那么每个节点都可以表示成,节点信息和路径信息进行永久化。  
  118. //第三种方法:将二叉树变成满二叉树,采用数组存储满二叉树,那么数据index和根据二叉树的节点信息进行永久化。  
  119. //第四种方法:采用一个位图和所有节点信息进行存储,位图上的0代表着相应满二叉树的节点没有节点,1代表有节点信息。  
  120. //四种方法比较:第一种方法,冗余信息量刚好是原有数据的两倍。  
  121. //第二种方法存储的是节点信息和路径信息,冗余信息量是(路径信息*节点数)  
  122. //第三种方法:冗余信息为,sizeof(unsigned int) * 节点数  
  123. //第四种方法:冗余信息为树的层数K,(2^k -1)bit   
  124. //因此第四种方法在二叉树是满二叉树或者二叉树的层数比较小的情况下,信息量比较小,但是在树的层比较丰富的情况下,  
  125. //冗余信息非常大。我觉得也不是什么特别好的方法。貌似我还是没有得到正确答案。  
  126.   
  127. //第三种方法序列化  
  128. void serialize_3(Node *tree, unsigned int index)  
  129. {  
  130.     if (tree == NULL)  
  131.     {  
  132.         return;  
  133.     }  
  134.       
  135.     fout3 << tree->data << " " << index << endl;  
  136.     serialize_3(tree->left, index*2);  
  137.     serialize_3(tree->right, index*2 +1);  
  138. }  
  139.   
  140. //设置bitmap  
  141. void setbitmap(Node * tree, int * map,unsigned int bit, int level)  
  142. {  
  143.     if (tree == NULL)  
  144.     {  
  145.         return;  
  146.     }  
  147.       
  148.     unsigned int index = bit / 32;  
  149.     unsigned int b = bit%32;  
  150.     map[index] = map[index] | (1<<b);  
  151.     fout4 << tree->data << " ";  
  152.     setbitmap(tree->left, map,  bit * 2+1, level+1);  
  153.     setbitmap(tree->right, map, bit * 2 +2 , level+1);  
  154. }  
  155.   
  156. //第四种方法永久化  
  157. void seralize_4(Node* tree)  
  158. {  
  159.     int depth = getTreeDepth(tree);  
  160.       
  161.     int len = (depth-5)>0? (depth-5) : 0;  
  162.     len = (1<<len);  
  163.     int* map = new int[len];  
  164.     memset(map, 0, sizeof(int) * len);  
  165.     setbitmap(tree, map, 0, 1);  
  166.   
  167.     fout4<<endl;  
  168.   
  169.     for (int i=0; i <len; i ++)  
  170.     {  
  171.         fout4 <<hex << map[i];  
  172.     }  
  173.     fout4 <<endl;  
  174.     delete [] map;  
  175. }  
  176.   
  177. //释放内存  
  178. void deleteTree(Node * tree)  
  179. {  
  180.     if (tree == NULL)  
  181.     {  
  182.         return;  
  183.     }  
  184.     deleteTree(tree->left);  
  185.     deleteTree(tree->right);  
  186.     free(tree);  
  187. }  
  188.   
  189. int main()  
  190. {  
  191.     BinaryTree * tree=NULL;  
  192.   
  193.     //随机生成二叉树  
  194.     cout << "随机生成二叉树,并保存到tree.txt"<<endl;  
  195.     generate(&tree, 0);  
  196.   
  197.     //树层比较低的,打印出二叉树  
  198.     if (DEPTH <= 15)  
  199.     {  
  200.         printTree(tree);  
  201.     }  
  202.   
  203.     //第三种序列化方法  
  204.     cout << "用第三种方法持久化到serialize3.txt" <<endl;  
  205.     serialize_3(tree, 1);  
  206.   
  207.     //第四种序列化方法  
  208.     cout <<"用第四种方法持久化到serialize4.txt" <<endl;  
  209.     seralize_4(tree);  
  210.   
  211.     //回收空间  
  212.     deleteTree(tree);  
  213.     system("pause");  
  214.     return 0;  
  215. }  
#include<iostream>
#include <fstream>
#include<math.h>#define  max(a,b) ((a)>(b)?(a):(b))using namespace std;
//随机数大小
const int NUMBER = 9;
//修改树的深度
const int DEPTH = 6;//文件流
ofstream fout3("serialize3.txt");
ofstream fout4("serialize4.txt");
ofstream fout("tree.txt");//树节点信息
typedef struct Node
{int data;Node * left;Node * right;
} BinaryTree;//随机生成二叉树
void generate(Node ** tree, int d)
{*tree = (Node *)malloc(sizeof(Node));(*tree)->data = rand()%NUMBER + 1;int isleft = rand()%DEPTH;if(d+isleft < DEPTH)generate(&((*tree)->left), d+1);else(*tree)->left = NULL;int isright = rand()%DEPTH;if (d+isright < DEPTH){generate(&((*tree)->right), d+1);}else(*tree)->right = NULL;
}//获取树的深度
int getTreeDepth(Node * tree)
{if (tree == NULL){return 0;}int left = getTreeDepth(tree->left);int right = getTreeDepth(tree->right);return (max( left, right ) + 1);
}//打印第i层树
void printTreeLevel(Node * tree, int index, int level,int depth)
{if(tree == NULL){int length = pow(2.0,(depth-index))-1;for (int i=1; i <= length; i ++){fout << "  ";cout <<" ";}return;}if(index == level){//左子树宽度int length = pow(2.0,(depth-level-1))-1;for (int j=1; j <= length; j ++){fout <<"  ";cout <<" ";}fout << tree->data;cout << tree->data;//右子树宽度for (int j=1; j <= length; j ++){fout <<"  ";cout <<" ";}return;}printTreeLevel(tree->left, index +1,level, depth);fout <<"  ";cout <<" ";printTreeLevel(tree->right, index+1, level, depth);
}//逐层遍历二叉树
//两种思路,一种采用广度遍历的方法,利用链表空间逐层存储,逐层打印
//一种使用递归的方法逐层打印
void printTree(Node * tree)
{int depth = getTreeDepth(tree);for (int i=0; i < depth; i ++){printTreeLevel(tree, 0, i,depth);fout << endl;cout <<endl;}
}//序列化,四种方法
//第一种方法:把二叉树按前序和中序遍历一遍,存两次二叉树。
//第二种方法:将二叉树按左枝为0,右枝为1进行路径编码,那么每个节点都可以表示成,节点信息和路径信息进行永久化。
//第三种方法:将二叉树变成满二叉树,采用数组存储满二叉树,那么数据index和根据二叉树的节点信息进行永久化。
//第四种方法:采用一个位图和所有节点信息进行存储,位图上的0代表着相应满二叉树的节点没有节点,1代表有节点信息。
//四种方法比较:第一种方法,冗余信息量刚好是原有数据的两倍。
//第二种方法存储的是节点信息和路径信息,冗余信息量是(路径信息*节点数)
//第三种方法:冗余信息为,sizeof(unsigned int) * 节点数
//第四种方法:冗余信息为树的层数K,(2^k -1)bit 
//因此第四种方法在二叉树是满二叉树或者二叉树的层数比较小的情况下,信息量比较小,但是在树的层比较丰富的情况下,
//冗余信息非常大。我觉得也不是什么特别好的方法。貌似我还是没有得到正确答案。//第三种方法序列化
void serialize_3(Node *tree, unsigned int index)
{if (tree == NULL){return;}fout3 << tree->data << " " << index << endl;serialize_3(tree->left, index*2);serialize_3(tree->right, index*2 +1);
}//设置bitmap
void setbitmap(Node * tree, int * map,unsigned int bit, int level)
{if (tree == NULL){return;}unsigned int index = bit / 32;unsigned int b = bit%32;map[index] = map[index] | (1<<b);fout4 << tree->data << " ";setbitmap(tree->left, map,  bit * 2+1, level+1);setbitmap(tree->right, map, bit * 2 +2 , level+1);
}//第四种方法永久化
void seralize_4(Node* tree)
{int depth = getTreeDepth(tree);int len = (depth-5)>0? (depth-5) : 0;len = (1<<len);int* map = new int[len];memset(map, 0, sizeof(int) * len);setbitmap(tree, map, 0, 1);fout4<<endl;for (int i=0; i <len; i ++){fout4 <<hex << map[i];}fout4 <<endl;delete [] map;
}//释放内存
void deleteTree(Node * tree)
{if (tree == NULL){return;}deleteTree(tree->left);deleteTree(tree->right);free(tree);
}int main()
{BinaryTree * tree=NULL;//随机生成二叉树cout << "随机生成二叉树,并保存到tree.txt"<<endl;generate(&tree, 0);//树层比较低的,打印出二叉树if (DEPTH <= 15){printTree(tree);}//第三种序列化方法cout << "用第三种方法持久化到serialize3.txt" <<endl;serialize_3(tree, 1);//第四种序列化方法cout <<"用第四种方法持久化到serialize4.txt" <<endl;seralize_4(tree);//回收空间deleteTree(tree);system("pause");return 0;
}


    运行效果:

    第一步,随机生成一个二叉树,并逐层打印,然后采用两种序列化方法进行序列化。


     第三种序列化文件为:

[html] view plaincopyprint?
  1. 6 1  
  2. 8 2  
  3. 9 4  
  4. 8 5  
  5. 3 11  
  6. 7 22  
  7. 9 23  
  8. 7 3  
  9. 1 6  
  10. 8 12  
  11. 6 24  
  12. 3 49  
  13. 9 7  
  14. 4 15  
  15. 3 31  
6 1
8 2
9 4
8 5
3 11
7 22
9 23
7 3
1 6
8 12
6 24
3 49
9 7
4 15
3 31
    第四种序列化方法为:

[html] view plaincopyprint?
  1. 6 8 9 8 3 7 9 7 1 8 6 3 9 4 3       --数据  
  2. 40e04c7f10000                       --位图,用16进制表示  
6 8 9 8 3 7 9 7 1 8 6 3 9 4 3       --数据
40e04c7f10000                       --位图,用16进制表示
   如上面分析的一样,第四种方法在二叉树是满二叉树或者二叉树的层数比较小的情况下,信息量比较小,但是在树的层比较丰富的情况下,冗余信息非常大。如在15层的二叉树中:
[html] view plaincopyprint?
  1. 6 8 9 4 8 3 7 6 4 1 1 6 3 7 9 8 3 7 3 6 3 8 3 7 2 5 6 4 3 1 8 4 2 2 4 3 4 1 9 6 7 4 7 9 5 8 8 7 3 7 9 3 6 3 9 3 3 2 3 5 1 7 5 1 3 9 2 1 3 1 3 3 6 6 2 7 9 4 6 2 7 9 3 2 1 7 4 3 3 1 9 3 1 9 7 6 1 8 8 7 3 2 6 6 8 5 2 3 8 2 5 5 9 4 6 9 2 3 1 2 2 5 2 1 9 9 4 7 6 4 8 5 9 4 8 9 9 9 6 9 5 8 3 9 9 8 3 9 3 5 6 9 6 2 2 6 2 2 5 1 2 1 1 5 6 9 9 5 8 9 5 4 3 8 6 2 3 4 9 9 2 7 7 8 7 6 7 2 2 9 8 1 3 1 3 3 4 3 3 7 3 5 7 9 7 2 4 3 5 2 1 5 3 9 2 8 3 6 3 2 2 1 2 9 3 1 5 5 8 2 4 6 3 4 2 5 5 5 7 6 4 6 5 8 6 2 5 9 6 3 6 3 1 8 1 9 4 6 9 2 4 1 1 5 3 7 2 2 7 1 8 3 4 9 2 6 9 3 8   
  2. 3e8ffbff1f7901eb3d9867fe6004a7860038b380000606daf48130098068070189048001e8000009022418079e361e000007000838000794808400040800000001f1800018000820008006605401300580650004600000002e82801d8000802120000000018000000002c000118000008000000060000404105800000000400000100000000001928001000800001a21100000000000000008000000020000000000860000000020030000004000000020042000000000000000000000000000000200400098000005000000020000000000000000000000000000000000080000000000000000000000400000000000000000000002000000020180000100000000000000000000000000000000000000000000000000000000000000020000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000002000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000  
6 8 9 4 8 3 7 6 4 1 1 6 3 7 9 8 3 7 3 6 3 8 3 7 2 5 6 4 3 1 8 4 2 2 4 3 4 1 9 6 7 4 7 9 5 8 8 7 3 7 9 3 6 3 9 3 3 2 3 5 1 7 5 1 3 9 2 1 3 1 3 3 6 6 2 7 9 4 6 2 7 9 3 2 1 7 4 3 3 1 9 3 1 9 7 6 1 8 8 7 3 2 6 6 8 5 2 3 8 2 5 5 9 4 6 9 2 3 1 2 2 5 2 1 9 9 4 7 6 4 8 5 9 4 8 9 9 9 6 9 5 8 3 9 9 8 3 9 3 5 6 9 6 2 2 6 2 2 5 1 2 1 1 5 6 9 9 5 8 9 5 4 3 8 6 2 3 4 9 9 2 7 7 8 7 6 7 2 2 9 8 1 3 1 3 3 4 3 3 7 3 5 7 9 7 2 4 3 5 2 1 5 3 9 2 8 3 6 3 2 2 1 2 9 3 1 5 5 8 2 4 6 3 4 2 5 5 5 7 6 4 6 5 8 6 2 5 9 6 3 6 3 1 8 1 9 4 6 9 2 4 1 1 5 3 7 2 2 7 1 8 3 4 9 2 6 9 3 8 
3e8ffbff1f7901eb3d9867fe6004a7860038b380000606daf48130098068070189048001e8000009022418079e361e000007000838000794808400040800000001f1800018000820008006605401300580650004600000002e82801d8000802120000000018000000002c000118000008000000060000404105800000000400000100000000001928001000800001a21100000000000000008000000020000000000860000000020030000004000000020042000000000000000000000000000000200400098000005000000020000000000000000000000000000000000080000000000000000000000400000000000000000000002000000020180000100000000000000000000000000000000000000000000000000000000000000020000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000002000600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000

    信息量随着层数的增加,信息量成几何级扩大。但是,研究16进制字符串位图数据可以发现里面的数据0出现的特别多,因此下一步可以采用huffman编码等压缩编码方式对字符串数据进行数据压缩。

    下一步:采用二进制编码对位图数据进行数据压缩。





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】OWIN是什么?

OWIN的英文全称是Open Web Interface for .NET。 如果仅从名称上解析&#xff0c;可以得出这样的信息&#xff1a;OWIN是针对.NET平台的开放Web接口。 那Web接口是谁和谁之间的接口呢&#xff1f;是Web应用程序与Web服务器之间的接口&#xff0c;OWIN就是.NET Web应用程序与W…

java 切换panel会闪烁_【19期】为什么Java线程没有Running状态?

Java虚拟机层面所暴露给我们的状态&#xff0c;与操作系统底层的线程状态是两个不同层面的事。具体而言&#xff0c;这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态&#xff1a;什么是 RUNNABLE&#xff1f;直接看它的 Javadoc 中的说明&am…

【转】PSTools工具使用方法

转自&#xff1a;https://blog.csdn.net/hongkaihua1987/article/details/85230082 https://blog.51cto.com/winhe/1742633 本篇文章是基于pstools 2.7版本。pstools是sysinternals出的一个功能强大的nt/2k远程管理工具包。 它的主页为http://www.sysinternals.com/ 下载地址…

多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

原文&#xff1a;Label-Specific Document Representation for Multi-Label Text Classification&#xff08;EMNLP 2019&#xff09;多标签文本分类摘要&#xff1a;本文使用标签相关的注意力网络学习文档表示。该方法在构建文档表示时使用了标签的语义信息来决定标签和文档的…

a.pop啥意思python_python中pop什么意思

python中pop什么意思,赋值,移除,元素,位置,变量python中pop什么意思易采站长站&#xff0c;站长之家为您整理了python中pop什么意思的相关内容。python中pop()将列表指定位置的元素移除&#xff0c;同时可以将移除的元素赋值给某个变量&#xff0c;不填写位置参数则默认删除最后…

【转】CAN 通信测试工具 canutils

转自&#xff1a;https://blog.csdn.net/engrossment/article/details/105222753 概述 CAN&#xff0c;Controller Area Network&#xff0c;控制器局域网&#xff0c;一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。 canutils 工具包内含 5 个独立的程序&#x…

【转】VS技巧—任务列表Task List(ToDoList)

写代码难免有些地方需要以后修改&#xff0c;或者有些地方需要以后晚上。比如我想以后修改此函数&#xff0c;有人会使用注释来提醒自己&#xff0c;比如会写上 //zhangsantodo it is a test function //zhangsantodo it not good 然后在需要修改时全局搜索“zhangsantodo”…

哈希桶 entry_哈希表代码实现

哈希表的主要用处&#xff1a;快速的数据存储和查找。例如&#xff0c;在我们日常上网过程中搜索某条信息的时候&#xff0c;信息的存储方式决定了查找该信息的速度&#xff0c;哈希表结合了数组的便捷访问和链表的便捷查找和删除的特点。实现方式&#xff1a;通过哈希函数获取…

投标报价得分计算程序_什么是投标报价?怎么计算呢?

投标价格是投标文件中的实质性内容&#xff0c;也是评审因素中的核心内容。在招标采购活动中&#xff0c;由于投标人的疏忽&#xff0c;经常出现投标报价遗漏、书写错误、前后不一等问题。今天保标招标网小编就跟大家一起来看看什么是投标报价&#xff1f;招投标中复价是什么意…

设备I/O之OVERLAPPED

OVERLAPPED,顾名思义为重叠,乍一看会很奇怪,重叠?谁跟谁重叠?似乎在WIN32的Programming中没有这个概念呀?要讨论这个问题就要追溯到对设备I/O的访问中。 在WIN32中,用户不能象以前那样直接对硬件进行访问,使得这一层对开发者而言是个"黑盒",而提供了一组对应的API…

【转】在windows上安装VTK

看了很多教程&#xff0c;花了1天半的时间装上了&#xff0c;记录下。 前置条件&#xff1a;我安装了VS2015&#xff0c;用来编译工程。 参考资料 官方&#xff1a;http://www.vtk.org/Wiki/VTK/Building 安装&#xff1a;http://blog.csdn.net/Chinamming/article/details/1…

映射网络驱动器后为什么每次都要重新连接_如何映射网络驱动器?

有些设备的电脑需要处理一些共享资料或者需要一些外部资料才能生产运行&#xff0c;但是这些资料在本电脑没有&#xff0c;要去企业的公共盘&#xff08;共享磁盘&#xff09;里面获取&#xff0c;公共盘是网络上驱动器&#xff0c;这时候我们就要把公共盘映射到本地电脑。PCB厂…

解析 Linux 中的 VFS 文件系统机制

简介&#xff1a; 本文阐述 Linux 中的文件系统部分&#xff0c;源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块&#xff1a;一是上层的文件系统的系统调用&#xff0c;二是虚拟文件系统 VFS(Virtual Filesystem Switch)&#xff0c;三是挂…

去除分页预览

有时我们在打开一个Excel表的时候,会出现如下图样式: 此为作了"分页预览"设置,取消方法如下图: 选择"普通"即可转载于:https://www.cnblogs.com/wxbbk/archive/2007/10/07/915773.html

【转】VTK + QT + VS 编译安装配置

VTK Vtk&#xff0c;&#xff08;visualization toolkit&#xff09;是一个开源的免费软件系统&#xff0c;主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的&#xff0c;它的内核是用C构建的&#xff0c;包含有大约250,000行代码&#…

用Linq转换数据

Linq的好处不用多说。由于它能Linq TO XXX&#xff0c;所以用它进行XXX数据类型之间的转换也是非常惬意的事情。 转载于:https://www.cnblogs.com/think/archive/2007/10/26/Linq1.html

【转】我的CV之路第一篇:ITK是啥?

Itk篇 &#xff08;Insight Segmentation and Registration Toolkit&#xff09;ITK Itk篇前言一、ITK是什么&#xff1f;二、一些函数 1.读/写图片2.滤波器 前言 学习医疗图像分割过程中&#xff0c;遇到了很多困难&#xff0c;英文文献&#xff0c;数学基础&#xff0c;图像…

【转】二、VTK用于QT的安装

一、说明 本文的主要目的是在说明通过Cmake重新编译VTK,使得其能够与QT交互使用 二、VTK的安装 VTK版本&#xff1a;8.2.0 VS版本2019 电脑&#xff1a;win-64bit 需要软件&#xff1a;CMake(我使用的版本是3.16.0) 三、过程 大概过程分为以下几个步骤&#xff1a; 1、下载vt…

【转】一、用于VS2019的QT配置

转自&#xff1a;https://www.cnblogs.com/fantianliang/p/12355973.html 一、前言 本期间的主要目的是最后能够使用VS开发关于QT为界面的程序&#xff0c;同时能够使用VTK和ITK程序&#xff0c;这是第一部分。 因为之前查看的有关博客随着时间没有跟随版本变化&#xff0c;所…

IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容

我经常听到 Microsoft 内部和外部的人将新的 IIS 7.0 Web 服务器称为 Microsoft 在过去几年中所进行的最重要的开发工作之一。考虑到 Microsoft 最近推出了一系列引人注意的技术&#xff0c;包括 Windows Vista™&#xff0c;这个评语具有重要意义&#xff01; IIS 7.0 的发布时…