主頁 > 資料庫 > 2020 CCPC網路選拔賽部分題解

2020 CCPC網路選拔賽部分題解

2020-09-23 17:58:49 資料庫

1002 Graph Theory Class

題意:給n個結點1,2,…n,i和j之間的邊權是lcm(i+1,j+1),問最小生成樹邊權和
解題思路:讓所有結點變成2,3,4…n+1.這樣把其中所有質數向2連邊,所有合數向它的因子連邊,這樣答案為[3,n+1]數字和+[3,n+1]質數和,然后套min25板子就行,難點是需要知道min25板子(

#include <bits/stdc++.h>
using namespace std;

const int N = 1000010;
int k;
typedef long long LL;

namespace Min25 {

    int prime[N], id1[N], id2[N], flag[N], ncnt, m;

    LL g[N], sum[N], a[N], T, n;

    inline int ID(LL x) {
        return x <= T ? id1[x] : id2[n / x];
    }

    inline LL calc(LL x) {
        return x * (x + 1) / 2 - 1;
    }

    inline void init() {
        //for(int i=0;i<N;++i) prime[i]=id1[i]=id2[i]=flag[i]=g[i]=sum[i]=a[i]=0;
        ncnt=0;m=0;
        T = sqrt(n + 0.5);
        for (int i = 2; i <= T; i++) {
            if (!flag[i]) prime[++ncnt] = i, sum[ncnt] = sum[ncnt - 1] + i;
            for (int j = 1; j <= ncnt && i * prime[j] <= T; j++) {
                flag[i * prime[j]] = 1;
                if (i % prime[j] == 0) break;
            }
        }
        for (LL l = 1; l <= n; l = n / (n / l) + 1) {
            a[++m] = n / l;
            if (a[m] <= T) id1[a[m]] = m; else id2[n / a[m]] = m;
            g[m] = calc(a[m]) % k;
        }
        for (int i = 1; i <= ncnt; i++)
            for (int j = 1; j <= m && (LL)prime[i] * prime[i] <= a[j]; j++)
                g[j] = (g[j] - (((LL)prime[i]%k) * (g[ID(a[j] / prime[i])] - sum[i - 1])%k) +k)%k;
    }

    inline LL solve(LL x) {
        if (x <= 1) return x;
        return n = x, init(), g[ID(n)];
    }

}

int main() {
    int T;
    scanf("%d",&T);
    while(T--)
    {
        LL n; scanf("%lld%d", &n,&k);
        LL tmp=Min25::solve(n+1);
        tmp=(tmp-2+k)%k;
        tmp=(tmp+(((3+n+1)%k)*((n-1)%k))/2)%k;
        cout<<tmp<<endl;
    }
    //printf("%lld\n", Min25::solve(n));
}

1003 Express Mail Taking

水題

#include<bits/stdc++.h>
#define LL long long
#define inf 0x3f3f3f3f
#define all(x) (x).begin(),(x).end()
#define PII pair<int,int>
#define FOR(i,a,b) for(int i=a;i<b;++i) 
#define lson rt<<1
#define rson rt<<1|1
using namespace std;
#ifdef LOCAL 
const int maxn=30; 
#else
const int maxn=1e6+5;
#endif
int a[maxn];
int n,m,k;
void init()
{
    scanf("%d%d%d",&n,&m,&k);
    FOR(i,0,m) scanf("%d",a+i);
    sort(a,a+m);
}
void sol()
{
    int pos=1;
    LL ans=0;
    for(int i=m-1;i>=0;--i)
    {
        ans+=abs(pos-k);
        ans+=abs(a[i]-k);
        pos=a[i];
    }
    ans+=abs(pos-1);
    cout<<ans<<'\n';
}
int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        init();
        sol();
    }
    return 0;
}

1005 Lunch

