Gitee

Solon rpc 之 SocketD 协议

久未见 提交于 2021-01-09 21:45:20
Solon rpc 之 SocketD 协议 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 SocketD 协议 - 消息应答模式 Solon rpc 之 SocketD 协议 - 消息订阅模式 SocketD 是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,SocketD可以是RSocket等其他类似协议的替代方案。它的消息协议规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。暂时只提供Java实现,目前做为Solon rpc的sockte通道协议。 本案以简单的消息订阅模式为例演示:(即等着服务端给消息,例如配置服务的变更通知) 包依赖 <dependency> <groupId>org.noear</groupId> <artifactId>solon.boot.socketd.smartsocket</artifactId> <version>1.2.18</version> </dependency> 服务端 //启动服务端 public class ServerApp { public static void main(String[] args) { //启动Solon容器(SocketD bean

C# 在自定义的控制台输出重定向类中整合调用方信息

微笑、不失礼 提交于 2021-01-09 15:05:03
C# 在自定义的控制台输出重定向类中整合调用方信息 目录 C# 在自定义的控制台输出重定向类中整合调用方信息 一、前言 二、输出重定向基础版 三、输出重定向进阶版(传递调用方信息) 四、后记及资源 独立观察员 2021 年 1 月 6 日 一、前言 众所周知,在 .NET 的控制台应用程序(就是那种小黑框程序)中输出信息,使用的是控制台输出方法 Console.Write ("消息") 或 Console.WriteLine ("消息"),这两个方法称为标准输出。而在 Winform、WPF、网页程序中,使用这种方法输出的信息是没有地方显示的,在这些程序中,我们一般把信息输出到相应的显示控件中,或者写入日志中。 比如我这有个 Winform 测试程序,相关按钮的后台逻辑就是向控制台输出 “哈哈哈”,一般情况下,点击这个按钮,左边的消息框将不会有任何消息输出: 二、输出重定向基础版 但是这里却能显示出相关消息,是怎么回事呢?原来我在构造函数中添加了这么一句 —— Console.SetOut (new ConsoleWriter (ShowInfo)); —— 这就把原本输出到控制台的消息,重定向给了方法 ShowInfo 来进行输出,而 ShowInfo 方法内通过设置文本框的文本内容来达到了显示消息的效果: 其中的关键就是自定义类 ConsoleWriter(后面有新版):

小白学 Python 爬虫(20):Xpath 进阶

那年仲夏 提交于 2021-01-09 12:18:09
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基础 小白学 Python 爬虫(9):爬虫基础 小白学 Python 爬虫(10):Session 和 Cookies 小白学 Python 爬虫(11):urllib 基础使用(一) 小白学 Python 爬虫(12):urllib 基础使用(二) 小白学 Python 爬虫(13):urllib 基础使用(三) 小白学 Python 爬虫(14):urllib 基础使用(四) 小白学 Python 爬虫(15):urllib 基础使用(五) 小白学 Python 爬虫(16):urllib 实战之爬取妹子图 小白学 Python 爬虫(17):Requests 基础使用 小白学 Python 爬虫(18):Requests 进阶操作 小白学 Python 爬虫(19):Xpath 基操

cockroach(v20.2)源码编译

别来无恙 提交于 2021-01-09 10:22:07
1.下载代码以及依赖环境 1) 由于github.com国内访问较慢,克隆gitee的镜像 cd /media/lynn/disk_d/codes/database/cockroach mkdir -p src/github.com/cockroachdb/ mv CockroachDB cockroach git clone https://gitee.com/mirrors/CockroachDB.git 2)下载golang-1.15 下载地址 mv go1.15.linux-amd64.tar.gz /usr/lib tar -zxvf go1.15.linux-amd64.tar.gz 2. 下载子模块 1) 修改子模块地址: .gitmodules [submodule "vendor"] path = vendor url = https://gitee.com/jianyun/vendored.git [submodule "c-deps/jemalloc"] path = c-deps/jemalloc url = https://gitee.com/jianyun/jemalloc.git [submodule "c-deps/protobuf"] path = c-deps/protobuf url = https://gitee.com/jianyun

python中的.nc文件处理 | 03 指定位置的数据切片及可视化

半世苍凉 提交于 2021-01-08 21:43:29
NetCDF4文件处理 下载MACA v2的 netcdf4 格式数据 使用 xarray 读取和处理 netcdf4 格式数据 将 netcdf4 格式数据导出为 .csv 格式 将 netcdf4 格式数据导出为 .tif 格式 参考链接 import os import numpy as np import pandas as pd import matplotlib.pyplot as plt # 处理netcdf4文件所要用到的包 import xarray as xr import rioxarray import cartopy.crs as ccrs import cartopy.feature as cfeature import seaborn as sns import geopandas as gpd import earthpy as et # 统计图绘制选项 sns.set(font_scale=1.3) sns.set_style("white") 文件读取 .nc文件名的含义 agg_macav2metdata_tasmax_BNU-ESM_r1i1p1_historical_1950_2005_CONUS_monthly agg_macav2metdata :MACA v2版本,降尺度到美国大陆 tasmax :数据项为最高温度 BNU-ESM

2021升级版微服务教程—微服务开发环境准备

