Amp

MySQL主从网络延迟解决

喜欢而已 提交于 2021-01-10 21:49:14
背景: 由于业务要求,需要在国外和国内两台服务器之间做数据库主从,由于业务也不是很大,就简单部署了个主从就用了,开始也没什么问题,最近一段时间,可能是跨国网络不稳定,在主库上更新的内容,从库上迟迟没有更新 问题分析: 上数据库查发现IO thread的running状态是YES,SQL thread的running状态是正常的,但是从库Pos差了主库很多,而且 Seconds_Behind_Master值也一直在增加,从库也没有报任何故障,主库也正常,看来是网络不稳定,从库没有从主库上dump? 在MySQL的复制协议里,由Slave发送一个COM_BINLOG_DUMP命令后,就完全由Master来推送数据,Master、Slave之间不再需要交互。 如果 Master 没有更新,也就不会有数据流,Slave 就不会收到任何数据包。但是如果由于某种原因造成 Master 无法把数据发送到 Slave ,比如发生过网络故障或其他原因导致 Master 上的 TCP 连接丢失,由于 TCP 协议的特性,Slave 没有机会得到通知,所以也没法知道收不到数据是因为 Master 本来就没有更新呢还是由于出了故障 为什么延迟后从库没有去重新链接主库吗? 其实从库和主库之间有重试机制,整个重试过程是 当从库发现从主库上无法获得更多的数据了,就会等待slave_net_timeout时间

拇指射箭 ! Cocos Creator 3D !

