JAVA
文章平均质量分 93
沃德天•维森莫•拉莫帅
90后搬砖猿一枚!整理归纳个人日常收集或积累得个人经验心得,不令赐教
展开
-
AtomicBoolean
AtomicBoolean、AtomicInteger、AtomicLong、AtomicReference。主要用于在高并发环境下的高效程序处理,来帮助我们简化同步处理。原创 2022-04-22 14:27:17 · 1027 阅读 · 0 评论 -
详解java并发原子类AtomicInteger
java并发包里面的类一直是学习和面试的重点,这篇文章主要是对java并发包的其中一个类AtomicInteger的讲解。从为什么要出现AtomicInteger再到其底层原理来一个分析。一、从a++说起为什么使用AtomicInteger我们知道java并发机制中主要有三个特性需要我们去考虑,原子性、可见性和有序性。synchronized关键字可以保证可见性和有序性却无法保证原子性。而这个AtomicInteger的作用就是为了保证原子性。我们先看一个例子。 //定义一个变量a原创 2020-10-15 17:03:08 · 261 阅读 · 0 评论 -
为什么Eureka比ZooKeeper更适合做服务发现?
为什么Eureka比ZooKeeper更适合做服务发现?Eureka的优势1、在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的选举leader的过程;客户端请求会自动切换到新的Eureka节点;当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中;而对于它来说,所有要做的无非是同步一些新的服务注册信息而已。所以,再也不用担心有“掉队”的...原创 2020-04-28 17:36:07 · 215 阅读 · 0 评论 -
springboot之异步调用@Async
引言: 在Java应用中,绝大多数情况下都是通过同步的方式来实现交互处理的;但是在处理与第三方系统交互的时候,容易造成响应迟缓的情况,之前大部分都是使用多线程来完成此类任务,其实,在spring 3.x之后,就已经内置了@Async来完美解决这个问题,本文将介绍在springboot中如何使用@Async。1、pom.xml中导入必要的依赖:<parent> ...原创 2019-11-12 16:52:46 · 166 阅读 · 0 评论 -
腾讯OCR接入
下载java-sdkAPI文档model:/* * To change this license header, choose License Headers in Project Properties. To change this * template file, choose Tools | Templates and open the template in the ed...原创 2019-06-19 23:58:00 · 2661 阅读 · 0 评论 -
ModelMapper
在项目中很多时候需要把Model和DTO两个模型类来回转换,保证Model对外是隐私的,同时类似密码之类的属性也能很好地避免暴露在外了. 那么ModelMapper就是为了方便转换而实现的一个类库,下面根据使用场景不断增加案例.1.ModelMapper入口类ModelMapper这个工具的入口类就是ModelMapper,因此转换就需要从这个类入口.简单看下APIaddConvert...原创 2019-03-21 17:36:25 · 3914 阅读 · 1 评论 -
Java基础-深拷贝和浅拷贝的区别
为什么要拷贝?Java克隆是为了得到一个 完全一致的对象。相同点:对象完全一样。这包括里头所有的变量,对象。不同点:对象的内存地址不一样。 深拷贝与浅拷贝一般来说,拷贝的类型分为 深拷贝与浅拷贝。|—————————————————————————————|| 深拷贝:引用对象的值等信息,复制一份一样的。 || 浅拷贝:只复制引用,另一处...原创 2018-12-04 16:31:50 · 238 阅读 · 0 评论 -
快速排序算法原理及实现(单轴快速排序、三向切分快速排序、双轴快速排序)
1. 单轴快速排序的基本原理快速排序的基本思想就是从一个数组中任意挑选一个元素(通常来说会选择最左边的元素)作为中轴元素,将剩下的元素以中轴元素作为比较的标准,将小于等于中轴元素的放到中轴元素的左边,将大于中轴元素的放到中轴元素的右边,然后以当前中轴元素的位置为界,将左半部分子数组和右半部分子数组看成两个新的数组,重复上述操作,直到子数组的元素个数小于等于1(因为一个元素的数组必定是有序的)。...原创 2018-12-04 15:55:51 · 311 阅读 · 0 评论 -
java将多张图片合并转为PDF
所需jar包:<dependency> <groupId>org.eclipse.birt.runtime.3_7_1</groupId> <artifactId>com.lowagie.text</artifactId> <version>2.1.7</version></原创 2018-11-21 15:57:59 · 6069 阅读 · 10 评论 -
Java8函数式编程探秘
怎样在一行代码里同时计算一个列表的和、最大值、最小值、平均值、元素个数、奇偶分组、指数、排序呢?答案是思维反转!将行为作为数据传递。 文艺青年的代码如下所示:public class FunctionUtil { public static <T,R> List<R> multiGetResult(List<Function<List<T...原创 2018-11-14 13:39:23 · 389 阅读 · 0 评论 -
java中序列化一个对象保存在文件中的简单过程
第一个测试方法:1、首先谈谈为什么要序列化对象 1- 把对象转换为字节序列的过程称为对象的序列化。 2- 把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入...原创 2019-04-30 15:07:57 · 2264 阅读 · 2 评论 -
MultipartFile转File
前端传过来MultipartFile,后端转为file后删除本地缓存文件后台接收的需要转换为一个File类型的接受前端文件:MultipartFile file111 = ((MultipartHttpServletRequest) httpServletRequest).getFile("前端传得文件名");转换:package com.hswg.jstxb.issued...原创 2019-06-19 18:45:05 · 106624 阅读 · 29 评论 -
公钥,私钥和数字签名这样最好理解
一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是我的私钥,来解密。这样我就可以保护数据了。我的好朋友x用我的公钥1加密了字符a,加密后成了b,放在网上。别人偷到了...原创 2019-06-19 21:54:21 · 177 阅读 · 1 评论 -
StringUtils工具类常用方法
前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅。1、空字符串检查public static boolean isEmpty(String str);public static boolean isNotEmpty(String str);上面两个方法是判断字符串是否为”“或者null。public s...原创 2019-06-20 02:29:42 · 267 阅读 · 0 评论 -
枚举类enum的values()方法
关于枚举,相信使用的已经很普遍了,现在主要写的是枚举中的一个特殊方法,values(), 为什么说特殊呢,因为在Enum 的 API 文档中也找不到这个方法。接下来就看看具体的使用。理论上此方法可以将枚举类转变为一个枚举类型的数组,因为枚举中没有下标,我们没有办法通过下标来快速找到需要的枚举类,这时候,转变为数组之后,我们就可以通过数组的下标,来找到我们需要的枚举类。接下来就展示...原创 2019-06-20 09:45:17 · 2278 阅读 · 1 评论 -
hystrix具体配置——演示超时熔断过程
1、引入maven依赖<!-- https://mvnrepository.com/artifact/com.netflix.hystrix/hystrix-core --> <dependency> <groupId>com.netflix.hystrix</groupId> &...原创 2019-07-04 19:36:52 · 1169 阅读 · 0 评论 -
Java8之Optional用法
Optional是Guava提出的概念,通过使用检查空值的方式来防止代码污染,鼓励程序员写更干净的代码,解决空指针异常NullPointerException。受到Google Guava的启发,Optional在Java8正式加入Java豪华套餐。Optional实际上是个容器,它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。由于J...原创 2019-09-06 15:27:31 · 1819 阅读 · 0 评论 -
JAVA中instanceof的作用和用法
instanceof 运算符作用用来在运行时指出对象是否是特定类的一个实例。 instance of通过返回一个布尔值来指出,这个对象是否是这个特定类或它的子类的一个实例。 用法 boolean result = object instanceof class参数: result:布尔类型。 object:任意对象表达式。 class:任意已定义的对象类。 说明:...原创 2019-09-11 16:22:12 · 3222 阅读 · 0 评论 -
List集合导出成Excel表格-浏览器下载
Excel工具类:package com.haaa.cloudmedical.common.util;/** * Created by Tony.Tong on 2018/9/25. */import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import...原创 2018-09-29 11:27:11 · 1047 阅读 · 2 评论 -
synchronized常见用法
一 修饰方法Synchronized修饰一个方法很简单,就是在方法的前面加synchronized,synchronized修饰方法和修饰一个代码块类似,只是作用范围不一样,修饰代码块是大括号括起来的范围,而修饰方法范围是整个函数。Ex:一、public synchronized void method(){// todo}二、public void method...原创 2018-08-24 14:39:00 · 134 阅读 · 0 评论 -
Eclipse通过HibernateTools实现逆向生成Hibernate实体类或映射
做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说既进行完数据库设计后还要再“自己”建立一变VO。意思是,在项目设计时,要么根据需求分析建立实体类,由正向生成数据库表;要么就先进行数据库表设计,再逆向生成实体类。没有说进行完任意一方的设计后再去花时间去自己匹配建立另一方的设计。原因是:1. 1.5倍工作量,浪费时间。(时间...原创 2017-12-06 12:59:39 · 1583 阅读 · 0 评论 -
Java使用Protocol Buffers入门四步骤
protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化、反序列化,经常用于网络传输。这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差。类似的还有json、Java的Serializable等。转载 2017-11-08 16:44:49 · 243 阅读 · 0 评论 -
Maven 快速生成Java项目结构
Maven使用 archetype 来创建项目。要创建一个简单的 Java 应用程序,我们使用 maven-archetype-quickstart 插件。在下面的例子中,我们将创建一个基于Maven 的 Java 应用程序项目在 G:\workspace 文件夹。让我们打开命令控制台,进入到 G:\workspace 目录并执行以下命令 mvn 命令。 Microsof...原创 2017-11-20 10:19:48 · 8530 阅读 · 2 评论 -
JDK 日期&时间<Date Time> API
Java 日期/时间( Date/Time)API是开发人员最受追捧的变化之一,Java从一开始就没有对日期时间处理的一致性方法,因此日期/时间API也是除Java核心API以外另一项倍受欢迎的内容。为什么我们需要新的Java日期/时间API?在开始研究Java 日期/时间API之前,让我们先来看一下为什么我们需要这样一个新的API。在Java中,现有的与日期和时间相关的类存在诸多问题,其中有:Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外原创 2017-11-03 11:23:21 · 492 阅读 · 0 评论 -
百(千)万级excel导出(流式)
背景介绍:我负责的有个条形码的模块,目前110w数据,未来还会继续添加,需要做一个Excel导出的功能。与此相关环境: spring boot,mysql,myBatismaven依赖: [ maven库地址 ] org.apache.poi poi-ooxml 3.16-beta2 主要思路: 页面发出导出请求,在c转载 2017-11-13 10:34:02 · 4051 阅读 · 0 评论 -
Map转换成Bean对象
Map转换成Bean对象原创 2017-11-01 16:15:05 · 1038 阅读 · 0 评论 -
根据key取Jsonobject中value
JSONObject jsonObj = JSONObject. fromObject(parkInfo); String res = (String) jsonObj .get("result"); JSONObject data = (JSONObject) jsonObj.get("data" ); ...原创 2017-11-01 16:13:45 · 9130 阅读 · 0 评论 -
Java开发必会的Linux命令
作为一个Java开发人员,有些常用的Linux命令必须掌握。即时平时开发过程中不使用Linux(Unix)或者mac系统,也需要熟练掌握Linux命令。因为很多服务器上都是Linux系统。所以,要和服务器机器交互,就要通过shell命令。本文并不会对所有命令进行详细讲解,只给出常见用法和解释。具体用法可以使用--help查看帮助或者直接通过google搜索学习。1.查找文件find转载 2016-01-27 16:26:35 · 280 阅读 · 0 评论 -
Java常用排序算法/程序员必须掌握的8大排序算法
分类:1)插入排序(直接插入排序、希尔排序)2)交换排序(冒泡排序、快速排序)3)选择排序(直接选择排序、堆排序)4)归并排序5)分配排序(基数排序)所需辅助空间最多:归并排序所需辅助空间最少:堆排序平均速度最快:快速排序不稳定:快速排序,希尔排序,堆排序。先来看看8种排序之间的关系: 1.直接插入排序(1)基本思想:在要转载 2016-03-29 16:51:46 · 262 阅读 · 0 评论 -
Java Thread 的使用
一、线程的状态在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。当需要新起一个线程来执行原创 2018-01-25 17:09:15 · 154 阅读 · 0 评论 -
Excel导入
一、 1、支持97-2003版本和2007版本的Excel导入; 2、支持列数据类型的转换(Numeric、Date、Boolean、String) 二、导入Maven: 1、poi 2、poi-ooxml三、源码 package com.hzsiasun.mes.action.order;import java.io.File; import java.io.FileInp...原创 2018-02-11 08:48:18 · 224 阅读 · 0 评论 -
线程的四种状态以及wait和sleep的区别
一、线程的四种状态新建(new):处于该状态的时间很短暂。已被分配了必须的系统资源,并执行了初始化。表示有资格获得CPU时间。调度器可以把该线程变为runnable或者blocked状态就绪(Runnable):这种状态下只要调度器把时间片分配给线程,线程就能运行。处在这种状态就是可运行可不运行的状态阻塞(Bolocked):线程能够运行,但有个条件阻止它的运行。当线程处于阻塞状态时,...转载 2018-08-20 13:42:31 · 3872 阅读 · 0 评论 -
java常用的几种线程池比较
1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应...原创 2018-08-20 11:31:25 · 162 阅读 · 0 评论 -
Java集合类: Set、List、Map、Queue使用场景梳理
Java集合类基本概念在编程中,常常需要集中存放多个数据。从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量。一旦在数组初始化时指定了这个数组长度,这个数组长度就是不可变的,如果我们需要保存一个可以动态增长的数据(在编译时无法确定具体的数量),java的集合类就是一个很好的设计方案了。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类...原创 2018-08-09 17:23:58 · 232 阅读 · 0 评论 -
非controller类调用spring框架的service
1、在使用spring-mvc框架的时候经常会遇到在非controller类里面调用service方法,service类使用的是注解,如果直接调用的话会出现service为nullprivate static UserAppService service;// 用户服务类@Autowiredpublic void setService(UserAppService service) {...原创 2018-07-23 16:25:51 · 1824 阅读 · 0 评论 -
Java 8系列之Stream的基本语法详解
概述继Java 8系列之Lambda表达式之后,我们来了解Stream。Stream 是用函数式编程方式在集合类上进行复杂操作的工具,其集成了Java 8中的众多新特性之一的聚合操作,开发者可以更容易地使用Lambda表达式,并且更方便地实现对集合的查找、遍历、过滤以及常见计算等。 聚合操作为了学习聚合的使用,在这里,先定义一个数据类:public class Student { ...原创 2018-04-13 09:40:40 · 211 阅读 · 0 评论 -
JdbcTemplate学习笔记(CRUD)
1、使用JdbcTemplate的execute()方法执行SQL语句 jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100))"); 2、如果是UPDATE或INSERT,可以用update()方法。 jdbcTemplate.update("INSERT INTO USER VALU...原创 2018-04-08 16:13:04 · 211 阅读 · 0 评论 -
java poi 操作Excel 删除行内容和直接删除行
一般情况下,删除行时会面临两种情况:删除行内容但保留行位置、整行删除(删除后下方单元格上移)。对应的删除方法分别是:void removeRow(Row row)//Remove a row from this sheet. All cells contained in the row are removed as wellpublic void shiftRows(int startRo...原创 2018-03-01 14:42:36 · 37258 阅读 · 10 评论 -
如何给老婆解释什么是Restful
老婆经常喜欢翻看我订阅的技术杂志,她总能从她的视角提出很多有趣的问题。一个悠闲的周日下午,她午觉醒来,又习惯性的抓起这个月的杂志,饶有兴趣地看了起来。果不其然,看着看着,她又对我发难了,“Restful是什么呀,老公?是restaurant的形容词吗,突然就觉得好饿了啊……”作为一个合格的程序员,我一直把能够将一项技术讲给老婆听,并且能给她讲懂,作为我已经掌握了这项技术的标准。转载 2017-10-31 09:44:56 · 252 阅读 · 0 评论