<?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; so</title>
	<atom:link href="http://blog.globstudio.com/tag/so/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>进程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>Linux动态库(.so)搜索路径(目录)设置方法</title>
		<link>http://blog.globstudio.com/373.html</link>
		<comments>http://blog.globstudio.com/373.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 09:37:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[开发技术]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[so]]></category>

		<guid isPermaLink="false">http://www.globstudio.com/373.html</guid>
		<description><![CDATA[在Linux 中，动态库的搜索路径除了默认的搜索路径外，还可通过三种方法来指定：方法一：在配置文件/etc/ld.so.conf中指定动态库搜索路径；方法二：通过环境变量LD_LIBRARY_PATH指定动态库搜索路径；方法三：在编译目标代码时指定该程序的动态库搜索路径。 众所周知，Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后，一般都复制到这两个目录中。当程序执行时需要某动态库，并且该动 态库还未加载到内存中，则系统会自动到这两个默认搜索路径中去查找相应的动态库文件，然后加载该文件到内存中，这样程序就可以使用该动态库中的函数，以及该动态库的其它资源了。在Linux 中，动态库的搜索路径除了默认的搜索路径外，还可以通过以下三种方法来指定。 方法一：在配置文件/etc/ld.so.conf中指定动态库搜索路径。 vi /etc/ld.so.conf 添加 lib目录 ldconfig 方法二：通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。 export LD_LIBRARY_PATH=”LD_LIBRARY_PATH:/opt/” 方法三：在编译目标代码时指定该程序的动态库搜索路径。 还可以在编译目标代码时指定程序的动态库搜索路径。通过gcc 的参数”-Wl,-rpath,”指定]]></description>
			<content:encoded><![CDATA[<p>在Linux 中，动态库的搜索路径除了默认的搜索路径外，还可通过三种方法来指定：方法一：在配置文件/etc/ld.so.conf中指定动态库搜索路径；方法二：通过环境变量LD_LIBRARY_PATH指定动态库搜索路径；方法三：在编译目标代码时指定该程序的动态库搜索路径。 <br/>众所周知，Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后，一般都复制到这两个目录中。当程序执行时需要某动态库，并且该动 态库还未加载到内存中，则系统会自动到这两个默认搜索路径中去查找相应的动态库文件，然后加载该文件到内存中，这样程序就可以使用该动态库中的函数，以及该动态库的其它资源了。在Linux 中，动态库的搜索路径除了默认的搜索路径外，还可以通过以下三种方法来指定。</p>
<p> <span id="more-373"></span>
<p>方法一：在配置文件/etc/ld.so.conf中指定动态库搜索路径。 <br/>vi /etc/ld.so.conf <br/>添加 lib目录 <br/>ldconfig <br/>方法二：通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。 <br/>export LD_LIBRARY_PATH=”LD_LIBRARY_PATH:/opt/” <br/>方法三：在编译目标代码时指定该程序的动态库搜索路径。 <br/>还可以在编译目标代码时指定程序的动态库搜索路径。通过gcc 的参数”-Wl,-rpath,”指定</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.globstudio.com/373.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

