<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mrlzl9的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mrlzl9</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mrlzl9]]></copyright><item><title><![CDATA[对一些坏代码的总结、批判]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/81391999</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/81391999</guid><author>mrlzl9</author><pubDate>Fri, 03 Aug 2018 18:25:35 +0800</pubDate><description><![CDATA[今天就工作过程中遇见的烂代码、坏代码做一些总结。

公司代码一：


bool CBusSystem::UpdataBus(BUS_INFO* bus)
{
	m_BusMapLock-&amp;gt;lock();
	CBusInfo* tmp = GetBusByGuid(strutil::format(&quot;%d&quot;, bus-&amp;gt;dwID));
	if (tmp)
	{
		tmp-&amp;gt;m_Ln...]]></description><category></category></item><item><title><![CDATA[编程规范]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/81114117</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/81114117</guid><author>mrlzl9</author><pubDate>Thu, 19 Jul 2018 13:58:47 +0800</pubDate><description><![CDATA[1变量的命名规则

作用域 + 匈牙利命名规则 + 驼峰命名规则 + 设计意图

1.1作用域

全局变量： g_ 

类成员变量： m_

局部变量： 无

 

1.2匈牙利命名前缀（常用）

arr 数组

b 布尔型(bool)

c 字符(char)

n   带符号短整形(short)

i 带符号整形(int)

u 无符号整形(unsinged int)

l 带符号长整形(lon...]]></description><category></category></item><item><title><![CDATA[基础技术二：CRITICAL_SECTION 创建自动锁]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/78962418</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/78962418</guid><author>mrlzl9</author><pubDate>Wed, 03 Jan 2018 16:12:27 +0800</pubDate><description><![CDATA[class CMyLocker
{
public:
	CMyLocker();
	~CMyLocker();
	/** @brief enter critical section */
	void	Enter();

	/** @brief leave critical section */
	void	Leave();
protected:

private:
	CRITICAL_SECTION]]></description><category></category></item><item><title><![CDATA[基础技术一：MFC 线程对象封装]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/78962022</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/78962022</guid><author>mrlzl9</author><pubDate>Wed, 03 Jan 2018 15:46:54 +0800</pubDate><description><![CDATA[class CThreadObj
{
public:
	CThreadObj();
	virtual ~CThreadObj();
	
	/** 
	  *@brief 启动线程接口
	  */
	void	StartThread();

	/** 
	  *@brief 退出线程接口
	  *@author LuZhiLong[2017.05.11]
	  */
	void	ExitThread]]></description><category></category></item><item><title><![CDATA[项目上的一些总结]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/77552795</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/77552795</guid><author>mrlzl9</author><pubDate>Fri, 25 Aug 2017 09:38:29 +0800</pubDate><description><![CDATA[一、 在会议开始前一天，将讨论的文档、主题邮件发送参与者。
        重要：将会议讨论的结果、结论、再议的点反馈给会议参与者。
 
二、 项目过程中大框架设计的分享（人月神话的外科手术队伍）。将设计的思想、方向、子系统的划分、子系统间的耦合进行讨论。
 
三、 项目过程中编码风格的统一（包括小的技术点：内存管理、资源管理等，名称：变量、函数、类型等）
 
四、 产品需求（个人理]]></description><category></category></item><item><title><![CDATA[调试基础：函数  _CrtSetBreakAlloc（）使用blog]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/70065198</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/70065198</guid><author>mrlzl9</author><pubDate>Tue, 11 Apr 2017 17:38:44 +0800</pubDate><description><![CDATA[函数 _CrtSetBreakAlloc(long lBreakAlloc)。
函数说明 MSDN 链接：https://msdn.microsoft.com/en-us/library/4wth1ha5.aspx
 
在分配块号 lBreakAlloc 的内存时，程序中断。以此来定位内存泄露的大概位置。
注：必须在内存分配之前调用该函数来设置断点。
 
第一步：
发现有内存泄露：]]></description><category></category></item><item><title><![CDATA[MFC 基础：静态加载DLL ，main()、main全局变量、dllMain（）、dllMain全局变量的一些说明]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/64128255</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/64128255</guid><author>mrlzl9</author><pubDate>Mon, 20 Mar 2017 17:26:46 +0800</pubDate><description><![CDATA[现今的程序在大部分情况下，都或多或少引用了一些功能库。因此了解动态库DLL的加载和初始化，有利于避免一些依赖问题的出现。


   动态库的加载有 动态加载 和静态加载两种方式。现仅对静态加载的方式进行一些跟踪，来得出一些顺序上的结果。


   程序主程入口：int main(char argc, char *argv[]);
   DLL库的入口 ：BOOL WINAPI Dll]]></description><category></category></item><item><title><![CDATA[《人月神话》-摘要一]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53809030</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53809030</guid><author>mrlzl9</author><pubDate>Thu, 22 Dec 2016 09:10:07 +0800</pubDate><description><![CDATA[1）要成为系统构建，程序必须按照一定要求来来编制。输入输出在语法和语义上与精确定义的接口一致。
     精确定义的接口：符合支持实际的 应用情景。
     输入输出：很明确，简单的输出。与 函数功能单一性
统一。


2）功能模块的相互交互产生 bug。交互包涵错误，边界极值的情况，引起bug。
      功能模块 不应该依赖
模块以外的逻辑，依赖接口（抽象的使用）。]]></description><category></category></item><item><title><![CDATA[工具：SVN 管理软件版本的一些心得]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53097276</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53097276</guid><author>mrlzl9</author><pubDate>Wed, 09 Nov 2016 11:17:25 +0800</pubDate><description><![CDATA[一直使用的版本管理器 SVN
存在的现象，
1）提交版本的说明一般是简短的一句话。（例：修复bug，增加**功能）
2）功能增加完后之后提交。（可能修改、增加 N多的函数）
3）多人对同一个工程的代码管理。（公共部分的代码修改，处理责任之外的代码文件）
4）down 下来的代码需要额外的去配置，寻找库文件


较好的方法总结
1）单一功能增加就应该提交SVN
2）提交说明应该详]]></description><category></category></item><item><title><![CDATA[visual studio随机数问题]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53096703</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53096703</guid><author>mrlzl9</author><pubDate>Wed, 09 Nov 2016 10:15:28 +0800</pubDate><description><![CDATA[项目过程中遇到需要使用随机数。于是研究了一下visual studio 随机数的机制。
可以收纳成公共方法的接口。
val 在区间【m,n）：
（rand（）%（n - m+1） ）   + m




srand（）设置随机数的种子
rand（）伪随机数产生器，它是基于 “随机种子” 的线性随机。种子不同，随机数也不同。


一般使用的机制，以时间为种子。
srand（]]></description><category></category></item><item><title><![CDATA[关于 _cplusplus 的一些说明]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53096490</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53096490</guid><author>mrlzl9</author><pubDate>Wed, 09 Nov 2016 09:58:00 +0800</pubDate><description><![CDATA[编译器在编译过程会对一些函数，变量重命名：加上一些字符和符号。这种重命名的过程在编译器内部是可逆的，错误提示的代码为逆过程，即恢复命名。
因为存在这种重命名的过程，c++ 函数在提供给 c 函数使用的过程会出现一些问题。例如找不到相应的函数，未实现函数。


一些解决办法： _cplusplus
_cplusplus 标识c++编译器


#ifdef __cplusplus
E]]></description><category></category></item><item><title><![CDATA[visual studio 字节对齐 pack应用]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53095884</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53095884</guid><author>mrlzl9</author><pubDate>Wed, 09 Nov 2016 09:05:25 +0800</pubDate><description><![CDATA[32位的电脑内存一般都是4 bytes对齐。
struct _ONE_BYTE_STRUCT{
char m_byte;
};
struct _ONE_BYTE_STRUCT 结构体对象占用内存 4byte；


visual studio IDE 编程使用 关键字。修改内存对齐字节数
#pragma pack(1)
//定义的结构体 1字节对齐
......//去掉内存 4 ]]></description><category></category></item><item><title><![CDATA[配置 release 版本调试状态的]]></title><link>https://blog.youkuaiyun.com/mrlzl9/article/details/53036754</link><guid>https://blog.youkuaiyun.com/mrlzl9/article/details/53036754</guid><author>mrlzl9</author><pubDate>Fri, 04 Nov 2016 17:05:27 +0800</pubDate><description><![CDATA[在windows 平台开发中，碰到了一种情况：debug 版本测试case 没有问题，但是发布测试的版本却出现bug。
原因
1，release 版本的变量值不会赋初值，但是debug版本有时候有初值
2，release 版本去掉了调试信息，去掉了  null 诊断。延申：不要用null诊断来替代 if （null） 检测。
3，release 版本在发布之前没有调试，测试 case。]]></description><category></category></item></channel></rss>