Life

Sunday, September 27, 2020

关于WakaTime的闲折腾

我干了什么

        突发奇想想要看看每天花在纯码代码(CTRL+CV)上的时间到底有多少,第一反应就是去找找Intellij IDEA的Marketplace,随便装一个,计时的插件应该都大同小异吧。
        用time做关键字搜索出来的结果排在第一位的就是WakaTime,嚯,下载量不低,就你了。

Sunday, September 20, 2020

《彼得原理》

 彼得原理(The Peter Principle)

        在工作中不胜任的现象随处可见。懒散傲慢的公务员、文笔不通的作家、优柔寡断的领导、事必躬亲的领班。。。美国管理学家劳伦斯.彼得对数百份工作上不胜任的实例进行观察研究后发现,在层级组织里,每位员工都将晋升到自己不能胜任的阶层。这就是彼得原理。但凡置身于商业、工业、商业工会、政治、行政、军事、宗教、教育各界的每个人都与层级组织息息相关,亦必受彼得原理的控制(除非其特立独行,避免陷入层级组织中)。

Tuesday, June 30, 2020

Spring Cloud(五):Hystrix

 在上一节的最后我提到Feign集成了Hystrix实现了容错功能。

这一节我们看下Hystrix有什么本事以及利用Feign实现Hystrix的这些功能。

Hystrix特性

  • 服务隔离机制 Hystrix是一个熔断器模型的具体实现,熔断器就类似于保险丝,单个电器故障使保险丝熔断以防止故障蔓延造成更大损失 容错机制就是这个原理
  • 服务降级机制 当服务提供者无法访问时不能让消费者一直等待或返回代码异常栈显得很不友好。这时返回fallback中定义的异常信息实现降级处理
  • 实时的监控与报警功能,可迅速发现服务中存在的故障。


基于Feign实现Hystrix

在上一节我们已经实现了Feign这样一个客户端,我们可以直接在此基础上实现Hystrix的熔断与降级机制

在consumer的配置文件添加配置


  feign: 
    hystrix: 
      enabled: 
        true #熔断器 

还需实现FeignClinet 接口创建降级回调类,返回降级信息

@Component
public class FeignHystrix implements FeignClinet {
    @Override
    public List<Instrument> getAllByFeign() {
       return null;
    }

    @Override
    public List<Actor> findAllByFeign() {
        List<Actor> list = new ArrayList<Actor>();
        Actor actor = new Actor();
        actor.setId(47L);
        actor.setGender("male");
        actor.setName("黑豹不死");
        list.add(actor);
        try {
            throw  new Exception("Sorry,the function is unreachable");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return list;
    }
}

并在FeignClinet @FeignClient 注解中声明fallback类:


    @FeignClient(value = "provider", configuration =FeignAutoConfiguration.class,
        fallback = FeignHystrix.class)

这样设置完成后,当正常的provider服务不可达时,熔断时调用降级信息


Dashboard可视化监控

    Hystrix提供了近乎实时的请求监测功能,这个功能结合Spring Boot Actuator 实现,可以看到Hystrix Command 的请求信息,当然它返回的是文本信息不够直观,我们可以再结合 Hystrix-dashboard 得到可视化的监控界面。
仍然利用上一节中的FeignClinet来实现Hystrix的功能特性
在pom文件中添加Hystrix、actuater、dashboard依赖

  <dependency> 
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
  </dependency> 
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency> 
  <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
  </dependency>

在启动类需要添加注解@EnableHystrix声明启用Hystrix;添加@EnableHystrixDashboard声明启用dashboard。依次启动eureka、provider、consumer后,将出现:

访问该地址将看到command的详细信息:
显然它十分的不友好,为了更直观的获得资讯,我们此时访问http://localhost:8020/hystrix输入监控地址http://localhost:8020/actuator/hystrix.stream点击开始监测:
这时我们可以得到较为直观清晰的监控界面,能获取到包括请求成功、熔断、失败、超时的数量等诸多信息。至于监控界面各参数具体信息请查阅hystrix-dashboard wiki


版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者Leslie Tien和本文原始地址:
https://leslietien.blogspot.com/2020/06/hystrix.html

Friday, June 26, 2020

Spring Cloud(四):服务网关

    在分布式项目架构中,会将服务进行拆分,各个微服务负责一部分业务功能,实现软件架构层面的解耦合。同时,为提高系统健壮性、可靠性,需进行容错,提高冗余,增设多个同样的微服务,当检测到某一服务失效后,启动备份服务保证系统的正常。
    但大数量的微服务并不利于系统开发,每个服务都有不同的网络地址,客户端在请求不同的微服务需要调用不同的URL,同时维护多个URL将增加开发的成本。
     为统一管理不同微服务的URL,增强系统的维护性,采用一种解决方案:API网关。使用API网关对所有的API请求进行管理维护,为系统开放一个统一的接口,所有的外部请求只需要访问这个统一的入口即可,系统内部通过API网关映射到不同的微服务。

Tuesday, June 16, 2020

浮点数加减法运算

设有两个浮点数x和y,它们分别为

其中ExEy分别维数x和y的阶码MxMy为数x和y的尾数.

两浮点数进行加法和减法的运算规则是:

Sunday, June 14, 2020

Spring Cloud(三):服务消费者

