小编ASB*_*Bai的帖子

如何在共享库中隐藏导出的符号名称

对于VC,我可以编写一个DEF文件并使用'NONAME'指令在dll的导出表中只保留序号.

我怎么能用gcc和ELF格式共享库做同样的事情?

或者,ELF共享库中是否有类似PE格式DLL中的序号?如果没有,我如何在共享库中隐藏导出的符号名称?

======================================

更新:一些额外的描述:

在Windows中,您可以通过仅放置具有空名称的整数ID(序号)来导出函数.

要显示它,一个DLL的导出表正常布局看起来是这样的:http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo22.gif.

"NONAME"看起来像这样:http://home.hiwaay.net/~georgech/WhitePapers/Exporting/HowTo23.gif .

请注意,第二张图片中的函数名称为"N/A".以下是对它的完整解释:hxxp://home.hiwaay.net/~georgech/WhitePapers/Exporting/Exp.htm.

======================================

更新:非常感谢为我提供建议的每个人.最后,我决定在linux/posix平台上使用静态库.但是将小的"特殊部分"(使用一些不适合静态库的特性,例如:TLS Slot等)提取到普通的共享库中.因为小型普通共享库只做很少的事情,而且这些工作完全不敏感,所以不需要隐藏/隐藏它的API.

我认为这是解决我问题的最简单方法:-D

c c++ gcc shared-libraries

13
推荐指数
3
解决办法
2万
查看次数

haproxy中"session"的确切含义是什么?

当我打开我的http代理服务器的haproxy统计报告页面时,我看到如下内容:

Cum. connections:   280073
Cum. sessions   :   3802
Cum. HTTP requests: 24245
Run Code Online (Sandbox Code Playgroud)

我没有在配置中使用'appsession'和任何其他与cookie相关的命令.那么'会话'在这里意味着什么?

我想haproxy通过这个顺序识别http会话:

  1. 如果配置中存在cookie或查询字符串,请使用它.
  2. 使用SSL/TLS会话.
  3. 使用IP地址和TCP连接状态.

我对吗?

session haproxy

6
推荐指数
2
解决办法
5699
查看次数

启用mysql binlog后,为什么仍需要innodb重做日志?

以我的理解,mysql binlog可以完全充当InnoDB的重做日志。

那么,启用Binlog后,为什么InnoDB必须同时编写重做日志,而不是仅仅切换为使用Binlog?这是否会大大降低数据库的写入性能?

除了简化设计和实现之外,这样做还有什么好处?

AFAIK,要在保证ACID符合性的同时启用两个日志,将发生以下问题:

  1. 具有相同含义的每个日志记录必须分别写入两次。
  2. 每次提交事务或事务组时,都要刷新两个日志。
  3. 为了确保两个日志文件之间的一致性,使用了复杂而低效的方法,例如XA(2PC)。

因此,所有其他产品似乎仅使用一组日志(SQL Server称为事务日志,ORACLE称为重做日志,PostgreSQL称为WAL)来完成所有相关工作。难道只有MySQL必须同时打开两组日志以确保ACID合规性和强而一致的主从复制吗?

在仅启用其中一项的情况下,是否有一种方法可以实现ACID遵从性和强大的一致半同步复制?

mysql innodb transactions acid mariadb

0
推荐指数
1
解决办法
114
查看次数

标签 统计

acid ×1

c ×1

c++ ×1

gcc ×1

haproxy ×1

innodb ×1

mariadb ×1

mysql ×1

session ×1

shared-libraries ×1

transactions ×1