自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闻缺陷则喜何志丹

本人拙作《闻缺陷则喜》欢迎指教,可在CSDN下载

  • 博客(608)
  • 资源 (90)
  • 收藏
  • 关注

原创 GenImageInterleaved Wrong type of control parameter 1

HALCONerror#1201:Wrongtypeofcontrolparameter1源码:HObjectrgbImage;constintiRow=1;constintiCol=1;constcharsz[3*iRow*iCol]={1,2,3};try{HalconCpp::GenImageInterleaved(&amp...

2022-05-31 09:50:32 35

原创 1000多个文件,占用空间10G,删除的效率

一,Directory.Delete失败。System.IO.Directory.Delete(strFirstSubDir);“System.IO.IOException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 目录不是空的二,递归删除文件后,再删除。121秒。三,FileSystem.DeleteDirectory 2秒。FileSystem.DeleteDirectory(strFirstSubDir, UIOption.OnlyErrorDialogs, r.

2022-04-13 14:55:23 150

原创 长期加班的判断树

2022-04-10 10:27:24 155

原创 winform关于catch Program.Main

测试环境:win10 + VS2013一,点击主窗口的异常,可以catch到。二,弹出的新窗口的按钮异常,可以catch到。三,System.Timers.Timer的异常catch不到。四,新线程catch不到。一,建立一个WinForm项目。 static void Main() { try { Application.EnableVisualStyles(); ...

2022-03-09 16:59:02 25

原创 空Asp.net(Web程序应用程序)生成失败

开发环境:Win10 C#2013生成失败,无提示信息,错误信息。解决方法:启用IIS

2022-03-06 10:55:54 92

原创 HALCON error #1201: Wrong type of control parameter: 1 in operator threshold

HALCON error #1201: Wrong type of control parameter: 1 in operator threshold错误代码:HTuple tMin, tMax; tMin.Append(3).Append(5.5); tMax.Append(4.0).Append(8); Hobject region; Halcon::threshold(img, &region,tMin, tMax);错误原因:tMin各元素类型...

2022-02-28 10:52:33 524

原创 关于Halcon::threshold 用时

Halcon::threshold 利用HTuple一次二值化两组区域比两次Halcon::threshold略快,不到5%。测试环境:VC2013 halcon10CWatch watch; for (int i = 0; i < 100; i++) { Halcon::threshold(imgCoatCheck, &m_regions.m_regionCoatLightNG, dMedialCoatCheckGray + iNGDiffGray, ...

2022-02-25 15:44:15 25

原创 threshold用时

threshold 16000行,16000列,用时13msthreshold 16000行,3列,大约1.3ms某个算法,我优化后反而大大变慢 才发现的。VC2013 halcon10。可能原因: halcon进行了加速。

2022-02-23 18:30:18 89

原创 托管C++中的^%

VS(还是VA)的提示条是:^% ,声明是^。实际使用的时候感觉和^一样,可能提示这是出参吧。使用示例: HalconDotNet::HTuple^ tWidth = gcnew HalconDotNet::HTuple(), ^tHeight = gcnew HalconDotNet::HTuple(); HalconDotNet::HOperatorSet::GetImageSize(img, tWidth, tHeight);...

2022-02-16 16:28:45 172

原创 halcon的Hobject转HObject

非托管C++代码:class CPLUSALOG_API_20211029 CCTest{public: CCTest(); int* Get(); ~CCTest();protected: Hobject* m_pRegion;} CCTest::CCTest(){ m_pRegion = new Hobject(); Halcon::gen_circle(m_pRegion, 10.0, 10, 10);}int* CCTest::G...

2022-01-25 10:11:57 540 3

原创 Undefined gray values in operator intensity

可能原因之一:参数应该是image类型的HObject,误弄成了Region类型的HObject

2022-01-17 10:36:18 194

原创 Halcon的ZoomRegion

Halcon的ZoomRegion 后,中心会变化,所以需要移回来

2022-01-15 14:32:57 105

原创 halcon10求周长

关于接口 非托管C++和C#分别定义类似接口,托管C++派生与非托管C++的接口,和C#的接口是整体部分关系。C#接口:非托管C++:托管代码C++声明:托管C++实现:托管C++ 派生于C#接口,和C++接口是整体、部分关系,更简单。...

2022-01-14 17:18:23 76

原创 加强容错设计

这世界几乎不存在完全正确的软件系统,目前的趋势是:系统规模越来越大,逻辑越来越复杂,要求越来越高。这种情况下追求完全正确会让成本变得不可控。理论上,设计、实现、环境都正确的软件可以做到完全正确;现实是,这三条一条都做不到。一,就算是小型商业软件,无论测试还是形式化证明,工作量都是巨大无比,所以只能妥协而采取近似解。二,开发工具、第三方库不会完全正确,或多或少的存在缺陷。三,运行环境不一定和设计环境相同,比如:操作系统、数据库系统版本号不一致,操作系统、数据库系统本身的缺陷等。出于对现实的妥协,容错技术应

2022-01-09 14:54:19 231

原创 for (int i = 0; i < v.size() - 1; i++)

std::vector<int> v; for (int i = 0; i < v.size() - 1; i++) { int x = v[i]; }此代码会异常,原因:v.size() 的结果是UINT的0,减去1后,就是40多亿。或者-1转成UINT就是这么多。...

2022-01-07 11:31:48 470

原创 【闻缺陷则喜】避错设计

同型原理 同型原理指保持形式统一。统一不同人风格很难,同一个人急躁的时候和轻松的时候风格都不一样,何况不同的人。统一的内容包括但不限于:统一的命名规则。 利用接口和适配器统一诸多类似算法。CDC系统的算法主要有:瑕疵检测、寻找极耳、寻找Mark孔,宽幅测量等,每种算法因为要检测的材料不同,有细微区别。可以统一成接口:输入图像,输出json串。 统一的文件格式,如:日志文件。 简化问题,问题有多个解。选择一个较优解。比如...

2022-01-05 19:17:59 49

原创 真实重构例子

很简单的问题。出于保密考虑,只显示部分代码。功能需求有些工艺有槽位,有些工艺没槽位。有槽位的理论上可能多行,已知工艺都是单行槽位。寻找槽位需要以下参数:槽位行数。一行有多少个槽位,不同行槽位数相同。槽位宽高及宽高公差,不同槽位宽高完全相同。各行槽位(中间)距离涂布顶端(或底端)的位置及公差。是以涂布顶端还是涂布底端为参考位置。各列槽位(中间)距离涂布左边缘(或右边缘)的位置及公差。是以左边缘为参考,还是以右边缘为参考。设计此功能可以拆分成两个步骤:寻找各槽位的中心

2021-12-28 18:33:19 149

原创 HOperatorSet.GenRectangle1 参数是负数的矩形

默认会被裁剪掉。HOperatorSet.SetSystem("clip_region", "false");就好了

2021-12-22 13:14:43 351

原创 halcon SetPart的缺陷

代码:void ShowRect(int iWideSize) { hWindowControl1.HalconWindow.ClearWindow(); hWindowControl1.HalconWindow.SetPart(0, 0, iWideSize, iWideSize); HObject rect; HOperatorSet.GenRectangle1(out rect, 0,...

2021-12-22 11:52:04 95

原创 高内聚和内聚分类

内聚 内聚指的的一个模块各组成成分的紧密程度。LCOM4通俗的说就一个类的成员变量和成员函数可以分为几组,以下两种情况之一分为一组:一、函数间存在调用关系。二、两个或更多函数操作同一个成员变量。此值最好是1。 偶然内聚、逻辑内聚 前者看起来没联系,实际也没联系;后者看起来有联系,实际没联系。这种情况很常见,尤其在基础库:一、某个读取配置类,有三个函数从txt读取配置,从ini读取配置,从json文件读取配置。系统最...

2021-12-15 19:58:33 1196

原创 _set_se_translator无效

_set_se_translator 只对当前线程有效

2021-12-13 14:56:36 221

原创 低耦合概述

低耦合 耦合指的两个系统(模块)联系紧密。共7种,除掉无直接耦合和高级语言不存在的内容耦合,共5种。耦合从低到高,分别是:数据耦合、标记耦合、控制耦合、外部耦合、公共耦合。 数据耦合两例 JiSuan(5, 3);CGouMaiXinXi gouMai = new CGouMaiXinXi();//...JiSuan(gouMai); 标记耦合六例 ...

2021-12-11 13:22:05 310

原创 托管C++实现C#接口崩溃的一种情况

“System.TypeLoadException”类型的未经处理的异常在 CYSAlogExe.exe 中发生其他信息: 程序集“CLRAdapter, Version=1.0.8011.18681, Culture=neutral, PublicKeyToken=null”中的类型“CLRAdapter.CAlogFactory”的方法“GetCameraAlgo”没有实现应该定义为:virtual array<ProjectBaseLib::IImgAlog^, 1>...

2021-12-07 10:29:17 371

原创 HALCON error #1302: Wrong value of control parameter: 2 in operator affine_trans_region

关于affine_trans_region最好一个参数,帮助上可选值是:'constant','nearest_neighbor'VS2013 halcon10 这两个值都会崩溃。void Test() { HObject rRect; HOperatorSet.GenRectangle1(out rRect,0, 0, 100, 100); HTuple matIdentity; ...

2021-11-14 13:30:02 1076 1

原创 简单C#类转非托管C++

开发工具: C#2013功能:针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。应用场景:界面层、数据层C#,逻辑层C++。简单的C#类:类型只包括 double string List源码下载:简单的C#类生成对应的C#类-C#文档类资源-CSDN文库https://download.csdn.net/download/he_zhidan/37948430 public class CFieldInfo {

2021-11-07 10:59:59 359

原创 通过简单原理增强软件可靠性

简单原理,就是字面的意思,系统越简单越好。复杂问题简单化,很难;简单问题复杂化,很容易。简化问题至少有如下方法:借用、取舍、拆分、分类、分工、模式与学习、规范 。借用是站在巨人的肩上。“欲穷千里目,更上一层楼”。遇到问题,先不急着动手,先思考、查阅记录,看以前是否遇到相同或接近的问题,直接复用或借鉴。以前,我和500年接到一个流程图的小项目,500年奋战几天没能解决,半年后发现BCG有现成的功能。如果没有可复用或借鉴,查阅团队文档和第三方文档。取舍。抓住主要矛盾,忽略次要矛盾。常见反例:某程序员

2021-10-24 16:29:18 42

原创 复制文件夹需要考虑的问题

完成一个函数复制文件夹,将源文件夹(strSrcDir)的文件复制到目标文件夹(strDestDir)。为了简化问题,限定如下:一,如果参数错误,可以崩溃,但不能损坏源文件。简单实现:依次复制各文件,如果目标文件存在,则先删除。这个实现有个严重的缺陷但触发几率低的缺陷。当源文件夹和目标文件夹相同时,会把源文件夹清空。可能有人说源文件夹和目标文件夹几乎不会完全相同。以下情况很常见:一,源文件夹和目标文件夹都是配置的,在两个不同的配置界面。二,一个文件夹是按某种规则生成,一个文件夹是配置的。解

2021-10-24 16:00:49 64

原创 保存文件的同时删除文件,保存用时会略微升高

保存文件的同时删除文件,保存用时会略微升高-C#文档类资源-CSDN文库https://download.csdn.net/download/he_zhidan/31084269保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263...

2021-10-13 10:07:14 19

原创 C++复制内存比C#稍快

同一台机器,都是VS2013,都是Debug版。 复制10M 内存5000次,C++ 4秒,C#6秒。C++稍快,除非核心模块没必要C#换C++。下面是C++和C#的测试代码。 [TestMethod] public void MemcpyUseTime() { byte[] src = Enumerable.Repeat((byte)0x08, 1000*1000*10).ToArray(); src[0] = 5; ...

2021-10-12 10:32:06 40

原创 10000次写1K 比 一次写10M 耗时多30倍

Test1一次写10M,Test2 100次写100K,Test3 10000次写1K。Test1用时,单位毫米:93 111 95 102 105Test2用时,单位毫米:226 210 198 289 224Test3用时,单位毫米:3000 3000 4000 3000 3000Test1平均用时101.2毫秒,Test2平均用时229.4毫秒,Test3平均用时3200毫秒。结论:10000次写1K 比 一次写10M 耗时多30倍。测试环...

2021-09-30 10:48:13 25

原创 [闻缺陷则喜]关于boost的想法

公司有个大约2万行的项目,用到了boost,我想取消掉不用boost。理由:一,可理解性差,除了高手很难弄懂。二,类太多,光头文件就1万多。大点的团队四五个高手,每人用一个boost类。高手流失后,很难补充,因为候选人不知道需要熟悉那五个类。我同学,一入职就接手一个boost用得多的项目,不到3个月就摸清了整个脉络,结果被辞退了,理由:3个月无任何成果。此公司花了6个月才找到他。 只有一个读取xml的类用到了boost,要想不用boost,要么自己写xml内核,要么用其他xml库。前者成本高...

2021-09-21 16:48:18 35

原创 [闻缺陷则喜]多线程读取参数文件

源码下载:https://download.csdn.net/download/he_zhidan/22215361事情起因:修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。解决思路:读文件费时间,所以开一个线程读文件。抽象后的类似demo:假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。类和函数读取文件函数:一,List<int>增加本序号(0开始)。二,随机生成5000整数,加到list<int.

2021-09-09 16:04:49 25

原创 [闻缺陷则喜]win10家庭版vm打开虚拟机本机蓝屏

今天开启电脑后,用vm打开虚拟机本机蓝屏卸载重装vm也没用。新建立的虚拟机也有此问题,说明虚拟机文件可能没问题。vm打开虚拟机本机蓝屏bcdedit /set hypervisorlaunchtype off 也没用。想起昨天晚上Windows更新了,于是卸载了windows更新。修改注册表的方式,禁用了更新,不知道有效么?...

2021-09-09 10:44:46 228

原创 [闻缺陷则喜]C#程序集名称

开发环境:Win10 VS2013。一,新建一个类库Lib。namespace Lib{ public class Class1 { public int Add(int x,int y) { return x + y; } }}二,新建一个WinForm,调用Lib.dll,正常运行。三,在windows下将Lib.dll改成为Lib1.dll, WinForm引用LIb1.dll,运行异常。四...

2021-09-08 09:22:36 41

原创 EFI VMware Virtual SCSI Hard Drive (0.0) ... No Media

EFI VMware Virtual SCSI Hard Drive (0.0) ... No MediaEFI VMware Virtual IDE CDROM Drive (IDE 1.0) ... No Media先关闭虚拟机,然后用记事本打开指定虚拟机目录下的扩展名为VMX的文件去掉firmware=”efi”,即可。开启虚拟机后,进入PE界面。使用分区工具分区。进入虚拟光盘,运行安装器安装。以前在Win10上 没这么麻烦,直接就可以安装vm15。开始以为是vm安装盘有问题,

2021-09-07 18:31:44 2813

原创 [闻缺陷则喜]C#调用C++的类

开发环境:Win10+VS2015 新建Win32 DLL 一,确保c:\code文件夹存在。二,新建Win32项目HD。向导的应用程序类型选择:DLL,勾选“导出符号”。 C#调用extern "C" 函数 一,打开hd.h和hd.cpp,发现向导已经导出一个变量、一个函数、一个类。HD_API int fnHD(void);前面加上extern "C" 变成extern "C" HD_...

2021-08-31 17:38:58 35

原创 已加载菜单组 DDF

原因:cuix默认菜单组名称DDF,如果不修改容易重复。解决方案:修改菜单组名。具体步骤:1,CAD cui命令 打开“自定义用户界面"。2,打开需要加载的cuix文件。3,修改菜单组名。...

2021-08-31 13:43:48 22

原创 System.BadImageFormatException: 未能加载文件或程序集

看攻略:C#可以调用托管C++的类,托管C++ 可以调用非托管C++的类。从而间接实现C#调用C++的类。实践,运行时崩溃,提示如标题。最终发现原因:C#的 解决方案平台是Any CPU,托管C++和非托管C++的平台是X64,托管C++和非托管C++的平台改成X86(Win32)就可以。操作系统:Win10 开发环境和平台工具集:VS2015...

2021-08-27 11:16:32 390

原创 [闻缺陷则喜]编码与实现方式

人类记忆字母、数字、汉字、符号需要记住读音或笔顺;计算机制只需要记录编号。 ASCII码 文本编码方式的基础是ASCII码,它是一个7位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,共128个代码。其中ASCII码是大多数常用编码的基础。 ANSI ANSI(美国国家标准协会)通常使用 0x00~0x7f 范围的1 个字节来表示 1 个英文字符。超出此范围的使用0x80~0xFFFF来编码,即扩展的ASCII编码

2021-08-25 19:34:17 49

原创 单元测试 节选自《闻缺陷则喜》(此书可免费下载)

单元测试 单元测试用例设计 功能测试的用例设计是业务功能逻辑的输入输出,单元测试中就是函数的输入输出,那么单元测试中的输入输出有哪些呢?输入:被测试函数的输入参数被测试函数需要的全局变量被测试函数的内部私有变量函数内部调用子函数的数据函数内部调用其他模块的数据函数内部调用外部服务的数据输出:被测函数的返回值被测试函数的输出参数被测试函数修改的全局变量被测试函数修改的内部变量被测试函数增删改的数据库数据等被测试函数...

2021-07-17 10:08:02 53 2

C# 获取C++的连续数据

C# 获取C++的连续数据。 两种方式:1,返回C++指针,2,将值存到C#的数组中。

2022-04-02

闻缺陷则喜版本号20220123

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2022-01-23

闻缺陷则喜2021年12月26.doc

闻缺陷则喜,本人拙作,注将软件工程。

2021-12-26

闻缺陷则喜20211205

包括:问题定义、系统分析、架构、概要设计、详细设计、测试等!

2021-12-07

关于halcon膨胀腐蚀开闭.doc

关于halcon膨胀腐蚀开闭

2021-11-14

简单的C#类 生成对应的C#类

开发工具: C#2013 功能: 针对简单的C#类,生成对应的非托管C++类,并生成托管C++的转换函数。 应用场景: 界面层、数据层C#,逻辑层C++。 简单的C#类:类型只包括 double string List

2021-11-07

Windows性能监控工具Perfmon使用

Windows性能监控工具Perfmon使用

2021-10-31

保存文件的同时删除文件,保存用时会略微升高

保存文件的同时删除文件,保存用时会略微升高。没必要花大功夫专门处理 保存500文件用时(毫秒):30906 删除文件同时,保存500文件用时(毫秒):30263 删除500文件用时(毫秒):363 保存500文件用时(毫秒):29155 删除文件同时,保存500文件用时(毫秒):29258 删除500文件用时(毫秒):426 保存500文件用时(毫秒):27992 删除文件同时,保存500文件用时(毫秒):29068 删除500文件用时(毫秒):686 保存500文件用时(毫秒):29172 删除文件同时,保存500文件用时(毫秒):31837 删除500文件用时(毫秒):337 保存500文件用时(毫秒):29373 删除文件同时,保存500文件用时(毫秒):29563 删除500文件用时(毫秒):321 保存500文件用时(毫秒):29663 删除文件同时,保存500文件用时(毫秒):30180 删除500文件用时(毫秒):350

2021-10-11

闻缺陷则喜2021九月版

主要增加:C#调用托管C++,托管C++调用C++

2021-09-11

多线程样例一 读写参数文件

事情起因: 修改配置后,C++函数取读配置xml时,相机缓存满了而引起崩溃。几率发生。 解决思路: 读文件费时间,所以开一个线程读文件。 抽象后的类似demo: 假定读文件需要0.6秒,图像处理(用存文件代替)需要0.5秒,各执行100次。 类和函数 读取文件函数: 一,List<int>增加本序号(0开始)。 二,随机生成5000整数,加到list<int>中。 三,写文件(文件名为序号,如0.txt),文件夹File。 四,Sleep(600)。 五,记录日志:本函数开始执行 时间,结束时间,序号。 六,复制List<int>到参数。 模拟图像处理函数: 一,复制参数 二,参数保存到文件,文件名list<int>第一个int,文件夹img。 三,Sleep(500)。 六,记录日志:本函数开始执行 时间,结束时间,序号。 参数类(跨线程): 一,从list<int>复制参数。 二,复制数据到list<int>。 线程: 启动线程“读取参数”线程:执行100次 读取参数功能。 启动线程“模拟图像处理”线程:执行100次 模拟图像处理。 运行预期结果: File文件夹中有0到100共101个文件。 img有约80个文件。 img有的文件,File文件夹中一定有,且完全相同。用文件夹比较工具(如:BCompare)查看。 查看日志:“读取参数”线程约60秒完成,模拟图像处理”线程约50秒完成。

2021-09-09

C#调用C++的类和函数

C#直接调用C++的函数,C#调用托管C++,C++托管调用非托管C++

2021-08-31

软件开发的那些人&闻缺陷则喜202108.doc

软件开发的那些人&闻缺陷则喜202108.doc

2021-08-09

闻缺陷则喜20210509.doc

我和大家一样,是凡人,IT行业摸爬滚打近20年,错误、经验主义在所难免,欢迎指教。 主要读者:一,想入行、转行的新人,了解整个软件开发过程,方便选择职业。二,创业者、管理者,通过本书查漏补缺。这是本书命名为《软件开发面面观》的原因。三,方便投资人寻找合适的团队,避免投资那种偏科验证的团队。 高效暴露问题才能更有效率的解决问题,这是本书命名为《闻缺陷则喜》的原因。此书是我的经历和积累,经历越和我相近,此书的价值越大。

2021-05-09

闻缺陷则喜20210313.doc

自己的技术积累

2021-04-24

作为公共组软件工程师如何工作

作为公共组软件工程师如何工作 1 1 为什么需要公共组 1 1.1 专业化分工带来高效 1 1.2 复用 2 2 公共组成员特点 3 3 公共组成员职责 3 3.1 一般团队公共软件工程师职责 3 3.2 小团队公共软件工程师职责 3 4 已整理的类库介绍 4 4.1 SNGraph 4 4.2 SN 5 4.3 SNMFC 6 4.4 SNSTL 7 4.5 其它 7 5 专业化分工 7 5.1 专业化分工实例 7 5.2 专业化分工优点(亚当斯密) 7 5.3 专业化分工优点(无名高人) 8 5.4 专业化分工缺点 8 6 软件复用 8 6.1 软件复用的优点 8 6.2 软件复用级别 9 6.3 代码复用的类型 9

2019-02-10

士农库1.1 头文件、lib、dll 两个测试项目

4.1 SNGraph 一 点、向量 基本运算 二 直线(线段、射线) 直线(线段、射线)用起点、方向(单位向量)、线段长度表示。 包括如下功能:  点是否在直线上。  假定点在直线上,点到直线起点的有向距离。如果点在直线上,点到直线距离为n。如果n>=0,则点在射线上;如果(n>=0)&&(n <= 线段长度) ,则点在线段上。  两直线是否平行或重合。  两直线是否重合。  两直线是否垂直。  两直线交点。  两非平行直线距离。  求垂足。 三 平面 通过过平面一点和方向(单位矢量)表示平面。包括如下功能:  点到平面的有向距离。通过平面标准法向量和距离,可以求垂足;通过点到平面的距离的正负,可以看出多个点是否在同侧;如果点到平面的距离为0,则点在平面上,否则不在平面上。  直线是否在平面上  平面和直线的交点 通过调用其他功能可以实现的功能:  平面的法向量平行于直线,则平面和直线垂直  平面的法向量垂直于直线,则平面和直线平行  平面的法向量平行(垂直)则平面平行(垂直)  平行平面的距离等于平面任意一点到另一平面的距离 四 矩阵 包括以下功能:  初始化为单位矩阵。  为向x,y,z方向缩放建立矩阵。  为任意方向缩放建立矩阵。投影平面,可以通过向平面法线方向缩放0实现。平面镜像,可以通过向平面法线方向缩放-1实现。  为对一个点镜像建立矩阵。  为对一条直线镜像建立矩阵。  为对一条对称轴旋转建立矩阵。  求对应行列式的值。  求逆矩阵。  求转置矩阵。  左乘。  求对应行列式的代数余子式。  常见运算符。 4.2 SN 封装了许多基础的功能。 一 接口  读写锁。 二 避免依赖其它类库 有些类经常用于库间接口,所以需要避免依赖其它类库。  字符串类、函数,比如:宽字符、多字符间的转换。  时间类。  数组的封装。 三 其它  将错误信息记录到全局变量中,应用场景:构造函数和析构函数中throw会引起不可预料的问题。  安全缓存,额外开辟若干个字节的空间,并初始化为一个特定值,如果不越界,这些值不会改变。  智能指针,为了将关联降为依赖。CAutoPtr<C> m_pC代替C m_c,头文件中不需要引用C类的头文件。只需要声明C类,在源文件中引用C类的头文件。  MD5。  RSA。  SHA。  考虑溢出的加减法。比如:int型的10亿加20亿,-10亿减20亿。  通过表名、列名、某些列的值生成sql语句。  安全指针和防野指针类。防野指针类:在构造函数中将状态初始为已初始化,在析构函数中将状态设置为已释放。安全指针在使用时之前判断 防野指针类释放是“已初始化”,否则抛出异常。  将有参数的函数统一成没参数返回值类型void的仿函数。  遍历文件夹的文件和子文件夹。  随机数和排列组合。  系列化和反系列化。将对象和变量转化成二进制,并将二进制转回变量和对象。  拆分,如字符串。 4.3 SNMFC 一 网络功能  网络基本功能:如获取本机IP,通过域名获取IP,IE版本。  HTML对话框的封装类。  用于服务端的,带“回调类”的绑定监听类,利用IO完成端口。  用于客户端的,带“回调类”连接类,利用select模式完成,可以指定是否开启新线程。连接时,可以指定超时时间,默认5秒。如果直接调用系统的connect,超时时间是75秒。  能够自动处理“粘包”、“拆包”的二进制解析类。  安全套接字的辅助类,如:设置发送、连接超时。  比较服务端的某个文件夹和客户端的某个文件夹,并更新那些md5不同的文件。 二 多线程  用临界区实现的线程锁,和线程读写锁。  窗口辅助类。  开启一个线程并调用一个函数。  开启一个线程并循环调用一个函数。  支持多线程的日志。  启动一个线程,等待若干秒后,Post或Send一个消息后,结束线程。 三 界面  三态树控件。  列表框扩展类和函数。  树控件的扩展。  组合框的扩展。  关于窗口功能的封装。比如:从左到右依次排列子窗口,排不下则下一行。可以指定行间距。页眉和页脚是行间距的一半。  位图的加载和显示。 四 其它  Ini文件。  数组封装类。  获取硬件信息,如网卡。  文件或文件夹的常用功能。  注册表的扩展。 4.4 SNSTL  数组(向量)扩展。  用于多线程的向量。  JSON解析。  集合的扩展。  映射的扩展。  指针向量,可以存派生类。  指针映射,可以存派生类。 4.5 其它库  UnitTest,本机单元测试项目,对整个库的重要功能进行单元测试。  SNBCG,著名界面库的扩展,几乎没使用。  SNPicture,图形图像的处理(如转换bmp格式),几乎没使用。  SNMath,数学及数据结构库,几乎没使用。

2019-02-10

面试北京XX数通总结

面试北京XX数通总结 1 1 总括 1 1.1 面试时间 1 1.2 公司概况 1 1.3 老板疼点 1 2 如果入职 2 2.1 公共库 2 2.2 层次划分 2 2.3 设计与实现分离 2 3 关于外包 2 3.1 他们的期望 2 4 关于培训 3 5 建议 3 6 最后的结界 3 7 术语 3

2019-01-23

如果我当上技术经理如何开展工作

如果我当上技术经理如何展开工作 1 1 总括 1 1.1 引子 2 1.2 技术经理(总监)的任务 2 1.3 此职位和我高度匹配 2 2 术语、概念、假设 4 3 规划 5 3.1 不同阶段核心要素不同 5 3.2 研发部组织架构 6 3.3 规范 8 3.4 关注点 9 4 计划 10 5 培训与考核 11 5.1 培训 11 5.2 考核 11 5.3 对我的考核 12 5.4 晋升 12 6 需求与测试 12 6.1 不同性格在不同阶段的优劣 12 6.2 关于需求人员 13 6.3 关于测试人员 14 6.4 需求确认或整理 14 6.5 需求分解、任务跟踪 14 7 单人代码走查 14 7.1 代码走查员发展阶段 15 7.2 代码走查好处 15 7.3 我代码走查需要的时间 15 8 专业化分工及组建公司公共库 16 8.1 专业化分工 16 8.2 组建公司公共库 16 8.3 关于技术攻关 16

2019-01-06

最短点对演示程序

难点:如何测试。我的解决方式是:a,三种解法,看结果是否一致。b,小数据(100个点),人工排查。第一种方法,暴力法适合小数据。第二种方法:我的改进 型。第三种方法:经典方法(分治法)。实验证明1000万数据时,我的算法有优势。 暴力算法,O(n2)。我的改进型要点:先对所有数据按Y排序。只比较y距离小于等于已知最小距离的点对。经典方法:按Y排序,分成两部分,递归调用。合并师 只比较距离分界线不超过已知最小距离的点对。

2018-12-31

墨家巡逻兵1.0.2、编辑器、源码

mjxlb:源码 vc: 生成的exe位置。 SNCode:公共库的lib和头文件。 开发工具:VS2010 C++ mjxlb解决方案: basedata:基础模块。 logic:逻辑层。 show: 处理显示逻辑。 mojiaxunluobing:墨家巡逻兵 。 EditMJXLB: 墨家巡逻兵编辑器。

2018-11-17

8邻域01模式和8联通性不同的情况

8邻域01模式和8联通性不同的情况 ,共有256种情况,其中90多种不同。8邻域01模式和8联通性不同的情况 ,共有256种情况,其中90多种不同。

2017-09-11

VC10 OpenCV2.4.10 手写识别 演示程序

手写识别,只限0到9,每次一个字符。每个人写的不一样,所以需要训练。从 result文件 移到OCR 对应的子文件夹。

2017-07-17

OpenCV分类演示程序

OpenCV 分类 瑕疵检测 锂电池

2017-07-14

位图转换的程序2017

位图转换:单色 16色 256色 转24位色;24位色转16色256色

2017-06-30

崩溃反定向例子习题

崩溃反定向,包括例子和习题。 利用map和cod定位崩溃的位置。 一个例子,3个习题(Win7两个,WinXP一个)

2016-10-18

C#建立最简单的Web服务,无需IIS

C#建立最简单的Web服务,无需IIS

2015-07-09

网格控件群组的高级使用

网格控件群组的高级使用 包括:图片 文档 VC6源码 属于系列文章

2014-10-07

网格控件群组的简单使用和颜色设置

网格控件群组的简单使用和颜色设置 文档 图片 VC6源码 属于系列文章

2014-10-07

BCG网格控件单独设置颜色

BCG网格控件单独设置颜色。包括文档、图片、VC6源码。系列文章。

2014-10-07

BCG属性列表

bcg 属性列表 包括:图片、文档、VC6源码。 属于系列文章

2014-10-07

BCG圆盘菜单

BCG圆盘菜单 包括:图片、文档、VC6源码。 属于系列文章

2014-10-07

网格控件的简单使用

网格控件的简单实用 包括文档、图片、源码, 系列文章之一

2014-10-07

菜单按钮的简单使用

BCG菜单按钮的简单使用,图片文档源码

2014-10-07

CBCGPChartCtrl简单使用

CBCGPChartCtrl 简单使用,包括图片效果。

2014-08-25

智勇三国生成验证码的程序,欢迎指教

。 智勇三国生成验证码的程序,欢迎指教。 思路如下: 一,取得桌面DC。 二,计算位置。 三,建立内存DC和位图并填充背景。 四,每个字输出到DC上,上下随机偏移0到4并倾斜。 五,生成单色位图,存到CFile或CMemFile中。CMemFile派生自CFile。 六,将图片显示到图片控件上。

2011-07-29

SaveBarState LoadBarState

void SaveBarState( LPCTSTR lpszProfileName ) const; 记录工具栏的状态(位置、大小等) void LoadBarState( LPCTSTR lpszProfileName ); 读取工具栏的状态,并根据此调整工具栏 更多内容见:vcshare.net和http://www.hedanwang.cn/bbs/

2009-11-14

窗口(CWnd类)控制 SWF格式

要想通过CWnd类控制窗口,必须先取得CWnd类(或派生类)的对像或指针。主要方法有四: 一,系统已经定义好的类。 二,自己定义对像,并操作它。 三,利用类向导为控件关联变量(前面已讲,不再详细讲解)。 四,利用现有函数,如:GetDlgItem、GetActiveView、Findwindow。 更多内容见:vcshare.net和http://www.hedanwang.cn/bbs/

2009-11-07

取得窗口类对像或指针

窗口(CWnd类)控制 要想通过CWnd类控制窗口,必须先取得CWnd类(或派生类)的对像或指针。主要方法有四: 一,系统已经定义好的类。 二,自己定义对像,并操作它。 三,利用类向导为控件关联变量(前面已讲,不再详细讲解)。 四,利用现有函数,如:GetDlgItem、GetActiveView、Findwindow。 更多内容见:vcshare.net和http://www.hedanwang.cn/bbs/

2009-11-07

VC6命令消息的响应顺序

6.2.2命令消息的响应顺序 由于同一个命令,在不同的视图(或文档)可能有不同的解释,在这种情况下,必须多次为这个命令添加消息映射,为了不发生混乱,必须弄清楚命令消息响应顺序。下面将通过一个实例来说明命令消息的响应顺序。 更多内容见:vcshare.net和http://www.hedanwang.cn/bbs/

2009-10-31

windiff简单使用 查看文件或文件夹的不同

windiff简单使用 更多内容见:vcshare.net和http://www.hedanwang.cn/bbs/

2009-10-31

空空如也

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

TA关注的人

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