info

Appium

99封情书 提交于 2019-12-10 18:49:41
1 配置一系列环境: 01. 环境依赖 Node.js Appium Appium-desktop Appium-doctor Appium-Python-Client Python JDK Andriod SDK 02. 安装 Node.js 下载地址: https://nodejs.org/en/download/releases/ 注意: Node.js版本要注意与Appium兼容,本套教程Appium版本是1.7.2,则选择的Node.js版本为6.11.3 安装完成后在按键 Win+R 输入 cmd打开Windows 命令提示符, 输入如下命令: C:\Users\Shuqing> node -v v6.11.3 C:\Users\Shuqing>npm -v 3.10.10 说明: npm(node package manage)是node.js安装包管理工具,类似Python中的pip工具。 如果显示 ‘npm’不是内部命令提示,则可以管理员省份运行cmd,如果还是失败,则需要检查一下环境变量是否配置,或者重新安装nodejs。 03. Appium 安装 Appium Server其实可以通过命令 npm install -g appium来安装。不过由于众所周知的网络原因,直接使用这样安装会非常非常慢,甚至会安装失败,所以我们可以使用国内镜像来安装。 选用的镜像是

数据库的基本操作

孤者浪人 提交于 2019-12-10 18:25:52
使用数据库 新建一个cmd,mysql客户端连接服务端,输入mysql -h 127.0.0.1 -P 3306 -p密码 mysql初始化无密码,可以进入游客模式,功能会很少 无密码直接进入 --->不需要"-p密码" bin目录下的:mysql.exe 全写:mysql -h 127.0.0.2 -P 3306 -p 密码 简写:mysql -uroot -p 密码 退出数据库的客户端 exit; quit; 注意:SQL语句末尾必须加";"号。 查看操作系统中是否已经启动mysqld服务端 tasklist | findstr "mysqld" 杀死mysqld进程 taskkill /F /PID pid号 ***做服务端操作时,必须先从管理员身份打开 数据库的命令 查看所有数据库: show databases; mysql -u 登录mysql用户名(root) -p 密码 默认自带 root 超级用户,没有密码 管理员登录 mysql -uroot 回车进入 游客登录 mysql 回车 修改密码 - 默认没有密码的情况下,设置密码 - cmd>>>: mysqladmin -uroot password 123 - 有密码的情况下,修改密码 - cmd>>>: mysqladmin -uroot -p原密码 password修改的密码 - cmd>>>:

15-ChannelInitializer