       在上一篇博文中创建了一个服务提供者provider,在注册中心完成注册,对外提供接口服务。此时应有一个服务消费者调用provider相关接口完成某些业务。而在实际环境中,各个微服务的IP地址不同,如何实现微服务之间的跨服务调用呢,我学习了两种方法:RestTemplate和Feign。

Tuesday, June 2, 2020

Spring Cloud(二):服务提供者

       在上一篇博文中实现了Eureka注册中心的搭建,在分布式系统架构中所有的微服务都需要在注册中心完成注册才能供服务发现功能发现并提供使用。而所谓的Service Provider和Service Consumer只是从业务功能角度来区分二者。事实上,他们都是以Eureka Client的身份注册在Eureka Server中的。
        我们可以通过Sping Boot快速搭建一个服务提供者,再将其作为Eureka Client注册到Eureka Server,对外提供服务。

Sunday, May 31, 2020

Spring Cloud(一):注册中心Eureka

       Eureka 是 Netflix 开源的基于 REST 的服务治理解决方案,Spring Cloud 对 Netflix 开源组件进行了二次封装,也就是 Spring Cloud Netflix,Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,提供完整的服务注册和服务发现功能,可以和基于 Spring Boot 搭建的微服务应用轻松完成整合,开箱即用,实现 Spring Cloud 的服务治理功能。

Spring Cloud(零):初识微服务

微服务的产生
       传统的Java Web 采用单体架构的方式进行开发、部署、运维,发布工程时是将所有的业务模块打包在一起。这种模式存在诸多缺点:
  • 随着业务的发展,需求的增加,开发变得越来越复杂;
  • 新增、修改某一功能便需要对整个系统进行测试,重新打包部署,延长了工时。
  • 工程体量太大,模块内容过于复杂,如果员工离职或新员工入职,可能需要很多时间进行交接和适应。
  • 。。。
       为改善单体应用存在的问题,微服务架构应运而生。微服务可以简单理解为就是将一个单体应用拆分为多个独立的服务,共同协作完成系统功能的一种架构模式。这样就可以实现单独开发、测试、部署,难度降低很多;各个不同服务独立自治,不会影响到其他服务;各个服务可自由选择适合自己的语言和技术框架,微服务之间只需要制定统一的通信协议即可相互调用,协作实现系统功能。

Monday, May 11, 2020

Blogger博客说明修改技巧

      在Blogger的管理后台,通过 设置-基本-说明 可以编辑对该博客的描述。
        这条说明会出现在博客标题的下方:
        但是这个说明语句只是一条语句。似乎blogger认为这里只是一个对博客的说明描述,一句话就够了。
现在我有个想法:我想在这里展示我认为有哲理、有内涵的语句,并且可以添加多条,每一次页面刷新时都可以随机展示其中的一条给读者。
        能不能实现呢?

Blogger主题备份与还原

        Blogger管理面板提供的主题模板和布局设计功能可以满足一般用户的绝大部分需要。
但如果你想要自己的网站与众不同,比如界面拥有特殊的展示效果;原生小部件不美观,想要修改其样式等,默认提供的功能是无法实现的。这时我们就需要修改Blogger的主题背景文件。
        在每次修改主题文件之前一定要先进行主题的备份,以防备修改主题时出现难以短时间解决的bug,整个网站出现明显严重的问题以至于影响到读者访问,这时就可以利用备份文件进行还原,把网站恢复到未修改之前的状态。
主题文件的备份在管理面板的“主题背景”选项中,点击更多选项,选择“备份”即可下载主题文件。
之后就可以点击“修改HTML”修改主题,体现你的个性化,即使出现问题也不怕啦。
当然,如果真的不幸出现无法解决的问题,点击“还原”上传刚刚保存的主题文件即可恢复。另外,如果你下载了第三方的主题文件同样可以在这里进行替换。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者Leslie Tien和本文原始地址:
https://leslietien.blogspot.com/2020/05/blogger-backup-restore.html

Thursday, May 7, 2020

IEEE 754浮点数标准

 IEEE 754浮点数标准

IEEE 754(IEEE Standard for Binary Floating-Point Arithmetic,ANSI/IEEE Std 754-1985) 是 IEEE(Institute of Electrical and Electronics Engineers,电子电气工程师协会)于1985年制订的二进制浮点运算标准,该标准限定指数的底为 2。目前,几乎所有的计算机都支持 IEEE 754 标准,它大大地改善了科学应用程序的可移植性。