Java
文章平均质量分 76
Mr_EvanChen
这个作者很懒,什么都没留下…
展开
-
【Java】自建IOS应用(IPA)发布服务器
简单描述一下总的过程:在某个后台上(版本发布平台)上传原始的ipa文件,解析ipa(主要是解析info.plist,从中获取软件名、版本、icons等;解析embedded.mobileprovision,获取证书过期时间),生成一个新的plist文件,最终将ipa、新的plist、图标上传至发布服务器。这个plist文件里面会指向这个ipa的地址,最终在Safari上访问 itms-services://?action=download-manifest&url=plist文件 就可...原创 2020-07-10 14:42:20 · 889 阅读 · 0 评论 -
【Java】垃圾回收机制
什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。与C/C++相比,java语言不需要程序员直接控制内存回收,java程序的内存分配和回收都是由JRE在后台自动进行,JRE会负责回收那些不再使用的内存,这种机制被称为垃圾回收机制(Garba...转载 2020-06-11 19:58:13 · 423 阅读 · 0 评论 -
【Java】正则表达式(不)包含某个字符串,(不)以某字符串开头
正则表达式如下,下不包含hello为例:^((?!hello).)*$测试一下 public static void main(String[] args) { System.out.println(Pattern.matches("^((?!hello).)*$", "qeqeq")); System.out.println(Pattern...原创 2020-05-29 11:04:28 · 20491 阅读 · 0 评论 -
【Java】Arrays.asList()、Collections不支持添加、删除等操作
问题描述:场景是本意是想将一个字符串分割成数组,然后转成List,于是使用了Arrays.asList()。但是随后的逻辑中,我用到了add()方法,执行后就报错:UnsupportedOperationException。问题原因:查看Arrays.asList()的实现,可以看到它的new ArrayList<>()采用了内部实现,继承了AbstractL...原创 2020-04-10 14:33:03 · 471 阅读 · 0 评论 -
【Java】压缩文件/文件夹成zip
工具类如下:import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;...原创 2020-03-25 19:50:09 · 290 阅读 · 0 评论 -
【Java】锁Lock接口详解
一:java.util.concurrent.locks包下常用的类与接口(lock是jdk 1.5后新增的) (1)Lock和ReadWriteLock是两大锁的根接口,Lock代表实现类是ReentrantLock(可重入锁),ReadWriteLock(读写锁)的代表实现类是ReentrantReadWriteLock。 Lock 接口支持那些语义不同(重入、公平等)的锁...转载 2020-05-20 19:09:22 · 263 阅读 · 0 评论 -
【Java】RestTemplate下载远程文件到本地
一、什么是RestTemplateRestTemplate 是 Spring 框架提供的一个用于访问 REST 服务的组件,底层对 HTTP 请求及响应进行了封装,提供了很多访问远程REST服务的方法,可简化代码开发。二、实例化RestTemplate@Configuration@ComponentScan(basePackageClasses = RecordingConfig....原创 2020-03-12 19:03:25 · 4263 阅读 · 3 评论 -
【Java】线程池的拒绝策略
前言谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当...转载 2020-03-17 19:55:08 · 396 阅读 · 0 评论 -
【Java】设计模式六大原则:开闭原则
目录: 设计模式六大原则:单一职责原则 设计模式六大原则:接口隔离原则 设计模式六大原则:依赖倒置原则 设计模式六大原则:里氏替换原则 设计模式六大原则:迪米特法则 设计模式六大原则:开闭原则开闭原则(Open Close Principle): Software entities (classes, modules, functions, etc...转载 2020-03-05 19:59:50 · 469 阅读 · 0 评论 -
【Java】批量操作优化
批量获取开发中,有时候难免需要用到类似findAll()方法,或者说获取表中所有数据。但是当这个量很大时,一次性从数据库中加载到内存中,明显不理智。这时候可以采用批量取的方式,比如batchSize为500。 /** * 批量获取任务,删除任务 */ private void cleanTask() { List<String&g...原创 2020-02-27 18:52:30 · 1091 阅读 · 0 评论 -
【Java】ReentrantLock(重入锁)功能详解和应用演示
目录1. ReentrantLock简介 2. ReentrantLock和synchronized的相同点 2.1 ReentrantLock是独占锁且可重入的 3. ReentrantLock相比synchronized的额外功能 3.1 ReentrantLock可以实现公平锁。 3.2 .ReentrantLock可响应中断 3.3 获取锁时限时等待 4. 结...转载 2020-02-21 18:01:36 · 207 阅读 · 0 评论 -
【Java】Math.random()
https://blog.csdn.net/sunflower_day/article/details/90691644https://www.jianshu.com/p/79a41b1efb7dhttps://www.cnblogs.com/lxwt/p/7828097.html原创 2020-02-19 20:13:38 · 568 阅读 · 0 评论 -
【Java】list对象按某个Boolean属性排序
对象属性如下,期望结果是:查询出来的列表,active为true的在前,false的在后。实现如下: @Override public List<TaskNotifyPolicy> findByBelongId(String belongId) { List<TaskNotifyPolicy> taskNotifyPolicie...原创 2020-01-16 17:50:44 · 4392 阅读 · 0 评论 -
【Java】WIN解析exe文件
该ExeUtil的主要功能是文件头部获取exe的版本号。import com.google.common.base.Throwables;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.File;import java.io.RandomAccessFile;/** * exe版本...原创 2020-01-02 18:13:25 · 991 阅读 · 0 评论 -
【Java】Guava的EventBus实现PubSub(进程间)
以删除一个项目,将级联删除该项目下所有任务为例。一、事件发布/订阅中心可以看到事件的发布和订阅都采用的是异步的方式。import com.google.common.eventbus.AsyncEventBus;import com.google.common.eventbus.EventBus;import org.springframework.scheduling.conc...原创 2019-12-27 16:28:44 · 437 阅读 · 0 评论 -
【Java】Android解析apk文件中的AndroidManifest.xml
该ApkUtil的主要功能是通过解析AndroidManifest.xml,获取apk的版本号(即versionCode)和名字(versionName)。import android.util.TypedValue;import brut.androlib.res.decoder.AXmlResourceParser;import org.slf4j.Logger;import or...原创 2019-12-19 11:43:01 · 1693 阅读 · 0 评论 -
【Spring】退避抖动算法
指数退避的原理是对于连续错误响应,重试等待间隔越来越长。您应该实施最长延迟间隔和最大重试次数。最长延迟间隔和最大重试次数不一定是固定值,并且应当根据正在执行的操作和其他本地因素(例如网络延迟)进行设置。大多数指数退避算法会利用抖动(随机延迟)来防止连续的冲突。由于在这些情况下您并未尝试避免此类冲突,因此无需使用此随机数字。但是,如果使用并发客户端,抖动可帮助您更快地成功执行请求。至于指...转载 2019-12-13 17:52:47 · 890 阅读 · 0 评论 -
【Java】枚举类
Java 枚举知识点概念enum的全称为 enumeration, 是 JDK 1.5 中引入的新特性。在Java中,被enum关键字修饰的类型就是枚举类型。形式如下:enum Color { RED, GREEN, BLUE }如果枚举不添加任何方法,枚举值默认为从0开始的有序数值。以 Color 枚举类型举例,它的枚举常量依次为RED:0,GREEN:1,...转载 2019-11-29 08:52:54 · 155 阅读 · 0 评论 -
【Java】javax.mail发送邮件
maven依赖 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> ...原创 2019-11-18 16:15:24 · 486 阅读 · 0 评论 -
【Java】锁的分类
在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指...转载 2019-11-01 15:57:19 · 140 阅读 · 0 评论 -
【Java】判断是否是工作日、计算工期(去除周末)
这里主要是通过java util包中的Calendar,来判断是否是工作日、计算工期(去除周末)/** * @ Author:yl1794 * @ Date:2019/10/14 16:03 * @ Description: */public class DateCountUtil { public static final long milliOfDay = 86400...原创 2019-10-29 20:05:50 · 1596 阅读 · 0 评论 -
【Java】IOS解析IPA文件中的plist和embedded.mobileprovision
该IPAUtil主要是两个功能。一是解析plist文件,获取版本号、名字、图标等信息。二是解析embedded.mobileprovision文件,获取证书的过期时间。public class IPAUtil { private static org.slf4j.Logger logger = LoggerFactory.getLogger(IPAUtil.class); ...原创 2019-10-18 16:44:38 · 4303 阅读 · 3 评论 -
【Java】CountDownLatch 相关整理
1. 简介CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程执行完后再执行。 CountDownLatch 在 JDK 1.5 被引入。 存在于 java.util.concurrent 包下。 例如,应用程序的主线程希望在负责启动框架服务的线程已经启动所有框架服务之后执行。 2. CountDownLatch 的原理CountDown...转载 2019-10-16 09:36:21 · 145 阅读 · 0 评论 -
【Spring】一个接口有多个实现类,如何指定一个实现类?@Resource、@Autowired、@Qualifier
如果一个接口有2个不同的实现, 那么怎么来Autowire一个指定的实现?举个例子:1、接口:ILayerpublic Interface ILayer{......}2、实现类:ImageLayerImpl ,实现了ILayer接口。@Service("imageLayerImpl")public class ImageLayerImpl impliment...转载 2019-09-20 17:54:51 · 5746 阅读 · 1 评论 -
【Spring】定时任务@Scheduled之cron表达式详解
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: (1)Seconds Minutes Hours DayofMonth Month DayofWeek Year (2)Seconds Minutes Hours DayofMonth Month DayofWeek 一、结构 corn从左...转载 2019-09-18 16:33:59 · 2413 阅读 · 0 评论 -
【Java】简单记录一下递归的写法
下面提到的CheckList大致是这样一个对象,如下图。有点像是组织架构,或者是有父子关系的树形结构。 /** * 递归:根据父节点id获取该父节点下所有的CheckList,不包括该节点 */ public List<CheckList> getChildByParentId(String parentId, List<CheckLi...原创 2019-09-12 14:53:37 · 463 阅读 · 0 评论 -
【Java】String,StringBuilder,StringBuffer三者的区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可...转载 2019-07-25 19:59:12 · 154 阅读 · 0 评论 -
【Java】list去除相同String、对象元素
一、当相同元素为String时方法一 /** * List去重 */ private List<String> removeDuplicate(List<String> list) { LinkedHashSet<String> set = new LinkedHashSet<String>...原创 2019-07-22 18:11:21 · 744 阅读 · 0 评论 -
【Java】反射机制获取父类在内的所有属性字段
今天由于业务需要,看一段数据库中的表转化成用户可以看懂的数据,也就是把一些字段比如Date用ms存的,转化为'yyyy-MM-dd'这种格式,但是由于字段太多,所以利用Java反射机制自带的BeanUtils相关的方法来进行转化(要求两个类的属性名称相同),当然这个方法只支持基本数据类型,如Long,Integer,String,Short之类的转化,但是像Date类型就需要自己手动判断来转,...转载 2019-07-08 16:53:01 · 2276 阅读 · 0 评论 -
【Java】list按照元素对象的指定多个字段属性进行排序
ListUtils.java---功能类import java.lang.reflect.Field;import java.text.NumberFormat;import java.util.Date;import java.util.List;/** * @ Author:yl1794 * @ Date:2019/7/3 16:51 * * 在数据库中查出来的列表中,...转载 2019-07-05 14:48:50 · 1224 阅读 · 0 评论 -
【Java】SpringBoot中使用ThreadPoolTaskExecutor实现异步多线程
一、配置类@Configurationpublic class TaskConfig { @Bean("taskModuleExecutor") public ThreadPoolTaskExecutor taskExecutor() { ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolT...原创 2019-07-01 17:39:25 · 3606 阅读 · 0 评论 -
【Java】两个list并集、去重并集、交集、差集
List<String> list1 = new ArrayList<String>(); list1.add("A"); list1.add("B"); list1.add("C"); List<String> list2 = new ArrayList<Strin...原创 2019-06-24 17:07:25 · 1876 阅读 · 0 评论 -
【Java】正确循环删除list中的元素
印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个误区。 JAVA中循环遍历list有三种方式for循环、增强for循环(也就是常说的foreach循环)、iterator遍历。1、for循环遍历listfor(int i=0;i<list.size();...转载 2019-06-19 17:38:41 · 1906 阅读 · 0 评论 -
【Java】枚举类enum详解
初识枚举类,我们也许会提出疑问,枚举它是一种新的类型吗?不同于基本数据类型,引用类型??为了更好地理解,我们从反编译一个enum类开始:原java代码import java.util.Arrays; import java.util.List; public enum Weather { Sunny(1, "晴天"), Rainy(2, "...转载 2019-06-13 17:53:42 · 197 阅读 · 0 评论 -
【Java】一分钟理解什么是REST和RESTful
从事web开发工作有一小段时间,REST风格的接口,这样的词汇总是出现在耳边,然后又没有完全的理解,您是不是有和我相同的疑问呢?那我们一起来一探究竟吧!知乎大神Ivony有句话说的好:就是用URL定位资源,用HTTP动词(GET,POST,DELETE,DETC)描述操作。咱们不解释REST是哪几个单词的首字母,说了也不知道,翻译成中文就是表现层状态转移,我是弄不懂。在设计web接...转载 2019-04-09 11:53:37 · 1604 阅读 · 0 评论 -
【Java】遍历Map对象的四种方式
Java中如何遍历Map对象在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)方法一 在for-each循环中使用entries来遍历这是最常见的并且在大多数情况下也是最可取的遍历方式。在...转载 2019-04-01 15:25:01 · 173 阅读 · 0 评论 -
【Java】两个数组的交集、差集、并集
import java.util.ArrayList;import java.util.Arrays;import java.util.HashSet;import java.util.List;import java.util.Set;/** * 用最少循环求两个数组的交集、差集、并集 * */public class Test{ public static v...原创 2019-03-14 19:58:15 · 5830 阅读 · 1 评论 -
【Java】spring中@Qualifier和@Primary注解
1.问题当一个接口有2个不同实现时,使用@Autowired注解时会报org.springframework.beans.factory.NoUniqueBeanDefinitionException异常信息2.方案1-@Qualifier使用Qualifier注解,选择一个对象的名称,通常比较常用3. 方案2-@PrimaryPrimary可以理解为默认优先选择,同时不可以同...转载 2019-01-23 18:11:08 · 992 阅读 · 0 评论 -
【Java】Maven配置私服的方式
众所周知,在使用maven时,在局域网中搭建私服,可以有效的节省互联网的带宽,加快项目的构建速度,因此在开发中,搭建私服得到了广泛的运用。那么如何让自己的项目使用到已经搭建好的私服呢。有三种方式,总结如下。方式一:因为我们的项目默认的情况下是从中央仓库来下载构建,因此我们可以把私服作为中央仓库的镜像。配置方式是在settings.xml中添加如下配置:id标签:当前镜像的id,用为唯一...转载 2019-01-17 19:39:36 · 1083 阅读 · 0 评论 -
【Java】对map集合进行排序
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序。一一、简单介绍Map、简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。...转载 2019-01-15 20:06:21 · 794 阅读 · 0 评论