以下是我在使用 mongo3.x 时的使用方式:
假设您希望结果如下所示: {"data": [{"key":"v1"}, {"key":"v1"} , {"key":"v1"}] }
[step1]: 使用 Java Map 创建 json 对象,该对象映射到数组内的元素;也就是[]里面的{}
[step1 Ans]: Map m1,m2,m3 = new HashMap(); m1.put("key", "v1"); m2.put("密钥", "v1"); m3.put("key", "v1");
[步骤2]:使用Java List将所有Java Map添加到一个元素中。
[step2 Ans]: List list = new ArrayList();列表.add(m1);列表.add(m2); list.add(m3);
[step3]: 将 Java 列表添加到 mongo
[step3 Ans]: Document dc = new Document("key", list);
您只需传输 10k 字节即可执行测试。您正在做的很多事情都会产生开销,而如此小的数据集可能会因这种开销而产生偏差。 (例如创建套接字、分配内存等)您应该创建并传输更大的数据集(数十MB+),以便更现实地了解正在发生的情况。这样做将使开销成为数据传输过程中较小、不太重要的部分。
您还应该多次执行此测试(> 10)并取平均值,因为您的计算机将在不同的随机时间点承受来自服务、网络传输等的负载,并且这些负载将影响您的传输速率。通过 10 次以上的迭代,您还可以删除任何异常缓慢的运行时间,例如 > 2 个标准差。
$manu_name = mysql_real_escape_string($_POST['manu_name']);
$query = "SELECT p2.prod_type, p2.prod_id, p2.prod_coupon_img
FROM products p2
WHERE p2.id IN (
SELECT Min(p.id)
FROM products p
INNER JOIN manu m ON (m.manu_id = p.manu_id)
WHERE m.manu_name = '$manu_name'
GROUP BY prod_coupon_img) ";
您需要反射。这是我的完整示例。
A 类
package a;
public class A {
String info;
public String getInfo() {
System.out.println("A getInfo");
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
B 类
package a;
public class B {
String info;
public String getInfo() {
System.out.println("B getInfo");
return info;
}
public void setInfo(String info) {
this.info = info;
}
}
测试类
package a;
import java.lang.reflect.Method;
public class TestAB {
public static void main(String[] args) {
A a= new A();
doSth(a);
}
private static void doSth(Object obj) {
Class c = obj.getClass();
Method m;
try {
m = c.getMethod("getInfo", new Class[] { });
String result = (String) m.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
请参阅这一行:
Class c = obj.getClass();
和
>m = c.getMethod("getInfo", new Class[] { });
和
String result = (String) m.invoke(obj);
没有 if 语句
根据您的代码(请参阅下面的注释),您的登录链接似乎具有 class="login_link"
并且您的登录弹出窗口启动代码是 $("#loginpopup").dialog() ;
。要在单击链接时打开该弹出窗口,您需要:
$('a.login_link').click(function(e){
e.preventDefault();
$("#loginpopup").dialog();
});
学习参考:jQuery 类选择器, jQuery .click() 方法
仅供参考: 它会有助于实际在中包含相关代码的示例您的问题(a.login_link
和 $("#loginpopup").dialog();
在这个特定的例子)。否则,您的问题对于浏览 StackOverflow 寻找答案的其他人来说基本上没有任何价值。
仅供参考 2: 您用 //
注释注释掉了大量行。您可以使用 /*my comment*/
进行多行注释。
如果您想通过菜单执行此操作,则为:
Edit / IntelliSense / Refresh Local Cache
使用键盘,则为:
CTRL-SHIFT-R
首先,您的方法签名不正确。你不需要“低”。您应该将数组/列表作为输入并返回最大的元素。然而,您可能会发现您需要一个需要额外参数的辅助方法。
当接近递归并且您陷入困境时,通常最好首先确定您的基本情况,然后再处理递归情况。
您的基本情况是您知道答案的最简单情况。在这个问题中,如果列表的大小为 1,您立即知道最大的元素是什么 - 您只需返回唯一的元素。您可能还需要考虑列表为空的情况。
那么,您的递归情况是每当您的列表大小大于 1 时。在您的递归情况下,您想要尝试“分解一部分”,然后将其余部分发送到递归调用。在这种情况下,您可以查看列表中的第一个元素,并将其与列表其余部分的递归调用所获得的结果进行比较。
从 SDK 1.5.5 更新开始,该示例已过时。
现在它应该看起来或多或少像这样:
package main
import (
"fmt"
"http"
"template"
)
func init() {
http.HandleFunc("/", root)
http.HandleFunc("/sign", sign)
}
func root(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, guestbookForm)
}
const guestbookForm = `
<html>
<body>
<form action="/sign" method="post">
<div><textarea name="content" rows="3" cols="60"></textarea></div>
<div><input type="submit" value="Sign Guestbook"></div>
</form>
</body>
</html>
`
func sign(w http.ResponseWriter, r *http.Request) {
err := signTemplate.Execute(w, r.FormValue("content"))
if err != nil {
http.Error(w, err.String(), http.StatusInternalServerError)
}
}
var signTemplate = template.Must(template.New("SignIn").Parse(signTemplateHTML))
const signTemplateHTML = `
<html>
<body>
<p>You wrote:</p>
<pre>{{.|html}}</pre>
</body>
</html>`
注意调用初始化 var signTemplate
和signTemplateHTML 变量中的模板参数的区别,{{.|html}}
而不是{@|html}
。
尝试将重复函数与否定运算符“!”结合使用。
示例:
wdups <- rep(1:5,5)
wodups <- wdups[which(!duplicated(wdups))]
希望有帮助。
尽管它完成了它的工作,但您的方法基本上否定了正确的 PKI 的目的。如果您盲目信任任何自签名证书,那么使用 TLS 根本没有任何意义 - 任何人都可以创建可通过您的 TrustManager
的自签名证书。
因此,如果您想要安全,那么您应该首先找出您的客户端应用程序将与哪些服务器通信,然后获取链接到这些服务的 TLS 服务器证书(在您的场景中,每个它们是自签名的,因此您无需关心中间证书)。
现在,使用这些证书,您创建一个 JKS“信任存储”文件并将证书放入其中 - 这是您要信任的证书集,未包含在此文件中的证书将被拒绝。要创建 JKS 文件,您可以使用 Java 的 keytool 命令,或者您可以使用 KeyStore
API 以编程方式执行此操作。
最后,您将创建供 HttpClient
使用的 SSLContext
,并使用如下创建的 TrustManager
来init
它:
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(fin, pwd);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("PKIX");
tmf.init(ks);
其中fin
是您的“信任存储”的InputStream
,pwd
是您用于加密它的密码。默认的 TrustManager
实现让您只需要使用一组受信任的证书,其余的都会为您处理。
您不应该依赖计时器的间隔正好 10 毫秒。如果您将每个计时器滴答视为刷新屏幕计时器的请求,但从系统时钟或类似的东西中获取测量,那就更好了。
然后,无论机器(和 JS 实现)有多慢或多忙,您总是会看到一个准确的计时器1 - 只是更新频率较低的计时器。
1 当然,这只会与系统时钟一样准确。如果 Javascript 可以访问高性能计时器,例如 .NET 的
Stopwatch
类或 Java 的System.nanoTime()
方法,这样会更好用。You shouldn't be relying on the interval of the timer being exactly 10ms. It would be better if you viewed each timer tick as a request to refresh the on-screen timer, but take the measurements from the system clock or something like that.
Then however slow or busy the machine (and JS implementation) is, you'll always see an accurate timer1 - just one which updates less often.
1 This will only be as accurate as the system clock, of course. If Javascript has access to a high-performance timer like .NET's
Stopwatch
class or Java'sSystem.nanoTime()
method, that would be better to use.Firefox 10ms 间隔