主頁 > 作業系統 > 如何在自動完成回呼之外訪問jQueryUI自動完成建議?

如何在自動完成回呼之外訪問jQueryUI自動完成建議?

2022-06-03 04:04:22 作業系統

我想結合如何在自動完成回呼之外訪問 jQuery UI 自動完成建議?


我有麻煩的地方:

許多用戶不會從自動完成器中選擇值,他們只是輸入文本并單擊“搜索”。我想確保只插入來自自動完成器的值。我知道,僅單擊自動完成器值并不是最好的用戶體驗,因此我希望如果用戶輸入文本并單擊“搜索”,則會自動選擇自動完成器中的匹配值(如果存在)。

我嘗試了這段小代碼:

$('#search').on('click',function(){
  if($( '.tag-input[placeholder="test1"]' ).val() != "") //user did not finish entry
  {
    testTags.addTags($( '.tag-input[placeholder="test1"]' ).val());
  }
});

如果輸入包含一個尚未轉換為標簽的值,它會檢查按鈕單擊。如果是這樣,我將此值添加為標簽。我的問題是,在“轉換”為標簽之前,該值應與自動完成器值匹配。如何訪問之外的那些自動完成器建議.autocomplete({})

一個相關的問題是:如何從 onchange 事件外部獲取 jQuery UI 自動完成值? 不同之處在于,我寧愿需要自動完成建議而不是選定的值。


!function(){"use strict";function e(e,t){return"string"==typeof e?(t||document).querySelectorAll(e):[e]}function t(e,t){return"string"==typeof e?(t||document).querySelector(e):e}function n(e,t){var n=document.createElement(e);if(t)for(var i in t)void 0!==n[i]&&(n[i]=t[i]);return n}function i(){var e=document.documentElement,t={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"mozTransitionEnd",OTransition:"oTransitionEnd otransitionend"};for(var n in t)if(void 0!==e.style[n])return t[n];return!1}function r(e,t,n,i){i=i||!1,e.addEventListener(t,function t(r){n.call(this,r),e.removeEventListener(r.type,t,i)},i)}function a(e,t){return new RegExp("(^|\\s )" e "(\\s |$)").test(t.className)}function o(e,t){if(!a(e,t))return t.className =""===t.className?e:" " e}function s(e,t){t.className=t.className.replace(new RegExp("(^|\\s )" e "(\\s |$)"),"")}function u(u){function l(){y=n("div",{className:"tags-container"}),N=n("input",{type:"text",className:"tag-input",placeholder:h.placeholder||""}),y.appendChild(N),""!==h.value.trim()&&c(),h.type="hidden",h.parentNode.insertBefore(y,h.nextSibling),y.addEventListener("click",v,!1),y.addEventListener("keydown",d,!1),y.addEventListener("keyup",g,!1)}function c(){var e=h.value.trim().split(",");e.forEach(function(e){if(e=e.trim(),!~x.indexOf(e)){var t=f(e);x.push(e),y.insertBefore(t,N)}})}function f(e){var t=n("div",{className:"tag",innerHTML:'<span >' e '</span><button >&times;</button>'});return t}function v(e){if(e.preventDefault(),"tag__remove"===e.target.className){var n=e.target.parentNode,i=t(".tag__name",n);y.removeChild(n),x.splice(x.indexOf(i.textContent),1),h.value=x.join(",")}N.focus()}function d(e){if("INPUT"===e.target.tagName&&"tag-input"===e.target.className){var t=e.target,n=e.which||e.keyCode;N.previousSibling&&n!==C.BACK&&s("tag--marked",N.previousSibling);var i=t.value.trim();n===C.ENTER?(t.blur(),m(i),E&&clearTimeout(E),E=setTimeout(function(){t.focus()},10)):n===C.BACK&&(""!==e.target.value||L||(L=!0,p()))}}function g(e){L=!1}function m(t){if(t=t.toString().replace(/,/g,"").trim(),""===t)return N.value="";if(~x.indexOf(t)){var n=e(".tag",y);return Array.prototype.forEach.call(n,function(e){e.firstChild.textContent===t&&(o("tag--exists",e),k?r(e,k,function(){s("tag--exists",e)}):s("tag--exists",e))}),N.value=""}var i=f(t);y.insertBefore(i,N),x.push(t),N.value="",h.value =""===h.value?t:"," t}function p(){if(0!==x.length){var t=e(".tag",y),n=t[t.length-1];if(!a("tag--marked",n))return void o("tag--marked",n);x.pop(),y.removeChild(n),h.value=x.join(",")}}var h=t(u);if(!h.instance){h.instance=this;var E,y,N,T=h.type,k=i(),x=[],C={ENTER:13,BACK:8},L=!1;l(),this.getTags=function(){return x},this.clearTags=function(){h.instance&&(x.length=0,h.value="",y.innerHTML="",y.appendChild(N))},this.addTags=function(e){if(h.instance){if(Array.isArray(e))for(var t=0,n=e.length;t<n;t  )m(e[t]);else m(e);return x}},this.destroy=function(){h.instance&&(y.removeEventListener("click",v,!1),y.removeEventListener("keydown",d,!1),y.removeEventListener("keyup",d,!1),y.parentNode.removeChild(y),h.type=T,T=null,x=null,E=null,y=null,N=null,delete h.instance)}}}window.Tags=u}();




