lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Another example is unique id .

The service allocate unique id consecutively , but it is not from 1 .
It needs request the range from other service first.  The range is
defined by 64bit integer.

在 2012年4月12日 下午12:47,Xavier Wang <weasley.wx@gmail.com> 写道:
> So you even don't know the structure of the time stamp? In this way,
> you still can not process the time stamp, because you can only process
> it if you know which fields is contained in it.
> there are another possible about this. you just want "hold" this value
> into a int64 variable, and parse it in right time with right people?
> in this way, you can make a string from int64 value. my lbuffer module
> can handle this (but maybe I need do some modify to this module...).
> but if you need large amount of int64 integer, maybe using pointer is
> a good method, though it has less portability :-)
>
>
> 在 2012年4月12日 下午12:38,云风 <cloudwu@gmail.com> 写道:
>> I don't know whether the time stamp is base 0 , maybe it count from a
>> very large number or a random number.
>> It used in many place, and the data type defined in protocol is 64bit.
>> I can't guarantee it never used on some unusual way. For example, the
>> high bits used for machine id in other place. The other parts of
>> system don't know the lua limits .
>>
>> 在 2012年4月12日 上午3:22,Xavier Wang <weasley.wx@gmail.com> 写道:
>>> let's think of how many years if you use 56bit integer to indicate time stamp:
>>>
>>> a year has 60*60*24*365.2422 seconds, i.e. 31556926s.
>>>
>>> so a 2^32 integer can indicate 2^32/31556926 == 136.10 year,
>>>
>>> so, if you use 32bit integer and use date from 1900, you will overflow in 2036.
>>>
>>> but a 2^56 integer can indicate 2^56/31556926 == 2283416130 year,
>>>
>>> so even you count time in us(1/1000000s), you still can indicate 2283 year.
>>>
>>> means you can indicate years from 0000 to 2283, which is mostly enough.
>>>
>>> so, just convert int64 time stamp to lua_Number, it's enough :-)
>>>
>>> 在 2012年4月12日 上午2:57,云风 <cloudwu@gmail.com> 写道:
>>>> It's not enough, because the time stamp is send by other process not
>>>> written in lua. The protocol define it is the int64 number.
>>>>
>>>> 在 2012年4月12日 上午2:05,Xavier Wang <weasley.wx@gmail.com> 写道:
>>>>> in this case, 56bit should be enough.
>>>>>
>>>>> 在 2012年4月12日 上午1:34,云风 <cloudwu@gmail.com> 写道:
>>>>>> We use int64 for a timestamp from outside ( read from a socket with
>>>>>> the protocol) , and we need preform arithmetic on it.
>>>>>>
>>>>>> 在 2012年4月11日 下午9:14,Xavier Wang <weasley.wx@gmail.com> 写道:
>>>>>>> and then you can put it into a string.
>>>>>>>
>>>>>>> 在 2012-4-11 晚上8:05,"steve donovan" <steve.j.donovan@gmail.com>写道:
>>>>>>>
>>>>>>>> On Wed, Apr 11, 2012 at 1:42 PM, Alex Queiroz <asandroq@gmail.com> wrote:
>>>>>>>> > Unless it's possible to create the IDs consecutively starting from 1.
>>>>>>>>
>>>>>>>> But they often come from outside, and Outside has its own logic ;)
>>>>>>>>
>>>>>>>> steve d.
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> http://blog.codingnow.com
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> http://blog.codingnow.com
>>>>
>>>
>>
>>
>>
>> --
>> http://blog.codingnow.com
>>
>



-- 
http://blog.codingnow.com