主頁 > 軟體工程 > 在MFC工程中如何添加已經寫好的c++程式呢??求大神幫助!

在MFC工程中如何添加已經寫好的c++程式呢??求大神幫助!

2020-09-17 21:40:19 軟體工程

目的是編一個可視化的計算器,用c++已經把功能實作了。可是我如何才能通過可視化界面的=按鈕,把可視化界面的字串傳到c++程式中,然后運行,并在可視化界面中輸出呢??或者說,大家有更好的方法。。

uj5u.com熱心網友回復:

https://www.cnblogs.com/liufei1983/p/7140634.html

uj5u.com熱心網友回復:

看2樓吧,或者現在可以直接把系統自帶的計算機應用程式鑲嵌到你的MFC程式上的

uj5u.com熱心網友回復:

界面主要就是MFC的對話框等,添加控制元件,然后獲取對應資料等,然后呼叫C++的計算邏輯

uj5u.com熱心網友回復:

//大家給我的建議我看看過了,但是感徑訓是無從下手!!我還是直接上代碼吧。。。這是我用陣列堆疊編的計算器
#include<iostream>
#include<stdlib.h>
#include<math.h>
using namespace std;
//enum boolean{FALSE,TRUE}; 
//typedef enum boolean Bool;
struct stack{
int top;
double *a; 
int size; 
};
typedef struct stack Stack; 
void Initstack(Stack *,int sz);
void Free(Stack *);
int Push(Stack*,int );
int Pop(Stack*);
double Gettop(Stack*);
void Makempty(Stack*);
bool Isempty(Stack*);
bool Isfull(Stack*);
Stack s1,s2;
void Free(Stack*S)
{
free(S->a);
}
void Makempty(Stack*S)
{
S->top=-1; 
}
bool Isempty(Stack*S)
{
return (bool)(S->top==-1);
}
void Initstack(Stack*S,int sz)
{
S->size=sz;
S->a=(double*)malloc(sizeof(double)*S->size);
S->top=-1;
}
int Push(Stack*S,double nu)
{
if(!Isfull(S)){
S->a[++(S->top)]=nu;
return 0;
}
else return -1;
}
int Push(Stack*S,int nu)
{
if(!Isfull(S)){
S->a[++(S->top)]=nu;
return 0;
}
else return -1;
}
int Pop(Stack*S)
{
   if(!Isempty(S)) {
    return S->a[(S->top)--] ;
   }
   else
   {
    cout<<"空堆疊";
    exit(1);
   }
}
double Gettop(Stack*S){
if(!Isempty(S))
   {
      return S->a[S->top];
   }
   else
   {
    cout<<"空堆疊";
    exit(1);
   }
}
bool Isfull(Stack*S)
{
return (bool)(S->top==S->size-1);

double cal(Stack*s1,Stack*s2)
{
double m,n;
if((int)Gettop(s2)=='(')
{
Pop(s2);
return 0;
}
m=Gettop(s1);
Pop(s1);
n=Gettop(s1);
Pop(s1);
switch((int)Gettop(s2))
{
case'+': Push(s1,m+n);
Pop(s2);
break;
case'-': Push(s1,n-m);
Pop(s2);
break;
case'*': Push(s1,m*n);
Pop(s2);
break;
case'/': Push(s1,n/m);
Pop(s2);
break;
case'%': Push(s1,(double)((int)n%(int)m));
Pop(s2);
break;
case'^': Push(s1,pow(n,m));
Pop(s2);
break;
default:
Pop(s2);
}
return Gettop(s1);
}
int main()
{
Stack*s1=(Stack*)malloc(sizeof(Stack));
Stack*s2=(Stack*)malloc(sizeof(Stack));
Initstack(s1,100);
Initstack(s2,100);
char x[1000];
cin>>x+1;
int a=strlen(x);
x[0]='(',x[a]=')',x[a+1]='\0';
int i;
double k=0;
int tp=10;
for(i=0;x[i]!='\0';i++){
if(x[i]>='0'&&x[i]<='9'||x[i]=='.'){
k=tp*k+x[i]-'0';
if(x[i+1]=='.'){
tp=0.1;
i=i+2;
 k=k+0.1*(x[i]-'0');
while(x[i+1]>='0'&&x[i+1]<='9'){
 k=k+0.1*(x[i]-'0');
 i++;
}
}

}
else if(x[i]=='^'){
    while(k!=0)
{Push(s1,k);
k=0;
tp=10;}
Push(s2,x[i]);
i++;
Push(s1,(double)(x[i]-'0'));
cal(s1,s2);
}
else if(x[i]!=')'&&x[i]!='^')
{
while(k!=0)
{Push(s1,k);
k=0;
tp=10;}
if(Isempty(s2))
Push(s2,x[i]);

else if(Gettop(s2)=='*'||Gettop(s2)=='/'||Gettop(s2)=='%'){
           if(x[i]=='(')
     Push(s2,x[i]);
   else if(x[i]=='*'||x[i]=='/'){
   cal(s1,s2);
   while(Gettop(s2)=='*'||Gettop(s2)=='/')
   {
   cal(s1,s2);
   }
   Push(s2,x[i]);
   }
   else {
   cal(s1,s2);
   while(Gettop(s2)=='+'||Gettop(s2)=='-'){
   cal(s1,s2);
   }
   Push(s2,x[i]);
   }}
else if(Gettop(s2)=='+'||Gettop(s2)=='-'){
      if(x[i]=='('||x[i]=='*'||x[i]=='/'||x[i]=='%')
  Push(s2,x[i]);
  else
  {
  cal(s1,s2);
  Push(s2,x[i]);
  }

}
else if((Gettop(s2)=='(')){
if(x[i]!=')')
Push(s2,x[i]);
}
}
else{
while(k!=0)
{Push(s1,k);
k=0;
tp=10;}
while(Gettop(s2)!='(')
    cal(s1,s2);
Pop(s2);
}}
cout<<Gettop(s1)<<endl;
return 0; 
}

uj5u.com熱心網友回復:

然后這是MFC中的Dlg.cpp,button18是‘=’對應的回應函式。。。
#include "stdafx.h"
#include "MFCApplication1.h"
#include "MFCApplication1Dlg.h"
#include "afxdialogex.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于應用程式“關于”選單項的 CAboutDlg 對話框

class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();

// 對話框資料
enum { IDD = IDD_ABOUTBOX };

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 實作
protected:
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CMFCApplication1Dlg 對話框



CMFCApplication1Dlg::CMFCApplication1Dlg(CWnd* pParent /*=NULL*/)
: CDialogEx(CMFCApplication1Dlg::IDD, pParent)
, Result0(_T(""))

{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CMFCApplication1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);


DDX_Control(pDX, IDC_EDIT1, Result);
DDX_Text(pDX, IDC_EDIT1, Result0);

}

