主頁 > 資料庫 > Razor應用程式。我希望在執行C#方法洗掉DB注冊表之前,html按鈕顯示jQueryUI確認對話框。

Razor應用程式。我希望在執行C#方法洗掉DB注冊表之前,html按鈕顯示jQueryUI確認對話框。

2021-10-17 11:44:09 資料庫

我正在用Razor應用程式學習網路開發。我有一個頁面,PeopleIndex,其中一個表格顯示了一個人的串列,在每一行之后,首先有一個<a ...>來編輯人的資料,其次有一個<input ...>,我想從那里呼叫jQuery UI確認對話框(我在.cshtml中已經有代碼),從那里如果我點擊 "是 "按鈕,那個人的注冊資訊就會被洗掉,這就是,呼叫.cshtml.cs檔案中的Delete()方法。我知道這個程序不是一個提交動作,我這么說是因為我在互聯網上找到的所有與我的問題有關的東西都是關于 "表單方法=POST和型別=提交",所有這些都應該在另一個頁面中完成,而我只想在我的個人串列頁面中完成。但是,如果我錯了,我將聽取意見。 我附上我的PeopleIndex Razor頁面的兩個檔案:

************* PeopleIndex.cshtml *****************

@page
@model WebAppPersonas.Pages.PersonasIndexModel
@{
    Layout = null;
}
<! DOCTYPE html> 
<html lang="en"> 
<head title="Lista de personas"/span>>
    <link rel="styleheet" href="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.css"/span> />
    < link rel="styleheet" href="~/lib/bootstrap/dist/css/bootstrap。 min.css" />
    <link rel="styleheet" href="~/css/site. css" />
    <script src="~/lib/jquery-ui-1. 12.1.custom/external/jquery/jquery.js"></script>
    <script src="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.js"></script>/span>
    <script> 
        $(document).ready(function () {
            // 確認對話框
            $('#confirmDialog').dialog({
                autoOpen: false,
                寬度: 500,
                高度:自動。
                modal: true,
                可調整大小: false,
                按鈕。{
                    "是": function () {
                        $(".ui-dialog-buttonpane button:contains('Si')").button("disable")。
                        $(".ui-dialog-buttonpane button:contains('No')").button("disable")。
                        從.cs檔案中呼叫Delete()C#方法 // 都不知道這里要做什么
                        $(this).dialog("close")。
                    },
                    "No": function () {
                        $(this).dialog("close");
                    }
                }
            });

            $('#deleteReg').click(function (e) {
                e.preventDefault()。
                $('#confirmDialog').dialog('open')。
            });
        });
    </script>/span>
</head>/span>
<body> 
    <a asp-page=" 。 /InsertUpdate" class="btn btn-primary"> 添加人 </a> 
    <h2> 人員名單 </h2> 
    <table class="table"> 
        <thead>/span>
            <tr>/span>
                <th> @Html.DisplayNameFor(Model => Model.people[0].Id) </th> 
                <th> @Html.DisplayNameFor(Model => Model.people[0].Name) </th> 
                <th> @Html.DisplayNameFor(Model => Model.people[0].Age) </th> 
                <th> @Html.DisplayNameFor(Model => Model.people[0].Email) </th> 
            </tr>/span>
        </thead>/span>
        <tbody> 
            @foreach (var item in Model.people)
            {
                <tr> 
                    <td> @Html.DisplayFor(modelItem => item.Id) </td> 
                    <td> @Html.DisplayFor(modelItem => item.Name) </td> 
                    <td> @Html.DisplayFor(modelItem => item.Age) </td> 
                    <td> @Html.DisplayFor(modelItem => item.Email) </td> 
                    <td> a asp-page=" 。 /InsertUpdate" asp-route-id="@item. Id">更新</a>| < input type="button" value="Delete" onclick="I don't know what goes here" />  </td>
                </tr> 
            }
        </tbody> 
    </table>/span>

    < div id="confirmDialog" title="確認洗掉">/span>
        <p>您即將洗掉一個注冊表,您確定嗎?</p>
    </div>/span>
