<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>GlobStudio &#187; c++</title>
	<atom:link href="http://blog.globstudio.com/tag/c/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.globstudio.com</link>
	<description>记录成长历程，专注软件开发</description>
	<lastBuildDate>Wed, 14 Dec 2011 07:53:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>淘宝开发API工具</title>
		<link>http://blog.globstudio.com/771.html</link>
		<comments>http://blog.globstudio.com/771.html#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:32:00 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[心情随笔]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[opentaobao]]></category>
		<category><![CDATA[taobao]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/771.html</guid>
		<description><![CDATA[在GF的要求下，我重新开发了淘宝自动上架工具，之前用的是模拟网页提交的方式，效率不高，并且用的IE控件，用的时间长了就占用过多的内存。 这次使用淘宝开发API开发的，嗯，使用C#，感觉还不错。已经基本完成了。部分细节内容修饰一下就可以了。 目前只有自动上架功能，下一步嘛，肯定会有销售管理，和其他的功能。 淘宝客也准备做一个网站，使用PHP开发吧。 感觉自己是全能战士了，哈哈哈，PHP,C#,C,Python都做过东西了。 不错不错，继续坚持！ &#160; 淘宝箱的工具只有三次机会申请进入正式环境测试，晕，三次机会我都用完了。好吧，只能在沙箱测试了。]]></description>
			<content:encoded><![CDATA[<p>在GF的要求下，我重新开发了淘宝自动上架工具，之前用的是模拟网页提交的方式，效率不高，并且用的IE控件，用的时间长了就占用过多的内存。</p>
<p>这次使用淘宝开发API开发的，嗯，使用C#，感觉还不错。已经基本完成了。部分细节内容修饰一下就可以了。</p>
<p>目前只有自动上架功能，下一步嘛，肯定会有销售管理，和其他的功能。</p>
<p>淘宝客也准备做一个网站，使用PHP开发吧。</p>
<p>感觉自己是全能战士了，哈哈哈，PHP,C#,C,Python都做过东西了。</p>
<p>不错不错，继续坚持！</p>
<p>&#160;</p>
<p>淘宝箱的工具只有三次机会申请进入正式环境测试，晕，三次机会我都用完了。好吧，只能在沙箱测试了。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/771.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下获取当前运行进程的文件路径</title>
		<link>http://blog.globstudio.com/698.html</link>
		<comments>http://blog.globstudio.com/698.html#comments</comments>
		<pubDate>Mon, 29 Mar 2010 07:10:59 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=698</guid>
		<description><![CDATA[#include &#60;unistd .h&#62; int get_bin_pathname&#40; char *pathname &#41; &#123; FILE *fp = NULL; char _filename&#91;1024&#93; = &#123;0&#125;; &#160; int _pid = getpid&#40;&#41;; &#160; sprintf&#40;_filename, &#34;dirname `ls -n /proc/%d/exe &#124; awk '{if ($8==\&#34;-&#62;\&#34;) {print $19} else {if ($9==\&#34;-&#62;\&#34;) {print $10} else {print $11}}}'`&#34;, _pid&#41;; fp = popen&#40;_filename, &#34;r&#34;&#41;; fgets&#40;_filename, sizeof&#40;_filename&#41;, fp&#41;; fclose&#40;fp&#41;; &#160; _filename&#91;strlen&#40;_filename&#41;-1&#93; = '\0'; [...]]]></description>
			<content:encoded><![CDATA[
<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;unistd .h&gt;</span>
<span style="color: #0000ff;">int</span> get_bin_pathname<span style="color: #008000;">&#40;</span> <span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>pathname <span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
    <span style="color: #0000ff;">FILE</span> <span style="color: #000040;">*</span>fp <span style="color: #000080;">=</span> <span style="color: #0000ff;">NULL</span><span style="color: #008080;">;</span>
    <span style="color: #0000ff;">char</span> _filename<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1024</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">int</span> _pid <span style="color: #000080;">=</span> getpid<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000dd;">sprintf</span><span style="color: #008000;">&#40;</span>_filename, <span style="color: #FF0000;">&quot;dirname `ls -n /proc/%d/exe | awk '{if ($8==<span style="color: #000099; font-weight: bold;">\&quot;</span>-&gt;<span style="color: #000099; font-weight: bold;">\&quot;</span>) {print $19} else {if ($9==<span style="color: #000099; font-weight: bold;">\&quot;</span>-&gt;<span style="color: #000099; font-weight: bold;">\&quot;</span>) {print $10} else {print $11}}}'`&quot;</span>, _pid<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    fp <span style="color: #000080;">=</span> popen<span style="color: #008000;">&#40;</span>_filename, <span style="color: #FF0000;">&quot;r&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">fgets</span><span style="color: #008000;">&#40;</span>_filename, <span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>_filename<span style="color: #008000;">&#41;</span>, fp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">fclose</span><span style="color: #008000;">&#40;</span>fp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    _filename<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>_filename<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008080;">;</span>
    <span style="color: #0000dd;">strcpy</span><span style="color: #008000;">&#40;</span> pathname, _filename <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
    <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #000080;">&lt;</span><span style="color: #000040;">/</span>unistd<span style="color: #000080;">&gt;</span></pre></div></div>

<p><span id="more-698"></span><br />
dirname获取路径，basename获取文件名</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/698.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>进程Bin1加载So1、So2，同时So2也加载So1，会有什么样的表现呢？</title>
		<link>http://blog.globstudio.com/662.html</link>
		<comments>http://blog.globstudio.com/662.html#comments</comments>
		<pubDate>Sun, 14 Mar 2010 08:16:38 +0000</pubDate>
		<dc:creator>henry.wu</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[so]]></category>

		<guid isPermaLink="false">http://blog.globstudio.com/?p=662</guid>
		<description><![CDATA[我的初衷是这样的，有一个so1模块实现数据库连接池的管理，其他业务实现so2中需要用到连接池so1，又因为连接池只能有一个，所以连接池在进程Bin1中创建并管理，在so2中获取连接池，实际上就是Bin1中调用so1创建的连接池，哈哈，我的问题解决了。 我的想法是，因为在进程Bin1的一个业务中，会用到多个数据库的连接（多个不同的数据库呃），那么Bin1中创建一个session（session的代码中so1中），用当前线程id作为session的标识，在so2中的业务代码中根据线程id获取到session信息，需要获取什么类型的数据库连接由so2的具体业务确定，获取到连接之后注册到当前session，这样当业务取消或失败的时候，可以统一的abort数据库操作。 测试代码很简单，在dll1.so中是一个单例模式的类 在bin1中创建单例对象，并执行一个增加int的函数 dll2.so中只有一个函数，获取单例并返回一个int值 从结果我们可以发现，实际上dll2.so中使用的单例对象就是bin1中创建的单例对象 测试代码：下载]]></description>
			<content:encoded><![CDATA[<p>我的初衷是这样的，有一个so1模块实现数据库连接池的管理，其他业务实现so2中需要用到连接池so1，又因为连接池只能有一个，所以连接池在进程Bin1中创建并管理，在so2中获取连接池，实际上就是Bin1中调用so1创建的连接池，哈哈，我的问题解决了。</p>
<p>我的想法是，因为在进程Bin1的一个业务中，会用到多个数据库的连接（多个不同的数据库呃），那么Bin1中创建一个session（session的代码中so1中），用当前线程id作为session的标识，在so2中的业务代码中根据线程id获取到session信息，需要获取什么类型的数据库连接由so2的具体业务确定，获取到连接之后注册到当前session，这样当业务取消或失败的时候，可以统一的abort数据库操作。</p>
<p>测试代码很简单，在dll1.so中是一个单例模式的类</p>
<p>在bin1中创建单例对象，并执行一个增加int的函数</p>
<p>dll2.so中只有一个函数，获取单例并返回一个int值</p>
<p>从结果我们可以发现，实际上dll2.so中使用的单例对象就是bin1中创建的单例对象</p>
<p>测试代码：<a href="attachments/files/testdll.zip">下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/662.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log4cxx学习&amp;使用笔记</title>
		<link>http://blog.globstudio.com/84.html</link>
		<comments>http://blog.globstudio.com/84.html#comments</comments>
		<pubDate>Tue, 20 Oct 2009 03:45:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[默认分类]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[log4cxx]]></category>
		<category><![CDATA[日志]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://blog.0goshopping.com/84.html</guid>
		<description><![CDATA[占位，最近用log4cxx，要记录下学习使用过程]]></description>
			<content:encoded><![CDATA[<p>占位，最近用log4cxx，要记录下学习使用过程</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/84.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

