小编Ced*_*Ced的帖子

字符串a ==字符串b的规则

我试图理解字符串池的工作原理以及字符串与另一个字符串相等的规则是什么.

例如,这个片段:

public static void main(String[] hi){
    String s1 = "lol";
    String s2 = "lol";
    String s3 = new String("lol");
    System.out.println( s1 == s2 );// true
    System.out.println( s2 == s3); // false
    s3.intern(); //line 1
    System.out.println( s1 == s3); // false
    testString(s1);

}

private static void testString(String s1){
    String s4 = "lol";
    System.out.println( s1 == s4); // true
}
Run Code Online (Sandbox Code Playgroud)
  1. 在第1行:字符串被添加到字符串池中.由于它不等于s1,我假设字符串池中有重复.正确吗?

  2. 在池中复制的规则是什么?换句话说,someString == someString即使两个字符串具有相同的char序列,何时返回false?

PS:无论如何,我在任何地方都使用string1.equals(string2).我只是想深入了解潜在的机制.

java string heap-memory

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

为什么铸造缩短为char是一个缩小的转换?

缩小转换是指将可以保存较大值的数据类型放入可以保持最大值较小的数据类型.

long l = 4L;
int i = (int)l;
Run Code Online (Sandbox Code Playgroud)

但是我不明白为什么一个char的缩写是一个缩小的转换,但我有直觉它与这两种数据类型的有符号/无符号有关但我无法解释原因.

short s = 4; // short max value is 32767
char c = (char)s; // char max value is 65535 
Run Code Online (Sandbox Code Playgroud)

它看起来像是一个扩大的转换,或者至少既不缩小也不扩宽,因为它们都是16位并且可以保持相同数量的值.

    System.out.println((int)Character.MIN_VALUE); //0
    System.out.println((int)Character.MAX_VALUE); //65535 
    System.out.println(Short.MIN_VALUE); //-32768
    System.out.println(Short.MAX_VALUE); //32767
    //65535 = 32768+32767
Run Code Online (Sandbox Code Playgroud)

java casting

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

获取 api,为什么我必须在响应 json() 上使用 then,试图做出承诺

我试图理解承诺,所以我在 twitch 上尝试了一个简单的 get 请求。我不明白的是为什么会json()返回一个承诺。为什么 ?响应中已经包含数据,那么为什么它是一个承诺?

fetch('https://api.twitch.tv/kraken/games/top?limit=10&offset=0')
    .then( resp => {
        resp.json()
            .then(function(data) {  
                        console.log(data);  
        });
  });
Run Code Online (Sandbox Code Playgroud)

换句话说:第一个then,我理解,它等待响应。然而,当进入 then 函数时,这意味着已经收到响应,因此数据应该可以立即访问,而无需另一个承诺。它只是让我感到困惑。

javascript json fetch ecmascript-6

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

在gitlab管道中安装私有npm包

如果需要使用npm安装私有存储库,NPM_TOKEN需要设置环境变量.

NPM_TOKEN=00000000-0000-0000-0000-000000000000
Run Code Online (Sandbox Code Playgroud)

我在gitlab管道中的构建阶段需要安装一个私有存储库.因此我把这个NPM_TOKEN秘密变量放在我的gitlab pipeline设置中.

我目前的gitlab-ci配置:

image: x/node

build_job: 
  script:
  - printenv NPM_TOKEN
  - npm i @x/test
Run Code Online (Sandbox Code Playgroud)

docker图像就是我设置的.npmrc文件:

FROM node:latest
COPY .npmrc .  
Run Code Online (Sandbox Code Playgroud)

.npmrc在同一目录中的位置:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)

我通过以下方式尝试了docker图像:

 run -it myimage bash
 export NPM_TOKEN=...
 npm i @x/test
Run Code Online (Sandbox Code Playgroud)

这有效,私有包已安装.

但是在gitlab管道上它找不到包(404).当作业运行时,我可以清楚地看到NPM_TOKEN正在打印的env变量.所以我不知道发生了什么事.

npm gitlab docker gitlab-ci

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

用于单元测试的假文件删除事件

我正在尝试模拟一个文件Drop事件来测试角度指令,但我无法设法创建DragEvent.

it('should output file drop when file droped', () => {
    const file = new File([''], 'dummy.txt'); // got my file right there, want to drop it on "des"
    des.dispatchEvent(new DragEvent('drop', { dataTransfer: { items: [ new DataTransferItem(file)] } }));
    // ...
});
Run Code Online (Sandbox Code Playgroud)