拜拜、爱过 提交于 2021-01-10 07:25:05
拇指射箭!你能射中靶心么? 效果预览 配置环境: cocos creator 3d v1.0.0 玩法介绍: 长按屏幕,拖动瞄准,放手发射。风向、重力和距离影响最终结果!越靠近中心得分越高!最高分10分! 实现原理 流程图: 镜头控制: 采用两个摄像机控制镜头显示。一个是发射视角的摄像机;另一个是绑定在箭节点的摄像机,会跟随箭一起移动。通过控制摄像机节点的 active 实现镜头切换。 弓箭控制: 通过触摸移动的距离乘以一个调控系数,控制弓箭的位置。 private onTouchMove(touch: Touch) { const delta = touch.getDelta(); this .NodePos_bows.x -= delta.x * CONST_TOUCH_FACTOR; this .NodePos_bows.y += delta.y * CONST_TOUCH_FACTOR; } 为所有需要控制位置的节点写了一个通用的组件脚本。只要为节点添加这个脚本,就可以通过设置 x,y,z 调整位置。 export class NodePos extends Component { private _curPos: Vec3 = cc.v3(); start() { this ._curPos = this .node.position; } get x() {

前端笔记之移动端&响应式(上)媒体查询&Bootstrap&动画库&zepto&velocity

这一生的挚爱 提交于 2021-01-09 17:05:58
一、 媒体 ( 介 ) 查询 1.1 基本语法 媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成。媒体查询中可用于检测的媒体特性有: width 、 height 和 color (等)。使用媒体查询可以在不改变页面内容的情况下,为特性的一些输出设备定制显示效果。 使用 @media 查询,你可以针对不同的 媒体类型 ( 媒体、媒介 ) 定义不同的样式。 @media 可以针对不同的 屏幕尺寸 设置不同的样式,特别是如果你需要设置设计响应式的页面, @media 是非常有用的。 基本语法: @media 约束词 媒体类型 修饰词 宽高限制 {css 代码 } @media 媒体类型 and|not|only (媒介约束条件) { CSS-Code; } 咱们页面渲染的 媒介 指的就是:电脑、手机、平板、手表、打印机 ··· 1.2 查询条件 max-width:999px; 最大宽度(当设备小于或等于 999px 时执行) min-width:999px; 最小宽度(当设备大于或等于 999px 时执行) @media ( 条件 1) and ( 条件 2){ 条件 1 和条件成立执行的 CSS 样式 } /* 当屏幕尺寸大于或等于1000px,并且 小于或等于1199px */ @media (min-width: 1000px) and (max-width:

人物-发明家-贝尔:亚历山大·贝尔

大城市里の小女人 提交于 2021-01-09 10:44:59
ylbtech-人物-发明家-贝尔:亚历山大·贝尔 亚历山大·格拉汉姆·贝尔(Alexander Graham Bell,1847年3月3日-1922年8月2日), 美国 发明家、企业家。 他获得了世界上第一台可用的 电话机 的专利权 ,创建了 贝尔电话公司( AT&T 公司的前身) 。关于电话的发明者尚存争议,美国国会2002年6月15日判定 意大利人 安东尼奥·梅乌奇 为电话的发明者, 加拿大国会 则于2002年6月21日通过决议,重申贝尔是电话的发明者,另外一部分人则认为 伊莱沙·格雷 是电话的发明者。 2004年,在加拿大广播公司举办的“最伟大的加拿大人”评选中,他被电视观众评选“十大杰出 加拿大人 ” 。 1. 返回顶部 1、 中文名:亚历山大·格拉汉姆·贝尔 外文名:Alexander Graham Bell 别 名:亚历山大·贝尔 国 籍:美国 民 族: 苏格兰 裔 出生地: 爱丁堡 出生日期:1847年(丁未年)3月3日 逝世日期:1922年8月2日 职 业:学者、发明家、企业家 毕业院校:伦敦大学;爱丁堡皇家高等学校 信 仰: 基督教 主要成就:被誉为“电话之父” 性 别:男 目录 1 人物生平 2 人物年表 3 主要成就 4 人物轶事 ▪ 发明神童 ▪ 学校 ▪ 放弃教授 ▪ 梦想 ▪ 婚姻家庭 ▪ 博览会 ▪ 发明电话 ▪ 伟人离世 5 电话发展 6 名人名言

(转)外网如何访问docker容器

﹥>﹥吖頭↗ 提交于 2021-01-09 08:57:08
借鉴: https://blog.csdn.net/lvshaorong/article/details/69950694 <div class="htmledit_views" id="content_views"> <p>Docker容器非常轻量,系统开销非常少,比VMware或者<a href="https://www.baidu.com/s?wd=VirtualBox&tn=24004469_oem_dg&rsv_dl=gh_pl_sl_csd" target="_blank">VirtualBox</a>用起来方便,部署起来也非常容易。官方推荐我们通过端口映射的方式把Docker容器的服务提供给宿主机或者局域网其他容器使用。一般过程是:</p><p>1、Docker进程通过监听宿主机的某个端口,将该端口的数据包发送给Docker容器</p><p>2、宿主机可以打开防火墙让局域网其他设备通过访问宿主机的端口进而访问docker的端口</p><p>这里以CDNS为例,CDNS是一个用于避免DNS污染的程序,通过CDNS可以把你的计算机变成一个抗污染的DNS服务器提供给局域网使用。Docker镜像下载地址:https://hub.docker.com/r/alexzhuo/cdns/</p><p><br></p><p>原理是在Docker容器中启动CDNS,监听53端口

拇指投篮 ! Cocos Creator 3D !

↘锁芯ラ 提交于 2021-01-09 05:44:28
你的命中率是多少呢?文章底部试玩! 效果预览 配置环境: Cocos Creator 3D v1.0.1 玩法说明: 触摸屏幕,向上滑动投篮!注意篮板是会移动的哦!看看你的命中率是多少! 实现原理 为了能达到好的投篮效果,在网上找了一个投篮机参数,大致按照实际参数设置篮框大小,球的大小,以及篮框的位置。 碰撞器: 篮板直接使用 盒碰撞器组件(BoxColliderComponent),篮球使用的是 球碰撞器组件(SphereColliderComponent)。 因为没有 圆环碰撞器组件,所以对于篮球框用了多个 球碰撞器组件 实现碰撞检测。 小球轨迹: 由于完全采用了物理引擎计算,要让小球轨迹如我们所预期一样,得遵循物理原理。这里需要的知识是 位移与加速度、速度、时间的关系。 我们可以分为三个方向来考虑,需要计算初始速度 V_z 和 V_y 。在 Z 轴方向可以看作匀速运动,Y 轴方向为匀加速运动。其中 Z 轴 和 Y 轴 的位移我们已经设定好了,我们只需要设定抛球时间 t 就可以计算出初速度。注意 Y 轴的末速度要满足与初速度相反,才能达到图中抛物线的效果哦。参考计算方式如下: const CONST_H = 1.25 ; const CONST_S = 2.3 ; const CONST_G = -10 ; const CONST_T = 0.8 ; const CONST_V

xxl-job源码分析

青春壹個敷衍的年華 提交于 2021-01-08 19:57:58
1 调度中心API服务 1、任务结果回调服务; 2、执行器注册服务; 3、执行器注册摘除服务; 4、触发任务单次执行服务,支持任务根据业务事件触发; API暴露代码:com.xxl.job.admin.controller.JobApiController.java API服务位置:com.xxl.job.core.biz.AdminBiz.java 通过请求参数匹配对应方法反射执行后把结果返回给客户端,见代码com.xxl.rpc.remoting.provider.XxlRpcProviderFactoryinvokeService方法invokeService 2 任务注册/ 执行器 注册 任务注册以 "执行器" 为最小粒度进行注册; 每个任务通过其绑定的执行器可感知对应的执行器机器列表;注册表: 见"XXL_JOB_QRTZ_TRIGGER_REGISTRY"表。 "执行器" 注册代码见com.xxl.job.core.thread.ExecutorRegistryThread方法start,在 "执行器" 启动时通过远程调用 com.xxl.job.core.biz.AdminBiz 方法注册。 "执行器" 在进行任务注册时将会周期性维护一条注册记录,即机器地址和AppName的绑定关系; "调度中心" 从而可以动态感知每个AppName在线的机器列表; 执行器注册:

构建安全可靠、最小化的 Docker 镜像

血红的双手。 提交于 2021-01-08 18:29:22
容器化部署越来越多的用于企业的生产环境中,如何构建可靠、安全、最小化的 Docker 镜像也就越来越重要。本文将针对该问题,通过原理加实践的方式,从头到脚帮你撸一遍。 构建镜像 手动构建 手动构建 Docker 镜像的流程图,如下: 现在依次按照流程采用命令行的方式手动构建一个简单的 Docker 镜像。 创建容器并增加文件 取 BusyBox 作为本次试验的基础镜像,因为它足够小,大小才 1.21MB。 $: docker run -it busybox:latest sh / # touch /newfile / # exit 通过以上的操作,我们完成了流程图的前三步。创建了一个新容器,并在该容器上创建了一个新问题。只是,我们退出容器后,容器也不见了。当然容器不见了,并不表示容器不存在了,Docker 已经自动保存了该容器。如果在创建时,未显示设置容器名称,可以通过以下方式查找该消失的容器。 # 列出最近创建的容器 $: docker container ls -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c028c091f964 busybox:latest "sh" 13 minutes ago Exited (0) 27 seconds ago upbeat_cohen # 查询容器的详情 $:

轻应用命令行工具

陌路散爱 提交于 2021-01-08 15:26:18
1、前言 这里主要介绍轻应用的命令行工具,即用于轻应用的辅助开发,以简单的命令行方式运行在Mac或Windows电脑上的工具。命令行工具主要是用来推送设备 应用脚本 到设备端,并拥有一套完整的命令,可以完成设备的应用热更新、运维服务、日志服务等。 2、工具包 获取 Mac版 Windows版 介绍 命令行工具文件目录如下: ├── amp # 命令行工具 ├── app # 应用脚本 │ ├── app.json │ └── app.js └── bindings.node # 本地更新库 打开 app.js ,这里就运行了我们的业务应用代码,默认打印系统信息。 3、准备工作 如果想了解工具中的本地热更新命令,需要通过MicroUSB数据线连接开发板与PC,具体请参考以下链接中的设备连接介绍。 HaaS100 HaaS600 Kit 4、命令行 4.1、命令名称 $ amp IoT轻应用 命令行工具 可以对设备进行热更新操作,支持 本地热更新 和 在线热更新 功能。 Mac版需要设置执行权限: chmod +x ./amp 。 Mac上执行amp命令时会遇到权限问题,详见第6部分。 4.2、命令总览 功能 命令 描述 示例 在线热更新 login 命令行登录 amp login <your-token> device list 列出绑定的设备 amp device list put

AWS 如何配置 Bucket 的 CORS

為{幸葍}努か 提交于 2021-01-08 07:54:08
在 AWS 中如何配置 Bucket 的 CORS。 因为我们有时候需要进行跨域访问。 请参考文章: https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html#how-do-i-enable-cors 中的内容。 下面的配置参数为规则的配置参数: <CORSConfiguration> <CORSRule> <AllowedOrigin>http://www.example1.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader> </CORSRule> <CORSRule> <AllowedOrigin>http://www.example2.com</AllowedOrigin> <AllowedMethod>PUT</AllowedMethod> <AllowedMethod>POST</AllowedMethod> <AllowedMethod>DELETE</AllowedMethod> <AllowedHeader>*</AllowedHeader>