java三层架构,有图有案例有代码,一看就懂!!!

这篇具有很好参考价值的文章主要介绍了java三层架构,有图有案例有代码,一看就懂!!!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

三层架构

java底层结构图,MySQL,java,架构,microsoft

三层结构解释:

视图层:主要是用于与用户进行交互,比如接收用户输入的内容将返回结果向用户展示等。

业务逻辑层:实现每个功能的特定的逻辑方法。

数据访问层:主要是与数据库进行连接,然后对数据库进行增删改查工作。

结构一:

包的层级结构:

java底层结构图,MySQL,java,架构,microsoft

三层结构目录架构:

命名规则为公司域名反写 eg:com.li.xxx

bean:存放JavaBean,一张表对应一个类,一个字段对应一个属性

dao:存放连接数据库及对数据库进行增删改查的操作的接口

dao.impl:存放dao接口的实现类

service:存放逻辑层的接口

service.impl:存放逻辑层的接口的实现类

view:用户交互层的接口

view.impl:用户交互层的接口的实现类

包内的实现类:

java底层结构图,MySQL,java,架构,microsoft
在编写代码之前先要创建一个数据库:

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;

以学生类为例下面是实现代码:

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层的接口:

稍作赘述:接口的出现实际上是为了制定规则,代码编写三要素:方法名、参数、返回值类型;而在接口中定义这三个东西然后让子类实现,当某一层未开发时也不影响其他层的开发。

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层接口的实现类:

//增加记录
    @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层的接口的实现类:

//添加学生字段
    @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的是接口的实现类:

//学生的注册(添加字段)
    @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("欢迎使用校园系统--学生模块管理");
        int key = -1;
        do {
            System.out.println("输入:\n1.添加学生\n2.根据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();
    }
结构二:

结构一中,在DAO层中频繁的进行数据连接创建访问对象等,结构复杂,代码重复率高,因此结构二中对DAO层进行了抽象。

创建DaoUtil类:将加载驱动,获取连接,流的释放进行抽象。

public class DaoUtil {
    //加载驱动
    //驱动的加载只需加载一次,因此使用静态代码块,当加载此类时,会随着类的加载而加载一次
    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;
    }

    //关闭连接
    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();
            }
        }
    }
}

创建BaseDao:用来存放增删改和查的方法;这里需要注意的是,增删改操作时返回值是int的整数值,表示数据库中的受影响的行数。而查询操作返回的是ResultSet类型的结果,因此需要分开进行写。

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;
    }

}

抽象后的实现类如下:

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;
    }
}

不同的分法可能会略微有所区别,划分程度不同,划分的层级可能也不同,但本质思想不变,将代码功能模块化,实现高内聚低耦合,例如Dao用来做数据库连接等操作,就尽量只需调方法传参就能执行即可,不要在执行的过程中还需要其他层数据的介入,主要也是为了开发的高效性,同时便于对代码进行测试。文章来源地址https://www.toymoban.com/news/detail-772111.html

到了这里,关于java三层架构,有图有案例有代码,一看就懂!!!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AI —— 一看就懂的代码助手Copilot获取教程

            随着chatgpt的发布,人工智能领域近期站上了风口浪尖。GitHub Copilot由github与 OpenAI 合作创建,是世界上第一个使用 OpenAI 的 Codex 模型(GPT-3 的后代)制作的大规模生成式 AI 开发工具。GitHub Copilot 作为 AI 结对程序员开启了软件开发的新时代,通过自动完成注释和代

    2024年02月02日
    浏览(52)
  • APIFOX在线调试接口(有图有实例)

    本篇博客内容用于个人在IDEA接口调试返回Android时的 简单 测试,特此记录,无精华内容 1.进入Apifox,点击Web版 Apifox - API 文档、调试、Mock、测试一体化协作平台 - 接口文档工具,接口自动化测试工具,接口Mock工具,API文档工具,API Mock工具,API自动化测试工具 https://www.apif

    2024年02月11日
    浏览(51)
  • PostgreSQL数据导入导出【亲测】有图有真相

    pg_dump是用于备份PostgreSQL数据库的工具。它可以在数据库正在使用的时候进行完整一致的备份,并不阻塞其它用户对数据库的访问。 有图有真相 导出 导入 1、导入整个数据库 2、导出某个表 压缩导入方法 3、一般用dump导出数据会比较大,推荐使用xz压缩 压缩方法 xz dum.sql 会生

    2024年02月10日
    浏览(38)
  • HarmonyOS版的“抖音”长啥样?有图有真相

    “鸿蒙系统实战短视频App 从0到1掌握HarmonyOS”系列课程是面向HarmonyOS实战的视频教程,该课程会通过构建一个真实的短视频App来向读者展示HarmonyOS的全过程。 本节将演示基于HarmonyOS短视频App的核心功能。通过了解该App的功能,也能初步对本课程的内容有所了解。这个短视频

    2024年02月11日
    浏览(38)
  • ubuntu系统CPU压力测试-有图有真相

    为了测试CPU在ubuntu下满负荷运行机器散热情况,而进行的简单实验。 确认物理机是否联网,确认资源OK #sudo  update   1.cpu性能测试-安装软件 #sudo apt install -y stress psensor htop stress 介绍 可以查看这个大神的作品 链接:Linux性能优化(一)——stress压力测试工具_stress工具_天山老

    2024年02月09日
    浏览(38)
  • 用ChatGPT实际沟通的结果[有图有真相]

    笔者因为没有办法正常注册账号,所以使用的是试用版的chatgpt,语言模型当下试用版的是Chatgpt3.5的模型,而不是商用版的ChatGPT-4的模型。 首先问AI对 单词词汇的含义的理解。 回答的很得体, 然后问对职业的区分, 这些我都不知道,但AI知道的。不知道它在回答前是不是g

    2023年04月13日
    浏览(77)
  • 史上最详细教程------使用git命令将代码上传到GitHub(一看就会)

    计算机专业的朋友们想必肯定听说过git和GitHub这两个名词吧. git是什么呢? 简单来说:git是一款最流行的版本控制工具.通过git可以用来进行代码的提交 更新 下载等. GitHub是什么呢? GitHub是全球最大的代码托管平台,全球的开发人员将自己的代码托管给这个平台.上面有很多开源的

    2024年02月09日
    浏览(75)
  • 【Java--数据结构】提升你的编程段位:泛型入门指南,一看就会!

    泛型是一种编程概念,它允许我们编写可以适用于多种数据类型的代码。通过使用泛型,我们可以在编译时期将具体的 数据类型作为参数 传递给代码,从而实现代码 的复用和灵活性 。 在传统的编程中,我们通常需要为不同的数据类型编写不同的代码,这样会导致代码冗余

    2024年04月26日
    浏览(63)
  • git 仓库两种代码拉取方式及部分命令——大白话超详细一看就会

    git 项目拉取 方法一: 1,去官网安装git; 2,在文件夹右键点击打开菜单 选择Open Git Bash here 打开git命令框; 3, 第一次拉取需要设置,如果不是请忽略该步骤 使用git config --global user.name “名字”;git config --global user.email “邮箱”;设置你的个人信息; 4,输入git clone http:

    2024年04月16日
    浏览(46)
  • 使用MDK-ARM(KEIL V5)创建一个工程(有图有文字)

    使用keil v5创建工程是一个比较复杂的过程,还希望读者能够耐下心来,过于浮躁会使创建过程出错,导致编译器无法编译等等许多问题。 言归正传,我们接下来开始说明创建过程,说明过程以图片为主,文字为辅,有什么创建过程中出现的问题可以问我(评论+私信),或者

    2024年01月19日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包