首页 文章 精选 留言 我的

精选列表

搜索[快速入门],共10006篇文章
优秀的个人博客,低调大师

轻量应用服务器 快速入门:使用流程

使用流程 购买(创建实例) 以 WordPress 为例。 1.登录 阿里云官网,打开轻量应用服务器购买页面。按照提示选择镜像、地域、套餐,时长,单击 购买。 2.在 确认订单 页面,确认订单信息。核对无误后,单击 去支付。 3.支付成功后,单击 跳转到控制台。 获取应用初始化信息 1.登录轻量应用服务器控制台,在 服务器列表 中找到之前购买的服务器,单击 详情。 2.进入 WordPress 的 应用详情 页面,查看相关应用初始化安装信息详情。 设置应用 应用已经安装完毕。根据上一步看到的应用信息,我们需要获得已经安装好的 WordPress 的管理员账号和账号密码。 1.在 WordPress 的 应用详情 页面,单击右上角的 远程连接。 2.根据上一章得到的应用安装信息,我们知道应用的管理账号和账号密码在服务器 /root/env.txt 路径下。在远程连接窗口中输入以下内容: sudo cat /root/env.txt 即可获得 WordPress 的管理员账号和账号密码。 3.复制管理员账号密码。 4.打开应用安装信息的管理员登录页面,WordPress 的后台地址一般为 http://ip地址/wp-login.php 。 5.输入账号 admin,并粘贴之前复制好的密码,单击 登录。 6.登录成功后,您可以根据自身需要配置 WordPress。 为方便用户后续操作,可以更新个人资料,步骤如下: 1.单击 admin 下面的 编辑 按钮。 2.进入 用户 页面,在 账户管理 部分,单击 生成密码,按照提示输入密码。 3.然后输入邮件地址,并单击 更新个人资料。 绑定域名、解析域名 1.打开控制台,单击左侧导航栏的 站点设置 > 域名 > 添加域名。如果已经有在阿里云注册或者使用阿里云解析的域名,可以直接解析。 2.输入域名,单击 确定。 测试访问 修改 WordPress 后台的地址为绑定的域名,通过域名测试访问应用。 注意:修改前务必保证绑定域名已经解析成功,否则会出现后台无法登录的情况。

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

[雪峰磁针石博客]Bokeh数据可视化工具1快速入门

简介 数据可视化python库参考 python数据可视化库最突出的为Matplotlib、Seaborn和Bokeh。前两个,Matplotlib和Seaborn,绘制静态图。Bokeh可以绘制交互式图。 安装 conda install bokeh pip2 install bokeh pip3 install bokeh 检验安装 from bokeh.plotting import figure, output_file, show #HTML file to output your plot into output_file("bokeh.html") #Constructing a basic line plot x = [1,2,3] y = [4,5,6] p = figure() p.line(x,y) show(p) image.png 问题讨论: https://groups.google.com/a/anaconda.com/forum/#!forum/bokeh bug跟踪:https://github.com/bokeh/bokeh/issues 应用程序:Bokeh应用程序是在浏览器中运行的Bokeh渲染文档 Glyph:Glyph是Bokeh的基石,它们是线条,圆形,矩形等。 服务器:Bokeh服务器用于共享和发布交互式图表 小部件Widgets::Bokeh中的小部件是滑块,下拉菜单等 输出方法有:output_file('plot.html')和output_notebook() 构建图片的方式: #Code to construct a figure from bokeh.plotting import figure # create a Figure object p = figure(plot_width=500, plot_height=400, tools="pan,hover") 绘图基础 线状图 #Creating a line plot #Importing the required packages from bokeh.io import output_file, show from bokeh.plotting import figure #Creating our data arrays used for plotting the line plot x = [5,6,7,8,9,10] y = [1,2,3,4,5,6] #Calling the figure() function to create the figure of the plot plot = figure() #Creating a line plot using the line() function plot.line(x,y) #Creating markers on our line plot at the location of the intersection between x and y plot.cross(x,y, size = 15) #Output the plot output_file('line_plot.html') show(plot) image.png 柱形图 #Creating bar plots #Importing the required packages from bokeh.plotting import figure, show, output_file #Points on the x axis x = [8,9,10] #Points on the y axis y = [1,2,3] #Creating the figure of the plot plot = figure() #Code to create the barplot plot.vbar(x,top = y, color = "blue", width= 0.5) #Output the plot output_file('barplot.html') show(plot) image.png 补丁图 #Creating patch plots #Importing the required packages from bokeh.io import output_file, show from bokeh.plotting import figure #Creating the regions to map x_region = [[1,1,2,], [2,3,4], [2,3,5,4]] y_region = [[2,5,6], [3,6,7], [2,4,7,8]] #Creating the figure plot = figure() #Building the patch plot plot.patches(x_region, y_region, fill_color = ['yellow', 'black', 'green'], line_color = 'white') #Output the plot output_file('patch_plot.html') show(plot) image.png 散列图 #Creating scatter plots #Importing the required packages from bokeh.io import output_file, show from bokeh.plotting import figure #Creating the figure plot = figure() #Creating the x and y points x = [1,2,3,4,5] y = [5,7,2,2,4] #Plotting the points with a cirle marker plot.circle(x,y, size = 30) #Output the plot output_file('scatter.html') show(plot) image.png 更多资源 #- cross() #- x() #- diamond() #- diamond_cross() #- circle_x() #- circle_cross() #- triangle() #- inverted_triangle() #- square() #- square_x() #- square_cross() #- asterisk() #Adding labels to the plot plot.figure(x_axis_label = "Label name of x axis", y_axis_label = "Label name of y axis") #Customizing transperancy of the plot plot.circle(x, y, alpha = 0.5) plot.circle(x, y, alpha = 0.5) 参考资料 本文最新版本地址 讨论 钉钉免费群21745728 qq群144081101 567351477 本文涉及的python测试开发库 谢谢点赞! 本文相关海量书籍下载 代码仓库

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

