我试图使用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程序员,也是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,这似乎表明这是一个集合,而 …
我正在使用Java编写Web应用程序,并且可以将此WAR应用程序部署到不同的应用程序服务器,例如Tomcat/JBoss/Jetty/Weblogic.
出于诊断目的,我想实现一个动态网页来收集各种环境/系统信息,以便客户可以将这些信息提供给支持工程师进行诊断.
一条信息是有用的是应用程序服务器的名称和版本,此应用程序部署到,如Tomcat 7.0,JBoss 5.1.0,Glassfish 3.0,等.
我只是想知道是否有任何标准方法从不同的JEE应用程序服务器检索应用程序服务器的名称和版本.
我正在研究一个多模块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).
根据Apple的指南,iPhone应用程序的启动图像/启动画面应该是一个预渲染的静态图像,看起来类似于应用程序的第一个屏幕.
以下是Apple有关此文档的一些链接:
1)启动图像,iOS人机界面指南:
2)应用程序启动(默认)图像,iOS应用程序编程指南:
我只是想知道如何轻松创建这样的启动图像.在大多数情况下,似乎启动图像应该是空状态栏+导航栏+空表/视图+标签栏的组合,并且每个应该使用iOS的预定义颜色方案进行渲染.
但我找不到任何关于我应该怎么做的文档,也找不到与Xcode相关的任何条目.是否有Apple的官方工具可以轻松渲染启动图像?或者所有的应用程序开发人员只是使用一些模型iPhone控件+ Photoshop来做到这一点?
任何帮助表示赞赏.谢谢.
我是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,并调用这个实例方法createY中init.但是,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)
任何评论表示赞赏.谢谢.
我最近开始在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) 在我的应用程序中,有一个类如下:
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应该在进入静态方法之前完成类初始化,并且我的一些实验支持我的猜测.但是,我确实在另一个环境中看到了相反的行为.有人能否对我有所了解?
任何帮助表示赞赏,谢谢.
我是Clojure编程的新手,想知道做以下事情的惯用方法是什么:
我想总结一组数字nums,其中可能包含大量数字,我们假设只有正数.
如果总和非常大,我不在乎确切的总和.例如,如果数字的总和大于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惯用方法来解决这个问题吗?我认为该解决方案可以应用于需要类似逻辑的一组问题.
任何评论表示赞赏.谢谢.
我对 Apache Arrow 很陌生,所以这个问题可能是无知的。Apache Arrow 提供了以标准化内存格式存储原始类型/结构/数组等数据结构的功能,我想知道是否可以使用 Apache Arrow 存储更复杂的数据结构,如哈希表(或平衡搜索树)?
许多算法依赖于这些数据结构来工作,在这种情况下,Apache Arrow 用户是否需要将箭头数据转换为特定于语言的数据结构?
java ×4
clojure ×2
ios ×2
abstraction ×1
apache-arrow ×1
collections ×1
concurrency ×1
constructor ×1
encoding ×1
file ×1
iphone ×1
kubernetes ×1
maven ×1
maven-2 ×1
minikube ×1
packaging ×1
servlets ×1
swift ×1
unicode ×1
web ×1
xcode ×1