无人久伴 提交于 2021-01-08 20:43:37
2021升级版SpringCloud教程从入门到实战精通「H版&alibaba&链路追踪&日志&事务&锁」 教程全目录「含视频」 : https://gitee.com/bingqilinpeishenme/Java-Wiki 微服务开发环境准备 SpringCloud版本 相关文档 SpringCloud官网 https://spring.io/projects/spring-cloud/ H 版本文档 https://docs.spring.io/spring-cloud/docs/Hoxton.SR9/reference/html/ 2020更新情况 https://mp.weixin.qq.com/s/V6K6Ehq8xdRwnMbKJWG7_g 历史背景 版本号命名规则 关于SpringCloud的分类,根据SpringCloud版本的命名方式的改变可以分为两个阶段: 伦敦地铁站名 在Spring Cloud 2020.0.0版本之前,SpringCloud的所有版本均按照伦敦地铁站站名从A-Z的排序进行命名,如下: 为了便于称呼,一般也都称之为A版本,B版本,F版本和H版本。 SR9,每当SpringCloud解决了一个重大bug就会增加SR版本,SR9就意味着在H版本的基础上解决了九个重大bug 日历化版本 从 Spring Cloud 2020.0.0-M1 开始

Spring Boot 2.x基础教程:实现文件上传

邮差的信 提交于 2021-01-08 18:28:27
文件上传的功能实现是我们做Web应用时候最为常见的应用场景,比如:实现头像的上传,Excel文件数据的导入等功能,都需要我们先实现文件的上传,然后再做图片的裁剪,excel数据的解析入库等后续操作。 今天通过这篇文章,我们就来一起学习一下如何在Spring Boot中实现文件的上传。 动手试试 第一步 :创建一个基础的Spring Boot项目,如果还不会的话就先看看这篇 《快速入门》 。 第二步 :在 pom.xml 中引入模版引擎依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 你也可以选择其他你熟悉的模版引擎,比如:Freemarker。 第三步 :在 resources 目录下,创建新目录 templates ;在 templates 目录下再创建一个文件上传的页面 upload.html ,内容如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8" /> <title>文件上传页面</title> </head> <body> <h1>文件上传页面</h1> <form method=

git remote add for feiba

£可爱£侵袭症+ 提交于 2021-01-07 22:53:46
将现有代码仓库分支推送到其他仓库上去。 lwk@qwfys:~/Public/project/qwfys$ git clone git@gitee.com:ab-sample/eapp-isv-project-fe.git Cloning into 'eapp-isv-project-fe'... remote: Enumerating objects: 12, done. remote: Counting objects: 100% (12/12), done. remote: Compressing objects: 100% (9/9), done. remote: Total 12 (delta 0), reused 12 (delta 0), pack-reused 0 Receiving objects: 100% (12/12), done. lwk@qwfys:~/Public/project/qwfys$ ll total 52 drwxr-xr-x 13 lwk lwk 4096 Jan 7 21:24 ./ drwxr-xr-x 6 lwk lwk 4096 Dec 31 11:21 ../ drwxrwxr-x 7 lwk lwk 4096 Jan 7 21:22 eapp-isv-project/ drwxr-xr-x 4 lwk lwk 4096 Jan

标签管理体系之业务应用

旧巷老猫 提交于 2021-01-07 22:22:59
一、评估标签质量 1、业务背景 基于标签对业务进行精准分析,从而影响运营思路和产品迭代的节奏,进而带来非常高的商业价值,但是这里需要对标签的质量进行评估,假设标签的覆盖场景非常低,而且准确度低,同样也会反向影响业务。 通过在标签的使用过程分析和评估,不断优化标签的质量,形成完整的管理周期,这样才能发挥更高的业务价值。 2、覆盖维度 单一场景下标签能产生的价值并不高,这也是很多产品在初期不会过度考虑数据分析的一大原因,能获取到有标签含义的数据不足以产生较高的价值。 通常当用户有一定规模之后,业务的主流程搭建完毕,产品自身也基本完成,这时候就会开始考虑数据的标签化分析,在标签初始化完成后,会有小规模的业务场景验证,通常通过一些运营操作完成,验证标签效果之后就会全面开放到业务中。 3、准确度 标签的准确度是在整合周期中最关键的,在给对象打上标签后,需要准确获取对象的各项数据,提供基准的分析。 例如:描述24-30岁白领消费能力,在实际业务中发现28-30岁的白领消费能力并不符合预期描述,那就需要对该标签做垂直细化,分为[24-27]和[28-30]两个阶段,如果范围内还是存在较大差异,则还是需要不断优化。 如何把控准确度,可以是基于指标阈值,或者特定业务场景下的人工分析和手动管理,从而判断标签是否准确或者获得标签优化的依据。 二、标签基础应用 1、贴标签

Flutter学习之旅-混合开发Part2

瘦欲@ 提交于 2021-01-06 09:42:49
什么是Platform View 为了能让一些现有的Native控件直接引用到Flutter App中,Flutter团队提供了Platform View,允许Native View嵌入到Flutter Widget体系中,完成Dart代码对Native View的控制。 Platform View主要包括: AndroidView 和 UIKitView 如何使用Platform View AndroidView class AndroidView extends StatefulWidget { const AndroidView({ Key key, @required this.viewType, this.onPlatformViewCreated, this.hitTestBehavior = PlatformViewHitTestBehavior.opaque, this.layoutDirection, this.gestureRecognizers, this.creationParams, this.creationParamsCodec, }) : assert(viewType != null), assert(hitTestBehavior != null), assert(creationParams == null ||