Spring 事务管理
在项目中,事务可以有效的防止在程序出错时,对于数据的错误修改,回滚到修改之前。
spring事务和数据库事务一样,都有四个特性(ACID):
Spring Aop
AOP(Aspect Orient Programming),一般称为面向切面编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。静态代理是编译期实现,动态代理是运行期实现,可想而知前者拥有更好的性能。本文主要介绍Spring AOP的两种代理实现机制,JDK动态代理和CGLIB动态代理,关于Java代理。
Spring IoC 容器
Spring IoC容器:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。开发人员在开发过程中,把对象的创建和销毁交给了spring容器,在使用的时候,只需要向容器申请就好了。这样就是的程序实现了解耦。
SpringBoot maven 配置多环境部署
在实际项目开发中,线上数据和开发测试的环境不可能是一样的,不然每次上线还要进行删除测试数据,而进行版本迭代的时候,开发人员可以之间操作线上用户数据进行开发,作为一个开发人员,你觉得这样合理吗?
针对上面的问题,在实际项目开发过程中,一般就会出现不同的开发环境,比如有开发环境,测试环境,线上环境。但是对于一些中小型公司来说,其实数据库、Redis什么的,只需要两套,一套是线上正式环境,一套开发测试环境。
内存模型和内存结构
之前有点傻傻的分不清内存模型和内存结构的区别,以为都是指的是JVM。直到前段时间在一篇博客上看到这两者的区别,才知道这两者指的是不同的东西。
一次JVM内存泄露
之前接手一个别人刚写好的项目,丢到服务器上跑了没几天,服务器上别的服务都不能使用了。查看阿里云控制台,发现内存爆满了,只能先把这个服务先下,保证别的服务正常使用,还好是在测试阶段,还没正式上线。
对于内存泄露,一开始以为是Java I/O操作没有关闭,导致Java JVM内存泄露。但是发现项目中的I/O操作都已经把做了close操作。最后使用 jconsole 来监控本地内存的变化,发现是不断的创建线程,导致内存的不足,本地长时间跑项目出现下面的错误,这个和通过jconsole监控内存得出的结果差不多。
Java并发容器 ——— ConcurrentHashMap
声明:如果本文有错误,希望指出。
MySQL 字符串排序
之前对于MySQL数据库的字符串排序没有深入了解,今天帮同事看这个问题,就深入的了解下。先看下数据库的表,我想查询字母倒序,字符串倒序的一个数据。
Java 中各种锁
声明:如果本文有错误,希望指出。