假设我想在模型的值发生变化时自动运行一些代码(比如将数据保存到服务器).通过ng-change在每个控件上设置可能会改变模型的东西,这是唯一的方法吗?
即,通过视图,随着模型的更改,事情会发生变化,而不必明确地将任何内容挂起.是否能够运行保存到服务器的代码?就像是
myModel.on('change', function() {
$.post("/my-url", ...);
});
Run Code Online (Sandbox Code Playgroud)
就像你可能会看到像骨干这样的东西.
任何流行的Python风格指南都表达了以下偏好:
x = (f'One plus one is '
f'equal to {1+1}')
Run Code Online (Sandbox Code Playgroud)
和:
x = ('One plus one is '
f'equal to {1+1}')
Run Code Online (Sandbox Code Playgroud)
省略f不涉及插值的行的前缀是否有意义?它是否应该包含在一致性中?
我认为这是一个相当常见的问题,但我似乎无法通过谷歌搜索找到答案(也许有一个更准确的名称,我不知道的问题?)
您需要使用"hit()"方法实现一个结构,该方法用于报告命中和hitsInLastSecond | Minute | Hour方法.你有一个具有纳秒准确度的计时器.你如何有效地实现这一目标?
我的想法是这样的(在psuedo-C++中)
class HitCounter {
void hit() {
hits_at[now()] = ++last_count;
}
int hitsInLastSecond() {
auto before_count = hits_at.lower_bound(now() - 1 * second)
if (before_count == hits_at.end()) { return last_count; }
return last_count - before_count->second;
}
// etc for Minute, Hour
map<time_point, int> hits_at;
int last_count = 0;
};
Run Code Online (Sandbox Code Playgroud)
这有用吗?好吗?有更好的东西吗?
更新:添加修剪并根据评论切换到双端队列:
class HitCounter {
void hit() {
hits.push_back(make_pair(now(), ++last_count));
}
int hitsInLastSecond() {
auto before = lower_bound(hits.begin(), hits.end(), make_pair(now() - 1 * second, -1));
if …Run Code Online (Sandbox Code Playgroud) 假设我有一个可以并发访问地图的程序,如下所示:
func getKey(r *http.Request) string { ... }
values := make(map[string]int)
http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
key := getKey(r)
fmt.Fprint(w, values[key])
})
http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
key := getKey(r)
values[key] = rand.Int()
})
Run Code Online (Sandbox Code Playgroud)
这很糟糕,因为地图写入是非原子的.所以我可以使用读/写互斥锁
func getKey(r *http.Request) string { ... }
values := make(map[string]int)
var lock sync.RWMutex
http.HandleFunc("/get", func(w http.ResponseWriter, r *http.Request) {
key := getKey(r)
lock.RLock()
fmt.Fprint(w, values[key])
lock.RUnlock()
})
http.HandleFunc("/set", func(w http.ResponseWriter, r *http.Request) {
key := getKey(r)
lock.Lock()
values[key] = rand.Int()
lock.Unlock() …Run Code Online (Sandbox Code Playgroud) nums := make([]int, 0)
{
var d int
for {
_, err := fmt.Scan(&d)
if err != nil {
break
}
nums = append(nums, d)
}
}
Run Code Online (Sandbox Code Playgroud)
这可以从stdin中读取整数.但是如果stdin看起来像1 2 3 f4 5,nums最终会[1 2 3]报告没有任何错误.
处理这个问题的最佳方法是什么?(即,我希望EOF fmt.Scan以静默方式退出循环,但应报告所有其他错误).
编辑:io.EOF我只需要 - 我没有在http://golang.org/pkg/fmt/上找到
nums := make([]int, 0)
{
var d int
for {
_, err := fmt.Scan(&d)
if err != nil {
if err != io.EOF {
log.Fatal(err)
}
break
}
nums …Run Code Online (Sandbox Code Playgroud) 是否有任何平台独立的方式来获取python安装的libpython的路径,用作cmake参数?sysconfig.get_config_var给出了一些部分,但是没有一致的方法可以使这个工作.
在OSX上:
sysconfig.get_config_var('LIBDIR') 返回libpython2.7.dylib所在的目录(/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib)编辑:当sysconfig报告符号链接时以及报告实际路径时,似乎存在一些差异.LIBDIR确实包含libpython.2.7.dylib,但我刚注意到的是这是/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/Python的符号链接.
INSTSONAME 指向Python.framework/Versions/2.7/Python,该路径的基本名称,但没有变量我可以找到指向该路径的父部分的点.
在Ubuntu上:
sysconfig.get_config_var('INSTSONAME') 给我一个库的名称(libpython2.7.so.1.0).LIBDIR 仅返回/ usr/lib以下代码段是否有任何表面上的问题:
<ul id="entry-name" class="breadcrumb">
<li ng-repeat="dir in pathElements()" class="active">
<span ng-show="!$last">
<a href="#!?path={{dir.url}}">{{ dir.name }}</a> <span ng-show="!$first" class="dividier">/</span>
</span>
</li>
<li class="active">{{ pathElements()[pathElements().length - 1].name }}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
用这个js:
$scope.pathElements = function() {
var retval = [];
var arr = $scope.currentPath().split('/');
if (arr[0] == '') {
arr[0] = '/';
}
var url = "/";
retval.push({name: arr[0], url: url});
for (var i = 1; i < arr.length; ++i) {
if (arr[i] != '') {
url += arr[i] + '/';
retval.push({name: arr[i], url: url}); …Run Code Online (Sandbox Code Playgroud) 使用静态检查互斥锁正确性的语言是否明智?也就是说,
var m
var x guarded_by(m)
func f1() {
lock(m)
x = 42
unlock(m)
}
func f2() {
x = 42 // error, accessing x w/o holding its mutex
}
func f3() assumes_locked(m) {
x = 42
}
func b1() {
f3() // error
}
func b2() {
lock(m)
f3()
unlock(m)
}
Run Code Online (Sandbox Code Playgroud)
也许我试图过于通用.(下面的原始问题)具体来说,我有Dep一个类的依赖Foo.我也有一个班级MockDep,我正在定义一个班级TestFoo.这是我试图写的构造函数:
TestFoo(unique_ptr<MockDep> dep) : Foo(std::move(dep)), mock_dep_(dep.get()) {}
Run Code Online (Sandbox Code Playgroud)
而Foo构造函数看起来像:
Foo(unique_ptr<Dep> dep) : dep_(dep) {}
Run Code Online (Sandbox Code Playgroud)
mock_dep_被指定TestFoo为MockDep* mock_dep_,并被dep_声明Foo为unique_ptr<Dep> dep_.我怎样才能mock_dep_包含dep_地址?(由于上述因为std::move(dep)空值而无效dep.)
原帖:
我有一个类型的对象Foo,我将传递给另一个类型的对象OtherObject声称它的所有权,但作为指向其基类的指针.但是,我想抓住一个指向我可以用来引用它的子对象的指针.我写了类似的东西:
Foo(std::unique_ptr<Child> thing) :
OtherObject(std::move(thing)), child_(thing.get()) {}
OtherObject(std::unique_ptr<Base> thing, ...) { ... }
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用,因为std::move(thing)似乎使从thing.get()后面返回的指针无效.
我可以将Foo参数更改为类型Child*而不是unique_ptr<Child>,但我更愿意能够执行后者,因为它明确记录了所有权语义.
什么是最合适(或失败,不引人注目)的解决方法?
编辑:Foo并且 …
当功能分支重新基于 origin/master 而不是合并时,如何安全地删除它的本地副本。我知道我可以git branch -D,但我想避免盲目这样做,让 git 告诉我哪些分支可以安全删除。
例如:我有功能分支my-feature,我将其推送到origin/my-feature,制作 PR,然后origin/my-feature重新基于origin/master,然后删除。不过,本地my-feature仍然存在。* 有什么方法可以检测到那里的更改已有效包含在中吗origin/master?
git diff origin/master...my-feature不起作用,因为共同的祖先origin/master没有改变。检查是否git diff origin/master..my-feature为空有效,但只能在变基后立即进行。如果任何其他更改在我的基础上重新建立,这将显示这些更改。
有没有办法删除远程版本已被删除的本地分支?(但不是从未有远程版本的本地分支)。或者,如果我避免删除origin/my-feature,那么我可以在本地做些什么来安全地删除两者origin/my-feature吗my-feature?
* 如果我足够自律,我会尽量记住在删除远程分支后立即删除本地分支,但有时我会忘记。
angularjs ×2
c++ ×2
concurrency ×2
go ×2
python ×2
algorithm ×1
cmake ×1
git ×1
git-rebase ×1
github ×1
javascript ×1
mutex ×1
python-3.6 ×1
unique-ptr ×1