POI和EasyExcel
本博客代码已上传gitee仓库 失铭 / poi练习 简介POI介绍 apache官网百度百科:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 基本功能: 结构: HSSF - 提供读写Microsoft Excel格式档案的功能。 XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。 HWPF - 提供读写Microsoft Word格式档案的功能。 HSLF - 提供读写Microsoft PowerPoint格式档案的功能。 HDGF - 提供读写Microsoft Visio格式档案的功能。 EasyExcel介绍 EasyExcel官网 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。github地址:https://github.com/alibaba/easyexcel Java解析、生成Excel比较有名的框架有Apache poi、j...
SpringCloud
本博客练习项目已上传 gitee->失铭/SpringCloud 练习 微服务概述什么是微服务 引用 ThoughtWorks 公司的首席科学家 Martin Fowler Microservices 文中的介绍 In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minim...
Spring+Mybatis+Druid
Spring+Mybatis+Druid创建项目选择Spring Initializr创建项目,选择jdk版本和默认的Service URL 填写项目的Group,Artifact信息选择Web中的Spring Web和Sql中的Spring Data JDBC,Mybatis,MySQL四个依赖然后填写项目信息点击Finish 导入依赖添加Druid依赖 12345<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.23</version></dependency> 修改配置文件修改datasource.properties文件 1234567891011121314151617181920212223242526272829303132333435#datasource<!-- mysql8.0以上版本 -->spring....
日志
JDK Logging从jdk1.4起,JDK开始自带一套日志系统。JDK Logging最大的优点就是不需要任何类库的支持,只要有Java的运行环境就可以使用。 日志能够很好的代替我们在调试过程的System.out.pringln(),日志能够避免反反复复添加输入语句的繁琐和更准确的输入想要的结果。日志的优点有很多: 可以设置输出样式,避免自己每次都写”ERROR: “ + var; 可以设置输出级别,禁止某些级别输出。例如,只输出错误日志; 可以被重定向到不同服务器,用于在控制台中显示,用于存储文件等; 可以按包名控制日志级别,只输出某些包打印的日志; 可以…… 但是因为JDK Logging和其他的日志相比比较简陋,所以在商业中很少使用JDK logging 一种由7个日志级别 级别 含义 SEVERE 严重 WARNING 警告 INFO 信息 CONFIG 配置 FINE 良好 FINER 较好 FINEST 最好 默认情况下,只记录前三个级别,也可以调整其他级别,例:使用logger.setLevel(Level.FINE...
SpringBoot自动配置
序言Spring Boot的出现,得益于“约定大于配置”的理念,没有繁琐的配置、难以集成的内容(大多数流行第三方技术都被集成),这是基于Spring 4.x提供的按条件配置Bean的能力。 自动配置作为SpringBoot的精髓,不仅仅是“面试”中会问到自动配置的原理,如果能理解自动配置的原理,将无往不利。 本文使用SpringBoot版本为:2.3.3 工作原理@SpringBootApplication首先,我们都知道SpringBoot项目运行标记 @SpringBootApplication 注解的类 的main方法来启动SpringBoot应用,那么从这里开始着手 @SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用。 在xxxApplication.java文件中查看@SpringBootApplication注解(按住ctrl+点击注解) 12345678910111213141516171819/...
SpringBoot基础
SpringBoot简介SpringBoot是一种全新的框架,目的是为了简化Spring应用的初始搭建以及开发过程。该框架使用特定的方式(集成starter,约定大于配置)来进行配置,从而使开发人员不需要再定义样板化的配置。SpringBoot提供了一种新的编程范式,可以更加快速便捷地开发Spring项目,在开发过程当中可以专注于应用程序本身的功能开发,而无需在Spring配置上花太大的工夫。 SpringBoot基于Sring4进行设计,继承了原有Spring框架的优秀基因。SpringBoot并不是一个框架,而是一些类库的集合。maven或者gradle项目导入相应依赖即可使用SpringBoot,而无需自行管理这些类库的版本。 简化Spring应用开发的框架整个Spring应用技术栈的大整合J2EE开发的一站式解决方案 SpringBoot优缺点优点: 快速构建独立运行的Spring项目以及与主流框架的继承。 使用嵌入式的Servlet容器,应用无需达成war包。 starters自动依赖和版本控制 大量的自动配置,简化开发,也可修改默认值 无需配置xml,无代码生成...
MySQL索引
概念索引是一种特殊的数据库结构,由数据表中的一列或多列组合而成,可以用来快速查询数据表中有某一特定值的记录。 打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。 通过索引,查询数据时不用读完记录的所有信息,而只是查询索引列。否则,数据库系统将读取每条记录的所有信息进行匹配。拿汉语字典的目录页(索引)打比方,我们可以按拼音、笔画、偏旁部首等排序的目录(索引)快速查找到需要的字。 因此,使用索引可以很大程度上提高数据库的查询速度,还有效的提高了数据库系统的性能。 索引分类 普通索引:index:加速查找 唯一索引 主键索引:primary key:加速查找+约束(不为空且唯一) 唯一索引:unique:加速查找+约束 (唯一) 联合索引 primary key(id,name):联合主键索引 unique(id,name):联合唯一索引 index(id,name):联合普通索引 全文索引fulltext :用于搜索很长一篇文章的时候,效果最好。 空间索引spatial :了解就好,几乎不用 哪些类适合建...
MySQL引擎
转自MyISAM与InnoDB 的区别(9个不同点) 前言MySQL中,常用的引擎主要就是2个: InnoDB MyIASM MyISAM是默认存储引擎(Mysql5.1前)。由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良 。 每个MyISAM在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型。 InnoDB,是MySQL的数据库引擎之一,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。目前InnoDB采用双轨制授权,一是GPL授权,另一是专有软件授权。 InnoDB和MyIASM区别 MyIASM InnoDB 事务支持 不支持 支持 外键约束 不支持 支持 索引结构 非聚集索引 聚集索引 保存行数 保存 不保存 全文索引 支持 ...
线程同步
为什么需要同步在大多数实际的多线程应用中,两个或两个以上线程需要共享对统一数据的存取。如果两个线程同时修改一个对象,可能就是导致数据不准确,使对象状态混乱,引起程序错误。因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。 代码示例: 123456789101112131415161718192021222324252627282930313233343536373839// 模拟三个人买票,一人买10张public class BuyTicket { public static void main(String[] args) { UnsafeBuyTicket unsafeBuyTicket = new UnsafeBuyTicket(); new Thread(unsafeBuyTicket, "我").start(); new Thread(unsafeBuyTicket, "你").start(); ne...
Mybatis分页
概览本文为基于mybatis和MySql进行分页功能的实现,一共四种方式: 数组分页 sql语句分页 拦截器分页 RowBounds分页 具体实现数组分页原理:进行数据库查询操作时,获取到数据库中所有满足条件的记录,保存在应用的临时数组中,再通过List的subList方法,获取到满足条件的所有记录 1List<E> subList(int fromIndex, int toIndex); 即从list中截取从fromInde [(page-1)*size] 到toIndex [fromIndex+size] 的数据,这里不介绍具体实现。 缺点:数据库查询并返回所有的数据,而我们需要的只是极少数符合要求的数据。当数据量少时,还可以接受。当数据库数据量过大时,每次查询对数据库和程序的性能都会产生极大的影响。 sql分页使用limit语句直接在数据库语言中只检索符合条件的记录,不需要在通过程序对其作处理。 1select * from studeng LIMIT [<offset>,] <row count> offset:偏移量,(pa...