我不确定如何处理第二个参数才能将我的文件放在那里。

javascript jasmine angular angular-unit-test

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

嵌套路由中应该使用flutter路由还是应该使用Page View?

来自网络背景(角度),我真的对颤振路由感到困惑。

看来我并不孤单(1、2 ... )。

从答案的相对复杂性以及与其中一些答案相关的各种错误来看,我想知道我是否只是想使用导航器作为它不是的东西。我尝试像使用网络框架的路由器一样使用它。如果 flutter 中的路由旨在更改整个屏幕而不是子窗口小部件。

网络导航

在 Web 上,以下导航将类似于以下内容:

{ path: '/sign-in', widget: SignInPage() },
{ path: '/', widget: HomePage(), children: [
    { path: '/a', widget: DashboardPage() },
    { path: '/b', widget: ProfilePage(), children: [
       { path: '/general', widget: BGeneralPage() },
       { path: '/settings', widget: BSettingsPage() },
    ] }
] }
// example url x.com/b/settings
Run Code Online (Sandbox Code Playgroud)

在flutter中你可以放置一个嵌套的Navigator,但是热重载似乎失败了,而且默认动画也很垃圾。甚至嵌套导航的文档也说<<仅使用单个导航器就可以获得类似的结果>>。

在我看来,路由系统是为了在我们想要更改整个屏幕时使用的。PageViewTabBarView是用于内部导航的小部件。

- 是这样吗?

然而,我发现一个潜在的问题是,当 flutter web 可用时,它不会有匹配的 url。

flutter flutter-navigation flutter-web

5
推荐指数
0
解决办法
585
查看次数

dart 在另一个文件中显示另一个方法的文档

是否可以在不同文件中的另一个函数的文档中显示一个函数的文档?宏仅在其自己的文件中有效。

在Flutter源码中,他们使用了这样的东西,但似乎没有任何效果:

/// {@macro flutter.widgets.editableText.keyboardType}
Run Code Online (Sandbox Code Playgroud)

dart dartdoc

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

removeif()不在jpa返回的列表上工作

我有一些问题理解为什么我不能在jpa返回的集合上使用removeIf()但是我可以使用迭代器来实现.

@PersistenceContext(unitName = "my-pu")
private EntityManager em;
@Override
public void removeUserFromGroup(String username, Group group) {
    Query query = em.createNamedQuery("Group.getByName", Group.class);
    query.setParameter("name", group.getGroupName());
    Group qGroup = (Group) query.getSingleResult();
    // this works
    // Iterator<User> i = qGroup.getUsers().iterator();
    // while (i.hasNext()) {
    // User o = i.next();
    // if (o.getUsername().equals(username)) {
    // System.out.println("eqqq");
    // i.remove();
    // }
    // }
    System.out.println("class: " + qGroup.getUsers().getClass().getName());
    // org.eclipse.persistence.indirection.IndirectList
    qGroup.getUsers().removeIf(u -> u.getUsername().equals(username));// doesn't work
}
Run Code Online (Sandbox Code Playgroud)

java jpa jpql

4
推荐指数
1
解决办法
1770
查看次数

为什么在 controlValueAccessor 模糊时触发更改事件

如果我在模板中放置一个实现 ControlValueAccessor 接口的自定义输入并绑定到其更改事件,如下所示:

  <input-app [value]="'initialVal'" (change)="onChange($event)"></input-app>
Run Code Online (Sandbox Code Playgroud)

由于我的自定义输入不会在模糊时触发任何事件(需要明确的是,您必须专注于输入,更改它,然后模糊,然后该事件将出现在控制台中)。

<input
    type="text"
    [value]="value"/>
Run Code Online (Sandbox Code Playgroud)

onChange()方法将被调用,我不明白为什么会出现这种情况。

这是一个plnkr

angular angular-reactive-forms angular-forms

4
推荐指数
1
解决办法
4854
查看次数

Angular Service Worker,为脱机应用程序缓存API调用

我正在尝试使服务工作者能够与API请求一起工作。我希望该应用离线运行,并具有以下配置:

    {
        "name": "api",
        "urls": ["https://x.com/**"],
        "cacheConfig": {
            "strategy": "performance",
            "maxSize": 20,
            "maxAge": "365d",
            "timeout": "5s"
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我离线时xhr标签的外观:

在此处输入图片说明

这是用户请求的内容:

在此处输入图片说明

如您所见,用户的API调用无法解析。

这是user在线时的响应:

在此处输入图片说明

javascript service-worker angular angular5 angular-service-worker

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