小编T.J*_*der的帖子

React:返回 JSX 的函数和函数组件有什么区别?

function renderSomething(foo) {
  return <div>sth {foo}</div>
}

function Something({ foo }) {
  return <div>sth {foo}</div>
}

function Component(props) {
  const { foo } = props
  return (
    <>
        {renderSomething(foo)}
        <Something foo={foo} />
    </>
  )
}
Run Code Online (Sandbox Code Playgroud)

renderSomething()和的 JSX 结果<Something />是相同的。我想知道这两种方式之间有什么区别(例如渲染方式、行为、影响等)?

render方法(即)适用于什么场景renderSomething()?我可以在里面使用挂钩吗?

javascript reactjs

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

将i ++优化为++ i以避免临时变量是否有意义?

有人告诉我,我可以写

for (iterator it = somecontainer.begin(); it != somecontainer.end(); ++it)
Run Code Online (Sandbox Code Playgroud)

代替

for (iterator it = somecontainer.begin(); it != somecontainer.end(); it++)
Run Code Online (Sandbox Code Playgroud)

...因为后者具有额外未使用的临时变量的成本.这种优化对现代编译器有用吗?编写代码时是否需要考虑这种优化?

c++ stl

18
推荐指数
4
解决办法
880
查看次数

当前的C标准是否禁止短路`&`和`|`?

有没有在C标准(我想在这一刻什么C99 + TC1-3 C11)是保证&|不会是短路?

如果我写:

x = y & foo();
Run Code Online (Sandbox Code Playgroud)

......我希望foo永远被调用,但真正定义的?从理论上讲,除非标准的说法,否则,如果y包含0,运行时优化可以跳过的东西由于缺少说是不允许呼叫.(与此同样|,如果左侧操作数已经全部为位,您可以忽略右侧操​​作数.就此而言,如果是的话,甚至x = y * foo(); 可能会被短路.)y0

不熟悉规范(我不知道),证明这样的负面是很棘手的.我可以对比&(C99中的6.5.10)和&&(C99中的6.5.13)中的部分.在后者中,它非常清楚:

与按位二元&运算符不同,运算&&符保证从左到右的评估; 在评估第一个操作数后有一个序列点.如果第一个操作数比较等于0,则不计算第二个操作数.

......但6.5.10没有明确说明其负面版本.

我认为6.5.10 没有定义一个序列点意味着foo总是被调用并且没有调用它的实现将是非标准的这一事实似乎是合理的.我是对的吗?

c operators

18
推荐指数
3
解决办法
798
查看次数

Javascript设置CSS:样式之后

你能用Javascript设置:使用css的样式吗?

所以我们说:

$("#foo li:after").css("left","100px");
Run Code Online (Sandbox Code Playgroud)

javascript css jquery css3

17
推荐指数
1
解决办法
2万
查看次数

对象文字中的箭头功能

我想弄清楚为什么在对象文本的箭头函数被调用windowthis.有人可以给我一些见解吗?

var arrowObject = {
  name: 'arrowObject',
  printName: () => {
    console.log(this);
  }
};

// Prints: Window {external: Object, chrome: Object ...}
arrowObject.printName();
Run Code Online (Sandbox Code Playgroud)

一个按预期工作的对象:

var functionObject = {
  name: 'functionObject',
  printName: function() {
    console.log(this);
  }
};

// Prints: Object {name: "functionObject"}
functionObject.printName();
Run Code Online (Sandbox Code Playgroud)

根据巴贝尔REPL的说法,他们被描述为

var arrowObject = {
  name: 'arrowObject',
  printName: function printName() {
    console.log(undefined);
  }
};
Run Code Online (Sandbox Code Playgroud)

var functionObject = {
  name: 'functionObject',
  printName: function printName() {
    console.log(this);
  }
};
Run Code Online (Sandbox Code Playgroud)

为什么没有arrowObject.printName();arrowObject …

javascript object-literal ecmascript-6 babeljs arrow-functions

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

我不应该再次使用原始类型吗?

在Java中混合使用原始数据类型和它们各自的包装类可能会导致很多错误.以下示例说明了此问题:

int i = 4;
...
if (i == 10)
  doStuff();
Run Code Online (Sandbox Code Playgroud)

稍后你会想要变量i被定义或未定义,所以你将上面的实例改为:

Integer i = null;
Run Code Online (Sandbox Code Playgroud)

现在,相等检查失败.

始终使用原始包装类是不是很好的Java实践?显然它会早点出现一些错误,但这有什么缺点?它是否会影响性能或应用程序的内存占用?有没有鬼鬼祟祟的陷阱?

