主頁 > 軟體工程 > VC++與資料庫連接錯誤80040e4d

VC++與資料庫連接錯誤80040e4d

2020-09-18 08:25:40 軟體工程

	_ConnectionPtr pConnection;
try
{
HRESULT hr = pConnection.CreateInstance("ADODB.Connection");//創建Connection物件
if(SUCCEEDED(hr))
{
hr = pConnection->Open("driver={SQL Server};Server=(local);DATABASE=master;UID=sa;PWD=888888","","",adModeUnknown);
}
}
catch (_com_error e) //COM錯誤取得,當執行COM功能的時候,如果出錯,可以捕捉到_com_error的例外
{  
CString strComError;
strComError.Format("錯誤編號: %08lx\n錯誤資訊: %s\n錯誤源: %s\n錯誤描述: %s",
e.Error(),                  // 錯誤編號
e.ErrorMessage(),           // 錯誤資訊
(LPCSTR) e.Source(),        // 錯誤源
(LPCSTR) e.Description());  // 錯誤描述      

::MessageBox(NULL,strComError,"錯誤",MB_ICONEXCLAMATION);
}
//------判斷資料庫是否存在
_RecordsetPtr pRecordset;
pRecordset.CreateInstance("ADODB.Recordset");
_variant_t vCount;
try
{
_variant_t ra;
pRecordset = pConnection->Execute("SELECT COUNT(*) FROM sysdatabases WHERE name = 'HMSys'",&ra,adCmdText);
vCount = pRecordset->GetCollect((_variant_t)(long)(0)); 
}
catch(_com_error e)
{
AfxMessageBox("error!");
}
CString str;
str.Format("%d", vCount.iVal);
if(0 == vCount.iVal)
{
CString Sql;
Sql.Format("USE MASTER RESTORE DATABASE HMSys FROM DISK = '%s' WITH MOVE 'HMSys_Data'  TO  'c:\\HMSys.mdf', MOVE  'HMSys_Log'  TO  'c:\\HMSys.ldf'", FindFilePath()) ;
try
{
_variant_t ra;
pRecordset = pConnection->Execute((_bstr_t)Sql,&ra,adCmdText);
pRecordset->Close();
}
catch(_com_error e)
{

}
}
pConnection->Close();
///////////////
HRESULT hr = m_pConnection.CreateInstance("ADODB.Connection");//創建Connection物件
try
{
if(SUCCEEDED(hr))
{
hr = m_pConnection->Open("driver={SQL Server};Server=.;DATABASE=HMSys;UID=sa;PWD=","","",adModeUnknown);
}
}
catch (_com_error e) //COM錯誤取得,當執行COM功能的時候,如果出錯,可以捕捉到_com_error的例外
{  
CString strComError;
strComError.Format("錯誤編號: %08lx\n錯誤資訊: %s\n錯誤源: %s\n錯誤描述: %s",
e.Error(),                  // 錯誤編號
e.ErrorMessage(),           // 錯誤資訊
(LPCSTR) e.Source(),        // 錯誤源
(LPCSTR) e.Description());  // 錯誤描述      
::MessageBox(NULL,strComError,"錯誤",MB_ICONEXCLAMATION);
}
以上是C++連接資料庫代碼,c++運行環境是VC++6.0,資料庫是sql sever 2008,
運行時總是報錯

忽略后繼續運行程式,又

因為近幾天剛接觸資料庫SQL,不明白怎么回事,在百度上查,沒有解決,求各位幫幫忙,不甚感激!!

uj5u.com熱心網友回復:

自己建立一個sql帳號,用你自己的sql帳號登錄密碼登錄。

uj5u.com熱心網友回復:

拿別人封裝好的SQL類 輸入你的引數 去連接

uj5u.com熱心網友回復:

請用try...catch捕獲該捕獲的例外。

uj5u.com熱心網友回復:

