簡(jiǎn)單說(shuō)下吧,有時(shí)間再來(lái)補(bǔ)上。
以下結(jié)果基于gcc5.4
#include <stdio.h>
int main(void)
{
float a,b;
b = 2.0e20 + 1.0;
a = b - 2.0e20;
printf("%f\n", a);
}
---
4008175468544.000000
如果把1.0
換成1e2, 1e3...1e13
,得到的結(jié)果都是一樣的。
float
使用23位存尾數(shù)的,注意這23位存的是01串,是二進(jìn)制的尾數(shù)。
由于2^23 = 8388608
(只是簡(jiǎn)單計(jì)算,去看IEEE754知道還隱含了一個(gè)1),所以存儲(chǔ)十進(jìn)制的小數(shù)小數(shù)點(diǎn)后精度也就6、7位。
浮點(diǎn)數(shù)的計(jì)算,見(jiàn)維基百科這里
可知,浮點(diǎn)數(shù)計(jì)算需要把指數(shù)統(tǒng)一然后計(jì)算,那么問(wèn)題來(lái)了,無(wú)論是1.0
統(tǒng)一到2.0e20
還是2,0e20
統(tǒng)一到1.0
,尾數(shù)的精度都超過(guò)了上面的精度,所以就有了這種奇怪的結(jié)果。
這個(gè)奇怪結(jié)果的產(chǎn)生和類型也有關(guān)系,1.0
和 2.0e20
都是double型,這意味著b = 2.0e20 + 1.0
是先對(duì)兩個(gè)double型字面量計(jì)算,然后再賦給float型變量b
,精度丟失。
題主有興趣的話,去看看IEEE754標(biāo)準(zhǔn),以及Google一下浮點(diǎn)數(shù)的計(jì)算
先看看update時(shí)有沒(méi)有deadlock異常,再看下事物,多少條commit一次,再用show processlist等操作看看數(shù)據(jù)庫(kù)執(zhí)行的sql狀況。
暫時(shí)有了一點(diǎn)小理解,不知道是否完全正確
畫了一個(gè)簡(jiǎn)單的圖,直接看圖吧。
我的理解是 : 當(dāng)給定的種子不是太好或者一個(gè)線性列表內(nèi)的種子分布不好的時(shí)候, 但又需要大量的隨機(jī)引擎或者大量熵的生成器的時(shí)候, 可以使用 seed_seq.
std::seed_seq is generally intended to be used if you don't trust the default implementation to properly initialize the state of the engine you're using.1
能否給出一些更詳細(xì)的解釋以及例子呢?
https://stackoverflow.com/a/2...
或許該看些密碼學(xué)的書? 窩這學(xué)期剛開(kāi)學(xué)時(shí)興致沖沖的拿著一本密碼學(xué)原版(從大數(shù)講起的, 有很多c實(shí)現(xiàn), 不過(guò)后來(lái)因?yàn)?del>太忙太懶了, 沒(méi)有看下去(慚愧不已). 里面第十二章就是講隨機(jī)數(shù)的, 雖然窩還沒(méi)有看到, 但是窩覺(jué)得這本書非常不錯(cuò), 非常偏向?qū)崙?zhàn), 理論也講的很不錯(cuò). 就是國(guó)內(nèi)沒(méi)什么知名度. 所以在這里想你推薦下, 你學(xué)random庫(kù)肯定發(fā)現(xiàn)需要很多數(shù)論的知識(shí)吧.
https://www.amazon.com/Crypto...
國(guó)內(nèi)有引進(jìn)的原版, 你可以自己搜下.
你的npm倉(cāng)庫(kù)地址是不是被更改過(guò),可以改成淘寶的試試
npm config set registry http://registry.npm.taobao.org/
然后再初始化你的項(xiàng)目試試
似乎是因?yàn)閘ock_guard本身的存在是與mutex強(qiáng)關(guān)聯(lián)的,也是說(shuō)lock_guard一旦存在,mutex就必須是locked的,而條件變量中是有過(guò)程要求釋放鎖的
源碼沒(méi)有問(wèn)題,你只需要按照文檔操作便可編譯成功。
以 Ubuntu 16.04 LTS 為例,主要參考文檔(均來(lái)自項(xiàng)目源碼)如下
下面是一鍵安裝 btc-pool 腳本,主要參考上述文檔,已測(cè)
#!/bin/bash
# 一鍵安裝 btc-pool
#
# OS: Ubuntu 16.04 LTS
# @author 李毅
set -e
build_dir=/tmp
# 由 jarven 測(cè)試提供,https://segmentfault.com/q/1010000014060045?_ea=3538159
# 不需要兼容舊版 bitcoin,及不需要錢包功能的時(shí)候,可以使用系統(tǒng)默認(rèn)的 libdb-dev
# 及 libdb++-dev 庫(kù),請(qǐng)把下一行的 false 改成 true。
use_latest_libdb=false
cpus=`grep -Ee 'processor\s:' /proc/cpuinfo | wc -l`
# 禁止 root 用戶運(yùn)行此腳本
#=========================
if [ "$UID" -eq 0 ] ; then
echo "禁止 root 用戶運(yùn)行此腳本"
exit 1
fi
# 創(chuàng)建臨時(shí)目錄
#=============
[ -d $build_dir ] || mkdir -p $build_dir
# 安裝系統(tǒng)必要組件
#==================
# aptitude
if ! which aptitude >/dev/null 2>&1 ; then
sudo apt-get update
sudo apt-get install -y aptitude
fi
# 安裝 libboost-all-dev 需要人工干預(yù)
if ! aptitude show libboost-all-dev > /dev/null 2>&1 ; then
echo ""
echo "!!! 安裝 libboost-all-dev 需要人工干預(yù),以降級(jí)某些依賴項(xiàng)的版本 !!!"
echo "<1> 第一次詢問(wèn)時(shí)按下 'n' 鍵"
echo "<2> 第二次詢問(wèn)時(shí)按下 'y' 鍵"
aptitude install libboost-all-dev
fi
#
sudo aptitude install -y \
build-essential autotools-dev libtool autoconf automake pkg-config cmake \
openssl libssl-dev libcurl4-openssl-dev libconfig++-dev \
libgmp-dev libmysqlclient-dev libzookeeper-mt-dev \
libzmq3-dev libgoogle-glog-dev libevent-dev
# 編譯安裝 librdkafka-v0.9.1
#===========================
if ! pkg-config --libs rdkafka ; then
sudo aptitude install -y zlib1g zlib1g-dev python
cd $build_dir
if [ ! -f librdkafka-0.9.1.tar.gz ]; then
wget -O librdkafka-0.9.1.tar.gz https://github.com/edenhill/librdkafka/archive/0.9.1.tar.gz
tar zxvf librdkafka-0.9.1.tar.gz
fi
cd librdkafka-0.9.1
make clean
./configure
make
sudo make install
fi
# 編譯 biticoin
#==============
sudo aptitude install -y \
build-essential libtool autotools-dev automake pkg-config libssl-dev \
libevent-dev bsdmainutils python3
if [ "$use_latest_libdb" = true ]; then
sudo aptitude install -y libdb-dev libdb++-dev
else if ! aptitude show libdb4.8++-dev >/dev/null 2>&1 ; then
# 安裝低版 libdb4.8
sudo apt-get install -y software-properties-common
sudo add-apt-repository -y ppa:bitcoin/bitcoin
sudo apt-get update
sudo apt-get install -y libdb4.8-dev libdb4.8++-dev
fi
cd $build_dir
if [ ! -f bitcoin-0.16.0rc1.tar.gz ]; then
wget -O bitcoin-0.16.0rc1.tar.gz https://github.com/bitcoin/bitcoin/archive/v0.16.0rc1.tar.gz
tar zxf bitcoin-0.16.0rc1.tar.gz
fi
cd $build_dir/bitcoin-0.16.0rc1
./autogen.sh
if [ "$use_latest_libdb" = true ]; then
./configure --with-incompatible-bdb --disable-wallet
else
./configure
fi
make -j $cpus
# 編譯 btcpool
#=============
cd $build_dir
if [ ! -d btcpool ]; then
git clone https://github.com/btccom/btcpool.git
fi
cd $build_dir/btcpool
[ ! -d build ] && mkdir build
cd build
# Release build
cmake -DCHAIN_TYPE=BTC -DCHAIN_SRC_ROOT=$build_dir/bitcoin-0.16.0rc1 ..
make -j $cpus
若有問(wèn)題,請(qǐng)隨時(shí)留言。
mode
和 fread
不對(duì)應(yīng)。
(仔細(xì)閱讀 mode
說(shuō)明。)
正確使用方式,請(qǐng)自行參考:
你需要局部組件
不同組件觸發(fā)事件的時(shí)候傳一個(gè)不同的參數(shù)就行了
想到兩個(gè)方法:
方法一:
如果是比較新的內(nèi)核版本3.9以上,支持SO_REUSEPORT,那么你可以:
如果不支持SO_REUSEPORT,不同進(jìn)程無(wú)法同時(shí)監(jiān)聽(tīng)同一個(gè)端口,則需要在老的進(jìn)程內(nèi)fork一個(gè)子進(jìn)程,并且把負(fù)責(zé)監(jiān)聽(tīng)的文件描述符傳給新進(jìn)程。
這個(gè)方法可以實(shí)現(xiàn)你的需求,但需要比較多的修改Golang封裝的net/http等系統(tǒng)庫(kù),技術(shù)復(fù)雜度比較高。
好處是不需要nginx參與,對(duì)它透明。
方法二:
可以同時(shí)運(yùn)行兩個(gè)或更多個(gè)http server,同時(shí)提供服務(wù),讓nginx做負(fù)載均衡,其中有一個(gè)需要升級(jí)重啟時(shí),就發(fā)個(gè)信號(hào),收到信號(hào)后停止接收新請(qǐng)求,已有請(qǐng)求處理完畢正常退出就可以了。這個(gè)過(guò)程不需要修改nginx配置,也不需要reload nginx。
這個(gè)方法也需要改Golang封裝的net/http,但修改量相比方法一會(huì)小很多。
$username = ''
是$username
的默認(rèn)參數(shù),可以使用new User()
或new User('abc')
來(lái)給User
類的$username
屬性賦值$username = []
是一種好的習(xí)慣,對(duì)$username
進(jìn)行初始化,參見(jiàn)手冊(cè)PHP基礎(chǔ),初始化變量
<?php
function test($res){
$ret = [];
if($res){
$ret = [1,2,3];
}
return $ret;
}
function test2($res){
if($res){
$ret = [1,2,3];
}
return $ret;
}
var_dump(test(false));
var_dump(test2(false));
輸出結(jié)果相同是因?yàn)閜f指向同一個(gè)函數(shù),為"In devired"是因?yàn)閜f指向虛函數(shù)。
8.5.1.2.2 For a call to a non-static member function, the postfix expression shall be an implicit (12.2.2, 12.2.3) or explicit class member access (8.5.1.5) whose id-expression is a function member name, or a pointer-to-member expression (8.5.4) selecting a function member;8.5.1.2.3 If a function or member function name is used, the appropriate function and the validity of the call are determined according to the rules in 16.3. If the selected function is non-virtual, or if the id-expression in the class member access expression is a qualified-id, that function is called. Otherwise, its final overrider (13.3) in the dynamic type of the object expression is called; such a call is referred to as a virtual function call.
取非靜態(tài)成員函數(shù)的地址必須加&。不是CLION的問(wèn)題。
8.5.2.1.4 A pointer to member is only formed when an explicit & is used and its operand is a qualified-id not enclosed in parentheses.
引自N4741, C++20 working draft. 這兩部分歷代標(biāo)準(zhǔn)應(yīng)該都一樣,不放心的話自己根據(jù)編譯器設(shè)置查閱相關(guān)文檔吧。
man shmat
vc生成的程序能在Windows7上運(yùn)行也只是因?yàn)閣indows上大多裝了msvc的庫(kù),
你在mingw的安裝目錄下找到這兩個(gè)DLL和可執(zhí)行文件一起拿到別的電腦上就可以用了。
1.兩個(gè)father
變量都是引用類型,但是父組件的resetData
直接改變了father
的地址,子組件引用的仍然是舊的father
2.你只在構(gòu)造函數(shù)內(nèi)把props.father
的值賦給了state.father
,后面隨著props.father
的改變,state.father
并不會(huì)主動(dòng)響應(yīng),原因見(jiàn)上一點(diǎn)
3.解決方法有兩種:
1)全都用props.father
2)添加componentWillReceiveProps
函數(shù):
componentWillReceiveProps = (nextProps) => {
this.setState({
father: nextProps.father
})
}
已解決.
java對(duì)于帶報(bào)名的類的查找是需要路徑的,看修改就知道了.
mkdir com
mv MyTest.jar com/
tar cvf MyTest.jar com
答一:
靜態(tài)變量引用C++11 單例的一種寫法,這里常量的作用主要是為了避免更改 empty_string,empty_vector,empty_map。
答二:
是的,靜態(tài)變量引用C++11 單例的一種寫法。常量的意義見(jiàn)答一。
obj的屬性沒(méi)有顯示的初始化導(dǎo)致的吧如果子組件的obj直接定義的、
data(){
return{
obj:{}
}
}
你通過(guò)調(diào)用方法改變obj是不會(huì)將obj的屬性設(shè)置成響應(yīng)式的,vue檢測(cè)不到,你應(yīng)該預(yù)先給出需要?jiǎng)討B(tài)變化的屬性
data(){
return{
obj:{
a:'',
b:''
}
}
}
代碼0 0 0
為空
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
北大青鳥(niǎo)中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過(guò)二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。