Yezhiwei Blog

平时多流汗,战时少流血!

Java应用程序读取外部配置文件

背景 当我们在服务器上安装一些软件服务时,如 MySQL、Kafka、ES 等,在启动服务的时候,脚本会读取默认路径下的配置文件,如果配置文件没有放到默认的路径下,我们也可以通过参数的方式指定,通过这个配置文件,可以灵活方便的开始某些功能或调整某些参数,不用重新对源码进行修改、编译和发布了。 所以,我们工作当中有时希望可以把配置文件放在程序外,这样的话就可以做到配置与业务分离,在项目中使用...

ContiPerf轻量级的测试工具

ContiPerf 介绍 In order to assure software performance, software needs to be tested accordingly as early as possible - only weaknesses diagnosed early can be assessed quickly and cheaply. ContiPerf ...

SpringBoot-MapStruct自动合并多表查询结果

Mapstruct进行实体与模型之间的自动映射操作

背景 在我们开发的规范中,MySQL 数据库不使用多表查询,也就是 @OneToMany 、 @ManyToMany 这样的注解不会出现在我们的实体中。但在实际的工作中,返回给前端的 Model 数据往往来自多个表的数据拼装。 使用 Mapstruct 来进行实体与 Model 之间自动映射 MapStruct 是一个代码生成器的工具类,简化了不同的 Java Bean 之间映射的处理,指的...

SpringBoot-JPA数据库操作

JPA 常用API CurdRepository 提供了增删改产方法。 PagingAndSortingRepositroy 增加分页查询和排序方法。 JpaRepositroy 增加了实例查询方法。 实际应用中可以有选择的继承上面任何一个接口都可以。 JPA 查询语句关键字 JPA 提供的查询方式可以直接从方法名中派生成查询(需要遵循它的规范),都需要以findBy开头,且方法中的字...

服务发现组件

服务注册中心

服务发现要解决的一个问题是: 解耦服务。 服务提供者、服务消费者、服务发现组件三者关系: 各微服务启动的时候,将自己的网络信息注册到服务发现组件中,服务发现组件会储存这些信息。 服务消费者可以通过服务发现组件中查询服务提供者的网络地址,并使用该网络地址调用服务。 各微服务与服务发现组件通过心跳机制通信,服务发现组件如长时间无法与某个服务实例通信,服务发现组件会注销该实例。 在微服务架...

微服务为什么要使用网关服务

在没有网关服务时,是怎么工作的 不同的微服务一般会有不同的网络地址,但 web 端或 APP 端需要调用多个服务的接口才能完成一个业务需求。在这种客户端直接与各个服务通信的架构时,会有以下问题: 客户端需要维护很多服务的请求地址; 客户端会多次请求不同的微服务,增加了客户端的复杂性; 存在跨域请求,处理相对复杂; 认证复杂,每个服务都需要独立认证; 随着项目的迭代,可能需要重新划分微服务(...

微服务简介

单体应用架构存在的问题 一个 war 包含所有功能的应用程序,通常称为单体应用。尽管在程序中进行了模块化,但若干业务模块被打包在一个 war 包中,这样的应用系统称为单体应用。 优点:容易部署、测试。可以快速实现需求。 缺点:随着需求的不断增加,开发团队的状大,代码库也在迅速增长, 此时单体应用变得越来越臃肿,可维护性、灵活性逐渐下降,维护成本高: 模块非常多、模块的边界模糊、依赖关系不...

Scrapy安装与创建项目

Scrapy爬取静态页面数据

Scrapy 安装 pip install scrapy 以上会报超时错误,所以增加了国内镜像,如下 pip install --index https://pypi.mirrors.ustc.edu.cn/simple/ scrapy 还是会有超时现象,不过重新试一次就自动地把所有相关的包安装成功,最后终端显示如下提示,说明安装成功: Installing collected pac...

Scrapy的初步认识

Scrapy 的初步认识 Scrapy 是一个高级的 Python 爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫获取的数据保存到 csv、json 等文件中。 Scrapy 使用了 Twisted 作为框架,Twisted 是事件驱动的,对于会阻塞线程的操作(访问文件、数据库等),比较适合异步的代码。 Scrapy 整体架构 Scrapy 数据流是由执行的核心引擎(Engine...

Kafka常见问题总结

在使用 Kafka 时,我们经常会遇到的问题有哪些? 会不会丢消息? Offset 怎么保存? Consumer 重复消费问题怎么处理? 如何保证消息的顺序? 数据倾斜怎么处理? 一个 Topic 分配多少个 Partiton 合适以及修改 Partiton有哪些限制? 如何保证消息不丢失? 消息不丢失对于消息队列来说至关重要,但要实现这一点也是非常困难。因为服务器可能会宕机,磁盘可能...