WHH

MY BLOG

最大二叉树

给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下:

二叉树的根是数组中的最大元素。
左子树是通过数组中最大值左边部分构造出的最大二叉树。
右子树是通过数组中最大值右边部分构造出的最大二叉树。
通过给定的数组构建最大二叉树,并且输出这个树的根节点。

阅读全文 »

全排列:从包含n个不同元素的数组中,取m个数组,按照一定顺序排列不重复,当m=n时为全排列

如:现在数组[1, 2, 3]的全排列,[1,2,3]、[1,3,2]、[2,1,3]、[2,3,1]、[3,1,2]、[3,2,1]

实际数量有n!种可能。

递归

对于数组[1, 2, 3] 从0开始分别交换值得到数组:[2, 1, 3]、[3, 2, 1],得到的3个数组(包含原数组)从1开始向后进行交换:[1, 2, 3] –> [1, 3, 2]、[2, 1, 3] –> [2, 3, 1]、[3, 2, 1] –> [3, 1, 2]

阅读全文 »

在使用数据库时,因为存在不同的用户操作同一条数据,数据库可能出现如下问题:

  • 脏读:表示一个事务正在访问数据,并且对数据进行了修改,而这种修改还么提交到数据库,这个时候,另一个事务也访问了这个数据,然后获取到了该事务未提交的数据。
  • 不可重复读:是指在一个事务内,多次读取同一数据。在这个事务还没结束时,另一个事务也访问并修改了改数据(已经提交事务),第一个事务再次读取数据发现两次读取的数据不一样。
  • 幻读:一个事务计划对表中数据进行修改,同时第二个事务向表中插入了一条数据(提交事务),符合第一个事务中的条件,之后第一个事务对表进行修改,那么对于操作第一个事务的用户而言,会发现表中还有其他数据(第二个事务),如同幻觉。
    阅读全文 »

现在开发过程中有个需求,商品没货了需要补货,简略版如下:
1、发现商品没货,生成补货单
2、如果现在有未处理补货单,先删除当前补货单,之后生成新的补货单,如果当前的补货单已经开始处理,那么忽略
3、提供API接口供修改状态

现在数据库设计,状态分为:0:待处理,1:已经认领,2:处理完毕,4:取消
简略版数据库如下:

1
2
3
4
5
6
7
8
9
10
11
create table test.item
(
id int auto_increment
primary key,
sku_code varchar(20) not null,
num int not null,
status int not null,
constraint item_id_uindex
unique (id)
)
;
阅读全文 »

Spring作为JavaWeb流行框架,其核心之一就是Bean的管理。其中有Bean的创建、管理、加载。
添加SpringBean依赖,启动Spring。

1
2
3
4
5
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.2.7.RELEASE</version>
</dependency>

添加Spring配置文件application.xml

1
2
3
4
5
6
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
</beans>
阅读全文 »

在学习过程中,网络编程时永远绕不开的一个点。

OSI七层网络模型

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。OSI模型

网路模型图如下:

阅读全文 »

在程序中经常会出现各种错误,在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。

阅读全文 »

在一般应用创建对象,一般创建的对象存在JVM内存中,在JVM停止后该对象也会随之消失,如果需要对对象进行保存就需要对该对象进行序列化后进行保存。
在不同进程中通信,为了传输对象需要对对象进行序列后在不同进程中进行传输。

所以序列化的目的就是为了对象的持久化以及传输。

阅读全文 »
0%