我正在写移动应用程序.我也有web服务器,处理http请求以启动用户注册,并将用户/密码添加到数据库.但由于安全性,我不想将用户密码作为POST请求的参数发送.现在在我的本地机器上它完美运行,但在互联网上它将是不安全的.DDoS这个Web服务器也很容易.
所以我的问题是:
有时我nvl()在代码中看到一个函数。对于Java,它看起来像这样:
public static String nvl(String value, String alternateValue) {
if (value == null)
return alternateValue;
return value;
}
Run Code Online (Sandbox Code Playgroud)
我知道此函数的作用,但不知道为什么调用它nvl。为什么不checkNotNull和returnNotNull?NVL代表什么?
我想ñ ULL V ALUE 大号 ...?
主要问题是:在*.class文件(java编译的类)中更改一些"字符串"信息是否安全.
我在做的是:
使用正则表达式我试图找到一些编译项目中的所有IP地址蜇"
find . -type f | xargs grep -E "[0-9]{3}\.[0-9]{3}\.1\.[0-9]{0,3}"
Run Code Online (Sandbox Code Playgroud)
这个命令告诉我一些二进制文件与我的正则表达式匹配.它指出这个二进制文件是.jar和.class.当我打开这些.class文件时,vi我可以看到很多奇怪的字符,还有像这样的二进制垃圾中的" http://192.168.1.111 ".
我的最后一项任务是将所有IP地址(使用sed -i)替换为FQDN.
安全吗?或者只有工作解决方案来反汇编所有项目并重新编译?
我这样测试:
创建Change.java
public class Change {
public static String CHANGE_ME="SOME_TEST_STRING";
public static void main (String[] argv){
System.out.println(CHANGE_ME);
}
}
Run Code Online (Sandbox Code Playgroud)
运行它,并在终端中看到它
$ java Change
SOME_TEST_STRING
Run Code Online (Sandbox Code Playgroud)
编译并运行替换:
sed -i 's/SOME_TEST_STRING/AAAAA/g' Change.class
在此之后再次运行
$ java Change
Exception in thread "main" java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file Change
at …Run Code Online (Sandbox Code Playgroud) 我们使用的是Oracle 11,我们的应用程序是用Java编写的.每天一次,通常是下午我们的数据库冻结因为许多大的SQL查询.我想以某种方式优化这些查询.此查询包含许多不同表的连接.我的问题是:使用左连接是否更好的性能,或者最好将所有信息放在一个表中并使用一个选择?假设我将为此表构建一个好的索引.
有关信息:平均而言,一个查询获取100兆字节.此查询有时也会相互锁定
更新
连接8个表的表,它们通常是3-5列的表,其中一列是一些ID.Sql查询看起来像:
SELECT t1.c1,t2.c5, t6.c2, ... FROM t1
LEFT JOIN t2 ON t1.c1 = t2.c1
LEFT JOIN t3 ON t3.c1 = t2.c2
LEFT JOIN t4 ON t4.c1 = t2.c1
LEFT JOIN t5 ON t5.c5 = t1.c1
LEFT JOIN t6 ON t6.c1 = t2.c1
LEFT JOIN t7 ON t7.c3 = t3.c1
LEFT JOIN t8 ON t8.c1 = t2.c1
WHERE something
Run Code Online (Sandbox Code Playgroud)
我的问题是,创建一个包含所有连接表的新表是否更好,并使用如下查询:
SELECT c1,c5, c2, ... FROM SOME_NEW_TABLE
更新2
这是报告,如果有人可以解释一般情况会很好.
我正在尝试在MongoDB和Lucene之间编写同步器。想法是实现将终止oplog并在Lucene中重现所有内容的应用程序。作为基础,我正在使用这篇文章
问题是我的oplog总是空的:
rs0:PRIMARY> db.oplog.rs.find({},{"ts":1}).sort({$natural: -1}).hasNext()
false
rs0:PRIMARY> db.Message.find({}).count()
729
rs0:PRIMARY> db.oplog.rs.find({}).hasNext()
false
rs0:PRIMARY> db.oplog.rs.find()
rs0:PRIMARY>
Run Code Online (Sandbox Code Playgroud)
有人可以解释我在做什么吗?
我正在尝试更改Snackbar文本大小,因为我希望它对于视力不佳的用户来说易于阅读.我写这个方法来创建Snackbar
private Snackbar getSnackbar(int msgId) {
final Snackbar snackbar = Snackbar.make(
mView,
msgId,
Snackbar.LENGTH_LONG);
final View view = snackbar.getView();
final TextView tv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.snackbar_textsize));
return snackbar;
}
Run Code Online (Sandbox Code Playgroud)
相应的dimens.xml是:
<resources>
<dimen name="header_date_font_size">16sp</dimen>
<dimen name="snackbar_textsize">16sp</dimen>
</resources>
Run Code Online (Sandbox Code Playgroud)
以下是生成的Snackbar的屏幕截图.
为什么文字这么大?我期待它通常是16sp大小,因为它在我的应用程序中无处不在.