小编nyb*_*bon的帖子

Java FileReader编码问题

我试图使用java.io.FileReader读取一些文本文件并将它们转换为字符串,但我发现结果编码错误,根本不可读.

这是我的环境:

  • Windows 2003,操作系统编码:CP1252

  • Java 5.0

我的文件是UTF-8编码或CP1252编码,其中一些(UTF-8编码文件)可能包含中文(非拉丁文)字符.

我使用以下代码来完成我的工作:

   private static String readFileAsString(String filePath)
    throws java.io.IOException{
        StringBuffer fileData = new StringBuffer(1000);
        FileReader reader = new FileReader(filePath);
        //System.out.println(reader.getEncoding());
        BufferedReader reader = new BufferedReader(reader);
        char[] buf = new char[1024];
        int numRead=0;
        while((numRead=reader.read(buf)) != -1){
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
        }
        reader.close();
        return fileData.toString();
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用.我发现即使文本是UTF-8编码,FileReader的编码也是CP1252.但是java.io.FileReader的JavaDoc说:

此类的构造函数假定默认字符编码和默认字节缓冲区大小是适当的.

这是否意味着如果我使用FileReader,我不需要自己设置字符编码?但我目前确实得到了错误的编码数据,处理我的问题的正确方法是什么?谢谢.

java unicode encoding file

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

Clojure中序列和集合之间的区别是什么

我是一名Java程序员,也是Clojure的新手.从不同的地方,我看到序列和集合在不同的情况下使用.但是,我不知道他们之间究竟有什么区别.

举个例子:

1)在Clojure的序列文档中:

The Seq interface
(first coll)
  Returns the first item in the collection. 
  Calls seq on its argument. If coll is nil, returns nil.
(rest coll)
  Returns a sequence of the items after the first. Calls seq on its argument. 
  If there are no more items, returns a logical sequence for which seq returns nil.
(cons item seq)
  Returns a new seq where item is the first element and seq is the rest.
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,在描述Seq接口时,前两个函数(first/rest)使用coll,这似乎表明这是一个集合,而 …

collections abstraction clojure

31
推荐指数
5
解决办法
5785
查看次数

获取Java应用程序服务器名称和版本

我正在使用Java编写Web应用程序,并且可以将此WAR应用程序部署到不同的应用程序服务器,例如Tomcat/JBoss/Jetty/Weblogic.

出于诊断目的,我想实现一个动态网页来收集各种环境/系统信息,以便客户可以将这些信息提供给支持工程师进行诊断.

一条信息是有用的是应用程序服务器的名称和版本,此应用程序部署到,如Tomcat 7.0,JBoss 5.1.0,Glassfish 3.0,等.

我只是想知道是否有任何标准方法从不同的JEE应用程序服务器检索应用程序服务器的名称和版本.

java servlets web

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

多模块Maven项目中的log4j配置文件

我正在研究一个多模块Maven项目,其结构如下:

war-module
jar-module
Run Code Online (Sandbox Code Playgroud)

war-module依赖于jar模块,并在打包后将jar工件添加到webapp的lib目录中.

war-module和jar-module都使用Apache log4j进行日志记录,并共享同一个log4j配置文件(log4j.xml),该文件目前位于jar-module项目中.并且这个log4j.xml将被打包到jar-module.jar文件中,但是,我想把它放到war包中的WEB-INF/classes目录而不是jar文件中,以便用户很容易找到这个配置文件并在必要时进行修改(如果此文件位于WEB-INF/lib/jar-module.jar中,则很难找到它,因为该目录下有许多其他jar).

我的问题是:Maven解决这个问题的方法是什么?

更新:

我的真实项目有点复杂,而且还有一个依赖于jar模块的ear-module(也就是说.jar-module可以在几个不同的项目中独立使用,而且我不能把文件置于战争中 - module/src/main/resources目录来解决这个问题).我不希望在几个项目中复制一些配置文件,如log4j.xml(以及其他配置文件,如myapp.properties).

java maven-2 packaging maven

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

如何轻松制作iPhone发布图像?

根据Apple的指南,iPhone应用程序的启动图像/启动画面应该是一个预渲染的静态图像,看起来类似于应用程序的第一个屏幕.

以下是Apple有关此文档的一些链接:

1)启动图像,iOS人机界面指南:

https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW5

2)应用程序启动(默认)图像,iOS应用程序编程指南:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/App-RelatedResources/App-RelatedResources.html#//apple_ref/doc/uid/TP40007072-CH6-SW12

我只是想知道如何轻松创建这样的启动图像.在大多数情况下,似乎启动图像应该是空状态栏+导航栏+空表/视图+标签栏的组合,并且每个应该使用iOS的预定义颜色方案进行渲染.

但我找不到任何关于我应该怎么做的文档,也找不到与Xcode相关的任何条目.是否有Apple的官方工具可以轻松渲染启动图像?或者所有的应用程序开发人员只是使用一些模型iPhone控件+ Photoshop来做到这一点?

任何帮助表示赞赏.谢谢.

iphone xcode splash-screen ios

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

在Swift初始化期间调用实例方法

我是Swift的新手,想要使用像这样的实例方法初始化对象的成员变量:

class MyClass {
  var x: String
  var y: String

  func createY() -> String {
    self.y = self.x + "_test" // this computation could be much more complex
  }

  init(x: String) {
    self.x = x
    self.y = self.createY()
  }     
}
Run Code Online (Sandbox Code Playgroud)

基本上,而不是内联所有的初始化代码init的方法,我想的初始化代码提取y到一个专门的方法createY,并调用这个实例方法createYinit.但是,Swift编译器(Xcode 6.3 beta中的Swift 1.2编译器)抱怨:

在super.init初始化self之前,在方法调用'xxx'中使用'self'

