随笔分类 - Java
大叔也学学java,跟跟风...
摘要:使用maven进行构建项目时,有时会把公共对象和方法抽象在一个common公用项目里,而其它项目直接依赖它即可,而在common项目配置需要注意一下,因为springboot生成的jar默认是可执行的jar包,所以在其它子项目编译时,会因为引用common失败而导致当前项目不能成功编译,而只能去根项
阅读全文
摘要:上一讲主要谈了java里的线程池的使用,而主要使用Executors的方式去创建,比如 Executors.newCachedThreadPool(), Executors.newFixedThreadPool(5)等等,而这些方式在阿里手册里是不被推荐的,而是推荐使用ThreadPoolExecu
阅读全文
摘要:线程的创建和效率都需要消耗处理器(cpu)的资源,所以我们在使用线程时需要注意,你的每一个动作都是需要为它买单的,也正是因为线程的使用需要谨慎,所以java对线程的管理也进行了封装,就是今天要说的线程池,目前java主要封装了大概4大种类型的线程池,下面简单来介绍一下。 四大类型的线程池 1. ne
阅读全文
摘要:sidecar这个词一般指带有跨斗的摩托车,在二战时候小日本开着很多这种摩托车,它在原有基础上添加了一个跨斗,之后就可以多载一个人,而对于原来的两轮摩托车没有什么影响,把跨斗拆了也是可以的,对原来的事物没有本质上的破坏,只是扩展了新的功能,这与软件开发里的OCP原则很像,在服务网格的istio里也有
阅读全文
摘要:当我们的项目里有多种数据源时,mysql,h2,mongodb,es等等,这时你需要为每种数据源添加自己的bean类,在bean里构建配置,而直接在yml里的配置往往会出现循环引用的问题。 有时,也会出现其它奇葩的问题,总之,当你的项目里数据源比较多时,通过配置文件+profile来管理它们更清晰,
阅读全文
摘要:事情是这样的,系统有这样一个需求,有一些单子供客户下载打印,做为凭证,而这些单子一般属于word格式的,里面的排版非常固定,只是上面的内容不同,这就属于word模板的范畴了,目前比较不好的操作word的组件就是aspose了,下面我来说一下它的使用方法。 word模板 主要使用了word里的域,然后
阅读全文
摘要:jwt的总结与实现 请求和响应 1. 请求实体 规定的客户端传给jwt认证服务器的参数 2. 响应实体 规定了jwt服务端颁发给客户端的jwt token的结果 jwtUtil类 主要提供了jwt的实现方法,如加密规则,生成token,获取token等 SecurityConfigurer类 主要设
阅读全文
摘要:说明 通过可配置化,通过数据库自动生成model,da和mapper文件,这对于可定制化开发来说是非常有用的,减少了很多重复的工作。 添加依赖 添加配置文件 resources/mybatis/generator 添加xml文件 生成对应代码 我们在右侧的plugins/mybatis genera
阅读全文
摘要:介绍 Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。 功能 Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。可以监控数据库访
阅读全文
摘要:概念 工作流产品使用activiti的算是比较多了,自带了一套UI界面,可以直接使用,用来设计流程,下面简单总结一下它的步骤: 1 设计模型 2 发布为流程,一个模型可以发布多个版本的流程 3 建立一个流程的实例和实例任务,一个流程可以建立多个并行的实例 4 对某个实例任务进行审批 5 可以查看实时
阅读全文
摘要:在gradle4.7以后对于加入依赖lombok方式发生变化,gradle4.7版本以前,可以直接如下引用: compile("org.projectlombok:lombok:1.18.2")或者compileOnly("org.projectlombok:lombok:1.18.2") 在gra
阅读全文
摘要:ingress产生的原因 ClusterIP的方式只能在集群内部访问 NodePort方式的话,测试环境使用还行,当有几十上百的服务在集群中运行时,NodePort的端口管理是灾难。 LoadBalance方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。 所幸k8s还提供了一种集群维度暴
阅读全文
摘要:在使用spring框架时,默认情况下@RequestParam注解只到接受Get和Post请求参数 ,而对于Put来说默认是使用@ReqeustBody注解的,如果希望为Put也开启@RequestParam,需要添加过滤器实现。 @RequestParam 用来处理Content Type: 为
阅读全文
摘要:@Transactional注解是为方法添加事务块的意思,使用aop的技术动态为方法添加事务范围,在使用它时可以在类或者方法上添加,但在类上添加时需要注意一下影响的范围。 类中添加Transactional 相当于你的每个公共的方法都会被迫加上事务,这并不是一件好事,所以不建议这样干。 拦截器里调用
阅读全文
摘要:这是一个基于消息的分布式事务的一部分,主要通过消息来实现,生产者把消息发到队列后,由消费方去执行剩下的逻辑,而当消费方处理失败后,我们需要进行重试,即为了最现数据的最终一致性,在rabbitmq里,它有消息重试和重试次数的配置,但当你配置之后,你的TTL达到 后,消息不能自动放入死信队列,所以这块需
阅读全文
摘要:springboot开发微服务框架一般使用springcloud全家桶,而整个项目都是容器化的,通过k8s进行编排,而k8s自己也有服务发现机制,所以我们也可以抛弃springcloud里的eureka,而直接使用k8s自己的服务。 添加组件 注意点 1. application.name与k8s的
阅读全文
摘要:config server用来搭建配置中心,而配置信息一般使用gitlab仓库来存储,这样在你的配置发生改变时,不需要从新打包,而如果使用 的试,则需要从新打一个config server的jar包。 配置的热更新 当你的服务的配置信息发生改变时,一般来说需要从新重启你的服务,配置信息才能生效,这对
阅读全文
摘要:统一设计 maven很好的把项目整合在一起,在部署时,每个项目可以有自己的Dockerfile,在构建后把对应的jar包复制到Dockerfile的同级目录,使用使用统一的打包镜像和容器启动方法去执行就可以了。 需要大maven根项目添加插件 Dockerfile的统一内容 在src/main/do
阅读全文
摘要:# logback日志文件位置动态指定 > 参考:https://stackoverflow.com/questions/19518843/logback-configuration-via-jvm-argument logback相关配置,其中${LOG_HOME}表示为环境变量,在java启动应
阅读全文
摘要:高并发下的耗时操作 官方文档中说DeferredResult和Callable都是为了异步生成返回值提供基本的支持。简单来说就是一个请求进来,如果你使用了DeferredResult或者Callable,在没有得到返回数据之前,DispatcherServlet和所有Filter就会退出Servle
阅读全文