var testTags = new Tags('#testTags');

$( function() {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC",
      "C",
      "C  ",
      "Clojure",
      "COBOL",
      "ColdFusion",
      "Erlang",
      "Fortran",
      "Groovy",
      "Haskell",
      "Java",
      "JavaScript",
      "Lisp",
      "Perl",
      "PHP",
      "Python",
      "Ruby",
      "Scala",
      "Scheme"
    ];
    
    $( '.tag-input[placeholder="test1"]' ).autocomplete({
      source: availableTags,
      select: function(event, ui){
                event.preventDefault();
                event.stopPropagation();

                testTags.addTags(ui.item.value);

                return false;
            }
    });
    
    $('#search').on('click',function(){
      if($( '.tag-input[placeholder="test1"]' ).val() != "") //user did not finish entry
      {
        testTags.addTags($( '.tag-input[placeholder="test1"]' ).val());
      }
    });
    
 });
*,:after,:before{box-sizing:border-box}.tags-container{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-bottom:15px;width:100%;min-height:34px;padding:2px 5px;font-size:14px;line-height:1.6;background-color:transparent;border:1px solid #ccc;border-radius:1px;overflow:hidden;word-wrap:break-word;box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}input.tag-input{-ms-flex:3;flex:3;border:0;outline:0}.tag{position:relative;margin:2px 6px 2px 0;padding:1px 20px 1px 8px;font-size:inherit;font-weight:400;text-align:center;color:#fff;background-color:#317caf;border-radius:3px;transition:background-color .3s ease;cursor:default}.tag:first-child{margin-left:0}.tag--marked{background-color:#6fadd7}.tag--exists{background-color:#edb5a1;-webkit-animation:a 1s linear;animation:a 1s linear}.tag__name{margin-right:3px}.tag__remove{position:absolute;right:0;bottom:0;width:20px;height:100%;padding:0 5px;font-size:16px;font-weight:400;transition:opacity .3s ease;opacity:.5;cursor:pointer;border:0;background-color:transparent;color:#fff;line-height:1}.tag__remove:hover{opacity:1}@-webkit-keyframes a{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}}@keyframes a{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>

<input id="testTags" placeholder="test1">
<button id="search">search</button>

uj5u.com熱心網友回復:

非常不清楚您要完成什么。我猜,如果用戶輸入“apple”,離開輸入,然后單擊搜索按鈕,您想從中獲取第一個匹配項availableTags可能有效嗎?

考慮以下。

  $('#search').on('click', function() {
    if ($('.tag-input[placeholder="test1"]').val() != "") {
      //user did not finish entry
      var partialTag = $('.tag-input[placeholder="test1"]').val();
      var tag = $.ui.autocomplete.filter(availableTags, partialTag)[0];
      testTags.addTags(tag);
    }
  });

使用$.ui.autocomplete.filter()可以幫助以與自動完成相同的方式過濾結果。它回傳一個結果陣列。如下所示:https ://jqueryui.com/autocomplete/#multiple

它沒有大量記錄,但您可以在這里找到更多資訊:https ://api.jqueryui.com/autocomplete/

這是一個完整的例子。

! function() {
  "use strict";

  function e(e, t) {
    return "string" == typeof e ? (t || document).querySelectorAll(e) : [e]
  }

  function t(e, t) {
    return "string" == typeof e ? (t || document).querySelector(e) : e
  }

  function n(e, t) {
    var n = document.createElement(e);
    if (t)
      for (var i in t) void 0 !== n[i] && (n[i] = t[i]);
    return n
  }

  function i() {
    var e = document.documentElement,
      t = {
        transition: "transitionend",
        WebkitTransition: "webkitTransitionEnd",
        MozTransition: "mozTransitionEnd",
        OTransition: "oTransitionEnd otransitionend"
      };
    for (var n in t)
      if (void 0 !== e.style[n]) return t[n];
    return !1
  }

  function r(e, t, n, i) {
    i = i || !1, e.addEventListener(t, function t(r) {
      n.call(this, r), e.removeEventListener(r.type, t, i)
    }, i)
  }

  function a(e, t) {
    return new RegExp("(^|\\s )"   e   "(\\s |$)").test(t.className)
  }

  function o(e, t) {
    if (!a(e, t)) return t.className  = "" === t.className ? e : " "   e
  }

  function s(e, t) {
    t.className = t.className.replace(new RegExp("(^|\\s )"   e   "(\\s |$)"), "")
  }

  function u(u) {
    function l() {
      y = n("div", {
        className: "tags-container"
      }), N = n("input", {
        type: "text",
        className: "tag-input",
        placeholder: h.placeholder || ""
      }), y.appendChild(N), "" !== h.value.trim() && c(), h.type = "hidden", h.parentNode.insertBefore(y, h.nextSibling), y.addEventListener("click", v, !1), y.addEventListener("keydown", d, !1), y.addEventListener("keyup", g, !1)
    }

    function c() {
      var e = h.value.trim().split(",");
      e.forEach(function(e) {
        if (e = e.trim(), !~x.indexOf(e)) {
          var t = f(e);
          x.push(e), y.insertBefore(t, N)
        }
      })
    }

    function f(e) {
      var t = n("div", {
        className: "tag",
        innerHTML: '<span >'   e   '</span><button >&times;</button>'
      });
      return t
    }

    function v(e) {
      if (e.preventDefault(), "tag__remove" === e.target.className) {
        var n = e.target.parentNode,
          i = t(".tag__name", n);
        y.removeChild(n), x.splice(x.indexOf(i.textContent), 1), h.value = x.join(",")
      }
      N.focus()
    }

    function d(e) {
      if ("INPUT" === e.target.tagName && "tag-input" === e.target.className) {
        var t = e.target,
          n = e.which || e.keyCode;
        N.previousSibling && n !== C.BACK && s("tag--marked", N.previousSibling);
        var i = t.value.trim();
        n === C.ENTER ? (t.blur(), m(i), E && clearTimeout(E), E = setTimeout(function() {
          t.focus()
        }, 10)) : n === C.BACK && ("" !== e.target.value || L || (L = !0, p()))
      }
    }

    function g(e) {
      L = !1
    }

    function m(t) {
      if (t = t.toString().replace(/,/g, "").trim(), "" === t) return N.value = "";
      if (~x.indexOf(t)) {
        var n = e(".tag", y);
        return Array.prototype.forEach.call(n, function(e) {
          e.firstChild.textContent === t && (o("tag--exists", e), k ? r(e, k, function() {
            s("tag--exists", e)
          }) : s("tag--exists", e))
        }), N.value = ""
      }
      var i = f(t);
      y.insertBefore(i, N), x.push(t), N.value = "", h.value  = "" === h.value ? t : ","   t
    }

    function p() {
      if (0 !== x.length) {
        var t = e(".tag", y),
          n = t[t.length - 1];
        if (!a("tag--marked", n)) return void o("tag--marked", n);
        x.pop(), y.removeChild(n), h.value = x.join(",")
      }
    }
    var h = t(u);
    if (!h.instance) {
      h.instance = this;
      var E, y, N, T = h.type,
        k = i(),
        x = [],
        C = {
          ENTER: 13,
          BACK: 8
        },
        L = !1;
      l(), this.getTags = function() {
        return x
      }, this.clearTags = function() {
        h.instance && (x.length = 0, h.value = "", y.innerHTML = "", y.appendChild(N))
      }, this.addTags = function(e) {
        if (h.instance) {
          if (Array.isArray(e))
            for (var t = 0, n = e.length; t < n; t  ) m(e[t]);
          else m(e);
          return x
        }
      }, this.destroy = function() {
        h.instance && (y.removeEventListener("click", v, !1), y.removeEventListener("keydown", d, !1), y.removeEventListener("keyup", d, !1), y.parentNode.removeChild(y), h.type = T, T = null, x = null, E = null, y = null, N = null, delete h.instance)
      }
    }
  }
  window.Tags = u
}();




var testTags = new Tags('#testTags');

$(function() {
  var availableTags = [
    "ActionScript",
    "AppleScript",
    "Asp",
    "BASIC",
    "C",
    "C  ",
    "Clojure",
    "COBOL",
    "ColdFusion",
    "Erlang",
    "Fortran",
    "Groovy",
    "Haskell",
    "Java",
    "JavaScript",
    "Lisp",
    "Perl",
    "PHP",
    "Python",
    "Ruby",
    "Scala",
    "Scheme"
  ];

  $('.tag-input[placeholder="test1"]').autocomplete({
    source: availableTags,
    select: function(event, ui) {
      event.preventDefault();
      event.stopPropagation();
      testTags.addTags(ui.item.value);
      return false;
    }
  });

  $('#search').on('click', function() {
    if ($('.tag-input[placeholder="test1"]').val() != "") {
      //user did not finish entry
      var partialTag = $('.tag-input[placeholder="test1"]').val();
      var tag = $.ui.autocomplete.filter(availableTags, partialTag)[0];
      testTags.addTags(tag);
    }
  });

});
*,
:after,
:before {
  box-sizing: border-box
}

.tags-container {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-flow: row wrap;
  flex-flow: row wrap;
  margin-bottom: 15px;
  width: 100%;
  min-height: 34px;
  padding: 2px 5px;
  font-size: 14px;
  line-height: 1.6;
  background-color: transparent;
  border: 1px solid #ccc;
  border-radius: 1px;
  overflow: hidden;
  word-wrap: break-word;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1)
}

