主頁 > 軟體工程 > 我在RecyclerView中添加資料,但資料沒有立即反映

我在RecyclerView中添加資料,但資料沒有立即反映

2022-06-01 20:14:40 軟體工程

我正在嘗試添加資料,Recycler View但我從中提取的資料Edit Text沒有立即插入。只有在我執行一些其他操作(例如洗掉串列)之后才會插入資料。我在這里附上了我所有的代碼。

我認為notifyDataSetChanged當我嘗試從編輯文本中添加新文本時不會被呼叫。

代碼:

MainActivity.java

package com.example.sqlitedatabase;

import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

Adapter adapter;
RecyclerView recyclerView;
TextView textView;
ImageView addTodo;
ConstraintLayout constraintLayout;
ConstraintLayout editTextContainer;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayList<ListModel> list = new ArrayList<>();
    editTextContainer = findViewById(R.id.constraintParentOfAddTodo);
    textView = findViewById(R.id.textView);
    addTodo = findViewById(R.id.addTodo);
    addData(list);

    addTodo_onClickListener(list);

    adapter = new Adapter(this);
    recyclerView = findViewById(R.id.recyclerView);
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    adapter.setList(list);


}

private void addTodo_onClickListener(ArrayList<ListModel> list) {
    addTodo.setOnClickListener(v -> {
        addTodo.setVisibility(View.GONE);
        
        View view = getLayoutInflater().inflate(R.layout.after_add_clicked, null, false);
        //Used for USERS input
        EditText editText = (EditText) view.findViewById(R.id.editTextTodo);
        //This ImageView is used as a button to set data in list
        ImageView setTodo = (ImageView) view.findViewById(R.id.sendTodo);
        Animation animAddTodo = AnimationUtils.loadAnimation(MainActivity.this, R.anim.righttoleft);
        view.setAnimation(animAddTodo);
        editTextContainer.addView(view);

        setTodo_onClickListener(editText, setTodo, list, view);

    });

}

private void setTodo_onClickListener(EditText editText, ImageView setTodo, ArrayList<ListModel> list, View view) {
    setTodo.setOnClickListener(v -> {
                String txt = editText.getText().toString();
                addToList(list, txt);
                view.setVisibility(View.GONE);
                addTodo.setVisibility(View.VISIBLE);
            }
    );
}

//this function is Supposed to add new data to To do list
private void addToList(ArrayList<ListModel> list, String text) {
    //no work is done on id
    list.add(new ListModel(1, text, true));
}

//for displaying list initially
//this data gets inserted instantly
//No problem with them.
private void addData(ArrayList<ListModel> list) {
    list.add(new ListModel(1, "1", false));
    list.add(new ListModel(2, "2", false));
    list.add(new ListModel(3, "3", false));
    list.add(new ListModel(4, "4", false));
    list.add(new ListModel(5, "5", false));
    list.add(new ListModel(6, "6", false));
    list.add(new ListModel(7, "7", false));
    list.add(new ListModel(8, "8", false));
    list.add(new ListModel(9, "9", false));
    list.add(new ListModel(10, "10", false));

}

配接器.java

package com.example.sqlitedatabase;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private final Context context;
private ArrayList<ListModel> list = new ArrayList<>();

public Adapter(Context context) {
    this.context = context;
}

@NonNull
@Override
public Adapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_template, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull Adapter.ViewHolder holder, int position) {
    holder.todoText.setText(list.get(position).getText());

    holder.notDoneBtn.setOnClickListener(v -> {
                if (list.size() != 0) {

                    list.remove(list.get(position));
                    notifyDataSetChanged();

                }
            }
    );

}

@Override
public int getItemCount() {
    return list.size();
}

public void setList(ArrayList<ListModel> list) {
    this.list = list;
    notifyDataSetChanged();
}

public static class ViewHolder extends RecyclerView.ViewHolder {

    private final TextView todoText;
    private final ImageView doneBtn;
    private final ImageView notDoneBtn;
    private  final RelativeLayout listBlock;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        listBlock=itemView.findViewById(R.id.listBlock);
        todoText = itemView.findViewById(R.id.todoText);
        doneBtn = itemView.findViewById(R.id.doneBtn);
        notDoneBtn = itemView.findViewById(R.id.notDoneBtn);

    }
}

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@ id/constraintLayout"
    android:layout_width="match_parent"
    android:background="@color/white"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@ id/textView"
        android:layout_width="200dp"
        android:layout_height="120dp"
        android:layout_marginTop="4dp"
        android:fontFamily="sans-serif-condensed"
        android:gravity="center"
        android:text="TO-DO LIST"
        android:textSize="28sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.502"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </TextView>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@ id/constraintLayout3"
        android:layout_width="300dp"
        android:layout_height="480dp"
        android:layout_marginTop="12dp"

        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/textView"
        app:layout_constraintVertical_bias="0.0">

        <ScrollView
            android:layout_width="300dp"
            android:layout_height="match_parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.50">

            <androidx.recyclerview.widget.RecyclerView
                android:id="@ id/recyclerView"
                android:layout_width="280dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="12dp">

            </androidx.recyclerview.widget.RecyclerView>

        </ScrollView>
    </androidx.constraintlayout.widget.ConstraintLayout>


    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@ id/constraintParentOfAddTodo"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginBottom="2dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@ id/constraintLayout3"
        app:layout_constraintVertical_bias="0.794">

        <ImageView
            android:id="@ id/addTodo"
            android:layout_width="44dp"
            android:layout_height="44dp"
            android:layout_marginVertical="0dp"
            android:backgroundTint="@color/white"
            android:elevation="10dp"
            android:src="@drawable/add_circle_48px"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.956"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent">

        </ImageView>
    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

