如何以编程方式正确设置JVM(1.5.x)使用的默认字符编码?
我已经读过-Dfile.encoding=whatever以前用于旧JVM的方法......由于我不会进入的原因,我没有那么奢侈.
我试过了:
System.setProperty("file.encoding", "UTF-8");
Run Code Online (Sandbox Code Playgroud)
并且属性已设置,但它似乎不会导致下面的最终getBytes调用使用UTF8:
System.setProperty("file.encoding", "UTF-8");
byte inbytes[] = new byte[1024];
FileInputStream fis = new FileInputStream("response.txt");
fis.read(inbytes);
FileOutputStream fos = new FileOutputStream("response-2.txt");
String in = new String(inbytes, "UTF8");
fos.write(in.getBytes());
Run Code Online (Sandbox Code Playgroud) 如何在Android Studio- 0.9.9中更改项目根目录的名称.我在这里阅读其他解决方案,但对我来说没有任何作用.我可以更改/重构包名称,但不能更改根目录的名称.我在这里找到了另一个解决方案,即更改.idea/.name文件中的名称,该文件无效.我改名后,我尝试清理,重建等但没有反映android studio中的变化."PROJECT NAME/ROOT DIRECTORY NAME"没有REFACTOR选项,很多人在这里将模块名称与项目名称/根目录名称混淆.
该Optional.or方法是在Java 9中添加的.这是方法签名
public Optional<T> or?(Supplier<? extends Optional<? extends T>> supplier)
Run Code Online (Sandbox Code Playgroud)
为什么是的类型参数Supplier回吐? extends Optional,而不是仅仅Optional因为Optional是最后的类?
该Optional.flatMap方法也是如此.这是Java 8的变化.
在Java 8中,它被Function<? super T, Optional<U>> mapper改为Function<? super T,?? extends Optional<? extends U>>Java 9.
我创建了一个cpp项目,它使用了一个名为的lib文件:libblpapi3_64.so
这个文件来自一个我从Internet上下载的库.
我的项目运行没有任何错误.所以我将它更新为bitbucket.然后我的同事下载并在自己的计算机上运行它.但他得到一个错误:
usr/bin/ld: cannot find -lblpapi3_64.
实际上,我已将其复制到我的项目存储库中.我的意思是我在我的项目下创建了一个名为lib的文件,我使用的所有lib文件都在其中.
还有其他的lib文件liblog4cpp.a,但它们都很好.只有libblpapi3_64.so得到错误.
是因为它是.so文件不是.a文件吗?还是有其他原因?
顺便说一句,libblpapi3_64.sois 的文件名green和其他文件(.a)是white.我认为这不是一个链接文件,它是原始文件.
public class Box<T> {
private T element;
public T getElement() {
return element;
}
public void setElement(T element) {
this.element = element;
}
}
public class Test {
public static void main(String[] args) {
List<Box> l = new ArrayList<>(); //Just List of Box with no specific type
Box<String> box1 = new Box<>();
box1.setElement("aa");
Box<Integer> box2 = new Box<>();
box2.setElement(10);
l.add(box1);
l.add(box2);
//Case 1
Box<Integer> b1 = l.get(0);
System.out.println(b1.getElement()); //why no error
//Case 2
Box<String> b2 = l.get(1);
System.out.println(b2.getElement()); //throws ClassCastException …Run Code Online (Sandbox Code Playgroud) 我有一个查询语句,它返回a PaginatedQueryList并将其分配给List。然后,我对列表进行操作。
List<MyClass> entries= mapper.query(MyClass.class, queryExpression);
//Logic to test
Map<String, Map> map = entries.stream()
.collect(Collectors.toMap(MyClass::getA, MyClass::getB));
....
....
Run Code Online (Sandbox Code Playgroud)
我试图像测试
when(mapper.query(eq(MyClass.class), any(DynamoDBQueryExpression.class)))
.thenReturn((PaginatedQueryList<MyClass>) list);
Run Code Online (Sandbox Code Playgroud)
其中list是List<MyClass>(ArrayList的),我自己构造,并希望将其传递到主程序来测试主逻辑。
但是它抛出
java.lang.ClassCastException:无法将java.util.ArrayList强制转换为com.amazonaws.services.dynamodbv2.datamodeling.PaginatedQueryList
清单执行后如何发送mappper.query(..)。
目的是entries在执行时将我构造的列表发送给该列表mapper.query(..)。
注意:
我也尝试发送mockedPaginatedQueryList,但是当entries.stream()我想要发送实际流时。我试过像
when(paginatedQueryList.stream()).thenReturn(Stream.of(list.get(0), list.get(1)));
Run Code Online (Sandbox Code Playgroud)
它抛出
java.lang.IllegalStateException:流已经在java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)上被操作或关闭。
笔记2:
我用entries.stream()两次逻辑来测试
java unit-testing mockito amazon-web-services amazon-dynamodb
想象一下,你有菜单,每道菜应该有多种语言(法语,英语,阿拉伯语......).本Dish类包含一个列表Language类型的对象.
class Dish {
List<Language> languages
void addLanguage(Language lg){...}
}
class Language { getDescription(){}}
class French extends Language{}
class Menu {List<Dish> dishes }
Run Code Online (Sandbox Code Playgroud)
instance of如果想要对该菜肴的特定语言进行描述,我该如何避免使用?
我应该为每种语言定义一个类中的get方法:getFrench(),getArabic(),..?
或者我应该将其保留在列表中并通过循环列表检查法语的实例,然后调用getDescription()它list object<language>?
或者有更多的多态方法吗?
我有一个 Typescript 库,正在从 React 应用程序中使用。我想导入带有子路径的 TS 库内容,例如
import {base} from "my-lib"
import {foo} from "my-lib/path1"
import {bar} from "my-lib/path2"
Run Code Online (Sandbox Code Playgroud)
我遇到了Github 问题exports,其中指出Typescript尚不支持此功能(在 package.json 中)。我正在使用 Typescript 4.3。
在同一线程中发布了一个解决方法 - Github repo typescript-subpath-exports-workaround。它使用exports和typeVersions
{
"main": "dist/index.js",
"types": "dist-types/index.d.ts",
"exports": {
".": "./dist/index.js",
"./exported": "./dist/exported.js"
},
"typesVersions": {
"*": {
"exported": ["dist-types/exported"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个新的反应应用程序(通过npx create-react-app命令)并尝试hello从中导入typescript-subpath-exports-workaround并且工作正常。但无法导入`typescript-subpath-exports-workaround/exported
import {hello} from "typescript-subpath-exports-workaround" //works fine
import {foo} from "typescript-subpath-exports-workaround/exported" //gives "Module not found" …Run Code Online (Sandbox Code Playgroud) 如何在Java 8中将a转换List<Entry>为Map<Entry::getKey, List<Entry::getValue>>使用流?
我无法为Collectors.toMap()提供一个好的KeySelector:
List<Entry<Integer, String>> list = Arrays.asList(Entry.newEntry(1, "a"), Entry.newEntry(2, "b"), Entry.newEntry(1, "c"));
Map<Integer, List<String>> map = list.stream().collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue()));
Run Code Online (Sandbox Code Playgroud)
我想得到的:{'1': ["a", "c"], '2': ["b"]}.
系统处理两种类型的资源。有用于管理资源的写入和删除API。客户端(用户)将使用库API来管理这些资源。每次写入(或创建)资源都会导致更新存储或数据库。
该API如下所示:
1)创建库客户端。用户将使用返回的客户端对资源进行操作。
MyClient createClient(); //to create the client
Run Code Online (Sandbox Code Playgroud)
2)MyClient界面。提供对资源的操作
writeResourceType1(id);
deleteResourceType1(id);
writeResourceType2(id);
deleteResourceType2(id);
Run Code Online (Sandbox Code Playgroud)
一些资源依赖于另一个。用户可能会无序地写入它们(可能在写入依赖项之前先写入资源)。为了防止系统处于不一致状态,所有更改(资源更新)都将写入到暂存位置。仅当用户指示他/她已写完所有内容时,所做的更改才会写入实际存储中。
这意味着我需要在上述接口中使用commit方法MyClient。因此,访问模式将如下所示
Client client = provider.createClient();
..
client.writeResourceType1(..)
client.writeResourceType1(..)
client.deleteResourceType2(..)
client.commit(); //<----
Run Code Online (Sandbox Code Playgroud)
我不习惯在MyClient界面中使用提交API 。我觉得它在污染它,错误的是错误的抽象级别。
有没有更好的方法来解决这个问题?
我想到的另一个选择是将所有更新作为单个调用的一部分。该API将充当批处理API
writeOrDelete(List<Operations> writeAndDeleteOpsForAllResources)
Run Code Online (Sandbox Code Playgroud)
不利的一面是,用户必须将其端部的所有操作组合起来才能调用它。单个调用中也塞满了太多内容。因此,我不倾向于这种方法。
java ×7
android ×1
api-design ×1
c++ ×1
generics ×1
java-9 ×1
java-stream ×1
mockito ×1
optional ×1
reactjs ×1
supplier ×1
type-erasure ×1
typescript ×1
unit-testing ×1
utf-8 ×1