开发整合笔记
properties文件
java中有对应的Properties对象,本质是Map,键值对格式。通过输入流将properties文件读取到内存,通过输出流将内存中的数据写入properties文件中。
XML文件
可扩展标记语言。可以维护关系,有标签和元素,但只能有一个根标签。想要读取解析xml文件到程序内存中,可以使用第三方框架Dom4j,解析的思想是文档对象模型。
约束文档。约束xml文件的格式,如标签、属性。有DTD文档(后缀dtd,无法约束类型)、Schema文档(后缀xsd,可以约束类型)。DTD文档:使用!DOCTYPE标签引入约束文档。Schema文档:使用
xsi:schemaLocation
属性引入约束文档。
日志
体系结构:Java常用的有两套日志接口,一个是本身提供的Commons Logging(JCL),其中JUL就是实现的这个接口;另一个是第三方的SLF4J接口,Log4j和Logback(使用最多)就是实现的这个接口。
Logback:三个模块,logback-core:核心模块,其他两个模块的依赖,必须有;logback-classic:同化log4j,完整的实现slf4j接口,必须有;logback-access:与Tomcat和Jetty等容器集成,提供HTTP访问的功能,可选。
MongoDB 数据库
基本使用:
- 安装和依赖:先安装 MongoDB 服务端,并引入 MongoDB Java 驱动依赖
- 连接数据库:通过 MongoClient 创建与 MongoDB 的连接
- 操作集合:MongoDB 中的数据存储在集合(Collection)中,每个集合类似于 MySQL 中的表
- 数据格式:MongoDB 以 BSON(类 JSON 格式)存储文档,文档类似于 MySQL 的一行记录
- CRUD 操作:可以直接对文档进行插入、查询、更新和删除操作,支持复杂的嵌套结构和灵活的查询语法。
适用场景
- 动态或非结构化数据:如 JSON 格式的数据、日志数据。
- 需要快速迭代开发:数据结构经常变更。
- 海量数据存储:需要水平扩展的场景,如物联网数据。
- 高并发读写:如社交媒体、实时数据分析
MongoDB 与 MySQL 的优劣势对比
- 数据模型:MongoDB-基于文档的非关系型数据库,结构灵活,支持嵌套文档和数组。MySQL-基于表的关系型数据库,结构固定,数据规范化强。
- 性能:MongoDB-写入和读取速度较高,尤其适合海量数据和非结构化数据的处理。MySQL-高度优化的事务支持,适合复杂查询和结构化数据。
- 事务支持:MongoDB-支持多文档事务,但性能可能受影响,不如 MySQL 事务模型稳定。MySQL-强大的 ACID 支持,事务处理成熟可靠。
- 查询能力:MongoDB-灵活的文档查询和聚合管道,适合动态字段和复杂嵌套结构数据查询。MySQL-强大的 SQL 查询能力,适合跨表关联和复杂的分析查询。
- 扩展性:MongoDB-水平扩展方便,天然支持分片。MySQL-垂直扩展优异,但水平扩展需要额外设计(如分库分表)。
- 数据结构:MongoDB-灵活的数据结构,字段可动态添加,适合非结构化或频繁变更的数据模型。MySQL-严格的数据结构,适合结构化和强约束的数据模型。
- 开发效率:MongoDB-开发效率高,减少模式设计的复杂性,适合快速迭代和原型开发。MySQL-需要详细设计表结构,适合稳定、长期维护的系统开发。
EhCache
本地缓存,java实现,比Reids更高效,线程安全的
使用 EhCache 3.x 版本时,首先需要导入相关依赖。通过 CacheManagerBuilder 对象创建 CacheManager 实例。在 CacheManager 中可以通过 XML 配置或 API 动态创建多个缓存(Cache)对象,每个缓存都有一个唯一名称,并可单独设置缓存模式、过期时间、大小等属性。随后,通过 CacheManager 的 getCache 方法,指定缓存名称、键类型和值类型,即可获取对应的缓存对象,进而执行缓存的存取操作