当你的才华还撑不起你的野心时,那你就应该静下心来学习

Spring Boot 整合 MongoDB

MongoDB简介

Spring Boot 整合 MongoDB

Spring 事务管理

在项目中,事务可以有效的防止在程序出错时,对于数据的错误修改,回滚到修改之前。
spring事务和数据库事务一样,都有四个特性(ACID):

Spring 事务管理

Spring Aop

AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。静态代理是编译期实现,动态代理是运行期实现,可想而知前者拥有更好的性能。本文主要介绍Spring AOP的两种代理实现机制,JDK动态代理和CGLIB动态代理,关于Java代理。

Spring Aop

Spring IoC 容器

Spring IoC容器:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。开发人员在开发过程中,把对象的创建和销毁交给了spring容器,在使用的时候,只需要向容器申请就好了。这样就是的程序实现了解耦。

Spring IoC 容器

SpringBoot maven 配置多环境部署

在实际项目开发中,线上数据和开发测试的环境不可能是一样的,不然每次上线还要进行删除测试数据,而进行版本迭代的时候,开发人员可以之间操作线上用户数据进行开发,作为一个开发人员,你觉得这样合理吗?
针对上面的问题,在实际项目开发过程中,一般就会出现不同的开发环境,比如有开发环境,测试环境,线上环境。但是对于一些中小型公司来说,其实数据库、Redis什么的,只需要两套,一套是线上正式环境,一套开发测试环境。

SpringBoot maven 配置多环境部署

内存模型和内存结构

之前有点傻傻的分不清内存模型和内存结构的区别,以为都是指的是JVM。直到前段时间在一篇博客上看到这两者的区别,才知道这两者指的是不同的东西。

内存模型和内存结构

一次JVM内存泄露

之前接手一个别人刚写好的项目,丢到服务器上跑了没几天,服务器上别的服务都不能使用了。查看阿里云控制台,发现内存爆满了,只能先把这个服务先下,保证别的服务正常使用,还好是在测试阶段,还没正式上线。
对于内存泄露,一开始以为是Java I/O操作没有关闭,导致Java JVM内存泄露。但是发现项目中的I/O操作都已经把做了close操作。最后使用 jconsole 来监控本地内存的变化,发现是不断的创建线程,导致内存的不足,本地长时间跑项目出现下面的错误,这个和通过jconsole监控内存得出的结果差不多。

一次JVM内存泄露

Java并发容器 ——— ConcurrentHashMap

声明:如果本文有错误,希望指出。

Java并发容器 ——— ConcurrentHashMap

MySQL 字符串排序

之前对于MySQL数据库的字符串排序没有深入了解,今天帮同事看这个问题,就深入的了解下。先看下数据库的表,我想查询字母倒序,字符串倒序的一个数据。

MySQL 字符串排序

Java 中各种锁

声明:如果本文有错误,希望指出。

Java 中各种锁