Blog

设计模式之美学习笔记05: 封装、抽象、继承、多态,面向对象的四大特性

2019-11-13
Design Patterns

最近在学极客时间上的专栏“设计模式之美”,决定跟随专栏的更新,立一个flag,坚持打卡每节都写一篇笔记,作为对学习过程的巩固,以加深理解和思考。本篇是专栏第5节的学习笔记,第5节是专栏中介绍"面向对象"这一设计原则和设计思想的一节。

在过去我们学习各种面向对象编程语言(比如java)时,一般多会说面向对象有三大特性: 封装、继承和多态。而专栏中也将"抽象"作为第四个特性加入其中。

封装(Encapsulation) #

封装即信息隐藏或数据保护,“数据结构"通过暴露有限的访问接口,授权外部仅能通过"数据结构"提供的方法(函数)来访问其内部的数据。

...

内网穿透利器frp部署配置指南

2019-10-31

frp是一个使用go语言开发的反向代理服务,可用于内网穿透,支持tcp, udp协议,为http和https协议提供了额外的能力,且尝试性支持了点对点穿透。 由于ngrok 2.x已经闭源,ngrok 1.x已不再维护,所以这里尝试使用frp替代ngrok作为个人的内网穿透工具。

...

内网穿透利器ngrok部署配置指南

2019-10-30

ngrok是使用go语言开发的反向代理服务,可以在公共的端点和本地内网的Web服务之间建立一个安全通道,实现内网穿透功能。 虽然ngrok 2.x的版本已经闭源,但ngrok 1.x还是开源的,版本停留在了1.7不再开发和维护,但它作为个人平时开发和调试的内网穿透工具偶尔使用还是够用的。之前小白的ngrok部署在个人的一台AWS EC2主机上已有好几年,最近这台EC2释放掉了,小白需要在新的主机上部署ngrok服务,正好借着这个机会整理一下ngrok的部署和配置过程。

...

DDD学习笔记:DDD的战略模式

2019-10-17

DDD中根据问题域将问题划分为领域子域通用语言界限上下文架构风格等概念

领域和子域 #

领域是一个业务范围以及这个业务范围内的软件活动。领域层是具体的业务领域层,是发生业务频繁发生变化的地方,是业务系统最核心的一层,是DDD关注的焦点和难点。

...

下一代的微服务技术Service Mesh简介

2019-08-06

Service Mesh即服务网格,是云原生核心技术之一。

产生背景 #

Service Mesh伴随着微服务技术发展而产生,由于微服务架构的复杂性,对微服务的治理在服务注册与发现、负载均衡、故障处理与恢复、动态路由请求、协议转换、分布式链路追踪、RPC调用、统一认证授权、服务监控、故障注入、安全加密等方面面临着严峻的挑战。在微服务架构中服务组件复杂、服务治理等都成为了痛点,需要对业务开发人员"隐藏"微服务基础组件和服务治理的复杂性,使其对业务开发人员透明。 微服务本身虽然复杂,但很多的这些复杂性和服务的业务没有关系,即微服务的业务和微服务之间的通信没有关系,那么能否把微服务的技术栈往下移动到通信层呢?Service Mesh随之出现,Service Mesh通过独立进程的方式隔离微服务基础组件,那么对这个独立进程进行运维要比传统的微服务内的基础组件的方式简单的多了。

...

Elasticsearch 7.x安装配置介绍

2019-08-01
Elasticsearch

1.安装 #

1.1 安装Elasticsearch #

导入Elasticsearch GPG KEY:

1rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

添加elasticsearch的yum repo文件,使用清华的yum源镜像:

 1cd /etc/yum.repos.d
 2vi elasticsearch7.repo
 3
 4[elasticsearch-7.x]
 5name=Elasticsearch repository for 7.x packages
 6baseurl=https://mirror.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/
 7gpgcheck=1
 8gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
 9enabled=1
10autorefresh=1
11type=rpm-md

安装并启动ES:

...

使用Spring Boot开发Kafka的生产者和消费者,并理解Kafka Consumer Rebalance

2019-07-13
Kafka, Spring Boot

前面我们在k8s上部署了一个kafka集群,同时也部署了kafka-manager对kafka集群进行监控管理。 本篇将先基于spring boot框架编写一个简单的kafka的生产者和消费者的程序,并在此基础上理解kafka的相关组件。

1.使用Spring Boot开发Kafka的Producer和Consumer #

https://start.spring.io/创建一个名称为kafka-demo的spring boot工程,这里基于的是Spring Boot 2.1.6,依赖中选择添加Spring for Apache Kafka。项目创建完毕后,首先需要在spring boot的配置文件application.yml通过配置spring.kafka.bootstrap-servers指定kafka代理地址。

...

Kafka集群管理和监控方案之Kafka Manager

2019-07-12
Kafka

1.Kafka监控方案简介 #

前面我们已经在k8s上使用incubator/kafka chart部署了Kafka。本篇来聊聊kafka的管理和监控。 关于kafka的监控方案有很多:

  • Confluent Control Center是Confluent Kafka提供的监控和管理方案,但Confluent Control Center只能在CP Kafka收费的企业版中使用。
  • Kafka Offset Monitor是开源的监控方案,如果监控单个Kafka集群可以选择Kafka Offset Monitor,但从Kafka Offset Monitor的源码来看已经很久没有维护了
  • Prometheus + kafka-prometheus-jmx-exporter的监控方案,这个也是incubator/kafka中支持的监控方案,默认使用helm部署kafka是没有开启,可通过prometheus.kafka.enabled开启,这里先不开启,准备在之后的内容中介绍Prometheus + kafka-prometheus-jmx-exporter
  • Kafka Manager可以用来管理和监控多个Kafka集群,本篇将介绍Kafka Manager。

2.使用Helm部署Kafka Manager #

Helm的官方repo中已经提供了Kafka Manager的Chart

...

使用helm在k8s上部署kafka

2019-07-08
Kafka

1.配置helm chart repo #

kafka的helm chart还在孵化当中,使用前需要添加incubator的repo:helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator

肉身在国内需要设置azure提供的镜像库地址:

1helm repo add stable http://mirror.azure.cn/kubernetes/charts
2helm repo add incubator http://mirror.azure.cn/kubernetes/charts-incubator
3
4helm repo list
5NAME     	URL                                               
6stable   	http://mirror.azure.cn/kubernetes/charts          
7local    	http://127.0.0.1:8879/charts                      
8incubator	http://mirror.azure.cn/kubernetes/charts-incubator

2.创建Kafka和Zookeeper的Local PV #

2.1 创建Kafka的Local PV #

这里的部署环境是本地的测试环境,存储选择Local Persistence Volumes。首先,在k8s集群上创建本地存储的StorageClass local-storage.yaml

...

Flutter学习笔记(三):Dart语法之Mixin混入,以及extends、with、implements的区别

2019-07-06
Flutter

前面我们通过官方文档Dart语法预览快速的学习了Dart的基本语法特性。 本篇我们学习Dart中关于类型扩展的三种关系:继承、混入、接口实现;分别对应关键字:extends、with、implements。

在编写一个类时可以同时使用继承、混入和接口实现,依次按顺序即可extends, with, implements.

Dart中的继承(extends)与Java语言中的继承特性基本一致,Dart里的继承也是单继承。

...

© 2024 青蛙小白