
java
文章平均质量分 75
馥钰
好人一生平安!道阻且长,行则将至!
选择一条自己喜欢的路,向前走,莫回头!
天道酬勤!
学海无涯,温故而知新!
线下不努力,线上出问题!线上出问题,努力全白费!
分布式系统、高并发、大流量,分布式计算、分布式存储!
展开
-
javaMail直接发送附件,无须生成临时文件
利用ByteArrayOutputStream把excel文件输出到bytes[]中,然后由ByteArrayResource包装起来传递给邮件服务。版权声明:本文为优快云博主「Clement-Xu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.youkuaiyun.com/ClementAD/article/details/78743663。转载 2022-11-14 16:26:56 · 843 阅读 · 1 评论 -
synchronized底层实现原理及锁优化
synchronized底层实现原理及锁优化_Medlen-优快云博客_synchronized底层原理一、概述1、synchronized作用原子性:synchronized保证语句块内操作是原子的可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)2、synchronized的使用修饰实例方法,对当前实例对象加锁修饰静态转载 2022-02-28 16:33:45 · 262 阅读 · 0 评论 -
Fork/Join框架详解
Fork/Join框架详解 - 木易森林 - 博客园Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情: 1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分割 2.执行任务并合并结果:分割的子任务分别放到双端队列里,然后几个启动线程分别从双端队列里获取任务执行。子任务执行完的结果都放在另外一转载 2022-02-25 10:43:47 · 299 阅读 · 0 评论 -
使用ForkJoin
使用ForkJoin - 廖雪峰的官方网站Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成:┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘还有一种方法,可以把数组拆成两部分,分别计算,最后转载 2022-02-25 10:38:51 · 131 阅读 · 0 评论 -
JAVA多线程之中断机制(如何处理中断?)
JAVA多线程之中断机制(如何处理中断?) - 大熊猫同学 - 博客园一,介绍这篇文章主要记录使用 interrupt() 方法中断线程,以及如何对InterruptedException进行处理。感觉对InterruptedException异常进行处理是一件谨慎且有技巧的活儿。由于使用stop()方法停止线程非常的暴力,人家线程运行的好好的,突然就把人家杀死了,线程占用的锁被强制释放,极易导致数据的不一致性。可参考这篇文章对stop()方法的介绍。因此,提出了一种温和的方式:请求另外转载 2022-02-22 11:53:11 · 1107 阅读 · 1 评论 -
LinkedHashMap原理和底层实现
1.概述在使用HashMap的时候,可能会遇到需要按照当时put的顺序来进行哈希表的遍历。通过上篇对HashMap的了解,我们知道HashMap中不存在保存顺序的机制。本篇文章要介绍的LinkedHashMap专为此特性而生。在LinkedHashMap中可以保持两种顺序,分别是插入顺序和访问顺序,这个是可以在LinkedHashMap的初始化方法中进行指定的。相对于访问顺序,按照插入顺序进行编排被使用到的场景更多一些,所以默认是按照插入顺序进行编排。看一下实际的运行效果,测试代码如下:pu转载 2022-02-08 17:47:12 · 3009 阅读 · 0 评论 -
ThreadLocal作用、场景、原理
黑马程序员Java基础教程由浅入深全面解析threadlocal_哔哩哔哩_bilibiliThreadLocal数据结构内存泄露 - threadLocalMap key为强引用内存泄露 - threadLocalMap key为弱引用手动remove entryThreadLocal作用、场景、原理 - 简书1.ThreadLocal 是什么? 在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决...转载 2022-02-07 19:14:34 · 457 阅读 · 0 评论 -
ConcurrentHashMap在jdk1.7和jdk1.8中的不同
ConcurrentHashMap 1.7与1.8的锁区别,以及数据结构区别_鹤忧的博客-优快云博客JDK1.7版本的ReentrantLock+Segment+HashEntry,到JDK1.8版本中synchronized+CAS+HashEntry+红黑树1.7版本put:Segment的继承体系可以看出,Segment实现了ReentrantLock,也就带有锁的功能,当执行put操作时,会进行第一次key的hash来定位Segment的位置,如果该Segment还没有初始化,即通转载 2022-02-07 18:20:21 · 834 阅读 · 0 评论 -
【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本
https://blog.youkuaiyun.com/f641385712/article/details/83380552相关阅读【小家java】java5新特性(简述十大新特性) 重要一跃【小家java】java6新特性(简述十大新特性) 鸡肋升级【小家java】java7新特性(简述八大新特性) 不温不火【小家java】java8新特性(简述十大新特性) 饱受赞誉【小家java】java9新特性(简述十大新特性) 褒贬不一【小家java】java10新特性(简述十大新特性) 小步迭代【小家ja转载 2020-07-15 10:45:42 · 244 阅读 · 0 评论 -
java8中stream的map和flatmap的理解
https://www.cnblogs.com/lijingran/p/8727507.html假如我们有这样一个需求给定单词列表["Hello","World"],你想要返回列表["H","e","l", "o","W","r","d"],对于这样的需求,我们可能想到的第一个版本可能是这样子的:words.stream().map(word -> word.split("")).distinct().collect(toList());这个方法的问题在于,传递给map方法的La转载 2020-06-30 16:02:19 · 963 阅读 · 0 评论 -
MySQL ALTER TABLE报错 Duplicate entry xxx for key PRIMARY解决方法
https://blog.youkuaiyun.com/u014609263/article/details/100199444在MySQL中执行加字段等操作时可能会报Duplicate entry 'xxx' for key 'PRIMARY'的错,例如:mysql> alter table test add aa int;mysql>[Err] 1062 - Duplicate entry '1' for key 'id'原因分析:DDL: Alter tableDML: add转载 2020-06-09 17:03:14 · 2259 阅读 · 0 评论 -
代码优化 - 下
优化过程分为了上下两篇,上篇是基础篇,下篇是优化篇,优化是利用java8 提供的新功能Consumer,方法可以作为参数传递!单行数据调用此方法的地方,此处就比较单了,实体不为空,就设置itemList值。多行数据有两个方法,一个需要显示序号,一个不需要序号。调用此方法的地方,此处就比较单了,把实体转为真是类型,然后设置itemList值。抽出一个工具类import org.apache.commons.collections.Collec...原创 2020-06-01 20:02:06 · 224 阅读 · 0 评论 -
代码优化 - 上
最近在写Excel导出功能,需要合并多行,优化过程分为了上下两篇,上篇是基础篇,下篇是优化篇,优化是利用java8 提供的新功能,方法可以作为参数传递!这是导出的Excel的样式 优化的内容,仅涉及下面单元格内容数据填充,下面的几个方法。待优化方法,结构基本相似,当currRow < maxRow的时候,是需要合并单元格的,否则不需要合并,所以每个方法就分了需要合并单元格和不需要合并单元格两种情况去考虑。头部的一段是判断实体或者数组是否为空,为空的话,设...原创 2020-06-01 18:17:06 · 211 阅读 · 0 评论 -
java.io.IOException: Broken pipe & getOutputStream() has already been called for this response 问题处理
问题:在做excel导出时,断点调试,自己写的代码没有任何问题,从执行完自己的业务代码到返回客户端的过程中报了如下错误[http-nio-8080-exec-1] 05/20-21:06:35,137 ERROR com.kr.media.framework.web.BaseExceptionResolver.doResolveHandlerMethodException(BaseExceptionResolver.java:33) - org.apache.catalina.connector.Cl原创 2020-05-20 21:19:11 · 1726 阅读 · 0 评论 -
Java自定义注解
一直对自定义注解感到好奇,今天就觉得学一下,从网上搜了个文章(https://www.cnblogs.com/liangweiping/p/3837332.html),跟着例子跑了一遍,还挺有趣的,遂分享出来。以下示例,在此文章基础上改进而来,仅供参考。一、注解的基础1.注解的定义:Java文件叫做Annotation,用@interface表示。2.元注解:@interface上面按需要注解上一些东西,包括@Retention、@Target、@Document、@Inherited四种。原创 2020-05-18 19:31:49 · 265 阅读 · 0 评论 -
Java自定义注解
转载:https://www.cnblogs.com/liangweiping/p/3837332.html前言:这两天看了一下Java自定义注解的内容,然后按照我自己的理解写了两份代码,还挺有趣的,本文包括三个部分:注解的基础、通过注解进行赋值(结合了工厂方法模式)、通过注解进行校验。一、注解的基础1.注解的定义:Java文件叫做Annotation,用@interface表示。2.元注解:@interface上面按需要注解上一些东西,包括@Retention、@Target、@Docu.转载 2020-05-18 19:13:17 · 161 阅读 · 0 评论 -
小心linux自动杀死进程的操作(kill -9 pid)
https://blog.youkuaiyun.com/qq_29631069/article/details/79796560这两天部署在linux上的程序老是莫名其妙的自动停止而且没有任何日志打印,纠结好长时间后发现linux的message.log日志中有一句,如下:因为内存占用过多会杀死一个占用最多的进程命令:sudo grep "java" /var/log/messagesApr 2...转载 2020-02-17 12:49:03 · 1099 阅读 · 0 评论 -
BigDecimal类的构造函数——将double类型转换为BigDecimal类型
[java] view plain copypackage archie2010; import java.math.BigDecimal; import java.math.MathContext; public class BigDecimalTest { /** * @param args * @reference转载 2018-01-11 12:03:06 · 610 阅读 · 0 评论 -
115个Java面试题和答案——终极列表(上)
本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力。下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。开始!目录面向对象编程(OOP)常见的Jav...转载 2017-07-22 13:33:53 · 235 阅读 · 0 评论 -
订单号怎样生成才能好用又好看,难倒了20多位产品经理
https://www.jianshu.com/p/3ef577eaacac1.三个真实的案例案例1:最近面试的将近20位产品经理里面,我都会问一道问题:请您为我公司的订单系统设计一套订单号的生成规则。应聘者里面有一两年的职场新人,也有工作将近十年的老鸟,当然也不乏运营或者开发转岗到产品的,有些甚至还做过订单与支付系统,但几乎所有的面试者都没能说的很全面。案例2:去年的某个时间,朋友A所在的公司订...转载 2018-03-08 14:17:05 · 1694 阅读 · 2 评论 -
解析各大电子商务网站订单号的生成方式
http://blog.youkuaiyun.com/yahuvi/article/details/50818789摘要:订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式...订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式。现在大型电商网站大多都有好几种下单途径。 比如:通过Web网站下单...转载 2018-03-08 13:54:10 · 2825 阅读 · 0 评论 -
彻底理解ThreadLocal
https://www.cnblogs.com/xzwblog/p/7227509.html参考:http://www.iteye.com/topic/103804http://www.iteye.com/topic/777716源码分析 为了解释ThreadLocal类的工作原理,必须同时介绍与其工作甚密的其他几个类ThreadLocalMap(内部类)Thread 首先,在Thread类中...转载 2018-02-27 16:45:43 · 176 阅读 · 0 评论 -
美团java相关技术文章分享
美团数据仓库的演进搜索引擎关键字智能提示的一种实现美团性能优化之路——性能指标体系MySQL索引原理及慢查询优化Innodb中的事务隔离级别和锁的关系地理空间距离计算优化Java内存访问重排序的研究Kafka文件存储机制那些事序列化和反序列化原创 2018-02-07 18:31:58 · 425 阅读 · 0 评论 -
Java 对象序列化
https://www.ibm.com/developerworks/cn/java/j-5things1/数年前,当和一个软件团队一起用 Java 语言编写一个应用程序时,我体会到比一般程序员多知道一点关于 Java 对象序列化的知识所带来的好处。关于本系列您觉得自己懂 Java 编程?事实上,大多数程序员对于 Java 平台都是浅尝则止,只学习了足以完成手头上任务的知识而已。在本系列 中,Te...转载 2018-02-02 17:10:00 · 230 阅读 · 0 评论 -
几种java远程调用通讯协议的比较
http://blog.youkuaiyun.com/liu88010988/article/details/50790162一、综述本文比较了RMI,Hessian,Burlap,Httpinvoker,web service等5种通讯协议的在不同的数据结构和不同数据量时的传输性能。RMI是java语言本身提供的通讯协议,稳定高效,是EJB的基础。但它只能用于JAVA程序之间的通讯。Hessian和Burl...转载 2018-02-02 18:00:16 · 643 阅读 · 0 评论 -
slf4j+log4j+logback总结
http://www.cnblogs.com/huayu0815/p/5341712.htmljava开发过程中为了找问题方便或是统计信息方便,总免不了要打各种日志。之前的各个项目都是配置好的,maven配置的时候,会看到各种类型的Log包:slf4j、log4j、commons-log、logback等等,看着就烦,今天仔细了解了一下,有点收获,记录一下起因使用JAVA的kafk转载 2017-11-02 18:11:42 · 356 阅读 · 0 评论 -
Java中的多线程你只要看这一篇就够了 引
https://www.cnblogs.com/wxd0108/p/5479442.html引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也...转载 2018-02-26 23:32:53 · 204 阅读 · 0 评论 -
Java序列化的几种方式以及序列化的作用
http://www.cnblogs.com/xiohao/p/4234184.html本文着重讲解一下Java序列化的相关内容。如果对Java序列化感兴趣的同学可以研究一下。一.Java序列化的作用 有的时候我们想要把一个Java对象变成字节流的形式传出去,有的时候我们想要从一个字节流中恢复一个Java对象。例如,有的时候我们想要把一个Java对象写入到硬盘或者传输到转载 2018-02-02 16:19:37 · 232 阅读 · 0 评论 -
几种Java序列化方式的实现
http://blog.youkuaiyun.com/pistolove/article/details/603211230、前言本文主要对几种常见Java序列化方式进行实现。包括Java原生以流的方法进行的序列化、Json序列化、FastJson序列化、Protobuff序列化。1、Java原生序列化Java原生序列化方法即通过Java原生流(InputStream和Ou转载 2018-02-02 16:16:55 · 313 阅读 · 0 评论 -
servlet 如何处理多请求访问以及线程讲解
http://www.cnblogs.com/GtShare/p/8033637.html一、Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);2.容器初始化Servlet主要就是读取配置文件(例如tomcat转载 2018-01-23 00:08:03 · 1072 阅读 · 0 评论 -
深入理解JVM之四:详解垃圾收集器
前言前面已经对垃圾收集算法有了较为详细的介绍,这里我们将对JVM中具体的垃圾回收器进行介绍,在虚拟机规范中并没有对垃圾回收器如何实现具体介绍,因此每个厂商的垃圾回收器可能会完全不同,但是我们介绍的是基于JDK1.7之后的Hotspot虚拟机(包括前面对Java虚拟机的介绍也是基于jdk1.7版本的)。在Hotspot中,虚拟机的收集器主要有下:可以看到垃圾收集器是按对象的分代来划分的,可以用线条连...转载 2017-07-27 17:37:00 · 275 阅读 · 0 评论 -
如何线程安全的使用HashMap
http://www.importnew.com/21396.html在周二面试时,一面的面试官有问到HashMap是否是线程安全的,如何在线程安全的前提下使用HashMap,其实也就是HashMap,Hashtable,ConcurrentHashMap和synchronized Map的原理和区别。当时有些紧张只是简单说了下HashMap不是线程安全的;Hashtable线程安全,但效率低,因...转载 2018-03-02 17:50:08 · 184 阅读 · 0 评论 -
谈谈HashMap线程不安全的体现
http://www.importnew.com/22011.htmlHashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了。那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢?1. resize死循环我们都知道HashMap初始容量大小为16,一般来说,当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,...转载 2018-03-02 18:07:34 · 150 阅读 · 0 评论 -
Java中守护线程的总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾...转载 2017-08-03 19:56:50 · 280 阅读 · 0 评论 -
Java中Lambda表达式的使用
https://www.cnblogs.com/franson-2016/p/5593080.html简介(译者注:虽然看着很先进,其实Lambda表达式的本质只是一个"语法糖",由编译器推断并帮你转换包装为常规的代码,因此你可以使用更少的代码来实现同样的功能。本人建议不要乱用,因为这就和某些很高级的黑客写的代码一样,简洁,难懂,难以调试,维护人员想骂娘.)Lambda表达式是Java S...转载 2019-04-23 22:14:35 · 182 阅读 · 0 评论 -
为什么要用私钥加签,公钥加密
加签的目的:验证信息的发送方是否正确,信息是否被其他人篡改。之所以用发送方的私钥加签,是因为,即便信息被黑客拦截,黑客修改了信息,但是加签需要用发送方的私钥,黑客没有发送方的私钥,所以也无法生成正确的签名,接收方验签就不用通过。反之如果用接收方的公钥加签,如果信息被黑客拦截,黑客修改了信息,因为接收方的公钥是公开的,黑客就可以重新生成新的签名,替换原有的签名,发送出去,接收方接收到信息,拿...原创 2018-11-30 18:21:04 · 7137 阅读 · 1 评论 -
相当实用的——Java递归删除指定文件夹下的所有文件
https://blog.youkuaiyun.com/lyx2007825/article/details/7835326[java] view plain copypackage net.liuyx.java; import java.io.File; public class Delete { private static int counter = 0; /** ...转载 2018-04-07 22:19:16 · 506 阅读 · 0 评论 -
Java常见内存溢出异常分析
http://www.importnew.com/14604.htmlJava虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了三部分,新生代,老年代,持久带,其中持久带实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OOM错误,接下来我们就分开来讨论一下。栈溢出(StackOverflowError)栈溢出抛出...转载 2018-03-21 14:29:43 · 259 阅读 · 0 评论 -
java面试题:如何解决内存溢出
https://zhidao.baidu.com/question/109897431.html第一对所有的代码包括页面中的java代码都进行一遍彻底的回顾检查,1.对那些静态(static)的对象要特别留神,特别是类型为Map,List,Set的,静态的变量会一直驻存在内存中,生命周期比较长,不会被垃圾器回收。2.对于代码,要审查是否生成了大量的冗余的对象,还有一些逻辑业务处理的类,算...转载 2018-03-21 14:08:22 · 2039 阅读 · 0 评论 -
jvm 内存溢出的多种原因及优化方法
http://blog.youkuaiyun.com/zyc88888/article/details/64905716让我们看一下我们日常在开发过程中接触内存溢出的异常: Exception in thread "main" [Full GCjava.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown...转载 2018-03-21 14:04:24 · 803 阅读 · 0 评论