小编eag*_*arn的帖子

在Java中,源代码到字节代码的编译究竟在哪里?

我做了一些搜索,试图了解java源文件是如何执行的.我找不到一个明确的答案,说明从JRE和JDK术语开始到结束的步骤.所以我在不同的博客上写下我理解的内容,但有些空白确实存在.对我的理解的更正是最受欢迎的.标记为Q1和Q2的两个问题低于第2点.

  1. 写一个HellowWorld.java文件

  2. javac HelloWowrld.java给出了HelloWorld.class.那就是它给出了一个字节代码的类文件.现在我可以把这个在Mac中生成的字节码转到windows机器并运行它应该可以正常工作.
    Q1:现在这个编译为字节代码,这真的是编译还是解释?
    Q2:Javac必须是JDK而不是JRE的一部分吗?

  3. JRE包含JVM和其他库来创建运行时环境.JVM(它本身是平台相关的)执行字节码到机器代码.即时编译器实际上是JVM的一部分,它将字节码的实际编译部分转换为机器代码,并在必要时加上缓存字节代码.

  4. 垃圾收集包含在JRE中.

java compilation

5
推荐指数
1
解决办法
6774
查看次数

Java中的有符号字节类型和按位运算符?

引用来自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的情况下,它的工作原理

谢谢你的帮助

java int byte bit-manipulation

5
推荐指数
1
解决办法
3447
查看次数

差异bewteen*args和**args在python中?

我试图理解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和?)

谢谢

python parameters arguments decorator

4
推荐指数
1
解决办法
2151
查看次数

django用户注册和电子邮件认证

我想通过发送用户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)

django django-forms django-views user-registration

4
推荐指数
1
解决办法
9978
查看次数

是否可以将此循环转换为python中的列表解析

我有一点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)

python list-comprehension list while-loop

3
推荐指数
1
解决办法
515
查看次数

ajax请求在Django中不起作用?

这是我的使用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语句可以执行,但不会执行。

我无法弄清楚这里出了什么问题。

django ajax jquery

3
推荐指数
1
解决办法
3053
查看次数

StringBuffer对象可以作为Java中TreeSet的键吗?

我有以下代码,试图将 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)

java stringbuffer hashset comparable treeset

2
推荐指数
1
解决办法
5730
查看次数

方法名称在Java中的log4j logger中无法正确打印

我的日志发生在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)

java logging log4j method-names

2
推荐指数
2
解决办法
9612
查看次数

在此示例中,在cassandra中创建了多少个表/列族

我正在阅读关于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"加入".

cql cassandra

2
推荐指数
1
解决办法
546
查看次数

如何在java中将负数作为二进制赋值给int变量?

我在看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 binary

1
推荐指数
1
解决办法
1171
查看次数