在java 8中,java.util.stream.Stream#forEach考虑作为传统for循环的替代.但为什么不是这不是链函数.它返回虚空而不是Stream<T>自我.
像这样
Arrays
.stream(Girls.toArray())
.forEach(Girls::getUp)
.forEach(Girls::dressUp)
.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl)
.endFilter()// Not an API, but it means remove last filter
.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl)
girls = Arrays
.stream(Girls.toArray());
girls.forEach(g->{g.getUp();g.dressUp()});
girls.filter(/* Top 10 Girls */)
.forEach(Gay.getMe()::gotGirl);
girls.filter(/* Worst 10 Girls */)
.forEach(Gay.get(0)::gotGirl);
Run Code Online (Sandbox Code Playgroud)
第一个比第二个好.但是第一个表现更差.
那么,为什么forEach不能连锁?
例如
class tester
{
@Test
public void testBeanUtils() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException
{
Stranger stranger = new Stranger();
BeanUtils.setProperty(stranger,"name","wener");
BeanUtils.setProperty(stranger,"xname","xwener");
BeanUtils.setProperty(stranger,"yname","ywener");
System.out.println(stranger);
}
@Data// lombok annotation generate all setter and getter
public static class Stranger
{
@Accessors(chain = true)// generate chained setter
String name;
String xname;
String yname;
public Stranger setYname(String yname)// no lombok, still not work
{
this.yname = yname;
return this;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的输出:
TestValues.Stranger(name=null, xname=xwener, yname=null)
Run Code Online (Sandbox Code Playgroud)
这有什么问题?连锁二传手是一件好事.有什么建议?
编辑
再次回到这个问题.这次我无法删除Accessors chain.现在,我commons-lang3用来实现.
// force …Run Code Online (Sandbox Code Playgroud) Mapper实例是完全线程安全的,不需要创建单独使用的mapper,但mapper的配置可以更改。
虽然ObjectMapper具有复制功能,可以根据现有的映射器复制自定义配置,但如果我共享一个映射器,则不能保证当有人想要自定义映射器时,他们会复制共享的映射器。所以我想要一个不可变的映射器来共享,如果有人不小心更改了共享映射器,则应该抛出一些异常。
有这样的事吗?
我有一些资源,但我不能迭代它并将它们全部绑定,我必须使用密钥来请求资源.所以,我必须动态注入.
我定义了一个注释
@Target({ METHOD, CONSTRUCTOR, FIELD })
@Retention(RUNTIME)
@Documented
@BindingAnnotation
public @interface Res
{
String value();// the key of the resource
}
Run Code Online (Sandbox Code Playgroud)
像这样用
public class Test
{
@Inject
@Res("author.name")
String name;
@Inject
@Res("author.age")
int age;
@Inject
@Res("author.blog")
Uri blog;
}
Run Code Online (Sandbox Code Playgroud)
我必须处理注释注入@Res,我需要知道注入字段和注释.
这有可能Guice吗?如何?即使是spi?
在Java中,我正在生成一个带字母的字符串,A且字符串之间带有B一个COMBINING OVERLINE U + 0305字符。
@Test
public void test() {
System.out.println("A\u0305B");
}
Run Code Online (Sandbox Code Playgroud)
我在IDEA中得到这个:
但是,如果我复制到此处,它将变为A?B。
这是来自Chrome控制台的:
组合字符的组合顺序使我感到困惑。哪一个是正确的?
我写这在科特林编译到运行JavaScript在浏览器中。在IDEA中进行调试是正确的,但浏览器显示了不同的答案。
在这里演示
HTML:
display:none <b>not works</b>,the hidden can <b>not select</b>.<br>
<select size="5">
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="H">H</option>
<option value="I">I</option>
</select><br>
display:none <b>works</b>,the hidden <b>can select</b>.<br>
<select>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
<option value="D">D</option>
<option value="E">E</option>
<option value="F">F</option>
<option value="G">G</option>
<option value="H">H</option>
<option value="I">I</option>
</select>
Run Code Online (Sandbox Code Playgroud)
CSS:
select{width:50px;}
[value=C]{
display: none;
}
/* will hold the position */
[value=B]{
visibility: hidden;
}
Run Code Online (Sandbox Code Playgroud)
size属性会影响显示和可见性,这会发生什么?
如何在select中隐藏具有size属性的选项?
代码优先
@Test
public void tryUnicode()
{
SpelExpressionParser parser = new SpelExpressionParser();
Object rootObject = new Object()
{
public String getName()
{
return "wener";
}
public String get??()
{
return getName();
}
};
// ok
assert parser.parseExpression("name").getValue(rootObject).equals("wener");
// not ok
assert parser.parseExpression("??").getValue(rootObject).equals("wener");
}
Run Code Online (Sandbox Code Playgroud)
有些时候我们只需要一个unicode名称,它对我们的自定义模板更友好.SpEL简单,易用且内置,我不想使用其他EL解决方案,我该如何解决这个问题?
编辑
在org.springframework.expression.spel.standard.Tokenizer#isIdentifier,他们只接受isAlphabetic(ch) || isDigit(ch) || ch == '_' || ch == '$';没有unicode支持,但java标识符允许unicode,悲伤.
这是一个参数解析器列表,但它们接受字符串数组.
现在,我有一个字符串
-s -d "String with space" -d "string with \" escape \n the next line"
Run Code Online (Sandbox Code Playgroud)
我想将字符串拆分为
-s
-d
String with space
-d
string with " escape
the next line (This is one string with \n)
Run Code Online (Sandbox Code Playgroud)
有没有工具可以做到这一点?
也可以看看
EDTIED
张贴作为答案.
我知道如何运行注册表镜像
docker run -p 5000:5000 \
-e STANDALONE=false \
-e MIRROR_SOURCE=https://registry-1.docker.io \
-e MIRROR_SOURCE_INDEX=https://index.docker.io \
registry
Run Code Online (Sandbox Code Playgroud)
以及如何使用它
docker --registry-mirror=http://10.0.0.2:5000 -d
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能使用多个注册表镜像.
这就是我需要的:
所以我必须制作两个注册表镜像和一个私有注册表.我想docker run registry镜像第一和第二个注册表,还有一个docker run registry持有我的私人注册表.客户端将使用其中三个注册表.
我不知道如何做到这一点,我认为这是一个常见的用例,请帮助,谢谢.
基本要求是使用关键字作为标识符,所以我想区分令牌和它的上下文.(例如,class是一个关键字,但我们允许一个名为的变量class).
在Java中,这是可能的,但它是如此艰难,这里就是我如何做到这一点
TOKEN :
{
<I_CAL: "CAL"> : DO_CAL
| <I_CALL: "CALL">
| <I_CMP: "CMP">
| <I_EXIT: "EXIT">
| <I_IN: "IN">
| <I_JMP: "JMP">
| <I_JPC: "JPC"> : NEED_CMP_OP
| <I_LD: "LD"> : NEED_DATA_TYPE
| <I_NOP: "NOP">
| <I_OUT: "OUT">
| <I_POP: "POP">
| <I_PUSH: "PUSH">
| <I_RET: "RET">
| <I_DATA: "DATA"> : DO_DATA
| <I_BLOCK: ".BLOCK">
}
// T prefix for Token
TOKEN :
{
<T_REGISTER : "R0" | "R1" | "R2" | …Run Code Online (Sandbox Code Playgroud)