算法-全排列
Java进阶-mysql事务
在使用数据库时,因为存在不同的用户操作同一条数据,数据库可能出现如下问题:
- 脏读:表示一个事务正在访问数据,并且对数据进行了修改,而这种修改还么提交到数据库,这个时候,另一个事务也访问了这个数据,然后获取到了该事务未提交的数据。
- 不可重复读:是指在一个事务内,多次读取同一数据。在这个事务还没结束时,另一个事务也访问并修改了改数据(已经提交事务),第一个事务再次读取数据发现两次读取的数据不一样。
- 幻读:一个事务计划对表中数据进行修改,同时第二个事务向表中插入了一条数据(提交事务),符合第一个事务中的条件,之后第一个事务对表进行修改,那么对于操作第一个事务的用户而言,会发现表中还有其他数据(第二个事务),如同幻觉。
工作问题-并发事务
现在开发过程中有个需求,商品没货了需要补货,简略版如下:
1、发现商品没货,生成补货单
2、如果现在有未处理补货单,先删除当前补货单,之后生成新的补货单,如果当前的补货单已经开始处理,那么忽略
3、提供API接口供修改状态
现在数据库设计,状态分为:0:待处理,1:已经认领,2:处理完毕,4:取消
简略版数据库如下:
1 | create table test.item |
Java进阶-Spring Bean
Spring作为JavaWeb流行框架,其核心之一就是Bean的管理。其中有Bean的创建、管理、加载。
添加SpringBean依赖,启动Spring。
1 | <dependency> |
添加Spring配置文件application.xml
1 | <beans xmlns="http://www.springframework.org/schema/beans" |
Java进阶-网络编程(一)
Java基础-异常
在程序中经常会出现各种错误,在Java中可以通过异常进行展现出来。
在处理异常时,常用的关键字有:try、catch、finally、throw、throws;
try:通过会出现异常的代码块可以放入try代码块中,用于监听代码块中的是否会出现异常。
catch:通常用于捕获try代码块中出现的异常,用于发生异常捕获后做相关操作。
finally:用于try代码块执行完毕后,必须执行的地方,比如出现IOException后用于关闭连接,就算出现异常,finally也会执行。
throw:用于程序手动抛出异常。
throws:用于方法后,标识方法可能会出现异常。
在Java中异常分为两大类:Error、Exception。
Error:用来表示编译时和系统错误,出现这种错误时一般比较严重,一般有JVM抛出。
Exception:由程序本身可以处理的异常。
异常又可以分为:可检测异常、非检测异常
可检测异常:正确的程序在运行中,很容易出现的、情理可容的异常状况。编译器在编译代码时会检测该异常。一旦出现该异常,必须进行处理,也就是要么try…catch,要么throw抛出异常到上一层,由上层处理,如果一直上抛,最终会抛出到JVM层,最终导致JVM停止。除RuntimeException及其子类以外都是该异常,典型的如IOException。
非检测异常:这种异常并不会直接被编译器所检测,RuntimeException及其子类和Error。
Java基础-序列化
在一般应用创建对象,一般创建的对象存在JVM内存中,在JVM停止后该对象也会随之消失,如果需要对对象进行保存就需要对该对象进行序列化后进行保存。
在不同进程中通信,为了传输对象需要对对象进行序列后在不同进程中进行传输。
所以序列化的目的就是为了对象
的持久化以及传输。