java学习笔记day03

活动地址:CSDN21天学习挑战赛

useSSL

SSL: Secure Sockets Layer  (安全套接字协议)

useSSL = true  :就是一般通过证书或者令牌进行安全验证

useSSL = false :就是通过账号密码进行连接

mysql 5.7 之后的版本必须要加上 useSSL = false

mysql 8.0 以上的版本,url需要添加时区 

面向过程:以事件为中心,分析问题的步骤
面向对象:把解决的问题分解成各个对象,对象之间通过方法来交互
可维护性主要表现在三个方面:可理解性,可测试性,可修改性

常量存放在数据区,变量在栈内存
取模运算中结果的正负取决于第一个数,即被取模数:
System.out.println(10 % -3); //1
 
System.out.println(-10 % 3); //-1

java提供了String和StringBuffer两个类封装字符串.
equals是比较对象的方法
trim是字符串去空格的方法
toString 将StringBuffer对象转换为String

List集合: 元素有序 ,可重复
ArrayList封装了一个动态的,允许再分配的Object[]数组
LinkedList内部以链表的形式保存集合中的元素,相对于ArrayList多了一些处理两端元素的方法
Vector是一个线程安全的List实现类

类是一组对象抽象模板

数组 int [] arr都在栈内存中,arr=数组内存地址

jar文件是一种软件包文件格式,通常用于聚合大量的java类文件,相关的元数据和资源(文本,图片等)文件到一个文件,便于java平台应用软件或库,是java项目生产的一个小的文件项目,也可以理解为一个java压缩包,里面封装了许多java类以及方法,变量.
java程序都会编译为class文件,class文件就是在jvm上运行的文件,只有jvm还不能完全支持class的执行,在解释class的时候jvm需要调用解释所需要的类库lib,而jre包含lib类库,jvm屏蔽了与具体操作系统平台相关的信息,使得java程序只需在java虚拟机上运行目的代码,

类的修饰符分为: 可访问控制符和非访问控制符
可访问控制符: public 
非访问控制符:抽象类:abstract 最终类 final
abstract修饰的都是抽象类:指这种类没有具体对象的一种概念类
当一个类不会有子类的时候用final把它说明为最终类,通常是一些有固定作用,用来完成某种标准功能的类
包访问性:类缺省访问控制符,没有访问控制符,只能被 同一个包中的类访问或引用


java的访问控制是停留在编译层的,不会在.class文件中留下任何的痕迹,只在编译的时候进行访问控制的检查,

dos命令:disk operating system 磁盘操作系统
md d:\\hsptemp 创建hsptemp文件夹
rd d:\\hsptemp 删除hsptemp文件夹
把dos指令发送到Dos系统,
1,接受指令
2,解析指令
3,执行指令

Integer i1=Integer.valueof(20);
int i2=i1.intValue();

jvm基本结构:
1,类加载器:在jvm启动时或者类运行时需要的.class文件加载到内存中
2,内存区域(运行时数据区):在jvm运行的时候操作所分配的内存区
3,执行引擎:负责执行class文件中包含的字节码指令
4,本地方法接口:主要时调用c/c++实现的本地方法及返回结果
方法区:用于存储类结构信息的地方,包括常量池,静态变量,构造函数等

java堆(heap):java栈总是和线程相关联的,每当创建一个线程,jvm为这个线程创建一个对应的java栈,在这个栈中又会包含多个栈帧,每运行一个方法就创建一个栈帧,用于存储局部变量表,操作栈,方法返回值等,每一个方法从调用直至执行完成的过程,就对应了一个栈帧在java栈中入栈到出栈的过程,所以java栈是线程私有的,

程序计数器:用于保存当前线程执行的内存地址,由于jvm是多线程执行的,为了保证线程切换回来后还能恢复到原先状态,就需要一个独立的计数器,记录之前中断的地方,可见程序计数器也是线程私有的

本地方法栈:和java栈的作用差不多,只不过是为jvm使用到的native方法服务的

GC机制:
检测出垃圾--回收垃圾

java创建对象的过程:
类加载器过程(第一次使用该类)  先看这个类有没有加载到内存 ,没有的话下面操作
1,加载:类加载器(双亲委派模式)通过全限名读取类的二进制流到jvm内部,存储在运行是内存的方法中,java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的访问入口
2,验证:比如final类不能被继承,final方法不能被重写
3,准备:为静态变量分配内存,设置初始值等
4,解析:将常量池中符号引用转为直接引用
5,初始化(先父后子):为静态变量赋值,执行static代码块
创建对象:
1,在堆区分配对象所需要的内存:分配内存包括本类和父类,但是不包括静态变量
2,对所有实例变量进行默认赋值:将方法区对于的实例变量的定义拷贝一份到堆区,然后进行赋值
3,执行初始化代码:先初始化父类然后再初始化子类,初始化之前先执行块代码然后才是构造方法

package demo;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Objects;
import java.util.Properties;

public class JDBCUtil {
    public static Connection getConnection() {
        Properties properties = new Properties();

        // 读取外部的properties属性文件
        // 记住就好,复制粘贴就好
        try {
            properties.load(Ch1.class.getClassLoader().getResourceAsStream("jdbc.properties"));

            String url = properties.getProperty("mysql.url");
            String driverName = properties.getProperty("mysql.driverName");
            String username = properties.getProperty("mysql.username");
            String password = properties.getProperty("mysql.password");

//    // 1.加载驱动类
            Class.forName(driverName);
//    // 4.获取连接
            return  DriverManager.getConnection(url, username, password);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        } catch (IOException e) {
            throw new RuntimeException(e);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException(e);
        }

    }


    public static void close (Connection conn, Statement stmt){

        if(Objects.nonNull(stmt)){
            try {
                stmt.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
        if(Objects.nonNull(conn)){
            try {
                conn.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

}
mysql.url=jdbc:mysql://127.0.0.1:3306/db_20220816?useUnicode=true&characterEncoding=utf8
mysql.username=root
mysql.password=root
mysql.driverName=com.mysql.jdbc.Driver
package demo;
import org.junit.Test;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class Ch1 {

        @Test
        public void test01(){
            // 1.获取连接
            Connection conn = null;
            Statement stmt = null;
            try {
                conn = JDBCUtil.getConnection();
                stmt = conn.createStatement();
                // 2.执行sql语句
                String sql = "INSERT INTO t_dept (dname,loc) VALUES ('Jay','chicago')";
                // 返回值是执行sql语句影响的行数
                int i = stmt.executeUpdate(sql);
                // 3.处理执行sql的返回值
                System.out.println(i);
                System.out.println("操作成功...");
            } catch (SQLException e) {
                throw new RuntimeException(e);
            } finally {
                JDBCUtil.close(conn,stmt);
            }
        }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值