re: 分布式高可用id服務器設計實現 star 2015-09-18 10:22
@single
多節點沒有直接通信,所以id的唯一性是通過配置步長和偏移保證的,比如說整個集群部署兩個節點,那么一個節點產生的id都是奇數,另一個節點產生的id都是偶數,從而互相獨立且唯一。
id的存盤是異步多線程實現,類似于生產者消費者模式,實現方面目前主線程和數據庫線程之間通過管道傳遞數據, 當然用eventfd + lockfree queue 會更好些,framework也提供這種通訊機制 。
多節點沒有直接通信,所以id的唯一性是通過配置步長和偏移保證的,比如說整個集群部署兩個節點,那么一個節點產生的id都是奇數,另一個節點產生的id都是偶數,從而互相獨立且唯一。
id的存盤是異步多線程實現,類似于生產者消費者模式,實現方面目前主線程和數據庫線程之間通過管道傳遞數據, 當然用eventfd + lockfree queue 會更好些,framework也提供這種通訊機制 。
re: 網絡游戲不同類型的技術分類[未登錄] star 2013-11-07 21:06
我也猜樓主是網易的哈哈,學習了~
re: Magic Index[未登錄] star 2013-07-12 14:53
好!!
re: lua和c/c++互相調用實例分析 star 2012-05-03 10:20
@jerome
鏈接時找不到函數定義,這個應該是lua庫的路徑問題。
鏈接時找不到函數定義,這個應該是lua庫的路徑問題。
re: 深度測試與alpha混合(1)[未登錄] star 2012-01-17 00:31
THX,讓知識鞏固了不少
re: linux上mq和socketpair的通信性能比較 star 2011-10-31 17:27
@mq001
posix的消息隊列,對應于systemV的消息隊列
posix的消息隊列,對應于systemV的消息隊列
re: MFC socket程序開發[未登錄] star 2011-05-29 15:25
謝謝。。能夠給我發一份啊。。正在系統編程中,找了好久啊。。
623383843@qq.com
623383843@qq.com
re: HDOJ HDU 1982 Kaitou Kid - The Phantom Thief(1) ACM 1982 IN HDU [未登錄] star 2011-05-12 12:03
#include "stdio.h"
int main()
{
int t,x;
char c;
scanf("%d",&t);
getchar();
while(t--)
{
x=0;
c=getchar();
while(c!='\n')
{
if(c>='0'&&c<='9')
{x*=10;x+=c-'0';}
else
{
if(x>=1&&x<=26)
printf("%c",x+'A'-1);
if(c=='#')
printf(" ");
x=0;
}
c=getchar();
}
if(x>=1&&x<=26)
printf("%c",x+'A'-1);
printf("\n");
}
}
int main()
{
int t,x;
char c;
scanf("%d",&t);
getchar();
while(t--)
{
x=0;
c=getchar();
while(c!='\n')
{
if(c>='0'&&c<='9')
{x*=10;x+=c-'0';}
else
{
if(x>=1&&x<=26)
printf("%c",x+'A'-1);
if(c=='#')
printf(" ");
x=0;
}
c=getchar();
}
if(x>=1&&x<=26)
printf("%c",x+'A'-1);
printf("\n");
}
}
re: 關于讀取android手機通訊錄過程中Excessive JNI global references VM aborting 的問題[未登錄] star 2010-06-24 10:09
hi,樓主能不能把這個問題的解決方式公布下,因為我也遇到同樣的問題!非常謝謝!
re: 非阻塞connect實現 star 2009-12-25 16:10
int error_code = 1 ;
socklen_t len = (socklen_t)sizeof(error_code);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &error_code, &len) ;
if ( error_code )
{
close(fd) ;
}
socklen_t len = (socklen_t)sizeof(error_code);
getsockopt(fd, SOL_SOCKET, SO_ERROR, &error_code, &len) ;
if ( error_code )
{
close(fd) ;
}
re: ACM菜鳥入門學習指南(三)--分治算法[未登錄] star 2009-12-05 19:06
很不錯,收藏了。
re: 非有序全排列生成算法[未登錄] star 2009-12-05 19:01
非常好的文章!
近幾天在研究全排列的問題,這文章對我有很大幫助哦!
近幾天在研究全排列的問題,這文章對我有很大幫助哦!
re: 常量指針 和 指針常量[未登錄] star 2009-12-03 15:13
第四個例子有問題
ptr1='A';// 錯誤 因為指向的地址是內容是不可以變化的
改為
*ptr1='A';// 錯誤 因為指向的地址是內容是不可以變化的
ptr1='A';// 錯誤 因為指向的地址是內容是不可以變化的
改為
*ptr1='A';// 錯誤 因為指向的地址是內容是不可以變化的
re: 最新-基于四叉樹的LOD地形設計[未登錄] Star 2009-10-03 17:38
呵呵。。LZ優化需要加強。。理論上4097*4097能跑到35FPS的。。
re: 程序員的十種級別,看看你屬于哪一種?[未登錄] star 2008-12-12 13:36
說的不錯,有點不明白游戲程序員和程序員之間的關系,以前很喜歡圖形學,但是現在我覺得網絡編程更好玩
re: 鏈接不過要考慮extern “C”[未登錄] star 2008-10-31 17:28
呵呵,以前我編譯的時候也不知道,也害的我好慘
re: 在VS2005中配置LUA[未登錄] star 2008-10-31 17:22
辛苦你了
re: 新項目,新征程 star 2008-10-21 11:16
呵呵
re: strlen源碼剖析 star 2008-09-07 16:11
博主的文章允許轉載么?
昨天看glibc里的注釋覺得云里霧里
今天看了博主的文章,突然覺得豁然開朗啊 ;-)
還有想問一個問題 glibc里是這樣處理64位的
if (sizeof (longword) > 4)
{
/* 64-bit version of the magic. */
/* Do the shift in two steps to avoid a warning if long has 32 bits. */
magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL;
himagic = ((himagic << 16) << 16) | himagic;
lomagic = ((lomagic << 16) << 16) | lomagic;
}
為什么不一次就移32位呢?
昨天看glibc里的注釋覺得云里霧里
今天看了博主的文章,突然覺得豁然開朗啊 ;-)
還有想問一個問題 glibc里是這樣處理64位的
if (sizeof (longword) > 4)
{
/* 64-bit version of the magic. */
/* Do the shift in two steps to avoid a warning if long has 32 bits. */
magic_bits = ((0x7efefefeL << 16) << 16) | 0xfefefeffL;
himagic = ((himagic << 16) << 16) | himagic;
lomagic = ((lomagic << 16) << 16) | lomagic;
}
為什么不一次就移32位呢?