<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[nsaygl的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/nsaygl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; nsaygl]]></copyright><item><title><![CDATA[阻塞与非阻塞，同步与异步、I/O模型]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/123402928</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/123402928</guid><author>nsaygl</author><pubDate>Thu, 10 Mar 2022 15:31:58 +0800</pubDate><description><![CDATA[阻塞与非阻塞，同步与异步、I/O模型]]></description><category></category></item><item><title><![CDATA[TCP连接及断开]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/103255359</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/103255359</guid><author>nsaygl</author><pubDate>Tue, 26 Nov 2019 14:14:26 +0800</pubDate><description><![CDATA[TCP报文首部

源端口和目的端口，各占2个字节，分别写入源端口和目的端口；
	序号，占4个字节，TCP连接中传送的字节流中的每个字节都按顺序编号。例如，一段报文的序号字段值是 301 ，而携带的数据共有100字段，显然下一个报文段（如果还有的话）的数据序号应该从401开始；
	确认号，占4个字节，是期望收到对方下一个报文的第一个数据字节的序号。例如，B收到了A发送过来的报文，其序列号字段是501...]]></description><category></category></item><item><title><![CDATA[OpenSSL s_client]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/88120354</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/88120354</guid><author>nsaygl</author><pubDate>Mon, 04 Mar 2019 15:48:15 +0800</pubDate><description><![CDATA[用途：

s_client为一个SSL/TLS客户端程序，与s_server对应，它不仅能与s_server进行通信，也能与任何使用ssl协议的其他服务程序进行通信。

用法：

[cpp]view plaincopy



openssls_client[-hosthost][-portport][-connecthost:port][-verifydepth][-cer...]]></description><category></category></item><item><title><![CDATA[openssl 生成证书及生成过程]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/88033283</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/88033283</guid><author>nsaygl</author><pubDate>Thu, 28 Feb 2019 16:27:52 +0800</pubDate><description><![CDATA[1. 基本原理

公司一个项目要进行交易数据传输,因为这个项目银行那边也是刚刚开始启动,所有的支持只有一个传输字段的说明文档,好吧,总的有人做事不是嘛,于是接口开发正式展开,第一步的难点就是加密解密,我选择使用OpenSSL.

OpenSSL初接触的人恐怕最难的在于先理解各种概念

公钥/私钥/签名/验证签名/加密/解密/非对称加密

我们一般的加密是用一个密码加密文件,然后解密也用同样的密码....]]></description><category></category></item><item><title><![CDATA[linux iptables详解]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/85692812</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/85692812</guid><author>nsaygl</author><pubDate>Thu, 03 Jan 2019 14:01:37 +0800</pubDate><description><![CDATA[前提基础：
1、当主机收到一个数据包后，数据包先在内核空间中处理，若发现目的地址是自身，则传到用户空间中交给对应的应用程序处理，若发现目的不是自身，则会将包丢弃或进行转发。

2、iptables实现防火墙功能的原理是：在数据包经过内核的过程中有五处关键地方，分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING，称为钩子函数，iptables这款用户空间的软...]]></description><category></category></item><item><title><![CDATA[Linux中的线程局部存储]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/85275584</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/85275584</guid><author>nsaygl</author><pubDate>Thu, 27 Dec 2018 11:51:30 +0800</pubDate><description><![CDATA[转载请说明出处：http://blog.youkuaiyun.com/cywosp/article/details/26469435

   在Linux系统中使用C/C++进行多线程编程时，我们遇到最多的就是对同一变量的多线程读写问题，大多情况下遇到这类问题都是通过锁机制来处理，但这对程序的性能带来了很大的影响，当然对于那些系统原生支持原子操作的数据类型来说，我们可以使用原子操作来处理，这能对程序的性能会得...]]></description><category></category></item><item><title><![CDATA[gcc的ar,nm,objdump,objcopy]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/85273186</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/85273186</guid><author>nsaygl</author><pubDate>Thu, 27 Dec 2018 10:13:15 +0800</pubDate><description><![CDATA[首先简要阐述关于gcc、glibc和 binutils模块之间的关系

一、关于gcc、glibc和binutils模块之间的关系

1、gcc（gnu collect compiler）是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”，以及提供了与编译器紧密相关的运行库的支持，如 libgcc_s.so、libstdc++.so等。

2、binutils提供了一系列用来创建、管...]]></description><category></category></item><item><title><![CDATA[Makefile 中:= ?= += =的区别]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/83824462</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/83824462</guid><author>nsaygl</author><pubDate>Wed, 07 Nov 2018 15:12:06 +0800</pubDate><description><![CDATA[在Makefile中我们经常看到 = := ?= +=这几个赋值运算符，那么他们有什么区别呢？我们来做个简单的实验

新建一个Makefile，内容为：
ifdef DEFINE_VRE
    VRE = “Hello World!”
else
endif

ifeq ($(OPT),define)
    VRE ?= “Hello World! First!”
endif

ifeq ($(...]]></description><category></category></item><item><title><![CDATA[linux 路由表设置 之 route 指令详解]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/78424910</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/78424910</guid><author>nsaygl</author><pubDate>Thu, 02 Nov 2017 14:54:18 +0800</pubDate><description><![CDATA[使用下面的 route 命令可以查看 Linux 内核路由表。
[cpp] view plain copy # route  Destination     Gateway         Genmask Flags Metric Ref    Use Iface  192.168.0.0     *               255.255.255.0   U     0      0   ]]></description><category></category></item><item><title><![CDATA[C#中方法的参数有四种类型]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/77410896</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/77410896</guid><author>nsaygl</author><pubDate>Sat, 19 Aug 2017 12:20:08 +0800</pubDate><description><![CDATA[C#中方法的参数有四种类型：
      1. 值参数类型  (不加任何修饰符,是默认的类型)
      2. 引用型参数  (以ref 修饰符声明)
      3. 输出型参数  (以out 修饰符声明)
      4. 数组型参数  (以params 修饰符声明)

 ===================================================
1]]></description><category></category></item><item><title><![CDATA[C# 获取当前路径方法]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/77196740</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/77196740</guid><author>nsaygl</author><pubDate>Tue, 15 Aug 2017 16:38:12 +0800</pubDate><description><![CDATA[//获取包含清单的已加载文件的路径或 UNC 位置。

        public static string sApplicationPath = Assembly.GetExecutingAssembly ( ).Location;

        //result: X:\xxx\xxx\xxx.dll (.dll文件所在的目录+.dll文件名)

 

        ]]></description><category></category></item><item><title><![CDATA[读取Excel数据截断问题]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/77163484</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/77163484</guid><author>nsaygl</author><pubDate>Mon, 14 Aug 2017 16:47:10 +0800</pubDate><description><![CDATA[编写程序读取excel表格时，前25行数据都能全部读取。
而在25行之后，稍微长一点的数据会不能全部读出，数据被截断。
可以通过修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel中TypeGuessRows改为0，即可解决。
该值默认为25，所以前25行不会被截断。]]></description><category></category></item><item><title><![CDATA[C#与C/C++的交互]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/76609971</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/76609971</guid><author>nsaygl</author><pubDate>Thu, 03 Aug 2017 10:29:28 +0800</pubDate><description><![CDATA[C#与C++交互，总体来说可以有两种方法：



利用C++/CLI作为代理中间层


利用PInvoke实现直接调用


第一种方法：实现起来比较简单直观，并且可以实现C#调用C++所写的类，但是问题是MONO构架不支持C++/CLI功能，因此无法实现脱离Microsoft .NET Framework跨平台运行。

第二种方法：简单的实现并不麻烦，只要添加DllImpo]]></description><category></category></item><item><title><![CDATA[Dotnet2.0中string 转 char *]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/76493490</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/76493490</guid><author>nsaygl</author><pubDate>Tue, 01 Aug 2017 09:42:57 +0800</pubDate><description><![CDATA[String TO char *
使用String的Chars[i]方法，该方法只能针对ascii码
char at_cmd[1024] = {0};
String* _at_cmd = "at+system=wl phy_forcecal 1";
int at_cmd_len = _at_cmd->Length;
memset(at_cmd,0,1024);
for(i=0;i
{]]></description><category></category></item><item><title><![CDATA[GetModuleFileName与GetCurrentDirectory]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/51832502</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/51832502</guid><author>nsaygl</author><pubDate>Tue, 05 Jul 2016 17:01:57 +0800</pubDate><description><![CDATA[1、函数原型

DWORD GetModuleFileName(
  HMODULE hModule,    // handle to module
  LPTSTR lpFilename,  // path buffer
  DWORD nSize         // size of buffer
);


DWORD GetCurrentDirectory(
  DWORD nBu]]></description><category></category></item><item><title><![CDATA[内核对象简介]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/49513409</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/49513409</guid><author>nsaygl</author><pubDate>Fri, 30 Oct 2015 16:23:10 +0800</pubDate><description><![CDATA[Windows核心编程：内核对象
1.对象和句柄
   对象是静态定义的对象类型的单个运行时实例。对象类型包括系统定义的数据类型，在数据类型实例上的操作的函数以及一组对象属性集。
    对象为完成下列四种重要的操作系统任务提供了方便的方法：

    为系统资源提供可读的名字；
    在进程间共享资源和数据；
    保护资源以免非授权访问；
    引用跟踪，它允许系统确知对]]></description><category></category></item><item><title><![CDATA[beginthreadex CreateThread]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/49513059</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/49513059</guid><author>nsaygl</author><pubDate>Fri, 30 Oct 2015 16:03:19 +0800</pubDate><description><![CDATA[我们知道在Windows下创建一个线程的方法有两种，一种就是调用Windows API CreateThread()来创建线程；另外一种就是调用MSVC CRT的函数_beginthread()或_beginthreadex()来创建线程。相应的退出线程也有两个函数Windows API的ExitThread()和CRT的_endthread()。这两套函数都是用来创建和退出线程的，它们有什么区别]]></description><category></category></item><item><title><![CDATA[__stdcall,__cdecl,__fastcall]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/49512015</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/49512015</guid><author>nsaygl</author><pubDate>Fri, 30 Oct 2015 15:40:48 +0800</pubDate><description><![CDATA[__stdcall,__cdecl,__fastcall的区别 三个不同的文章拼接出来的，懒得编辑了

一、三者区别一览表

 




 


__stdcall


__cdecl


__fastcall




参数传递方式


右->左 压栈


右->左 压栈


左边开始的两个不大于4字节（DWORD）的参数分别放在EC]]></description><category></category></item><item><title><![CDATA[编译选项]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/42522199</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/42522199</guid><author>nsaygl</author><pubDate>Thu, 08 Jan 2015 11:22:01 +0800</pubDate><description><![CDATA[gcc 编译选项,自己翻译的.- -
                                       
gcc 编译选项,自己翻译的. 
-o 设定输出文件名 
-c 只编译,不连接. 
-E 只做预编译. 
-pipe 在多个编译过程之间使用管道. 
--version 显示版本. 
-static 静态连接. 
-ansi C 模式下支持所有 ISO C90 标]]></description><category></category></item><item><title><![CDATA[C++文件读写详解（ofstream,ifstream,fstream）]]></title><link>https://blog.youkuaiyun.com/nsaygl/article/details/39347703</link><guid>https://blog.youkuaiyun.com/nsaygl/article/details/39347703</guid><author>nsaygl</author><pubDate>Wed, 17 Sep 2014 20:39:28 +0800</pubDate><description><![CDATA[在看C++编程思想中，每个练习基本都是使用ofstream,ifstream,fstream，以前粗略知道其用法和含义，在看了几位大牛的博文后，进行整理和总结：


这里主要是讨论fstream的内容：



[java] 
view plaincopyprint?


#include   ofstream         //文件写操作 内存写入存储设备   ifstre]]></description><category></category></item></channel></rss>