BEGIN_MESSAGE_MAP(CMFCApplication1Dlg, CDialogEx)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BUTTON8, &CMFCApplication1Dlg::OnBnClickedButton8)
ON_BN_CLICKED(IDC_BUTTON3, &CMFCApplication1Dlg::OnBnClickedButton3)
ON_BN_CLICKED(IDC_BUTTON5, &CMFCApplication1Dlg::OnBnClickedButton5)
ON_BN_CLICKED(IDC_BUTTON9, &CMFCApplication1Dlg::OnBnClickedButton9)
ON_BN_CLICKED(IDC_BUTTON4, &CMFCApplication1Dlg::OnBnClickedButton4)
ON_BN_CLICKED(IDC_BUTTON1, &CMFCApplication1Dlg::OnBnClickedButton1)
ON_BN_CLICKED(IDC_BUTTON6, &CMFCApplication1Dlg::OnBnClickedButton6)
ON_BN_CLICKED(IDC_BUTTON7, &CMFCApplication1Dlg::OnBnClickedButton7)
ON_BN_CLICKED(IDC_BUTTON2, &CMFCApplication1Dlg::OnBnClickedButton2)
ON_BN_CLICKED(IDC_BUTTON17, &CMFCApplication1Dlg::OnBnClickedButton17)
ON_BN_CLICKED(IDC_BUTTON10, &CMFCApplication1Dlg::OnBnClickedButton10)
ON_BN_CLICKED(IDC_BUTTON13, &CMFCApplication1Dlg::OnBnClickedButton13)
ON_BN_CLICKED(IDC_BUTTON14, &CMFCApplication1Dlg::OnBnClickedButton14)
ON_BN_CLICKED(IDC_BUTTON15, &CMFCApplication1Dlg::OnBnClickedButton15)
ON_BN_CLICKED(IDC_BUTTON16, &CMFCApplication1Dlg::OnBnClickedButton16)
ON_BN_CLICKED(IDC_BUTTON19, &CMFCApplication1Dlg::OnBnClickedButton19)
ON_BN_CLICKED(IDC_BUTTON20, &CMFCApplication1Dlg::OnBnClickedButton20)
ON_BN_CLICKED(IDC_BUTTON12, &CMFCApplication1Dlg::OnBnClickedButton12)
ON_BN_CLICKED(IDC_BUTTON11, &CMFCApplication1Dlg::OnBnClickedButton11)
ON_BN_CLICKED(IDC_BUTTON18, &CMFCApplication1Dlg::OnBnClickedButton18)
ON_BN_CLICKED(IDC_BUTTON21, &CMFCApplication1Dlg::OnBnClickedButton21)
ON_BN_CLICKED(IDC_BUTTON22, &CMFCApplication1Dlg::OnBnClickedButton22)

