Periodic

运维之etcd经验

我是研究僧i 提交于 2020-08-09 16:04:15
前言 etcd 是一个不错的注册中心。作为团里里面第一个试水的小组,我们是遇到不少问题。 etcd中文文档 etcd中文文档 etcd官方英文文档 安装细节 没有使用官网的方式,而是使用读取配置文件的方式,这种方便管理,配置等。 创建目录,下载,解压 设置API版本号 vim /etc/profile export ETCDCTL_API=3 source /etc/profile 创建数据,配置,日志文件目录 创建配置文件 单节点配置文件 集群配置文件 把配置写入到配置文件里面 把etcd 与etcd-cli变成命令 启动etcd 前端启动,注意启动后 ./etcd --config-file etcd.conf 后台启动并且开启远程访问 nohup ./etcd --config-file ./conf/etcd.conf > ./logs/etcd.log 2>&1 & 集群前端启动,注意启动后 ./etcd --config-file etcd.cluster.conf 集群后台启动并且开启远程访问 nohup ./etcd --config-file ./conf/etcd.cluster.conf > ./logs/etcd.log 2>&1 & 注意:启动后关闭不了,直接杀进程。开启远程访问需要带命令。 8,. 租约 9. 网络 问题 etcd API版本问题

JDK9的新特性:JVM的xlog

故事扮演 提交于 2020-08-09 12:25:38
简介 在java程序中,我们通过日志来定位和发现项目中可能出现的问题。在现代java项目中,我们使用log4j或者slf4j,Logback等日志记录框架来处理日志问题。 JVM是java程序运行的基础,JVM中各种事件比如:GC,class loading,JPMS,heap,thread等等其实都可以有日志来记录。通过这些日志,我们可以监控JVM中的事件,并可以依次来对java应用程序进行调优。 在JDK9中引入的Xlog日志服务就是为这个目的而创建的。 通过xlog,JDK将JVM中的各种事件统一起来,以统一的形式对外输出。通过tag参数来区分子系统,通过log level来区分事件的紧急性,通过logging output来配置输出的地址。 更多内容请访问 www.flydean.com xlog的使用 先看一个最简单的xlog的使用例子: java -Xlog -version 输出结果: [0.016s][info][os] Use of CLOCK_MONOTONIC is supported [0.016s][info][os] Use of pthread_condattr_setclock is not supported [0.016s][info][os] Relative timed-wait using pthread_cond_timedwait is

定时器线程池(ScheduledThreadPoolExecutor)

