自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Web(B/S架构)

这种写法就是运用多态,对象可以调用父类所有的方法和调用子类中重写的方法,所以可以调用父类的service方法和调用子类的dopost,doget。Request获取请求参数的方法,request会将数据封装成键值对的形式放到map集合中,这个map集合中键是String类型,值是String的数组。注意:这里每个键的名字和都是前端中对应的name,每一个框都是一对键值对,键的名字是前端的name,值就是自己输入的内容。Request放的是请求的数据,response可以设置成相应的数据。

2024-10-27 01:13:41 1252

原创 Mybatis

接口中定义方法,方法名要是xml中的sql语句的id,返回值类型和resultType的返回值类型一致都要是User类型,但是这个查询出来是User对象的集合,不是单个User对象,因此要用User类型的集合作为返回值的类型。通过调用selectAll方法,这个方法对应了xml中的sql语句的id,就能获取对应的sql语句。xml中,有一个根据id查询用户的sql语句,返回值类型是上面定义的resultMap(因为用户的订单是涉及一对多的多表查询,因此要用resultMap来返回结果)

2024-10-22 00:36:29 878

原创 Maven

管理依赖,不用导jar包;

2024-10-16 17:33:16 304

原创 JavaWeb-JDBC

代表的类型是string,是由上面的name传入,name是?在这个while循环中,rs.next()代表光标往下移并且会返回一个布尔类型的变量,rs.getXxx代表获取不同列的数据;的第1列的信息并返回一个整形的值;rs.getString(2)代表接收光标所在行的第2列的信息并返回一个字符类型的值;rs.getDouble(3)代表接收光标所在行的第3列的信息并返回一个double类型的值;获取对象的时候传入sql语句,执行的时候就不用传了。执行的时候用无参的方法,不需要传入sql语句。

2024-10-16 17:31:11 534

原创 JavaWeb-事务

要是不是默认修改,autocommit设置成0,那么没有执行commit的话,不会默认提交,执行语句后,在别的窗口查询查询不到。只有在原窗口执行了commit后,别的窗口才会看得到。开启begin后在当前窗口查询还是会更改,在别的窗口查询不会更改。启用回滚,回滚到begin时。

2024-10-16 17:29:03 262

原创 JavaWeb-数据库下

左外连接,查left关键字左边表(即emp表)的所有数据,以及根据查询条件得出对应的部门表dept的数据。在分组前写where,wher的作用用于分组前,不符合条件的不进入分组;查询right右边表(dept表)的所有数据和每一个部门对应根据查询条件得到的员工表的信息。子查询中的查询结果是单行单列,查询出猪八戒的工资只有一个,单行单列。多对多,利用中间表,中间表的属性是外键,关联另外两张表的主键。模糊查询(查询不确定的,如查询姓张的人),用like不用=一对多(在多的地方建立外键,指向一的一方的主键)

2024-10-16 17:25:09 371

原创 JavaWeb-数据库上

char()和varchar(),char无论如何都会用完规定的空间,存储性能低,浪费空间;varchar是可变,如果只有两个,就只会用两个字符空间,存储性能高,节约空间。使用double时( ,)注意两个参数,第一个参数代表总长度包括小数点的位数,如分数最大是100有三位,加上小数点2位共5位。第二个参数则是小数点有多少位。注释--后面要有空格才行,不区分大小写。通过表来创建的数据库叫做关系数据库。注意,不加where条件,修改全部。查询,查询表的结构,不是数据。注释,书写sql语句规则。

2024-10-16 00:49:36 322

原创 Java基础多线程

相比处理runnable,处理calable执行任务时,传了calable对象后会返回一个未来任务对象,该对象是Future类的子类,用Future来接收,泛型要和calable中返回的类型一样,用get获取返回的结果。创建任务类对象不能直接调用start方法,要创建Thread类对象,并将任务类对象放进Thread类对象的构造器中再调用start方法。用类Thread直接调用currentThread方法可以得到一个线程对象,哪个线程执行它,它就获得哪个线程对象,当前是main来执行。

2024-10-08 17:39:02 491

