我正在尝试使用摘要式身份验证连接到我的计算机上的Tomcat Web Server.我正在使用tomcat的内存领域.以下是服务器的配置方式:
1)在server.xml中:
<Realm className="org.apache.catalina.realm.MemoryRealm" digest="MD5" />
Run Code Online (Sandbox Code Playgroud)
2)在tomcat-users.xml中
<user username="testuser" password="81dc9bdb52d04dc20036dbd8313ed055" roles="test"/>
Run Code Online (Sandbox Code Playgroud)
3)在我的web项目的web.xml中:
<auth-method>DIGEST</auth-method>
Run Code Online (Sandbox Code Playgroud)
如您所见,我已指定为摘要方法"MD5",并且我已使用Tomcat的digest.sh加密了密码.
这是我在客户端的代码:
private static void testGet() throws IOException {
// Create a URL
URL test = new URL("http://localhost:8080/TestWebProject/TestServlet");
// Open a connection to the URL
HttpURLConnection conn = (HttpURLConnection) test.openConnection();
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}
// Digest password using the MD5 algorithm
String password = "1234";
md5.update(password.getBytes());
String digestedPass = digest2HexString(md5.digest());
// Set header "Authorization" …Run Code Online (Sandbox Code Playgroud) 我应该定义一个函数pad_with_n_chars(s, n, c),它接受一个字符串's',一个整数'n'和一个字符'c',并返回一个由's'填充'c'组成的字符串,以创建一个带有居中's'的字符串长度'n'.例如,
pad_with_n_chars(”dog”, 5, ”x”)应该返回字符串" xdogx".
类似的东西,如果我输入字符串"Console.WriteLine",它将返回 - >"System.Console.WriteLine"
我假设通过反思有一些方法.
我对javascript一无所知,也不是很多关于编程的东西,但我想创建一个检查用户的操作系统的页面,如果他们使用的是移动操作系统(iphone,android等等),请将它们转发给移动网站,如果他们使用的是计算机,请将其转发到普通网站.这是我制作的页面:
<head>
<title>OS Check | website.web.org</title>
<SCRIPT LANGUAGE = "javaScript">
if (navigator.appVersion.indexOf("Win")!=-1) && (navigator.appVersion.indexOf("Mac")!=-1) && (navigator.appVersion.indexOf("X11")!=-1) && (navigator.appVersion.indexOf("Linux")!=-1) location.href= "http://website.web.org/mobile/index.html"
else location.href = "http://website.web.org/Home.html"
</SCRIPT>
</head>
Run Code Online (Sandbox Code Playgroud)
基本上,它的意思是检查所有主要的计算机操作系统,如果它不是其中之一,将用户发送到移动网页,但如果是其中之一,则将它们发送到计算机站点.
有人可以告诉我这个页面/脚本中的错误/问题是什么吗?
谢谢,卢克
我正在开发一个ListActivity,它会显示一堆数字(权重).我想更改ListView中特定行的背景.为此,我创建了ArrayAdapter类的自定义实现,并重写了getView方法.适配器接受数字列表并将数字20的背景设置为黄色(为简单起见).
public class WeightListAdapter extends ArrayAdapter<Integer> {
private List<Integer> mWeights;
public WeightListAdapter(Context context, List<Integer> objects) {
super(context, android.R.layout.simple_list_item_1, objects);
mWeights = objects;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
int itemWeight = mWeights.get(position);
if (itemWeight == 20) {
v.setBackgroundColor(Color.YELLOW);
}
return v;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,不仅数字20的行获得黄色背景,而且数字0的行(第一行),我不知道为什么会这样.
我在getView方法中做错了什么(比如调用super方法)?我实现的原因是:所有返回的视图应该是相同的(这就是我调用super方法的原因)只有适合if条件的视图才应该更改.
谢谢你的帮助!
可能重复:
递归是否比循环更快?
大约15年前,我第一次接受C语言培训.我的雇主想要高度优化的代码来处理计算困难的任务.我记得不止一次被建议将递归重写为循环,即使是在昂贵的可读性方面,以避免"递归开销".正如我所理解的那样,递归开销是将数据推送到堆栈然后将其弹出所需的额外工作.
现在我用C,Python,Perl编写,有时用Java编写代码,我有时会想到递归.还有什么东西可以通过重写来获得吗?如果它们是尾递归怎么办?现代编译器让所有这些问题都没有实际意义吗?这些担忧是否与解释语言无关?
optimization recursion programming-languages tail-recursion interpreted-language
我正在尝试计算de Bruijn序列的字母表,这些字母表有许多不是2的幂的字符.
对于具有2 ^ k个字符的字母表,计算de Bruijn序列很容易:有几个简单的规则,例如"Prefer Ones"和"Prefer Opposites",它们用于生成B(2,n).如果您将1和0作为字母表中实际字符的二进制代码读取,则B(2 ^ k,n)与B(2,kn)完全相同.例如,您可以将B(2,8n)解释为超过n长度的字节序列.
首选Ones很简单:写n个零.然后,总是写一个,除非它会导致重复n长度的字符串; 否则,写一个零.
目前,我没有看到如何将这些规则推广到非幂级的两个字母表.
有一种通过图表计算de Bruijn序列的一般方法:让你的字母表生成的每个n长度序列成为一个节点; 如果A的最右边的n-1个字符与B的最左边的n-1个字符相同,则将A从边缘放到B边缘.用头顶点中的字符串的最后一个字符标记每个边缘.通过该图的任何欧拉路径将生成de Bruijn序列,并且我们使用的特殊构造保证将存在至少一条这样的路径.我们可以使用Fleury算法(非确定性地)构建欧拉路径:
结果字符串将是de Bruijn序列.
该算法比Prefer Ones实现起来要复杂一些.Prefer Ones的简单之处在于,只需查阅已生成的输出即可确定要执行的操作.有没有一种简单的方法可以将Prefer Ones(或者,可能更喜欢Opposites)推广到非二次幂大小的字母表?
当用户处于无信号区域或手机处于飞行模式时,我想测试我的应用程序的行为.
- > 如何将Android虚拟设备置于离线模式(无法连接到互联网)?
我尝试过以下方法:
通过AVD设置激活飞行模式:令人惊讶的是,这不起作用(在飞行模式下仍然可以浏览互联网!)
在我的电脑上禁用网络连接:这显然有效,但由于我在测试我的应用时需要互联网,因此效果不理想
如果C++ FAQ Lite中的以下内容为真:"函数名称衰减到指向函数的指针"(因为数组名称衰减为指向其第一个元素的指针); 为什么我们必须加入&符号?
typedef int (Fred::*FredMemFn)(char x, float y);
FredMemFn p = &Fred::f;
Run Code Online (Sandbox Code Playgroud)
而不只是:
typedef int (Fred::*FredMemFn)(char x, float y);
FredMemFn p = Fred::f;
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,Fred :: f是一个函数,可以衰减到指向该函数的指针.
我希望这个问题不是那么愚蠢.
android ×2
string ×2
.net ×1
algorithm ×1
c# ×1
c++ ×1
excel ×1
html ×1
java ×1
javascript ×1
listview ×1
math ×1
mongodb ×1
namespaces ×1
optimization ×1
python ×1
recursion ×1
reflection ×1