Ĭ��
���� �������� 12
�뿪��IM������Ʒ�¿ӣ�����3���¹����ҿ�Դ����ߣ������������·��... ��վ�����㽨��
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)
�Ķ���100806�� | ���ۣ�12�� �ղ�8 ����2 ��3
΢��ɨһɨ��ע��

1������


���д���IMϵͳ�У�������Ϣ��ΨһID���ɲ����Ǹ�����Ҫ�ļ����㡣�����ŵ�˵��������ϢID�ᴩ�����������������ڵļ���ÿһ���㷨���߼��͹��̣�ID���ɲ��Եĺû��п���ֱ�Ӿ���ϵͳ��ijЩ�������ϵ��������׶ȡ�

����С��IM�����£���ϢID���Լ򵥴���������ֻҪΨһ���У����д��ͳ����£���ΪҪ���ǵ��ֲ�ʽ�����ܡ�һ���Եȣ�����Ҫ���ǵ�������������һ���¡�

��֮���ǣ�IM����ϢID���������£�������dz�����Ƽ򵥵�ʵ�ʿ�̽���ı߽����Ժܴ�����Ҳ��Ϊʲô��ʱͨѶ��Ϊ��ר�������ˡ�IM��ϢID����ר�⡷ϵ�����µ�ԭ������������ν�����������˽���Խ�࣬���ļ����ɲ����ռ�Ҳ��Խ����ϣ����������ϵ�����µ��Ķ�������Ϊ����ID������һ���ļ���ѡ�ʹ�������������������

���⣬��Ϊ��ʱͨѶ����Ҫ��ע���Ǽ�ʱͨѶ������ϵͳ��������������ζ������ϵͳ����ֻ������IM����Ϣ���͵�ʵʱͨ��ϵͳ����ͬ��������������ҪΨһID��Ӧ���С�

���Ľ�Ҫ�������ǵεο�Դ�ķֲ�ʽID������Tinyid�ļ���ԭ����ʹ�÷����ȵȣ�ϣ���ܽ�һ��Ϊ�������ⷽ���ļ�����Ұ��

������ͬ�������ڡ���ʱͨѶ����Ȧ�����ںţ���ӭ��ע��
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_52im_qr_��ʱͨѶ����Ȧ_400px.png
�� �����ڹ��ں��ϵ������ǣ����˽���

2��ר��Ŀ¼


�����ǡ�IM��ϢID����ר�⡱ϵ�����µĵ�6ƪ��ר����Ŀ¼���£�


3��ʲô��Tinyid��


Tinyid�ǵε���Java������һ���ֲ�ʽid����ϵͳ���������ݿ��Ŷ��㷨ʵ�֡�

Tinyid�������ŵ�ID�����㷨Leaf�Ļ�������չ������֧�����ݿ������ڵ�ģʽ�����ṩ��REST API��Java�ͻ������ֻ�ȡ��ʽ��������˵ʹ�ø����㡣�����������ŵ�Leaf�㷨��ͬ���ǣ�Tinyidֻ֧�ֺŶ�һ��ģʽ������֧��Snowflakeģʽ�������й����ŵ�Leaf�㷨������������IM��ϢID����ר��(��)�����Ƚ������ŵķֲ�ʽID�����㷨����

TinyidĿǰ�ڵεοͷ�����ʹ�ã���ͨ��tinyid-client��ʽ���룬ÿ�����ɵ����ڼ�����id�������ϣ��ݳƵ�ʵ���ܴﵽ1ǧ��QPS��

���Ŀ�Դ��ַ�ǣ�


PS���ε���Tinyid����ҳ��д��һ�仰����tinyid�������ǵειٷ���Ʒ��ֻ�ǵε�ӵ�еĴ������������IJ��ã���������ô�����أ�

4��Tinyid����Ҫ��������


��Ҫ�����ܽ�һ�¾��ǣ�

  • 1��ȫ��Ψһ��long��ID����id����������2��64�η���
  • 2�����Ƶ�����id�����Ƶ�������˼�ǣ�id�ǵ�������һ���������ģ�����΢�ŵ�ID���ɲ������ƣ���
  • 3���ṩ http �� java-client ��ʽ���룻
  • 4��֧��������ȡID��
  • 5��֧������1,3,5,7,9�����е�ID��
  • 6��֧�ֶ���db�����á�

