陈锋-TechBlog

思考,实践,交流

2007年11月

转载 一个双向链表的单指针实现

双向链表的单指针实现,用于某些内存异常紧张的领域阅读全文>

发表于 @ 2007年11月27日 15:11:00|评论(loading...)|编辑

原创 C++学习 - 快速排序,更加优化的实现

头文件: 1: #pragma once 2: #include <vector> 3:   4: namespace FengChen 5: { 6:   7: template<typename T> 8: class QuickSortDemo 9: { 10: public: 11: QuickSortDemo(void){} 12: ~QuickSortDemo(void){} 13:   14: void DoSort(std::vector<T>& ); 15:   16: T Select(const std::vector<T>& Input, unsigned i); // 线性时间复杂度的选择第i小值的算法,递归版本 17: private: 18: // 选择轴值 19: unsigned SelectPivot(阅读全文>

发表于 @ 2007年11月23日 00:39:00|评论(loading...)|编辑

转载 Effective C++学习记录之Things To Remember

Effective C++的Things to remember之总结阅读全文>

发表于 @ 2007年11月19日 09:13:00|评论(loading...)|编辑

转载 目前.net平台上的支持的语言列表

.NET Language Sites列出了目前target到.net平台的所有语言。值得一看哦,貌似比target到JVM的多哦。而且下面列举了一些关于CLR方面比较深入的书籍,很多非常值得一看的说。 顺便BS下Eclipse的速度,同样是open source,怎么和sharpdevelop差距那么大呢?本来VS05的速度也很慢,不过VS08的性能就提高了很多。阅读全文>

发表于 @ 2007年11月18日 15:22:00|评论(loading...)|编辑

原创 关于.net中反射的一个小问题

若果一个函数有个参数是传引用的,比如ref 或者out,该如何得到被修改的结果呢?请看如下的代码Int32[] input = new Int32{1,2};txtOut.AppendText(input.Length.ToString() + Environment.NewLine);// txtOut is a multiline enabled textbox in my test formMethodInfo info = typeof(Array).GetMethod("Resize").MakeGenericMethod(typeof(Int32));Object[] paras = new Object[] { input, 4 }; //如果是out型的,直接传个null就行。info.Invoke(null, BindingFlags.InvokeMethod, null, paras, null);input = paras[0] as Int32[]; // get the written argumentCLR似乎会修改掉阅读全文>

发表于 @ 2007年11月18日 15:08:00|评论(loading...)|编辑

原创 关于.Net安全性的两个小问题

1.如何在.Net 程序你检查当前的windows安全设置以及CAS安全设置检查当前程序是否有admin的权限:String sddlAdmins = "S-1-5-32-544"; //Sid of administrators group IdentityReference AdminsSid = new SecurityIdentifier(sddlAdmins); if (WindowsIdentity.GetCurrent().Groups.Contains(AdminsSid)) Console.WriteLine("Running with admin rights!"); 检查当前运行程序集的被CAS赋予的PermissionSets:How to Get Permissions Assign to Current Assembly in VS.NET 2005 Using C#. 另外如果要做一个允许客户加入自定义扩展的程序,该如何严格限制扩展dll的安全性呢,从两方面入手:1,用一个P阅读全文>

发表于 @ 2007年11月18日 11:42:00|评论(loading...)|编辑

原创 关于NTFS的Alternate Data Streams

近日有人问起,如何在文件的摘要属性中增加一个自定义的项。起初我想到Office文档实际上是可以通过OLE来更改,但是其实有些文件比如Mp3,甚至txt文件也有摘要的,这些属性存放在那里呢,经过一番研究,发现实际上是存放在一个叫做Alternate Data Streams的地方,这个东东实际上是另外一个和当前文件相关联的文件。具体请看以下的link,并且你可以在程序中控制这个文件,最后code project 上已经有人给出sample了。我就懒得写了。Windows NTFS Alternate Data Streams FAQ: Alternate Data Streams in NTFS How To Use NTFS Alternate Data Streams Manipulate Alternate Data Streams 阅读全文>

发表于 @ 2007年11月18日 01:20:00|评论(loading...)|编辑

原创 P/Invoke传递的callback中会用到的一个很有用的属性

就像这个帖子中提到的,如果要调用C/C++ dll export出来的一个函数,并且要传一个callback的delegate进去,就会产生一个问题: delegate默认的函数调用约定是stdcall,但是C++端一般会要求这个callback是cdecl的。这个问题在.net 1.1中没有好的解决方法,只能反汇编你的assembly然后手动修改对应delegate的属性。在.net 2.0中,可以使用UnmanagedFunctionPointer Attribute来解决这个问题。因为它可以控制delegate中函数调用的calling convention。这个在.net CF编程中应该会比较有用,希望能够帮助有此需求的朋友。阅读全文>

发表于 @ 2007年11月17日 23:43:00|评论(loading...)|编辑

原创 又一个关于反射的问题

一个客户说,他想通过load一个winform的exe来检查其中控件的属性值,比如tag,text等等。貌似合理,可他就是拿不到正确的属性。实际上,如果你不构造一个这个form的实例,不可能拿到这些属性。你在winform designer中输入的值都被vs用codedom的方法在form的InitializeComponent中生成比如a.text = ""此类的语句,也就是说你只能在构造这个类之后,才能通过对实例反射的方法得到这些属性。阅读全文>

发表于 @ 2007年11月17日 23:32:00|评论(loading...)|编辑

原创 C++学习练手之- RadixSort

using namespace std; // 把32位整数看成8位的16进制整数void RadixSort(vector&lt;int&gt;&amp; v){&nbsp;&nbsp;&nbsp; vector&lt;int&gt; tempStor(v.size());&nbsp;&nbsp;&nbsp; vector&lt;int&gt; offset(0x10);&nbsp;&nbsp;&nbsp; vector&lt;int&gt; count(0x10); &nbsp;&nbsp;&nbsp; // 按照16进制对32位整数进行排序,总共进行8趟&nbsp;&nbsp;&nbsp; for (int digit = 0; digit &lt; 8; digit++)&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp;&am阅读全文>

发表于 @ 2007年11月15日 10:56:00|评论(loading...)|编辑

原创 C++ 学习练手 - 双向链表的模板实现

C++ 学习练手 - 双向链表的模板实现 阅读全文>

发表于 @ 2007年11月01日 17:15:00|评论(loading...)|编辑

原创 C++ 学习练手 - 数组型栈的模板实现

C++ 学习练手 - 数组型栈的模板实现阅读全文>

发表于 @ 2007年11月01日 17:07:00|评论(loading...)|编辑

原创 C++ 学习练手 - 数组型队列的模板实现

学习C++,拿基础数据结构来练手。阅读全文>

发表于 @ 2007年11月01日 16:53:00|评论(loading...)|编辑

Csdn Blog version 3.1a
Copyright © 陈锋