主頁 > 後端開發 > 用Python全面分析某化妝品企業銷售情況,可視化圖顯示資料

用Python全面分析某化妝品企業銷售情況,可視化圖顯示資料

2021-02-07 06:27:48 後端開發

前言

本篇文章是關于某化妝品企業的銷售分析,從分析思路開始帶大家一步步地用python進行分析,找出問題,并提出解決方案的整個流程,

以下文章來源于杰哥的IT之旅

作者:Cherich_sun

 

需求:希望全面了解此某妝品企業的銷售情況,幫助企業運營領導層了解企業整體銷售運營情況及商品銷售情況,為該企業的營銷策略提供相對應的建議和銷售策略,

業務分析流程

1、 場景(診斷現狀)

物件:用戶;銷售
關注點:找到影響銷售的增長因素
目標:發現問題&提出解決方案

2、需求拆解

分析銷售趨勢,找到影響企業營收增長的商品或區域

按月份銷售趨勢圖(整體)
商品銷售額對比(一級、二級,找出最低、最高)
區域銷售額對比(下鉆:區、省,找出最低、最高)

探索不同商品的銷售狀況,為企業的商品銷售,提出策略建議

不同月份的各個產品的銷售額占比情況
產品相關分析

分析用戶特征、購買頻率、留存率等

購買頻率分布
復購率(重復購買用戶數量(兩天都有購買過算重復)/用戶數量)
同期群分析(按月)

3、代碼實作

獲取資料(excel)

為某化妝品企業 2019 年 1 月-2019 年 9 月每日訂單詳情資料和企業的商品資訊資料,包括兩個資料表,銷售訂單表和商品資訊表,其中銷售訂單表為每個訂單的情況明細,一個訂單對應一次銷售、一個訂單可包含多個商品,

import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.family'] = 'SimHei'
import numpy as np
import warnings
warnings.filterwarnings("ignore")
data = pd.read_excel('C:/Users/cherich/Desktop/榷訓.xlsx',encoding='gbk')
data.head()

 

 

data_info = pd.read_excel('C:/Users/cherich/Desktop/榷訓.xlsx',encoding='gbk',sheet_name='商品資訊表')
data_info

 

 

 

資料清洗和加工

data =https://www.cnblogs.com/hhh188764/archive/2021/02/06/ data.dropna()
# 訂購數量結尾有字符'個'

data['訂購數量'] = data['訂購數量'].apply(lambda x:str(x)[:-1] if str(x)[-1] == '' else x)
data['訂購數量'] = data['訂購數量'].astype(int)

# 訂購數量結尾有字符'元'
data['訂購單價'] = data['訂購單價'].apply(lambda x:str(x)[:-1] if str(x)[-1] == '' else x)
data['訂購單價'] = data['訂購單價'].astype(int)
# 日期里有特殊字符 2019#3#11
def proess_date(df):
    pos = str(df).find('#')
    if pos!= -1:
        df = str(df).split('#')
        return df[0]+'-'+df[1]+'-'+df[2]
    else:
        return df

# res = proess_date(df ='2019#3#11')
data['訂單日期'] = data['訂單日期'].apply(proess_date)
data['訂單日期'] = data['訂單日期'].apply(lambda x:str(x).replace('','-').replace('','-') if '' in str(x) else x )
data['訂單日期'] = pd.to_datetime(data['訂單日期']) 
#data.info()

data = data[data.duplicated()==False]
data['所在省份'].nunique()
data['月份'] = data['訂單日期'].apply(lambda x:str(x).split('-')[1])
data

 

 

資料可視化

# 兩張表資料合并
total_data = https://www.cnblogs.com/hhh188764/archive/2021/02/06/pd.merge(data,data_info,on='商品編號',how='left')
total_data

 

 

 

groups = data.groupby('月份')
x = [each[0] for each in groups]
y = [each[1].金額.sum() for each in groups]
z = [each[1].金額.count() for each in groups]
money_mean = data.金額.sum()/9
order_mean = data.金額.count()/9

plt.figure(figsize=(18, 10), dpi=80)
plt.subplot(221)
plt.plot(x, y,linewidth=2)
plt.axvspan('07', '08', color='#EE7621', alpha=0.3)
plt.axhline(money_mean, color='#EE7621', linestyle='--',linewidth=1)
plt.title("每月銷售額趨勢圖",color='#4A708B',fontsize=24)
plt.ylabel("金額/(億)",fontsize=16)