java types

16
推荐指数
2
解决办法
3386
查看次数

jQuery .css以像素为单位返回css属性,实际上以百分比表示

我正在尝试left使用.cssjQuery中的方法获取属性的值(以百分比表示):

var my_value= $("div").css("left");
Run Code Online (Sandbox Code Playgroud)

问题是,上面以pixles的形式返回...

有关如何让它返回属性的实际值(以百分比表示)的任何想法?

javascript css jquery

16
推荐指数
2
解决办法
1万
查看次数

如何在TypeScript中使用RequestPromise?

我已经安装了request-promise库并尝试在我的TypeScript应用程序中使用它,但没有太多运气.

如果我像这样使用它:

import {RequestPromise} from'request-promise';

RequestPromise('http://www.google.com')
        .then(function (htmlString) {
            // Process html...
        })
        .catch(function (err) {
            // Crawling failed...
        });
Run Code Online (Sandbox Code Playgroud)

我在TS编译输出上看到了这个:

error TS2304: Cannot find name 'RequestPromise'.
Run Code Online (Sandbox Code Playgroud)

如果我这样使用它:

import * as rp from'request-promise';

rp('http://www.google.com')
    .then(function (htmlString) {
        // Process html...
    })
    .catch(function (err) {
        // Crawling failed...
    });
Run Code Online (Sandbox Code Playgroud)

我看到一个错误,表示对象rp上没有'.then()'方法.

如何在TypeScript中正确使用它?

javascript typescript

16
推荐指数
2
解决办法
9847
查看次数

在日志记录表上的不断增加的日期时间列上聚集索引?

我不是DBA("好!",你马上就会思考.)

我有一个记录数据表,其中包含以下特征和使用模式:

  • 一个datetime用于存储日志时间戳,其值列是不断增加的,大部分(但大多只)唯一
  • Frequent-ish插入(例如,每分钟十几次),仅在时间戳范围的末尾(记录新数据)
  • 从时间戳范围的开头大量删除(旧数据被清除)
  • 根本没有更新
  • Frequent-ish选择使用timestamp列作为主要标准,以及其他列的次要标准
  • 不经常选择使用其他列作为条件(包括时间戳列)
  • 大量的数据,但远远不够,我担心存储空间

此外,目前还有一个日常维护窗口,在此期间我可以进行表格优化.

坦率地说,即使我对它进行了错误索引,我也不希望这个表挑战它将要启动的服务器,但是它似乎是一个很好的机会,可以在SQL Server聚簇索引上请求一些输入.

我知道聚簇索引确定实际表数据的存储(数据存储在索引本身的叶节点中),非聚簇索引是指向数据的单独指针.因此,在查询术语中,聚簇索引将比非聚集索引更快 - 一旦我们找到了索引值,数据就在那里.插入和删除都有成本(当然,更新聚簇索引列的值的更新将特别昂贵).

但我在这个答案中读到,除非重建索引,否则删除不会被清理的空隙.

所有这些都告诉我,我应该:

  • 在具有100%填充因子的时间戳列上放置聚簇索引
  • 将非聚集索引放在任何其他列上,该列可用作不涉及聚簇列的查询中的条件(在我的情况下可能是其中任何一个)
  • 安排在每日维护间隔期间发生批量删除
  • 安排在批量删除后立即重建聚集索引
  • 放松,多出去

我在那里疯狂吗?我是否需要经常重建索引以避免浪费大量空间?还有其他明显的(对于DBA)我应该做的事情吗?

提前致谢.

sql-server indexing

15
推荐指数
2
解决办法
5786
查看次数

为什么三元运算给出了nullpointer而ifelse对应的呢?

我在下面的一个实例中得到NullPointerException,而它的对应运行顺利.

public static void main(String[] args){
    System.out.println(withTernary(null, null)); //Null Pointer
    System.out.println(withIfElse(null, null));  //No Exception
}

private static Boolean withTernary(String val, Boolean defVal){
    return val == null ? defVal : "true".equalsIgnoreCase(val);
}

private static Boolean withIfElse(String val, Boolean defVal){
    if (val == null) return defVal;
    else return "true".equalsIgnoreCase(val);
}
Run Code Online (Sandbox Code Playgroud)

在线版

在线版本中的台词main相反,它输出nullwithIfElse,然后失败withTernary.

我正在使用以下java版本

java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
Run Code Online (Sandbox Code Playgroud)

java ternary-operator nullpointerexception

15
推荐指数
2
解决办法
343
查看次数