Python3快速入门——(1)python变量和输入输出函数

1、Python语言 Python 是一种解释型、面向对象、动态数据类型的高级程序设计语言 Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言:这意味着,您可以在一个Python提示符,直接互动执行写你的程序。 Python 是面向对象语言:这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 Python 应用领域:Linux/Unix运维,开发命令行程序、桌面GUI应用(PyQt,Kivy等), 移动 App(PyQt,Kivy等),Web应用(Diango等框架),服务端的应用(基于TCP协议的服务器程序),网络爬虫(为搜索引擎、深度学习等领域提供数据源),数据分析,深度学习,科学计算。 2、个人看过比较好的python3系统学习教程 菜鸟编程 : http://www.runoob.com/python3/python3-basic-syntax.html 廖雪峰: https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 python解释器内置函数类型:https://docs.python.org/3/library/functions.html 3、变量 #变量(每条语句后可以不写分号,直接回车即可) numeber_of_days=365 #定义变量值 str_test="China" #字符串变量 int_test=123 #整型变量 float_test=122.5 #浮点型变量 print(numeber_of_days) #输出变量值 365 print( type (str_test)) #输出变量的类型 <class 'str'> 4、输入输出函数和条件判断 input()/print() #name=input();print(name) 空值 是Python里一个特殊的值,用 None 表示。 None 不能理解为 0 ,因为 0 是有意义的,而 None 是一个特殊的空值 s = input ( 'birth: ' ) #input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数 birth = int (s) #int()函数将str转换为int if birth >= 2000 : print ( '00后' ) elif birth>= 1990 : print ( '90后' ) else : print ( '90前' )

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

云服务器 ECS快速入门:Windows 格式化数据盘

Windows 格式化数据盘 如果您已经为 ECS 实例配了数据盘,您需要先格式化并分区数据盘后才能正常使用数据盘。 注意: 磁盘分区和格式化是高风险行为,请慎重操作。本文档描述如何处理一个新买的数据盘,如果您的数据盘上有数据,请务必对数据盘创建快照以避免可能的数据丢失。 云服务器 ECS 仅支持对 数据盘 进行分区,而不支持对 系统盘 进行分区。如果您强行使用第三方工具对系统盘进行分区操作,可能引发未知风险,如系统崩溃、数据丢失等。 本文描述如何用一个新的数据盘创建一个单分区数据盘并挂载文件系统。您也根据业务需要,对数据盘进行多分区配置。 操作须知 单独 购买的数据盘 需要先 挂载数据盘,然后才能进行格式化和分区操作。 随实例时一起购买的数据盘,无需挂载,直接格式化并分区。 操作步骤 在本示例中,我们描述了如何在 Windows Server 20

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

