小编Mar*_*ouf的帖子

通用类型参数哪个具体扩展类?

我想要一个实现接口的类,该接口指定特定的子类作为参数。

public abstract Task implements TaskStatus<Task> {
  TaskStatus<T> listener;

  protected complete() {
      // ugly, unsafe cast
      callback.complete((T) this);
  }
}

public interface TaskStatus<T> {
   public void complete(T task);
}
Run Code Online (Sandbox Code Playgroud)

但我想保证使用的 type-arg 不仅仅是任务或 ,而是扩展该类的特定类的类型参数。

所以我想出的最好的办法是:

public abstract Task<T extends Task> implements TaskStatus<T> {
}
Run Code Online (Sandbox Code Playgroud)

你可以通过写来扩展它:

public class MyTask extends Task<MyTask> {
}
Run Code Online (Sandbox Code Playgroud)

但这也是有效的:

public class MyTask extends Task<SomeOtherTask> {
}
Run Code Online (Sandbox Code Playgroud)

并且回调的调用将会因ClassCastException而爆炸。那么,这种方法是错误的并且被破坏了,还是有一种正确的方法可以做到这一点,我不知何故错过了?

java generics design-patterns

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

Android:有效地滚动画布的内容?

我想绘制一个实时更新的图表(从右边开始).我能想到的最有效的方法是将x [0 .. width-2]中的所有内容复制为1像素,然后在x [width-1]处绘制新值.

我对Android没什么经验,但据我所知,Canvas根本不会对它的内容进行操作.我每次都需要重画整个画面吗?这涉及缩放和平滑,所以我担心它会很慢.

我应该绘制一个字节[] []然后使用它绘制到屏幕上(每次移动我的缓冲区内容)?

android canvas

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

为什么这个代码是由avr-gcc生成的,它是如何工作的?

这是我正在研究的C项目的反汇编AVR代码片段.我注意到这个好奇的代码正在生成,我无法理解它是如何工作的.我假设这是一种荒谬的优化......

解释是什么?

