我在Go下使用MongoDB的mgo驱动程序.
我的应用程序要求一个任务(只有一个名为"jobs"的集合中的Mongo记录选择),然后将自己注册为asignee来完成该任务(对同一"作业"记录的更新,将自己设置为受让人).
该程序将在几台机器上运行,所有机器都与同一个Mongo交谈.当我的程序列出可用任务然后选择一个任务时,其他实例可能已经获得该分配,并且当前分配将失败.
我怎样才能确保我读取并更新的记录在更新时是否具有某个值(在本例中为受让人)?
我试图得到一个任务,无论是哪一个,所以我认为我应该首先选择一个待处理任务并尝试分配它,保持它只是在更新成功的情况下.
所以,我的查询应该是这样的:
"从收集'工作'的所有记录中,只更新一个 asignee = null,将我的ID设置为受让人. 然后,给我那个记录,这样我就可以运行这份工作."
我怎么能用Go的mgo驱动程序来表达呢?
我不知道为什么这个反向代理不起作用.我见过几个例子,我发现它没有任何问题.
package main
import (
"log"
"net/url"
"net/http"
"net/http/httputil"
)
func report(r *http.Request){
log.Print("URL: " + r.URL.Path)
log.Print("Scheme: " + r.URL.Scheme)
log.Print("Host: " + r.URL.Host)
//r.URL.Scheme = "http"
//r.URL.Host = "stackoverflow.com"
//r.Header.Set("Host", "stackoverflow.com")
//log.Print("Header Host: " + r.Header.Get("Host"))
}
func main() {
proxy := httputil.NewSingleHostReverseProxy( &url.URL{Scheme:"http",Host:"myrealserver.com"})
proxy.Director = report
// http.Handle("/", proxy)
error := http.ListenAndServe("mylocalhost.com:8080", proxy)
if(error != nil) {
log.Fatal(error)
}
}
Run Code Online (Sandbox Code Playgroud)
它记录:
2014/04/18 21:32:50 URL: /arg/es
2014/04/18 21:32:50 Scheme:
2014/04/18 21:32:50 Host:
2014/04/18 21:32:50 http: proxy error: unsupported …Run Code Online (Sandbox Code Playgroud) 关闭类的闭包有哪些优缺点,反之亦然?
编辑:正如Faisal用户所说,闭包和类都可以用来"描述维护和操纵状态的实体",因此闭包提供了一种使用函数语言以面向对象的方式编程的方法.像大多数程序员一样,我对类更熟悉.
这个问题的目的不是打开另一场关于编程范式更好的火焰战争,或者封闭和阶级是完全等同的,还是穷人的另一个.
我想知道的是,如果有人发现一种情况,一种方法真正击败另一种,以及为什么.
我知道可以为Android编译Go程序.
如何在Go程序中使用Android特定API,例如获取GPS坐标或使用默认浏览器打开URL?
我找到了Vimmish:http://dira.ro/2009/05/07/vimmish-vim-translator
将Vim命令序列转换为人类可读形式的工具:
输入:
iDon't know vim :(.<ESC>^2WBc2wbetter now<ESC><RIGHT>Da.<ESC>II can understan<ESC><RIGHT>~dE
Run Code Online (Sandbox Code Playgroud)
输出:
i => insert before cursor:
Don't know vim :(. => type Don't know vim :(.
<ESC> => go to normal mode
^ => move to the begining of the line (not blank character)
2W => move to the begining of the next space-separated word, 2 times
B => move backwards one space-separated-word
c2w => change to the begining of the next word, 2 times
better now => …Run Code Online (Sandbox Code Playgroud) 我使用CKeditor编辑丰富的HTML页面,但是一些javascript功能依赖于<a>触发它们的标签的特殊属性.
这些情况很少见,只有5000多条记录的数据库上的一些记录需要触发此功能,而这个特定的js模块需要特殊的属性作为参数化的一种方式:
<a href="#" data-from="ROM" data-to="NYC" data-promo="8373794">Buy your tickets</a>
Run Code Online (Sandbox Code Playgroud)
CKeditor允许我添加这些属性(通过编辑条目的源代码),但是当客户端编辑页面时,编辑器会删除它们并中断该功能.
指示我的客户不要编辑此特定记录似乎不专业.换到另一个WYSIWYG编辑器可能会有效,但我认为这是最后的选择.
CKEditor必须有一个解决方案!
(这个问题是关于临时和编程地保持两个数据库的新记录同步,具有非常不同的模式,忽略旧的过时和不再需要的记录的最佳方法.)
我在一家为导游,报纸和网站提供电视节目信息的公司工作.
我有一个旧系统,有一些限制,正在被一个新系统取代.
不同的客户端以不同的格式(xml,sql,txt,甚至是打印就绪的PDF)以不同的方式(推送,拉取,部分转储,简单导出,人工辅助导出 - 像PDF版本等)获取数据.一些出口产品每月生产一次,其他出口产品每天生产一次.
问题是几个客户端必须依赖旧系统中的数据,直到新系统完全开发和加载,并且维护数据的人员不能同时使两个数据库同步,因为这需要大量的额外工作,但考虑到项目的规模,过夜切换系统似乎是不可能的.
我们不希望将旧数据库中的数据全部输入到新数据库,因为大部分数据已经没有必要,并且有大量垃圾(即具有不同细节级别的重复记录,旧的空气信息我们只需要作为档案).
我们希望在两个数据库中插入新记录,并将旧编辑的记录复制到新数据库中.
我们即将开始使用Symfony和Doctrine开发新系统,我决定我们可以设计一组ORM"代理"类,它们应该具有与简单的Doctrine ORM类集相同的接口,但保留同步在另外两组类之间(与新系统接口的类和与旧系统接口的类).最终旧数据库应该与代理类一起丢弃,并且直接连接到新数据库的Doctrine ORM类应该占用该位置,就像旧系统永远不存在一样.
这是一个很长的镜头,我对这种方法并不完全有信心.
有没有人有这种项目的经验?
您是否知道这种方法中存在任何常见的陷阱,或者其他一些可能适合这种情况的解决方案?
我试图像这样实例化一个PDO对象:
$this->pdo['pdo'] = new PDO('mysql:host=127.0.0.1;dbname=mydb;charset=UTF-8',
'myuser', 'my pass');
Run Code Online (Sandbox Code Playgroud)
我想抓住我认为在MySQL服务器没有运行时会抛出的异常.
PHP.net说"如果尝试连接到请求的数据库失败,PDO :: __ construct()会抛出PDOException."
但是,如果我关闭数据库服务器并运行脚本,我得到的是一个警告:
Warning: PDO::__construct() [pdo.--construct]: [2002] 'A connection attempt failed
because the connected party did not properly respond after a period of time, or
established connection failed because connected host has failed to respond.' in
C:\test\test.php on line 5
Fatal error: Maximum execution time of 60 seconds exceeded in C:\test\test.php
on line 0
Run Code Online (Sandbox Code Playgroud)
没有异常被抛出.
有没有直接的方法来捕获错误(没有临时设置自定义错误管理器功能的麻烦?)
谢谢!
我最近发现了一个名为“文本片段”的新 Chrome 功能,该功能允许链接直接指向 URL 中的特定文本并突出显示它。例如:
https://www.nytimes.com/#:~:text=杂志
但是,如果我指向出现多次的作品,则只有第一个实例会突出显示。
有什么方法可以要求它突出显示给定字符串的所有出现位置吗?