你的sql server資料庫身份驗證是“Windows身份驗證模式”還是“混合模式”?如果是“Windows身份驗證模式”的話C++程式是連接不上的。

uj5u.com熱心網友回復:

剛剛測驗了在我電腦上可以連接的。你試試

// ADO.h
#include <windows.h>
#import "X:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename("EOF","adoEOF")// sql安裝路徑
#include <iostream>
using namespace std;
class ADO
{
public:
// 建構式,初始化環境,連接資料庫
ADO(TCHAR* ServerName/*服務器名稱*/,
TCHAR* pDatabase/*資料庫名稱*/, 
TCHAR* pUser/*用戶名*/, 
TCHAR* pWorrd/*密碼*/,
string DateName/*資料表名稱*/);

// 解構式,斷開資料庫,釋放環境
~ADO();
public:
_RecordsetPtr GetRecordset(_bstr_t SQL/*要執行的陳述句*/);
LONG GetCount();
TCHAR* GetVariantToChar(variant_t a/*轉換的值*/);
TCHAR* GetItemValue(long a/*獲取某列資料*/);
TCHAR* GetItemValue(TCHAR* szName/*欄位名稱*/);
VOID AddValue(TCHAR* szName, TCHAR* szFuntion, TCHAR* szDesc, TCHAR* szReturnV);
VOID SelectForm(TCHAR* szTable/*要查詢的表*/, 
TCHAR* szWhereName/*欄位名稱*/, 
TCHAR* szWhereValue/*值*/);

VOID SelectForm(TCHAR* szTable/*要查詢的表*/);
VOID DeleteForm(TCHAR* szTable,/*表*/
TCHAR* szWhereNmae/*欄位名稱*/, 
TCHAR* szWhereValue/*條件值*/);

VOID UpdateValue(TCHAR* szTable/*表*/,
TCHAR* szWhereNmae/*欄位名稱*/,
TCHAR* szWhereValue/*條件值*/,
TCHAR* szDataName/*要修改的欄位名稱*/,
TCHAR* szDataValue/*要修改的值*/);

//private:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
LONG loNameCount;/*欄位的數量*/
};

//ADO.cpp
#include "ADO.h"

ADO::ADO(TCHAR* ServerName/*服務器名稱*/,
TCHAR* pDatabase/*資料庫名稱*/, 
TCHAR* pUser,/*用戶名*/
TCHAR* pWorrd,/*密碼*/
string DateName/*資料表名稱*/)
{
try{
// 初始化COM環境
::CoInitialize(NULL);
// 創建連接物件
m_pConnection.CreateInstance(__uuidof(Connection));
// 連接資料庫
TCHAR* pOpen = new TCHAR[1024];
_snwprintf_s(pOpen, 1024, 1024, TEXT("Provider=SQLOLEDB;Data Source=%s;Initial Catalog=%s;"), ServerName, pDatabase);
HRESULT hr = m_pConnection->Open(pOpen, pUser, pWorrd, -1);
delete []pOpen;
pOpen = NULL;
if(hr != S_OK)
{
MessageBox(NULL,TEXT("連接資料錯誤"),TEXT("錯誤"),MB_OK);
}
}
catch(_com_error e)
{
MessageBox(NULL,e.Description(),TEXT("錯誤"),MB_OK);
return;
}
string szSQL = "select * from ";
szSQL += DateName;
_bstr_t b_s(szSQL.c_str());
GetRecordset(b_s);
variant_t v = m_pRecordset->GetFields()->GetCount();
loNameCount = (LONG)v;
}

ADO::~ADO()
{
if(m_pRecordset != NULL)
{
m_pRecordset->Close();
m_pConnection->Close();
m_pConnection = NULL;
m_pRecordset = NULL;
}
// 釋放COM環境
::CoUninitialize();
}