原创 IO流(下)

第一个直接将我爱你中国abc写入,第二个write从第0个数组元素开始的15个字节写入(一个中文3个字节),将我爱你中国写入。这个构造器中的布尔类型控制了是否追加数据还是覆盖原来的数据,true的话追加,false覆盖。将流对象的创建放到try后面的括号()里面,会自动调用close方法。每次读一个数组,用char类型的数组装字符,别的方法和字节流一样。改进:创建好原来的输入输出流后,将这个对象给缓冲输入,输出流。文件字节输出流(写字节数据到文件中去)现在是写,上面是读。字符输出流(写字符到文件中去)

2024-10-07 16:59:11 342

原创 IO流(上)

用另一个构造器,offset的位置0代表数组第一个元素下标,len2是读了几个字节,倒几个字节出来给rs2。1.创建文件对象,用该对象用长度方法获得长度再给数组对应的长度,得到该长度数组可以直接读字节和倒字节。2.readallbytes方法直接自己创建一个数组装入所有字节,不用自己创字节就可以输出所有字节。每次用对象调read()方法都读取一个字节,下一次调就读下一个字节,要是没有字节了接返回-1。获取创建时的路径(绝对的获得绝对路径,相对的获得相对路径)第二种是获取一级文件对象,并将其返回到数组中。

2024-10-07 16:57:16 411

原创 Java基础集合下

用foreach循环遍历,类型是键值对类型,利用变量entry来遍历entries集合中的每个元素,再利用map.entry提供的方getkey和getvalue方法去拿出键和值的数据。treeset只能对integer,double,字符串(首字母编号)类型的对象进行升序排序,对自己定义类型的对象无法排序。keyset()方法获取所有键,并将这些键放到map集合中返回,由于map中所有键都无序,不重复所以放到set中是合理的。map是一个泛型接口,k是一个类型,v是一个类型,k和v都要是类的类型。

2024-10-07 16:53:11 960

原创 Java基础集合上

match()中[1-9]代表qq号码首位必须是数字1-9,\\d代表必须后面必须全都是数字,{5.19}代表除了第一位后面一共有5-19位。private不能直接用对象调用,只能在接口中的方法中调用;实现类要指明要实现的泛型接口中的类型是什么,此时泛型接口中T的类型就是实现类中的Teacher。当定义了泛型的指定类型为String时,泛型类中的所有E都会变成String类型。只能使用枚举类罗列的对象,不能自己创建枚举类的对象。对于接口的:匿名内部类是接口的实现类和实现类对象。collection集合。

2024-10-04 17:58:14 395

原创 Java基础第八章(多态2)

showEmpAnu(Empolyee e)方法中用了一个父类的引用接收实参,实际上是Employee e = new 子类名(),在子类中重写了getAnnual()方法,当调用该方法时,会根据e的运行类型(动态绑定机制)调用子类中的getAnnual()方法。因为其它两个类继承了Person类,编译类型都是Person类型,因此可以调用say方法,又由于对象间的运行类型不一样且每个类都重写了say()方法,因此在运行时调用自己类中的say()方法。在判断引用类型时,判断地址是否相等。

2024-10-04 17:47:49 513

原创 Java基础第八章(多态)

在上面案例,如果注销掉子类B中的sum()方法,a.sum()的过程为:根据对象a的运行类型为B,现在B类中寻找该方法,没找到向上查找父类A中的方法,找到父类中的sum()方法,方法体中为return getI()+10,此时又调用了一次getI()方法,根据动态运行机制,根据对象a的运行类型为B,又到B类中查找getI(),方法体中的内容是返回属性I,在B类中有属性I的声明,因此返回B类中的i,返回20,再回到原来的sum()中执行20+10,得到结果为30。

2024-10-02 20:56:26 907

原创 Java基础第八章(继承)

流程:创建B类对象时,使用B类中的无参构造器,在B类的无参构造器中因为有this,所以屏蔽了super(有this没super),故在B()方法中不会访问父类的无参构造器,直接来到B(String name)方法中,在此方法中再调用父类的无参构造器故先输出a,再回到B(String name)中输出b name,执行完再回到B()中输出b。D类继承B类,拥有A类和B类的属性和方法,且拥有自己的属性和方法(所有继承都要通过extends关键字来实现),D是B的子类也是A的子类。成员方法的访问也遵循上述条件。

