我想要一个实现接口的类,该接口指定特定的子类作为参数。
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而爆炸。那么,这种方法是错误的并且被破坏了,还是有一种正确的方法可以做到这一点,我不知何故错过了?
我想绘制一个实时更新的图表(从右边开始).我能想到的最有效的方法是将x [0 .. width-2]中的所有内容复制为1像素,然后在x [width-1]处绘制新值.
我对Android没什么经验,但据我所知,Canvas根本不会对它的内容进行操作.我每次都需要重画整个画面吗?这涉及缩放和平滑,所以我担心它会很慢.
我应该绘制一个字节[] []然后使用它绘制到屏幕上(每次移动我的缓冲区内容)?
这是我正在研究的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?
我正在进入微控制器黑客攻击,虽然我对按位运算符和硬件说话非常熟悉,但我发现结果代码非常冗长和样板.我的高级程序员希望找到一种有效但有效的方法来清理它.
例如,寄存器中有很多设置标志:
/* 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操作(左侧),所以它看起来像一个简单的赋值.但对我来说,所有这些语法都是混乱的.
要求是:
我想要的语法是:
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) 我正在尝试确定用于确定具有非唯一选择的无序组合的数量的函数.
鉴于:
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)
我知道排列的公式(无序,唯一选择),但我无法弄清楚允许重复如何增加集合.
以下屏幕截图说明了我现在拥有的一个简单示例:

我想要实现的是,所选的(蓝色)视图不会被剪裁在红色容器的边界.我的第一次尝试是clipChildren ="false",这导致蓝色视图扩展到其边界之外,填充红色区域.我只想看到绿色区域覆盖的部分.
我想播放视频,以及使用adobe air显示图像和可能的其他flash内容,以及从本地文件系统读取.我一直在寻找API,我还没有能够连接点.
我知道flash.filesystem.File和flash.filesystem.FileStream并且已经尝试过加载和读取文件.我相信我可以用这种方式加载图像,但还没试过.
至于视频:
mx.controls.VideoDisplay - 似乎接受了一个文件://源的URI,但是我无法让它工作.
flash.media.Video - 接受NetStream或者可以直接从视频输入加载视频,似乎找不到引用本地文件的方法
有人可以帮我从这里出去吗?我特别希望直接从本地磁盘加载和播放视频,而不是从Web服务器或流式文件服务器...假设没有网络连接.
稍微相关的问题:从本地文件系统加载视频...(但我的问题不涉及Web浏览器)
我继承了一些代码,并在尝试运行时遇到错误.错误如下:
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关键字吗?
注意:请不要只使用Adobe AIR回答".我知道它,并不适用于这种情况.
我一直在审查Gecko Plugin API参考.
我假设我必须实现所有必需的浏览器端功能.我的目标是能够以较低级别访问Flash的图形输出,以便将它们与其他本机代码集成到应用程序中.Adobe AIR是未来的可能性,但该项目的性能还远不够好.
有谁知道一个充当NPAPI插件主机的开源项目?我想替代方案是从WebKit等中提取必要的位.
我正在学习使用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) 我知道使用-target 1.6(使用-source 1.6时需要)更改类文件格式.但是,源选项是否专门更改了任何内容或启用了任何新功能?
我正在构建一个专门用于输入和编辑时间的文本输入字段.功能的一部分要求各种方式关注时间的不同组成部分(小时,分钟,秒),我通过文本选择指出.使用鼠标可以直接选择,这很有效.另一个功能是键盘导航.
大多数此功能依赖于我能够处理keyPress事件,抑制默认行为并替换特殊操作的事实.
在Firefox中,我的工作很好.用户可以使用左/右箭头键或tab/shift-tab在部分时间之间移动(当它们到达结尾时,下一个tab键将离开该字段并正常聚焦下一个元素).
在Internet Explorer 7(可能是其他人?)中,按键处理程序甚至都没有接收到箭头键和选项卡.如果按下箭头键,则文本选择将丢失,光标将移动1.提供多个字段的效果消失,导致控制感破裂.Tab似乎也跳过了处理程序,只是立即翻转到下一个可聚焦元素.
拦截这些钥匙有什么技巧吗?
java ×3
android ×2
c ×2
flash ×2
actionscript ×1
air ×1
apache-flex ×1
assembly ×1
avr ×1
avr-gcc ×1
canvas ×1
clipping ×1
dom ×1
dom-events ×1
generics ×1
glib ×1
javascript ×1
layout ×1
macros ×1
math ×1
npapi ×1
optimization ×1
plugins ×1
unix ×1
views ×1