我有一个以Person多个属性命名的类,例如:
public class Person {
private int id;
private String name, address;
// Many more properties.
}
Run Code Online (Sandbox Code Playgroud)
很多Person对象存储在一个ArrayList<Person>.我想通过多个排序参数对此列表进行排序,并且不时有所不同.例如,我可能有一次想要按name升序然后address降序排序,而另一次只能通过id降序排序.
而且我不想创建自己的排序方法(即,我想使用Collections.sort(personList, someComparator).实现这一目标的最优雅的解决方案是什么?
在我正在开发的Web应用程序中,我在连接到数据库时使用了一个天真的解决方案:
Connection c = DriverManager.getConnection("url", "username", "password");
Run Code Online (Sandbox Code Playgroud)
这非常不安全.如果攻击者获得对源代码的访问权限,他也可以访问数据库本身.我的Web应用程序如何连接到数据库而无需在源代码中以明文形式存储数据库密码?
InputStream类的JavaDoc说明如下:
将输入流中最多len个字节的数据读入一个字节数组.尝试读取len个字节,但可以读取较小的数字.实际读取的字节数以整数形式返回.此方法将阻塞,直到输入数据可用,检测到文件结尾或引发异常.
这也符合我的经验.例如,参见下面的示例代码:
Client:
Socket socket = new Socket("localhost", PORT);
OutputStream out = socket.getOutputStream();
byte[] b = { 0, 0 };
Thread.sleep(5000);
out.write(b);
Thread.sleep(5000);
out.write(b);
Server:
ServerSocket server = new ServerSocket(PORT);
Socket socket = server.accept();
InputStream in = socket.getInputStream();
byte[] buffer = new byte[4];
System.out.println(in.read(buffer));
System.out.println(in.read(buffer));
Output:
2 // Two bytes read five seconds after Client is started.
2 // Two bytes read ten seconds after Client is started.
Run Code Online (Sandbox Code Playgroud)
第一次调用read(缓冲区)阻塞,直到输入数据可用.但是,该方法在读取两个字节后返回,即使字节缓冲区中仍有空间,这与JavaDoc相对应,表明"尝试读取的数量为len个字节,但可以读取较小的数字 ".但是,当输入流来自套接字时,是否保证在读取至少一个字节的数据时该方法不会阻塞?
我问的原因是我在小型Java Web服务器NanoHTTPD中看到了以下代码,我想知道一个小于8k字节的HTTP请求(大多数请求都是)可以使线程无限制地阻塞,除非有保证它一旦读取某些数据,将不会阻止.
InputStream is …Run Code Online (Sandbox Code Playgroud) 发送HTTP响应时,是否应该使用换行符(行分隔符)结束响应正文(内容本身)?
如果是这样的话,我应该在Content-Length中包含行分隔符的大小(我想在发送\ r \n时增加2的计数)?
我正在创建一个应用程序,用户在游戏中执行某些操作,并将这些操作记录在SQLite数据库中.在比赛结束的应用提出了通过屏幕,这是由游戏管理员(如,实物上被游戏管理员观看屏幕读取)读取这些日志.是否有一些方法可以让参赛者操纵数据库,如果没有,哪些安全措施会阻止他们这样做?
我正在一个关于信息安全的学校项目中,其中一项任务是用PHP编写一些安全页面.我小组中没有人知道PHP,但这不是一个大问题,我们将学到足够的知识来创建所需的简单页面.
学生助理给出的一个提示是使用这两个功能strip_tags()和mysqli_real_escape_string().我认为这些是安全的,但没有深入的了解我不确定.一些简单的谷歌搜索显示,至少过去存在漏洞.作为任务的一部分,试图打破其他群体系统,重要的是我们自己的系统是安全的,并在其他群体的系统中找到可能的漏洞.而且大多数团体都会盲目地使用这两个功能.所以我的问题是:
strip_tags()?mysqli_real_escape_string()?