国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java三層架構(gòu),有圖有案例有代碼,一看就懂?。?!

這篇具有很好參考價值的文章主要介紹了java三層架構(gòu),有圖有案例有代碼,一看就懂!?。 OM麑Υ蠹矣兴鶐椭?。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

三層架構(gòu)

java底層結(jié)構(gòu)圖,MySQL,java,架構(gòu),microsoft

三層結(jié)構(gòu)解釋:

視圖層:主要是用于與用戶進行交互,比如接收用戶輸入的內(nèi)容將返回結(jié)果向用戶展示等。

業(yè)務邏輯層:實現(xiàn)每個功能的特定的邏輯方法。

數(shù)據(jù)訪問層:主要是與數(shù)據(jù)庫進行連接,然后對數(shù)據(jù)庫進行增刪改查工作。

結(jié)構(gòu)一:

包的層級結(jié)構(gòu):

java底層結(jié)構(gòu)圖,MySQL,java,架構(gòu),microsoft

三層結(jié)構(gòu)目錄架構(gòu):

命名規(guī)則為公司域名反寫 eg:com.li.xxx

bean:存放JavaBean,一張表對應一個類,一個字段對應一個屬性

dao:存放連接數(shù)據(jù)庫及對數(shù)據(jù)庫進行增刪改查的操作的接口

dao.impl:存放dao接口的實現(xiàn)類

service:存放邏輯層的接口

service.impl:存放邏輯層的接口的實現(xiàn)類

view:用戶交互層的接口

view.impl:用戶交互層的接口的實現(xiàn)類

包內(nèi)的實現(xiàn)類:

java底層結(jié)構(gòu)圖,MySQL,java,架構(gòu),microsoft
在編寫代碼之前先要創(chuàng)建一個數(shù)據(jù)庫:

CREATE TABLE `student` (
  `Sid` int NOT NULL AUTO_INCREMENT,
  `Sname` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
  `birthday` datetime DEFAULT NULL,
  `ssex` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL DEFAULT '男',
  `classid` int DEFAULT NULL,
  PRIMARY KEY (`Sid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;

以學生類為例下面是實現(xiàn)代碼:

Student的JavaBean:

public class Student {
    //JavaBean實體類
    private int sid;
    private String sname;
    private Date birthday;
    private String ssex;
    private int classid;
    
    public Student(){
    }
    public Student(int sid,String sname,Date birthday,String ssex,int classid){
        this.sid = sid;
        this.sname = sname;
        this.birthday = birthday;
        this.ssex = ssex;
        this.classid = classid;
    }

    public int getSid() {
        return sid;
    }

    public void setSid(int sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSsex() {
        return ssex;
    }

    public void setSsex(String ssex) {
        this.ssex = ssex;
    }

    public int getClassid() {
        return classid;
    }

    public void setClassid(int classid) {
        this.classid = classid;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sid=" + sid +
                ", sname='" + sname + '\'' +
                ", birthday=" + birthday +
                ", ssex='" + ssex + '\'' +
                ", classid=" + classid +
                '}';
    }

Dao層的接口:

稍作贅述:接口的出現(xiàn)實際上是為了制定規(guī)則,代碼編寫三要素:方法名、參數(shù)、返回值類型;而在接口中定義這三個東西然后讓子類實現(xiàn),當某一層未開發(fā)時也不影響其他層的開發(fā)。

public interface IStudentDao {
    //增加
    public int addStudent(Student s);
    //刪除
    public int deleteStudent(int sid);
    //修改
    public int updateStudent(Student s);
    //查詢
    public Student findStudentBySid(int sid);
    //全查
    public List<Student> findAllStudent();
}

Dao層接口的實現(xiàn)類:

//增加記錄
    @Override
    public int addStudent(Student s) {
        Connection conn = null;
        PreparedStatement presta = null;
        int update = 0;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
            String sql = "insert into student(sname,birthday,ssex,classid) values (?,?,?,?)";
            presta = conn.prepareStatement(sql);
//            presta.setObject(1,s.getSid());
            presta.setObject(1,s.getSname());
            presta.setObject(2,s.getBirthday());
            presta.setObject(3,s.getSsex());
            presta.setObject(4,s.getClassid());
            update = presta.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if (presta != null){
                try {
                    presta.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return update;
    }

    //刪除記錄
    @Override
    public int deleteStudent(int sid) {
        int update  = 0;
        PreparedStatement presta = null;
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
            String sql = "delete from student where sid = ?";
            presta = conn.prepareStatement(sql);
            presta.setObject(1,sid);
            update = presta.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if(presta != null){
                try {
                    presta.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return update;
    }

    //修改記錄
    @Override
    public int updateStudent(Student s) {
        int update  = 0;
        PreparedStatement presta = null;
        Connection conn = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
            String sql = "update student set sname = ?,birthday = ? ,ssex = ? ,classid = ?  where sid = ?";
            presta = conn.prepareStatement(sql);
            presta.setObject(1,s.getSname());
            presta.setObject(2,s.getBirthday());
            presta.setObject(3,s.getSsex());
            presta.setObject(4,s.getClassid());
            presta.setObject(5,s.getSid());
            update = presta.executeUpdate();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if (presta != null){
                try {
                    presta.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
        return update;
    }

    //sid查詢
    @Override
    public Student findStudentBySid(int sid) {
        Connection conn = null;
                Student student = null;
        PreparedStatement statement = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
            String sql = "select * from student where sid = ?";
            statement = conn.prepareStatement(sql);
            statement.setObject(1,sid);
            ResultSet resultSet = statement.executeQuery();
            if(resultSet.next()){
                student = new Student();
                student.setSid(resultSet.getInt("sid"));
                student.setSname(resultSet.getString("sname"));
                student.setBirthday(resultSet.getDate("birthday"));
                student.setSsex(resultSet.getString("ssex"));
                student.setClassid(resultSet.getInt("classid"));
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if (statement != null){
                try {
                    statement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }

        return student;
    }

    //全查
    @Override
    public List<Student> findAllStudent() {
        Connection conn = null;
        PreparedStatement statement = null;
        List list = new ArrayList();
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
            String sql = "select * from student";
            statement = conn.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()){
                Student stu = new Student();
                stu.setSid(resultSet.getInt("sid"));
                stu.setSname(resultSet.getString("sname"));
                stu.setBirthday(resultSet.getDate("birthday"));
                stu.setSsex(resultSet.getString("ssex"));
                stu.setClassid(resultSet.getInt("classid"));
                list.add(stu);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            if (statement != null){
                try {
                    statement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(conn != null){
                try {
                    conn.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }

        return list;
    }

service層的接口:

public interface IStudentService {

    //注冊(添加字段)
    public boolean register(Student s);

    //刪除學生
    public boolean deleteStu(int sid);

    //修改學生信息
    public boolean modifyStu(Student s);

    //Sid查詢學生
    public Student info(int sid);

    //所有學生列表
    public List<Student> student();

}

service層的接口的實現(xiàn)類:

//添加學生字段
    @Override
    public boolean register(Student s) {
        boolean isok = false;
        IStudentDao isd = new StudentDaoImpl();
        int ret = isd.addStudent(s);
        if (ret > 0) {
            isok = true;
        }
        return isok;
    }

    //刪除學生字段
    @Override
    public boolean deleteStu(int sid) {
        boolean isok = false;
        IStudentDao isd = new StudentDaoImpl();
        int ret = isd.deleteStudent(sid);
        if (ret > 0){
            isok = true;
        }
        return isok;
    }

    //修改學生字段
    @Override
    public boolean modifyStu(Student s) {
        boolean isok = false;
        IStudentDao isd = new StudentDaoImpl();
        int i = isd.updateStudent(s);
        if (i > 0){
            isok = true;
        }
        return isok;
    }

    //Sid查學生字段
    @Override
    public Student info(int sid) {
        IStudentDao isd = new StudentDaoImpl();
        Student studentBySid = isd.findStudentBySid(sid);
        return studentBySid;
    }

    //學生字段全查
    @Override
    public List<Student> student() {
        IStudentDao isd = new StudentDaoImpl();
        List<Student> allStudent = isd.findAllStudent();
        return allStudent;
    }

View的是接口:

public interface IStudentView {
    //學生的注冊
    public void showstuadd();

    //學生的修改
    public void showstumodify();

    //學生的全部查詢
    public void showstuinfo();

    //學生的Sid查詢
    public void showstuinfoSid();

    //學生的刪除
    public void showstudelete();

    //學生的菜單
    public void showstumenu();
}

View的是接口的實現(xiàn)類:

//學生的注冊(添加字段)
    @Override
    public void showstuadd() {

        SimpleDateFormat format = new SimpleDateFormat();
        Scanner input  = new Scanner(System.in);
        System.out.println("添加學生:");
        System.out.println("請輸入學生姓名");
        String sname = input.next();
        System.out.println("請輸入學生生日");
        String bir = input.next();
        System.out.println("請輸入學生性別");
        String sex = input.next();
        System.out.println("請輸入學生班級");
        int classid = input.nextInt();
        Student stu = new Student();
        stu.setSname(sname);
        try {
            stu.setBirthday(format.parse(bir));
        } catch (ParseException e) {
            stu.setBirthday(new Date());
        }
        stu.setSsex(sex);
        stu.setClassid(classid);
        IStudentService iss = new StudentServiceImpI();
        boolean register = iss.register(stu);
        if (register){
            System.out.println("插入成功");
        }else{
            System.out.println("插入失敗");
        }

    }

    //學生的修改
    @Override
    public void showstumodify() {
        SimpleDateFormat format = new SimpleDateFormat();
        Scanner input  = new Scanner(System.in);
        System.out.println("修改學生信息:");
        System.out.println("請輸入需要修改的學生編號");
        int sid = input.nextInt();
        System.out.println("請輸入學生新姓名");
        String sname = input.next();
        System.out.println("請輸入學生新生日");
        String bir = input.next();
        System.out.println("請輸入學生新性別");
        String sex = input.next();
        System.out.println("請輸入學生新班級");
        int classid = input.nextInt();
        Student stu = new Student();
        stu.setSname(sname);
        try {
            stu.setBirthday(format.parse(bir));
        } catch (ParseException e) {
            stu.setBirthday(new Date());
        }
        stu.setSsex(sex);
        stu.setClassid(classid);
        stu.setSid(sid);
        IStudentService iss = new StudentServiceImpI();
        boolean register = iss.modifyStu(stu);
        if (register){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失敗");
        }
    }

    //學生的全部查詢
    @Override
    public void showstuinfo() {
        IStudentService iss = new StudentServiceImpI();
        List<Student> list = iss.student();
        list.forEach(System.out::println);
    }

    //學生的Sid查詢
    @Override
    public void showstuinfoSid() {
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入需要查詢的ID:");
        int i = scan.nextInt();
        IStudentService iss = new StudentServiceImpI();
        Student info = iss.info(i);
        System.out.println(info);
    }

    //學生的刪除
    @Override
    public void showstudelete() {
        Scanner scan = new Scanner(System.in);
        System.out.println("請輸入要刪除學生的ID:");
        int anInt = scan.nextInt();
        IStudentService iss = new StudentServiceImpI();
        boolean deleteStu = iss.deleteStu(anInt);
        if (deleteStu){
            System.out.println("刪除成功!");
        }else{
            System.out.println("刪除失敗!");
        }
    }

    //學生的菜單
    @Override
    public void showstumenu() {
        Scanner input = new Scanner(System.in);
        System.out.println("歡迎使用校園系統(tǒng)--學生模塊管理");
        int key = -1;
        do {
            System.out.println("輸入:\n1.添加學生\n2.根據(jù)ID查看信息\n3.查看所有學生\n4.修改學生\n5.開除學生\n0.退出程序");
            System.out.println("請輸入:");
            if(input.hasNextInt()) {
                key = input.nextInt();
                switch(key) {
                    case 1:
                    {
                        showstuadd();
                    }
                    break;
                    case 2:
                    {
                        showstuinfoSid();
                    }
                    break;
                    case 3:
                    {
                        showstuinfo();
                    }
                    break;
                    case 4:
                    {
                        showstumodify();
                    }
                    break;
                    case 5:
                    {
                        showstudelete();
                    }
                    break;
                    default:
                        System.out.println("請輸入正確的序號");
                        break;
                }
            }else {
                System.out.println("請輸入菜單中的序號,否則打死你");
                input.next();
            }

        }while(key != 0);
        System.out.println("感謝使用");
    }

測試類:

public static void main(String[] args) {
       IStudentView isv = new IStudentViewImpI();
       isv.showstumenu();
    }
結(jié)構(gòu)二:

結(jié)構(gòu)一中,在DAO層中頻繁的進行數(shù)據(jù)連接創(chuàng)建訪問對象等,結(jié)構(gòu)復雜,代碼重復率高,因此結(jié)構(gòu)二中對DAO層進行了抽象。

創(chuàng)建DaoUtil類:將加載驅(qū)動,獲取連接,流的釋放進行抽象。

public class DaoUtil {
    //加載驅(qū)動
    //驅(qū)動的加載只需加載一次,因此使用靜態(tài)代碼塊,當加載此類時,會隨著類的加載而加載一次
    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    
    //獲取連接
    public static Connection getConn(){
        Connection conn = null;
        try {
            String url = "jdbc:mysql://localhost:3306/myschool?charset=utf8mb4&useSSL=false&useTimezone=true&serverTimezone=GMT%2B8&characterEncoding=utf-8&allowPublicKeyRetrieval=true";
            String user = "root";
            String pwd = "123456";
            conn = DriverManager.getConnection(url, user, pwd);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return conn;
    }

    //關(guān)閉連接
    public static void closeResource(Connection conn, PreparedStatement prep, ResultSet res){
        if (res != null){
            try {
                res.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (prep != null){
            try {
                prep.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if (conn != null){
            try {
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

創(chuàng)建BaseDao:用來存放增刪改和查的方法;這里需要注意的是,增刪改操作時返回值是int的整數(shù)值,表示數(shù)據(jù)庫中的受影響的行數(shù)。而查詢操作返回的是ResultSet類型的結(jié)果,因此需要分開進行寫。

public class BaseDao {
    protected Connection conn;
    protected PreparedStatement prepstat;
    protected ResultSet rs;

    //增刪改
    protected int update(String sql,Object...args){
        int ret = 0;
        try {
            conn = DaoUtil.getConn();
            prepstat = conn.prepareStatement(sql);
            if (args != null) {
                for (int i = 0; i < args.length; i++) {
                    prepstat.setObject(i + 1,args[i]);
                }
            }
            ret = prepstat.executeUpdate();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            DaoUtil.closeResource(conn, prepstat, rs);
        }
        return ret;
    }

    //查詢
    protected ResultSet query(String sql,Object...args){
        ResultSet rs = null;
        try {
            conn = DaoUtil.getConn();
            prepstat = conn.prepareStatement(sql);
            if (args != null){
                for (int i = 0; i < args.length; i++) {
                    prepstat.setObject(i + 1,args[i]);
                }
            }
            rs = prepstat.executeQuery();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return rs;
    }

}

抽象后的實現(xiàn)類如下:

public class StudentDaoImpl extends BaseDao implements IStudentDao {
    //增加記錄
    @Override
    public int addStudent(Student s) {
        String sql = "insert into student(sname,birthday,ssex,classid) values (?,?,?,?)";
        return update(sql,s.getSname(),s.getBirthday(),s.getSsex(),s.getClass());
    }

    //刪除記錄
    @Override
    public int deleteStudent(int sid) {
        String sql = "delete from student where sid = ?";
        return update(sql,sid);
    }

    //修改記錄
    @Override
    public int updateStudent(Student s) {
        String sql = "update student set sname = ?,birthday = ? ,ssex = ? ,classid = ?  where sid = ?";
        return update(sql,s.getSname(),s.getBirthday(),s.getSsex(),s.getClassid(),s.getSid());
    }

    //sid查詢
    @Override
    public Student findStudentBySid(int sid) {
        Student s = null;
        SimpleDateFormat format = new SimpleDateFormat();
        try {
            String sql = "select * from student where sid = ?";
            rs = query(sql, sid);
            if (rs.next()) {
                s = new Student();
                s.setSid(rs.getInt("sid"));
                s.setSname(rs.getString("sname"));
                try {
                    s.setBirthday(format.parse(rs.getString("birthday")));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                s.setSsex(rs.getString("ssex"));
                s.setClassid(rs.getInt("classid"));
                s.setSid(rs.getInt("sid"));
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            DaoUtil.closeResource(conn, prepstat, rs);
        }
        return s;
    }
        //全查
    @Override
    public List<Student> findAllStudent() {
        Student s = null;
        List list = new ArrayList();
        SimpleDateFormat format = new SimpleDateFormat();
        try {
            String sql = "select * from student where sid = ?";
            rs = query(sql);
            if (rs.next()) {
                s = new Student();
                s.setSid(rs.getInt("sid"));
                s.setSname(rs.getString("sname"));
                try {
                    s.setBirthday(format.parse(rs.getString("birthday")));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                s.setSsex(rs.getString("ssex"));
                s.setClassid(rs.getInt("classid"));
                s.setSid(rs.getInt("sid"));
                list.add(s);
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }finally {
            DaoUtil.closeResource(conn, prepstat, rs);
        }
        return list;
    }
}

不同的分法可能會略微有所區(qū)別,劃分程度不同,劃分的層級可能也不同,但本質(zhì)思想不變,將代碼功能模塊化,實現(xiàn)高內(nèi)聚低耦合,例如Dao用來做數(shù)據(jù)庫連接等操作,就盡量只需調(diào)方法傳參就能執(zhí)行即可,不要在執(zhí)行的過程中還需要其他層數(shù)據(jù)的介入,主要也是為了開發(fā)的高效性,同時便于對代碼進行測試。文章來源地址http://www.zghlxwxcb.cn/news/detail-772111.html

到了這里,關(guān)于java三層架構(gòu),有圖有案例有代碼,一看就懂?。?!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • AI —— 一看就懂的代碼助手Copilot獲取教程

    AI —— 一看就懂的代碼助手Copilot獲取教程

    ????????隨著chatgpt的發(fā)布,人工智能領(lǐng)域近期站上了風口浪尖。GitHub Copilot由github與 OpenAI 合作創(chuàng)建,是世界上第一個使用 OpenAI 的 Codex 模型(GPT-3 的后代)制作的大規(guī)模生成式 AI 開發(fā)工具。GitHub Copilot 作為 AI 結(jié)對程序員開啟了軟件開發(fā)的新時代,通過自動完成注釋和代

    2024年02月02日
    瀏覽(33)
  • APIFOX在線調(diào)試接口(有圖有實例)

    APIFOX在線調(diào)試接口(有圖有實例)

    本篇博客內(nèi)容用于個人在IDEA接口調(diào)試返回Android時的 簡單 測試,特此記錄,無精華內(nèi)容 1.進入Apifox,點擊Web版 Apifox - API 文檔、調(diào)試、Mock、測試一體化協(xié)作平臺 - 接口文檔工具,接口自動化測試工具,接口Mock工具,API文檔工具,API Mock工具,API自動化測試工具 https://www.apif

    2024年02月11日
    瀏覽(21)
  • HarmonyOS版的“抖音”長啥樣?有圖有真相

    HarmonyOS版的“抖音”長啥樣?有圖有真相

    “鴻蒙系統(tǒng)實戰(zhàn)短視頻App 從0到1掌握HarmonyOS”系列課程是面向HarmonyOS實戰(zhàn)的視頻教程,該課程會通過構(gòu)建一個真實的短視頻App來向讀者展示HarmonyOS的全過程。 本節(jié)將演示基于HarmonyOS短視頻App的核心功能。通過了解該App的功能,也能初步對本課程的內(nèi)容有所了解。這個短視頻

    2024年02月11日
    瀏覽(17)
  • PostgreSQL數(shù)據(jù)導入導出【親測】有圖有真相

    PostgreSQL數(shù)據(jù)導入導出【親測】有圖有真相

    pg_dump是用于備份PostgreSQL數(shù)據(jù)庫的工具。它可以在數(shù)據(jù)庫正在使用的時候進行完整一致的備份,并不阻塞其它用戶對數(shù)據(jù)庫的訪問。 有圖有真相 導出 導入 1、導入整個數(shù)據(jù)庫 2、導出某個表 壓縮導入方法 3、一般用dump導出數(shù)據(jù)會比較大,推薦使用xz壓縮 壓縮方法 xz dum.sql 會生

    2024年02月10日
    瀏覽(16)
  • ubuntu系統(tǒng)CPU壓力測試-有圖有真相

    ubuntu系統(tǒng)CPU壓力測試-有圖有真相

    為了測試CPU在ubuntu下滿負荷運行機器散熱情況,而進行的簡單實驗。 確認物理機是否聯(lián)網(wǎng),確認資源OK #sudo? update ? 1.cpu性能測試-安裝軟件 #sudo apt install -y stress psensor htop stress 介紹 可以查看這個大神的作品 鏈接:Linux性能優(yōu)化(一)——stress壓力測試工具_stress工具_天山老

    2024年02月09日
    瀏覽(20)
  • 用ChatGPT實際溝通的結(jié)果[有圖有真相]

    用ChatGPT實際溝通的結(jié)果[有圖有真相]

    筆者因為沒有辦法正常注冊賬號,所以使用的是試用版的chatgpt,語言模型當下試用版的是Chatgpt3.5的模型,而不是商用版的ChatGPT-4的模型。 首先問AI對 單詞詞匯的含義的理解。 回答的很得體, 然后問對職業(yè)的區(qū)分, 這些我都不知道,但AI知道的。不知道它在回答前是不是g

    2023年04月13日
    瀏覽(16)
  • 史上最詳細教程------使用git命令將代碼上傳到GitHub(一看就會)

    史上最詳細教程------使用git命令將代碼上傳到GitHub(一看就會)

    計算機專業(yè)的朋友們想必肯定聽說過git和GitHub這兩個名詞吧. git是什么呢? 簡單來說:git是一款最流行的版本控制工具.通過git可以用來進行代碼的提交 更新 下載等. GitHub是什么呢? GitHub是全球最大的代碼托管平臺,全球的開發(fā)人員將自己的代碼托管給這個平臺.上面有很多開源的

    2024年02月09日
    瀏覽(25)
  • 【Java--數(shù)據(jù)結(jié)構(gòu)】提升你的編程段位:泛型入門指南,一看就會!

    【Java--數(shù)據(jù)結(jié)構(gòu)】提升你的編程段位:泛型入門指南,一看就會!

    泛型是一種編程概念,它允許我們編寫可以適用于多種數(shù)據(jù)類型的代碼。通過使用泛型,我們可以在編譯時期將具體的 數(shù)據(jù)類型作為參數(shù) 傳遞給代碼,從而實現(xiàn)代碼 的復用和靈活性 。 在傳統(tǒng)的編程中,我們通常需要為不同的數(shù)據(jù)類型編寫不同的代碼,這樣會導致代碼冗余

    2024年04月26日
    瀏覽(35)
  • git 倉庫兩種代碼拉取方式及部分命令——大白話超詳細一看就會

    git 項目拉取 方法一: 1,去官網(wǎng)安裝git; 2,在文件夾右鍵點擊打開菜單 選擇Open Git Bash here 打開git命令框; 3, 第一次拉取需要設(shè)置,如果不是請忽略該步驟 使用git config --global user.name “名字”;git config --global user.email “郵箱”;設(shè)置你的個人信息; 4,輸入git clone http:

    2024年04月16日
    瀏覽(27)
  • 使用MDK-ARM(KEIL V5)創(chuàng)建一個工程(有圖有文字)

    使用MDK-ARM(KEIL V5)創(chuàng)建一個工程(有圖有文字)

    使用keil v5創(chuàng)建工程是一個比較復雜的過程,還希望讀者能夠耐下心來,過于浮躁會使創(chuàng)建過程出錯,導致編譯器無法編譯等等許多問題。 言歸正傳,我們接下來開始說明創(chuàng)建過程,說明過程以圖片為主,文字為輔,有什么創(chuàng)建過程中出現(xiàn)的問題可以問我(評論+私信),或者

    2024年01月19日
    瀏覽(92)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包