���õij�����ֻ����ID�����֣����Ƶ�����ϵͳ����������ID����������������ID���˷ѡ�
�����ó������������ڶ���ID��ҵ���������ɵ�ID�󲿷��������ģ����ױ�ɨ�⡢��������������������Ϣ��

���⣺΢�ŵ�������ϢID�����㷨Ҳ�ǻ��ںŶΡ����Ƶ��������߼�����������Ȥ��������������IM��ϢID����ר��(һ)��΢�ŵĺ���IM������Ϣ���к�����ʵ�����㷨ԭ��ƪ������

5��Tinyid�������


���ܷ��棺

  • 1��http��ʽ����������ȡ����http server�����������紫���ٶȣ�
  • 2��java-client��ʽ��idΪ�������ɣ��Ŷγ���(step)Խ����qpsԽ�����������Ŷ������㹻������qps�ɴ�1000w+��

�����Է��棺

  • 1����db������ʱ����Ϊserver�л��棬���Ի�����ʹ��һ��ʱ�䣻
  • 2�����������˶���db����ֻҪ��1��db������������ã�
  • 3��ʹ��tiny-clientʱ��ֻҪserver��һ̨�����������serverȫ�ң���Ϊclient�л��棬Ҳ���Լ���ʹ��һ��ʱ�䡣

6��Tinyid�ļ���ԭ������


6.1ID����ϵͳ�ļ���Ҫ��


�ڼ���ϵͳ�У����dz���ʹ��db��id������ʽ����ʶ�ͱ������ݣ�����ϵͳ�ĸ��ӣ����ݵ����࣬�ֿ��ֱ���Ϊ�˳����ķ�����db�������޷�����Ҫ����

��ʱ��ȫ��Ψһ��id����ϵͳ���������ó�����Ȼ��ֻ��id�������е�һ��Ӧ�ó�����

��ô��һ��������id����ϵͳӦ�þ߱���Щ�����أ�

  • 1��Ψһ�������������������ظ���idȫ��Ψһ����������Ҫ����
  • 2�����������������񾡿��ܺ�ʱ�٣������ܹ������������ã�
  • 3���߿�������˵����ʵ��100%�Ŀ����ԣ�����ҲҪ���޽ӽ���100%�Ŀ����ԣ�
  • 4�����������ܹ��������ã����뷽�㣬ͬʱ��ϵͳ���ƺ�ʵ����Ҫ�����ܵļ򵥡�

6.2Tinyid��ʵ��ԭ��


����������һ�������id���ɷ�ʽ��db��auto_increment�����Ŵ��Ҷ��dz���Ϥ��

��Ҳ����һЩͬѧ��ʵս��ʹ�����ַ�������ȡһ��id�������������ŵ��Ǽ򵥣�ȱ����ÿ��ֻ����db��ȡһ��id�����ܱȽϲ��db���ʱȽ�Ƶ����db��ѹ�����Ƚϴ���

��ô���Dz��ǿ��Զ����ַ����Ż�һ���أ��ɷ�һ����db��ȡһ��id�أ��𰸵�Ȼ�ǿ��Եġ�

һ��id�����ǿ��Կ�����һ��id��Χ������(1000,2000]������1000��2000Ҳ���Գ�Ϊһ�����ŶΡ�������һ����db����һ���ŶΣ����ص��ڴ��У�Ȼ�����������ķ�ʽ������id�������Ŷ����������ٴ���db����һ���µĺŶΣ�������db��ѹ���ͼ����˺ܶ࣬ͬʱ�ڴ���ֱ������id�������������˺ܶࡣ

PS���򵥽���һ��ʲô�ǺŶ�ģʽ��

�Ŷ�ģʽ���Ǵ����ݿ������Ļ�ȡ����ID��ÿ�δ����ݿ�ȡ��һ���Ŷη�Χ������ (1,1000] ����1000��ID��ҵ�����񽫺Ŷ��ڱ�������1~1000������ID�����ص��ڴ档


��ô����db�Ŷεı����������أ����Ǽ������¿���

6.3DB�Ŷ��㷨����


IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_2.png

