小编Zil*_*ilk的帖子

为什么"font-weight:bolder"会跳过粗体步骤?

根据字体权重和其他来源的MDN页面,font-weight: bolder使文本内容"一个字体权重比父元素更暗(在字体的可用权重中)."

我有一个测试页面,其中包含Google Fonts中的"Open Sans"字体,权重为300,400(又名"普通"),600,700(又名"粗体")和800.手动设置数字字体权重正如所料,但使用bolder似乎跳过字体权重600.

Firefox和Chrome对此达成一致,所以我可能误解了"一步"在这种情况下的含义.

这是一个用于测试的JSFiddle,以及我得到的结果的屏幕截图.

在此输入图像描述

第一部分有手动数字font-weight设置.第二个嵌套div块用样式font-weight: lighter(按预期工作),第三个嵌套div块用font-weight: bolder; 这个显示了我想要了解的效果.

html css fonts webfonts font-face

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

在flexbox布局中,横轴是否有`flex-shrink:0`声明?

我想防止flex容器中的元素缩小尺寸,而不是flex-direction。以下示例将<article>元素并排放置。当可用的垂直空间减小时,这些元素不会强制其flex容器显示滚动条;相反,内容溢出元素边界。

屏幕截图1-有足够的水平和垂直空间来显示所有内容:

flex屏幕截图1

屏幕截图2-减少的垂直空间将元素边框向上推:

flex屏幕截图2

屏幕截图3-垂直空间进一步减小,容器最终得到一个滚动条:

flex屏幕截图3

屏幕截图4-如果没有flex-shrink:0,元素的宽度(主弯曲轴)也将减小:

flex屏幕截图4

flex-shrink:0 可以防止水平收缩,但是如何防止元素垂直收缩呢?

提供<article>元素overflow: auto或类似内容不会产生期望的结果(=容器上的滚动条)。理想情况下,显示如下所示:

剪辑蒙太奇

如果我事先知道元素的高度,则可以给它们一个min-height,但是并非总是如此。

内容: http : //jsfiddle.net/twdan8u8/

HTML:

<main>
    <article>article<br>article<br>article</article>
    <article>article<br>article<br>article</article>
</main>
Run Code Online (Sandbox Code Playgroud)

CSS:

* {
    box-sizing: border-box; /* not the culprit */
}
html {
    height: 100%;
}
body {
    position: relative;
    height: 100%;
    margin: 0;
    background: #999;
}
main {
    overflow: auto;
    background: gold;
    display: flex;
    height: 80%;
    padding: 50px 30px;
}
article {
    flex-shrink: 0; …
Run Code Online (Sandbox Code Playgroud)

html css layout overflow flexbox

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

访问Java中的私有Collection字段

我的一个类有一个包含Set的字段.此字段仅在构造函数中填充,然后由其他类读取.最初我有这样的事情:

public class Foo {
    public final Set<String> myItems;
    public Foo(Collection<String> theirItems) {
        this.myItems = new LinkedHashSet<String>(theirItems);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这违背了OO最佳实践,myItems应该是私有的,并且只能通过setter和getter访问.所以我把它改成了:

public class Foo {
    private final Set<String> myItems;
    public Foo(Collection<String> theirItems) {
        this.myItems = new LinkedHashSet<String>(theirItems);
    }
    public Set<String> getItems() {
        return myItems;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在myItems是私有的,但是调用getItems()的人仍然可以随意添加/删除项目,这与我之前的情况基本相同.(我实际上并不关心有人改变项目内容,这更像是一个理论问题)

所以我改变了getItems()以返回一个数组:

public String[] getItems() {
    return myItems.toArray(new String[myItems.size()]);
}
Run Code Online (Sandbox Code Playgroud)

现在我的物品真的很私密.不幸的是,我知道读取这些项目的对象实际上想要使用Set,因此必须将数组转换回来.我还可以返回myItems的副本:

public Set<String> getItems() {
    return new LinkedHashSet<String>(myItems);
}
Run Code Online (Sandbox Code Playgroud)

这为调用者提供了他们想要的内容,但在每次访问时都创建了一个新的Set.

在这样的情况下你做了什么 - 不惜一切代价保护隐私,接受原始结构的转换/复制,或者牺牲对集合内容的控制并依赖负责的呼叫者?

java oop encapsulation

3
推荐指数
2
解决办法
2737
查看次数

Zend OPcache 的“num_cached_keys”统计数据意味着什么?

返回的数据点包括opcache_get_status()

'opcache_statistics' => [
    'num_cached_scripts' => 90,
    'num_cached_keys' => 96,
    'max_cached_keys' => 3907,
    ...
]
Run Code Online (Sandbox Code Playgroud)

缓存的脚本数量是正确且可以理解的(可以通过统计'scripts'返回值的部分来确认)。但“钥匙”到底指的是什么?我假设 Zend OPcache 可以组织为键/值存储。在这种情况下,脚本和密钥之间应该存在一对一的关系,除非......

  • OPcache 还存储脚本以外的内容,或者
  • 一些脚本使用 2 个或更多键存储

我没有看到用于列出 OPcache 使用的密钥的 API。

php opcache

3
推荐指数
1
解决办法
1937
查看次数

使用 PHP 转义用户输入以在 PostgreSQL 正则表达式中使用?

我正在创建一个与~or匹配的正则表达式模式~*,其中部分模式由应用程序创建,部分来自用户输入:

$userInput = "t ' e * \\s * t ( i \n g";

$pattern = "(a|b|c)" . preg_quote($userInput) . "(x|y|z)";
$pattern = pg_escape_literal($conn, $pattern);

$result = pg_query($conn, "SELECT * FROM example WHERE name ~* $pattern");
Run Code Online (Sandbox Code Playgroud)

到目前为止,这是有效的,但我不完全确定它的安全性:

  • PHP 是否preg_quote()转义(至少)PostgreSQL 正则表达式中的所有特殊字符?
  • 是否有任何可能的$userInput值可以破坏转义?

(在$userInput到达这个阶段之前有一些通用的处理- 编码、字符集、接受的字符范围等。查询参数用于大多数(实际)查询,但这部分 SQL 是手动创建的。)

php regex postgresql pcre escaping

3
推荐指数
1
解决办法
655
查看次数

创建Java应用程序的不同构建版本

我正在构建一个Java应用程序(使用带有build.xml和build.property文件的Ant).现在我希望能够创建一个不同的"调试"版本,它可以向System.err打印几条诊断消息.这是通过这样的(简化)实现的:

private static final boolean DEBUG = false;

public static void debug (String msg) {
    if (DEBUG) {
        System.err.println(msg);
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可能在构建时影响DEBUG常量的值?我想我正在寻找的是C-preprocessor定义的Java等价物.理想情况下,我在build.xml文件中有一个不同的构建目标,它将DEBUG设置为true并创建一个myapp-debug.jar作为输出.

相关的用法是应用程序使用的配置文件的名称.这也在源代码中指定为静态常量,但我更喜欢在构建时调整它.

对不起,如果这对你来说很明显,我不是专家:)

java ant debugging

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