list_template.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="42dp"
    android:id="@ id/listBlock"
    android:layout_width="280dp"
    android:layout_gravity="center_horizontal">
    <androidx.cardview.widget.CardView

        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="2dp"
        android:layout_marginStart="1dp"
        android:elevation="200dp"
        app:cardBackgroundColor="#932"
        app:cardCornerRadius="5dp">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:id="@ id/todoText"
                android:layout_width="190dp"
                android:layout_height="40dp"
                android:layout_marginStart="10dp"
                android:fontFamily="monospace"
                android:gravity="center_vertical"
                android:maxHeight="40dp"
                android:padding="5dp"
                android:text="Reading books"
                android:textColor="#EFEBE9"
                android:textSize="14sp"
                android:textStyle="bold">

            </TextView>

            <ImageView
                android:id="@ id/notDoneBtn"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_alignBottom="@id/todoText"
                android:padding="5dp"
                android:layout_marginStart="5dp"
                android:layout_marginTop="4dp"
                android:layout_marginBottom="4dp"
                android:layout_toEndOf="@ id/todoText"
                android:background="#999999"
                android:src="@drawable/close_20px">
            </ImageView>

            <ImageView
                android:id="@ id/doneBtn"
                android:layout_width="32dp"
                android:layout_height="32dp"
                android:layout_marginStart="4dp"
                android:layout_marginTop="5dp"
                android:layout_marginBottom="4dp"
                android:layout_toEndOf="@ id/notDoneBtn"
                android:background="#999999"
                android:padding="5dp"
                android:src="@drawable/done_20px">

            </ImageView>
        </RelativeLayout>


    </androidx.cardview.widget.CardView>

</RelativeLayout>

after_add_clicked.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="40dp"

    android:layout_marginBottom="2dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="1.0"
    app:layout_constraintStart_toStartOf="parent">


    <com.google.android.material.card.MaterialCardView
        android:id="@ id/materialCardView"
        android:layout_width="310dp"
        android:layout_height="match_parent"
        android:layout_marginStart="50dp"
        android:background="#121212"
        android:backgroundTint="@color/white"
        app:cardCornerRadius="30dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:strokeColor="#888"
        app:strokeWidth="2dp">

        <EditText
            android:id="@ id/editTextTodo"
            android:layout_width="300dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:background="@color/white"
            android:fontFamily="monospace"
            android:gravity="center_vertical"
            android:text="What to do"
            android:inputType="text"
            android:textSize="20sp">

        </EditText>

    </com.google.android.material.card.MaterialCardView>

    <ImageView
        android:id="@ id/sendTodo"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_margin="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="4dp"
        android:layout_marginBottom="4dp"
        android:src="@drawable/ic_baseline_send_24"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.529"
        app:layout_constraintStart_toEndOf="@ id/materialCardView"
        app:layout_constraintTop_toTopOf="parent">

    </ImageView>

    <ImageView
        android:id="@ id/cancel"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_margin="4dp"
        android:layout_marginStart="4dp"
        android:layout_marginTop="4dp"
        android:layout_marginEnd="4dp"
        android:layout_marginBottom="4dp"
        android:src="@drawable/close_20px"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@ id/materialCardView"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

    </ImageView>


</androidx.constraintlayout.widget.ConstraintLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

我在 RecyclerView 中添加資料,但資料沒有立即反映 這就是我的應用程式的外觀。

uj5u.com熱心網友回復:

如果您呼叫addToList添加資料,只需將新專案插入到您的 Activity 和 Adapter 共享的串列中 - 配接器不知道有任何更改,因此它不會更新顯示

您應該setList在配接器上呼叫您的函式 - 用新串列替換當前串列(如果它實際上是同一個串列無關緊要),然后呼叫notifyDataSetChanged()以顯示“新”串列。

在您的配接器上擁有這樣的功能總是更好 - 當您有新資料時,您只需將其傳遞給配接器,它可以在內部處理更新自身的細節。傳遞資料的東西不需要知道任何關于它的資訊。如果您想稍后更新配接器的作業方式(比如更具體地更新某些專案,或者使用 a DiffUtil),那么這仍然是一個內部細節 - 傳遞資料的東西只需要像往常一樣傳遞資料.

(您應該setList復制傳入的串列,例如list.toList()- 如果有東西修改了原始串列,您不希望配接器的內部串列發生更改,這可能會導致錯誤。這里很好,但如果您使用DiffUtil例如,您的oldList將是您的newList,沒有差異意味著沒有更新)

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

標籤:爪哇 安卓 xml android-recyclerview

上一篇:C#XmlDocument如何獲取指向根元素的指標并遍歷子元素

下一篇:如何使用fop將Tesseract軟體輸出(hocr)轉換為純txt檔案(生成零輸出)?

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