plt.subplot(222)
plt.plot(x, z, linewidth=2, color = '#EE7621')
plt.axvline('07', color='#4A708B', linestyle='--',linewidth=1)
plt.axhline(order_mean, color='#4A708B', linestyle='--',linewidth=1)
plt.title("每月訂單量趨勢圖",color='#4A708B',fontsize=24)
plt.ylabel("訂單/(單)",fontsize=16)
plt.show()

 

 

圖表說明:從整體來看,銷售額和訂單量從4月開始大幅度上升,均高于均值;8月份開始呈下降趨勢,處于均值水平,

groups_category= total_data.groupby(['月份','商品大類'])
category1 = []
category2 = []
for i,j in groups_category:
#     print(i,j.月份.count())
    if i[1]=='彩妝':
        category1.append(j.金額.sum())
    else:
        category2.append(j.金額.sum())
labels = x
xticks = np.arange(len(labels))
width = 0.5
p = np.arange(len(labels))
fig, ax = plt.subplots(figsize=(18,8))
rects1 = ax.bar(p - width/2, category1,width, label='彩妝',color='#FFEC8B')
rects2 = ax.bar(p + width/2, category2, width, label='護膚品',color='#4A708B')


ax.set_ylabel('銷售額/(億)')
ax.set_title('每月護膚品和彩妝的銷售額對比圖(大類)')
ax.set_xticks(xticks)
ax.set_xticklabels(labels)
ax.legend()

plt.show()

 

 

 

圖表說明:護膚品需求滿足大多數人,明顯高于彩妝,并且5月—8月是護膚品需求旺季,相比彩妝的變化不明顯,

groups_categorys= total_data.groupby('商品小類')
x = [each[0] for each in groups_categorys]
y = [each[1].金額.sum() for each in groups_categorys]

fig = plt.figure(figsize=(18,8),dpi=80)
plt.title('各個品類的銷售額對比圖',color='#4A708B',fontsize=24)
plt.ylabel('銷售額(元)',fontsize=15)
colors = ['#6699cc','#4A708B','#CDCD00','#DAA520','#EE7621','#FFEC8B','#CDCD00','#4A708B','#6699cc','#DAA520','#4A708B','#FFEC8B']
for i, group_name in enumerate(groups_categorys):
    lin1 =plt.bar(group_name[0], group_name[1].金額.sum(),width=0.8,color=colors[i])
    for rect in lin1:
        height = rect.get_height()
        plt.text(rect.get_x()+rect.get_width()/2, height+1, int(height),ha="center",
                 fontsize=12)

plt.xticks(fontsize=15)
plt.grid()
plt.show()

 

 

 

圖表說明:面膜的銷售額第一,其次是面霜、爽膚水,銷售額最低的是蜜粉,眼影,

total_data =https://www.cnblogs.com/hhh188764/archive/2021/02/06/ total_data.dropna()
total_data['所在區域'] = total_data['所在區域'].apply(lambda x:str(x).replace('男區','南區').replace('西 區','西區'))
groups_area= total_data.groupby(['所在區域','商品小類'])
results = {} 
for i,j  in groups_area: 
    money = int(j.金額.sum())
    if i[0] in results.keys():
        results[i[0]][i[1]] = money     
    else:
        results[i[0]] = {}   
        for cate in category_names:
            results[i[0]][cate] = 0
        results[i[0]]['口紅'] = money

results= {key_data:list(values_data.values()) for key_data,values_data in results.items()}

def survey1(results, category_names):
    labels = list(results.keys())
    data = np.array(list(results.values()))

    data_cum = data.cumsum(axis=1)
    category_colors = plt.get_cmap('RdYlGn')(
        np.linspace(0.15, 0.85, data.shape[1]))
    fig, ax = plt.subplots(figsize=(25,8))
    ax.invert_yaxis()
    ax.xaxis.set_visible(False)
    ax.set_xlim(0, np.sum(data, axis=1).max())

    for i, (colname, color) in enumerate(zip(category_names, category_colors)):
        widths = data[:, i]
        starts = data_cum[:, i] - widths
        ax.barh(labels, widths, left=starts, height=0.5,
                label=colname, color=color)
        xcenters = starts + widths / 2

        r, g, b, _ = color
        text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
        for y, (x, c) in enumerate(zip(xcenters, widths)):
            ax.text(x, y, str(int(c)), ha='center', va='center',color=text_color)
    ax.legend(ncol=len(category_names), bbox_to_anchor=(0, 1),
              loc='lower left', fontsize='small')

    return fig, ax
