小编Pri*_*ine的帖子

Java并发:CAS与锁定

我正在阅读Book Java Concurrency in Practice.在第15章中,他们讨论的是非阻塞算法和比较交换(CAS)方法.

据说CAS比锁定方法表现更好.我想问那些已经使用过这两个概念的人,并希望听到你何时更喜欢这些概念中的哪一个?它真的快得多吗?

对我来说,锁的使用更清晰,更容易理解,甚至可能更好维护(如果我错了,请纠正我).我们是否应该专注于创建与CAS相关的并发代码而不是锁定以获得更好的性能提升或者可持续性更重要?

我知道在使用什么时可能没有严格的规定.但我只是想听听CAS新概念的一些看法和经验.

java concurrency locking compare-and-swap

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

更改UINavigationBar背景图像

我一直在尝试更改我的应用程序的UINavigationBar的背景图像.我尝试了几种方法.首先,我在AppDelegate类中添加了以下代码:

@implementation UINavigationBar (CustomImage)
    - (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navigationbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
Run Code Online (Sandbox Code Playgroud)

但它没有用.我的下一个尝试是编写一个覆盖drawRect方法的CustomizedNavigationBar类.它看起来像那样:

CustomizedNavigationBar.h

#import <UIKit/UIKit.h>

@interface CustomizedNavigationBar : UINavigationBar

@end
Run Code Online (Sandbox Code Playgroud)

CustomizedNavigationBar.m

#import "CustomizedNavigationBar.h"

@implementation CustomizedNavigationBar

- (void) drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed: @"navigationbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

    NSLog(@"I got called!!!!!");
}

@end
Run Code Online (Sandbox Code Playgroud)

在我定义NavigationBar的.xib文件中,我将类更改为新的CustomizedNavigationBar.但它仍然无法正常工作..

作为另一个测试,我下载了一个示例项目,其中应该更改背景图像.但即使使用该示例代码也无法正常工作.

我究竟做错了什么?我正在使用IOS 5.我可以定义背景图像的任何建议或其他方式吗?

谢谢你的回答!

iphone uinavigationbar uinavigationcontroller ios

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

泛型在Swift中使用Type T调用

在我的应用程序中,我想创建一个泛型方法,它创建一个取决于给定类型T的对象数组.

我创建了以下功能:

func getArray<T : ROJSONObject>(key:String) -> T[] {
    var elements = T[]()

    for jsonValue in getValue(key).array! {
        var element = T()

        element.jsonData = jsonValue
        elements.append(element)
    }

    return elements
}
Run Code Online (Sandbox Code Playgroud)

现在我想在调用方法时传递类型,因此它确实知道它应该在内部创建哪种类型.我认为在Java和C#中你可以使用这样的方法:

object.getArray<Document>("key")
Run Code Online (Sandbox Code Playgroud)

当我这样称呼它时,我总是得到错误:

Cannot explicitly specialize a generic function
Run Code Online (Sandbox Code Playgroud)

所以我的修复是定义一个包含类型T实例的附加参数,因此它会自动检测类型:

func getArray<T : ROJSONObject>(key:String, type:T) -> T[] {
    var elements = T[]()

    for jsonValue in getValue(key).array! {
        var element = T()

        element.jsonData = jsonValue
        elements.append(element)
    }

    return elements
}
Run Code Online (Sandbox Code Playgroud)

没有传递未使用的实例,是否真的没有其他方法可以获得该行为?还是我误解了什么?

进一步测试

在jtbandes的回答后,我做了一些测试.我试图通过as在调用中添加来强制Type .

class Person {

