自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 收藏
  • 关注

原创 文件下载方案

前言目前,大多数系统都是跟文件弱交互,所以对上传下载功能都没有过多的关注。文件上传方案请移步到文件上传方案&RestTemplate全链路流式上传,本章节主要讲的是文件下载方案。下载方案目前小编下载文件主要采取3种方案,分别是应用服务直连对象存储服务器(或者文件服务器)流式下载、通过分享对象存储服务器(或者文件服务器)临时链接进行下载、应用服务重定向到对象存储服务器(或者文件服务器)临时链接进行下载。应用服务直连对象存储服务器(或者文件服务器)流式下载目前网络上流传的大部分都是通过应用服务

2021-07-21 17:29:45 1088

原创 文件上传方案&RestTemplate全链路流式上传

前言目前网络上的所谓流上传的例子,大多数并非真正的流式上传,要不就是用MultipartFile的getInputStream,要不就是用了默认的ByteArrayOutputStream上传方式。前者是占用了磁盘资源,后者实际上用了缓存流,占用了内存资源。假如一个业务应用系统,想通过自己的后端上传,用了这两种方式,无异于让一个业务应用系统不纯粹,还需要考虑文件资源的问题。所以这篇文章介绍目前小编采取的上传方案,以及着重地把restTemplate流式上传说一下。上传方式目前小编上传文件主要采取3种方

2021-07-11 14:46:21 2184

原创 项目管理-GIT FLOW

面向版本迭代稳定的git flow(用于传统瀑布式开发模式)稳定分支:master:主分支,预发布环境develop:集成测试分支非稳定分支:feature:功能开发分支,从develop上拉出分支开发。bugfix:bug修复分支,从生产上拉出分支解决,解决后分别合到master和develop分支上。release:develop拉出的QA测试分支,QA测出的bug可以在这分支上直接修复,处理完后合并回delevop分支。tag:生产分支,从master拉出作为线上发布代码。多版本并行

2021-04-11 22:47:09 220

原创 事务隔离级别&传播行为

事务事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序 执行逻辑单元(Unit)。ACIDACID分别是Atomic(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)。Atomic:在事务内,所有sql要不就一起成功,要不就一起失败,不存在一条成功一条失败。Consistency:事务的一致性是指事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处于一致性状态。也就

2021-01-15 15:03:17 352

原创 Nacos学习四(多环境配置隔离与管理)

多环境配置隔离与管理上篇文章介绍了Nacos学习(三),进行Nacos和SpringCloud结合使用,使用了Nacos的注册中心和配置中心。在实际开发中,我们会有多个环境进行部署,那么我们如何把我们的配置按照环境隔离呢,本章主要介绍的就是通过Nacos来实现多环境配置隔离与管理。那么用Nacos如何实现配置隔离与管理呢?在这之前,需要列举几个概念。Data IDNacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组织划分系统的配置集。一个系统或者应

2021-01-03 22:47:19 2488 1

原创 还不知道springcloud alibaba?我劝各位同学“耗子尾汁”

SpringCloud netflix早期springcloud 微服务体系组件都以springcloud netflix为主,其他开源组件为辅(eureka(或者zookeeper、consul)、feign+ribbon、zuul(或gateway)、hystrix,config做配置中心、spring security(或者shiro) 用zipkin和sleuth做链路监控,stream做消息中间件集成 等等)。 我相信大部分同学开发时候用的微服务框架技术都是SpringCloud netfli

2020-11-30 20:37:50 255

原创 Nacos学习三(整合springcloud注册中心&配置中心)

Nacos使用上篇文章介绍了nacos>>Nacos学习(二)<<,进行Nacos安装,本章一起来使用。本文以整合springcloud为例:项目依赖 <dependencies> <!--nacos注册中心依赖--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter

2020-08-20 22:45:28 1173 1

原创 Nacos学习二(nacos安装)

Nacos 安装上篇文章介绍了nacos>>Nacos学习(一)<<,本章一起来安装使用。预备环境准备Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。64 bit JDK 1.8+;Maven 3.2.x+;安装方式从 Github 上下载源码方式git

2020-08-05 11:17:04 1266