余生长醉 提交于 2020-08-07 04:22:32
前言 定时器线程池提供了定时执行任务的能力,即可以延迟执行,可以周期性执行。但定时器线程池也还是线程池,最底层实现还是ThreadPoolExecutor,可以参考我的另外一篇文章多线程–精通ThreadPoolExecutor。 特点说明 1.构造函数 public ScheduledThreadPoolExecutor(int corePoolSize) { // 对于其他几个参数在ThreadPoolExecutor中都已经详细分析过了,所以这里,将不再展开 // 这里我们可以看到调用基类中的方法时有个特殊的入参DelayedWorkQueue。 // 同时我们也可以发现这里并没有设置延迟时间、周期等参数入口。 // 所以定时执行的实现必然在DelayedWorkQueue这个对象中了。 super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue()); } 2.DelayedWorkQueue DelayedWorkQueue是在ScheduledThreadPoolExecutor的一个内部类,实现了BlockingQueue接口 里面存放任务队列的数组如下: private RunnableScheduledFuture<?>[] queue = new

ubuntu18.04关闭系统自动更新有两个方法:

我们两清 提交于 2020-08-06 09:51:18
1.修改配置文件 修改配置文件 /etc/apt/apt.conf.d/10periodic #0是关闭,1是开启,将所有值改为0 vim /etc/apt/apt.conf.d/10periodic APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Download-Upgradeable-Packages "0"; APT::Periodic::AutocleanInterval "0"; 上面的这个做法可能需要执行如下命令才行: sudo vim /etc/apt/apt.conf.d/10periodic 这个是提升当前用户权限为超级用户,否则是以只读方式打开文件,修改后无法保存。 另外,上面的这个命令是用 vim编辑器打开配置文件/etc/apt/apt.conf.d/10periodic 打开以后应该按按键 i 切换到插入模式,然后才能正常使用键盘对文件进行编辑。 编辑完以后,先按 ESC按键,然后按冒号按键再输入“wq!”表示保存并退出编辑器。 2.界面操作 菜单栏点 系统 -> 首选项 -> 启动应用程序 -> 更新提示 把选项前面的钩打掉,从不更新,关闭即可 来源: oschina 链接: https://my.oschina.net/u/4313158/blog/4303868

Flutter学习笔记(40)--Timer实现短信验证码获取60s倒计时

不打扰是莪最后的温柔 提交于 2020-08-04 22:20:35
如需转载,请注明出处: Flutter学习笔记(40)--Timer实现短信验证码获取60s倒计时 先看下效果: 两种需求场景: 1.广告页3s后跳转到首页 2.短信验证码60s倒计时 第一种的话,根据需求我们可以知道,我们想要的效果就是3s结束做出一个动作。 factory Timer(Duration duration, void callback()) { if (Zone.current == Zone.root) { // No need to bind the callback. We know that the root's timer will // be invoked in the root zone. return Zone.current.createTimer(duration, callback); } return Zone.current .createTimer(duration, Zone.current.bindCallbackGuarded(callback)); } 两个参数,第一个参数超时时间,即多久后执行你想要的动作,第二个参数callback回调方法,即超时后你想要执行的动作是什么,比如跳转到首页。 第二种的话就是需要不断的做出倒计时的动作。 factory Timer.periodic(Duration duration, void

STM32L0开发——ADC多通道采集,IDE和IAR开发注意事项

故事扮演 提交于 2020-05-06 02:08:16
keil开发L0系列是免费的,官方提供许可的。因此建议Keil开发, L011F3由于flash只有8K,因此不建议HAL库,建议使用cubemx+LL(或snippets库)。 0、起初,可以参考官方库中自带的例程,有LL例程,MIX(LL+HAL混合)例程,HAL例程,snippets(基于L053)例程。 建立自己的工程,如果不太熟悉L0系列,可以使用cubemx来进行配置,生成最基本的工程模板,然后可以再结合例程,移植到工程当中, 1、使用cubemx新建LL库的基本例程,可以把GPIO+UART的配置可以完成。 2、LL库中有ADC_MultiChannelSingleConversion的例程,目录在\STM32Cube_FW_L0_V1.11.0\Projects\NUCLEO-L073RZ\Examples_LL\ADC\ADC_MultiChannelSingleConversion\,这个开发板的例程最多了。 例程中使用ADC+DMA采样一路外部引脚+vref+tsen,自己可以修改为采集两路外部引脚。 3、例程中有adc+dma的中断处理,我们可以暂时不用,先完成两路采集,因此方案有:单次转换模式,连续转换模式 可以完成。 4、具体的配置可以参考LL例程,首先以单次转换模式为例,使用systick作为系统的定时器,每隔10ms开启一次ADC软件转换

「ZigBee模块」协议栈-Z-Stack协议栈基础和数据传输实验

会有一股神秘感。 提交于 2020-05-05 08:14:35
花了好久写的...感觉还不错的呢...如果看,请细看...Mua~ Z-Stack 协议栈基础和数据传输实验 一、实验目的 终端节点将数据无线发送到协调器,协调器通过串口将数据发送到 PC 端,并在屏幕上显示出来。串口优化把有线串口传输改为无线蓝牙传输。 二、实验平台   硬件: 2 个 zigbee 节点, 1 个编译器, 1 根方口转 USB 数据线,一个蓝牙模块   软件:实验基于 SampleApp 工程进行。 三、实验步骤 串口初始化代码 发送部分代码 接收部分代码 四、协议栈基础   做实验之前先了解一点关于协议栈的基础知识吧 ~   什么是协议栈?我们知道使用 Zigbee 一般都要进行组网、传输数据。可想而知其中的代码数量是非常庞大的,如果我们每次使用 zigbee 都需要自己写所以代码的话,会非常麻烦。因此就有了协议栈。可以说它是一个小型的操作系统,把很多通信、组网之类的代码都封装起来了。我们要做的只是通过调用函数来实现我们的目的。   来看一下协议栈的工作流程图(图 1 )。然后我会对照流程图对协议栈进行简单的分析。 图 1   我们就从流程图的“开始”开始分析吧 ~   打开工程文件 SampleApp , main 函数是程序执行的开始,我们要先找到它。 Main 函数在 ZMAin 文件夹的 ZMain.c 下,打开它,找到 main 函数。 1 int

Django+Celery 执行异步任务和定时任务

人盡茶涼 提交于 2020-04-28 05:53:57
celery是一个基于python开发的简单、灵活且可靠的分布式任务队列框架,支持使用任务队列的方式在分布式的机器/进程/线程上执行任务调度。采用典型的生产者-消费者模型,主要由三部分组成: 1. 消息队列broker:broker实际上就是一个MQ队列服务,可以使用redis、rabbitmq等作为broker 2. 处理任务的消费者workers:broker通知worker队列中有任务,worker去队列中取出任务执行,每一个worker就是一个进程 3. 存储结果的backend:执行结果存储在backend,默认也会存储在broker使用的MQ队列服务中,也可以单独配置用何种服务做backend flask,django是同步框架,所有的请求以队列形式完成。这样的话效率极差,用户体验不好,为了解决这个问题引入celery异步方式在后台执行这些任务(这里使用到了redis,3.0以下兼容性更好) 1,安装依赖 pip install celery pip install celery -with- redis pip install django -celery 2,settings.py设置 # 配置celery import djcelery djcelery.setup_loader() BROKER_URL = ' redis://127.0.0.1:6379 '

Celery 分布式任务队列快速入门

自闭症网瘾萝莉.ら 提交于 2020-04-28 05:45:18
Celery介绍和基本使用 在项目中如何使用celery 启用多个workers Celery 定时任务 与django结合 通过django配置celery periodic task 一、Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, 举几个实例场景中可用的例子: 你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情。 你想做一个定时任务,比如每天检测一下你们所有客户的资料,如果发现今天 是客户的生日,就给他发个短信祝福 Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果, 一般使用rabbitMQ or Redis 1.1 Celery有以下优点: 简单:一但熟悉了celery的工作流程后,配置和使用还是比较简单的 高可用:当任务执行失败或执行过程中发生连接中断,celery 会自动尝试重新执行任务 快速:一个单进程的celery每分钟可处理上百万个任务 灵活: 几乎celery的各个组件都可以被扩展及自定制

配置ASA成为DHCP服务器

南楼画角 提交于 2020-04-05 17:34:17
以下,我们通过一个简单的实验,来讲解如何将配置ASA成为DHCP服务器: 我们在R1和ASA配置基本的网络地址和路由,并完成流量放行,然后在ASA上配置DHCP服务,而R2作为DHCP client。 首先我们完成基本配置: R1: r1(config)#interface e0/0 r1(config-if)#ip address 10.0.0.1 255.255.255.0 r1(config-if)#no shutdown r1(config-if)#exit r1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.10 、 ASA基本配置: ciscoasa(config)# interface Ethernet0/0 ciscoasa(config-if)# nameif outside ciscoasa(config-if)# ip address 10.0.0.10 255.255.255.0 ciscoasa(config-if)# no sh ciscoasa(config-if)# exit ciscoasa(config)# interface Ethernet0/1 ciscoasa(config-if)# nameif inside ciscoasa(config-if)# ip address 20.0.0.1 255