小编use*_*er7的帖子

设置默认的Java字符编码?

如何以编程方式正确设置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)

java utf-8 character-encoding

342
推荐指数
10
解决办法
62万
查看次数

Android Studio项目根目录名称更改/项目名称更改

如何在Android Studio- 0.9.9中更改项目根目录的名称.我在这里阅读其他解决方案,但对我来说没有任何作用.我可以更改/重构包名称,但不能更改根目录的名称.我在这里找到了另一个解决方案,即更改.idea/.name文件中的名称,该文件无效.我改名后,我尝试清理,重建等但没有反映android studio中的变化."PROJECT NAME/ROOT DIRECTORY NAME"没有REFACTOR选项,很多人在这里将模块名称与项目名称/根目录名称混淆.

android android-studio

36
推荐指数
3
解决办法
6万
查看次数

为什么Optional或flatMap方法的供应商类型参数是通配符?

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.

java optional java-9 supplier

29
推荐指数
3
解决办法
1146
查看次数

cpp:usr/bin/ld:找不到-l <nameOfTheLibrary>

我创建了一个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.我认为这不是一个链接文件,它是原始文件.

c++

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

Java - 将通用对象获取为String通用类型会引发异常

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)

java generics type-erasure generic-collections

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

在单元测试DynamoDB PaginatedQueryList时如何返回列表

我有一个查询语句,它返回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)

其中listList<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

6
推荐指数
2
解决办法
4472
查看次数

设计模式如何在使用List时避免instanceOf

想象一下,你有菜单,每道菜应该有多种语言(法语,英语,阿拉伯语......).本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>

或者有更多的多态方法吗?

java design-patterns

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

带有子路径的 Typescript 库导入

我有一个 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。它使用exportstypeVersions

{
  "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)

typescript reactjs

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

如何将List <Entry>转换为Map,其中value是使用流的列表?

如何在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"]}.

java java-stream

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

执行多项操作并提交

系统处理两种类型的资源。有用于管理资源的写入和删除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 api-design

5
推荐指数
2
解决办法
166
查看次数