我做了一些搜索,试图了解java源文件是如何执行的.我找不到一个明确的答案,说明从JRE和JDK术语开始到结束的步骤.所以我在不同的博客上写下我理解的内容,但有些空白确实存在.对我的理解的更正是最受欢迎的.标记为Q1和Q2的两个问题低于第2点.
写一个HellowWorld.java文件
javac HelloWowrld.java给出了HelloWorld.class.那就是它给出了一个字节代码的类文件.现在我可以把这个在Mac中生成的字节码转到windows机器并运行它应该可以正常工作.
Q1:现在这个编译为字节代码,这真的是编译还是解释?
Q2:Javac必须是JDK而不是JRE的一部分吗?
JRE包含JVM和其他库来创建运行时环境.JVM(它本身是平台相关的)执行字节码到机器代码.即时编译器实际上是JVM的一部分,它将字节码的实际编译部分转换为机器代码,并在必要时加上缓存字节代码.
引用来自oracle网站 "byte:字节数据类型是一个8位带符号的二进制补码整数.它的最小值为-128,最大值为127(含)".
这里,前两行是有效的,但最后一行不是
byte b = -128;
byte b1 = 127;
byte b2 = b>>>b1;//illegal
Run Code Online (Sandbox Code Playgroud)
Q1)8位签名究竟是什么意思?二进制格式的128将是1000 0000,而-128将需要额外的位用于负号,如果所有8位都被占用则它将适合.
Q2)对于int,有一个无符号右移运算符,但这似乎是非法的字节,为什么会这样.在字节的情况下,不能防止溢出.在int的情况下,它的工作原理
谢谢你的帮助
我试图理解python中函数定义中*args和**args之间的区别.在下面的示例中,*args用于打包到元组并计算总和.
>>> def add(*l):
... sum = 0
... for i in l:
... sum+=i
... return sum ...
>>> add(1,2,3)
6
>>> l = [1,2,3]
>>>add(*l)
6
Run Code Online (Sandbox Code Playgroud)
对于**args,
>>> def f(**args):
... print(args)
...
>>> f()
{}
>>> f(de="Germnan",en="English",fr="French")
{'fr': 'French', 'de': 'Germnan', 'en': 'English'}
>>>
Run Code Online (Sandbox Code Playgroud)
我看到它需要参数并变成字典.但我不明白使用**args时可能有用的实用程序或其他东西.事实上,我不知道*args和**args被称为什么(vararg和?)
谢谢
我想通过发送用户activation email点击来激活用户.我想它目前尚未合并Django 1.6.用 Django编码的用户注册应用似乎就是为了这个目的.但是我对forms.py中DefaultForm提供的内容有些怀疑.我想要包含更多字段.如何在那里实现它.如果我安装这个应用程序,更改直接包含更多字段是一个好主意,有没有更好的方法来实现相同.class RegistrationForm(forms.Form)
在views.py中,我看到一些方法如下未实现.我不清楚这些方法需要做什么.我应该将网址重定向到这些页面吗?
def register(self, request, **cleaned_data):
raise NotImplementedError
def activate(self, request, *args, **kwargs):
raise NotImplementedError
def get_success_url(self, request, user):
raise NotImplementedError
Run Code Online (Sandbox Code Playgroud) 我有一点code我想知道它是否可以写入list comprehension.这while loop部分是我对冷凝感兴趣的部分.
>>> sum=33
>>> final_list=[]
>>> LastCoin=[0, 1, 2, 1, 2, 5, 1, 2, 1, 2, 5, 1, 2,
1, 2, 5, 1, 2, 1, 2, 5, 1, 2, 1, 2, 5, 1, 2, 1, 2, 5, 1, 2, 1]
>>> while sum>0:
... final_list.append(LastCoin[sum])
... sum-=LastCoin[sum]
...
>>> print final_list
[1, 2, 5, 5, 5, 5, 5, 5]
>>>
Run Code Online (Sandbox Code Playgroud) 这是我的使用Jquery blockUI插件的js:
$(document).ajaxStop($.unblockUI);
$('#submit-id-submit').click(function() {
$.blockUI({message:'<h1><img src="{% static 'css/spinner.gif' %}" /> Just a moment ...</h1>'});
$.ajax({
url: "/search/test/",
cache:'false',
dataType: 'text',
type:"GET",
success: function(data){
alert(data);
},
error: function(data){
alert('error; '+ eval(error));
}
});
});
Run Code Online (Sandbox Code Playgroud)
我的看法:
def test_ajax(request):
time.sleep(20)
print "in test_ajax"
return HttpResponse("hell world")
url(r"search/test/$", test_ajax,name="dummy"),
Run Code Online (Sandbox Code Playgroud)
首先,我看到ajax调用返回错误(因为我收到了来自错误的警报。但是它不显示错误消息)
其次,未调用我的视图test_ajax,因为我希望那里的print语句可以执行,但不会执行。
我无法弄清楚这里出了什么问题。
我有以下代码,试图将 StringBuffer 对象作为键放入 TreeSet 中。我这样做的原因是看看是否可以将可变对象作为键。我没有收到任何编译错误。但是当我运行此代码时,我收到代码下方的错误。特别是,我明白了java.lang.StringBuffer cannot be cast to java.lang.Comparable。这个错误表明什么?
从javadoc我看到StringBuffer类被声明为final(public final class StringBuffer),这是否意味着它是不可变的,因此是可散列的?
我是散列和不可变的东西的新手,所以请在这里帮助我。
谢谢
import java.util.*;
class MutableKeys {
public static void main(String[] args) {
StringBuffer one = new StringBuffer("one");
StringBuffer two = new StringBuffer("two");
StringBuffer three = new StringBuffer("three");
Set<StringBuffer> sb=new TreeSet<StringBuffer>();
sb.add(one);
sb.add(two);
sb.add(three);
System.out.println("set before change: "+ sb);
one.append("onemore");
System.out.println("set After change: "+ sb);
}
}
Exception in thread "main" java.lang.ClassCastException: java.lang.StringBuffer cannot be cast to java.lang.Comparable
at java.util.TreeMap.put(TreeMap.java:542)
at java.util.TreeSet.add(TreeSet.java:238) …Run Code Online (Sandbox Code Playgroud) 我的日志发生在getParam()方法中.但它被记录为main方法.我有三个对象,但我没有看到有关哪个对象正在记录的任何信息.我也想要这些信息.
这是输出:
INFO [main]: info
INFO [main]: debug
INFO [main]: trace
Run Code Online (Sandbox Code Playgroud)
这是代码:
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
class Log4jTest {
private static Logger log=Logger.getLogger(Log4jTest.class);
private String param;
public Log4jTest(String param){
this.param=param;
}
public String getParam(){
log.info(param);
return param;
}
}
public class Log4j_testing {
public static void main(String[] args) throws FileNotFoundException{
Log4jTest l1= new Log4jTest("info");
l1.getParam();
Log4jTest l2= new Log4jTest("debug");
l2.getParam();
Log4jTest l3= new Log4jTest("trace");
l3.getParam();
}
}
Run Code Online (Sandbox Code Playgroud)
我的log4j.properties:
log4j.rootLogger=INFO, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L …Run Code Online (Sandbox Code Playgroud) 我正在阅读关于cassandra架构的这篇文章.
作者创建了两个表:
CREATE TABLE tweets (
tweet_id uuid PRIMARY KEY,
author varchar,
body varchar
);
CREATE TABLE timeline (
user_id varchar,
tweet_id uuid,
author varchar,
body varchar,
PRIMARY KEY (user_id, tweet_id)
);
Run Code Online (Sandbox Code Playgroud)
注意:至于表格,他们不知道两个表都可以在tweet_id上"加入".每个表都将tweet_id视为uuid类型的唯一列名.
如果我对帖子的理解在这里,作者说没有两个列族,也就是物理创建的表.它只是一个巨大的表,包含两个逻辑列系列的信息.
但是当我说select * from tweets where tweet_id="xxx"
(有一个内部标记来确定列属于推文时)是如何进行查找的
请查看帖子,正如作者用好的例子所说明的那样.
我的问题是表格时间线中的tweet_id如何知道它应该与表格推文中的tweet_id"加入".
我在看java中如何表示二进制数.一个选项是使用as String和use Integer.parseInt()来获取decimal值;
另一个选项(赋值为2 b):
int b = 0b0010; //2
System.out.println(b);
System.out.println(Integer.toBinaryString(-2));
Run Code Online (Sandbox Code Playgroud)
输出:
2
11111111111111111111111111111110
Run Code Online (Sandbox Code Playgroud)
使用这种格式,如何表示-2:
int c=??//-b
Run Code Online (Sandbox Code Playgroud) java ×5
django ×2
python ×2
ajax ×1
arguments ×1
binary ×1
byte ×1
cassandra ×1
comparable ×1
compilation ×1
cql ×1
decorator ×1
django-forms ×1
django-views ×1
hashset ×1
int ×1
jquery ×1
list ×1
log4j ×1
logging ×1
method-names ×1
parameters ×1
stringbuffer ×1
treeset ×1
while-loop ×1