END_MESSAGE_MAP()


// CMFCApplication1Dlg 訊息處理程式

BOOL CMFCApplication1Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();

// 將“關于...”選單項添加到系統選單中。

// IDM_ABOUTBOX 必須在系統命令范圍內。
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

// 設定此對話框的圖示。當應用程式主視窗不是對話框時,框架將自動
//  執行此操作
SetIcon(m_hIcon, TRUE); // 設定大圖示
SetIcon(m_hIcon, FALSE); // 設定小圖示

ShowWindow(SW_MAXIMIZE);

// TODO: 在此添加額外的初始化代碼

return TRUE;  // 除非將焦點設定到控制元件,否則回傳 TRUE
}

void CMFCApplication1Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}

// 如果向對話框添加最小化按鈕,則需要下面的代碼
//  來繪制該圖示。對于使用檔案/視圖模型的 MFC 應用程式,
//  這將由框架自動完成。

void CMFCApplication1Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于繪制的設備背景關系

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// 使圖示在作業區矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// 繪制圖示
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialogEx::OnPaint();
}
}

//當用戶拖動最小化視窗時系統呼叫此函式取得游標
//顯示。
HCURSOR CMFCApplication1Dlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}





void CMFCApplication1Dlg::OnBnClickedButton8()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="0";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE);         //把Result的值傳給編輯框顯示。// TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton3()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="1";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE);         //把Result的值傳給編輯框顯示。// TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton5()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="2";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton9()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="3";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton4()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="4";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton1()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="5";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton6()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="6";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton7()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="7";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton2()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="8";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton17()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="9";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton10()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+=".";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton13()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="+";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton14()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="-";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton15()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="*";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton16()
{
UpdateData(TRUE);          //

Result0+="/";                //       

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton19()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

Result0+="%";                //在按下數字鍵的情況下,則在Result后加"0"         

UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton20()
{
 UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

     Result0+="^";                //在按下數字鍵的情況下,則在Result后加"0"         

     UpdateData(FALSE); // TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton12()
{
 UpdateData(TRUE);
    Result0 = "";         //將對話框設為空,即達到清零的效果
    UpdateData(FALSE);// TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton11()
{
UpdateData(TRUE);
    if (!Result0.IsEmpty())      
    {
        Result0 = Result0.Left(Result0.GetLength()-1);  //移除最右邊一個字符
    }
    UpdateData(FALSE);// TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton18()
{
 UpdateData(TRUE);//
 CString str=Result0; //定義一個變數str  


}

void CMFCApplication1Dlg::OnBnClickedButton21()
{
UpdateData(TRUE);
    Result0 += "(";         //將對話框設為空,即達到清零的效果
    UpdateData(FALSE);// TODO: 在此添加控制元件通知處理程式代碼
}


void CMFCApplication1Dlg::OnBnClickedButton22()
{
UpdateData(TRUE);          //把編輯框顯示的字串傳給相應的變數Result

     Result0+=")";                //在按下數字鍵的情況下,則在Result后加"0"         

     UpdateData(FALSE);// TODO: 在此添加控制元件通知處理程式代碼
}





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

標籤:基礎類

上一篇:LZMA壓縮問題js版本和C++版本不一樣

下一篇:VC 什么控制元件能實作這樣的效果?

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