<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          SegmentFault 思否社區(qū)本周精彩回答匯總

          共 10514字,需瀏覽 22分鐘

           ·

          2021-03-29 19:22


          Q1:TS如何定義對象中key的類型?

          報錯說string[]類型不能賦給never[]類型,也就是說ts默認(rèn)給viewerImages對象中的array賦了never[],我現(xiàn)在想給這個array賦string[]類型應(yīng)該就不會報錯了,該如何賦值?


          A1:

          {
              array: [] as string[]
          }

          或者

          {
              array: new Array<string>()
          }


          問答鏈接:

          https://segmentfault.com/q/1010000039727787#




          Q2:為什么Java中0左移的結(jié)果是1?

          System.out.println(1<<0);//1
          System.out.println( 0 >> 1);//0```

          第一個輸出結(jié)果不解,0左移結(jié)果不應(yīng)該是0嗎


          A2:0左移結(jié)果不應(yīng)該是0嗎?,然而你寫的是 1<<0

          問答鏈接:

          https://segmentfault.com/q/1010000039726226




          Q3:js高并發(fā)下如何刪除數(shù)組的某個對象

          let userIndex = this.userList.findIndex(q => q.userId == userId);
          this.userList.splice(userIndex, 1);


          A3:是的,不存在你這種情況。js是單線程順便多說一句。你的刪除效率是 n。刪除n個就是 N N。如果真的是高并發(fā)可以自己整個數(shù)據(jù)結(jié)構(gòu)。或者說緩存幾個,然后一并刪除。刪除的時候從后往前刪。當(dāng)然還得看你多高的并發(fā)。每秒幾百個?還是每秒幾個?


          問答鏈接:

          https://segmentfault.com/q/1010000039723392




          Q4:jquery 返回上一個頁面而不刷新頁面

          一個jquery+laiui寫的后端管理系統(tǒng),里面鑲嵌一個商城,在商品頁面點(diǎn)擊進(jìn)入詳情頁,瀏覽器上的url是不變的,商品頁面可以無限滾動獲取商品,現(xiàn)在是想要在瀏覽完詳情頁之后返回商品頁面,商品頁面不刷新,還在當(dāng)時瀏覽的位置.
          使用了window.history.go(-1);和history.go(-1)回去都還是刷新,想問一下還有什么可以解決的方式呢?


          A4:我看你這個不是單頁面應(yīng)用,本質(zhì)上應(yīng)該是無解.但是有些彎彎道道可以考慮模擬解決。比如,用url hash標(biāo)記當(dāng)時進(jìn)去的滾動位置,出來后自動再次滾動條到原來的位置,但是你這個是無限滾動,可能數(shù)據(jù)獲取有點(diǎn)麻煩也帶來性能影響

          再比如:用戶單擊商品詳情的時候,不跳轉(zhuǎn)頁面,彈出一個iframe頁面遮住當(dāng)前的視圖,模擬一種跳轉(zhuǎn)頁面的假象,用戶單擊回退時關(guān)閉這個iframe顯示原來的頁面,或者詳情頁直接用大彈窗處理。

          問答鏈接:

          https://segmentfault.com/q/1010000039701034




          Q5:如何動態(tài)改變返回json的映射關(guān)系

          比如說權(quán)限控制時,角色role1只能訪問數(shù)據(jù)表table1的部分字段。我的想法是將建立一個role-數(shù)據(jù)表-字段的表table2,然后在查詢table1后會根據(jù)orm返回一個對象,然后再查詢table2, 返回json時只對允許訪問的字段進(jìn)行映射。

          但是我只知道怎么建立靜態(tài)的映射以及過濾,不知道如何動態(tài)地進(jìn)行映射?
          除了這種方式,還能如何控制字段的訪問權(quán)限?


          A5:其實(shí)呢,控制字段權(quán)限有沒有啥好東西可用,之前我沒遇到過類似需求,沒太關(guān)注,但是根據(jù)跟題主的評論來看,其實(shí)就是動態(tài)的序列化。其他不說Jackson我記得就是可以做到動態(tài)序列化的

          例如如下,這樣就只有id被序列化出來了


          @Data
          @AllArgsConstructor
          @JsonFilter("user")
          public class User {
              private Long id;
              private String name;
              
              public static void main(String[] args) throws JsonProcessingException {
                  User user = new User(1l, "haha");
                  
                  ObjectMapper objectMapper = new ObjectMapper();
                  SimpleFilterProvider simpleFilterProvider = new SimpleFilterProvider();
                  simpleFilterProvider.addFilter("user", SimpleBeanPropertyFilter.filterOutAllExcept("id"));
                  objectMapper.setFilterProvider(simpleFilterProvider);
                  
                  String s = objectMapper.writeValueAsString(user);
                  System.out.println(s);
              }
          }

          如果僅僅只是為了達(dá)到這樣的效果,其實(shí)也就夠了叭。僅供參考嗷...

          問答鏈接:

          https://segmentfault.com/q/1010000039722472




          Q6:JavaScript let 塊級作用域?qū)ψ饔糜蜴湹挠绊懀?/span>

          for (var i = 0; i < 3; i++) {  
                setTimeout(function () {
                  console.log(i);  //依次輸出3,3,3
                }, 1000);
              }

          for (let j = 0; j < 3; j++) {
            setTimeout(function () {
              console.log(j);  //依次輸出0,1,2
            }, 1000);


          A6:

          • 每次執(zhí)行到循環(huán)體中的setTimeout方法,該方法都會將調(diào)用的回調(diào)函數(shù)放入“任務(wù)隊(duì)列中”,等待主線程(執(zhí)行棧中)的事件全部執(zhí)行完畢后,執(zhí)行隊(duì)列頭的事件。
          • 第一次循環(huán)后,任務(wù)隊(duì)列中只有一個被setTimeout方法放入的回調(diào)函數(shù),其作用域鏈中記錄的是i的初始值0
          • 由于let 聲明的變量只存在于塊級作用域內(nèi),因此每一次循環(huán)體執(zhí)行完畢會銷毀該變量,然后在for循環(huán)出的新塊let聲明一個新的變量j,按for循環(huán)原本既定的順序為其賦值,然后執(zhí)行循環(huán)體
          • 因此第二次循環(huán)時,任務(wù)隊(duì)列中的回調(diào)函數(shù)的作用域鏈中,記錄的是新創(chuàng)建的,重新被賦值為1的變量i
          • 正是由于塊級作用域相互獨(dú)立互不影響,才不會覆蓋j的值,就此,我有點(diǎn)理解為什么let能防止數(shù)據(jù)污染了(還有es6規(guī)定let不能重復(fù)聲明這一點(diǎn))

          問答鏈接:https://segmentfault.com/q/1010000039715476




          Q7:JS 字符串 兩側(cè)的引號問題

          const body = document.body;
          const imgArr = ['../img/login01.jpg','../img/login02.jpg','../img/login03.jpg','../img/login04.jpg'];
          body.style.backgroundImage = `url(${imgArr[Math.floor(Math.random()*imgArr.length)]})`; //寫法1

          // console.log(`"url('${imgArr[Math.floor(Math.random()*imgArr.length)]}')"`);  寫法2

          console.log(body.style.backgroundImage);


          A7你要根據(jù)情況分析不成功的原因:

          1. 地址為空(表示賦值不成功)
          2. 地址不為空,但路徑不對

          根據(jù)情況,你的是2,是你存儲的信息不對,修改匹配

          如果是1則要追蹤數(shù)據(jù)產(chǎn)生流程啦。

          問答鏈接:

          https://segmentfault.com/q/1010000039715216#




          Q8:node服務(wù)器

          用ssh連接在騰訊云服務(wù)器,開啟node服務(wù)器后,可以通過域名加端口號訪問,可是當(dāng)關(guān)閉終端后就訪問不到了。

          網(wǎng)站都使用什么發(fā)布的,是要放在把node打包放apeach文件里嗎,還是可以讓這個端口一直開著,怎么才能永遠(yuǎn)可以訪問。


          A8:pm2,用起來還好吧。可以自動重啟,然后還能起別的服務(wù)。用起來也挺簡單 node index.js 改成 pm2 start index.js 就好了。


          問答鏈接:

          https://segmentfault.com/q/1010000039699330




          Q9:padding-bottom: 20px;和padding: 0 0 20px 0;從性能上來說,哪個更好


          A9:理論上來說前者會好一些,后者畢竟怎么都得有一次 split 或 parse 的開銷。但對于現(xiàn)代瀏覽器而言,這點(diǎn)差別執(zhí)行百萬次都不一定會有毫秒級的抖動……


          問答鏈接:

          https://segmentfault.com/q/1010000039713838




          Q10:有沒有輕量級的 DOM 操作 js 庫,像 jquery 的 DOM 操作一樣?

          我想要一個 DOM 操作的 js 庫,輕量級的,體積越小越好。能像 jquery 進(jìn)行 DOM 操作。jquery 體積太大,里面除了 DOM 操作還有其他的,如 ajax 等。


          A10:DOM 7


          問答鏈接:

          https://segmentfault.com/q/1010000039347421




          Q11:jq如何監(jiān)聽文本框的變化

          //監(jiān)聽文本框改變事件
          $(document).on('change keyup changed'"input,textarea,select"function() {
              alert("改變了");
          });
          //按鈕改變的值無法監(jiān)聽
          $(document).on("click""button"function(e, row) {
             $('input').val(111111);
          })


          A11:修改完成之后手動觸發(fā)一下試試:

          $('input').trigger('change');


          問答鏈接:

          https://segmentfault.com/q/1010000039712623




          Q12:CSS如何實(shí)現(xiàn)局部光照效果?

          在Win10中,可以看到這樣的效果

          當(dāng)鼠標(biāo)處于圖中紅色標(biāo)記位置時,周圍會帶有一個局部光,可以照亮原本是黑色的線框,背景也由原來的純黑變成了一部分受光照影響,請問這種效果用CSS怎么實(shí)現(xiàn)?

          A12:

          <!DOCTYPE html>
          <html>
          <head>
           <meta charset="UTF-8">
           <title>light effect</title>
           <style type="text/css">
           .flex-row {display:-webkit-flex;display:flex;-webkit-flex-direction:row;flex-direction:row;}
              .flex-row > .flex-main {-webkit-flex:1 1 auto;flex:1 1 auto;}
              .flex-row > .flex-side {-webkit-flex:0 0 auto;flex:0 0 auto;}
              .flex-row.flex-spacing > .flex-main:not(:first-child), .flex-row.flex-spacing > .flex-side:not(:first-child) {margin-left:0.5em;}
              .flex-row.flex-margin {margin-left:0.5em;margin-right:0.5em;}
              .flex-row.flex-padding {padding-left:0.5em;padding-right:0.5em;}
              .flex-row .flex-warp {flex-wrap:wrap;}
              .flex-column {display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;}
              .flex-column > .flex-main {-webkit-flex:1 1 auto;flex:1 1 auto;}
              .flex-column > .flex-side {-webkit-flex:0 0 auto;flex:0 0 auto;}
              .box {position:relative;display:inline-block;color:#FFF;font-size:20px;background-color:#000;
           --pt-x : 0;
           --pt-y : 0;
           }
              .box .effect {position:absolute;top:0;bottom:0;left:0;right:0;
           background:radial-gradient(circle at calc(var(--pt-x) * 1px) calc(var(--pt-y) * 1px), #FFF, rgba(255,255,255,0) 4em);z-index:0;}
              .box .item-list {z-index:2;}
              .box .item-list .item {position:relative;margin:1em;padding:1em;line-height:1.5em;border:2px solid rgba(255,255,255,0.5);background-color:rgba(0,0,0,0.7);background-clip:padding-box;box-shadow:0 0 0 1em #000;}
              .box .item-list .item .icon {margin-right:1em;width:1.5em;height:1.5em;background-color:rgba(255,255,255,0.5);}
              .box .item-list .item .name {}
              .box .item-list .item .desc {color:#999;font-size:16px;}
              </style>
           <script> document.addEventListener('DOMContentLoaded'function(){
                  let domBox = document.querySelector('.box');
           domBox.addEventListener('mousemove'function($evt){
                      let rect = domBox.getBoundingClientRect();
           domBox.style.setProperty('--pt-x'$evt.pageX - rect.left);
           domBox.style.setProperty('--pt-y'$evt.pageY - rect.top);
           });
           });
           </script>
          </head>
          <body>
          <div class="box">
           <div class="effect"></div>
           <div class="item-list">
           <div class="flex-row item-list-row">
           <div class="flex-side flex-row item">
           <div class="flex-side icon"></div>
           <div class="flex-main">
           <div class="name">系統(tǒng)</div>
           <div class="desc">顯示、聲音、通知、電源</div>
           </div> </div> <div class="flex-side flex-row item">
           <div class="flex-side icon"></div>
           <div class="flex-main">
           <div class="name">系統(tǒng)</div>
           <div class="desc">顯示、聲音、通知、電源</div>
           </div> </div> </div> <div class="flex-row item-list-row">
           <div class="flex-side flex-row item">
           <div class="flex-side icon"></div>
           <div class="flex-main">
           <div class="name">系統(tǒng)</div>
           <div class="desc">顯示、聲音、通知、電源</div>
           </div> </div> <div class="flex-side flex-row item">
           <div class="flex-side icon"></div>
           <div class="flex-main">
           <div class="name">系統(tǒng)</div>
           <div class="desc">顯示、聲音、通知、電源</div>
           </div> </div> </div> </div></div>
          </body>
          </html>


          問答鏈接:

          https://segmentfault.com/q/1010000039359551l



          點(diǎn)擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 瀏覽更多精彩問答。

          - END -
          瀏覽 33
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  无码操| 怡红院成人在线 | 亚洲熟妇性ⅩXXX交潮喷 | 久久婷综合 | 日韩熟女色情视频一区二区三区 |