<dfn id="hx5t3"><strike id="hx5t3"><em id="hx5t3"></em></strike></dfn>

    <thead id="hx5t3"></thead><nobr id="hx5t3"><font id="hx5t3"><rp id="hx5t3"></rp></font></nobr>

    <listing id="hx5t3"></listing>

    <var id="hx5t3"></var>
    <big id="hx5t3"></big>

      
      

      <output id="hx5t3"><ruby id="hx5t3"></ruby></output>
      <menuitem id="hx5t3"><dfn id="hx5t3"></dfn></menuitem>

      <big id="hx5t3"></big>

        hsfzxjy

        hsfzxjy 查看完整檔案

        廣州編輯中國科學技術大學  |  計算與應用數學 編輯  |  填寫所在公司/組織 hsfzxjy.site 編輯
        編輯

        Intern @ MSRA
        大四 | exHFer | USTCer
        Pythonista

        個人動態

        hsfzxjy 贊了回答 · 2018-09-01

        mysql 投票問題 事務

        用戶id和投票id做成聯合的唯一鍵即可.

        CREATE TABLE user_vote_record (
            user_id INT,
            vote_id INT,
            UNIQUE KEY uk_user_vote (user_id , vote_id)
        );

        關注 4 回答 2

        hsfzxjy 贊了回答 · 2018-08-24

        js怎樣獲取本季度28日下午16:00:00的時間戳?

        從來沒有了到還需要科普季度的知識

        來自百度百科

        人們俗稱的“季度”,就是把一年平均分成四份,按照春、夏、秋、冬的順序
        一年可以分為四個季度,每個季度歷時3個月。
        第一季度:1月-3月
        第二季度:4月-6月
        第三季度:7月-9月
        第四季度:10月-12月
        而實際上嚴格的劃分應該為:(按照中國的緯度)
        第一季度:3-5月(春季)
        第二季度:6-8月(夏季)
        第三季度:9-11月(秋季)
        第四季度:12-2月(冬季)

        關注 7 回答 6

        hsfzxjy 贊了回答 · 2018-08-23

        解決怎樣監控頁面的進入與離開

        // 瀏覽器狀態
        function browser_status(action) {
            // 各種瀏覽器兼容
            let hidden, state, visibilityChange,status
            if (typeof document.hidden !== "undefined") {
                hidden = "hidden"
                visibilityChange = "visibilitychange"
                state = "visibilityState"
            } else if (typeof document.mozHidden !== "undefined") {
                hidden = "mozHidden"
                visibilityChange = "mozvisibilitychange"
                state = "mozVisibilityState"
            } else if (typeof document.msHidden !== "undefined") {
                hidden = "msHidden"
                visibilityChange = "msvisibilitychange"
                state = "msVisibilityState"
            } else if (typeof document.webkitHidden !== "undefined") {
                hidden = "webkitHidden"
                visibilityChange = "webkitvisibilitychange"
                state = "webkitVisibilityState"
            }
        
            // 添加監聽器,在title里顯示狀態變化
            document.addEventListener(visibilityChange, function() {
                status = document[state]
                if (document[state] == 'hidden') {
                    document.title = '你不要我了'
                } else {
                    document.title = '你又回來找我了'
                }
            }, false)
        }

        關注 3 回答 2

        hsfzxjy 回答了問題 · 2018-08-23

        解決為什么字符串中的和音符去掉后變成了對應的ASCII字符?

        如果你執行:

        print([ord(x) for x in a])
        # [112, 253, 116, 293, 246, 241, 32, 105, 115, 32, 97, 119, 101, 115, 111, 109, 101, 10]
        print([ord(x) for x in b])
        # [112, 121, 769, 116, 104, 770, 111, 776, 110, 771, 32, 105, 115, 32, 97, 119, 101, 115, 111, 109, 101, 10]

        你會發現,雖然 a、b 打印出來是一樣的,內部的編碼卻不一樣。原因在于 unicode.normalize 把帶音調的字符都拆開了。而 cmb_chrs 中記錄了音調符號的 Unicode 碼,執行 b.translate 后,音調自然就沒有了。

        關注 2 回答 2

        hsfzxjy 贊了回答 · 2018-08-21

        js中關于let的用法,《javascript權威指南》這本書中是不是講解有誤?至少不符合現在的標準?

        1. 你問的是let x = x + 1這一段么?會報錯,這是TDZ(暫時性死區),x已經在塊級作用域創建,但在執行前不能訪問。
        2. 這種用法好像并未標準化(實驗性),可以理解為顯示的作用域塊。

        關注 2 回答 1

        hsfzxjy 回答了問題 · 2018-08-20

        解決PAT 1014 福爾摩斯的約會

        第二個 for 循環不對:

            for(; i < min(s1.size(), s2.size()); i++){
                if(s1[i] == s2[i]){
                    if(s1[i] >= 'A' && s1[i] <= 'N')
                        cout << 10 + s1[i] - 'A' << ":";
                    else if(isdigit(s1[i]))
                        cout << '0' << s1[i] << ":";
                    // 此處別的情況呢?如果匹配了不是數字也不是 A~N 的字母,循環仍要繼續
                    break;
                }
            }

        關注 2 回答 1

        hsfzxjy 贊了問題 · 2018-08-18

        業務偽刪除該這么設計?

        業務偽刪除該這么設計?

        現在大數據時代,數據是很重要的,所以對于一些數據系統一般不會做物理刪除,刪除也會有備份,所以需要設計一套偽刪除的邏輯,但在下才疏學淺,對這一套邏輯了解不深,想向各位請教請教!

        下面是鄙人搜索得來的兩種方法,但個人覺得兩種方法都不是特別好,想問下各位有什么更好的方法沒?

        1.一般系統采用記錄加DeleteAt字段來判斷數據是否刪除,但這樣每次查詢(單表,多表聯查)都需要加上DeleteAt判斷,系統上復雜了一個維度。而且如果數據又有唯一索引時,就需要加上DeleteAt字段一起做唯一索引,這樣隨著數據量增加,索引就會消耗很多的空間。

        2.還有一種做法是加一張表做刪除歸檔表,刪除的記錄從表中刪除然后遷移到刪除歸檔表中,這樣偽刪除也完成了,但如果做數據恢復的時候就比較麻煩了,(刪除歸檔表怎么設計暫不清楚,想請教請教)。

        回復一下回答里只用一個status字段標記數據狀態的不好之處

        只用一個status字段標記,當有唯一鍵存在時有缺陷,這種唯一鍵的場景還比較多。
        講下場景:
        系統要求一個用戶只能創建一個項目,當然項目我可以刪除重建。
        只有一個status字段標記項目狀態, 1 啟用 2 刪除

        project表 user_id project_id status 三個字段,組成唯一鍵

        user_id project_id status
        u1 p1 2
        u1 p2 1

        好上面就是用戶u1創建一個項目p1后,刪除重新建立了項目p2,然后現在來看,如果用戶把p2也刪除,就會出現刪除異常情況,違反了表唯一鍵約束,所以只用一個status字段標記的缺點就暴露出來了。

        之前在本人的項目中也是采用status字段標記的方式,如果刪除后又重建就會先去找已經刪除的記錄重新啟用,但這種做法是不對的,因為之前刪除的項目關聯了其他記錄,或者存在一些之前id標記的數據統計記錄,如果啟用之前的刪除的項目記錄,在需求上就不對了。

        關注 13 回答 10

        hsfzxjy 贊了回答 · 2018-08-05

        如何比較兩個版本號大小,如:1.2.4a和1.2.3b?

        常見的版本號命名方式,GNU,WINDOWS等,無外乎數字+字母,數字可能就是版本的迭代,如:V1.2.3, 也可能是日期,如V2018-06-25, 20180625。還有可能跟上階段命名如 αβγ等。如果你只想比較數字部分,只需要去掉非數字部分,比較大小就行。
        如果要比較字母部分,那要區分來看,對a b c這種,直接轉成小寫做大小比較就行。對trial, demo, unregistered這些,你要做個字典了。
        如js代碼

        let version1 = 'v1.2.3a';
        let version2 = 'v1.2.4b';
        let versionNumber1 = version1.replace(/[a-zA-Z]/g, (match,i)=> match.charCodeAt()).replace(/[^\d]/g, '') - 0;
        let versionNumber2 = version2.replace(/[a-zA-Z]/g, (match,i)=> match.charCodeAt()).replace(/[^\d]/g, '') - 0;
        console.log(versionNumber1 > versionNumber2); 

        以上代碼面對 v1.2.97av1.10.1b 這樣位數不一樣的版本號可能有問題,特改進下,差異太大的就不行了,比如比較v2021333,v1.2.3

        let version1 = 'v1.2.97a';
        let version2 = 'v1.10.1b';
        let versionArr1 = version1.replace(/[a-zA-Z]/g, (match,i)=> '.' + match.charCodeAt()).split(/[^\d]/);
        let versionArr2 = version2.replace(/[a-zA-Z]/g, (match,i)=> '.' + match.charCodeAt()).split(/[^\d]/);
        
        // 保證兩個數據長度一樣,面向 `v1.2` 和 `v1.2.3` 這樣的情況
        if(versionArr1.length > versionArr2.length) {
            versionArr2.splice(versionArr2.length, 0, ...Array(versionArr1.length-versionArr2.length).fill(0))
        } else {
            versionArr1.splice(versionArr1.length, 0, ...Array(versionArr2.length-versionArr1.length).fill(0))
        }
        
        // 按節比較
        let result = 'version1 equels version2.'
        for(let i=0 ; i < versionArr1.length; i ++) {
            if (+versionArr1[i] > +versionArr2[i]) {
                result = 'version1 is bigger.';
                break;
            } else if (+versionArr1[i] < +versionArr2[i]){
                result = 'version2 is bigger.';
                break;
            } 
        }
        console.log(result);

        關注 9 回答 7

        hsfzxjy 贊了回答 · 2018-08-02

        vue 組件中內容不顯示

        你掛載了嗎,

        關注 4 回答 4

        hsfzxjy 回答了問題 · 2018-08-02

        解決要出人命了,scrapy執行出現no module named 'misc'

        關注 2 回答 2

        認證與成就

        • 獲得 1256 次點贊
        • 獲得 37 枚徽章 獲得 2 枚金徽章, 獲得 16 枚銀徽章, 獲得 19 枚銅徽章

        擅長技能
        編輯

        開源項目 & 著作
        編輯

        注冊于 2015-01-22
        個人主頁被 19.4k 人瀏覽

        一本到在线是免费观看_亚洲2020天天堂在线观看_国产欧美亚洲精品第一页_最好看的2018中文字幕