java
夏虫语冰彡
程序猿一枚
展开
-
嵌套事务分析@Transactional
嵌套事务分析转载 2022-11-21 17:45:45 · 1147 阅读 · 0 评论 -
批处理 rewriteBatchedStatements=true
最近在优化大批量数据插入的性能问题。项目原来使用的大批量数据插入方法是Mybatis的foreach拼接SQL的方法。我发现不管改成Mybatis Batch提交或者原生JDBC Batch的方法都不起作用,实际上在插入的时候仍然是一条条记录的插,速度远不如原来Mybatis的foreach拼接SQL的方法。这对于常理来说是非常不科学的。下面先罗列一下三种插入方式:public class NotifyRecordDaoTest extends BaseTest { @Resource(n原创 2020-07-30 17:10:58 · 25221 阅读 · 7 评论 -
Lambda表达式有什么用?怎么来的?
Lambda表达式有什么用?转载 2020-01-19 10:06:31 · 220 阅读 · 0 评论 -
Java多线程优化方法及使用方式
一、多线程介绍 在编程中,我们不可逃避的会遇到多线程的编程问题,因为在大多数的业务系统中需要并发处理,如果是在并发的场景中,多线程就非常重要了。另外,我们在面试的时候,面试官通常也会问到我们关于多线程的问题,如:如何创建一个线程?我们通常会这么回答,主要有两种方法,第一种:继承Thread类,重写run方法;第二种:实现Runnable接口,重写run方法。那么面试官一定会问这两种...转载 2020-01-07 18:10:12 · 336 阅读 · 0 评论 -
Spring 源码梳理(一) ClassPathXmlApplicationContext
ClassPathXmlApplicationContext1.为什么要分析Spring源码:1)有意往架构上发展,分析Spring可清楚它做了哪些事情,如何做这些事情2)Spring本身是对Java的丰富和发展,阅读可提高自己的水平2.怎样分析S...转载 2020-01-07 17:30:20 · 191 阅读 · 0 评论 -
可能是史上最全的权限系统设计(转)
权限系统设计前言权限管理是所有后台系统的都会涉及的一个重要组成部分,主要目的是对不同的人访问资源进行权限的控制,避免因权限控制缺失或操作不当引发的风险问题,如操作错误,隐私数据泄露等问题。目前在公司负责权限这块,所以对权限这块的设计比较熟悉,公司采用微服务架构,权限系统自然就独立出来了,其他业务系统包括商品中心,订单中心,用户中心,仓库系统,小程序,多个APP等十几个系统和终端1...转载 2019-12-31 14:40:01 · 196 阅读 · 0 评论 -
springboot异步调用@Async
1.使用背景在项目中,当访问其他人的接口较慢或者做耗时任务时,不想程序一直卡在耗时任务上,想程序能够并行执行,我们可以使用多线程来并行的处理任务,也可以使用spring提供的异步处理方式@Async。2.异步处理方式调用之后,不返回任何数据。调用之后,返回数据,通过Future来获取返回数据3.@Async不返回数据使用@EnableAsync启用异步注解@Configurati...原创 2019-12-27 15:50:07 · 195 阅读 · 1 评论 -
如何优化JAVA代码及提高执行效率(转)
可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。在Java程序中,性能问题的大部分原因并不在于Java语言,而是在于程序本身。养成好的代码编写习惯非常重要,比如正确地、巧妙地运用java.lang.String类和java.ut...转载 2019-12-27 15:14:00 · 377 阅读 · 0 评论 -
一张图看懂IaaS, PaaS和SaaS的区别
译:老夫子原文:https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose/ 从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域。 无论是应用...转载 2019-12-18 14:40:17 · 780 阅读 · 1 评论 -
Java中Native关键字的作用
初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法:public native int hashCode();为什么有个native呢?这是我所要学习的地方。所以下面想要总结下native。回到顶部一、认识 native 即 JNI,Java Native Interface凡是一种语言,都希望是纯。比如解...转载 2019-12-16 15:02:05 · 166 阅读 · 0 评论 -
Java-魔法值
魔法值,是指在代码中直接出现的数值,只有在这个数值记述的那部分代码中才能明确了解其含义。其实说白了就是硬编码。魔法数值使代码的可读性大大下降。而且,如果同样的数值多次出现时,到底这些数值是不是带有同样的含义呢,谁也说不清楚。另一方面,如果本来应该使用相同数值的地方,一旦用错了,也很难发现。因此,我们应极力避免使用魔法数值。解决办法:使用static final 定义常量或使用enum值根据《...原创 2019-12-04 17:21:38 · 364 阅读 · 0 评论 -
(7)
Java内存模型JMM1、什么是JMM(面试高频) JVM JMM即为JAVA 内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换了个系统就出现各种问题。Java内存模型,就是为了屏蔽系统和硬件的差异,让一套代码在不同平台下能到达相同的访问结果。JMM从jav...原创 2019-12-04 17:18:02 · 182 阅读 · 0 评论 -
(6)
异步回调1、概述Future设计的初衷:对将来某个时刻会发生的结果进行建模。当我们需要调用一个函数方法时。如果这个函数执行很慢,那么我们就要进行等待。但有时候,我们可能并不急着要结果。因此,我们可以让被调用者立即返回,让他在后台慢慢处理这个请求。对于调用者来说,则可以先处理一些其他任务,在真正需要数据的场合再去尝试获取需要的数据。它建模了一种异步计算,返回一个执行运算结果的引用,当运算结...原创 2019-12-04 17:17:21 · 172 阅读 · 0 评论 -
(5)
ForkJoin1、什么是ForkJoin从JDK1.7开始,Java提供Fork/Join框架用于并行执行任务,它的思想就是讲一个大任务分割成若干小任务,最终汇总每个小任务的结果得到这个大任务的结果。这种思想和HDFS–MapReduce很像(input --> split --> map --> reduce --> output)主要有两步:第一、任务切分...原创 2019-12-04 17:16:53 · 104 阅读 · 0 评论 -
(4)
Stream流式计算1、流(Stream)到底是什么呢?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!”特点:Stream 自己不会存储元素。Stream 不会改变源对象,相反,他们会返回一个持有结果的新Stream。Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。2、怎么使用呢?创建一个Stream:一...原创 2019-12-04 17:16:20 · 120 阅读 · 0 评论 -
(3)
线程池底层工作原理3.1、池化技术程序的运行,其本质上,是对系统资源(CPU、内存、磁盘、网络等等)的使用。如何高效的使用这些资源是我们编程优化演进的一个方向。今天说的线程池就是一种对CPU利用的优化手段。通过学习线程池原理,明白所有池化技术的基本设计思路。遇到其他相似问题可以解决。池化技术前面提到一个名词——池化技术,那么到底什么是池化技术呢 ?池化技术简单点来说,就是提前保存大量的...原创 2019-12-04 17:15:40 · 224 阅读 · 0 评论 -
(2)
单例模式的探究单例模式可以说只要是一个合格的开发都会写,但是如果要深究,小小的单例模式可以牵扯到很多东西,比如 多线程是否安全,是否懒加载,性能等等。还有你知道几种单例模式的写法呢?如何防止反射破坏单例模式?今天,我们来探究单例模式。关于单例模式的概念,在这里就不在阐述了,相信每个小伙伴都了如指掌。我们直接进入正题:2.1、饿汉式public class Hungry { priv...原创 2019-12-04 17:14:53 · 124 阅读 · 0 评论 -
从大佬公开课学到的一些知识分享(1)
设计模式概念1.1 什么是设计模式设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领...原创 2019-12-04 17:13:41 · 242 阅读 · 0 评论 -
内存溢出和内存泄漏的区别
1.1内存溢出:(Out Of Memory—OOM)系统已经不能再分配出你所需要的空间,比如你需要100M的空间,系统只剩90M了,这就叫内存溢出例子:一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出。比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出。说白了就是我承受不了...原创 2019-11-19 16:42:41 · 214 阅读 · 0 评论