当我使用Mongodb和Java时,我想在客户端生成Object id.但是,在插入记录之前,我必须首先查询mongodb以确保ObjectId()方法生成的id是唯一的.有没有办法我可以生成唯一的对象ID而无需访问mongodb两次?
我正在制作放大镜应用程序,允许用户触摸屏幕并移动他的手指,将有一个放大镜与他的手指路径.我通过截屏实现它并将图像分配给放大镜图像视图,如下所示:
CGSize imageSize = frame.size;
UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextScaleCTM(c, scaleFactor, scaleFactor);
CGContextConcatCTM(c, CGAffineTransformMakeTranslation(-frame.origin.x, -frame.origin.y));
[self.layer renderInContext:c];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenshot;
Run Code Online (Sandbox Code Playgroud)
问题是这个问题很self.layer renderInContext慢,因此用户在移动手指时感觉不顺畅.self.layer renderInContext然而,我试图在其他线程中运行,它使放大镜图像看起来很奇怪,因为放大镜中的图像显示延迟.
有没有更好的方法将视图渲染成图像?确实renderInContext:使用GPU?
任务是计算输入文件中的字数.
输入文件每行8个字符,有10M行,例如:
aaaaaaaa
bbbbbbbb
aaaaaaaa
abcabcab
bbbbbbbb
...
Run Code Online (Sandbox Code Playgroud)
输出是:
aaaaaaaa 2
abcabcab 1
bbbbbbbb 2
...
Run Code Online (Sandbox Code Playgroud)
如果我将所有单词加载到内存中,它将需要80MB内存,但在os系统中只有60MB,我可以用它来执行此任务.那么我该如何解决这个问题呢?
我的算法是使用map<String,Integer>,但jvm在线程"main"中抛出异常java.lang.OutOfMemoryError:Java堆空间.我知道我可以通过设置-Xmx1024m来解决这个问题,但是我想用更少的内存来解决它.
我使用以下代码创建UILabel并CATextLayer在我的应用程序中
- (void)viewDidLoad
{
[super viewDidLoad];
self.textLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 90, 20, 20)];
self.textLabel.text = @"1";
self.textLabel.font = [UIFont systemFontOfSize:12];
self.textLabel.backgroundColor = [UIColor redColor];
[self.view addSubview:self.textLabel];
self.textLayer = [CATextLayer layer];
[self.textLayer setString:@"1"];
[self.textLayer setFont:(__bridge CFTypeRef)([UIFont systemFontOfSize:12])];
self.textLayer.backgroundColor = [UIColor greenColor].CGColor;
self.textLayer.frame = CGRectMake(70, 90, 50, 20);
[self.view.layer addSublayer:self.textLayer];
}
Run Code Online (Sandbox Code Playgroud)
结果是

红色的是UILabel,绿色的是CALayer. I want to know how to vertical align the text inCALayer , as theUILabel`显示.
当我将一个List插入mongodb时,有一个问题:
Exception in thread "main" java.lang.IllegalArgumentException: can't serialize class mongodb.Person
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:234)
at org.bson.BasicBSONEncoder.putIterable(BasicBSONEncoder.java:259)
at org.bson.BasicBSONEncoder._putObjectField(BasicBSONEncoder.java:198)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:140)
at org.bson.BasicBSONEncoder.putObject(BasicBSONEncoder.java:86)
at com.mongodb.DefaultDBEncoder.writeObject(DefaultDBEncoder.java:27)
at com.mongodb.OutMessage.putObject(OutMessage.java:142)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:252)
at com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:211)
at com.mongodb.DBCollection.insert(DBCollection.java:57)
at com.mongodb.DBCollection.insert(DBCollection.java:87)
at com.mongodb.DBCollection.save(DBCollection.java:716)
at com.mongodb.DBCollection.save(DBCollection.java:691)
at mongodb.MongoDB.main(MongoDB.java:45)
Run Code Online (Sandbox Code Playgroud)
Person类定义如下:
class Person{
private String name;
public Person(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
该计划是:
DBCollection coll = db.getCollection("test");
DBObject record = new BasicDBObject();
List<Person> persons= …Run Code Online (Sandbox Code Playgroud) 基本上,我只在我的应用程序中使用了一个moc,但我认为在某些情况下我应该使用多个NSManagedObjectContext.
我想知道是否有任何方法来渲染图像的视图?就像截图一样,但我可以为该方法指定任何视图.我知道如何在ios中做到这一点.保存视图内容,但是如何在mac os中完成?
我正在使用动画师来实现动画,比如
[[self.view animator] setFrame:newFrame];
Run Code Online (Sandbox Code Playgroud)
但是我希望在动画完成后运行一个方法或块,如下所示:
[[self.view animator] setFrame:newFrame onComplete:^{
NSLog(@"****");
}];
Run Code Online (Sandbox Code Playgroud)
有没有办法实现它?

我创建了一个CGPath区域,如图所示的绿色圆圈.该CGPath区需要明确,并且图像的其余部分将被应用模糊或半透明的效果,我可以剪辑图像内CGPath与下面的代码:
UIGraphicsBeginImageContext(view.frame.size);
CGContextAddPath(ctx, path);
CGContextClip(ctx);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *clipImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(clipImage, nil, nil, nil);
CGPathRelease(path);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何同时使用CGPath应用模糊或半透明效果.我想我可以模糊原始图像并将其与剪辑图像合并,但我不知道如何实现它.
使用Objective-C文档的Apple Programming声明:
您应该始终直接从初始化方法中访问实例变量,因为在设置属性时,对象的其余部分可能尚未完全初始化.即使您不提供自定义访问器方法或从您自己的类中知道任何副作用,未来的子类也可以很好地覆盖该行为.
但是我不知道setter方法会有什么副作用,请举个例子来解释为什么我必须直接从初始化方法中访问实例变量
ios ×5
java ×3
calayer ×2
cocoa ×2
macos ×2
mongodb ×2
algorithm ×1
catextlayer ×1
cocoa-touch ×1
core-data ×1
ios6 ×1
mongo-java ×1
objective-c ×1
uiimage ×1
uilabel ×1
uiview ×1