小编Fab*_*non的帖子

在运行时替换某些方法的内容

我想在运行时替换一些方法的内容.

我知道我可以使用javassist但它不起作用,因为我想要增强的类已经被系统classLoader加载.

我该怎么做,在运行时替换方法的内容?我应该尝试卸载课程吗?我怎样才能做到这一点 ?我看到它是可能的,但我无法弄清楚如何做到这一点.

如果可能的话,我想避免使用外部库,我想自己编写代码.

更多信息: - 我想要增强的类包含在一个框架中(在一个jar文件中) - 我的代码实际上是这个框架的一个插件 - 我的插件运行的框架有自己的classLoader,但是这个classLoader没有加载自己的类(它将它们委托给系统类加载器) - 我正在使用的框架是Play.

谢谢您的帮助 !

java runtime classloader javassist playframework

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

使用ios5播放视频和检索像素缓冲区

我想要的是播放视频(来自本地文件和远程URL)及其音轨并检索视频每帧的像素缓冲区以将其绘制为OpenGL纹理.

这是我在iOS 6中使用的代码(它工作正常):

发起视频

- (void) readMovie:(NSURL *)url {
    NSLog(@"Playing video %@", param.url);

    AVURLAsset * asset = [AVURLAsset URLAssetWithURL:url options:nil];
    [asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:@"tracks"] completionHandler:
     ^{
         dispatch_async(dispatch_get_main_queue(),
                        ^{
                            NSError* error = nil;
                            AVKeyValueStatus status = [asset statusOfValueForKey:@"tracks" error:&error];
                            if (status == AVKeyValueStatusLoaded) {
                                NSDictionary* settings = @{ (id)kCVPixelBufferPixelFormatTypeKey : [NSNumber numberWithInt:kCVPixelFormatType_32BGRA] };
                                AVPlayerItemVideoOutput* output = [[AVPlayerItemVideoOutput alloc] initWithPixelBufferAttributes:settings];
                                AVPlayerItem* playerItem = [AVPlayerItem playerItemWithAsset:asset];
                                [playerItem addOutput:output];
                                AVPlayer* player = [AVPlayer playerWithPlayerItem:playerItem];

                                [self setPlayer:player];
                                [self setPlayerItem:playerItem];
                                [self setOutput:output];

                                [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bufferingVideo:) name:AVPlayerItemPlaybackStalledNotification …
Run Code Online (Sandbox Code Playgroud)

avfoundation core-media ios ios5

6
推荐指数
0
解决办法
2651
查看次数

在DB中检索超过5分钟的元素

我正在使用播放框架版本1.2.5,我想检索所有未更新其会话5分钟的连接用户,然后我想将其连接状态设置为"已断开连接".

这是我的模型:

@Entity
public class User extends Model {

    @Required
    public String name;

    public boolean isConnected;

    public Date lastConnectionDate;

}
Run Code Online (Sandbox Code Playgroud)

以下是更新用户的Job:

Date fiveMinsAgo = new Date(new Date().getTime() - 5 * 60);
List<User> list = User.find("select u from User u where u.isConnected = true and u.lastConnectionDate < ?", fiveMinsAgo).fetch();

for (User user : list) {
    // We set these accounts as disconnected
    user.isConnected = false;
    user.save();
}
Run Code Online (Sandbox Code Playgroud)

这段代码似乎不起作用.即使用户的lastConnectionDate不早于5分钟,用户也会设置为"已断开连接" .我做错什么了吗 ?

有没有更好的方法/代码来做我想做的事情?(比如UPDATE命令)

谢谢您的帮助

java

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