2024-10-02 20:53:48 1056

原创 Java基础第七章(构造器)

this调用构造器只能在构造器中调用,不能在成员方法中调用构造器,通过不同的形参列表可以调用不同的构造器;在compareTo的方法中进行的操作是,对象调用该方法后,用this.属性代表当前对象的属性与传入的形参对象属性作比较,若相同则返回ture,否返回false。this在堆中有一个地址,地址指向自己所在的对象空间,this和dog1指向的地址相同,this也是一个对象,this可以理解为在方法中对象的对象名。在创建对象空间后,系统再进行调用构造器,先有对象空间再调用构造器。对象不可以主动调用构造器!

2024-10-02 20:45:05 427

原创 Java基础第七章(类与对象)

cat对象的名字存放在栈里面,栈中的地址指向了堆中的某个空间,堆中的数据空间有三个空间,三个空间用来存放对象cat的属性,但是因为对象cat的属性类型不同,其中还包括字符串类型的属性,因此属性存放在栈中的方式也不同,若属性类型为字符串类型,则堆中存放该属性的地址,地址指向方法区常量池中的一个空间,该空间中存放的才是字符串类型的属性。A类中的方法调用B类中的方法,需要在A类的方法中创建一个B类的对象,再用该对象调用B类中的方法。主方法中的a和b与swap方法中的a和b不冲突,两组a,b作用于不同的作用空间。

2024-10-02 20:39:56 1067

原创 Java基础第六章

用for循环遍历数组,用数组下标访问数组的元素,数组下标从0开始,hens[i]代表第i+1个元素,第一个元素是hens[0]int a[] = new int[5]表示创建了一个存放5个int类型的长度,用来表示数组中有5个 元素。将arr1赋给arr2,arr2元素的变化会影响到arr1,图中arr2[0]发生了改变,arr1[0]也会随之改变。数组中的元素可以是任意类型,可以是引用类型(对象(包括字符串),数组,接口)但是要保证数据类型相同。{}里面是数组的元素,依次表示数组的第几个元素。

2024-10-02 20:30:16 391

原创 Java基础第五章

判断条件满足else if中哪个表达式,就执行当中的执行代码块,在条件表达式中没有符合的,就直接执行else中的代码 注:(1)多分支中可能没有else,如果所有的条件表达式都不成立,则一个执行入口都没有 (2)如果有else,如果所有的条件表达式都不成立,则执行else的代码块。相当于case3,case4后面没有执行语句和break,当month为3,4的时候进入这两个case中,继续往下执行,直到执行完case5的执行语句,遇到break才会退出。return的作用,跳出所在的方法;

2024-10-02 20:28:51 594

原创 Java基础第四章

&短路与:先判断前面的条件,如果前面的条件为false则不执行不判断后面的条件,如图所示,a<1不成立就执行不判断后面的++b,故b没有进行自增操作。首先创建Scanner类中的对象,使用new创建对象,对象名为myScanner(对象的作用为调用Scanner类中的方法)︱︱短路或:第一个条件为真,第二个条件不会执行判断,如图中的a>1为真,++b不会执行判断,b不会自增。如图,a>b不成立,执行表达式2,表达式2为b--,先将b返回,再进行自减,故result的结果为99。

2024-10-02 20:25:55 199

原创 Java基础第三章

1.1系统默认为double型,在进行加法时将所有数据转换成double型,结果为double,float不能装下double型的数据;注意:字符串中的东西一定要能转成相应可以转的东西才可以,如果字符串里面是“abcd”,那么不能转成int,double等等的类型。被注释的那一行,只将10强转成为了int型,并未将其它的转成int,结果仍然为double型给int,编译不通过。参与运算包括(三者中)两个相同数据类型的变量运算,如两个byte的变量运算,结果也会自动转换为int型。

2024-10-02 20:20:01 278

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除