原创 Nacos学习一(什么是nacos)

什么是nacosNacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。Nacos 的关键特性包括:服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理以上数据来源nacos官网为什么要用nacos功能优势Nac

2020-08-04 17:37:03 2362

原创 IDEA Cannot resolve directory '$'{'JAVA_HOME}'

用idea新建一个maven项目,演示hdfs客户端操作。导入依赖之后,发现有一处标红: <dependency> <groupId>jdk.tools</groupId> <artifactId>jdk.tools</artifactId> <versio...

2020-04-09 14:12:06 3461 5

转载 Redis-RDB&AOF

Redis-RDBRDB的优势RDB是可以对redis的数据做一个备份,这个。例如,您可能希望在最近的24小时内每小时存档一次RDB文件,并在30天之内每天保存一次RDB快照。这使您可以在发生灾难时轻松还原数据集的不同版本。RDB对于灾难恢复非常有用,它是一个紧凑的文件,可以传输到远程数据中心或Amazon S3(可能已加密)上。RDB最大限度地提高了Redis的性能,因为Redis父进...

2020-04-04 12:36:46 114

原创 Redis-订阅与发布

Redis-订阅与发布本节讲一下redis的订阅与发布功能,但是不建议使用。毕竟术业有专攻,redis用于数据缓存,订阅发布还是给MQ去做。##SUBSCRIBE订阅命令,可订阅多个主题127.0.0.1:6379> SUBSCRIBE channel-1 channel-2 channel-3Reading messages... (press Ctrl-C to quit)1)...

2020-04-04 10:58:52 159

原创 Redis五种数据类型

Redis五种数据类型String类型String:key-value 相当于Java中的map##set key value [expiration EX seconds|PX milliseconds] [NX|XX]EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key se...

2020-03-31 00:33:31 113

原创 Redis-搭建(单机)

Redis-搭建(单机)从redis官网上下载redis包官网地址:https://redis.io/首页中下方有下载连接,下载稳定版本把redis包上传到服务器上解压redis包tar -zxvf redis-5.0.8.tar.gz在安装redis前需要安装gcc-c++yum install -y gcc-c++安装完毕后进入redis目录进行安装cd redis...

2020-03-29 00:22:21 141

原创 Nginx-学习三

Nginx负载均衡轮询(默认)上游服务器按顺序分配请求,当上游服务器中其中一台宕机,nginx会自动剔除。#配置上游服务器upstream tomcats { server 192.168.14.166:8088; server 192.168.14.166:8089; server 192.168.14.166:8090;}server { ...

2020-02-10 11:13:08 128

原创 Nginx-学习二

nginx conf配置解析#默认 worker进程是由nobody用户启动user root;#worker数量,默认一个,与cpu对应上,假如服务器上只有nginx中间件,则cpu有多少个就可以配置多少个workerworker_processes 2;#默认日志,nginx日志级别有如下:debug info notice warn error crit#error_log...

2020-02-10 10:31:55 102

原创 Nginx-学习一

什么是NginxNginx是一个http服务器。是一个使用c语言开发的高性能的http服务器及反向代理服务器。Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。为什么使用Nginx1、nginx用作...

2020-02-10 10:07:51 1131

原创 正向代理与反向代理

什么是正向代理在日常生活中,我们是无法直接访问谷歌的。但是我们可以在国外选购一台服务器做代理,代理你的请求然后把数据返回给我们,就可以看到请求的内容了。举一个通俗的例子,商人A找商人B借钱,可是商人B不认识商人A,自然而然商人A借不了钱,不过商人C和商人B是好哥们,商人A也跟商人C关系好,所以商人A就委托商人C向商人B借钱。此时,商人B不知道钱是商人A借的,只知道自己把钱借给了商人C。(商人C...

2020-02-10 09:21:43 119

原创 SpringMvc 自定义日志拦截器打jar包

SpringMvc 自定义日志拦截器打jar包可以实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter,里面有三个方法preHandle、postHandle、afterCompletion。拦截器例子:public class ExLogInterceptor implements HandlerInterceptor { private...

2019-02-01 14:47:27 1201

原创 redis cluster的介绍及搭建

redis cluster的介绍及搭建Redis Cluster准备6台机器,安装redis(3master,3slave)192.168.0.116:7001192.168.0.117:7002192.168.0.118:7003192.168.0.119:7004192.168.0.120:7005192.168.0.121:7006修改confcluster-enabl...

2019-02-01 14:46:48 157

原创 Spring整合Jedis

Spring整合Jedispom文件添加依赖 &lt;dependency&gt; &lt;groupId&gt;redis.clients&lt;/groupId&gt; &lt;artifactId&gt;jedis&lt;/artifactId&gt; &lt;/dependency&gt;spring文件添加配置(包括单机版和集群版,按照...

2019-02-01 11:32:47 702

原创 Http请求工具类

Http请求工具类public class HttpClientUtil { public static String doGet(String url, Map&lt;String, String&gt; param) { // 创建Httpclient对象 CloseableHttpClient httpclient = HttpClients.c...

2019-02-01 11:32:00 178

原创 CountDownLatch

CountDownLatch最近在看zookeeper的时候看到了zookeeper在连接实例化的时候需要等zookeeper准备就绪后再继续执行(实现方式是使用CountDownLatch,因此对CountDownLatch总结一下)。//zookeeper connectpublic class ConnectionWatch implements Watcher { priva...

2019-02-01 11:31:16 246

原创 外键关联的优缺点

外键关联的优缺点优点:保持数据一致性(保证数据的引用完整性),子表有主表的外键数据,那么删除表A就会失败。缺点:更新子表或者删除子表数据都会去主表判断一下,这是个隐式操作,拖累系统,性能很差。...

2019-01-04 07:56:42 1547

原创 Jedis使用

Jedis使用POM&lt;dependency&gt; &lt;groupId&gt;redis.clients&lt;/groupId&gt; &lt;artifactId&gt;jedis&lt;/artifactId&gt;&lt;/dependency&gt;单机版/** * 单机版 */@Testpublic void testJed...

2019-01-04 07:55:59 181

原创 redis cluster的介绍及搭建

redis cluster的介绍及搭建Redis Cluster准备6台机器,安装redis(3master,3slave)192.168.0.116:7001192.168.0.117:7002192.168.0.118:7003192.168.0.119:7004192.168.0.120:7005192.168.0.121:7006修改confcluster-enabl...

2019-01-03 13:38:40 171

原创 Redis安装&基本命令&5种类型

Redis安装首先获取redis资源//xxx为版本号wget http://download.redis.io/releases/redis-xxxx.tar.gz(或者自己先把redis包下载下来,再上传到linux)解压tar -zxvf redis-xxxx.tar.gz安装cd redis-xxxxmakemake install PREFIX=/usr/loc...

2019-01-03 13:37:59 138

原创 java7新特性

java7新特性switch中使用Stringtry-with-resources捕捉多个异常泛型实例化类型自动推断增加二进制表示数字中可添加分隔符switch中使用String/** * 在java7以前,switch只能用于byte,char,int类型,java7开始就有可以用于string类型 */public class Switch { public ...

2019-01-03 13:36:14 137

原创 zookeeper学习

先给一堆学习文档,方便以后查看学习文档http://www.cnblogs.com/sunddenly/category/620563.htmlzookeeper集群windows安装首先下载zookeeper解压zookeeper包(复制两份)进去zookeeper的conf目录下把zoo_sample.cfg复制一份zoo.cfg修改zoo.cfg(伪集群,在一台机器上开3个端...

2019-01-03 13:35:35 134

原创 微信内置浏览器window.opener不能使用

微信内置浏览器window.opener不能使用经测试,在微信内置浏览器不存在window.opener,window.opene()可以使用,但是作用为跳转新页面,window.close()不可使用。解决方案:1.使用遮罩层 2.通过跳转,参数传递jq跳转导致wx获取api异常在微信获取地理位置时,本来获取好好的,在一个页面跳转后发现获取不了地理位置,返回信息:getLocation:...

2019-01-03 11:44:28 8281

原创 微信服务号获取地理位置

微信服务号获取地理位置首先引入以下script&lt;script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"&gt;&lt;/script&gt;//https调用百度api&lt;script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&am...

2019-01-03 11:43:44 1146

原创 oracle多行转单行多列

oracle多行转单行多列(列数需要固定)需求:从A转成BA:B:需要用到以下函数:wm_concat(多行转成一列)、case when then else end、regexp_substrsql如下: SELECT material_code, store_id, case ...

2018-11-21 09:45:09 9190

原创 idea聚合工程无法使用junit

idea聚合工程无法使用junitMaven聚合项目module中Module A 存在junit,module B依赖Module A,发现无法依赖Moudule A中的junit。如下图:MoudleAMoudleB经过参考一些Maven的资料得知,其工作机制实际上是包的依赖管理。在规定的标准目录下,能够在模块之间引用的代码只能存在于main目录下。而单元测试(test目录下的代...

2018-11-20 20:26:55 442

原创 Timer

TimerTimer类主要负责计划任务的功能,也就是在指定的时间开始某一个任务。Timer类主要作用就是设置计划任务,但封装任务的类确实TimerTask类。(TimerTask是一个抽象类,所以执行计划任务的代码要放进去TimerTask的子类中)schedule(TimerTask task,Date time)该方法的作用是在指定的日期执行一次某一任务。执行任务的时间晚于当前时间:...

2018-10-28 20:00:15 123

原创 ReentrantReadWriteLock

ReentrantReadWriteLockReentrantLock具有互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务。(这种做法虽然保证了变量的线程安全性,但效率非常低下)ReentrantReadWriteLock也叫读写锁,一个是读操作相关的锁,也称为共享锁;另一个是写操作相关的锁,也叫排他锁。(多个读锁之间不互斥,读锁与写锁互斥,写...

2018-10-28 19:59:46 105

原创 ReentrantLock

ReentrantLock在JDK5.0版本之前,重入锁的性能远远好于synchronized关键字,JDK6.0版本之后synchronized 得到了大量的优化,二者性能也不分伯仲,但是重入锁是可以完全替代synchronized关键字的。ReentrantLock在扩展功能上更加强大,比如具有嗅探锁定、多路分支通知等,并且在使用上也比synchronized灵活(另外可以结合Co...

2018-10-28 19:59:16 130

原创 可重入锁

可重入锁什么是可重入锁在我刚刚接触的时候,很多书上,博客上都会看到可重入锁这个东东,恕小弟愚昧,一开始对着可重入锁并不知道到底是什么,然后就查查资料,查漏补缺。可重入锁:可重复可递归调用的锁。(ps:也就是说在外层使用锁之后,在内层也可以使用外层的锁,并且不会发生死锁)ReentrantLock和synchronized都是可重入锁重入锁例子:methodA首先拿到Test的锁,再执行me...

2018-10-28 19:58:29 492

原创 ThreadLocal

ThreadLocal变量值的共享可以使用public static变量的形式,所有线程都使用同一个public static变量。假如想每个线程都有自己的共享变量,那么就使用ThreadLocal,ThreadLocal主要解决的就是每个线程绑定自己的值,可以将ThreadLocal类比喻成全局存放数据的盒子,盒子中可以存储每个线程的私有数据。如下面例子,可以直接copy去执行/** *...

2018-10-25 22:29:35 105

原创 守护线程

守护线程java线程分为两种:守护线程和用户线程守护线程:是指在程序运行的时候在后台提供一种通用服务的线程,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程(例如:垃圾回收线程)。PS:只要任何非守护线程还在运行,程序就不会终止。守护线程和用户线程的没啥本质的区别:唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了...

2018-10-25 22:29:09 117

原创 web.xml配置加载顺序

web.xml配置加载顺序以Tomcat举例,启动Tomcat之后,首先会加载web.xml文件:容器首先读取web.xml中的的配置内容和标签中配置项;紧接着实例化ServletContext对象,并将配置的内容转化为键值传递给ServletContext;创建配置的监听器的类实例,并且启动监听;随后调用listener的contextInitialized(ServletConte...

2018-10-25 22:28:47 582

空空如也

空空如也

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

TA关注的人

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