暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

java小结

明王足迹 2021-08-04
157

java

java笔记



1


目录:

1:jdbc操作(基本步骤)

2:File基本控制

3:jvm简述(大概)

4:类加载机制

5:错题笔记

1


jdbc


目标:创建一个以JDBC连接数据库的程序,在这里我用到了7个步骤:

1、加载JDBC驱动程序;

2、提供JDBC连接的URL;

3、创建数据库的连接;

4、创建一个Statement;

5、执行SQL语句;

6、处理结果;

7、关闭JDBC对象 
















1、加载驱动,

在mysql官网下载了一个数据库驱动,然后在eclipse中的build path添加驱动

加载驱动的程序,这里用Class中的forName实现

代码如下:

    try{
    Class.forName("com.mysql.jdbc.Driver");
    }catch(Exception e){
    System.out.println("加载失败");
    }

    2、提供url

    连接URL定义了连接数据库时的协议、子协议、数据源标识

    协议:以jdbc开始------jdbc

    子协议:数据库管理系统的名称-----mysql

    数据源标识:找到数据库来源的地址与连接端口----localhost:3306

    例子:jdbc:mysql://localhost:3306

      String uri = "jdbc:mysql://localhost:3306/students?useSSL=true"


      3、创建数据库的连接

      然后确定需要连接的数据库,以及提供连接数据库的用户和密码再用DriverManager.getConnection();进行连接,这里连接的是students数据库,用户是root,密码123456;

      代码如下:

        String uri = "jdbc:mysql://localhost:3306/students?useSSL=true";//要连接哪个数据库
        String user = "root"; //哪个用户去连接
        String password = "123456"; //用户密码

        //连接数据库
        try{
        con = DriverManager.getConnection(uri,user,password);
        }catch(SQLException e){
        System.out.println("链接失败");
        }

        4、创建一个Statement

        就是存放要执行的sql语句的一个对象

        代码如下:

          Statement sql;
          sql = con.createStatement();//sql用来存储将要执行的sql语句

          5、执行sql语句,要用ResultSet这个类的对象来接收从数据库返回的数据

          代码如下

            ResultSet rs;
            rs = sql.executeQuery("SELECT * FROM mess");

            6、处理结果

            ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问,使用结果集(ResultSet)对象的访问方法获取数据,这里只是查看数据

            代码如下,

              while(rs.next()){
                      System.out.printf("%s\t",rs.getString(1));
                      System.out.printf("%s\t",rs.getString(2));
                      System.out.printf("%s\t",rs.getString(3));
                      System.out.printf("%s\n",rs.getString(4));
               }


              7,关闭数据库连接

              好像java会自动关闭,这里还是加上吧,释放资源,也就几个字母

              ***************************************************************

              2


              file

              目标:在服务器上接收小程序上传的用户名和密码,并保存为txt文档,好将这些数据放到mysql中,步骤较少,用到了jsp中request对象的getParameter方法可以获取参数,直接上代码:

                File file = new File("D:/register.txt");
                String username = request.getParameter("username");//获取到用户名参数
                String password = request.getParameter("password");//获取到用户的密码
                char[] p = password.toCharArray();//转为字符数组型
                char[] n = username.toCharArray();
                try{
                      Writer outer = new FileWriter(file);//创建一个指向该文件的对象,后面通过这个对象进行写入数据
                outer.write(n);
                outer.write(" ");//用户名和密码用空格隔开
                outer.write(p);
                     outer.close();//关闭文件
                }catch(IOException e){
                out.println(e);
                  


                ***************************************************************

                3


                jvm

                学习笔记:(不知道是做什么的,先记住有这个东西,等以后再理解)

                方法区、堆、虚拟机栈、本地方法栈、程序计数器

                1.方法区(Method Area)存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据

                2.堆(Heap) 存放对象实例,几乎所有对象实例都在这里分配内存

                3.虚拟机栈(VM Stack) 描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个Stack Frame(方法运行时的基础数据结构)用于存储局部变量表、操作数栈、动态连接、方法出口等信息

                4.本地方法栈(Native Method Stack)  与虚拟机栈类似,不过是为虚拟机使用的Native方法服务。(有的虚拟机譬如Sun HotSpot虚拟机直接把本地方法栈和虚拟机栈合二为一)

                5.程序计数器(Program Counter Register) 可看作当前线程所执行的字节码的行号的标识器


                ***************************************************************

                4


                类加载机制

                1、父类静态对象和静态代码块

                2、子类静态对象和静态代码块

                3、父类非静态对象和非静态代码块

                4、父类构造函数

                5、子类非静态对象和非静态代码块

                6、子类构造函数

                ***************************************************************

                5


                错题笔记

                静态成员默认赋值为0


                关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且只能修改变量,而synchronized可以修饰方法,以及代码块


                多线程访问volatile不会发生阻塞,而synchronized会出现阻塞


                volatile能保证数据的可见性,但不能保证原子性;而synchronized可以保证原子性,也可以间接保证可见性,因为它会将私有内存和公共内存中的数据做同步


                关键字volatile解决的下变量在多线程之间的可见性;而synchronized解决的是多线程之间资源同步问题


                volatile:不稳定的

                synchronized:同步的


                END




















                文章转载自明王足迹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                评论