软件å¼ååå¦è åºè¯¥çä»ä¹ä¹¦
ããå¦ä¹ 软件å¼åé½éè¦çãcåæéãããc缺é·åé·é±ãããcä¸å®¶ç¼ç¨ãï¼è¿ä¸æ¬ä¹¦æ¯ä¸ä¸ªå级Cç¨åºåå¿ ççä¸æ¬ä¹¦ï¼åæ¶ä¹æ¯åºå±æ°åå·¥å¿ é¡»å¥½å¥½å¦ä¹ çææï¼é常éååæ¯ä¸ç大å¦çå¦ä¹ ã
ããå¦å¤è¿æï¼
ããC++è¯è¨æåï¼
ãããEffective C++ï¼æ¹åç¨åºä¸è®¾è®¡çä¸ªå ·ä½åæ³ã
ãããMore Effective C++:个æ¹åç¼ç¨ä¸è®¾è®¡çæææ¹æ³(ä¸æç)ã
ãããC++æ²æå½ã
ãããC++Templatesä¸æçã
ããã深度æ¢ç´¢ C++ 对象模åã
ãããæ³åç¼ç¨ä¸STLã
ããä¸ä¸ªç±C转åC++çç¨åºåï¼ä»æ¥æ²¡æç³»ç»çå¦ä¹ è¿C++çè¯æ³ï¼å¾å¾æ¯ç¨å°çä»ä¹å¦ä¹ ä»ä¹ãå¦æè¦ç³»ç»å ¥é¨ï¼ãC++ primerãåæ¯ä¸éã
ãã设计类ã代ç å¤§å ¨ãï¼
ãããéæï¼æ¹åæ¢æ代ç ç设计ã
ããã代ç æ´æ´ä¹éã
ãããå®ç°æ¨¡å¼ã
ãããç¨åºååºè¯¥ç¥éç件äºã
ããè¿å æ¬ä¹¦ä¸è¬è®²çæ¯å½æ°ä»¥åæ´ä½å±æ¬¡ç设计ãã代ç å¤§å ¨ãå®å®æ´æ´ç读å®è¿ï¼èä¸åäºå¾å¤çç¬è®°ï¼è·çè¯å¤ããéæãå°±ä¸å¿ 说äºï¼å ¶ä»å æ¬ä¹¦åé¢å¤§è´çäºä¸ä¸ï¼ä¹é常ä¸éï¼è®¡åææ¶é´è¦å¥½å¥½å¦ä¹ ä¸ä¸ã
ããæ¶æï¼
ããã软件ä½ç³»ç»æçèºæ¯ã
ãããé¢å驱å¨è®¾è®¡:è½¯ä»¶æ ¸å¿å¤ææ§åºå¯¹ä¹éã
ããã软件æ¶æå¸åºè¯¥ç¥éç件äºã
ãããä¼ä¸åºç¨æ¶æ模å¼ã
ãããé¢å模å¼ç软件ä½ç³»ç»æå·1:模å¼ç³»ç»ã
ããã软件æ¶æ设计ã
ãããæ¶æå¸éè¦ç¥éç件äºã
ããææ·å¼åï¼
ãããæµè¯é©±å¨å¼åã
ãããææ·è½¯ä»¶å¼åââååã模å¼ä¸å®è·µã
ãããScrumææ·é¡¹ç®ç®¡çã
ãããç¡çä¸çScrumåXPââæ们å¦ä½å®æ½Scrumã
ãããææ·è½¯ä»¶å¼åã
cè¯è¨ç¼å路线
#include <stdio.h>
#include <malloc.h>
#include<stdlib.h>
#define MAX
#define MAXNUM
int previous[MAX-1];// æ±è·¯å¾éè¦
int pp[MAX-1];// è®°å½æçè·¯å¾
typedef struct graphnode
{
int vexnum; //顶ç¹
int arcnum; //弧
int gra[MAX][MAX]; //é»æ¥ç©éµè¡¨ç¤º0æ1
}Graph;
int dist[MAX]; // æçè·ç¦»
int arc[MAX][MAX]; // æ
int main()
{
void Dijkstra(Graph *g,int v);
int i,j,n,m;
int v; //æºç¹
Graph *G;
G=(Graph *)malloc(sizeof(Graph));
printf("vexnum:\n");
scanf("%d",&G->vexnum);
printf("arcnum:\n");
scanf("%d",&G->arcnum);
printf("graph:\n");
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
{
scanf("%d",&G->gra[i][j]);
}
for(i=0;i<G->vexnum;i++)
for(j=0;j<G->vexnum;j++)
{
if(G->gra[i][j]==1)
{
printf("请è¾å ¥%då°%dçæå¼:",i,j);
scanf("%d",&arc[i][j]);//è¥æ弧 åè¾å ¥iå°jç´æ¥çæ
}
else
arc[i][j]=MAXNUM;
}
printf("请è¾å ¥æºç¹vçå¼:");
scanf("%d",&v);
Dijkstra(G,v);
printf("请è¾å ¥æºç¹æè¦å°è¾¾çç¹ï¼\n");
scanf("%d",&n);
pp[0]=0;
i=1;
m=n;// è®°å½nçå¼
while(n!=0)// æ±0å°å ¶ä»ç¹è·¯å¾
{
pp[i]=previous[n];
i++;
n=previous[n];
}
printf("Path:0 -> ");
for(j=G->vexnum-1;j>=0;j--)
if(pp[j]!=0)
printf(" %d -> ",pp[j]);
printf("%d\n",m);
return 0;
}
void Dijkstra(Graph *G,int v)
{
int previous[MAX-1];
int newdist;
bool sign[MAX];
if(v<0||v>MAX-1)
{
printf("该æºç¹ä¸åå¨ï¼\n");
return;
}
for(int i=0;i<G->vexnum;i++) //åå§å
{
dist[i]=arc[v][i];
sign[i]=false;
if(dist[i]==MAXNUM)
previous[i]=0;
else
previous[i]=v;
}
dist[v]=0;
sign[v]=true;
for(i=0;i<G->vexnum;i++) // i<n-1 å¾ å®
{
float temp=MAXNUM;
int u=v; //u ä¸é´åé
for(int j=0;j<G->vexnum;j++)
if((!sign[j])&&(dist[j]<temp))
{
u=j;
temp=dist[j];
}
sign[u]=true;
for(j=0;j<G->vexnum;j++)
if((!sign[j])&&(arc[u][j]<MAXNUM))
{
newdist=dist[u]+arc[u][j];
if(newdist<dist[j])
{
dist[j]=newdist;
previous[j]=u;
}
}
}
for(i=0;i<G->vexnum;i++)
if(dist[i]!=MAXNUM)
printf("ä»%då°%dçæçè·¯å¾æ¯ %d\n",v,i,dist[i]);
else
printf("ä»%då°%dæ æçè·¯å¾\n",v,i);
printf("\n");
}
è¿æ¯Dijkstraç®æ³æ±åæºæçè·¯å¾ç®æ³ ä¸ç¨åºä¸ åå®é¡¶ç¹ä»0å¼å§ï¼æç´¢æ´ä¸ªå¾ï¼ç¶åæ±åº0å°å ¶ä»åç¹çæçè·ç¦»ï¼åæ¾å¨distæ°ç»ä¸ï¼mainå½æ°åé¢å è¡æ¯æ±0å°å ¶ä»åç¹çè·¯å¾ åºæ¬ä¸è½æ»¡è¶³ä½ çè¦æ±äº
å¦ä¹ Cè¯è¨ å¿ çç书ç±
Brian W.Kernighanï¼ Dennis M.Ritchieï¼ãCç¨åºè®¾è®¡è¯è¨ã
æ¸ åå½±å°çãä¹ é¢éï¼æºæ¢°è¯æçï¼æ°çãèçï¼ï¼ä¹ é¢é
è¿æ¯è¿ä»ä¸ºæ¢å¨ææç¨åºè®¾è®¡è¯è¨ä¹¦ç±ä¸æ广åå°æ¬çä¸é¨ç»å ¸ï¼æ¯ä»»ä½ä¸åCç¨åºåçå¿ è¯»ä¹ä½ãå 为åºèªCè¯è¨ç设计è Dennis M.Ritchieåèåç计ç®æºç§å¦å®¶Brian W.Kernighanä¹æï¼å®è¢«æµç§°ä¸ºâK&R Câãæ¯å®é¦å å¼å ¥äºâHello Worldï¼âç¨åºï¼è¿ä¸ªç¨åºå ä¹æäºåæ¥ä»»ä½ä¸æ¬å ¥é¨æ§ç¨åºè®¾è®¡è¯è¨ä¹¦ç±ä¸ç第ä¸ä¸ªä¾åã
å¦åCè¯è¨æ¬èº«ç®æ´ç´§åèæå ·å¨åä¸æ ·ï¼è¿æ¬ä¹¦è½»èçå°èæå¯å¼ åãéè¿ç®æ´çæè¿°åå ¸åç示ä¾ï¼å®å ¨é¢ãç³»ç»ãåç¡®å°è®²è¿°äºCè¯è¨çå个ç¹æ§ä»¥åCç¨åºè®¾è®¡çåº
æ³ï¼å 容涵çåºæ¬æ¦å¿µãç±»åå表达å¼ãæ§å¶æµãå½æ°ä¸ç¨åºç»æãæéä¸æ°ç»ãç»æãè¾å ¥ä¸è¾åºãUNIXç³»ç»æ¥å£ä»¥åæ ååºçå 容ã
ç®æ´æ¸ æ°æ¯è¿æ¬ä¹¦æ大çç¹è²ãè¿æ¬å°ä¹¦å¯ä»¥æç»ä½ 许å¤æ¯å®åå åçâ大é¨å¤´âçç¥è¯ãæ认为é£äºå¨è¾æ´æ´æ´æ´æ¼ååºå¥½å ç¾é¡µä¹è³ä¸å页çææ¯ä½è åºè¯¥å¥½å¥½åK&Rå¦ä¸å¦ã对äºä¸ãé«çº§ç¨åºåèè¨ï¼å¦æå¸æè¿ éè·å¾Cè¯è¨ç严èç¥è¯èåä¸æ¿æå¤è±è´¹åªæä¸ä¸ç¹æ¶é´ï¼è¿æ¬ä¹¦å°±æ¯é¦éã
顺便说ä¸å¥ï¼è¿æ¬ä¹¦çç´¢å¼å¶ä½é常åºè²ï¼æå ·å®ç¨ä»·å¼ï¼è¿å¯è½é¦å è¦å½åäºæ£æé¨åçç®ææ¼è¦ãæ¤å¤ï¼å°½ç®¡å®çä¸å»å¾åä¸æ¬æç¨ï¼ä½å ¶å®æ´æ¯ä¸æ¬åç»ä¸ä¸ç¨åºåçæåãå¦æä½ ä¸å ·å¤ä»»ä½å ¶ä»è¯è¨ç¨åºè®¾è®¡èæ¯æåºæ¬çCè¯è¨ç¥è¯ï¼è¿æ¬ä¹¦ä¹è®¸å¹¶ä¸éåç¨ä½ä½ çCè¯è¨å¯è读ç©ã
2. Perter Van Der LinDenï¼ãCä¸å®¶ç¼ç¨ã
Cä¸å®¶ç¼ç¨
Cè¯è¨æ¯ä¸¥èçç¨åºåè¯è¨ï¼ä½è¿å¹¶ä¸æå³çCè¯è¨ä¹¦ç±å¿ é¡»æ¿çé¢å说æãå¨è¿æ¬è¢«Cç¨åºåæµç§°ä¸ºâ鱼书âï¼å°é¢ä¸æä¸æ¡âä¸éçâè æ£é±¼ï¼çèä½ä¸ï¼ä½ä¸ºSUNå ¬å¸ç¼è¯å¨åæä½ç³»ç»æ ¸å¿å¼åç»æåä¹ä¸ï¼Peteræ·æ¼å°½è´å°å±ç¤ºäºå ¶æ·±åçææ¯æ²æ·ã丰å¯ç项ç®ç»éªãé«è¶ çåä½æ巧以åæçå¼çå¹½é»ãå¨è¿é¨ä½åä¸ï¼ä½è 以æµç çæåãè¯è°çç¬æ³å°é¸é»å ¸æ ãæºæ §åå¹½é»èªç¶å°èå ¥ææ¯æè¿°ä¸ï¼è¯»æ¥å®è¥ä¸æ¬å°è¯´ï¼æå¯è¶£å³ã æ¬ä¹¦è®²è¿°äºCè¯è¨çåå²ãè¯è¨ç¹æ§ã声æãæ°ç»ãæéãè¿æ¥ãè¿è¡æ¶ä»¥åå å使ç¨çç¥è¯ï¼æ示äºCè¯è¨ä¸è®¸å¤éæ¦ä¹å¤ï¼å°¤å ¶æ·±å ¥è§£æäºå£°æãæ°ç»åæéãå å使ç¨çæ¹é¢çç»èãè¦æ³æ为ä¸åä¸å®¶çº§Cç¨åºåï¼è¿äºå 容é½æ¯å¿ é¡»ææ¡çãåå ¶ä»æ»¡æ¯æ½è±¡ä¾åçCè¯è¨ä¹¦ç±ä¸åï¼è¿æ¬ä¹¦å 满äºå¤§éçæ¥èªçå®ä¸ççCç¨åºè®¾è®¡å®ä¾ï¼å®ä»¬å¯¹Cç¨åºåå ·æå¾é«çåç §ä»·å¼ãå¦å¤ï¼æ¯ä¸ç« é½ä»¥æå¯è¶£å³çâè½»æ¾ä¸ä¸âæ¶å°¾ï¼èéå½Aâç¨åºåå·¥ä½é¢è¯çç§å¯âåæ¯ä»»ä½è¯è¨çç¨åºåå¨åºèå·¥ä½åå¢å¼ºèªä¿¡ç好ææã
ææççæ£çCä¸å®¶å¯è½ç¨ä¸ççè¿æ¬ä¹¦ ââä»å 容å°ç»ç»æ¹å¼å°è¡æé£æ ¼é½å³å®äºè¿æ¯ä¸æ¬è½»æ¾æå¿«çâä»èé¸å°é«æâçè¿é¶è¯»æ¬ï¼æ以ï¼å®çåºæ¥ææ´å¹¿æ³ç读è 群ãå级ç¨åºåå¾å¾æ´éè¦çæ çé¼å±ï¼å¨é 读è¿æ¬ä¹¦çè¿ç¨ä¸ï¼ä½ å®ä¼æ·±æ·±å°è¢«ä½è 对ç¼ç¨çæ¿æ æææã
ä¸é´å¹¶æ å®ç¾ãæ认为è¿æ¬ä¹¦ç缺é·å¨äºï¼å大å¤æ°å¹³åº¸çCè¯è¨ä¹¦ç±ä¸æ ·ï¼å®ç»è添足å°å å ¥äºä¸ç« å ³äºC++çæè¿°ãå¨ä»å¤©çæ¥ï¼è¿ä¸ªæè¿°æ¢ä¸å ¨é¢ä¹æå¤±å ¬å ãä¸è¿ï¼é´äºä½è æ¯å¨å¹´ä»ä¸åCç¨åºåçè§åº¦å»è§å¯C++ï¼è¿ä¸ç¹ä¹å°±ä¸è¶³ä¸ºå¥äºã 3. Samuel P. Harbisonï¼ Guy L. Steeleï¼ãCè¯è¨åèæåï¼ç¬¬äºçï¼ã
å½±å°çï¼æºæ¢°å·¥ä¸åºç社ï¼ãä¸æçï¼æºæ¢°å·¥ä¸åºç社ï¼
å¨Cè¯è¨åèæå类书ç±éï¼Samuel P. Harbison åGuy L. SteeleåèçCï¼ A Reference Manualæ¯é常åºè²çä¸æ¬ãè¿æ¬æåç第äºçæ°å¢äºå¯¹Cæ åçä»ç»ï¼ä»¥ä¾¿æ»¡è¶³æ°æ¶æCè¯è¨å¦ä¹ çéè¦ãå ¨ä¹¦å ±å为两大é¨åï¼ç¬¬ä¸é¨åä¸æ³¨äºCè¯è¨ç¹æ§ï¼ç¬¬äºé¨ååå ¨é¢è®¨è®ºäºCæ ååºãæ¬ä¹¦æ¶µçCãCãä¼ ç»çCãææçæ¬çCè¿è¡åºä»¥åç¼åä¸C++å ¼å®¹çC代ç çä¸åç¥è¯ã
è¿æ¬æååªæ¯ä¸çå度ï¼ä½å®æ¯âæ¯å®æ´åâçå ¶ä»åèæåæ´æ¸ æ°å°æè¿°äºCè¯è¨çç°å¨åè¿å»çæ¹æ¹é¢é¢ãæ´æ¬æåææ¯ç»èæ述精确ï¼ç»ç»æ¡çæ¸ æ¥ï¼å 容å®å¤è¯¦å°½èåç®ææ¼è¦ãå¯ä»¥è¿ä¹è¯´ï¼å®å¨å¹¿åº¦ã深度å精度æ¹é¢é½æ¯åºç±»æèçã对äºä¸ãé«çº§Cç¨åºåèè¨ï¼è¿æ¬æåå¼å¾å¸¸å¤æ¡å¤´ï¼å®å ä¹è¯å®è¦æ¯K&Rçèä½ä½¿ç¨é¢çæ´é«ã
4. David Hansonï¼ãCè¯è¨æ¥å£ä¸å®ç°ï¼å建å¯éç¨è½¯ä»¶çææ¯ãï¼æºæ¢°å·¥ä¸åºç社
Cè¯è¨æ¥å£ä¸å®ç°ï¼å建å¯éç¨è½¯ä»¶çææ¯
Cè¯è¨è½å¤åç»ä¸åå¤å¹´èä¸è¡°ï¼ä¸ä¸ªéè¦çåå å¨äºå®çéåºè½åãå¨è¿âå¤ç¨âãâé¢å对象âãâç»ä»¶âãâå¼å¸¸å¤çâçå è¿æºå¶æ¼«å¤©é£èç年代ï¼Cè¯è¨ä»ç¶è½å¤ååå®å°èä¼é çè¯è¨ç¹æ§ï¼å¨ç¸å½ç¨åº¦ä¸æ»¡è¶³ç°ä»£è½¯ä»¶ä½ç³»æ¶ææåºçè¦æ±ãåªä¸è¿ï¼æ³è¦è¾¾å°è¿ä¸ªç¨åº¦ï¼å¿ é¡»è¦å¨Cçåºç¨ååä¸è¾¾å°æé«å±æ¬¡ãå¨åµå ¥å¼ãç³»ç»è½¯ä»¶ä»¥å对æ§è½è¦æ±æé«çç³»ç»å¼åä¸ï¼å¼å人åå¿ é¡»è¾¾å°è¿æ ·çå±æ¬¡ï¼çç»ææ¡Cè¯è¨çé«çº§ç¹æ§ï¼æè½å¤åæ¶æ»¡è¶³æçåçµæ´»æ§ãå¤ç¨æ§çè¦æ±ãå¯æï¼è½ç¶Cè¯è¨ææ¯å¾ä¹¦æ±çå æ ï¼ä½æ¯å ³æ³¨è¿ä¸ªå³°é¡¶ä¹åçä½åå´æ¯å±æå¯æ°ãDavid HansonçC Interfaces and Implementationså°±æ¯ä¸ªä¸ç¿æ¥ã
David Hansonæ¯ä¸å 大åé¼é¼çèªç±ç¼è¯å¨lccçåä½è ãå¨è¿ä¸ªé¡¹ç®ä¸ï¼ä»è´è´£æä¾é«åº¦å¯å¤ç¨çåºç¡æ¶æãå¨ä¸æçå®è·µä¸ï¼ä»å®å ¨ä½¿ç¨ANSI Cå½¢æäºä¸æ´å¥å¯å¤ç¨ç»ä»¶åºãè¿å¥ç»ä»¶åºæ¶ææ¸ æ°ï¼æ§è½ä¼å¼ï¼èä¸æä¾äºå¾å¤é«çº§çç¹æ§ï¼æ¯å¦ç±»Win SEHçå¼å¸¸å¤çæºå¶ãå¯ç§»æ¤ç线ç¨åºãé«æ§è½çå åæ± ã丰å¯çå¯å¤ç¨æ°æ®ç»æç»ä»¶ãDavid Hansonæä»å¨åä½è¿äºç»ä»¶çè¿ç¨ä¸æ积累çå¿å¾ä»¥åå¯¹å ¶æºç çç²¾è´åæååæ¬æ¬å°åå¨äºè¿æ¬ä¹¦éãè¿æ ·çèä½ï¼å½ç¶å ªç§°Cè¯è¨é¢åéçéå¿ç»åãé¾æªå·²æ èåææ¯ä½å®¶Richard Stevens对æ¤ä¹¦èµä¸ç»å£ï¼ä»è¯´ï¼âè¿æ¬ä¹¦ä¸çææ¯ï¼å¯¹äºå¤§é¨åCç¨åºåæ¥è¯´ï¼å·²ç»éå¿å¾å¤ªä¹ äºãâ对äºå¸æè½å¨Cè¯è¨åºç¨ä¸è¾¾å°æé«å±æ¬¡çæ ¸å¿ç¨åºåèè¨ï¼è¿æ¬ä¹¦æ¯é¾å¾çå¿ è¯»ä¹ä½ã
å ¶ä»é¤äºä»¥ä¸åæ¬ä¹¦ä»¥å¤ï¼æè¿ä¹ææ¨èAndrew Koenigçèä½ãCé·é±å缺é·ãï¼äººæ°é®çµåºç社ï¼åDeitelç¶ååèçC How to Program两æ¬ä¹¦ã
Cä¸å®¶ç¼ç¨
Andrew Koenigæ¯ä¸çä¸å±æå¯æ°çC++ä¸å®¶ï¼ä»çè¿æ¬ä¹¦å¯è½æ¯æèçä¸æ¬Cè¯è¨ç»å ¸ãå®ç®ææ¼è¦å°è®²è¿°äºCç¨åºè®¾è®¡ä¸çé·é±å缺é·ï¼å æ¬è¯æ³é·é±ãè¯æ³é·é±ãè¯ä¹é·é±ãè¿æ¥ãåºå½æ°ãé¢å¤çå¨ä»¥åå¯ç§»æ¤æ§ç¼ºé·çï¼æåä¸ç« è¿ç»åºäºå ³äºå¦ä½åå°ç¨åºé误ç建议以ååé¢åç« é®é¢çåèçæ¡ã尽管è¿ä¸ªå°ååæ书äºCæ åå¶å®ä¹åï¼ç¶èï¼å³ä½¿å°äºCæ©å·²é¢å¸çä»å¤©ï¼ä¹¦ä¸æå°ç大å¤æ°é·é±å缺é·ä¸å¦åäºå¹´åé£æ ·ä½¿æ们è¦éã
Cç¨åºè®¾è®¡æç¨
Deitelç¶ååèçC How to Programä¸ç´æ¯é常好çCè¯è¨å ¥é¨æç¨ï¼ææ头çä¸è¯æ¬å为ãCç¨åºè®¾è®¡æç¨ãï¼æºæ¢°å·¥ä¸åºç社åºçï¼å书第äºçï¼ãé¤äºå¯¹ææ¯çæ£è§æè¿°ï¼è¾ 以许å¤ç®ææ¼è¦çä¾åï¼å¤ï¼æ¯ä¸ç« åé¢é½å¸¦æå°ç»ãæ¯è¯ã常è§çç¨åºè®¾è®¡é误ãè¯å¥½çç¨åºè®¾è®¡ä¹ æ¯ãæ§è½å¿ åãå¯ç§»æ¤æ§å¿ åã软件工ç¨è¯è¿°ãèªææµéªç»ä¹ åçæ¡çãæ´ä¹¦å å®¹æ¸ æ°ï¼ç»ç»è¯å¥½ï¼æäºé 读åç解ãå¼å¾ä¸æçæ¯ï¼æ许å¤å ¥é¨ä¹¦è¯»å®ä¸éå³å¯ææï¼èè¿ä¸æ¬æ¯ä¸ªä¾å¤ã
ç»è¯ä»¥ä¸è¿å æ¬ä¹¦å¾å¤§ç¨åº¦ä¸å±éäºæè¿°Cè¯è¨åæ ååºæ¬èº«ï¼å¦æå¸æå¦ä¹ æ´ä¸ä¸çãé¢åç¸å ³çCç¨åºè®¾è®¡ææ¯ï¼ä½ å¯ä»¥å¨éæ©é 读è¿å æ¬ä¹¦çåºç¡ä¸ç»§ç»æ¥é ä¸é¨ä¹¦ç±ãæ¤å¤ï¼å¨Cè¯è¨ä¹¦ç±é¢åï¼æ°´å¹³ä¸ç¸ä¸ä¸çä½åæå¾å¤ï¼è¿å æ¬åªæ¯æ ¹æ®æèªèº«çé 读ä½éª
2024-12-24 00:54
2024-12-24 00:02
2024-12-23 23:19
2024-12-23 23:14
2024-12-23 22:30