// 插入一條SQL陳述句到資料庫
_RecordsetPtr ADO::GetRecordset(_bstr_t SQL/*要執行的陳述句*/)
{
m_pRecordset = NULL;
try{
if(m_pConnection == NULL){this->~ADO();}
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open((_bstr_t)SQL,m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
MessageBox(NULL,e.Description(),TEXT("錯誤"),MB_OK);
m_pRecordset = NULL;
return m_pRecordset;
}
return m_pRecordset;
}

// 獲取欄位數量
LONG ADO::GetCount()
{
//variant_t v = m_pRecordset->GetFields()->GetCount();
//return (long)v;
return loNameCount;
}

// 萬能變數轉字串
TCHAR* ADO::GetVariantToChar(variant_t a/*轉換的值*/)
{
TCHAR* psz = NULL;
psz = (TCHAR*)(_bstr_t)a;
return psz;
}

// 獲取一列資料值
TCHAR* ADO::GetItemValue(long a/*獲取某列資料*/)
{
variant_t v1 = m_pRecordset->GetFields()->GetItem((long)a)->Value;
return GetVariantToChar(v1);
}

// 獲取某個欄位的值
TCHAR*  ADO::GetItemValue(TCHAR* szName/*欄位名稱*/)
{
_bstr_t bstr_t(szName);
return GetVariantToChar(m_pRecordset->GetCollect(bstr_t));
}

// 添加一行資料
VOID ADO::AddValue(TCHAR* szName, TCHAR* szFuntion, TCHAR* szDesc, TCHAR* szReturnV)
{
_bstr_t bstr1(szName);
_bstr_t bstr2(szFuntion);
_bstr_t bstr3(szDesc);
_bstr_t bstr4(szReturnV);
m_pRecordset->AddNew();
m_pRecordset->PutCollect("szName", bstr1);
m_pRecordset->PutCollect("szFuntion", bstr2);
m_pRecordset->PutCollect("szDesc", bstr3);
m_pRecordset->PutCollect("szReturnV", bstr4);
m_pRecordset->Update();
}

// 帶條件的查詢資料
VOID ADO::SelectForm(TCHAR* szTable/*要查詢的表*/, TCHAR* szWhereName/*欄位名稱*/, TCHAR* szWhereValue/*值*/)
{
TCHAR szSQL[1024] = { 0 };
_snwprintf_s(szSQL, 1024, 1024, TEXT("select *from %s where %s = '%s'"), szTable, szWhereName, szWhereValue);
_bstr_t bstr_t(szSQL);
GetRecordset(bstr_t);
}

// 不帶條件的查詢資料,查詢所有資料
VOID ADO::SelectForm(TCHAR* szTable/*要查詢的表*/)
{
TCHAR szSQL[1024] = { 0 };
_snwprintf_s(szSQL, 1024, 1024, TEXT("select * from %s"), szTable);
_bstr_t bstr_t(szSQL);
GetRecordset(bstr_t);
}
// 洗掉資料
VOID ADO::DeleteForm(TCHAR* szTable, TCHAR* szWhereNmae/*欄位名稱*/, TCHAR* szWhereValue/*條件值*/)
{
SelectForm(szTable, szWhereNmae, szWhereValue);
m_pRecordset->Delete(adAffectCurrent);
m_pRecordset->Update();
}

VOID ADO::UpdateValue(TCHAR* szTable/*表*/,
TCHAR* szWhereNmae/*欄位名稱*/, 
TCHAR* szWhereValue/*條件值*/,
TCHAR* szDataName/*要修改的欄位名稱*/,
TCHAR* szDataValue/*要修改的值*/)
{
SelectForm(szTable, szWhereNmae, szWhereValue);
_bstr_t bstr1(szDataValue);
_bstr_t bstr2(szDataName);
m_pRecordset->PutCollect(bstr2, bstr1);
m_pRecordset->Update();
}

// main.cpp
#include "ADO.h"
int main()
{
TCHAR szSource[] = {TEXT("DESKTOP-T62BHCH")};
TCHAR szDatabase[] = {TEXT("learning")};
TCHAR szUser[] = {TEXT("sa")};
TCHAR szPass[] = {TEXT("123456")};
ADO ado(szSource,szDatabase,szUser,szPass,"Student");
cout << "共" << ado.GetCount() << "個欄位" << endl;
return 0;
}

uj5u.com熱心網友回復:

// adoconnassy.h: interface for the Cadoconnassy class.
//
//////////////////////////////////////////////////////////////////////
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") rename("BOF","adoBOF")

#if !defined(AFX_ADOCONNASSY_H__79D89C88_C3BB_475F_95AF_2F24A96E5FE5__INCLUDED_)
#define AFX_ADOCONNASSY_H__79D89C88_C3BB_475F_95AF_2F24A96E5FE5__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class Cadoconnassy  
{
public:
Cadoconnassy();
virtual ~Cadoconnassy();

//添加一個指向Connection物件的指標:
_ConnectionPtr m_pConnection;
//添加一個指向Recordset物件的指標:
_RecordsetPtr m_pRecordset;

// 初始化—連接資料庫
void  OnInitADOConn();
// 執行查詢
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
// 執行SQL陳述句,Insert Update _variant_t
BOOL ExecuteSQL(_bstr_t bstrSQL);
void ExitConnect();
};

#endif // !defined(AFX_ADOCONNASSY_H__79D89C88_C3BB_475F_95AF_2F24A96E5FE5__INCLUDED_)


// adoconnassy.cpp: implementation of the Cadoconnassy class.
//
//////////////////////////////////////////////////////////////////////
//

#include "stdafx.h"
#include "adoconnassy.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Cadoconnassy::Cadoconnassy()
{

}

Cadoconnassy::~Cadoconnassy()
{

}

// 初始化—連接資料庫
void  Cadoconnassy::OnInitADOConn()
{
// 初始化OLE/COM庫環境 
::CoInitialize(NULL);
  
try
{
// 創建Connection物件
m_pConnection.CreateInstance("ADODB.Connection");
// 設定連接字串,必須是BSTR型或者_bstr_t型別
_bstr_t strConnect = "Provider=SQLOLEDB;Server=服務器地址;Database=資料庫名稱;uid=登陸用戶;pwd=登陸密碼";//自己修改
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
// 捕捉例外
catch(_com_error e)
{
// 顯示錯誤資訊
AfxMessageBox(e.Description());
}
}

// 執行查詢
_RecordsetPtr&  Cadoconnassy::GetRecordSet(_bstr_t bstrSQL)
{
try
{
// 連接資料庫,如果Connection物件為空,則重新連接資料庫
if(m_pConnection==NULL)
OnInitADOConn();
// 創建記錄集物件
m_pRecordset.CreateInstance(__uuidof(Recordset));
// 取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
}
// 捕捉例外
catch(_com_error e)
{
// 顯示錯誤資訊
AfxMessageBox(e.Description());
}
// 回傳記錄集
return m_pRecordset;
}

 // 執行SQL陳述句,Insert Update _variant_t
BOOL Cadoconnassy::ExecuteSQL(_bstr_t bstrSQL)
{
// _variant_t RecordsAffected;
try
{
// 是否已經連接資料庫
if(m_pConnection == NULL)
OnInitADOConn();
// Connection物件的Execute方法:(_bstr_t CommandText, 
// VARIANT * RecordsAffected, long Options ) 
// 其中CommandText是命令字串,通常是SQL命令。
// 引數RecordsAffected是操作完成后所影響的行數, 
// 引數Options表示CommandText的型別:adCmdText-文本命令;adCmdTable-表名
// adCmdProc-存盤程序;adCmdUnknown-未知
m_pConnection->Execute(bstrSQL,NULL,adCmdText);
return true;
}
catch(_com_error e)
{
AfxMessageBox(e.Description());
return false;
}
}

void Cadoconnassy::ExitConnect()
{
// 關閉記錄集和連接
if (m_pRecordset != NULL)
m_pRecordset->Close();
m_pConnection->Close();
// 釋放環境
::CoUninitialize();
}



給你個能用的

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

標籤:數據庫

上一篇:設計按鈕閃爍功能

下一篇:編輯MFC控制元件出現的問題!!!

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

熱門瀏覽
  • Git本地庫既關聯GitHub又關聯Gitee

    創建代碼倉庫 使用gitee舉例(github和gitee差不多) 1.在gitee右上角點擊+,選擇新建倉庫 ? 2.選擇填寫倉庫資訊,然后進行創建 ? 3.服務端已經準備好了,本地開始作準備 (1)Git 全域設定 git config --global user.name "成鈺" git c ......

    uj5u.com 2020-09-10 05:04:14 more
  • CODING DevOps 代碼質量實戰系列第二課,相約周三

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。**《DevOps 代碼質量實戰(PHP 版)》**為 CODING DevOps 代碼質量實戰系列的第二課,同時也是本系列的 PHP ......

    uj5u.com 2020-09-10 05:07:43 more
  • 推薦Scrum書籍

    推薦Scrum書籍 直接上干貨,推薦書籍清單如下(推薦有順序的哦) Scrum指南 Scrum精髓 Scrum敏捷軟體開發 Scrum捷徑 硝煙中的Scrum和XP : 我們如何實施Scrum 敏捷軟體開發:Scrum實戰指南 Scrum要素 大規模Scrum:大規模敏捷組織的設計 用戶故事地圖 用 ......

    uj5u.com 2020-09-10 05:07:45 more
  • CODING DevOps 代碼質量實戰系列最后一課,周四發車

    隨著 ToB(企業服務)的興起和 ToC(消費互聯網)產品進入成熟期,線上故障帶來的損失越來越大,代碼質量越來越重要,而「質量內建」正是 DevOps 核心理念之一。 **《DevOps 代碼質量實戰(Java 版)》**為 CODING DevOps 代碼質量實戰系列的最后一課,同時也是本系列的 ......

    uj5u.com 2020-09-10 05:07:52 more
  • 敏捷軟體工程實踐書籍

    Scrum轉型想要做好,第一步先了解并真正落實Scrum,那么我推薦的Scrum書籍是要看懂并實踐的。第二步是團隊的工程實踐要做扎實。 下面推薦工程實踐書單: 重構:改善既有代碼的設計 決議極限編程 : 擁抱變化 代碼整潔代碼 程式員的職業素養 修改代碼的藝術 撰寫可讀代碼的藝術 測驗驅動開發 : ......

    uj5u.com 2020-09-10 05:07:55 more
  • Jenkins+svn+nginx實作windows環境自動部署vue前端專案

    前面文章介紹了Jenkins+svn+tomcat實作自動化部署,現在終于有空抽時間出來寫下Jenkins+svn+nginx實作自動部署vue前端專案。 jenkins的安裝和配置已經在前面文章進行介紹,下面介紹實作vue前端專案需要進行的哪些額外的步驟。 注意:在安裝jenkins和nginx的 ......

    uj5u.com 2020-09-10 05:08:49 more
  • CODING DevOps 微服務專案實戰系列第一課,明天等你

    CODING DevOps 微服務專案實戰系列第一課**《DevOps 微服務專案實戰:DevOps 初體驗》**將由 CODING DevOps 開發工程師 王寬老師 向大家介紹 DevOps 的基本理念,并探討為什么現代開發活動需要 DevOps,同時將以 eShopOnContainers 項 ......

    uj5u.com 2020-09-10 05:09:14 more
  • CODING DevOps 微服務專案實戰系列第二課來啦!

    近年來,工程專案的結構越來越復雜,需要接入合適的持續集成流水線形式,才能滿足更多變的需求,那么如何優雅地使用 CI 能力提升生產效率呢?CODING DevOps 微服務專案實戰系列第二課 《DevOps 微服務專案實戰:CI 進階用法》 將由 CODING DevOps 全堆疊工程師 何晨哲老師 向 ......

    uj5u.com 2020-09-10 05:09:33 more
  • CODING DevOps 微服務專案實戰系列最后一課,周四開講!

    隨著軟體工程越來越復雜化,如何在 Kubernetes 集群進行灰度發布成為了生產部署的”必修課“,而如何實作安全可控、自動化的灰度發布也成為了持續部署重點關注的問題。CODING DevOps 微服務專案實戰系列最后一課:**《DevOps 微服務專案實戰:基于 Nginx-ingress 的自動 ......

    uj5u.com 2020-09-10 05:10:00 more
  • CODING 儀表盤功能正式推出,實作作業資料可視化!

    CODING 儀表盤功能現已正式推出!該功能旨在用一張張統計卡片的形式,統計并展示使用 CODING 中所產生的資料。這意味著無需額外的設定,就可以收集歸納寶貴的作業資料并予之量化分析。這些海量的資料皆會以圖表或串列的方式躍然紙上,方便團隊成員隨時查看各專案的進度、狀態和指標,云端協作迎來真正意義上 ......

    uj5u.com 2020-09-10 05:11:01 more
最新发布
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:41:12 more
  • windows系統git使用ssh方式和gitee/github進行同步

    使用git來clone專案有兩種方式:HTTPS和SSH:
    HTTPS:不管是誰,拿到url隨便clone,但是在push的時候需要驗證用戶名和密碼;
    SSH:clone的專案你必須是擁有者或者管理員,而且需要在clone前添加SSH Key。SSH 在push的時候,是不需要輸入用戶名的,如果配置... ......

    uj5u.com 2023-04-19 08:35:34 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:05:44 more
  • 2023年農牧行業6大CRM系統、5大場景盤點

    在物聯網、大資料、云計算、人工智能、自動化技術等現代資訊技術蓬勃發展與逐步成熟的背景下,數字化正成為農牧行業供給側結構性變革與高質量發展的核心驅動因素。因此,改造和提升傳統農牧業、開拓創新現代智慧農牧業,加快推進農牧業的現代化、資訊化、數字化建設已成為農牧業發展的重要方向。 當下,企業數字化轉型已經 ......

    uj5u.com 2023-04-18 08:00:18 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:20:31 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:55 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:18:51 more
  • 談一談我對協同開發的一些認識

    如今各互聯網公司普通都使用敏捷開發,采用小步快跑的形式來進行專案開發。如果是小專案或者小需求,那一個開發可能就搞定了。但對于電商等復雜的系統,其功能多,結構復雜,一個人肯定是搞不定的,所以都是很多人來共同開發維護。以我曾經待過的商城團隊為例,光是后端開發就有七十多人。 為了更好地開發這類大型系統,往 ......

    uj5u.com 2023-04-17 08:18:00 more
  • 專案管理PRINCE2核心知識點整理

    PRINCE2,即 PRoject IN Controlled Environment(受控環境中的專案)是一種結構化的專案管理方法論,由英國政府內閣商務部(OGC)推出,是英國專案管理標準。
    PRINCE2 作為一種開放的方法論,是一套結構化的專案管理流程,描述了如何以一種邏輯性的、有組織的方法,... ......

    uj5u.com 2023-04-17 08:17:55 more
  • 計算機組成原理—存盤器

    計算機組成原理—硬體結構 二、存盤器 1.概述 存盤器是計算機系統中的記憶設備,用來存放程式和資料 1.1存盤器的層次結構 快取-主存層次主要解決CPU和主存速度不匹配的問題,速度接近快取 主存-輔存層次主要解決存盤系統的容量問題,容量接近與價位接近于主存 2.主存盤器 2.1概述 主存與CPU的聯 ......

    uj5u.com 2023-04-17 08:12:06 more