    init() { …
Run Code Online (Sandbox Code Playgroud)

generics type-inference swift

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

解析PDF时出现奇怪的空格

我需要解析PDF文档.我已经实现了解析器并使用了库iText,直到现在它都没有任何问题.

但是,我不需要解析另一个在单词中间会得到非常奇怪的空格的文档.作为例子,我得到:

Vo rber eitung auf die Motorr adsaison.Viele Motorr ADF AHR呃

所有大胆的单词都应该连接起来,但不知何故,PDF Parser会在单词中添加空格.但是当我将PDF中的内容复制并粘贴到文本文件中时,我得不到这些空格.

首先我认为这是因为我正在使用的PDF解析库,而且还有另一个库我得到了完全相同的问题.

singleSpaceWidth从解析过的单词中查看了一下,我发现当它添加一个空格时,它总是变化的.我试图将它们手动放在一起.但由于没有真正重新组合单词的模式,这几乎是不可能的.

是否有其他人有类似的问题,甚至解决了这个问题?

根据要求,这里有一些更多的信息:

使用SemTextExtractionStrategy进行解析:

PdfReader reader = new PdfReader("data/SpecialTests/SuedostSchweiz/" + src);

SemTextExtractionStrategy semTextExtractionStrategy = new SemTextExtractionStrategy();

for (int i = 1; i <= reader.getNumberOfPages(); i++) {
    // Set the page number on the strategy. Is used in the Parsing strategies.
    semTextExtractionStrategy.pageNumber = i;

    // Parse text from page
    PdfTextExtractor.getTextFromPage(reader, i, semTextExtractionStrategy);
}
Run Code Online (Sandbox Code Playgroud)

这里实际解析文本的SemTextExtractionStrategy方法.我在每个解析的单词之后手动添加一个空格,但不知何故它会在检测中拆分单词:

@Override
public void parseText(TextRenderInfo …
Run Code Online (Sandbox Code Playgroud)

java pdf whitespace itext pdf-parsing

9
推荐指数
2
解决办法
1906
查看次数

XcodeColors无法在XCode 5中运行

我试图XcodeColors在XCode 5中安装.但遗憾的是它不能使用我从XCode 4.6获得的旧插件.

下一步,我检查了github网站,在那里我看到了以下拉取请求,为XCode 5提供了一个工作版本:https: //github.com/mralexgray/XcodeColors

我已经下载了项目并在发布模式下运行它.但是XcodeColors插件目录中没有创建任何内容.

有没有人XcodeColors在XCode 5中有一个可用的插件?

debugging xcode logging plugins ios

8
推荐指数
1
解决办法
1967
查看次数

CocoaLumberjack与Swift - 调用预处理器宏

我开始使用新的编程语言Swift构建一个IOS应用程序.我设法使用CocoaPods并且能够在我的AppDelegate.swift中使用我的CustomLoggerFormatter(Objective-C)成功创建DDTTYLogger并将其附加到记录器.

var customLoggerFormatter = CustomLoggerFormatter()

var consoleLogger: DDTTYLogger = DDTTYLogger.sharedInstance()
consoleLogger.setLogFormatter(customLoggerFormatter)
DDLog.addLogger(consoleLogger)
Run Code Online (Sandbox Code Playgroud)

但问题是,CocoaLumberjack库正在使用预处理器宏来处理记录器方法DDLogVerbose(@"..")

这是在DDLog.h中定义的:

#define DDLogVerbose(frmt, ...) LOG_OBJC_MAYBE(LOG_ASYNC_VERBOSE, LOG_LEVEL_DEF, LOG_FLAG_VERBOSE, 0, frmt, ##__VA_ARGS__)
Run Code Online (Sandbox Code Playgroud)

是否有任何解决方法使预处理器定义在Swift中工作?或者有没有人尝试类似的东西更成功?

logging ios lumberjack swift

7
推荐指数
3
解决办法
6301
查看次数

使用枚举作为实现的容器

我目前正在开发一个项目,我们必须在3D环境中表示一组向量.我们有几种不同的可视化实现.

我想到了我可以将所有可视化类型捆绑在枚举中.我已经定义了一个Interface VectorVisualization和几个实现这个接口的实现.

现在我已经在Interface类中添加了以下枚举:

public interface VectorVisualization {

    public enum VectorVisualizationType {
       CYLINDER(new VectorVisualizationCylinder(), "Cylinder"),
       CONES(new VectorVisualizationCones(), "Cones"),
       FATCONES(new VectorVisualizationFatCones(), "Fat cones"),
       ARROWS(new VectorVisualizationArrows(), "Arrows");

       private final String label;
       private final VectorVisualization vis;

       VectorVisualizationType(VectorVisualization vis, String label) {
           this.vis = vis;
           this.label = label;
       }

       public VectorVisualization getVisualization() {
           return this.vis;
       }

       public String getLabel() {
           return this.label;
       }
   }

   void prepareVBO(GL gl, ArrayList<VectorData> vectors, VectorField field);
   void render(GL gl);
   void clearOldVBOS(GL gl);
}
Run Code Online (Sandbox Code Playgroud)

该标签适用于Gui中的JComboBox.所以我现在可以迭代枚举并获得不同类型的标签.另外要设置一个实现,我可以像这样使用枚举:

VectorVisualizationType.CYLINDER.getVisualization()
Run Code Online (Sandbox Code Playgroud)

但这是一个很好的方式吗?或者这种方法有什么问题吗?当然,现在当你创建一个新的实现时,你必须将它添加到枚举中.

感谢您的意见!

java oop enums design-patterns strategy-pattern

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

iText - 获取文本片段的字体大小和系列

我目前正在尝试从PDF文件中自动提取重要的关键字.我能够从PDF文档中获取文本信息.但现在我需要知道这些关键字具有哪种字体大小和字体系列.

我已经拥有以下代码:

主要

public static void main(String[] args) throws IOException {
    String src = "SEM_081145.pdf";

    PdfReader reader = new PdfReader(src);

    SemTextExtractionStrategy semTextExtractionStrategy = new SemTextExtractionStrategy();

    PrintWriter out = new PrintWriter(new FileOutputStream(src + ".txt"));
    Rectangle rect = new Rectangle(70, 80, 490, 580);
    RenderFilter filter = new RegionTextRenderFilter(rect);

    for (int i = 1; i <= reader.getNumberOfPages(); i++) {
        // strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
        out.println(PdfTextExtractor.getTextFromPage(reader, i, semTextExtractionStrategy));
    }
    out.flush();
    out.close();
}
Run Code Online (Sandbox Code Playgroud)

我已经实现了TextExtraction策略SemTextExtractionStrategy,如下所示:

public class SemTextExtractionStrategy implements TextExtractionStrategy {

private …
Run Code Online (Sandbox Code Playgroud)

java pdf text-extraction itext pdf-extraction

4
推荐指数
2
解决办法
9648
查看次数

PNG编码器 - 添加自己的过滤器实现

我目前正在开发自己的PNG过滤器.我使用神经网络尝试创建比当前现有PNG过滤器更好的预测:

  • 0 - 无
  • 1 - Sub
  • 2 - 向上
  • 3 - 平均
  • 4 - Paeth
  • 5 - 我的实施(使用神经网络预测)

有关详细信息,请访问:http://www.w3.org/TR/PNG/#9Filters

我已经看了几个库:

  • pngcrush (在c ..中实现)
  • 关键点 - PngEncoder (是我目前最喜欢的)
  • ObjectPlanet - PngEncoder (我必须为src支付1000美元..:P)

还有一些.但我现在的问题是,您是否知道其他一些PNG编码器(用Java编写),可以很容易地添加自己的过滤器实现,还是有其他可能使用我自己的过滤器?

非常感谢您的回答!

java compression graphics png javax.imageio

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

将包含变音符号的数据导出到Excel可读的.csv中

我在Mac OS X 10.8.2上使用Python 2.7.2.我需要写一个.csv文件,它通常包含几个像ä,ö和ü这样的"变形金刚".当我写.csv文件时,Numbers和Open Office都能正确读取csv并显示Umlauts而没有任何问题.

但是,如果我用Microsoft Excel 2004阅读它,那么单词显示如下:

TuÃàrlersee
Run Code Online (Sandbox Code Playgroud)

我知道,Excel在处理UTF-8时遇到了问题.我读到了2007年以下的Excel版本无法正确读取UTF-8文件的内容,即使您已经设置了UTF-8 BOM(字节顺序标记).我正在使用以下行设置UTF-8 BOM:

e.write(codecs.BOM_UTF8)
Run Code Online (Sandbox Code Playgroud)

所以我尝试下一步而不是将其作为UTF-8文件导出我想将字符编码设置为mac-roman.使用以下行我从utf-8解码了值并用mac-roman重新编码.

projectName = projectDict['ProjectName'].decode('utf-8').encode('mac-roman')
Run Code Online (Sandbox Code Playgroud)

但后来我收到以下错误:

UnicodeEncodeError: 'charmap' codec can't encode character u'\u0308' in position 6: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

如何将此数据导出到.csv中,Excel能够正确读取元音?Python内部处理UTF-8中的所有内容.或者我可能没有正确理解解码/编码.在Python 3.0中,他们已经调整了整个编码/解码模型,但我需要保留2.7.2版本.

我正在使用DictWriter:

w = csv.DictWriter(e, fieldnames=fieldnames, extrasaction='ignore', delimiter=';', quotechar='\"', quoting=csv.QUOTE_NONNUMERIC)
w.writeheader()
Run Code Online (Sandbox Code Playgroud)

python csv excel encoding utf-8

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