我知道我可以使用Table定义表:
user = Table('user', metadata,
Column('user_id', Integer, primary_key = True),
)
Run Code Online (Sandbox Code Playgroud)
并使用Base:
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
user_id= Column(Integer, primary_key = True)
Run Code Online (Sandbox Code Playgroud)
但是有什么不同???
在许多应用程序中,我们需要记录统计数据指标,例如历史记录,指标等。这将污染业务逻辑。例如:
boolean buy(int id) {
metrics.increament(); // for qps maybe..
int remain = checkRemain();
metrics.hist(remain); // log remain amount..
if (remain > 0)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
我希望我只能写下biz逻辑,例如:
boolean buy(int id) {
int remain = checkRemain();
if (remain > 0)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
但是我也可以获得指标。
我的问题是:分离业务逻辑和指标日志的最佳实践是什么?
我知道面向方面的编程可以解决这个问题,我还有其他选择吗?
如代码所示:
val map = scala.collection.mutable.Map[Int, Int]().withDefaultValue(0)
println(map(1))
map(1) = 10
println(map(1))
map(1) += 10
println(map(1))
Run Code Online (Sandbox Code Playgroud)
和输出:
0
10
20
Run Code Online (Sandbox Code Playgroud)
但是,在我看来,"map(1)+ = 10"在java中是无效的,甚至是有效的,这一行之后的结果map(1)应该是10.
所以为什么???以及"+ ="在地图中的确切操作是什么?