目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

强类型接口设计

强、弱类型接口  服务API接口有强、弱类型之分。 强类型接口  传统的RPC服务(定制二进制协议,对消息进行编码和解码),采用TCP传输消息。RPC服务通常有严格的契约,开发服务前需要使用IDL(Interface description language)定义契约,最终通过契约自动生成强类型的服务器端、客户端的接口。服务调用直接使用强类型的客户端。(GRPC、Thrift) 优点:不需要手动的编码和解码、接口规范、自动代码生成、编译器自动类型检查。 缺点:服务端和客户端强耦合、任何一方升级改动可能会造成另一方break。自动代码生成需要工具支持,开发这些工具的成本比较高。强类型接口开发测试不友好、浏览器、Postman这些工具无法直接访问这些强类型接口。 弱类型  Restful服务通常采用JSON作为传输消息,使用HTTP作为传输协议,没有严格契约的概念,使用普通的HTTP Client即可调用。调用方需要对JSON消息进行手动的编码和解码工作。(Springboot) 优点:服务端和客户端非强耦合、开发测试友好。 缺点:调用方手动编码解码,没有自动代码生成、没有编译期接口....

ModelMapper

简介  应用程序通常由相似但不同的对象模型组成,其中两个模型中的数据可能相似,但是模型的结构和关注点不同。使用 ModelMapper 可以轻松地将一个模型(DTO)转换为另一个模型(DMO),从而使分离的模型保持隔离状态。  ModelMapper 的目标是通过基于惯例的方式自动确定一个对象模型如何映射到另一个对象模型,从而简化对象映射,同时提供一种简单的,重构安全的 API 来处理特定的用例。 ModelMapper 分析您的对象模型,以智能地确定应如何映射数据。无需手动映射。ModelMapper 会为您完成大部分工作,并自动投影和展平复杂模型。 ModelMapper 使用约定来确定属性和值如何相互映射。用户可以创建自定义约定,也可以使用提供的约定之一。 ModelMapper 提供了一个简单,流畅的映射API,用于处理特殊用例。该 API 是类型安全和重构安全的,使用实际代码而不是字符串引用来映射属性和值。 ModelMapper 支持与任何类型的数据模型集成。从 JavaBeans 和 JSON 树到数据库记录,ModelMapper 可以为您完成繁重的工作。 快速上手....

技术选型之Dubbo、SpringCloud、Kubernetes

微服务公共关注点(Common Concerns)  微服务的最终目标是实现服务价值、交付服务价值。为了让开发人员能够专注于业务交付,微服务底层需要使用大量底层基础设施作为支撑。这些基础设施也称为微服务的公共关注点。 Dubbo、Spring Cloud和K8s横向比对  微服务的Common Concerns对应的基础设施,具象到产品表征着不同厂家的不同解法。 优劣比对

FRPS

服务器端 # 从官方github下载服务器端frp并解压 [root@BlogSystem software]# wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz [root@BlogSystem software]# tar -zxvf frp_0.21.0_linux_amd64.tar.gz [root@BlogSystem software]# mv frp_0.21.0_linux_amd64 frp # 修改配置文件 [root@BlogSystem software]# vim /software/frp/frps.ini [common] bind_port = 7000 dashboard_user = admin dashboard_pwd = tutuabc123 dashboard_port = 7500 # 开放权限 [root@BlogSystem frp]# chmod -R 777 /software/frp # 守护进....

JavaScript

JavaScript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、 基于原型的语言,内置支持类型 Javascript是当今最流行的脚本语言,我们生活中看到的网页 和基于html5的app里面的交互逻辑都是由javascript驱动的 一句话概括就是javascript是一种运行在浏览器中的解释型的编程语言 JS的组成 ECMAScript : 解释器、翻译者 (描述了该语言的语法和基本对 象) 它是javascript的标准。 DOM : Document Object Model 文档对象模型 W3C是DOM 的标准。 BOM : Browser Object Model 浏览器对象模型 缺乏标准。 演示  注册事件、找到目标元素、修改css属性 <!DOCTYPE html> <html> <head> <title></title> <style type="text/css"> #tim{ width: 200px; height: 200px; border:1px soli....

人工智能问答机器人

智能问答 API 平台 图灵 api: http://www.turingapi.com/ 阿 ⾥云服务: https://aliyun.com/ 亚 ⻢逊云服务:https://aws.amazon.com 腾讯云服务:https://cloud.tencent.com/ 青云客:http://api.qingyunke.com/ 青云客 API //接口地址 http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词 key 固定参数free appid 设置为0,表示智能识别,可忽略此参数 msg 关键词,请参考下方参数示例,该参数可智能识别,该值请经过 urlencode 处理后再提交 //返回结果 {"result":0,"content":"内容"} result 状态,0表示正常,其它数字表示错误 content 信息内容 msg 示例 天⽓:msg=天⽓深圳 中英翻译:msg=翻译i love you 歌词⑴:msg=歌词 成都 笑话:msg=笑话 计算⑴:msg=计算 1+1*2/3-4 计....

json

JavaScript Object Notation  JSON(JavaScript Object Notation, JS 对象简谱) 是 ⼀种轻量级的数据交换格式 好处: 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语 ⾔ 易于 ⼈阅读和编写,同时也易于机器 解析和 ⽣成,并有效地提升 ⽹络传输效率 JSON 独 ⽴于语 ⾔和平台,JSON 解析器和 JSON 库 ⽀持 许多不同的编程语 ⾔。  格式 key value 键值对: 花括号保存对象 {"key":"value"} ⽅括号保存数组 [{"key":"value"},{"key":"value"}] 值类型 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在 ⽅括号中) 对象(在花括号中) null { "code": 0, "data": { "id": 1, "url": "https://www.aliyun.com/minisite/goods?userCode=r5saexap&share_source=copy_link", "img": "htt....