自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr_EvanChen的Blog

点滴积累,贵在坚持!

  • 博客(261)
  • 收藏
  • 关注

原创 【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

转载 【Linux】TIME_WAIT的作用、影响、解决方法

一、TCP四次挥手①第一次:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;②第二次:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;.

2020-07-06 17:23:35 2628

转载 【SpringCloud】application.yml和 bootstrap.yml 区别

1.首先yml和properties文件都是属于配置文件,功能一样。主要是区别于application和bootstrap的加载顺序。Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像application.yml一样,但是用于应用程序上下文的引导阶段。2.典型场景1...

2020-06-28 17:14:31 742 1

原创 【Consul】ConsulClient获取服务,注册服务

package com.yealink.phonebook.service;import com.ecwid.consul.v1.ConsulClient;import com.ecwid.consul.v1.Response;import com.ecwid.consul.v1.agent.model.NewService;import com.ecwid.consul.v1.health.model.HealthService;import com.yealink.microserv...

2020-06-24 10:09:36 2946 2

转载 【Java】垃圾回收机制

什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。与C/C++相比,java语言不需要程序员直接控制内存回收,java程序的内存分配和回收都是由JRE在后台自动进行,JRE会负责回收那些不再使用的内存,这种机制被称为垃圾回收机制(Garba...

2020-06-11 19:58:13 423

转载 【SpringBoot】配置静态资源

SpringBoot中有两项静态资源配置项:1、spring.mvc.static-path-pattern2、spring.resources.static-locations配置出差错时,导致404错误,找不到静态资源;1、 spring.mvc.static-path-pattern它代表的是应该以什么样的路径来访问静态资源,也就是只有静态资源满足什么样的匹配条件,Spri...

2020-06-08 16:02:26 1135

原创 【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 20490

转载 【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

转载 【IDEA】强制更新Maven依赖包

在idea开发的过程中,我们的依赖包可能会多次更新,特别是使用snapshot的时候,pom依赖未改变,此时本地有缓存不一定能迅速更新,想要更新最新依赖有以下两种方法:(1)reimport右击项目名->maven->reimportreimport有时候并不能达到最新版本的效果(2)查找本地缓存,删除后再reimport2.1 方法一:查看本地仓库目录...

2020-05-15 16:42:51 3939

原创 【Consul】postman注册、注销服务

通过postman注册、注销服务。

2020-05-07 11:35:40 1998

转载 【Redis】SpringBoot整合Redis

1.在springboot项目的pom.xml文件里加入redis的jar依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> ...

2020-04-24 17:58:51 208

转载 【Redis】缓存击穿、缓存穿透、缓存雪崩

一、缓存穿透1、概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,也就是缓存没有命中,于是向持久层数据库查询。发现也没有,于是本次查询失败。当用户很多的时候,缓存都没有命中,于是都去请求了持久层数据库。这会给持久层数据库造成很大的压力,这时候就相当于出现了缓存穿透。这里需要注意和缓存击穿的区别,缓存击穿,是指一个key非常热点,在不停的扛着大并发,大并发集中...

2020-04-15 21:48:51 222

原创 【Java】Arrays.asList()、Collections不支持添加、删除等操作

问题描述:场景是本意是想将一个字符串分割成数组,然后转成List,于是使用了Arrays.asList()。但是随后的逻辑中,我用到了add()方法,执行后就报错:UnsupportedOperationException。问题原因:查看Arrays.asList()的实现,可以看到它的new ArrayList<>()采用了内部实现,继承了AbstractL...

2020-04-10 14:33:03 471

转载 分布式和集群的区别

下面就正经解释下三种结构的区别吧~单机结构我想大家最最最熟悉的就是单机结构,一个系统业务量很小的时候所有的代码都放在一个项目中就好了,然后这个项目部署在一台服务器上就好了。整个项目所有的服务都由这台服务器提供。这就是单机结构。那么,单机结构有啥缺点呢?我想缺点是显而易见的,单机的处理能力毕竟是有限的,当你的业务增长到一定程度的时候,单机的硬件资源将无法满足你的业务需求。此时便...

2020-04-07 19:00:17 218

转载 【Redis】主从复制和哨兵(Sentinel)

一、Redis主从复制主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性1. 主从复制的相关操作a,配置主从复制方式一、新增redis6380.conf, 加入 slaveof 192.168.152.1286379, 在6379启动完后再启6380,完成配置;b,配置主从复制方式二、redis-server --slaveof 192.16...

2020-04-03 16:31:43 265

原创 【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

转载 【Mybatis】缓存机制:一级缓存和二级缓存的区别

(镶嵌点:)Sqlsession(接口)的底层是hashmap存储,线程不安全,sqlsessionTemplate是其实现类线程安全的区别:一级缓存的作用域是一个sqlsession内;二级缓存作用域是针对mapper进行缓存.一级缓存:1、第一次发起查询用户id为1的用户信息,先去找缓存中是否有id为1的用户信息,如果没有,从数据库查询用户信息。得到用户信息,将用户信息存储到一级缓...

2020-03-21 10:32:01 656

转载 【Java】线程池的拒绝策略

前言谈到java的线程池最熟悉的莫过于ExecutorService接口了,jdk1.5新增的java.util.concurrent包下的这个api,大大的简化了多线程代码的开发。而不论你用FixedThreadPool还是CachedThreadPool其背后实现都是ThreadPoolExecutor。ThreadPoolExecutor是一个典型的缓存池化设计的产物,因为池子有大小,当...

2020-03-17 19:55:08 396

原创 【Java】RestTemplate下载远程文件到本地

一、什么是RestTemplateRestTemplate 是 Spring 框架提供的一个用于访问 REST 服务的组件,底层对 HTTP 请求及响应进行了封装,提供了很多访问远程REST服务的方法,可简化代码开发。二、实例化RestTemplate@Configuration@ComponentScan(basePackageClasses = RecordingConfig....

2020-03-12 19:03:25 4263 3

转载 MyBatis

本文选自知乎上一个回答,觉得作者的思想以及做图都挺好的,故特意摘抄出来,并进行了一些整理。一、如何学习框架学习框架时,心里至少要带着下面的疑问:这个框架是负责哪一块的,用在哪一层? 没有它之前,前辈们如何解决,有什么缺点? 它的出现解决了哪些痛点? 它是否也有什么缺点?二、Mybatis框架按照答题的形式,通过逐一解答上面的提问来理解MyBatis:MyBa...

2020-03-09 18:47:23 224

转载 【Java】设计模式六大原则:开闭原则

目录:  设计模式六大原则:单一职责原则  设计模式六大原则:接口隔离原则  设计模式六大原则:依赖倒置原则  设计模式六大原则:里氏替换原则  设计模式六大原则:迪米特法则  设计模式六大原则:开闭原则开闭原则(Open Close Principle):  Software entities (classes, modules, functions, etc...

2020-03-05 19:59:50 469

原创 【Java】批量操作优化

批量获取开发中,有时候难免需要用到类似findAll()方法,或者说获取表中所有数据。但是当这个量很大时,一次性从数据库中加载到内存中,明显不理智。这时候可以采用批量取的方式,比如batchSize为500。 /** * 批量获取任务,删除任务 */ private void cleanTask() { List<String&g...

2020-02-27 18:52:30 1090

转载 【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

原创 【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

转载 【Redis】持久化机制:RDB和AOF

什么是Redis持久化?Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示:这样做有什么问题呢?其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数...

2020-01-20 14:39:36 164

原创 【Java】list对象按某个Boolean属性排序

对象属性如下,期望结果是:查询出来的列表,active为true的在前,false的在后。实现如下: @Override public List<TaskNotifyPolicy> findByBelongId(String belongId) { List<TaskNotifyPolicy> taskNotifyPolicie...

2020-01-16 17:50:44 4392

转载 【Redis】分布式锁的正确实现方式

分布式锁一般有三种实现方式:1、数据库乐观锁;2、基于Redis的分布式锁;3、基于ZooKeeper的分布式锁。本文将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实...

2020-01-10 15:49:32 186

转载 【Spring】定时任务@Scheduled之单线程多线程问题

SpringBoot使用@scheduled定时执行任务的时候是在一个单线程中,如果有多个任务,其中一个任务执行时间过长,则有可能会导致其他后续任务被阻塞直到该任务执行完成。也就是会造成一些任务无法定时执行的错觉。可以通过如下代码进行测试: @Scheduled(cron = "0/1 * * * * ? ") public void deleteFile() throws...

2020-01-08 08:41:11 14021 4

原创 【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

原创 【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

转载 【Git】reset、revert

使用 Git 工作时其中一个鲜为人知(和没有意识到)的方面就是,如何轻松地返回到你以前的位置 —— 也就是说,在仓库中如何很容易地去撤销那怕是重大的变更。在本文中,我们将带你了解如何去重置、恢复和完全回到以前的状态,做到这些只需要几个简单而优雅的 Git 命令。重置我们从 Git 的reset命令开始。确实,你应该能够认为它就是一个 “回滚” —— 它将你本地环境返回到之前的提交。这里...

2019-12-23 17:57:31 388

原创 【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

转载 【Spring】退避抖动算法

指数退避的原理是对于连续错误响应,重试等待间隔越来越长。您应该实施最长延迟间隔和最大重试次数。最长延迟间隔和最大重试次数不一定是固定值,并且应当根据正在执行的操作和其他本地因素(例如网络延迟)进行设置。大多数指数退避算法会利用抖动(随机延迟)来防止连续的冲突。由于在这些情况下您并未尝试避免此类冲突,因此无需使用此随机数字。但是,如果使用并发客户端,抖动可帮助您更快地成功执行请求。至于指...

2019-12-13 17:52:47 890

转载 浏览器 user-agent 字符串的故事

你是否好奇标识浏览器身份的User-Agent,为什么每个浏览器都有Mozilla字样?故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。...

2019-12-11 14:56:33 212

原创 【JavaScript】Safari无法响应点击事件

场景:在IOS移动端扫描某个应用的二维码会跳转至一个该应用的下载页,点击下载按钮后下载该应用。但是会出现有些IOS手机点击下载按钮没有反应的问题。起初有怀疑是不是操作系统的原因,但经过测试发现同样是IOS 13.1.3的操作系统,有的可以有的不行。因此就怀疑是不是Safari对html或者js有兼容性问题。网上简单查了一下,发现确实有人谈到类似的问题,说是Safari的安全机制将其阻止,没...

2019-12-06 16:11:51 1011

转载 【Nginx】配置返回文本或json

有些时候请求某些接口的时候需要返回指定的文本字符串或者json字符串,如果逻辑非常简单或者干脆是固定的字符串,那么可以使用nginx快速实现,这样就不用编写程序响应请求了,可以减少服务器资源占用并且响应性能非常快  先看返回固定的文本和json,都是在server中配置location拦截即可,配置示例如下:  固定文本:location ~ ^/get_text { def...

2019-12-03 17:50:47 1774

转载 【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

原创 【Html】mailto调用当前系统默认的邮件客户端

mailto:可以自动调用当前系统默认的邮件客户端,并自动填充收件人、抄送人、密送人、主题、内容。参数说明:mailto: 收件人,多个以;分隔cc: 抄送人,多个以;分隔bcc: 密送人,多个以;分隔subject: 主题body: 内容各参数间用&连接即可。例如在浏览器中直接输入:mailto:aa...

2019-11-22 17:10:23 2552

原创 【Java】javax.mail发送邮件

maven依赖 <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> ...

2019-11-18 16:15:24 486

转载 【Java】统计一个字符串中,指定字符串出现的次数

import java.util.Scanner;/** * 编写一个方法,输出在一个字符串中,指定字符串出现的次数 提示: 方法一:使用indexOf和subString方法,循环判断并截取 方法二:使用replace方法将字符串替换为空,然后求长度 * @author 万星明 * @version 1.0 * @time */public class Work4 {...

2019-11-13 17:52:37 3944

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除