input.tag-input {
  -ms-flex: 3;
  flex: 3;
  border: 0;
  outline: 0
}

.tag {
  position: relative;
  margin: 2px 6px 2px 0;
  padding: 1px 20px 1px 8px;
  font-size: inherit;
  font-weight: 400;
  text-align: center;
  color: #fff;
  background-color: #317caf;
  border-radius: 3px;
  transition: background-color .3s ease;
  cursor: default
}

.tag:first-child {
  margin-left: 0
}

.tag--marked {
  background-color: #6fadd7
}

.tag--exists {
  background-color: #edb5a1;
  -webkit-animation: a 1s linear;
  animation: a 1s linear
}

.tag__name {
  margin-right: 3px
}

.tag__remove {
  position: absolute;
  right: 0;
  bottom: 0;
  width: 20px;
  height: 100%;
  padding: 0 5px;
  font-size: 16px;
  font-weight: 400;
  transition: opacity .3s ease;
  opacity: .5;
  cursor: pointer;
  border: 0;
  background-color: transparent;
  color: #fff;
  line-height: 1
}

.tag__remove:hover {
  opacity: 1
}

@-webkit-keyframes a {
  0%,
  to {
    -webkit-transform: translateZ(0);
    transform: translateZ(0)
  }
  10%,
  30%,
  50%,
  70%,
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0)
  }
  20%,
  40%,
  60%,
  80% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0)
  }
}

@keyframes a {
  0%,
  to {
    -webkit-transform: translateZ(0);
    transform: translateZ(0)
  }
  10%,
  30%,
  50%,
  70%,
  90% {
    -webkit-transform: translate3d(-5px, 0, 0);
    transform: translate3d(-5px, 0, 0)
  }
  20%,
  40%,
  60%,
  80% {
    -webkit-transform: translate3d(5px, 0, 0);
    transform: translate3d(5px, 0, 0)
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.13.1/jquery-ui.js"></script>

<input id="testTags" placeholder="test1">
<button id="search">search</button>

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/485320.html

標籤:javascript jQuery jQuery-ui 自动完成

上一篇:如何閱讀我的自定義jQuery小部件的選項?

下一篇:jQuery切換類沒有回應

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more