眉间皱痕 提交于 2019-12-10 16:43:25
文章目录 ChannelInitializer 一、继承关系 二、源码 2.1 注释 2.2 源码分析 2.3 handlerAdded和channelRegistered 三、使用示例 ChannelInitializer ChannelInitializer 是一种特殊的 ChannelHandler,它也是一种 ChannelInboundHandler,它提供了在通道注册到 EventLoop 后初始化通道的简单方法;其主要目的是在某个 Channel 注册到 EventLoop 后,对这个 Channel 执行一些初始化操作。在初始化完成之后,ChannelInitializer 会 将自己从 Pipeline 中移除,不会影响后续的操作。 作用:在某个Channel注册到EventLoop后,对这个Channel执行一些初始化操作,初始化操作完成后会将自身从Pipeline中移除。 一、继承关系 二、源码 2.1 注释 源码注释如下: /** * 一个特殊的ChannelInboundHandler,提供了一个便捷的方式在Channel注册到EventLoop的时候来初始化这个Channel * A special {@link ChannelInboundHandler} which offers an easy way to initialize a {@link

MyCat:取代Cobar数据库中间件

£可爱£侵袭症+ 提交于 2019-12-10 15:46:40
Cobar 是阿里巴巴开源的一个数据库中间件,为了解决类似proxy这类的问题。目前同类型的有奇虎360开源的Atlas。类似的有基本在线上用起来很不爽,问题多多的比如MySQL Proxy和SQL Relay,基本可以忽略。 Cobar 下载: https://github.com/alibaba/cobar Atlas 下载: https://github.com/Qihoo360/Atlas =============================================================== MyCat:取代Cobar数据库中间件 什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 ? 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server ? 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 ? 一个新颖的数据库中间件产品。 目标 低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。 关键特性 支持 SQL 92标准 支持Mysql集群,可以作为Proxy使用

flask中自定义日志类

我只是一个虾纸丫 提交于 2019-12-10 14:53:33
一:项目架构 二:自定义日志类 1. 建立log.conf的配置文件 log.conf [log] LOG_PATH = /log/ LOG_NAME = info.log 2. 定义日志类 LogClass.py import logging from logging import handlers class Mylogger(object): def __init__(self,log_path,log_name): # 1.指明日志记录到哪个文件 "F:/xxx/xx" + "info.log" logfile = log_path + log_name # 2.配置日志操作器 handler = handlers.RotatingFileHandler(logfile, maxBytes=1024 * 1024, backupCount=5, encoding='utf-8') # 3.设置日志格式 fmt = "%(levelname)s-%(asctime)s-%(module)s-%(lineno)d-%(message)s" # 4. 配置格式实例 formatter = logging.Formatter(fmt) # 5.操作器加载格式实例 handler.setFormatter(formatter) # 6.创建logger实例 self.logger =

将CFSSL与Lemur证书管理器集成

吃可爱长大的小学妹 提交于 2019-12-10 10:49:06
将CFSSL与Lemur证书管理器集成 https://www.youcl.com/info/3548   在 上一篇关于Lemur 证书管理器的 文章中 ,我们没有使用任何第三方根证书颁发机构(CA)作为客户端证书。 因此,在本教程中,将使用CFSSL(Cloudflare的SSL)设置PKI并与Lemur项目集成。 目前,没有文档可以帮助用户将CFSSL与Lemur设置集成。 注意:由于我们使用CFSSL作为第三方根权限,因此首先我们必须在单独的机器上设置它(但是我们在同一个Lemur盒子上设置它)然后更改狐猴conf文件以使用CFSSL签署证书。 安装CFSSL CloudFlare SSL使用“Go”编程语言实现,因此机器上需要安装“go”软件包。 以下命令将在计算机上安装所需的程序包。 1.安装Go Go包将从源代码安装。 wget https://dl.google.com/go/go1.10.1.linux-amd64.tar.gz 提取下载的存档并将其安装到系统上的所需位置。 我们将它安装在/ usr / local目录下。 您也可以将其放在系统上的所需位置。 tar -xzvf go1.10.1.linux-amd64.tar.gz mv go /usr/local 安装Go包之后,还需要为Go二进制文件设置环境变量。 (您可以将其添加到用户配置文件中

docker

馋奶兔 提交于 2019-12-10 09:55:33
一,概述 虚拟化是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以更好的应用这些资源。一般,虚拟化资源包括计算能力和资料存储。 虚拟化技术可以解决高性能的物理硬件产能过剩和老旧硬件产能过低的重组重用,透明化底层物理硬件,最大化利用物理硬件,充分利用资源。 Docker是一个开源项目,诞生于2013年初,基于go语言实现。Docker项目的目标是实现轻量级的操作虚拟化解决方案。Docker的基础是linux容器(LXC)等技术。在LXC的基础上docker做了进一步的封装,让用户不需要关心容器的管理,使得操作更为简便。 Docker的优点,上手快,职责逻辑分类,快速高效的开发周期,鼓励使用面向服务架构。与传统虚拟机相比,docker启动速度快,占用体积小。 Docker是一个客户端服务器架构。Docker客户端只需要向docker服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作返回结果。Docker提供了一个命令工具docker以及一整套restful api。可以在同一台宿主机上运行docker守护进程和客户端,也可从本地的docker客户端连接到运行在另一个宿主机上的远程docker守护进程。 镜像是构建docker的基石。用户基于镜像来运行自己的容器

hbase 错误调用表读方法引发的血案

冷暖自知 提交于 2019-12-10 09:49:49
记一次错误调用hbase读方法引发的血案 需求说明 目前公司的数据库存在上前亿级别的GPS坐标点,数据量在几十至百TB级别,这些坐标需要获取从百度、高德等网站上更新获取该点对应的服务信息,即一个坐标点对应一条该坐标的描述信息。如果将这些坐标全部按一个点一个 点 的查询下载,按照目前我们的查询Http接口带宽限制,至少需要1年多。通过抽样调研后发现,这些坐标里存在有大量的重复数据,重复率接近80%,若采用缓存的方式,存储这些坐标描述信息,当重复坐标出现时,可以利用数据库的查询提高获取坐标的描述信息,同时节省大量的带宽,考虑到数据库将存储上TB级别数据,自然想到hbase。 方案 利用hbase存储更新后的gps坐标点是不错的选择。目前集群有11台regionServer服务器,当读写hbase时发现最高读数据接近50W 请求/s ,这对于重复数据的gps坐标点直接读取hbase更新,将省掉大量的资源和时间。 架构1 考虑到未来除了采用 hbase做缓冲存储坐标点外还可以用来做其他信息的存储缓冲,于是我们提出了如下第一种架构方案 我们将我们的缓存模块单独提取出来做成限速服务,限速服务负责这个HTTP的多线程并发查询网络资源和以及hbase的读写。这样做的优点是具体的业务只需要负责向缓存模块发送http请求,并不需要关心缓存模块内部的实现细节,这样充分实现了业务间的解耦

robotframework关键字

这一生的挚爱 提交于 2019-12-10 09:48:26
*** Settings *** Library Selenium2Library *** Keywords *** Checkbox应该不被选择 [Arguments] ${locator} Checkbox Should Not Be Selected ${locator} Frame应该包含文本 [Arguments] ${locator} ${text} ${loglevel}=INFO Frame Should Contain ${locator} ${text} ${loglevel} List应该无选项 [Arguments] ${locator} List Should Have No Selections ${locator} List选项应该是 [Arguments] ${locator} @{items} List Selection Should Be ${locator} @{items} Radio按钮不应该被选择 [Arguments] ${group_name} Radio Button Should Not Be Selected ${group_name} Radio按钮应该被设置成 [Arguments] ${group_name} ${value} Radio Button Should Be Set To ${group_name} $

[转]安卓加固之so文件加固

心已入冬 提交于 2019-12-10 09:02:45
一、前言   最近在学习安卓加固方面的知识,看到了 jiangwei212 的博客,其中有对so文件加固的两篇文章通过节加密函数和通过hash段找到函数地址直接加密函数,感觉写的特别好,然后自己动手实践探索so加密,这里记录一下学习遇到的困难和所得吧,收获还是非常大的。 二、通过加密节的方式加密函数  1、加解密思路   加密:我们自己写一个Demo根据ELF文件格式,找到我们要加密的节,加密保存在ELF文件中   解密:这里有一个属性__attribute__((constructor)),这个属性使用的节优于main先执行,使我们解密有了可能。  2、实现流程   ①编写我们的native代码,在native中将要加密的函数置于一个节中,并将解密函数赋予__attribute__((constructor))属性     a.在函数申明后面加上 __attribute__((section(".mytext"))) ,将函数定义在我们自己的section中     b.我们需要编写一个解密函数,属性用__attribute((constructor))申明,这样就可以在在so被加载的时候,在main之前将我们的节解密。      然后使用ndk-build将native代码编译成so文件   ②编写加密程序(我这里使用VS2010)     a.解析so文件,找到