
微服务
jacljh
程序匠人
展开
-
@value 注解配置默认值
@Value在注解模式下读取配置文件注入属性值代码如下: @Value("${name}") private String name;但是,如果配置文件中没有设置 name的值, spring在启动的时候会报错。这时需要给name配置默认值,代码如下: @Value("${name:bob}") private String name;除了String类型外,其他类型也可如上配置 @Value("${age:250}") priv...转载 2020-06-21 00:16:27 · 1771 阅读 · 0 评论 -
Redis系列十:Pipeline详解
一、pipeline出现的背景:redis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果1这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题二、pepeline的...转载 2020-04-28 22:47:14 · 465 阅读 · 0 评论 -
Redis 管道pipeline
Redis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client。基本的通信过程如下:./bin/redis-cli -h 192.168.36.189 -p 637...转载 2020-04-28 22:42:16 · 292 阅读 · 0 评论 -
SpringBoot使用@Value给静态变量注入值
SpringBoot中使用@Value()只能给普通变量注入值,不能直接给静态变量赋值例如,application-dev.properties 配置文件有如下配置:给普通变量赋值时,直接在变量声明之上添加@Value()注解即可,如下所示:当要给静态变量注入值的时候,若是在静态变量声明之上直接添加@Value()注解是无效的,例如:虽然没有编译和运行上的报...转载 2019-10-29 15:05:19 · 629 阅读 · 0 评论 -
sql语句查询表字段对应类型,注释,查询数据库所有表名和表注释
desc MSTB_KEY ; (MSTB_KEY为数据库表名) —— mysql与oracle数据库通用mysql数据库查询字段名,注释,字段类型select column_name,column_comment,data_type from information_schema.columns where table_name='TSTB_ALLOCATION_CLAW_BA...原创 2019-07-04 21:41:13 · 2852 阅读 · 0 评论 -
Fastjson详细使用手册
阿里巴巴的FastJson使用介绍:https://www.w3cschool.cn/fastjson/fastjson-quickstart.htmljson字符串转化JavaBean有时候我们得到一个json字符串,但是如果比较复杂,会不知道怎么写成Bean,这时可以使用一些软件工具,或者使用在线的转换网址:http://www.bejson.com/json2javapo...原创 2019-07-06 15:02:33 · 2193 阅读 · 0 评论 -
Spring的@ExceptionHandler和@ControllerAdvice统一处理异常
之前敲代码的时候,避免不了各种try..catch, 如果业务复杂一点, 就会发现全都是try…catchtry{ ..........}catch(Exception1 e){ ..........}catch(Exception2 e){ ...........}catch(Exception3 e){ ...........}这样其实代码既不简洁...转载 2019-07-10 11:09:28 · 156 阅读 · 0 评论 -
可扩展性设计(二)
1.1 如何扩展数据库前面我们讲到了数据库扩展的一个大致流程,下面我们详细讲解每种扩展方案。1.1.1 X轴扩展—主从复制集群假设我们的service访问数据库的吞吐量在4500TPS,其中写为500TPS,这种典型的读多写少的场景,我们通常会采用读写分离,如图5-1所示,将所有的读请求分发到Slave上,Master只负责写,Master和Slave之间通过数据库自带同步机制复制数据...原创 2019-06-18 23:46:53 · 2482 阅读 · 0 评论 -
可扩展性设计(一)相关概念
我们也可以把加机器得到的性能提升叫做横向扩展。横向扩展(scale out)也叫水平扩展,指用更多的节点支撑更大量的请求。例如1台机器支撑10000TPS,两台机器是否能支撑20000TPS?纵向扩展(scale up)也叫垂直扩展,扩展一个点的能力支撑更大的请求。通常通过提升硬件实现,例如把磁盘升级为SSD。横向扩展通常是为了提升吞吐量,响应时间一般要求不受吞吐量影响即可。因为本身在...原创 2019-06-18 21:46:12 · 5397 阅读 · 0 评论 -
为什么微服务一定要有网关?
一、什么是服务网关服务网关 = 路由转发 + 过滤器1、路由转发:接收一切外界请求,转发到后端的微服务上去;2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。二、为什么需要服务网关上述所说的横切功能(以权限校验为例)可以写在三个位置: 每个服务自己实现一遍...转载 2019-06-29 23:48:46 · 326 阅读 · 0 评论 -
微服务——API网关
API网关:API Gateway 是一个服务器,也可以说是进入系统的唯一节点(Gateway可做负载均衡)。这跟面向对象设计模式中的Facade 模式很像。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。它还可能有其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。下图展示了一个适应当前架构的 API Gateway。API G...原创 2019-06-29 19:42:00 · 408 阅读 · 0 评论 -
SpringBoot 项目异常设计
1、一个全局异常类:package com.amc.act.exception;import java.util.ArrayList;import java.util.List;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annota...原创 2019-07-11 23:50:01 · 359 阅读 · 0 评论 -
Spring Cloud微服务如何设计异常处理机制?
导读今天和大家聊一下在采用SpringCloud进行微服务架构设计时,微服务之间调用时异常处理机制应该如何设计的问题。我们知道在进行微服务架构设计时,一个微服务一般来说不可避免地会同时面向内部和外部提供相应的功能服务接口。面向外部提供的服务接口,会通过服务网关(如使用Zuul提供的apiGateway)面向公网提供服务,如给App客户端提供的用户登陆、注册等服务接口。而面向内...转载 2019-07-12 11:27:05 · 267 阅读 · 0 评论 -
git Merge(合并),Switch(切换分支) 代码时的'git did not exit cleanly (exit code 1)'问题解决
将冲突的文件剪切出来,再进行Merge原创 2019-07-24 11:00:54 · 769 阅读 · 0 评论 -
Java学习网站
Java知音:https://www.javazhiyin.com/原创 2019-07-20 12:10:26 · 196 阅读 · 0 评论 -
git小乌龟工具TortoiseGit记住账号密码
怎么设置记住密码:在[系统盘]:\Users\ [你的用户名] (例如: C:\User\Administrator 里面的.gitconfig)下面,有一个.gitconfig文件,这个是记录你的git配置信息的。在该文件后面加上[credential] helper = store设置完后,输入一次密码就不会再要求输入。但是会生成一个.git-credentia...原创 2019-08-02 23:53:54 · 553 阅读 · 0 评论 -
eclipse 记住Git账号时 git' to secure store No password provided. 问题解决
1、按照图片操作 delete掉2、重启eclipse3、再次进行提交操作 输入git用户名密码即可原创 2019-09-19 15:04:02 · 1854 阅读 · 0 评论 -
阿里云 -- 应用配置管理(ACM) 详细使用文档
阿里云--应用配置管理 ACM :https://help.aliyun.com/product/59604.html?spm=a2c4g.11186623.6.540.40874cfcCJqIn7 (文档首页)原创 2019-05-26 00:03:58 · 1747 阅读 · 0 评论 -
将Spring Cloud应用托管到EDAS (阿里云)
一. 企业级分布式应用服务 EDAS EDAS详细文档 :https://help.aliyun.com/product/29500.html?spm=a2c4g.11186623.6.540.53aa183aDL2u0H注: ACM与NDAS关联:参考ACM版本说明部分 :https://help.aliyun.com/document_detail/66483....原创 2019-05-29 00:17:32 · 826 阅读 · 0 评论 -
SpringBoot+MyBatis+MySQL读写分离
1. 引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP然...转载 2019-06-02 12:07:44 · 142 阅读 · 0 评论 -
API 网关从入门到放弃
前言假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。那么这里就会遇到一个问题,APP/Browser怎么去访问这些后端的服务? 如果业务比较简单的话,可以给每个业务都分配一个独立的域名(https://service.api.company.com),但这种方式会有几个问题: 每个业务都会需要鉴权、限流、权限校验等逻辑,如果每个业...原创 2019-07-13 16:51:29 · 148 阅读 · 0 评论 -
跨域与跨域访问
什么是跨域跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。跨域的严格一点的定义是:只要协议,域名,端口有任何一个的不同,就被当作是跨域为什么浏览器要限制跨域访问呢?原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。比如下面的操作就有安全问...转载 2018-11-05 21:21:58 · 172 阅读 · 0 评论 -
最实用的10个重构小技巧排行榜
LZ最近一直在研究虚拟机源码,可惜目前还只是稍微有一点点头绪,无法与各位分享,庞大的JAVA虚拟机源码果然不是一朝一夕能搞定的,LZ汗颜。 本次我们抛开JAVA虚拟机源码这些相对底层的东西,LZ来与各位探讨一下几个代码重构的小技巧,这些内容部分来自于书籍当中,部分来自于LZ维护项目当中的一些实践经验。如果猿友们曾经用过这种手法,也不妨参与到文章的留言当中,将你的小心得、...转载 2018-11-13 21:35:56 · 178 阅读 · 0 评论 -
Spring Cloud底层原理
概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入手,来剖析...原创 2018-11-10 23:12:14 · 313 阅读 · 0 评论 -
Git 常用命令
1、初始化仓库gitinit2、将文件添加到仓库gitadd文件名#将工作区的某个文件添加到暂存区gitadd-u#添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件gitadd-A#添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件gitadd.#将当前...原创 2018-11-16 23:53:29 · 151 阅读 · 0 评论 -
Spring Boot单元测试&网络请求
实际开发中,Junit单元测试是必不可少的。在spring-boot 中可以通过测试模块(spring-boot-starter-test)快速使用单元测试功能。开始本示例在 spring boot 1.5.4 版本测试通过1、pom.xml中添加配置spring-boot-starter-test<dependency> <groupId>o...转载 2018-11-15 20:28:39 · 314 阅读 · 0 评论 -
微服务设计
一、微服务概念微服务体系结构由轻量级、松散耦合的服务集合组成。每个服务都实现了单个业务功能。理想情况下,这些服务应该是具有足够的内聚性,可以独立地开发、测试、发布、部署、扩展、集成和维护。正式定义“微服务架构风格是一种将单个应用程序开发为一组小型服务的方法,每个小服务运行在自己的进程中,并且以轻量级机制(通常是HTTP REST API)通信。这些服务是围绕...转载 2018-11-20 10:35:40 · 285 阅读 · 0 评论 -
Git 实现原理
0、导读本文适合对git有过接触,但知其然不知其所以然的小伙伴,也适合想要学习git的初学者,通过这篇文章,能让大家对git有豁然开朗的感觉。在写作过程中,我力求通俗易懂,深入浅出,不堆砌概念。你能够从本文中了解以下知识: Git是什么 Git能够解决哪些问题 Git的实现原理 请注意,本文的阐述逻辑是:Git是什么——>Git要解决的根本问题是什么——&...转载 2018-11-19 21:01:50 · 324 阅读 · 0 评论 -
在Java开发做了10年后,推荐此框架,颠覆Java应用
为什么说Spring Boot是颠覆性的呢?因为它彻底改变了Java应用开发的模式。Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development...转载 2018-12-31 21:19:49 · 369 阅读 · 1 评论 -
在Windows上搭建Git Server
Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用。那么私有项目,如何用Git进行代码版本控制呢?我们可以自己构建Git服务器。一般来说,在Linux上搭建Git的教程比较多,但是如何在Windows Server平台下搭建Git服务器呢?对于很多.NET用户来说,代码编写的工具是Visu...转载 2019-02-28 00:35:17 · 207 阅读 · 0 评论 -
eclipse中git从远程clone项目报错:cannot open git-upload-pack
当你eclipse中import一个git项目,远程clone时:输入地址发现提示下面这个错误时:因为通过https访问Git远程仓库,如果服务器的SSL证书没有经过第三方机构签署,就会出现cannot open git-upload-pack这个问题解决方法:Window >Preferences >Team>Git>User settings点击A...转载 2019-02-25 23:50:50 · 681 阅读 · 0 评论 -
Java多线程17:中断机制
概述之前讲解Thread类中方法的时候,interrupt()、interrupted()、isInterrupted()三个方法没有讲得很清楚,只是提了一下。现在把这三个方法同一放到这里来讲,因为这三个方法都涉及到多线程的一个知识点----中断机制。Java没有提供一种安全、直接的方法来停止某个线程,而是提供了中断机制。中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而...转载 2019-02-21 21:57:00 · 174 阅读 · 0 评论 -
Spring Boot 项目控制台打印SQL配置
################### mybatis configmybatis.config-locations=classpath:mybatis/mybatis-config.xmllogging.level.com.wam.loc.mapper=DEBUG原创 2019-04-24 22:41:13 · 869 阅读 · 0 评论 -
SpringBoot项目 四种读取properties文件的方式
前言在项目开发中经常会用到配置文件,配置文件的存在解决了很大一份重复的工作。今天就分享四种在Springboot中获取配置文件的方式。注:前三种测试配置文件为springboot默认的application.properties文件#######################方式一#########################com.zyd.type3=Springboot ...转载 2019-03-27 19:20:16 · 1637 阅读 · 0 评论 -
Eclipse的egit插件冲突合并方法
Eclipse有一个git的插件叫EGit,用于实现本地代码和远程代码对比、合并以及提交。但是在本地代码和远程代码有冲突的时候,EGit的处理方案还是有点复杂。今天就彻底把这些步骤给理清楚,并公开让一些类似我这样的初学者有个指引,如有不当,请多指正。这里我通过OSC的git做了一个测试的项目,我先把项目导下来,然后把OSC上的项目做一些修改,同时修改已经导下来的项目。Step 1通过在E...转载 2019-03-25 20:02:32 · 298 阅读 · 0 评论 -
@ConfigurationProperties(prefix = "jobTe") 注解使用错误
报错信息:Configuration property name 'jobTe' is not valid: Invalid characters: 'T' Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters and must star...原创 2019-03-25 19:40:33 · 3012 阅读 · 0 评论 -
如何给微服务架构的项目做验收测试?
在验收测试阶段,基于微服务架构的应用相对于单体架构的应用而言,具有以下挑战: 复数的服务增加了测试环境搭建的难度 各种异常情况的模拟变得困难,基于Mock的测试方式无法对整个调用链路作异常模拟,进而使得对整体架构的健壮性测试变得困难 基于成本和效率的原因,测试工作已经不适合通过人工完成 我们认为对基于微服务架构的应用,其验收测试应该具有以下特征: 自动化...转载 2019-07-13 16:36:05 · 328 阅读 · 0 评论