![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
weixin_43893423
这个作者很懒,什么都没留下…
展开
-
学习笔记13(JDBC)
JDBC事务数据库事务(Transaction)是由若干个SQL语句构成的一个操作序列,有点类似于Java的synchronized同步。数据库系统保证在一个事务中的所有SQL要么全部执行成功,要么全部不执行,即数据库事务具有ACID特性:Atomicity:原子性Consistency:一致性Isolation:隔离性Durability:持久性数据库事务可以并发执行,而数据库系统从效率考虑,对事务定义了不同的隔离级别。SQL标准定义了4种隔离级别,分别对应可能出现的数据不一致的情况:I原创 2020-09-12 16:50:24 · 73 阅读 · 0 评论 -
学习笔记12(发布Artifact)
发布Artifact当我们使用commons-logging这些第三方开源库的时候,我们实际上是通过Maven自动下载它的jar包,并根据其pom.xml解析依赖,自动把相关依赖包都下载后加入到classpath。那么问题来了:当我们自己写了一个牛逼的开源库时,非常希望别人也能使用,总不能直接放个jar包的链接让别人下载吧?如果我们把自己的开源库放到Maven的repo中,那么,别人只需按标准引用groupId:artifactId:version,即可自动下载jar包以及相关依赖。因此,本节我们介绍原创 2020-09-11 21:49:14 · 330 阅读 · 0 评论 -
学习笔记11(maven简介)
Maven在了解Maven之前,我们先来看看一个Java项目需要的东西。首先,我们需要确定引入哪些依赖包。例如,如果我们需要用到commons logging,我们就必须把commons logging的jar包放入classpath。如果我们还需要log4j,就需要把log4j相关的jar包都放到classpath中。这些就是依赖包的管理。其次,我们要确定项目的目录结构。例如,src目录存放Java源码,resources目录存放配置文件,bin目录存放编译生成的.class文件。此外,我们还需要配原创 2020-09-11 21:44:45 · 99 阅读 · 0 评论 -
学习笔记10(线程的状态)
线程的状态在Java程序中,一个线程对象只能调用一次start()方法启动新线程,并在新线程中执行run()方法。一旦run()方法执行完毕,线程就结束了。因此,Java线程的状态有以下几种:New:新创建的线程,尚未执行;Runnable:运行中的线程,正在执行run()方法的Java代码;Blocked:运行中的线程,因为某些操作被阻塞而挂起;Waiting:运行中的线程,因为某些操作在等待中;Timed Waiting:运行中的线程,因为执行sleep()方法正在计时等待;Termin原创 2020-09-10 22:20:23 · 68 阅读 · 0 评论 -
学习笔记9(新线程)
创建新线程Java语言内置了多线程支持。当Java程序启动的时候,实际上是启动了一个JVM进程,然后,JVM启动主线程来执行main()方法。在main()方法中,我们又可以启动其他线程。要创建一个新线程非常容易,我们需要实例化一个Thread实例,然后调用它的start()方法:public class Main { public static void main(String[] args) { Thread t = new Thread(); t.star原创 2020-09-10 21:48:43 · 81 阅读 · 0 评论 -
学习笔记8(注解)
使用注解什么是注解(Annotation)?注解是放在Java源码的类、方法、字段、参数前的一种特殊“注释”:// this is a component:@Resource("hello")public class Hello { @Inject int n; @PostConstruct public void hello(@Param String name) { System.out.println(name); } @Ov原创 2020-09-06 22:45:00 · 76 阅读 · 0 评论 -
学习笔记7(动态代理)
动态代理我们来比较Java的class和interface的区别:可以实例化class(非abstract);不能实例化interface。所有interface类型的变量总是通过向上转型并指向某个实例的:CharSequence cs = new StringBuilder();有没有可能不编写实现类,直接在运行期创建某个interface的实例呢?这是可能的,因为Java标准库提供了一种动态代理(Dynamic Proxy)的机制:可以在运行期动态创建某个interface的实例。原创 2020-09-06 17:00:19 · 73 阅读 · 0 评论 -
学习笔记6(class反射)
反射什么是反射?反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。正常情况下,如果我们要调用一个对象的方法,或者访问一个对象的字段,通常会传入对象实例:// Main.javaimport com.itranswarp.learnjava.Person;public class Main { String getFullName(Person p) { return p.getFirstName() + " " + p.getLas原创 2020-09-06 00:15:02 · 75 阅读 · 0 评论 -
学习笔记5(Log日志)
Log日志记录和使用使用JDK Logging在编写程序的过程中,发现程序运行结果与预期不符,怎么办?当然是用System.out.println()打印出执行过程中的某些变量,观察每一步的结果与代码逻辑是否符合,然后有针对性地修改代码。代码改好了怎么办?当然是删除没有用的System.out.println()语句了。如果改代码又改出问题怎么办?再加上System.out.println()。反复这么搞几次,很快大家就发现使用System.out.println()非常麻烦。怎么办?解决方法原创 2020-09-05 22:00:14 · 170 阅读 · 0 评论 -
学习笔记4(异常处理)
异常的传播当某个方法抛出了异常时,如果当前方法没有捕获异常,异常就会被抛到上层调用方法,直到遇到某个try … catch被捕获为止:public class Main { public static void main(String[] args) { try { process1(); } catch (Exception e) { e.printStackTrace(); } }``原创 2020-09-05 21:12:41 · 73 阅读 · 0 评论 -
学习笔记3
在Java中,凡是可能抛出异常的语句,都可以用try … catch捕获。把可能发生异常的语句放在try { … }中,然后使用catch捕获对应的Exception及其子类。多catch语句可以使用多个catch语句,每个catch分别捕获对应的Exception及其子类。JVM在捕获到异常后,会从上到下匹配catch语句,匹配到某个catch后,执行catch代码块,然后不再继续匹配。简单地说就是:多个catch语句只有一个能被执行。例如:public static void main(Stri原创 2020-09-05 20:40:26 · 64 阅读 · 0 评论 -
学习笔记3
方法一:约定返回错误码。例如,处理一个文件,如果返回0,表示成功,返回其他整数,表示约定的错误码:int code = processFile("C:\\test.txt");if (code == 0) { // ok:} else { // error: switch (code) { case 1: // file not found: case 2: // no read permission: default:原创 2020-09-05 18:05:15 · 46 阅读 · 0 评论 -
学习笔记2
JavaBean如果读写方法符合以下这种命名规范:// 读方法:public Type getXyz()// 写方法:public void setXyz(Type value)那么这种class被称为JavaBeanboolean字段比较特殊,它的读方法一般命名为isXXX():// 读方法:public boolean isChild()// 写方法:public void setChild(boolean value)我们通常把一组对应的读方法(getter)和写方法(se原创 2020-09-05 17:00:04 · 48 阅读 · 0 评论