这里'xxx'是实例方法(createY)的名称.

我可以理解Swift编译器正在抱怨什么以及它想要解决的潜在问题.但是,我不知道如何解决它.什么应该是Swift中调用初始化代码的其他实例方法的正确方法init

目前,我使用以下技巧作为解决方法,但我不认为这是解决这个问题的惯用方法(这个解决方法需要y声明使用var而不是let让我感到不安):

init(x: String) {
  self.x = x
  super.init()
  self.y = createY()
} 
Run Code Online (Sandbox Code Playgroud)

任何评论表示赞赏.谢谢.

constructor initialization ios swift

14
推荐指数
2
解决办法
6706
查看次数

Minikube在创建容器时卡住了

我最近开始在Mac上本地使用Minikube学习Kubernetes.以前,我能够使用Minikube 0.10.0启动本地Kubernetes集群,创建部署并查看Kubernetes仪表板.

昨天我试图删除集群并从头开始重新做一切.但是,我发现无法部署资产,无法查看仪表板.从我看到的情况来看,在容器创建期间,一切似乎都被卡住了.

跑完之后minikube start,据报道

Starting local Kubernetes cluster...
Kubectl is now configured to use the cluster.
Run Code Online (Sandbox Code Playgroud)

当我跑kubectl get pods --all-namespaces,它报告(注意STATUS列):

kubectl get pods --all-namespaces
NAMESPACE     NAME                          READY     STATUS              RESTARTS   AGE
kube-system   kube-addon-manager-minikube   0/1       ContainerCreating   0          51s
Run Code Online (Sandbox Code Playgroud)

docker ps 没有显示:

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

minikube status 告诉我VM和集群正在运行:

minikubeVM: Running
localkube: Running
Run Code Online (Sandbox Code Playgroud)

如果我尝试创建部署和自动规划器,我被告知它们已成功创建:

kubectl create -f configs
deployment "hello-minikube" created
horizontalpodautoscaler "hello-minikube-autoscaler" created

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                             READY …
Run Code Online (Sandbox Code Playgroud)

kubernetes minikube

12
推荐指数
2
解决办法
9076
查看次数

类初始化和同步类方法

在我的应用程序中,有一个类如下:

public class Client {
    public synchronized static print() {
        System.out.println("hello");
    }

    static {
        doSomething(); // which will take some time to complete
    }
}
Run Code Online (Sandbox Code Playgroud)

此类将在多线程环境中使用,许多线程可以同时调用Client.print()方法.我想知道线程1是否有可能触发类初始化,并且在类初始化完成之前,thread-2进入print方法并打印出"hello"字符串?

我在生产系统(64位JVM + Windows 2008R2)中看到了这种行为,但是,我无法在任何环境中使用简单程序重现此行为.

在Java语言规范的第12.4.1节(http://java.sun.com/docs/books/jls/second_edition/html/execution.doc.html)中,它说:

类或接口类型T将在第一次出现以下任何一个之前立即初始化:

  • T是一个类,并且创建了T的实例.
  • T是一个类,并且调用由T声明的静态方法.
  • 分配由T声明的静态字段.
  • 使用由T声明的静态字段,对字段的引用不是编译时常量(第15.28节).编译时常量的引用必须在编译时解析为编译时常量值的副本,因此使用这样的字段永远不会导致初始化.

根据这一段,类初始化将在静态方法的调用之前进行,但是,不清楚是否需要在调用静态方法之前完成类初始化.根据我的直觉,JVM应该在进入静态方法之前完成类初始化,并且我的一些实验支持我的猜测.但是,我确实在另一个环境中看到了相反的行为.有人能否对我有所了解?

任何帮助表示赞赏,谢谢.

java concurrency multithreading synchronization

7
推荐指数
1
解决办法
1961
查看次数

clojure中的reduce-while函数?

我是Clojure编程的新手,想知道做以下事情的惯用方法是什么:

  1. 我想总结一组数字nums,其中可能包含大量数字,我们假设只有正数.

  2. 如果总和非常大,我不在乎确切的总和.例如,如果数字的总和大于9999,我只返回10000而不总计剩余的数字.

如果我用一些OO语言(如Java)实现它,我可以这样做:

private int sum(int[] nums) {
  int sum = 0;
  for(int n : nums) {
    if(sum > 9999) {
      sum = 10000;
      break;
    } else {
      sum += n;
    }
  }
  return sum;
}
Run Code Online (Sandbox Code Playgroud)

Clojure中的一个简单实现可能如下所示:

(let [sum (reduce + nums)]
   (if (> sum 9999) 10000 sum))
Run Code Online (Sandbox Code Playgroud)

但是,这似乎浪费了一些CPU资源来汇总整个数字集合,这是不希望的.我正在寻找像take-while函数但是为了减少,但找不到它.是否有类似的东西:

(reduce-while pred f val coll)
Run Code Online (Sandbox Code Playgroud)

或者还有其他任何Clojure惯用方法来解决这个问题吗?我认为该解决方案可以应用于需要类似逻辑的一组问题.

任何评论表示赞赏.谢谢.

clojure

7
推荐指数
2
解决办法
1049
查看次数

我们如何在 Apache Arrow 中存储哈希表?

我对 Apache Arrow 很陌生,所以这个问题可能是无知的。Apache Arrow 提供了以标准化内存格式存储原始类型/结构/数组等数据结构的功能,我想知道是否可以使用 Apache Arrow 存储更复杂的数据结构,如哈希表(或平衡搜索树)?

许多算法依赖于这些数据结构来工作,在这种情况下,Apache Arrow 用户是否需要将箭头数据转换为特定于语言的数据结构?

apache-arrow

6
推荐指数
1
解决办法
822
查看次数