我试图理解字符串池的工作原理以及字符串与另一个字符串相等的规则是什么.
例如,这个片段:
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行:字符串被添加到字符串池中.由于它不等于s1,我假设字符串池中有重复.正确吗?
在池中复制的规则是什么?换句话说,someString == someString即使两个字符串具有相同的char序列,何时返回false?
PS:无论如何,我在任何地方都使用string1.equals(string2).我只是想深入了解潜在的机制.
缩小转换是指将可以保存较大值的数据类型放入可以保持最大值较小的数据类型.
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) 我试图理解承诺,所以我在 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 函数时,这意味着已经收到响应,因此数据应该可以立即访问,而无需另一个承诺。它只是让我感到困惑。
如果需要使用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变量.所以我不知道发生了什么事.
我正在尝试模拟一个文件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)
我不确定如何处理第二个参数才能将我的文件放在那里。
来自网络背景(角度),我真的对颤振路由感到困惑。
从答案的相对复杂性以及与其中一些答案相关的各种错误来看,我想知道我是否只是想使用导航器作为它不是的东西。我尝试像使用网络框架的路由器一样使用它。如果 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,但是热重载似乎失败了,而且默认动画也很垃圾。甚至嵌套导航的文档也说<<仅使用单个导航器就可以获得类似的结果>>。
在我看来,路由系统是为了在我们想要更改整个屏幕时使用的。PageView和TabBarView是用于内部导航的小部件。
- 是这样吗?
然而,我发现一个潜在的问题是,当 flutter web 可用时,它不会有匹配的 url。
是否可以在不同文件中的另一个函数的文档中显示一个函数的文档?宏仅在其自己的文件中有效。
在Flutter源码中,他们使用了这样的东西,但似乎没有任何效果:
/// {@macro flutter.widgets.editableText.keyboardType}
Run Code Online (Sandbox Code Playgroud) 我有一些问题理解为什么我不能在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) 如果我在模板中放置一个实现 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()方法将被调用,我不明白为什么会出现这种情况。
我正在尝试使服务工作者能够与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