survey1(results, category_names)
plt.show()

 

 

 

圖表說明:東部地區占市場份額的35%左右,份額最低的是西部地區,

area_names = list(total_data.商品小類.unique())
groups_priv= total_data.groupby(['所在省份','商品小類'])
results = {} 
for i,j  in groups_priv: 
    money = int(j.金額.sum())
    if i[0] in results.keys():
        results[i[0]][i[1]] = money     
    else:
        results[i[0]] = {}   
        for cate in category_names:
            results[i[0]][cate] = 0
        results[i[0]]['口紅'] = money

results= {key_data:list(values_data.values()) for key_data,values_data in results.items()}

def survey2(results, category_names):
    labels = list(results.keys())
    data = np.array(list(results.values()))

    data_cum = data.cumsum(axis=1)
    category_colors = plt.get_cmap('RdYlGn')(
        np.linspace(0.15, 0.85, data.shape[1]))
    fig, ax = plt.subplots(figsize=(25,20))
    ax.invert_yaxis()
    ax.xaxis.set_visible(False)
    ax.set_xlim(0, np.sum(data, axis=1).max())

    for i, (colname, color) in enumerate(zip(category_names, category_colors)):
        widths = data[:, i]
        starts = data_cum[:, i] - widths
        ax.barh(labels, widths, left=starts, height=0.5,
                label=colname, color=color)
        xcenters = starts + widths / 2

    ax.legend(ncol=len(category_names), bbox_to_anchor=(0, 1),
              loc='lower left', fontsize='small')

    return fig, ax
survey2(results, area_names)
plt.show()

 

 

 

圖表說明:江蘇銷售額第一,其次是廣東省;銷售額最低的是寧夏、內蒙、海南

import numpy as np
import matplotlib.pyplot as plt
category_names = list(total_data.商品小類.unique())
groups_small_category= total_data.groupby(['月份','商品小類'])
results = {} 
for i,j  in groups_small_category: 
    money = int(j.金額.sum())
    if i[0] in results.keys():
        results[i[0]][i[1]] = money     
    else:
        results[i[0]] = {}   
        for cate in category_names:
            results[i[0]][cate] = 0
        results[i[0]]['口紅'] = money

results= {key_data:list(values_data.values()) for key_data,values_data in results.items()}
def survey(results, category_names):
    labels = list(results.keys())
    data = np.array(list(results.values()))

    data_cum = data.cumsum(axis=1)
    category_colors = plt.get_cmap('RdYlGn')(
        np.linspace(0.15, 0.85, data.shape[1]))

    fig, ax = plt.subplots(figsize=(25,8))
    ax.invert_yaxis()
    ax.xaxis.set_visible(False)
    ax.set_xlim(0, np.sum(data, axis=1).max())

    for i, (colname, color) in enumerate(zip(category_names, category_colors)):
        widths = data[:, i]
        starts = data_cum[:, i] - widths
        ax.barh(labels, widths, left=starts, height=0.5,
                label=colname, color=color)
        xcenters = starts + widths / 2

#         r, g, b, _ = color
#         text_color = 'white' if r * g * b < 0.5 else 'darkgrey'
#         for y, (x, c) in enumerate(zip(xcenters, widths)):
#             ax.text(x, y, str(int(c)), ha='center', va='center')
    ax.legend(ncol=len(category_names), bbox_to_anchor=(0, 1),
              loc='lower left', fontsize='small')

    return fig, ax
survey(results, category_names)

plt.show()

 

 

 

圖表說明:眼霜、爽膚水、面膜:4,5,6,7,8月份需求量最大;粉底、防曬霜、隔離霜、睫毛膏、蜜粉1,2,3月份需求量最大,

data_user_buy=total_data.groupby('客戶編碼')['訂單編碼'].count()
data_user_buy
plt.figure(figsize=(10,4),dpi=80)
plt.hist(data_user_buy,color='#FFEC8B')