快速入门 TinyVue 组件库一键换肤!get“多主题适配”技能

本文由体验技术团队 TinyVue 项目成员岑灌铭创作,欢迎大家实操体验,本实操内容通过实现 TinyVue 中 Button 组件和 Alert 的类 element 主题适配,让开发者感受到 TinyVue 跨设计规范的亮点特性,同时对 TinyVue 组件库多主题的实现原理有个初步的了解。 知识背景 1. TinyVue 组件库简介 OpenTiny 是一套企业级前端开发解决方案,其中包含了组件库、低代码、中后台模板、CLI 命令行等丰富的效率提升工具。其中 TinyVue 是其中一款支持跨端、跨框架以及跨设计规范的组件库。 本次实操内容通过实现 TinyVue 中 Button 组件和 Alert 的类 element 主题适配,让开发者感受到 TinyVue 跨设计规范的亮点特性,同时对 TinyVue 组件库多主题的实现原理有个初步的了解。 代码托管 GitHub:https://github.com/opentiny/tiny-vue (欢迎大家 Star 和 提Issue、PR 进行反馈) TinyVue 官网:https://opentiny.design/tiny-vue/zh-CN/smb-theme/overview 2.环境基本要求 node.js v16+ npm v8+ 代码编辑器 VsCode 以及 Chrome/Edge 浏览器 代码实战 1.使用Vite创建一个Vue3项目 1.1 打开 VSCode 软件,使用 Ctrl+~快捷键打开终端。执行以下命令安装Vite npm install -g vite 1.2 使用 Vite 创建一个 Vue3 工程 npm create vite[@latest](https://my.oschina.net/u/4418429) tinyvue-multi-theme -- --template vue 命令行提示是否安装 create-vite@latest,输入y后回车,安装并创建 cd tinyvue-multi-theme npm install npm run dev 创建工程完毕后,依次输入以上命名 进入工程文件夹 安装依赖 执行命令启动项目 出现以下界面,则说明项目启动成功,Ctrl+鼠标左边单击 http://127.0.0.1:5173/ 从浏览器启动项目 浏览器打开会出现以上界面,说明一切正常,到此为止,Vue3项目已经完成创建。 2.安装 TinyVue,使用 button 以及 alert 组件 安装@opentiny/vue,在 vscode 终端下执行以下命名,安装 TinyVue 组件库 npm install @opentiny/vue@3.16.0 打开 OpenTiny 官网 https://opentiny.design/tiny-vue/zh-CN/overview 找到 Button 组件和 Alert 组件,可以参考官网 demo 的写法新增本次实验所需代码。 在 components 文件夹下,新建ButtonDemo.vue文件, 使用 Button 组件,新增6个类型的朴素按钮。 <template> <tiny-button plain> 朴素按钮 </tiny-button> <tiny-button type="primary" plain> 主要按钮 </tiny-button> <tiny-button type="success" plain> 成功按钮 </tiny-button> <tiny-button type="info" plain> 信息按钮 </tiny-button> <tiny-button type="warning" plain> 警告按钮 </tiny-button> <tiny-button type="danger" plain> 危险按钮 </tiny-button> </template> <script> import { Button } from "@opentiny/vue"; export default { components: { TinyButton: Button, }, }; </script> 在 components 文件夹下,新建AlertDemo.vue文件, 使用 Alert 组件,新增4个类型 alert。 <template> <div> <tiny-alert type="success" description="type 为 success"></tiny-alert> <tiny-alert type="simple" description="type 为默认值 info"></tiny-alert> <tiny-alert type="warning" description="type 为 warning"></tiny-alert> <tiny-alert type="error" description="type 为 error"></tiny-alert> </div> </template> <script> import { Alert } from "@opentiny/vue"; export default { components: { TinyAlert: Alert, }, }; </script> 删除无关文件HelloWorld.vue ,修改App.vue文件,引入ButtonDemo.vue和AlertDemo.vue组件。 import ButtonDemo from "./components/ButtonDemo.vue"; import AlertDemo from "./components/AlertDemo.vue"; 修改模板代码,删除 vite 初始 demo 代码,使用引入的 Button 和 Alert。 <template> <div class="theme-app"> <div class="container"> <button-demo></button-demo> </div> <div class="container"> <alert-demo></alert-demo> </div> </div> </template> 删除原本 vite 初始 demo 代码样式代码,新增本次实验所需的样式代码,使其看起来更美观一些。 <style scoped> .container { width: 650px; padding: 20px 24px; border-radius: 5px; border: 1px solid #ddd; margin-top: 24px; } </style> 完成以上步骤,就已经掌握了 TinyVue 组件的基本用法了,打开页面查看,如果显示以下页面,那么准备工作就完毕了~ 3.实现样式切换 下面来准备第三步,实现样式上的切换,开始实现之前,首先简单介绍一下 TinyVue 主题适配的原理。 原理: 在页面打开控制台,查看 button 的样式,可以看到样式属性值都是使用的 css var 变量。这些变量都以 ti-button 开头,这些可以称之为组件级变量。 通常情况下,相同类型(成功类型)的背景色、文本色等在不同组件中属性值相同,因此组件库定义了这部分常用到公共变量。而绝大多数组件级变量也都是使用的公共变量。 本次实验中 Button 和 Alert 的组件级变量的背景色正是使用的同一个公共变量ti-common-color-success-bg 主题适配的原理就是覆盖这些 css var 变量的值,去达到改变样式的效果。了解了原理后,就可以开始实现样式切换了。 实战: 在 components 文件夹下,新建ChangeTheme.vue文件, 编写切换样式逻辑。 这里使用 TinyVue 内置的 theme-tool 切换主题工具,只需要定义好相应主题变量的值即可,工具就会自动完成覆盖变量值的操作。 然后引入 Radio 组件,选中不同值时切换不同的主题,引入 theme-tool 工具,尝试修改上文提到的公共变量ti-common-color-success-bg,这里先设置为测试值 green 查看效果。 <script setup> import { Radio as TinyRadio, RadioGroup as TinyRadioGroup, } from "@opentiny/vue"; import TinyThemeTool from "@opentiny/vue-theme/theme-tool"; import { ref } from "vue"; const theme = ref("tiny-vue"); const themeTool = new TinyThemeTool(); const elementTheme = { id: "element-theme", name: "elementTheme", cnName: "饿了么主题", data: { "ti-common-color-success-bg": "green", }, }; const emit = defineEmits(["change-theme"]); const changeTheme = (theme) => { themeTool.changeTheme(theme === "element" ? elementTheme : null); emit("change-theme", theme); }; </script> <template> <tiny-radio-group v-model="theme" @change="changeTheme"> <tiny-radio label="tiny-vue"></tiny-radio> <tiny-radio label="element"></tiny-radio> </tiny-radio-group> </template> 在App.vue中引入并使用ChangeTheme组件 // script下新增 import ChangeTheme from "./components/ChangeTheme.vue"; // template下新增 <change-theme></change-theme> 接着打开页面查看效果,切换主题时,成功按钮和成功类型的 alert 背景颜色都变为 green 了~ 然后可以对比 element 组件样式差异:https://element-plus.org/zh-CN/component/button.html 将背景色、文字色等 css 属性修改为与 element 一致,当然也可以自己发挥,DIY 自己的主题。以下是一份参考配置: const elementTheme = { id: "element-theme", name: "elementTheme", cnName: "饿了么主题", data: { // 设置公共变量 "ti-common-color-primary-bg": "#409eff", "ti-common-color-primary-normal": "#409eff", "ti-common-color-success-bg": "#f0f9eb", "ti-common-color-success-normal": "#67c23a", "ti-common-color-info-bg": "#f4f4f5", "ti-common-color-info-normal": "#909399", "ti-common-color-warn-bg": "#fdf6ec", "ti-common-color-warn-normal": "#e6a23c", "ti-common-color-danger-bg": "#fef0f0", "ti-common-color-danger-normal": "#f56c6c", // 设置button相关样式属性 "ti-button-size-normal-height": "32px", "ti-button-border-radius": "4px", "ti-button-font-size": "14px", // 设置alert相关样式属性 "ti-alert-border-radius": "6px", "ti-alert-close-font-size": "14px", "ti-alert-description-font-size": "14px", "ti-alert-success-close-icon-color": "#a8abb2", "ti-alert-simple-close-icon-color": "#a8abb2", "ti-alert-error-close-icon-color": "#a8abb2", "ti-alert-warning-close-icon-color": "#a8abb2", "ti-alert-success-title-text-color": "#67c23a", "ti-alert-simple-title-text-color": "#909399", "ti-alert-warning-title-text-color": "#e6a23c", "ti-alert-error-title-text-color": "#f56c6c", "ti-alert-border-weight": "0px", }, }; 4.图标的适配 完成以上三步,此时 css 样式部分已经适配完毕。但是和 element 主题还是会有差别,仔细对比发现,element 主题是没有图标的。 而对于图标的隐藏,其实也可以通过 css var 变量的方式去实现,但是只能控制图标的显示和隐藏,无法实现不同主题下展示不同的图标,因此对于图标的适配,组件库采用配置的方式去实现。 以下是组件库代码截图,组件库对于图标,预留了配置项,组件库提供 ConfigProvider 组件来实现适配不同设计规范之间的图标和逻辑。 在App.vue文件下,引入 ConfigProvider,定义 designConfig,因为 element 是没有图标,因此配置为返回 null。定义切换方法 changeDesign,在切换样式的同时切换主题配置。 import { ConfigProvider } from "@opentiny/vue"; import { ref } from "vue"; const elementConfig = { name: "elementConfig", // 自定义规范名称 components: { Alert: { icons: { warning: () => null, success: () => null, error: () => null, }, }, }, }; const designConfig = ref({}); const changeDesign = (val) => { console.log(val === "element"); designConfig.value = val === "element" ? elementConfig : {}; }; 在模板中使用 ConfigProvider,传入主题配置。因为主题配置为非响应式更新,因此需要配置一下 key,切换配置后重新加载一下。 <template> <change-theme @change-theme="changeDesign"></change-theme> <config-provider :design="designConfig" :key="designConfig.name"> <div class="theme-app"> <div class="container"> <button-demo></button-demo> </div> <div class="container"> <alert-demo></alert-demo> </div> </div> </config-provider> </template> 配置完 designConfig 后,图标问题也解决了~ 5.交互的适配 完成以上4点,已经完成了 Button 组件和 Alert 组件的类 element 主题适配了,第5点属于拓展内容,试想一下,如果 element 主题在关闭 alert 前,需要弹出确认框确认,应该如何适配? 得益于 TinyVue 的 renderless 架构,可以很轻易地实现逻辑的替换,从而适配不同交互规范。对原理感兴趣的话,可以查看往期文章《手把手教你实现 miniTinyVue 版组件库》 这里直接贴实现方式,在 elementConfig 中新增替换 handleClose 的配置。 const elementConfig = { name: "elementConfig", // 自定义规范名称 components: { Alert: { icons: { warning: () => null, success: () => null, error: () => null, }, // 可以通过renderless重写某个方法,自定义交互逻辑 renderless: (props, hooks, { emit }, api) => { const state = api.state; return { handleClose() { const isClose = confirm("是否确认关闭?"); if (isClose) { state.show = false; } }, }; }, }, }, }; 打开页面,尝试关闭其中一个 alert,发现关闭前会弹出确认框。至此,样式、图标以及交互的适配都完成了~ 总结 至此,本次实操体验已全部完成。相信通过本次实操体验,你已经对 TinyVue 跨设计规范的原理以及相关工具有一个初步了解了~ 如果你感兴趣,完全通过theme-tool和config-provider打造一套属于自己的主题 ~ 关于OpenTiny OpenTiny 是一套企业级 Web 前端开发解决方案,提供跨端、跨框架、跨版本的 TinyVue 组件库,包含基于 Angular+TypeScript 的 TinyNG 组件库,拥有灵活扩展的低代码引擎 TinyEngine,具备主题配置系统TinyTheme / 中后台模板 TinyPro/ TinyCLI 命令行等丰富的效率提升工具,可帮助开发者高效开发 Web 应用。 欢迎加入 OpenTiny 开源社区。添加微信小助手:opentiny-official 一起参与交流前端技术~ OpenTiny 官网:https://opentiny.design/ OpenTiny 代码仓库:https://github.com/opentiny/ TinyVue 源码:https://github.com/opentiny/tiny-vue TinyEngine 源码: https://github.com/opentiny/tiny-engine 欢迎进入代码仓库 Star?*TinyEngine、TinyVue、TinyNG、TinyCLI~ 如果你也想要共建,可以进入代码仓库,找到 good first issue标签,一起参与开源贡献~

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

