<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Mr_Effiya的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Mr_Effiya</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Mr_Effiya]]></copyright><item><title><![CDATA[Linux控制导出到so文件的函数名]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108885328</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108885328</guid><author>Mr_Effiya</author><pubDate>Wed, 30 Sep 2020 15:00:42 +0800</pubDate><description><![CDATA[1、在文件里面最前面加上：#define extern “C” DLL_PUBLIC  _attribute_ ((visibility(“default”)))
2、在文件里面需要导出的函数前加上：DLL_PUBLIC
3、Linux下动态库（so）编译时默认不导出，在gcc命令中需要添加参数：-fvisibility=hidden
如上操作后，nm -D xxx.so，就会看到要导出的函数符号和函数名定义相同，方便后续通过dlsym获取函数函数地址

...]]></description><category></category></item><item><title><![CDATA[Socket自定义协议]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89451462</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89451462</guid><author>Mr_Effiya</author><pubDate>Sat, 12 Sep 2020 15:42:00 +0800</pubDate><description><![CDATA[基于socket简单通信协议实现（c/c++）
博客分类： C/C++Linux
1 场景
当用socket进行进程通信，传输数据的时候，会出现以下一些情况：
（1）完整的一条消息被系统拆分成几条发送，例如要发送一条消息：Hello World ，却被系统分成两条消息发送，分别为：Hello 和 World。
（2）几条独立的消息被系统合成一条消息发送，例如要发送两条消息分别为：a memory ...]]></description><category></category></item><item><title><![CDATA[Scala学习笔记——3]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84643473</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84643473</guid><author>Mr_Effiya</author><pubDate>Sat, 12 Sep 2020 15:41:13 +0800</pubDate><description><![CDATA[一、随笔
1、scala的每个表达式都是有返回值的
2、scala函数的最后一个表达式就是函数的返回值，scala不建议使用return语句
3、scala访问数组的方式是()，而不是[]
例如：
val a=Array[1,2,3]
println(a(2))

二、while循环
1、最好不要用var索引来枚举数组元素
2、foreach方法
例子：
//使用上面的常量a
a.foreach(...]]></description><category></category></item><item><title><![CDATA[C++学习笔记——1]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/88946577</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/88946577</guid><author>Mr_Effiya</author><pubDate>Sat, 12 Sep 2020 15:40:06 +0800</pubDate><description><![CDATA[网络编程

]]></description><category></category></item><item><title><![CDATA[Scala——yield的用法]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84334358</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84334358</guid><author>Mr_Effiya</author><pubDate>Sat, 12 Sep 2020 15:37:53 +0800</pubDate><description><![CDATA[Scala中的yield的主要作用是记住每次迭代中的有关值，并逐一存入到一个数组中。
用法如下：
for {子句} yield {变量或表达式}
具体举例如下，该例子获取文本文件中包含指定关键字的相关行，并统计各相关行字数，先把文本文件内容贴出来：
I love Scala.
I love Spark.
I love Hadoop.


下面是程序代码：


object YieldDemo {
...]]></description><category></category></item><item><title><![CDATA[C#调用JAVA代码]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108519799</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108519799</guid><author>Mr_Effiya</author><pubDate>Sat, 12 Sep 2020 15:36:50 +0800</pubDate><description><![CDATA[一、将已经编译后的java中Class文件进行打包；打包命令JAR
如：将某目录下的所有class文件夹全部进行打包处理；
使用的命令：jar cvf test.jar -C com/ .
其中test.jar为要生成的jar包；com/ . 为指定的当前目录下的文件夹，该文件夹包括子文件夹及class文件；
二、到IKVM官方网站下载IKVM需要的组件 http://www.ikvm.net/
ikvm-0.42.0.3.zip
ikvmbin-0.42.0.3.zip
openjdk6-b16-stri]]></description><category></category></item><item><title><![CDATA[C++编程规范]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108361792</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/108361792</guid><author>Mr_Effiya</author><pubDate>Thu, 10 Sep 2020 17:52:47 +0800</pubDate><description><![CDATA[C++命名规范
常见命名法：
匈牙利命名法：
基本原则是：变量名＝属性＋类型＋对象描述，其中每一对象的名称都要求有明确含义，可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原=则。保证名字的连贯性是非常重要的。
Camel命名法：
即骆驼式命名法，原因是采用该命名法的名称看起来就像骆驼的驼峰一样高低起伏。Camel命名法有两种形式：混合使用大小写字母和单词之间加下划线，例如runFast和run_fast都属于Camel命名法。
Pascal命名法：
与Camel命名法类似，不过Pascal命]]></description><category></category></item><item><title><![CDATA[不是创建此预编译头时使用的 idb 文件，请重新创建预编译头。]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/102707273</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/102707273</guid><author>Mr_Effiya</author><pubDate>Wed, 23 Oct 2019 17:42:09 +0800</pubDate><description><![CDATA[打开中间目录文件，删除所有文件，点击重新编译生成即可
原因：在链接器——输出文件中改了程序名
导致生成的idb文件覆盖问题

]]></description><category></category></item><item><title><![CDATA[Visual Studio项目属性的一些配置项的总结]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100898301</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100898301</guid><author>Mr_Effiya</author><pubDate>Mon, 16 Sep 2019 19:19:41 +0800</pubDate><description><![CDATA[转载自
这几天刚好要做一个决策支持系统软件的框架搭建，看到网上一些较好的资料整理了下，给大家分享。
一、Visual Studio 项目的文件组织方式
VC6.0之后的VC (VS)系列使用解决方案(Solution)来替代原来的工作空间，用于组织和管理多个相关的项目(Project)。VS中的每个管理器(解决方案或项目)都会对应一个总的文件夹，这个管理器文件夹下存放本管理器的配置文件以及子管理器...]]></description><category></category></item><item><title><![CDATA[MSVCRTD.lib(MSVCRTD.dll) : error LNK2005: _fclose already defined in LIBCD.lib(fclose.obj)]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100552781</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100552781</guid><author>Mr_Effiya</author><pubDate>Thu, 05 Sep 2019 10:21:05 +0800</pubDate><description><![CDATA[工程设置-&gt;Link-&gt;Input-&gt;忽略特定库
MSVCRTD.lib

]]></description><category></category></item><item><title><![CDATA[递归删除目录或文件时FindClose的重要性]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100099231</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/100099231</guid><author>Mr_Effiya</author><pubDate>Tue, 27 Aug 2019 14:44:50 +0800</pubDate><description><![CDATA[在清空文件夹时，调用了RemoveDirectory，在调用前已经删除了文件夹中所有文件，但就是不能成功调用。分析来分析去，其实原因很简单，但也很具有欺骗性。
其实是在调用FindFirstFile和FindNextFile这套函数组合后，没有执行FindClose。本质原因就是要删除的文件夹仍然处于被访问状态，不能被删除。当然还一点就是要保证被删除的文件夹为空。
如果要删除多层文件夹，那只好使用...]]></description><category></category></item><item><title><![CDATA[“IFileDialogEvents”: 未定义基类]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/98872849</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/98872849</guid><author>Mr_Effiya</author><pubDate>Thu, 08 Aug 2019 15:28:29 +0800</pubDate><description><![CDATA[在VS2008的项目属性中，在C/C++ --&gt;　预处理器 --&gt; 预处理器定义　中，把_WIN32_WINNT=0x0500改成_WIN32_WINNT=0x0600　，　然后清除以前编译的东西，再完全重新编译即可。(即重新编译预编译的东西即可)

...]]></description><category></category></item><item><title><![CDATA[VC++学习——3]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89139788</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89139788</guid><author>Mr_Effiya</author><pubDate>Mon, 27 May 2019 15:14:48 +0800</pubDate><description><![CDATA[目录
WIN32API文件操作

、



	


1、WIN32API文件操作

文件的创建和打开
CreateFile函数，可以创建或打开下列对象，返回一个可以读取对象的句柄
文件、管道、邮槽、通信资源、磁盘设备（仅限于Windows NT平台）、控制台、目录（仅适用于打开操作）

HANDLE CreateFile(
					LPCTSTR lpFileName,//对象名称
					D...]]></description><category></category></item><item><title><![CDATA[连续调用两次socket函数]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89925517</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89925517</guid><author>Mr_Effiya</author><pubDate>Fri, 10 May 2019 08:17:56 +0800</pubDate><description><![CDATA[note_2019_05_07

在一个进程的一个函数中连续调用socket函数赋值给两个不同的SOCKET类型变量，第二个调用socket的变量总是INVALID_SOCKET，不知是何原因。

解决方法：

在两个不同的线程中分别调用socket

在时间上两个线程几乎是同时调用socket函数的，但是没有发生上述错误，两个数据发送的是正确的
...]]></description><category></category></item><item><title><![CDATA[VC++学习——1]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89006510</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89006510</guid><author>Mr_Effiya</author><pubDate>Tue, 09 Apr 2019 10:29:53 +0800</pubDate><description><![CDATA[目录
1、概念
2、消息和消息队列
1、概念
Windows程序设计：事件驱动的程序设计
用户在窗口进行一些操作时，操作系统感知到这一事件，然后将这一事件打包成消息，投递到应用程序的消息队列中，然后应用程序从消息队列中取出消息并进行响应。
窗口过程：当“发送消息”时，操作系统调用应用程序中一个专门负责处理消息的函数，这个函数叫做窗口过程。
窗口句柄：窗口是通过窗口句柄（HWND，Handle to...]]></description><category></category></item><item><title><![CDATA[VC++学习——2]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89084411</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/89084411</guid><author>Mr_Effiya</author><pubDate>Tue, 09 Apr 2019 10:29:39 +0800</pubDate><description><![CDATA[目录
编译器生成默认构造函数的情况
函数重载
this指针
子类调用父类的自定义构造函数
三种继承方式及三种访问权限
友元


、
、

回到目录
1、编译器生成默认构造函数的情况
三种情况：

如果类有虚拟成员函数或虚基类时
如果类的基类有构造函数（可以是自定义的构造函数，或者是编译器提供的默认构造函数）
类中所有非静态的对象数据成员，他们所属的类中有构造函数（可以是自定义的构造函数，或者是编译...]]></description><category></category></item><item><title><![CDATA[JAVA——面向对象程序设计]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/86514173</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/86514173</guid><author>Mr_Effiya</author><pubDate>Wed, 16 Jan 2019 20:23:57 +0800</pubDate><description><![CDATA[1、一些基础概念，有利于理解JAVA程序设计的思路，更能理清代码结构层次，用对象去解决问题
从根本上说，只要对象能够满足要求，就不必关心其功能的具体实现过程。
项目开发中可以根据预算和时间，购买对象。
面向过程：先确定算法，再决定如何组织数据（数据结构）
面向对象：先确定数据结构，再考虑要进行什么操作（算法）
构造 construct
实例 instance
类实例=对象
封装 encapsula...]]></description><category></category></item><item><title><![CDATA[JAVA——多维数组1]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/86506073</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/86506073</guid><author>Mr_Effiya</author><pubDate>Wed, 16 Jan 2019 15:39:27 +0800</pubDate><description><![CDATA[1、与一维数组一样，在调用new对多维数组初始化之前，不能使用该多维数组。

2、for each访问多维数组

for(double[] row:a)

    for(double value:row)

        do someting with value

3、我们知道Arrays类的静态toStirng(type[] a)函数可以快速的打印一个一维数组，同理多维数组也存在着类似功...]]></description><category></category></item><item><title><![CDATA[大数据相关软件、环境（伪分布式）搭建全记]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84404018</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84404018</guid><author>Mr_Effiya</author><pubDate>Fri, 23 Nov 2018 23:38:48 +0800</pubDate><description><![CDATA[前言：
因为升级了下电脑的硬件，所以重装了下系统，重新安装软件的过程中发现还没有记录过安装的整个过程，所以来csdn记录下，以便以后安装时参考。
需要安装的软件及环境
VirtualBox
CentOs
VirtualBox
1、下载地址：
Oracel virtualbox官网
2、选择virtualbox的原因：
查了下，virtualbox占用资源比vmware小很多，运行集群时消耗较小。而...]]></description><category></category></item><item><title><![CDATA[Scala学习笔记——2]]></title><link>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84332438</link><guid>https://blog.youkuaiyun.com/Mr_Effiya/article/details/84332438</guid><author>Mr_Effiya</author><pubDate>Fri, 23 Nov 2018 13:38:38 +0800</pubDate><description><![CDATA[一、if表达式
1、if表达式是有返回值的
例如：val some=if(time&amp;amp;gt;4) 1 else 0
结果some:int 1
另一种写法：if(time&amp;amp;gt;4) some=1 else some=0
2、if和else子句要返回的值的类型可以不同，返回的类型为Any
3、else子句可以省略，默认else值的类型为unit
4、	Scala代码书写风格类似于python，不需要加...]]></description><category></category></item></channel></rss>