���ϱ������Ǻ������뵽����dbֱ�Ӵ洢һ����Χ(start_id,end_id]��������idʹ�����Ϻ���������һ��update������update start_id=2000(end_id), end_id=3000(end_id+1000)��update�ɹ��ˣ���˵����ȡ������һ��id��Χ����ϸ���룬ʵ����start_id��û����ʲô���ã��µĺŶ�����(end_id,end_id+1000]��

�����������Ǹ���һ�£�db����Ӧ���������ģ�
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_3.png

���ϱ���ʾ��

  • 1������������biz_type����������ҵ�����ͣ���ͬ��ҵ����id���룻
  • 2��max_id����������end_id�ˣ�������ǰ�����Ŀ���id��
  • 3��step�����Ŷεij��ȣ����Ը���ÿ��ҵ����qps������һ�������ij��ȣ�
  • 4��version��һ���ֹ�����ÿ�θ��¶�����version���ܹ���֤�������µ���ȷ�� ��

��ô���ǿ���ͨ�����¼�����������ȡһ�����õĺŶΣ�

  • A����ѯ��ǰ��max_id��Ϣ��select id, biz_type, max_id, step, version from tiny_id_info where biz_type='test';
  • B�������µ�max_id: new_max_id = max_id + step��
  • C������DB�е�max_id��update tiny_id_info set max_id=#{new_max_id} , verison=version+1 where id=#{id} and max_id=#{max_id} and version=#{version}��
  • D���������³ɹ��������úŶλ�ȡ�ɹ����µĿ��úŶ�Ϊ(max_id, new_max_id]��
  • E����������ʧ�ܣ����Ŷο��ܱ������̻߳�ȡ���ص�����A���������ԡ�

6.4�Ŷ����ɷ����ļ򵥼ܹ�


���������ݣ������Ѿ������˺Ŷ������߼���

��ô���ǵ�id���ɷ����ܹ������������ģ�
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_x1.png

����ͼ��id����ϵͳ�����ṩhttp���������󾭹����ǵĸ��ؾ���router����������һ̨tinyid-server�������ȼ��غõĺŶ��л�ȡһ��id��

�����Ŷλ�û�м��أ������Ѿ����꣬����db������һ���µĿ��úŶΣ���̨server֮����Ϊ�Ŷ������㷨��ԭ���ԣ�����֤ÿ̨server�ϵĿ��úŶβ��أ��Ӷ�ʹid���ɲ��ء� 

���Կ�����

  • 1������tinyid-server���������ˣ���ô�Ŷξ������ˣ����˷�һ����id��
  • 2��ͬʱidҲ����������
  • 3��ÿ���������ܻ��򵽲�ͬ�Ļ����ϣ�idҲ���ǵ��������ģ��������Ƶ����ģ����������ڴ󲿷�ҵ�����ǿɽ��ܵģ���

6.5�򵥼ܹ�������


����һ���򵥵�id����ϵͳ�������ˣ���ô�Ƿ񻹴��������أ�

����һ�������ʼ��id����ϵͳҪ�󣺸����ܡ��߿��á��������á�

���������׼ܹ�����ٻ������������⣺

  • 1����id����ʱ��Ҫ����db�����µĺŶΣ�db����Ҳ���ܴ���version��ͻ����ʱid���ɺ�ʱ�������ӣ�
  • 2��db��һ�����㣬��Ȼdb���Խ������ӵȸ߿��üܹ�����ʼ����һ�����㣻
  • 3��ʹ��http��ʽ��ȡһ��id���������翪�������ܺͿ����Զ���̫�á�

6.6�Ż��취�����ռܹ�


1��˫�Ŷλ��棺

���ںŶ�������Ҫ����db�����Ǻ������뵽�ںŶ��õ�һ���̶ȵ�ʱ�򣬾�ȥ�첽������һ���ŶΣ���֤�ڴ���ʼ���п��úŶΣ����ɱ������ܲ�����

2�����Ӷ�db֧�֣�

dbֻ��һ��masterʱ������db������(down�����������ӳٱȽϴ�)������ȡ�Ŷβ����á�ʵ�������ǿ���֧�ֶ���db������2��db��A��B�����ǻ�ȡ�Ŷο�������������һ̨�ϻ�ȡ����ô����A,B����ȡ����ͬһ�ŶΣ�������ô��֤���ɵ�id�����أ�tinyid����ô���ģ���Aֻ����ż��id��Bֻ��������id����Ӧ��db���������������ֶΣ�������ʾ

IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_4.png

delta����idÿ�ε�������remainder�����������������Խ�A��B��delta������2��remainder�ֱ�����Ϊ0��1����A�ĺŶ�ֻ����ż���ŶΣ�B�������ŶΡ�ͨ��delta��remainder�����ֶ����ǿ��Ը���ʹ�÷���������������db������ͬʱҲ����Ϊʹ�÷��ṩֻ��������������id���С�

3������tinyid-client��

ʹ��http��ȡһ��id���������翪�����Ƿ����Ա�������id��

Ϊ�������ṩ��tinyid-client�����ǿ�����tinyid-server������������ȡ���úŶΣ�֮���ڱ��ع���˫�ŶΡ�id���ɣ�����id���������ɴ����ز��������ܴ�����������Ϊ������˫�Ŷλ��棬����������tinyid-serverһ��ʱ����down����������Ҳ���˱Ƚϴ���������

4��tinyid���ռܹ���

�������ǵļܹ������������ģ�
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_x2.png

�����Ǹ������Ĵ��������߼���
IM��ϢID����ר��(��)�����Ƚ��ܵεεĸ�����ID������(Tinyid)_1.png

����ͼ��ʾ�������ǹ����������������߼�ͼ��˵����

  • 1��nextId��getNextSegmentId��tinyid-server�����ṩ������http�ӿڣ�
  • 2��nextId�ǻ�ȡ��һ��id��������nextIdʱ���ᴫ��bizType��ÿ��bizType��id�����Ǹ����ģ�����id��ʹ�ø�bizType�������ɵ�IdGenerator��
  • 3��getNextSegmentId�ǻ�ȡ��һ�����úŶΣ�tinyid-client��ͨ���˽ӿ�����ȡ���úŶΣ�
  • 4��IdGenerator��id���ɵĽӿڣ�
  • 5��IdGeneratorFactory����������IdGenerator�Ĺ�����ÿ��biz_type����һ��IdGeneratorʵ����ͨ�����������ǿ�����ʱ��db������biz_type������������������
  • 6��IdGeneratorFactoryʵ��������������IdGeneratorFactoryServer��IdGeneratorFactoryClient���������ڣ�getNextSegmentId�IJ�ͬ��һ����DbGet,һ����HttpGet��
  • 7��CachedIdGenerator���Ǿ�����id���������󣬳���currentSegmentId��nextSegmentId���󣬸���nextId�ĺ������̡�nextId����ͨ��AtomicLong.andAndGet(delta)����������

�����Ĵ���ʵ�֣�����Ȥ����ֱ���Ķ�Դ�룺


7��Tinyid������ʵ��


1��tinyid-server�Ƽ����𵽶��������Ķ�̨������

  • ���������������Ը��ߣ�http��ʽ������ʹ�÷������ӳ����⡣

2���Ƽ�ʹ��tinyid-client����ȡid���ô����£�

  • a��idΪ��������(����AtomicLong.addAndGet����)�����ܴ������ӣ�
  • b��client��server���ʱ��ĵ�Ƶ��������server��ѹ����
  • c����Ϊ��Ƶ������clientʹ�÷���server����һ��������Ҳ���뵣���ӳ٣�
  • d����������server�ҵ�����ΪclientԤ�����˺ŶΣ���Ȼ���Լ���ʹ��һ��ʱ��
ע��ʹ��tinyid-client��ʽ������client�����϶�Ƶ�����������ܻ��˷ѽ϶���id����ʱ���Կ���ʹ��http��ʽ��

3���Ƽ�db�������������ࣺ

  • db���ö���ʱ��ֻҪ��1��db������������� ��db���ã�������������db����ÿ������ҵ����������db�ж�д���������ݡ�

8��Tinyid����ô���ã�


������ô���á�����ƪ��ԭ�򣬾Ͳ��پ���ȥд�ˣ�����Ȥ�Ļ������Զ�һ����ƪ��Tinyid���εο�Դǧ�򼶲����ķֲ�ʽID����������

9�������


[1] �����ܱ��ʷֲ�ʽID��ô�죿 �εΣ�Tinyid��˦����
[2] Tinyid���εο�Դǧ�򼶲����ķֲ�ʽID������
[3] tinyid��������readme
[4] �εο�Դ��Tinyid����ÿ�������ڼ�����ID��

��¼������IM�������ż�������


����������һƪ�͹������㿪���ƶ���IM��
���ƶ���IM�����߱ض�(һ)��ͨ���׶��������ƶ������ġ������͡�������
���ƶ���IM�����߱ض�(��)��ʷ����ȫ�ƶ��������Ż������ܽ���
���ӿͻ��˵ĽǶ���̸̸�ƶ���IM����Ϣ�ɿ��Ժ��ʹ�������
���ִ��ƶ������������ӵ��Ż��ֶ��ܽ᣺�����ٶȡ�������Ӧ����ȫ������
���ƶ���IM�д���ģȺ��Ϣ���������α�֤Ч�ʡ�ʵʱ�ԣ���
���ƶ���IM������Ҫ���Եļ���������
������IM���Լ�����Э�����ֽ����û����ַ����ã���
����������֪��������������������ʵ�ַ�ʽ������
��IM��Ϣ�ʹﱣ֤����ʵ��(һ)����֤����ʵʱ��Ϣ�Ŀɿ�Ͷ����
��IM��Ϣ�ʹﱣ֤����ʵ��(��)����֤������Ϣ�Ŀɿ�Ͷ����
�����α�֤IMʵʱ��Ϣ�ġ�ʱ���ԡ��롰һ���ԡ�����
��һ���ͳɱ�ȷ��IM��Ϣʱ���ķ���̽����
��IM���ĺ�Ⱥ���е�����״̬ͬ��Ӧ���á��ơ����ǡ���������
��IMȺ����Ϣ���˸��ӣ����α�֤�������أ���
��̸̸�ƶ��� IM �����е�¼�������Ż���
���ƶ���IM��¼ʱ��ȡ������������ʡ��������
��dz̸�ƶ���IM�Ķ�����¼����Ϣ����ԭ����
����ȫ���ѿ�����IM���������ơ�ʧ�����ԡ����ƣ���
�����ѿ���IM����ô�������ְ��ֽ�����ߣһ��Andriod������IM (��Դ��)��
��IM��������֪ʶ����(��)�����ݿ���NoSQL����SQL������ƪ�͹��ˣ���
���ʺ����֣����㿪��һ��IM�����ˣ�����Netty��������Դ�룩��
���������̾��Ǹɣ�����һ��ͽ�ֿ���һ�׷ֲ�ʽIMϵͳ��
���ʺ����֣��ְ��ֽ�����Go���ٴ�����ܡ�����չ��IMϵͳ(��Դ��)��
��IM��������ˡ�����ʵ��ԭ����ʲô�����θ�Ч�ʵ�ʵ��������
��IM��������֪ʶ����(��)�������ƶ����˺ŵ�¼��ʽ��ԭ��������˼·��
��IMҪ���ֻ�ɨ����¼���ȿ���΢�ŵ�ɨ����¼���ܼ���ԭ����
��IM�������䣺ʷ����ȫ��΢�Ÿ��ֹ��ܲ������߼��������ϻ�����
��IM�����ɻ��������������ν�������������Ϣ���¿ͻ��˿��ٵ���
��IM�����ɻ��������������ŵ�ʵ�ִ���������Ϣ�Ŀɿ�Ͷ����
��IM�����ɻ������������ƶ���IM��������SDK�ܹ�����ʵ����
>> ����ͬ������ ����

��ʱͨѶ�� - ��ʱͨѶ������������ ��Դ�� - ��ʱͨѶ������������

��һƪ���罻����������������(ʮһ)����ȫ����΢�ź��������㷨(������ʵ��)��һƪ��[�ѻظ�] ����MobileIMSDK�ı�������״̬���ж�����

��������¼�����¼���ר��

�Ƽ�����
���� 12
������
���ļ����ܽ�һ�£�
1.  ID ���ࣨ��Ƭ����
2.  ͬһ����ID�ֶΡ�
3. ͬһ����ID�ֲ�����
��������һ�ַ�Ƭ���߼��� ����ID �����Ƶ����ģ���IMͨ����Ӧ�����ޣ�IM�кܶ�ID����Ҫ�ϸ����ģ�����ʱ������������Ϣ�αꡣ
���ã�eagle042 ������ 2020-10-23 16:05
���ļ����ܽ�һ�£�
1.  ID ���ࣨ��Ƭ����
2.  ͬһ����ID�ֶΡ�

im��Ҳ��һ��Ҫ�ϸ�������΢�ŵ�id�������Ƶ����������ϸ���������IM��ϢID����ר��(һ)��΢�ŵĺ���IM������Ϣ���к�����ʵ�����㷨ԭ��ƪ����
���ã�JackJiang ������ 2020-10-23 20:38
im��Ҳ��һ��Ҫ�ϸ�������΢�ŵ�id�������Ƶ����������ϸ���������IM��ϢID����ר��(һ)��΢�ŵĺ���IM�� ...

���ǵģ�����sessionID �����ģ�ֻ��ҪΨһ������������Ҫ������΢���������ᵽ�� ���кţ�ͬ����ʱ�������ڸ��壨�����ˣ���˵����Ҫ�ϸ����ģ�΢�ŵķֶβ�ͬ�ڵεν��ķֶΣ�΢�ŵ��Ǹ����˷ֶΣ��ε��ǵ����ֶΣ�Ӧ�÷�Χ�кܴ��IJ����� ����΢���е�С��Ϊ���ӣ��²�����ID�Ǿ�����������֮ǰ������ID�ģ������ĵε��㷨�Dz��ܱ�֤�ģ�����ͬһ������Զ�䵽һ�����ڡ�

IM�е�ID������û�еε�������ô�򵥣�Ҳ�����������ij�����������΢�š��������ִ�IM��ϵ�У���Ҫ����һ�㡣
���ã�eagle042 ������ 2020-10-25 11:10
���ǵģ�����sessionID �����ģ�ֻ��ҪΨһ������������Ҫ������΢���������ᵽ�� ���кţ�ͬ����ʱ���� ...

��û������˵�Ļ����ϸ���������˼�ǣ�1��2��3��4��5��6��7��8���������ʸ������֡�
΢�ŵ����Ƶ���ָ���ǣ�1����3��5��7��8��10���м��м�������ν��ֻҪ�ǵ����Ϳ��ԡ�
a-server����1000��2000��b-server����2000��3000����һ��������b����20001�������������ܵ�a����1001����ô��֤���Ƶ����ģ�
���ã���ô�ܹ� ������ 2021-01-26 11:33
a-server����1000��2000��b-server����2000��3000����һ��������b����20001�������������ܵ�a����1001���� ...

���У������ֿ����ԣ�������û���ᵽ��һ���Ĵ����취
���ã���ô�ܹ� ������ 2021-01-26 11:33
a-server����1000��2000��b-server����2000��3000����һ��������b����20001�������������ܵ�a����1001���� ...

����Ӧ����Ҫroute����·�ɣ�����uid��gid֮�࣬��֤ͬһ��user��group�ȵ������䵽ͬһ��server
����������Ⱥ����������������Ⱥ�ĻỰID��һ��ʱ��֮�󼴽������������Ը�����ǰ�ĺŶ���?
ǩ��: ���ܣ����껥�������л�����
���ã�JackJiang ������ 2020-10-23 20:38
im��Ҳ��һ��Ҫ�ϸ�������΢�ŵ�id�������Ƶ����������ϸ���������IM��ϢID����ר��(һ)��΢�ŵĺ���IM�� ...

��Ϣ���к����ϸ������İ�
���ã�weixiaoyao ������ 2021-04-04 16:43
����Ӧ����Ҫroute����·�ɣ�����uid��gid֮�࣬��֤ͬһ��user��group�ȵ������䵽ͬһ��server

·�ɲ�ͬһ��biz_typeת����ͬһ̨�ڵ��Ϳ��ԣ����������Ʋ����������⣬���Ըо�������Ҫ����������id��ֻ�ܶѵ��������ˡ�
ԭ����������
����¥�� ×
ʹ��΢�Ŵ��ͣ� ʹ��֧�������ͣ�

���ض���