題意:有n個數字,每次操作可以選擇一個數字x,把它變成k個x/k(k是x的因子),選擇的x不可以是1.當全場只有1則輸了
解題思路
對于一個l來說,它由若干個質因子組成,對于奇數質因子,比如t,取了之后,t被拆成t個l/t,因為t是奇數,其實相當于變成了1個l/t的情況,所以l最多操作它的(奇數質因子個數)次,會變成 2 x 2^x 2x的形式,而變成 2 x 2^x 2x的時候,只要x不為0,那么不管怎么取都會變成必敗態,也就是說, 2 x 2^x 2x對應了nim博弈種只剩下1個石頭的狀態,
那么(奇數質因子個數+ [l為偶數])就是當前局面可以操作的最多次數,對應nim博弈中的石子個數,可以理解為,如果取k = 偶數,相當于把整塊石子拿完,取奇數則取多少個奇數質因子對應了取多少個石子,
然后就轉化成了nim博弈問題,求異或和就好了

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100100;
int isp[maxn], p[maxn];
int main(void) {
    int N = 100010;
    for (int i=2;i<=N;i++) {
        if (isp[i] == 0) p[++p[0]] = i;
        for (int j=1;j<=p[0] && i*p[j]<=N;j++) {
            isp[i*p[j]]=1;
            if (i%p[j]==0) break;
        }
    }
    int T; scanf("%d",&T);
    while (T--) {
        int n; scanf("%d",&n);
        int ans = 0;
        for (int i=1;i<=n;i++) {
            int l; scanf("%d",&l);
            int g=0;
            if (l%2==0) {
                g++;
                while (l%2==0) l/=2;
            }
            for (int j=2;p[j]*p[j]<=l;j++) if (l%p[j]==0) {
                g++, l/=p[j];
                while (l%p[j] == 0) g++, l/=p[j];
            }
            if (l > 1) g++;
            ans ^= g;
        }
        if (ans) printf("W\n");
        else printf("L\n");
    }
    return 0;
}

1006 Robotic Class