</body> 
</html>/span>
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>

********** PeopleIndex.cshtml.cs *****************

 public void OnGet() 
    {
        people = dataAccess.GetPeople()。
    }

    public ActionResult Delete(int? id) ? 
    {
        dataAccess.DeletePerson(id.Value)。
        return Redirect("./PeopleIndex") 。
    }

我不得不剪掉.cshtml.cs檔案的標題,因為網站不允許我格式化該代碼,然后因為這個原因,網站不允許我發布這個問題。我希望現在它允許我發布問題。這非常復雜。我認為在不同的語言中格式化代碼的職責應該更容易,但是,......這就是有的東西...... 謝謝你。

**** 嗨,邁克爾 我用你給我的代碼編輯了這些檔案。

 $('.deleteButton').click(function (e) {
                e.preventDefault()。
                const id = $(e.target).data("id")。
                $('#confirmDialog').data("id", id);
                $('#confirmDialog').dialog('open')。
            });
<iframe name="sif2" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>

 <tbody>/span>
        @foreach (var item in Model.people)
        {
            <tr> 
                <td> @Html.DisplayFor(modelItem => item.Id) </td> 
                <td> @Html.DisplayFor(modelItem => item.Name) </td> 
                <td> @Html.DisplayFor(modelItem => item.Age) </td> 
                <td> @Html.DisplayFor(modelItem => item.Email) </td> 
                <td> a asp-page=" 。 /InsertUpdate" asp-route-id="@item. Id">更新</a>| < button class="deleteButton" data-id="@item. Id">洗掉</button> </td>
            </tr> 
        }
    </tbody>/span>
<iframe name="sif3" sandbox="allow-form allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>

