应该直接重新抛出捕获的异常,还是应该绕过新的异常?
也就是说,我应该这样做:
try {
$connect = new CONNECT($db, $user, $password, $driver, $host);
} catch (Exception $e) {
throw $e;
}
Run Code Online (Sandbox Code Playgroud)
或这个:
try {
$connect = new CONNECT($db, $user, $password, $driver, $host);
} catch (Exception $e) {
throw new Exception("Exception Message", 1, $e);
}
Run Code Online (Sandbox Code Playgroud)
如果您的答案是直接抛出,请建议使用异常链接,我无法理解我们使用异常链接的真实场景.
我在我的项目中使用Angular UI $ modal http://angular-ui.github.io/bootstrap/#/modal
我不希望用户通过按背景来关闭模态.我想只能通过按下我创建的关闭按钮来关闭模态.
如何阻止模态关闭?
如何应用ng-translate翻译选择框内的选项.
例如:
模板:
<select class="form-control" ng-model="me.gender" ng-options="gender.name for gender in genders">
</select>
Run Code Online (Sandbox Code Playgroud)
控制器:
$scope.genders = [{code: "M", name:"TXT_MALE"}, {code: "F", name:"TXT_FEMALE"}]
Run Code Online (Sandbox Code Playgroud)
enUS.json:
{
"TXT_MALE": "Male",
"TXT_FEMALE": "Female",
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加过滤器,ng-options="gender.name for gender in genders | translate"
但显然它是添加过滤器到$scope.genders数组而不是单个元素
我尝试编写自己的过滤器(我是新手)
filter('translateArrayObj', ['$translate', '_', function($translate, _) {
return function(arr) {
var arr2 = [];
angular.forEach(arr, function (value, key) {
$translate(value.name).then(function(translation) {
var obj2 = angular.copy(value);
obj2.name = translation;
obj2.code = value.code;
arr2.push(obj2);
});
});
return arr2;
}
}])
Run Code Online (Sandbox Code Playgroud)
但我得到了以下错误
Error: [$rootScope:infdig] …Run Code Online (Sandbox Code Playgroud) 好吧,这对许多人来说是一个非常蹩脚的问题,但我希望我会有压倒性的反应:)
当我在PHP中抛出异常时,我可以在消息中添加代码.
我捕获异常并根据其类型(Like InvalidArgumentException或OutOfBoundException)处理它.我记录消息或显示它或做任何合适的事情.
我还可以添加一个先前的异常来跟踪错误原点的路径.
但有一件事我从未使用或从未想过:代码有用吗?
例如:
throw new Exception("db Error", $code, $previousException);
Run Code Online (Sandbox Code Playgroud)
我该怎么办$code?
我想覆盖page.tpl.php以获取特定的内容类型.我试过这些东西,没有什么对我有用.
page--article.tpl.phppage--node--article.tpl.phppage--node--type--article.tpl.phppage--node-type--article.tpl.phppage--type--article.tpl.php但是当我按数字定位特定节点时,page--node--8.tpl.php它工作正常.我认为page--article.tpl.php应该有效,但我不知道为什么它不起作用.
如果我说错了,请告诉我.我该如何调试这些东西.我听说我可以使用Devel模块,但对此一无所知.在正确的方向略有提示将不胜感激.
提前致谢
我有数百个子程序使用log.Println()写入日志文件
我使用log.Println写入error.log文件.
func main() {
e, err := os.OpenFile("error.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("error opening file: %v", err)
os.Exit(1)
}
defer e.Close()
errLog := log.New(e, ">>>", log.Ldate|log.Ltime)
for i:=0; i<500; i++ {
go worker(errLog)
}
}
func worker(errLog log.Logger) {
// Do some work
errLog.Println("Hello world!!!")
}
Run Code Online (Sandbox Code Playgroud)
我的方法是否正确?或者我应该使用通道来确保一次只有一个进程登录到文件,还是由日志包固有地处理?
log包还是负责缓冲还是直接写入文件?
我从这个问题" Golang - 什么是通道缓冲区大小? "中理解,如果通道被缓冲,它将不会阻塞.
c := make(chan int, 1)
c <- data1 // doesn't block
c <- data2 // blocks until another goroutine receives from the channel
c <- data3
c <- data4
Run Code Online (Sandbox Code Playgroud)
但我不明白它是如何使用的.假设我有2个goroutine,第一个将接收data1而第二个接收data2然后它将阻塞,直到任何子程序可以自由处理data3.
我不明白它有什么区别?如果没有缓冲区,它将以相同的方式执行.你能解释一下缓冲有用的可能情况吗?
我已经构建了一个API(api.example.com),并希望可以从www.example.com对其进行访问。
我也希望可以从其他域进行访问。
为此,我添加了Access-Control-Allow-Origin:*
但是,当我打开www.example.com时,在所有api请求之前都会发送预检请求(OPTIONS请求)。
如何停止多个预检请求?我认为应该只有一个飞行前要求,我在做什么错!?还是浏览器在每次调用之前都要发送预检请求是自然的吗?
注意:我不想使用JSONP,因为我使它成为可公开访问的Access-Control-Allow-Origin:*
选项呼叫标题
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, authorization
Access-Control-Request-Method:GET
AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2
Connection:keep-alive
Host:api.touchtalent.biz
Origin:http://www.example.com
Referer:http://www.example.com/artist/52894/pratim-relekar
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
选项呼叫响应
Access-Control-Allow-Headers:origin, x-requested-with, content-type, Authorization
Access-Control-Allow-Methods:PUT, GET, POST, DELETE
Access-Control-Allow-Origin:*
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:163
Content-Type:text/html
Date:Fri, 13 Jun 2014 14:24:55 GMT
Keep-Alive:timeout=5, max=98
Server:Apache/2.2.22 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:PHP/5.4.6-1ubuntu1.8
Run Code Online (Sandbox Code Playgroud)
GET请求请求头
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
AlexaToolbar-ALX_NS_PH:AlexaToolbar/alxg-3.2
Authorization:Bearer VtQJqaTGd7YFb8Mee6GfiLwiRrUdt2iCp9ITuiUE
Connection:keep-alive
Host:api.touchtalent.biz
Origin:http://www.example.com
Referer:http://www.example.com/artist/52894/pratim-relekar
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, …Run Code Online (Sandbox Code Playgroud) 我有多个变量,我想使用此方法使其互斥
type var1WithMutex struct {
mu sync.Mutex
var1 int
}
func (v *var1) Set(value int) {
v.mu.Lock()
v.var1 = value
v.mu.Unlock()
}
func (v *var1) Get() (value int) {
v.mu.Lock()
value = v.var1
v.mu.Unlock()
return
}
Run Code Online (Sandbox Code Playgroud)
同样,有数百个变量,如 var1、var2、var3.... var100
我如何使它们全部互斥而不重复此代码?
请注意,var1、var2、var3 等不是数组的一部分,彼此之间没有任何关系。var2 可以是 int,var3 可以是 User{}
我想像使用MQTT协议的whatsapp一样实现一个messenger.我应该阅读哪些教程?
我对以下几点感到困惑:
我知道这些是非常基本的问题,但不幸的是我找不到任何指导初始步骤的资源.
结论:
在与已经在MQTT中实施大规模信使部署的人交谈之后,我得出结论,MQTT应该只使用一个协议.Pub/Sub很适合开始,但您应该拥有一层自己的业务逻辑,以实现灵活性和性能.但是,您可以使用pub/sub树实现大多数基本信使要求,但是您将受限于它,以后将难以扩展.
在设计数据库时使用表前缀是一个好习惯吗?
对于像" user_detail " 这样的表,
我使用列名,如ud_name,ud_email等.
我这样做是因为我想为每个列(在每个表中)保留唯一的名称,以便以后在加入时不会出现任何冲突列名的问题.
虽然我的一些同事在读取列名时遇到了问题(我不知道为什么),并且他们建议Name应该尽可能简单易读,所以我不应该使用任何前缀.
数据库设计遵循的标准命名法是什么?有前缀是不是很糟糕?请通过一些链接支持您的回答.
谢谢你
喜欢:)
我一直在尝试将地图编码为JSON,但到目前为止我还没有成功.Json.Marshal不是编码值,它只是编码密钥.
https://gist.github.com/rahulpache/9174490
package main
import (
"encoding/json"
"fmt"
)
type node struct {
value string
expiry float64
settime float64
}
func main() {
var x = make(map[string]node)
x["hello"] = node{value: "world", expiry: 1, settime: 2}
x["foo"] = node{value: "bar", expiry: 1, settime: 2}
a, err := json.Marshal(x)
fmt.Println(string(a))
}
Run Code Online (Sandbox Code Playgroud)
输出:
{"foo":{},"hello":{}}
Run Code Online (Sandbox Code Playgroud) 我想将所有子域映射到文件夹.
例如,subdomain.domain.com应显示domain.com/clients/subdmain的内容(透明)
RewriteCond %{HTTP_HOST} ^(.+)\.oomail\.org
RewriteCond %{HTTP_HOST} !^www\.oomail\.org [NC]
RewriteRule ^(.+)$ /var/www/clients/%1/$1
Run Code Online (Sandbox Code Playgroud)
我收到500内部服务器错误.为了检查我附加[R]标志的问题
RewriteRule ^(.+)$ /var/www/clients/%1/$1 [R]
Run Code Online (Sandbox Code Playgroud)
我在地址栏中得到了这个结果
http://q1.oomail.org/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/var/www/clients/q1/always.html
Run Code Online (Sandbox Code Playgroud)
然后我创建了一个details.php文件,该文件转储了$ _GET变量的详细信息.它的内容是
<pre>
<?php
var_dump($_GET);
?>
</pre>
Run Code Online (Sandbox Code Playgroud)
并修改了RewriteRule(注意:我将$ 1和%1发送到details.php,显示其内容)
RewriteRule ^(.+)$ details.php?p=%1&d=$1
Run Code Online (Sandbox Code Playgroud)
打开后http://subdomain.oomail.org/file.html,我输出了
array(2) {
["p"]=>
string(9) "subdomain"
["d"]=>
string(11) "details.php"
}
Run Code Online (Sandbox Code Playgroud)
其中变量p是正确的(%1的值),这是"子域",但d($ 1值)为details.php其中我期待是file.html我在URL打开.我哪里错了?或者如何将file.html(URI)提取到变量中以进行映射?
go ×4
angularjs ×2
exception ×2
php ×2
angular-ui ×1
apache ×1
buffer ×1
channel ×1
cors ×1
drupal ×1
drupal-7 ×1
file-io ×1
javascript ×1
json ×1
logging ×1
marshalling ×1
messenger ×1
mod-rewrite ×1
mqtt ×1
mutex ×1
ng-options ×1
preflight ×1
subdirectory ×1
subdomain ×1