小编A.H*_*.H.的帖子

了解使用Super访问Superclass成员

我指的是java语言规范,以了解super的用法.虽然我理解第一个用例即

表单super.Identifier引用当前对象的名为Identifier的字段,但将当前对象视为当前类的超类的实例.

我似乎无法理解以下用例:

该表单T.super.Identifier引用了与词汇封闭实例相对应的名称Identifier T,但该实例被视为超类的实例T.

有人可以借助代码解释一下吗?

我想以下可能是第二种情况的说明:

class S{
    int x=0;
}

class T extends S{
    int x=1;
    class C{
        int x=2;
        void print(){

            System.out.println(this.x);
            System.out.println(T.this.x);
            System.out.println(T.super.x);
        }
    }
    public static void main(String args[]){
        T t=new T();
        C c=t.new C();
        c.print();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:2 1 0

java super

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

使用规则插入辅助表自动递增序列

要在第二个表中自动添加列以通过唯一索引将其绑定到第一个表,我有一个如下规则:

CREATE OR REPLACE RULE auto_insert AS ON INSERT TO user DO ALSO
INSERT INTO lastlogin (id) VALUES (NEW.userid);
Run Code Online (Sandbox Code Playgroud)

如果user.userid是一个整数,这可以正常工作.但是,如果它是一个序列(例如,类型为serialbigserial),那么插入到lastlogin表中的是下一个序列id.所以这个命令:

INSERT INTO user (username) VALUES ('john');
Run Code Online (Sandbox Code Playgroud)

将列[1,'john',...]插入用户,但将列[2,...]插入lastlogin.以下2个解决方法确实有效,但第二个解决方案消耗了两倍的序列号,因为序列仍然是自动递增的:

CREATE OR REPLACE RULE auto_insert AS ON INSERT TO user DO ALSO
INSERT INTO lastlogin (id) VALUES (lastval());

CREATE OR REPLACE RULE auto_insert AS ON INSERT TO user DO ALSO
INSERT INTO lastlogin (id) VALUES (NEW.userid-1);
Run Code Online (Sandbox Code Playgroud)

不幸的是,如果我插入多行,解决方法不起作用:

INSERT INTO user (username) …
Run Code Online (Sandbox Code Playgroud)

postgresql rules

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

如何使用分区表插入和选择数据?

我根据http://www.postgresql.org/docs/8.1/interactive/ddl-partitioning.html上的文档设置了一组分区表

CREATE TABLE t (year, a);
CREATE TABLE t_1980 ( CHECK (year = 1980) ) INHERITS (t);
CREATE TABLE t_1981 ( CHECK (year = 1981) ) INHERITS (t);
CREATE RULE t_ins_1980 AS ON INSERT TO t WHERE (year = 1980)
    DO INSTEAD INSERT INTO t_1980 VALUES (NEW.year, NEW.a);
CREATE RULE t_ins_1981 AS ON INSERT TO t WHERE (year = 1981)
    DO INSTEAD INSERT INTO t_1981 VALUES (NEW.year, NEW.a);
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果我插入 t (year, a) VALUES (1980, 5),它将转到 t_1980,如果我插入 t (year, a) …

postgresql partitioning rules

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

Shell脚本和SQL结果

我目前想从SQL命令response中提取一个值

像这样:

psql db -c "SELECT COUNT(test) FROM tbTest;"
Run Code Online (Sandbox Code Playgroud)

结果是:

 count
------
 33176
(1 row)
Run Code Online (Sandbox Code Playgroud)

我想提取33176值......有没有简单的方法来做到这一点?

postgresql shell

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

ANTLR - NoViableAltException

我正在尝试通过编写一个语法来学习ANTLR(我正在使用带有ANTLR插件的eclipse),它一直没问题,直到我遇到错误:

NoViableAltException: line 0:-1 no viable alternative at input '<EOF>'
Run Code Online (Sandbox Code Playgroud)

当我尝试测试我的args解析器规则时;

typedident  :   (INT|CHAR) IDENT;

args    :   (typedident ( COMMA typedident)*)?;
Run Code Online (Sandbox Code Playgroud)

一个字母是一个字母后跟任何字符,这是有效的,我已经测试过了.typedident也适用于测试.

我正在使用int a12q2efwe, char a12eqdsf(完全随机)的输入,并且树在解释器中看起来很好,唯一的问题是args有四个分支而不是3,typedident,逗号,typedident,然后是最后一个中的错误.

任何帮助将不胜感激.

谢谢.

java eclipse antlr

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

AVR中的AMQP/RabbitMQ发送者(Arduino)

AVR/Arduino上是否实现了AMQP消息发送方?

  • 鉴于ATmega328的可用空间有限,这是否可行?
  • 我不是在寻找一个完整的实现.只是一个简单的"发送消息".接收消息也很不错,但并不重要.

avr arduino amqp rabbitmq

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

ViewPager + Fragments - 片段未显示

我试图使用viewpager来显示几个片段.目前我只有一个片段,但它似乎永远不会被实例化.我尝试使用pager.setCurrentItem(0),但永远不会调用适配器中的getItem方法.有谁知道为什么我的片段没有加载到下面的代码?

主要活动

public class MainActivity extends SherlockFragmentActivity {

MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );
    setContentView( R.layout.activity_main );

    // Create the FragmentPager Adapter and assign it to the viewpager
    adapter = new MyPagerAdapter( getSupportFragmentManager(), this );
    ViewPager pager = ( ViewPager ) findViewById( R.id.pager );
    pager.setAdapter( adapter );
    pager.setCurrentItem( 0 );

    // Setup the tab page indicator
    TabPageIndicator indicator = ( TabPageIndicator ) findViewById( R.id.indicator );
    indicator.setViewPager( pager );
}

class MyPagerAdapter extends FragmentStatePagerAdapter {
    private …
Run Code Online (Sandbox Code Playgroud)

android android-fragments actionbarsherlock

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

在xtext eclipse的大纲视图中删除<unnamed>字段

我最近开始研究eclipse.在eclipse xtext中,我的语法是:

regGrp:
    reg_type=reg_type1 "{" reg_definition+=reg_definition1+ "}"
    ;

reg_type1 :
    name="CONTROL_REGISTERS"
    ;

reg_definition1:
    name=ID '[' regSize=INT ']''{' (regFieldssss=regFieldsdefRule) '}'
    ;

regFieldsdefRule:
    name="DESCRIPTION" '=' descStr=STRING ';'
    ;
Run Code Online (Sandbox Code Playgroud)

然后在final.sts文件中的Run_as - > Eclipse_application之后,我可以编写一个代码:

CONTROL_REGISTERS {
    reg [5] { 
        DESCRIPTION = "register" ;
    }
}
Run Code Online (Sandbox Code Playgroud)

在大纲视图中,我将获得如下树:

         ->final
           -> <unnamed>
             -> <unnamed>
               CONTROL_REGISTERS
             -> reg
               -> <unnamed>
                  DESCRIPTION
Run Code Online (Sandbox Code Playgroud)

我想删除大纲树中的那些字段.最后,大纲树应该类似于:

                ->final
                  ->CONTROL_REGISTERS
                    ->reg
                      ->DESCRIPTION
Run Code Online (Sandbox Code Playgroud)

请有人告诉我如何实现这个?

eclipse eclipse-plugin xtext m2eclipse

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

如何将字节流转换为UTF-8字符?

我需要将字节流转换为UTF-8字符行.在这一行中对我来说唯一重要的角色是最后一个.这种转换应该在一个周期内进行,因此性能非常重要.一种简单而低效的方法是:

public class Foo {
  private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  void next(byte input) {
    this.buffer.write(input);
    String text = this.buffer.toString("UTF-8"); // this is time consuming
    if (text.charAt(text.length() - 1) == THE_CHAR_WE_ARE_WAITING_FOR) {
      System.out.println("hurray!");
      this.buffer.reset();
    }   
  }
}
Run Code Online (Sandbox Code Playgroud)

字节数组到字符串的转换发生在每个输入字节上,据我所知,这是非常无效的.是否有可能以其他方式保留前一周期的字节到文本转换结果?

java utf-8 character-encoding

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

git log --pretty=format windows 奇怪的行为

我将问题简化到最低限度。Linux下的git命令如下:

git log --pretty=format:{"commit":"%H"}
Run Code Online (Sandbox Code Playgroud)

给我一个有效的 json 元素,比如:

{"commit":"20cafdecc9898113ac6215ae70cd7622dc2cae3b"}
Run Code Online (Sandbox Code Playgroud)

在 Windows 下,我获得了一个无效的 json 元素,因为在某种程度上,Windows 似乎删除了双引号元素,我获得:

{commit:20cafdecc9898113ac6215ae70cd7622dc2cae3b}
Run Code Online (Sandbox Code Playgroud)

您知道为什么吗?或者我该如何修复它,使其在两个操作系统下都可以工作?谢谢你!

git json cmd git-log

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