干货分享 | HZERO系列组件之数据分发组件(一),广播表快速入门

企业的信息化系统,通常会存在业务系统服务和HZERO系统服务相互独立,表数据也进行分库存储的情况,然而在众多业务系统服务中,存在很多场景需要用到HZERO平台的Iam_user(用户)表,因此我们需要将用户表分发到其他数据库里。 普通的解决方式是通过定时调度任务或者在代码中埋点,编写同步代码的方式让两个系统两个数据库实例的用户数据保持一致。 但设想一下,如果我们需要同步的不仅仅是用户,还有角色、用户权限、员工、组织、部门等等数据呢?编写代码的方式不仅会增加开发量,还可能会有数据延迟、程序BUG等影响。 所以这里要引入数据分发组件,在保障同步性能的同时,能大大降低数据分发的工作量。 数据分发组件概述 基于CloudCanal社区版,HZERO提供了一个集成组件,进行API和操作流程的封装,主要功能是实现全局表的数据分发功能,灵活设置可按服务分DB,该组件主要的使用场景包括需要用到全局表的情况,例如用户表等。 当然,不使用HZERO的操作入口,从CloudCanal官方提供的管理界面进行配置也能达到效果,不过在这我们还是建议使用HZERO进行统一的管理。 组件坐标 管理端组件在Hzero-Admin服务中依赖使用。 <dependency> <groupId>org.hzero.plugin</groupId> <artifactId>admin-datasync</artifactId></dependency> 组件配置说明 在Hzero-Admin服务中添加好依赖后,还需配置以下信息才能正常使用。 hzero: admin: cloudCanal: # 服务地址, 安装CloudCanal组件后,CloudCanal的访问地址 serverUrl: ${HZERO_CLOUDCANAL_SERVER_URL:http://cloudcanal.hzero.com} # 应用KEY,从CloudCanal的管理员用户账号信息中获取,与appSecret相对应,具体获取方式可参考`CloudCanal`的官方文档 appKey: ${HZERO_CLOUDCANAL_APP_KEY:ak**********************************} # 应用秘钥,从CloudCanal的管理员用户账号信息中获取,与appKey相对应,具体获取方式可参考`CloudCanal`的官方文档 appSecret: ${HZERO_CLOUDCANAL_APP_SECRET:sk*********************************} # 管理帐户,CloudCanal的管理员账户 account: ${HZERO_CLOUDCANAL_ACCOUNT:test@clougence.com} # 管理密码,CloudCanal的管理员账户的密码 password: ${HZERO_CLOUDCANAL_PASSWORD:********************} # 登录认证Cookie域,需要保证CloudCanal的访问地址要与hzero的界面前端在同一个域里,否则不能以无登录的方式直接跳转到CloudCanal的管理界面 domainUrl: ${HZERO_CLOUDCANAL_DOMAIN_URL:.hzero.com} 组件安装 安装教程 详细教程可参考以下路径:https://www.clougence.com/cc-doc/quick/quick_start/ 修改默认验证码 CloudCanal社区版为了体验便利,默认设置了777777验证码,但是我们希望提高数据安全性,降低数据泄露风险。CloudCanal也提供修改默认验证码的功能,我们按照以下步骤配置即可。 操作步骤: 1、进入CloudCanal社区版解压目录 /console_data/cloudcanal/console/conf; 2、编辑Business-output.properties文件和以下参数Console.config.product.trial.verify_code=777777; 3、重启Console容器。 准备数据库账号 CloudCanal在做MySQL源端或对端的数据迁移同步时,需要提供的账号有一些赋权,基于数据安全和规范的考虑,我们建议新建数据库账号,不要使用权限最大的账号。 MySQL源端 全量迁移:迁移库表的SELECT权限,Information_schema SELECT权限 增量同步:SELECT,REPLICATION SLAVE,REPLICATION CLIENT权限,Information_schema SELECT权限 MySQL对端 全量迁移/增量同步:迁移库表的 INSERT/UPDATE/DELETE/DDL权限,Information_schema SELECT权限 系统自动心跳(可选) 默认心跳语句:CREATE DATABASE权限 组件基础配置 新建MYSQL数据源 路径:平台层菜单平台治理>数据分发>CloudCanal 通过以上路径进入CloudCanal管理界面。 目前HZERO系统能方便管理的只有MySql类型,若要分发其他类型数据库,请参照官方文档直接在CloudCanal系统中配置 : 1、可以使用阿里云账号,也可以使用自建账号密码模式(一般习惯用账号密码模式,权限分配比较简单); 2、网络地址最好填写内网,避免网络延迟; 3、按步骤填写后点击测试链接。 创建来源表 路径:平台层菜单平台治理>数据分发>广播表通过以上路径进入广播表管理界面 点击广播表操作栏上的【新建】按钮进入来源表创建页面。依次选择集群,网关类型为公网,数据源为我的数据源,库为Hzero_platform,表为Iam_user,点击【确定】后完成来源表的创建。 创建目标表 选中刚创建的来源表,点击目标表操作栏上的 新建按钮进入目标表创建页面。依次选择网关类型为公网,数据源为我的数据源,库为Order_sys,表不做更改, 默认与来源表保持一致,为Iam_user,点击确定后完成目标表的创建。 重复以上操作,只是这次库选择Payment_sys。 等待片刻,分别进入数据库的Order_sys与Payment_sysDB,可以看到Iam_user数据已经同步过来,而且后续的其他操作也会同步到其他两个DB中的对应表里。 通过以上几步简单的配置,就能完成两个数据库实例间的数据同步,不仅避免定时任务同步、代码埋点同步带来的一系列问题,而且CloudCanal是通过监听MySQL的增量日志实现的增量同步,在不影响应用服务器性能的情况下,正常情况下延迟不会超过1秒。 下篇我们将讲述数据分发组件之ElasticSearch同步方案,敬请期待。 联系我们 产品试用请登录开放平台。请在 PC 端打开: https://open.hand-china.com/market-home/trial-center/ 产品详情请登录开放平台: https://open.hand-china.com/document-center/ 如有疑问登录开放平台提单反馈: https://open.hand-china.com/ ▲ 更多精彩内容,扫码关注“四海汉得”公众号​​​​​​​

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