不是我寫的,當我正在翻看它長長的題面的時候小伙伴已經開始敲起了代碼(
據說是直接模擬題意,

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int n, K[505];
int a[505][2020],b[505][2020],c[505][2020],d[505][2020];
ll gao(int t, ll x, int cc) {
    if (t == n) return x;
    int pos = lower_bound(a[t],a[t]+K[t],x) - a[t];
    if (pos < K[t] && x == a[t][pos] && cc == 1) pos++;
    return gao(d[t][pos], c[t][pos]*(ll)x+b[t][pos], c[t][pos]*cc);
}
int main(void) {
    //freopen("f.in","r",stdin);
    int T; scanf("%d",&T);
    for (int cas=1;cas<=T;cas++) {
        printf("Case #%d: ",cas);
        scanf("%d",&n);
        for (int i=1;i<n;i++) {
            scanf("%d",&K[i]);
            for (int j=0;j<=K[i];j++) {
                scanf("%d%d%d",&c[i][j],&b[i][j],&d[i][j]);
                if (j < K[i]) scanf("%d",&a[i][j]);
            }
        }
        int f=1;
        for (int i=n-1;i>=1;i--) {
            for (int j=0;j<K[i];j++) {
                ll left = gao(i, a[i][j], -1);
                ll right = gao(i, a[i][j], 1);
                ll mid = gao(i, a[i][j], 0);
                if (left != right || left != mid) {
                    f=0;
                    break;
                }
            }
            if (f == 0) break;
        }
        if (f) printf("YES\n");
        else printf("NO\n");
    }

    return 0;
}

1007 CCPC Training Class

題意:對于字串S,定義Border(S)為S最長的不為S的前綴使得該前綴是S的后綴,
定義D(S) = D(Border(S))+1,當S為空則D(S) = 0
給一個字串,可以重排它們,設重排出來的串是 t 1 t 2 t 3 . . . t n t_1t_2t_3...t_n t1?t2?t3?...tn?,設T[i] = t 1 t 2 . . . t i t_1t_2...t_i t1?t2?...ti?,求 M a x ( D ( T [ i ] ) ) ( 1 < = i < = n ) Max(D(T[i])) \ (1<=i<=n) Max(D(T[i])) (1<=i<=n)最大可以是多少
解題思路:一看榜單這么多人過,看樣例猜一個出現最多次的字母次數,敢交敢過,

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define lowbit(x) ((x)&(-(x)))
#define mid ((l+r)>>1)
#define lson rt<<1, l, mid
#define rson rt<<1|1, mid+1, r
#define fors(i, a, b) for(int i = (a); i < (b); ++i)
using namespace std;
int a[26];
const int maxn = 2e5 + 50;
char s[maxn];
int main()
{
    int T; cin>>T;
    int ca = 0;
    while(T--){
        scanf("%s", s);
        memset(a,0,sizeof a);
        int ans = 0;
        int len = strlen(s);
        fors(i,0,len) ans = max(ans, ++a[s[i]-'a']);
        printf("Case #%d: %d\n",++ca, ans);
    }
}

1010 Reports

真 · 簽到

1011 3x3 Convolution

題意:給一個n * n的矩陣,然后和另一個3 * 3的卷積核一直做卷積,a[i][j]以(i,j)位置作為3 * 3的左上角來卷積
解題思路:如果不是左上角為1的卷積核,則一定會產生流失導致最終全部為0.

#include<bits/stdc++.h>
#define ll long long
#define pb push_back
#define lowbit(x) ((x)&(-(x)))
#define mid ((l+r)>>1)
#define lson rt<<1, l, mid
#define rson rt<<1|1, mid+1, r
#define fors(i, a, b) for(int i = (a); i < (b); ++i)
using namespace std;
const int maxn = 55;
int a[maxn][maxn];
int b[3][3];
int n;
int main()
{
    int T; cin>>T;
    while(T--){
        scanf("%d", &n);
        fors(i,0,n)
            fors(j,0,n) scanf("%d", &a[i][j]);
        int f = 1;
        fors(i,0,3) fors(j,0,3){
            scanf("%d", &b[i][j]);
            if(i==0&&j==0){
                if(b[i][j] == 0) f = 0;
            }else{
                if(b[i][j] > 0) f = 0;
            }
        }
        if(f){
            fors(i,0,n)
                fors(j,0,n) {
                    printf("%d", a[i][j]);
                    if(j==n-1) printf("\n");
                    else printf(" ");
                }
        }else{
            fors(i,0,n)
                fors(j,0,n) {
                    printf("0");
                    if(j==n-1) printf("\n");
                    else printf(" ");
                }
        }
    }
}

1012 Xor

以前寫過差不多的,
稍微改一下就是這題

1013 Residual Polynomial

題意:給一個多項式 f ( x ) = ∑ i = 0 n a i x i f(x) = \sum_{i=0}^n a_ix^i f(x)=i=0n?ai?xi
f i ( x ) = b i f i ? 1 ′ ( x ) + c i f i ? 1 f_i(x) = b_if_{i-1}'(x)+c_if_{i-1} fi?(x)=bi?fi?1?(x)+ci?fi?1?
f 1 ( x ) = f ( x ) f_1(x) = f(x) f1?(x)=f(x)
f n ( x ) f_n(x) fn?(x)的每個系數.
解題思路:以 f 1 f_1 f1?為基礎一步一步化開觀察
( f n ( x ) f^n(x) fn(x)代表對 f ( x ) f(x) f(x)求n階導)
f 2 ( x ) = b 2 f 1 ( x ) + c 2 f ( x ) f_2(x)=b_2f^1(x)+c_2f(x) f2?(x)=b2?f1(x)+c2?f(x)
f 3 ( x ) = b 2 b 3 f 2 ( x ) + ( b 2 c 3 + b 3 c 2 ) f 1 ( x ) + c 2 c 3 f ( x ) f_3(x)=b_2b_3f^2(x)+(b_2c_3+b_3c_2)f^1(x)+c_2c_3f(x) f3?(x)=b2?b3?f2(x)+(b2?c3?+b3?c2?)f1(x)+c2?c3?f(x)
f 4 ( x ) = b 2 b 3 b 4 f 3 ( x ) + ( b 2 b 3 c 4 + b 3 b 4 c 2 + b 2 b 4 c 3 ) f 2 ( x ) + ( c 2 c 3 b 4 + c 3 c 4 b 2 + c 2 c 4 b 3 ) f 1 ( x ) + c 2 c 3 c 4 f ( x ) f_4(x)=b_2b_3b_4f^3(x)+(b_2b_3c_4+b_3b_4c_2+b_2b_4c_3)f^2(x)+(c_2c_3b_4+c_3c_4b_2+c_2c_4b_3)f^1(x)+c_2c_3c_4f(x) f4?(x)=b2?b3?b4?f3(x)+(b2?b3?c4?+b3?b4?c2?+b2?b4?c3?)f2(x)+(c2?c3?b4?+c3?c4?b2?+c2?c4?b3?)f1(x)+c2?c3?c4?f(x)
可以發現, f n n ( x ) f_n^n(x) fnn?(x)的運算式中, f i ( x ) f^i(x) fi(x)的系數對應 ∏ i = 2 n ( b i x + c i ) \prod_{i=2}^n(b_ix+c_i) i=2n?(bi?x+ci?) x i x^i xi的系數,設為 p i p_i pi?,這個東西可以分治NTT求出來,
設最終 x i x^i xi的系數為 w i w_i wi?
則可得 w i = ∑ i + j = k p j ? a k ? ∏ t = i + 1 k t w_i=\sum_{i+j=k} p_j*a_k*\prod_{t=i+1}^{k} t wi?=i+j=k?pj??ak??t=i+1k?t
后面那個乘積部分對于每個 w i w_i wi?不統一,改寫一下:
則可得 w i ? i ! = ∑ i + j = k p j ? a k ? k ! w_i*i!=\sum_{i+j=k} p_j*a_k*k! wi??i!=i+j=k?pj??ak??k!
a [ i ] = a [ n ? i ] ? ( n ? i ) ! a[i] = a[n-i]*(n-i)! a[i]=a[n?i]?(n?i)!,則每個 i ! w i i!w_i i!wi?也可以通過p和修改后的a卷積求出了,

以下是通過代碼,跑的挺慢,不推薦當作分治NTT的板子,

#include<bits/stdc++.h>
#define pb push_back
#define ll long long
using namespace std;
const int maxn = 2e5 + 50;
const int mod = 998244353;
int qm(int a, int b){int res = 1; while(b){if(b&1) res = (ll)res*a%mod; a = (ll)a*a%mod; b >>= 1; } return res; }
int mulwn[maxn<<2], invwn[maxn<<2];
int fac[maxn], ifac[maxn];
void INIT(){
    fac[0] = ifac[0] = 1;
    for(int i = 1; i < maxn; ++i) fac[i] = (ll)fac[i-1]*i%mod, ifac[i] = qm(fac[i], mod-2);

    for(ll i=1;i < maxn*4;i<<=1) mulwn[i]=qm(3,(mod-1)/i);
    for(ll i=1;i < maxn*4;i<<=1) invwn[i]=qm(mulwn[i],mod-2);
}
struct NTT {
    int n, m, rev[maxn << 2];
    int a[maxn << 2], b[maxn << 2];
    void init(int len) {
        for (n = 1, m = 0; n < len + len; n <<= 1, m++);
        for (int i = 0; i < n; ++i) {
            rev[i] = (rev[i >> 1] >> 1) | (i & 1) << (m - 1);
            a[i] = 0;
            b[i] = 0;
        }
    }
    void ntt(int *a, int f) {//
        for (int i = 0; i < n; ++i)if (i < rev[i])swap(a[i], a[rev[i]]);

        for (int k = 2; k <= n; k <<= 1) {
            int wn=(f>0)?mulwn[k]:invwn[k];
            int mid = k>>1;
            for(int i = 0; i < n; i += k){
                int w = 1;
                for(int j = 0; j < mid; ++j, w = (ll)w*wn%mod){
                    int temp = ((ll)w*a[i+j+mid])%mod;
                    a[i+j+mid] = (a[i+j]-temp+mod)%mod;
                    a[i+j] = (a[i+j]+temp)%mod;
                }
            }
        }
        return;
    }
    void Calculate() {
        ntt(a, 1); ntt(b, 1);
        for (int i = 0; i < n; ++i)a[i] = (ll)a[i]*b[i]%mod;//??μ?è??£
        ntt(a, -1);
        int invl = qm(n, mod-2);
        for(int i = 0; i < n; ++i){
            a[i] = (ll)a[i]*invl%mod;
        }
    }
} F;
int n;
int a[maxn], b[maxn], c[maxn];
void init()
{
    cin>>n;
    for(int i = 0; i <= n; ++i) scanf("%d", &a[i]);
    for(int i = 2; i <= n; ++i) scanf("%d", &b[i]);
    for(int i = 2; i <= n; ++i) scanf("%d", &c[i]);
}
vector<int> w[maxn<<2];
void work(int rt, int l, int r){
    w[rt].clear();
    if(l == r){
        w[rt].pb(c[l]); w[rt].pb(b[l]);
        return;
    }
    int mid = (r+l)>>1;
    work(rt<<1, l, mid);
    work(rt<<1|1, mid+1, r);
    int len = w[rt<<1].size() + w[rt<<1|1].size()-1;
    if(r-l+1<=1000){
        for(int i = 0; i < len; ++i) w[rt].pb(0);
        for(int i = 0; i < w[rt<<1].size(); ++i){
            for(int j = 0; j < w[rt<<1|1].size(); ++j){
                w[rt][i+j] = (w[rt][i+j] + (ll)w[rt<<1][i]*w[rt<<1|1][j]%mod)%mod;
            }
        }
        w[rt<<1].clear(); w[rt<<1|1].clear();
        return;
    }
    F.init(len);
    for(int i = 0; i < w[rt<<1].size(); ++i) F.a[i] = w[rt<<1][i];
    for(int i = 0; i < w[rt<<1|1].size(); ++i) F.b[i] = w[rt<<1|1][i];
    w[rt<<1].clear(); w[rt<<1|1].clear();
    F.Calculate();
    for(int i = 0; i < len; ++i){
        w[rt].push_back(F.a[i]);
    }
    return;
}

void sol(){
    work(1,2,n);//w[rt][i] * a[j]
    int len = w[1].size() + n;
    F.init(len);
    for(int i = 0; i < w[1].size(); ++i) {
        F.a[i] = w[1][i];
        //cout<<"i:"<<i<<" val:"<<w[1][i]<<endl;
    }
    for(int i = 0; i <= n; ++i) F.b[i] = (ll)a[n-i]*fac[n-i]%mod;
    F.Calculate();
    for(int i = 0; i <= n; ++i) {
        int ans = (ll)F.a[n-i]*ifac[i]%mod;
        printf("%d", ans);
        if(i == n) printf("\n");
        else printf(" ");
    }
}
int main(){

    INIT();
    int T; cin>>T;
    while(T--){
        init();
        sol();
    }
}
/*
3
3
0 0 0 1
1 1
1 1
*/

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

標籤:其他

上一篇:吊爆了!阿里P8耗時9個月肝出一份核心筆記《SpringBoot 2,從小系統到架構大系統》

下一篇:回文數字[藍橋杯]

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