所以現在還不能作業,但至少我們現在知道問題出在哪里。 我再次附上受影響的檔案和當前的更新,我不放.cs,因為只有它是正常的。 首先是.cshtml.cs(現在我們知道,當點擊deleteButton時,它并沒有進入JS功能。我試著把類換成名字,但還是一樣。

@page
@model WebAppPersonas.Pages.PeopleIndexModel
@section Head
{
    <link rel="styleheet" href="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.css"/span> />
    @*< link rel="styleheet" href="~/lib/bootstrap/dist/css/bootstrap。 min.css" />
        <link rel="styleheet" href="~/css/site. css" />
        <script src="~/lib/jquery-ui-1. 12.1.custom/external/jquery/jquery.js"></script> *@
    <script src="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.js"></script>/span>
    <script>/span>
        $(document).ready(function () {
            /span>確認對話框。
            $('#confirmDialog').dialog({
                autoOpen: false,
                width: 500,
                高度: 自動。
                modal: true,
                resizable: false,
                buttons: {
                    "Yes": function () {
                        $(".ui-dialog-buttonpane button:contains('Yes')").button"disable")。
                        $(".ui-dialog-buttonpane button:contains('No')").button("disable")。
                        DeletePerson($(this).data"id")。
                        $(this).dialog("close") 。
                    },
                    "No"function () {
                        $(this).dialog"close")。
                    }
                }
            });

            $('.deleteButton').click(function (e) {
                e.preventDefault()。
                const id = $(e.target).data("id") 。
                $('#confirmDialog').data("id", id) 。
                $('#confirmDialog').dialog'open')。
            });
        });
    </script>>
    <script>
        const token = document. getElementsByName('__RequestVerificationToken')[0].nodeValuefunction DeletePersonid) {
            const formData = new FormData() 。
            formData.append("id", id)。
            fetch(window.location.href, {
                method: 'DELETE'headers: { 'XSRF-TOKEN': token },
                body: formData
            })
                .then(result => { window. location.reload(); })
                .catch(error => alert("Error sending DELETE request.)
        }
    </script>>
}
< div id="confirmDialog" title="確認洗掉">/span>
    <p> 你即將洗掉一個注冊表。你確定嗎?</p>你將要洗掉一個注冊表。
</div>/span>

<a asp-page=" 。 /InsertUpdate" class="btn btn-primary"> 添加人 </a>/span>
<h2> 人員串列 </h2>
<table class="table"> 
    <thead>/span>
        <tr>/span>
            <th> @Html.DisplayNameFor(Model => Model.people[0].Id) </th> 
            <th> @Html.DisplayNameFor(Model => Model.people[0].Name) </th> 
            <th> @Html.DisplayNameFor(Model => Model.people[0].Age) </th> 
            <th> @Html.DisplayNameFor(Model => Model.people[0].Email) </th> 
        </tr>/span>
    </thead>/span>
    <tbody> 
        @foreach (var item in Model.people)
        {
            <tr> 
                <td> @Html.DisplayFor(modelItem => item.Id) </td> 
                <td> @Html.DisplayFor(modelItem => item.Name) </td> 
                <td> @Html.DisplayFor(modelItem => item.Age) </td> 
                <td> @Html.DisplayFor(modelItem => item.Email) </td> 
                <td> a asp-page=" 。 /InsertUpdate" asp-route-id="@item. Id">更新</a>| < button class="deleteButton" data-id="@item. Id">洗掉</button> </td>
            </tr> 
        }
    </tbody> 
</table>/span>
@Html.AntiForgeryToken()
<iframe name="sif4" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>

第二,_Layout.cshtml

<!DOCTYPE html>
<html lang="en"/span>>
<head>/span>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device width, initial-scale=1. 0" />
    <title>@ViewData["Title"] - WebAppPersonas</title> 
    @*<link rel="styleheet" href="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.css"/span> />*@
    < link rel="styleheet" href="~/lib/bootstrap/dist/css/bootstrap。 min.css" />
    <link rel="styleheet" href="~/css/site. css" />
    <script src="~/lib/jquery-ui-1. 12.1.custom/external/jquery/jquery.js"></script>
    @*<script src="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.js"></script> *@
    @RenderSection("Head", false)
</head> 
<body>/span>
    <script src="~/lib/bootstrap/dist/js/bootstrap. bundle.min.js"></script>
    <script src="~/js/site. js" asp-append-version="true">< /script> 
    <header>/span>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> 
            <div class="container">/span>
                < a class="navbar-brand"  asp-area=" asp-page="/Index"/span>> WebAppPersonas</a>< button class="navbar-toggler"  type="button" data-toggle="collapse" data-target=" 。 navbar-collapse" aria-controls="navbarSupportedContent"aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"/span>> </span>>
                </button> 
                <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">/span>
                    <ul class="navbar-nav flex-grow-1">/span>
                        <li class="nav-item">/span>
                            < a class="nav-link text-dark"  asp-area=" asp-page="/Index"/span>> 首頁</a></li>/span>
                        <li class="nav-item"> 
                            < a class="nav-link text-dark"  asp-area=" asp-page="/Privacy"> Privacy</a></li>/span>
                    </ul>/span>
                </div>/span>
            </div>/span>
        </nav> 
    </header>/span>
    <div class="container"> 
        < main role="main" class="pb-3"> 
            @RenderBody()
        </main> 
    </div> 

    <footer class="border-top footer text-muted" >
        <div class="container"> 
            &copy; 2021 - WebAppPersonas - < a asp-area="" asp-page="/Privacy"/span>> Privacy</a></div>/span>
    </footer> 

    @*<script src="~/lib/jquery/dist/jquery。 min.js"></script>*@。
    <script src="~/lib/bootstrap/dist/js/bootstrap. bundle.min.js"></script>
    <script src="~/js/site. js" asp-append-version="true"></script> 

    @await RenderSectionAsync("Scripts", required: false)
</body> 
</html>/span>
<iframe name="sif5" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>

blockquote

uj5u.com熱心網友回復:

Razor頁面是一種服務器端技術。你不能在javascript中呼叫C#函式。相反 你可以提出一個請求。這個請求將被分配給你的Razor頁面中的一個方法,使用

為了說明這個問題,我們有一個簡單的PageModel:

為了說明這個問題,我們有一個簡單的PageModel。

public class Person
{
    public int Id { get; set; }
    public string Firstname { get; set; }
    public string Lastname { get; set; }
}

public class PersonsModel : PageModel
{
    private static List< Person> _persons = new List<Person>
    {
        new Person{Id = 1, Firstname = "FN1"/span>, Lastname = "LN1"/span>}。
        new Person{Id = 2, Firstname = "FN2"/span>, Lastname = "LN2"/span>},
        new Person{Id = 3, Firstname = "FN3"/span>, Lastname = "LN3"/span>},
        new Person{Id = 4, Firstname = "FN4"/span>, Lastname = "LN4"/span>}.
    };

    public List<Person> Persons => _persons;

    public void OnGet() 
    {
    }

    //從fetch中呼叫(JavaScript) 
    public IActionResult OnDelete(int id) 
    {
        var person = _persons.Find(p => p.Id == id);
        if (person == null) { return NotFound(); // HTTP 404 triggers .catch() in fetch }
        _persons.Remove(person)。
        return new NoContentResult(); // HTTP 204
    }
}

正如你所看到的,OnDelete沒有回傳重定向,因為服務器回應沒有被解釋為 瀏覽器解釋。這取決于您對該回傳值的回應。

在我們的Razor視圖中,我們有一個人的串列和每個人的一個洗掉按鈕。

@page
@model RazorDemo.Pages.PersonsModel
@{
}
<ul> 
    @foreach (var p in Model.Person)
    {
        <li>@p.Id - @p.Firstname @p。 Lastname <button onclick="deletePerson(@p.Id)">onclick="deletePerson(@p.Id) Id)">Delete</button></li>
    }
</ul> 

@*生成一個帶有RequestVerificationToken的隱藏欄位*@。
@Html.AntiForgeryToken()

<script>
    const token = document. getElementsByName('__RequestVerificationToken')[0].value//以multipart/form-data的形式發送DELETE請求(一個普通的HTML表單)function deletePersonid){
        // Crates a HTML form with one parameter (id)
        const formData = new FormData() 。
        formData.append("id", id)。

        fetch(window.location.href, {
            method: 'DELETE'headers: { 'XSRF-TOKEN': token },
            body: formData
        })
            .catch(error => alert("Error sending DELETE request;)
    }
</script>

服務器生成的HTML表單包含一個隱藏的輸入元素,其中有一個防偽造令牌 (request verification token, more information at www.learnrazorpages.com)。 我們必須通過使用@Html.AntiForgeryToken()手動創建這個元素。

JavaScript獲得這個令牌的值。在這之后,我們將創建一個普通 HTML 表格的有效載荷。 因為我們希望在服務器端使用標準的模型系結和驗證。

現在我們需要做一些配置,因為我們要在請求頭中發送防偽造令牌。

現在我們需要做一些配置,因為我們要在請求頭中發送防偽造令牌。

public void ConfigureServices(IServiceCollection services) 
{
    //其他服務
    services.AddAntiforgery(o => o.HeaderName = "xsrf-token") 。
}

現在你可以洗掉一個人,但你的用戶界面不會重繪 。只有在重新加載后,被洗掉的 消失了。現在你到了需要一個JavaScript MVVM框架而不是JQuery的時候了。 一個小型的JavaScript框架是Knockout。一個JavaScript MVVM框架 基于來自你的服務器的json值生成html內容。你可以將你的人員串列 到客戶端,并將其存盤在一個陣列中。當你洗掉一個人時,你可以 你可以在該陣列中洗掉該人,而模板引擎將自動更新你的視圖。

Razor頁面支持JSON結果和不同的處理程式,所以你不需要一個單獨的控制器。

// GET Persons? handler=AllPersons
public IActionResult OnGetAllPersons
{
    return new JsonResult(Persons)。
}

使用jQuery UI

為了包括jQuery UI的參考,你可以在你的主布局(_Layout.cshtml)中定義一個部分。 默認模板使用bootstrap和jQuery。為了讓jQuery UI作業,你必須參考 捆綁版的jQuery,它與jQuery UI一起。我們還在head元素中定義了一個section,它可以被用于

我們還在head元素中定義了一個section,它可以被razor頁面使用。

_Layout.cshtml

<! DOCTYPE html>/span>
<html lang="en"> 
<head>/span>
    <!-- 其他參考資料(bootstrap css, ...)-->
    <script src="~/lib/jquery-ui-1. 12.1.custom/external/jquery/jquery.js"></script>
    @RenderSection("Head", false)
</head> 
<body>/span>
    <!--你的布局與RenderBody() -->
    <!-- 沒有提到JQUERY! -->
    <script src="~/lib/bootstrap/dist/js/bootstrap. bundle.min.js"></script>
    <script src="~/js/site. js" asp-append-version="true"></script> 

    @await RenderSectionAsync("Scripts", required: false)
</body> 
</html>/span>

重要的是。洗掉(或注釋掉)lib/jquery/dist/jquery.min.js的參考。 的參考

現在我們可以在Person頁面上添加一個對話框:

@page
@model RazorDemo.Pages.PersonsModel
@section Head
{
    <link rel="styleheet" href="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.css"/span> />

    <script src="~/lib/jquery-ui-1. 12.1.custom/jquery-ui.min.js"></script>/span>
    <script>/span>
        $(document).ready(function () {
            /span>確認對話框。
            $('#confirmDialog').dialog({
                autoOpen: false,
                width: 500,
                高度"auto",
                modal: true,
                resizable: false,
                buttons: {
                    "Yes": function () {
                        $(".ui-dialog-buttonpane button:contains('Si')").button("disable")。
                        $(".ui-dialog-buttonpane button:contains('No')").button("disable")。
                        //呼叫deletePerson與對話div的data-id。
                        deletePerson($(this).data("id") )。)
                        $(this).dialog("close") 。
                    },
                    "No"function () {
                        $(this).dialog"close")。
                    }
                }
            });

            $('.deleteButton').click(function (e) {
                e.preventDefault()。
                //我們有一個適用于所有按鈕的通用事件處理程式。
                //所以我們必須查看事件源并讀取資料-id屬性。
                const id = $(e.target).data("id") 。
                //現在我們為<div id="confirmDialog">/span>創建一個資料屬性。
                $('#confirmDialog').data("id", id)。
                $('#confirmDialog').dialog'open')。
            });
        });

        function deletePersonid){
            const token = document. getElementsByName('__RequestVerificationToken')[0].valueconst formData = new FormData()。
            formData.append("id", id)。

            fetch(window.location.href, {
                method: 'DELETE'headers: { 'XSRF-TOKEN': token },
                body: formData
            })
                .then(result => { window. location.reload(); })  //重新加載頁面。這不是AJAX,但它將完成這項作業。
                .catch(error => alert("Error sending DELETE request;)
        }
    </script>>
}

< div id="confirmDialog" title="確認洗掉">/span>
    <p> 你即將洗掉一個注冊表。你確定嗎?</p> 
</div>/span>

<ul>/span>
    @foreach (var p in Model.Personals)
    {
        <li>@p.Id - @p.Firstname @p。 Lastname <button class="deleteButton"/span> data-id="@p. Id">Delete</button>></li>>
    }
</ul> 

@*生成一個帶有RequestVerificationToken的隱藏欄位*@。
@Html.AntiForgeryToken()

代替onClick你可以使用一個通用的事件處理器(在jQuery中用.click()定義)。 因此,按鈕有一個data-id屬性。在事件處理程式中,我們檢索這個id $(e.target).data("id")并為對話框div動態地分配一個data-id屬性。

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

標籤:

上一篇:如何通過參考文獻中的一個欄位查找檔案?

下一篇:如何將一個單項追加到其他可排序的串列中?

標籤雲
其他(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)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more