plt.title('用戶購買次數分布',fontsize=16)
plt.xlabel('購買次數')
plt.ylabel('用戶數')
plt.show()

 

 

 

圖表說明:大部分用戶購買次數在10次-35次之間,極少部分用戶購買次數80次以上

date_rebuy=total_data.groupby('客戶編碼')['訂單日期'].apply(lambda x:len(x.unique())).rename('rebuy_count')
date_rebuy
print('復購率:',round(date_rebuy[date_rebuy>=2].count()/date_rebuy.count(),4))

 

 

 

total_data['時間標簽'] = total_data['訂單日期'].astype(str).str[:7]
total_data = total_data[total_data['時間標簽']!='2050-06']
total_data['時間標簽'].value_counts().sort_index()
total_data = total_data.sort_values(by='時間標簽')
month_lst = total_data['時間標簽'].unique()
final=pd.DataFrame()
final
#引入時間標簽
for i in range(len(month_lst)-1):
    #構造和月份一樣長的串列,方便后續格式統一
    count = [0] * len(month_lst)
    #篩選出當月訂單,并按客戶昵稱分組
    target_month = total_data.loc[total_data['時間標簽']==month_lst[i],:]
    target_users = target_month.groupby('客戶編碼')['金額'].sum().reset_index()

    #如果是第一個月份,則跳過(因為不需要和歷史資料驗證是否為新增客戶)
    if i==0:
        new_target_users = target_month.groupby('客戶編碼')['金額'].sum().reset_index()
    else:
        #如果不是,找到之前的歷史訂單
        history = total_data.loc[total_data['時間標簽'].isin(month_lst[:i]),:]
        #篩選出未在歷史訂單出現過的新增客戶
        new_target_users = target_users.loc[target_users['客戶編碼'].isin(history['客戶編碼']) == False,:]

    #當月新增客戶數放在第一個值中
    count[0] = len(new_target_users)

    #以月為單位,回圈遍歷,計算留存情況
    for j,ct in zip(range(i + 1,len(month_lst)),range(1,len(month_lst))):
        #下一個月的訂單
        next_month = total_data.loc[total_data['時間標簽'] == month_lst[j],:]
        next_users = next_month.groupby('客戶編碼')['金額'].sum().reset_index()
        #計算在該月仍然留存的客戶數量
        isin = new_target_users['客戶編碼'].isin(next_users['客戶編碼']).sum()
        count[ct] = isin

    #格式轉置
    result = pd.DataFrame({month_lst[i]:count}).T

    #合并
    final = pd.concat([final,result])

final.columns = ['當月新增','+1月','+2月','+3月','+4月','+5月','+6月','+7月','+8月']
result = final.divide(final['當月新增'],axis=0).iloc[:]
result['當月新增'] = final['當月新增']
result.round(2)

 

 

 

同期群分析

圖表說明:由新增用戶情況看,新用戶逐月明顯減少;留存率在1月-5月平均在50%,6月-8月留存率上升明顯,

結論與建議

1、從銷售額趨勢來看,整體是上升趨勢,但是從8月份銷售額突然下降,可能因為到淡季,需進一步確認原因;

2、商品銷售額,用戶對護膚品具有強烈的需求,尤其是面膜,爽膚水、面霜、眼霜,較低需求的是蜜粉,可以把高需求產品,組合成禮盒等套裝活動;

3、商品銷售建議:眼霜、爽膚水、面膜:4,5,6,7,8月需求最大;粉底、防曬霜、隔離霜、睫毛膏、蜜粉1,2,3月需求最大,以上說明用戶購買特定產品具有周期性;

4、從地域來看,東部地區是消費的主力軍,其中江蘇省、廣東省、浙江省的銷售額最大,可以增大市場投放量;也可以考慮在該地區建倉,節省物流等成本;

5、用戶:重點維護購買次數在10次-35次之間的用戶群體;

6、留存率在99%,證明用戶對產品有一定的依賴性;

7、從同期群分析來看,新用戶明顯減少,應考慮拉新,增加平臺新用戶(主播帶貨等);

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

標籤:其他

上一篇:C/C++編程日記:制作一個簡單的記憶體外掛

下一篇:SpringBoot引入openfeign 報錯:spring-cloud-starter-openfeign:unknown

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

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more