<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liangar的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/liangar</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; liangar]]></copyright><item><title><![CDATA[C++ 和 C 的效率比较]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/122200370</link><guid>https://blog.youkuaiyun.com/liangar/article/details/122200370</guid><author>liangar</author><pubDate>Tue, 28 Dec 2021 19:19:54 +0800</pubDate><description><![CDATA[对于很多人来说，C++ 似乎比 C 易用，很多捧 C++ 的也说，C++ 具有 C 的效率。不过，说来说去，还是需要分析一下才行。
比如，对于一个3维坐标的点来说，建一个 C++ 的类，大概会是：


class point_cpp{
protected:
    int x_, y_, z_;

    point_cpp(int x, int y, int z) : x_(x), y_(y), z_(z)  {  }
    ......
};

对 C 来说，即是：


struct point_c ]]></description><category></category></item><item><title><![CDATA[OpenFOAM 中的 RTS 机制]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/120896786</link><guid>https://blog.youkuaiyun.com/liangar/article/details/120896786</guid><author>liangar</author><pubDate>Thu, 21 Oct 2021 23:17:32 +0800</pubDate><description><![CDATA[OpenFOAM 中的 RTS 实现，使用了很多宏定义展开，所以不容易理解。不过，也有分析文章，用了简单的例子，分析了编译展开后的代码，应该是说得比较好的。

OpenFoam RTS 实现分析，如下：

http://xiaopingqiu.github.io/2016/03/12/RTS1/

RTS 相当于一个类工厂，所以需要先了解类工厂的机制，也有说得很明白的文章，如下：

Factory Pattern in C++:
https://www.codeproject.com/articles/36]]></description><category></category></item><item><title><![CDATA[C语言的 restrict 关键字的作用]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/108838702</link><guid>https://blog.youkuaiyun.com/liangar/article/details/108838702</guid><author>liangar</author><pubDate>Sun, 27 Sep 2020 23:37:35 +0800</pubDate><description><![CDATA[restrict 这个关键字到底有什么用，还是用代码看得清楚。这里，c 标准说明中用了如下的例子：


#include &lt;stdio.h&gt;

int foo(int *a, int *b)
{
    *a = 5;
    *b = 6;
    return *a + *b;
}

int rfoo(int *restrict a, int *restrict b)
{
    *a = 5;
    *b = 6;
    return *a + *b;
}

void main(voi]]></description><category></category></item><item><title><![CDATA[把 java 转成 c++]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/80020532</link><guid>https://blog.youkuaiyun.com/liangar/article/details/80020532</guid><author>liangar</author><pubDate>Fri, 20 Apr 2018 16:27:44 +0800</pubDate><description><![CDATA[有很多 Java 代码，要转成 c++，怎么办？上网搜了下，还真有人干这个。 JunC++ion是一个，看起来是一个公司的产品，下载要注册。 Toba 是 edu的网站提供的，看来是 Free 的好同志。不过，就表面看来，Toba 提供的是源码，它自称是一个 Java 的高效编译器，不仅能将 Java编译成可以运行的程序，还能将其编译成 c 代码。而 JunC++ion 看起来比较商业，提供比较好...]]></description><category></category></item><item><title><![CDATA[jQuery 的几个插件]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/78676346</link><guid>https://blog.youkuaiyun.com/liangar/article/details/78676346</guid><author>liangar</author><pubDate>Thu, 30 Nov 2017 15:42:49 +0800</pubDate><description><![CDATA[保存一下个人用的jquery插件]]></description><category></category></item><item><title><![CDATA[线程安全的循环队列缓冲区]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/7283535</link><guid>https://blog.youkuaiyun.com/liangar/article/details/7283535</guid><author>liangar</author><pubDate>Wed, 22 Feb 2012 15:13:12 +0800</pubDate><description><![CDATA[循环队列，效率比较高，原因是：不需要什么初始化、释放动作，循环利用。
但是，一般的容器类，比较复杂，更不提供线程安全。
 
这里，基于我自己编写的可移植库 xsys 编写了一个容器类，大家根据自己的编程环境，也很容易移植吧。如下：
 
#pragma once

#ifndef MAX_NODE
#define MAX_NODE 1024
#endif // MAX_NODE]]></description><category></category></item><item><title><![CDATA[ODBC API不能释放Oracle数据库连接]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/5448145</link><guid>https://blog.youkuaiyun.com/liangar/article/details/5448145</guid><author>liangar</author><pubDate>Sat, 03 Apr 2010 18:30:00 +0800</pubDate><description><![CDATA[ODBC API打开数据库连接，一般用: SQLDriverConnect关闭数据库连接用: SQLDisconnect 但是要精细控制，需要设置连接数据库HANDLE的属性，比如比较普通的有版本号，超时时间等等。最近编程发现，用关闭数据库还不能释放。看样子是释放成功了，但用Oracle的管理工具看，或者看v$session表，发现连接还存在，状态是INACTIVE。 怎么]]></description><category></category></item><item><title><![CDATA[VB字符串左边填0的办法: LPad0]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/5448138</link><guid>https://blog.youkuaiyun.com/liangar/article/details/5448138</guid><author>liangar</author><pubDate>Sat, 03 Apr 2010 18:26:00 +0800</pubDate><description><![CDATA[左边填空格，有LPad，填0呢，就起个名字叫LPad0吧。这个也应用比较多。 估计不会填太多0，因此用如下办法： Public Function LPad0(ByVal s As String, ByVal l As Integer) As String    Dim slen As Integer    slen = l - Len(s)    If slen Then   ]]></description><category></category></item><item><title><![CDATA[程序变换: 转C++为C]]></title><link>https://blog.youkuaiyun.com/liangar/article/details/5448112</link><guid>https://blog.youkuaiyun.com/liangar/article/details/5448112</guid><author>liangar</author><pubDate>Sat, 03 Apr 2010 18:09:00 +0800</pubDate><description><![CDATA[简单定义下程序变换：在不改变功能(输入输出的对应关系)情况下，将程序改变成另一种形式表达。 可以看出，程序变换，是一种函数的等价变换。 广泛意义看来，所有编译都是变换。那么，将C++程序转成C的思路，就是针对C++的表达语法，C中没有的或不同语义的，找出相应的等价变换。 略微分析一些，如下： // 转structstruct x {...};  // c]]></description><category></category></item></channel></rss>