五分钟快速入门 实战 Docker,工作这些命令就够用了

现在很多公司项目部署都是采用K8S docker容器方式,出门面试被问的概率极大,如果被面试官问docker相关知识点直接懵逼,那么基本就是被pass了,除非其他方面技术过硬。所以这种相对前沿的技术,就算达不到精通的程度,起码还是要了解基础理论和操作 一.安装docker Docker要求运行在Centos 7上,要求系统为64位,系统内核版本3.10以上 uname -an查看当前系统版本 yum -y install docker下载安装docker service docker start启动docker服务 docker version检查docker是否安装成功 当看到下图的信息,就是表示本机docker已经安装成功,很简单 在这里插入图片描述 二.镜像操作 创建容器要以镜像为基础,所以先讲下docker镜像的操作 搜索镜像 docker images ll查看下本机的是否已经有了镜像 目前机器里还没有镜像,去Docker Hub下载(镜像还可自定义,这里就不细说了) docker search java,还能指定具体的版本进行下载, 例如:docker search Ubuntu:1.2.5.4,可以进行搜docker Hub 会列出很多镜像 在这里插入图片描述 下载镜像 docker pull docker.io/nginx进行下载 下载到本地的镜像要比docker Hub上搜索出来的要大,因为下载过程中自动解压了,在查看镜像列表就有了刚才下载的镜像 列表包含了仓库名,版本标签,镜像ID,创建时间以及所占用的空间 在这里插入图片描述 删除镜像 删除没用的镜像docker rmi 镜像id 在这里插入图片描述 三.容器的操作 前边我们已经下载好了Nginx的镜像,接下来我们就创建一个只有Nginx应用的容器 docker run -i -t/bin/bash -i:标准输入给容器 -t:分配一个虚拟终端 /bin/bash:执行bash脚本 dockerrun-idt--namecontainer_nginx-p8080:80docker.io/nginx 启动一个使用镜像docker.io/nginx,名字container_nginx的容器,-p 8080:80表示将容器的80端口映射到主机的8080端口,这样我们只要访问主机的8080端口就可以访问到容器的服务了。 注意:name前面是两个-, 端口前面有-p,docker.io/nginx是镜像名,8080是主机的端口,80是Nginx应用的端口 主机上的一个端口只能映射一个容器端口,不可以多个容器端口对应一个主机端口(如果容器安装的centos类的系统,那么容器端口随便设定,但如果容器内只是单纯的应用,那么容器端口要是应用自身的端口) 在这里插入图片描述 这样我们就创建并启动了一个容器! exit退出容器 docker ps查看运行中的容器 docker ps -a查看运行中和非运行中的所有容器 docker exec -it container_nginx /bin/bash进入容器 如果容器还未启动 执行docker start container_nginx 进入容器后启动Nginx whereis nginx 找Nginx的启动目录 [root@iz2zehzeir87zi8q99krk1z~]#dockerstartcontainer_nginx container_nginx [root@iz2zehzeir87zi8q99krk1z~]#dockerexec-itcontainer_nginx/bin/bash root@84683e425116:/#whereisnginx nginx:/usr/sbin/nginx/usr/lib/nginx/etc/nginx/usr/share/nginx root@84683e425116:/#/usr/sbin/nginx 此时在浏览器访问 http://51.110.218.9:8080/ 就可以直接访问容器内的Nginx 在这里插入图片描述 如果访问不成功,可能是主机端口的防火墙开着,执行下边的命令关闭 /sbin/iptables-IINPUT-ptcp--dport8080-jACCEPT 由于我用的阿里云服务器,所以需要在阿里云把8080端口开放 在这里插入图片描述 删除容器 容器删除之前先将容器停止 docker stop container_nginx或者是容器的id docker rm -f container_nginx容器删除 docker start 与 docker run 的区别 docker start name启动一个已经创建的容器 docker run创建并启动一个容器 docker run命令其实是docker create和docker start的命令组合,先执行docker create创建一个容器 再接着docker start启动 主机和容器文件相互复制 从主机复制到容器sudodockercphost_pathcontainerID:container_path 从容器复制到主机sudodockercpcontainerID:container_pathhost_path 请注意,以上这两个命令都是在主机中执行的,不能再容器中执行 dockercpcontainer_nginx:/usr/local/xin.txt/usr/local/software/容器向主机复制文件 dockercp/usr/local/xinzhifu.txtcontainer_nginx:/usr/local/主机向容器复制文件 这样一个基础的docker容器就创建完了 。。。。。。。。。。。。 反过来大家再看一看docker的容器与镜像的区别https://www.cnblogs.com/linjiaxin/p/7381421.html 那么其实镜像与容器的本质区别并不大,那么镜像可以生成容器 ,容器是否可以做成镜像呢? docketcommitcontainer_nginximage_nginx:v1 在这里插入图片描述 container_nginx容器名 image_nginx:v1自己起一个镜像的名字:版本号 这样做有什么好处呢? 例如:A、B两台机器都想安装redis,A机器上创建容器并在容器中做好redis的一切配置,让后将这个容器docker commit 成镜像image_redis,B机器也想要安装redis,直接用镜像image_redis创建容器就行了,docker就是做这样一劳永逸的事情。 而且传统方式得在每台机器上安装配置redis非常麻烦 四.镜像的导入与导出 镜像压缩打包 (主机上进行操作),有两种方式docker save与docker load和docker export 与 docker import dockersavenginx|gzip>nginx_xin_image.tar.gz将现有的镜像压缩打包 dockerload-inginx_xin_image.tar.gz压缩的镜像解压 dockerimages进行查看 docker save是直接将镜像进行打包docker save <镜像名>或<镜像id> dockerexportcontainer_nginx>nginx_image.tar catnginx_image.tar|sudodockerimport-nginx_image:import docker export是直接将容器进行打包docker export <容器名>或<容器id> 需要注意两种方法配套的,切不可混用。虽然导入导出时没问题,但是在创建容器时候会报错 如果使用import导入save产生的文件,虽然导入不提示错误,但是启动容器时会提示失败, 会出现类似"docker: Error response from daemon: Container command not found or does not exist"的错误。 类似,使用load载入export产生的文件,也会出现问题。 先写到这,文章略显粗糙,希望对您有一点用,学无止境加油! 整理了几百本各类技术电子书,有需要的同学公号[程序员内点事]内回复[666]自取。技术群快满了,想进的同学可以加我好友,和大佬们一起吹吹技术。

资源下载

更多资源
Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

JDK

JDK

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text

Sublime Text

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