avatar
q*g
1
多看看别人的签经,前三个问的最多的是什么。如果VO三个问题还进入不了判定程序,
他/她就该回家了。
被问了十几个问题的签经,可以去看看就知道了,大部分是回答的太简单,VO又不忍心
据,只好接着问。类似的问题包括:你去过美国么?回答:没有。你有存折么?有。这
些简单回答不能给VO任何有用的判定信息。
点到为止吧,免得又让一群啥都不知道的上来咬了。
avatar
c*1
2
Roku制作的非常好。家里老人特别喜欢。最近想看韩剧。
就是这个http://movie.douban.com/subject/10740251/
能否麻烦把这个电视剧给加上? 先谢谢了啊。
avatar
t*o
3
就是我们的family plan中,我这条line A已经有了iphone4,等iphone5出来的时候,还
没法upgrade,没到时间。但是这个family plan中的另外一条line B,用的是非智能手
机,没有data plan,有一个upgrade的资格。假设iphone5 合同价格是199刀。
能否用B的名额买一个199刀的iphone5.续两年合同,但是不加data plan. 把B的iphone5
留给A用?
avatar
c*5
4
请问遇到复杂情况,你们如何DEBUG,有时很难用MOCK。
avatar
s*d
5

我觉得你说得很有道理

【在 q********g 的大作中提到】
: 多看看别人的签经,前三个问的最多的是什么。如果VO三个问题还进入不了判定程序,
: 他/她就该回家了。
: 被问了十几个问题的签经,可以去看看就知道了,大部分是回答的太简单,VO又不忍心
: 据,只好接着问。类似的问题包括:你去过美国么?回答:没有。你有存折么?有。这
: 些简单回答不能给VO任何有用的判定信息。
: 点到为止吧,免得又让一群啥都不知道的上来咬了。

avatar
s*s
6
加在哪里?
avatar
l*n
7
iphone一定要带data plan的吧,你用B升级了手机以后,data 肯定会被加上的
avatar
g*g
8
logging.

【在 c***5 的大作中提到】
: 请问遇到复杂情况,你们如何DEBUG,有时很难用MOCK。
avatar
u*l
9
只要B没用智能手机,att就不会收他的。我旁边两个朋友就是这么做的。
avatar
b*s
10
logging changes execution seq as well

【在 g*****g 的大作中提到】
: logging.
avatar
d*k
11
买机器的时候不就强制renew了2年合约加data plan了吗?

【在 u**l 的大作中提到】
: 只要B没用智能手机,att就不会收他的。我旁边两个朋友就是这么做的。
avatar
c*e
12
agree. also it slows down the application if u need to write a lot of log.

【在 b*******s 的大作中提到】
: logging changes execution seq as well
avatar
t*o
13
那等于是赚了,多买了一个iphone,省了两年data plan

【在 u**l 的大作中提到】
: 只要B没用智能手机,att就不会收他的。我旁边两个朋友就是这么做的。
avatar
k*4
15
没有data plan,怎么能买到iphone呢?
你要买5代,是必须加一个新的data plan的,不然你买不到199的iphone5啊
avatar
g*g
16
if that's the case, your app should not be dependent on the seq or you have
a bug.
logging can have levels and be async. It should not impact performance
significantly.

【在 b*******s 的大作中提到】
: logging changes execution seq as well
avatar
C*n
17
contract只说两年。没说两年with data。提供non smart IMEI就能任何时候cancel。
虽然说我根本没看lz的问题,但估计是想省data。

【在 d***k 的大作中提到】
: 买机器的时候不就强制renew了2年合约加data plan了吗?
avatar
r*s
18
A circular buffer in thread local storage.
in suspicious code paths, stick in small piece of information in that
circular buffer.
add assertions to verify your pre and post conditions.
when assertion fail, dump the thread local buffer to log.

【在 c*********e 的大作中提到】
: agree. also it slows down the application if u need to write a lot of log.
avatar
t*o
19
我不是想省data,我是想用合同价买iphone5,因为B不用iphone。

【在 C******n 的大作中提到】
: contract只说两年。没说两年with data。提供non smart IMEI就能任何时候cancel。
: 虽然说我根本没看lz的问题,但估计是想省data。

avatar
r*s
20
Well, you also need to do divide and conquer, try to narrow down the scope
first, actually this idea can also be used to narrow down where are the
suspicious places.

【在 r***s 的大作中提到】
: A circular buffer in thread local storage.
: in suspicious code paths, stick in small piece of information in that
: circular buffer.
: add assertions to verify your pre and post conditions.
: when assertion fail, dump the thread local buffer to log.

avatar
t*d
21
还是想省data fee。自己再想想为什么。

