ESPIER 一只JAVA程序猿的日常
拥有标签 java 的文章:

Mybatis中使用序列自动插入主键

Mapper中的使用

在insert中增加下面两个属性,useGeneratedKeys和keyProperty

useGeneratedKeys="true" keyProperty="id"

如果数据库支持自增主键,这样就可以了。如果不行,需要自己创建序列,然后通过序列获取主键值(使用的是postgresql中的函数,其他数据库视具体情况而定):

Springboot上传文件大小限制处理

今天在开发过程中遇到一个文件上传的问题 io.undertow.server.RequestTooBigException: UT000020: Connection terminated as request was larger than 10485760 Servlet容器使用的是undertow,看异常信息应该是默认存在10MB的文件大小限制。 百度了一下,找到如下配置,问题得以解决,记录一下 spring:

配置sqlite的相对路径

一般在使用sqlite的时候都是配置url为绝对路径,但是今天在测试代码的时候想到如果将 项目不到tomcat上之后,db文件总不能一直配置成绝对路径,肯定是项目中的某个位置, 因此对jdbc配置文件进行了修改:

    jdbc.url=jdbc:sqlite:blog.db

db文件放在WEB-INF/classes下,运行后发现貌似没有问题,然而事实并不是这样QAQ

因为测试中初始化代码会自动根据bean创建表格,我想是不是生成了一个新的db文件呢, 然后我把初始化关掉之后,果然报错了。。。。。。ORZ,然后我在tomcat的bin目录中 找到了崭新的db文件。

Js整型的坑

JS整型的坑

昨天同事跟我说js在整型长度支持上有坑,我去查了一下确实是有些坑的。js对于数值的保存遵循IEEE 754 双精度浮点格式规范,采用了双精度存储,占用64bit。如图所示:

存储格式示意图,取自wiki

使用gradle打可执行jar包

前言

最近的一个项目里面需要使用gradle打一个可执行的jar包,在网上看了一堆帖子照着做最后都不是很成功,最后终于参考StackOverflow上的帖子搞定了可执行jar包的打包脚本,因此做一个笔记对这个进行一下记录。

记一次登录假死的异常排查

前言

事件的起因源自一次客户现场的调试,调试到一半,客户说办公系统突然登录不进去了Σ(っ °Д °;)っ,当时因为手头上的事还没有搞定,就顺手把客户的tomcat重启了,然后似乎就一切正常,我也没有太放在心上。然鹅,事情并没有这么简单。

数据结构与算法学习系列(二)

线性表

线性表是一个存储相同类型数据元素的有限序列。
这里面需要关注的两个点就是,相同类型的数据、有限序列。

线性表包含两种类型:

  • 顺序表。使用一段地址连续的存储单元依次存储线性表的数据元素。
  • 链表。使用一组任意的存储单元存放线性表的元素。

顺序表

顺序表的特性

  1. 顺序表使用的一段连续的存储空间,因此只要知道存储顺序表的起始地址,就可以计算表中任意位置元素的地址。所以,计算任意一个元素的存储地址的时间是相等的
  2. 由于上述特性,顺序表具有随机存取的特性。
  3. 顺序表存取操作的时间复杂度为O(1)。

顺序表的实现

下面就是一个简单的顺序表的实现:

数据结构与算法学习系列(一)

关于新坑和旧坑的说明

我又开了一个新的坑,迫于近期一些方面的压力,我又把数据结构和算法这个东西捡起来了,至于之前Clojure学习笔记系列的坑,咳咳,虽然还会更新下去,但是估计会延后很多了,因为学了Clojure蛮久的时间了,没有太多的实践机会,也没有对Clojure理解的足够深,因此这个系列估计会稍微放一放,等我理解足够深刻了在继续下去(对不起,还是因为懒XD)。

什么是算法

算法,这个东西其实是思路的体现,也可以说是问题的解决方案。相信大家也都看到过这句话:

程序=算法+数据结构

虽然这么说或许不够准确,但是算法对于程序本身而言意义是十分重大的。也是影响程序性能的一个关键因素。大多时候算法都是一个由实际问题转化而成的数学模型,因此,像写出一个好的算法的话首先要能充分理解问题,然后就是将问题转化成一个高效的数学模型。所以说啊,学好数学还是很关键滴~