92:         ticks++;         // unsigned char ticks;
+0000009F:   91900104    LDS       R25,0x0104     Load direct from data space
+000000A1:   5F9F        SUBI      R25,0xFF       Subtract immediate
+000000A2:   93900104    STS       0x0104,R25     Store direct to data space
95:         if (ticks == 0) {
+000000A4:   2399        TST       R25            Test for Zero or Minus
+000000A5:   F009        BREQ      PC+0x02        Branch if equal
+000000A6:   C067        RJMP      PC+0x0068      Relative jump
Run Code Online (Sandbox Code Playgroud)

具体来说,为什么第二条指令从R25中减去0xFF而不仅仅是INC R25

compiler-construction optimization assembly avr avr-gcc

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

AC预处理器宏将位域打包成一个字节?

我正在进入微控制器黑客攻击,虽然我对按位运算符和硬件说话非常熟悉,但我发现结果代码非常冗长和样板.我的高级程序员希望找到一种有效但有效的方法来清理它.

例如,寄存器中有很多设置标志:

/* Provided by the compiler */
#define SPIE 7
#define SPE 6
#define DORD 5
#define MSTR 5
#define CPOL 4
#define CPHA 3

void init_spi() {
  SPCR = (1 << SPE) | (1 << SPIE) | (1 << MSTR) | (1 << SPI2X);      
}
Run Code Online (Sandbox Code Playgroud)

值得庆幸的是,有些宏隐藏了实际的端口IO操作(左侧),所以它看起来像一个简单的赋值.但对我来说,所有这些语法都是混乱的.

要求是:

  • 它只需要处理多达8位,
  • 位位置必须能够以任何顺序传递,并且
  • 应该只需要传递设置位.

我想要的语法是:

SPCR =位(SPE,SPIE,MSTR,SPI2X);

到目前为止,我提出的最好的是组合宏/函数:

#define bits(...) __pack_bits(__VA_ARGS__, -1)

uint8_t __pack_bits(uint8_t bit, ...) {
    uint8_t result = 0;
    va_list args;
    va_start(args, bit);

    result |= (uint8_t) (1 << bit);

    for …
Run Code Online (Sandbox Code Playgroud)

c macros bit-manipulation c-preprocessor

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

用于确定具有非unqiue选择的无序组合的数量的函数

我正在尝试确定用于确定具有非唯一选择的无序组合的数量的函数.

鉴于:

n = number of unique symbols to select from
r = number of choices
Run Code Online (Sandbox Code Playgroud)

示例...对于n = 3,r = 3,结果将是:(编辑:添加由Dav指出的缺失值)

000
001
002
011
012
022
111
112
122
222
Run Code Online (Sandbox Code Playgroud)

我知道排列的公式(无序,唯一选择),但我无法弄清楚允许重复如何增加集合.

language-agnostic math combinatorics

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

允许单个子视图溢出视图组边界的方法?

以下屏幕截图说明了我现在拥有的一个简单示例:

在此输入图像描述

我想要实现的是,所选的(蓝色)视图不会被剪裁在红色容器的边界.我的第一次尝试是clipChildren ="false",这导致蓝色视图扩展到边界之外,填充红色区域.我只想看到绿色区域覆盖的部分.

layout android views clipping

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

使用Adobe AIR从本地文件播放视频

我想播放视频,以及使用adobe air显示图像和可能的其他flash内容,以及从本地文件系统读取.我一直在寻找API,我还没有能够连接点.

我知道flash.filesystem.Fileflash.filesystem.FileStream并且已经尝试过加载和读取文件.我相信我可以用这种方式加载图像,但还没试过.

至于视频:

mx.controls.VideoDisplay - 似乎接受了一个文件://源的URI,但是我无法让它工作.

flash.media.Video - 接受NetStream或者可以直接从视频输入加载视频,似乎找不到引用本地文件的方法

有人可以帮我从这里出去吗?我特别希望直接从本地磁盘加载和播放视频,而不是从Web服务器或流式文件服务器...假设没有网络连接.

稍微相关的问题:从本地文件系统加载视频...(但我的问题不涉及Web浏览器)

apache-flex air flash actionscript

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

java.lang.IllegalArgumentException:setAttribute:非可序列化属性

我继承了一些代码,并在尝试运行时遇到错误.错误如下:

10:08:32,093 ERROR [MyServlet]:260 - Servlet.service() for servlet MyServlet threw exception
java.lang.IllegalArgumentException: setAttribute: Non-serializable attribute
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1270)
at org.apache.catalina.session.StandardSession.setAttribute(StandardSession.java:1248)
at org.apache.catalina.session.StandardSessionFacade.setAttribute(StandardSessionFacade.java:130)
at uk.co.my.servlet.MyServlet.doPost(MyServlet.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at com.my.ddi.security.SecurityContextServletFilter.doFilter(SecurityContextServletFilter.java:55)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:835)
at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
at java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

我想主要的问题是它在uk.co.my.servlet.MyServlet.doPost(MyServlet.java:172)上击中了我的代码.MyServlet的第121行是session.setAttribute("LISTENER",myListener);

此myListener对象来自以下类:

public class myListener {
    static Log log = LogFactory.getLog(TerminationListener.class.getName());
    private boolean shouldCancel = false;
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能摆脱这个错误?我需要使用transient关键字吗?

java

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

使用NPAPI在自定义桌面应用程序中嵌入闪存?

注意:请不要只使用Adobe AIR回答".我知道它,并不适用于这种情况.

我一直在审查Gecko Plugin API参考.

我假设我必须实现所有必需的浏览器端功能.我的目标是能够以较低级别访问Flash的图形输出,以便将它们与其他本机代码集成到应用程序中.Adobe AIR是未来的可能性,但该项目的性能还远不够好.

有谁知道一个充当NPAPI插件主机的开源项目?我想替代方案是从WebKit等中提取必要的位.

flash plugins npapi

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

需要帮助使用GIOService(GLib,Glib-GIO)实现简单的套接字服务器

我正在学习使用GLib编写简单,高效的套接字服务器的基础知识.我正在尝试使用GSocketService.到目前为止,我似乎只能接受连接,但随后他们立即关闭.从文档中我无法弄清楚我错过了哪一步.我希望有人可以为我揭开这一点.

运行以下内容时:

# telnet localhost 4000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
# telnet localhost 4000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
# telnet localhost 4000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

服务器输出:

# ./server
New Connection from 127.0.0.1:36962
New Connection from 127.0.0.1:36963
New Connection from 127.0.0.1:36965
Run Code Online (Sandbox Code Playgroud)

当前代码:

/*
 * server.c
 *
 *  Created on: Mar …
Run Code Online (Sandbox Code Playgroud)

c unix glib

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

在JDK 1.6编译器中,"-source 1.6"启用了什么,如果有的话?

我知道使用-target 1.6(使用-source 1.6时需要)更改类文件格式.但是,源选项是否专门更改了任何内容或启用了任何新功能?

java compiler-construction

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

为什么在某些浏览器中输入字段的onkeypress处理程序没有收到箭头键,选项卡等?

我正在构建一个专门用于输入和编辑时间的文本输入字段.功能的一部分要求各种方式关注时间的不同组成部分(小时,分钟,秒),我通过文本选择指出.使用鼠标可以直接选择,这很有效.另一个功能是键盘导航.

大多数此功能依赖于我能够处理keyPress事件,抑制默认行为并替换特殊操作的事实.

在Firefox中,我的工作很好.用户可以使用左/右箭头键或tab/shift-tab在部分时间之间移动(当它们到达结尾时,下一个tab键将离开该字段并正常聚焦下一个元素).

在Internet Explorer 7(可能是其他人?)中,按键处理程序甚至都没有接收到箭头键和选项卡.如果按下箭头键,则文本选择将丢失,光标将移动1.提供多个字段的效果消失,导致控制感破裂.Tab似乎也跳过了处理程序,只是立即翻转到下一个可聚焦元素.

拦截这些钥匙有什么技巧吗?

javascript internet-explorer dom cross-browser dom-events

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