【在 t*******o 的大作中提到】
: 我不是想省data,我是想用合同价买iphone5,因为B不用iphone。
avatar
b*s
22
I mean even you are with async logging. There's still at least one lock,
maybe invisible to you, in your logging system or you will receive some
chaos. It is not a trivial thing. It serializes some execution sequence.

have

【在 g*****g 的大作中提到】
: if that's the case, your app should not be dependent on the seq or you have
: a bug.
: logging can have levels and be async. It should not impact performance
: significantly.

avatar
j*i
23
iPhone的contract显然要data

【在 C******n 的大作中提到】
: contract只说两年。没说两年with data。提供non smart IMEI就能任何时候cancel。
: 虽然说我根本没看lz的问题,但估计是想省data。

avatar
g*g
24
Of course there's a lock, so that the logging is written sequentially. But
the log appending is non-blocking with a simple buffer. It's like a bounded
job queue. As long as you are not logging too fast it'll be OK.

【在 b*******s 的大作中提到】
: I mean even you are with async logging. There's still at least one lock,
: maybe invisible to you, in your logging system or you will receive some
: chaos. It is not a trivial thing. It serializes some execution sequence.
:
: have

avatar
p*e
25
买手机的时候签的2年contract只包括voice plan。
用iphone要有data plan是因为smart phone强制加data plan。
Data plan不受2年contract的限制。
即使两年满了,只要你继续用iphone,也要有data。
反过来说,如果…………
你们应该明白了吧。

【在 j******i 的大作中提到】
: iPhone的contract显然要data
avatar
b*s
26
A new lock has an impact in some scenarios. But we have some tricks to
overcome it.

bounded

【在 g*****g 的大作中提到】
: Of course there's a lock, so that the logging is written sequentially. But
: the log appending is non-blocking with a simple buffer. It's like a bounded
: job queue. As long as you are not logging too fast it'll be OK.

avatar
f*a
27
lz的情况在verizon很简单,verizon的plan里可以把B更新的机会transfer给A,完全没
有问题,不影响B。
不知道ATT是怎么样的情况。
avatar
g*g
28
As I said, there's no lock in execution flow. The lock in log writing can
cause logging loss in worst case scenario.

【在 b*******s 的大作中提到】
: A new lock has an impact in some scenarios. But we have some tricks to
: overcome it.
:
: bounded

avatar
b*s
29
You didn't get it

【在 g*****g 的大作中提到】
: As I said, there's no lock in execution flow. The lock in log writing can
: cause logging loss in worst case scenario.

avatar
g*g
30
No, you didn't get it.

【在 b*******s 的大作中提到】
: You didn't get it
avatar
r*s
31
楼主跑了就你们俩在这打架。

【在 g*****g 的大作中提到】
: No, you didn't get it.
avatar
r*s
32
大牛们相互鄙视完了谁也不解释。
我来冲个大头说一下我知道的一点点
异步log无非就是用户程序写进内存buffer,另外一个异步的线程负责往外写。这个
buffer大部分
时候是多个线程共用的,问题在于如何不用锁来保护这个buffer?
先说用户程序里的多个线程都要写进一个buffer,怎么防止互相覆盖? buffer维护一
个指针
write_edge,要往里写的线程知道自己要写多少字节size,然后用 atomic increment
把这个指针
往右移动:interlocked_increment(&write_edge, size), 最后在这个指针左边写入。
这样可以保证不互相覆盖。
下一步看往外写的那个线程和其他线程如何同步。 buffer物理上是带状的,有开始和
结束。把它想象成一个逻辑环,有两个指针,read_edge和write_edge,每次有人写入
write_edge 右移,往外写Log的时候read_edge右移,只要保证read_edge一直在write_
edge 后面一定安全距离就可以了。
这个实现有些问题。 很多人认为世上没有真正lock free的东西,atomic increment只
是锁的一种形式而已,他跟锁一样用的是memory barrier,某些情况会导致线程执行顺
序改变。

【在 g*****g 的大作中提到】
: No, you didn't get it.
avatar
g*g
33
诸如ConcurrentLinkedQueue就是lock free queue,我都不知道这有啥好争的。

increment

【在 r***s 的大作中提到】
: 大牛们相互鄙视完了谁也不解释。
: 我来冲个大头说一下我知道的一点点
: 异步log无非就是用户程序写进内存buffer,另外一个异步的线程负责往外写。这个
: buffer大部分
: 时候是多个线程共用的,问题在于如何不用锁来保护这个buffer?
: 先说用户程序里的多个线程都要写进一个buffer,怎么防止互相覆盖? buffer维护一
: 个指针
: write_edge,要往里写的线程知道自己要写多少字节size,然后用 atomic increment
: 把这个指针
: 往右移动:interlocked_increment(&write_edge, size), 最后在这个指针左边写入。

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。