首页 文章 精选 留言 我的

精选列表

搜索[c语言压缩库],共10000篇文章
优秀的个人博客,低调大师

java B2B2C电子商务平台分析之十六----Zuul的容错回退与高可用

zuul的容错与回退之前说到过,使用Hystrix实现微服务的容错与回退,其实Zuul默认已经整合了Hystrix,使用起来也是比较简单: 在原有zuul-gateway 项目的基础上新增,实现ZuulFallbackProvider接口,并实现getRoute和fallbackResponse方法。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 import com.google.gson.Gson; import com.simons.cn.util.CommonEnum; import com.simons.cn.util.CommonResult; import org.springframework.cloud.netflix.zuul.filters.route.ZuulFallbackProvider; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; @Component public class UserProviderZuulFallBack implements ZuulFallbackProvider { private static final String USER_PROVIDER_SERVICE = "user-provider"; @Override public String getRoute() { return USER_PROVIDER_SERVICE; //返回你需要为哪个微服务提供回退 } @Override public ClientHttpResponse fallbackResponse() { return new ClientHttpResponse() { /** * 返回Http状态码标识 */ @Override public HttpStatus getStatusCode() throws IOException { return HttpStatus.OK; } /** * 返回Http状态码对应数字:200,详见HttpStatus */ @Override public int getRawStatusCode() throws IOException { return 200; } /** *返回Http状态码对应中译:OK,详见HttpStatus */ @Override public String getStatusText() throws IOException { return HttpStatus.OK.getReasonPhrase(); } @Override public void close() { } /** *body响应体 */ @Override public InputStream getBody() throws IOException { String message = new Gson().toJson(CommonResult.success(CommonEnum.SERVICE_NOT_AVAILABLE.getCode(), CommonEnum.SERVICE_NOT_AVAILABLE.getMessage())); return new ByteArrayInputStream(message.getBytes("UTF-8")); } /** * 设置HttpHeaders */ @Override public HttpHeaders getHeaders() { HttpHeaders headers = new HttpHeaders(); // MediaType mediaType = new MediaType("application/json;charset=utf-8"); //这是错误写法 MediaType mediaType = new MediaType("application", "json", Charset.forName("utf-8")); headers.setContentType(mediaType); return headers; } }; } } CommonEnum中的枚举(部分): SERVICE_NOT_AVAILABLE("5001","当前服务不可用,请稍后重试!"),测试: 启动zuul-gateway项目和user-provider-eureka、discovery-eureka三个项目,浏览器访问http://localhost:10010/user/getuserinfo?name=jack,效果如图: 关闭user-provider-eureka服务,再访问http://localhost:10010/user/getuserinfo?name=jack,效果如图: 可以看到,当用户微服务不可用时候,默认返回了自定义的json。 zuul的高可用策略一、如果Zuul也注册到了服务发现组件Eureka上,那么zuul就已经实现了高可用配置,这种情况和普通的服务消费者和提供者的高可用是一致的; 二、若zuul未注册到Eureka上,则可以通过Nginx/HAProxy等负载均衡器来将请求分配到zuul的其中一个节点;这点更多的还是负载均衡器的配置。例如nginx的: 整体代码结构如下: 资料和源码来源

优秀的个人博客,低调大师

OBjective-C:在可变数组NSMutableArray中添加相同对象后,进行自定义的排序方式输出

以下为自定义的排序方式的实现 1 #import "Person+Compare.h" 2 3 @implementation Person (Compare) 4 -(NSComparisonResult)CompareByName:(Person*)aPerson 5 { 6 return [self.name compare:aPerson.name]; 7 } 8 -(NSComparisonResult)CompareByAge:(Person*)aPerson 9 { 10 if(self.age > aPerson.age) 11 return NSOrderedDescending; 12 else if (self.age < aPerson.age) 13 return NSOrderedAscending; 14 else 15 return NSOrderedSame; 16 } 17 @end 主函数测试: #import <Foundation/Foundation.h> #import "Person+Compare.h" #import "Person.h" int main(int argc, const char * argv[]) { @autoreleasepool { NSMutableArray *personArray = [[NSMutableArray alloc]initWithCapacity:20]; [personArray addObject:[Person personWithName:@"Tom" andAge:20]]; [personArray addObject:[Person personWithName:@"Smith" andAge:21]]; [personArray addObject:[Person personWithName:@"Jhon" andAge:19]]; [personArray addObject:[Person personWithName:@"Bruth" andAge:24]]; //按姓名排序 NSMutableArray *sortedByName = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByName:)]]; NSLog(@"%@",sortedByName); //按年龄排序 NSMutableArray *sortedByAge = [NSMutableArray arrayWithArray:[personArray sortedArrayUsingSelector:@selector(CompareByAge:)]]; NSLog(@"%@",sortedByAge); } return 0; } 测试结果为: 2015-08-18 18:03:26.997 可变数组的排序[2079:120917] ( "name=Bruth,age=24", "name=Jhon,age=19", "name=Smith,age=21", "name=Tom,age=20" ) 2015-08-18 18:03:26.998 可变数组的排序[2079:120917] ( "name=Jhon,age=19", "name=Tom,age=20", "name=Smith,age=21", "name=Bruth,age=24" ) Program ended with exit code: 0 程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式! 本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4740195.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

《Visual C++数字图像模式识别技术详解(第2版)》一1.2 模式识别基本概念

1.2 模式识别基本概念 模式识别是20世纪60年代迅速发展起来的一门前沿学科,在许多领域得到了广泛应用。本节简要介绍模式识别的基本概念和系统组成,以及模式识别在图像识别中的应用方法。 1.2.1 模式和模式识别的概念 模式识别的目的就是利用计算机模仿人的识别能力,它往往包含推理过程,需要专家系统、知识工程等相关学科的支持。当前的模式识别理论主要是对人的低级识别能力的模拟,即实现“观察对象是什么”的判断。模式是指具有某种特定性质的观察对象。特定性质是指可以用来区分观察对象是否相同或相似而选择的特性。观察对象是指人类感官直接或间接接收的外界信息。例如,一个数字、一句话、一张照片等都是观察对象。而把具有某些共同特性的模式的集合称为模式类。模式识别是研究一些自动技术,依靠这些技术,计算机自动地(或者人进行少量干涉)把待识别的模式分到各模式

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册