All posts by 龙生

CentOS7设置环境变量

目录 一、环境变量的概念 1、环境变量的含义 2、环境变量的分类 3、Linux环境变量 二、常用的环境变量 1、查看环境变量 2、常用的环境变量 三、设置环境量 1、系统环境变量 2、用户环境变量 3、环境变量脚本文件的执行顺序 四、重要环境变量的详解 1、PATH环境变量 2、LANG环境变量 3、LD_LIBRARY_PATH环境变量 4、CLASSPATH 五、环境变量的生效 六、应用经验 七、版权声明 一、环境变量的概念 1、环境变量的含义 程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。 2、环境变量的分类 1)按生效的范围分类。 系统环境变量:公共的,对全部的用户都生效。 用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。 2)按生存周期分类。 永久环境变量:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。 临时环境变量:使用时在Shell中临时定义,退出Shell后失效。 3、Linux环境变量 Linux环境变量也称之为Shell环境量变,以下划线和字母打头,由下划线、字母(区分大小写)和数字组成,习惯上使用大写字母,例如PATH、HOSTNAME、LANG等。 二、常用的环境变量 1、查看环境变量 1)env命令 在Shell下,用env命令查看当前用户全部的环境变量。 上图只截取了部分环境变量,并非全部。 用env命令的时候,满屏显示了很多环境变量,不方便查看,可以用grep筛选。

  例如查看环境变量名中包含PATH的环境变量。

  2)echo命令

 

注意,符号$不能缺少,这是语法规定。 2、常用的环境变量 1)PATH 可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序,PATH变量的具体用法本文后面的章节中有详细的介绍。 2)LANG Linux系统的语言、地区、字符集,LANG变量的具体用法本文后面的章节中有详细的介绍。 3)HOSTNAME 服务器的主机名。 4)SHELL 用户当前使用的Shell解析器。 5)HISTSIZE 保存历史命令的数目。 6)USER 当前登录用户的用户名。 7)HOME 当前登录用户的主目录。 8)PWD 当前工作目录。 9)LD_LIBRARY_PATH C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。 10)CLASSPATH JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要,具体用法本文后面的章节中有详细的介绍。 三、设置环境量

  或

  如果环境变量的值没有空格等特殊符号,可以不用单引号包含。 示例:

  采用export设置的环境变量,在退出Shell后就会失效,下次登录时需要重新设置。如果希望环境变量永久生效,需要在登录脚本文件中配置。 1、系统环境变量 系统环境变量对全部的用户生效,设置系统环境变量有三种方法。 1)在/etc/profile文件中设置。 用户登录时执行/etc/profile文件中设置系统的环境变量。但是,Linux不建议在/etc/profile文件中设置系统环境变量。 2)在/etc/profile.d目录中增加环境变量脚本文件,这是Linux推荐的方法。 /etc/profile在每次启动时会执行/etc/profile.d下全部的脚本文件。/etc/profile.d比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d下对应的 shell 脚本即可。 […]

龙生   09 Sep 2020
View Details

AutoJS4.1.0实战教程 —快手极速版

快手极速版是我个人最喜欢的APP,原因很简单,薅羊毛的时候简单粗暴无需过多的技术也不需要有提现的各种限制,只要够3元就可以提现,而且也不吝惜金币,每天1万多金币问题不大,废话不多说直接上代码。 我的快手极速版邀请码: 2rvxaem.看文章加关注点分享都不用…加下邀请码就好。

  from:https://www.cnblogs.com/zy0412326/p/12590829.html

龙生   06 Sep 2020
View Details

Docker 部署 Net Core

一、docker 安装及设置

  二、新建Net Core 程序 1、新建Net Core 项目。注意不启动Docker 支持   2、发布新建的项目(目标运行时:可移植)   3、在发布后的文件夹中新建一个Dockerfile 文件(没有后缀) 大概内容如下:

  三、上传发布后的项目到Linux服务器(CentOS) 1、进入程序的发布目录

  2、直接访问就可以了     3、docker 容器自动启动(在容器退出或断电开机后,docker可以通过在容器创建时的 --restart参数来指定重启策略)

4、docker 相关命令 镜像文件和容器命令

  容器日志

from:https://www.cnblogs.com/songl/p/11128012.html

龙生   04 Sep 2020
View Details

Docker入门 第一课 --.Net Core 使用Docker全程记录

微服务架构无疑是当前最火热的开发架构,而Docker作为微服务架构的首选工具,是我们必须要了解掌握的。 我通过一天的时间,网上查文档,了解基础概念,安装Docker,试验Docker命令,通过Docker,成功部署运行Asp.NET core示例程序,算是基本入门。 这篇文章是自己总结的Docker入门篇,力求简洁,快速入门,以最短的时间看到学习成果,为深入学习Docker做基础。   学习前提:不要畏惧 面对未知,人们心里往往会产生恐惧,这是人与生俱来的,所以,我们在进入新的领域之前,首先要克服的是自己的畏难心理。不要因为困难,看几眼就放弃,那样你永远学不会。 面对新的未知领域,我们要把它当成一座灯塔,让它指引我们前进的方向。   第一:了解几个概念 镜像(Image):相信大家看到这个词,都明白什么意思,我们可以把它理解为操作系统的安装盘,Ghost镜像。我给它个定义,就叫:Docker基础运行环境副本。 容器(Container):运行中的Docker实例,称为容器。也就是一个镜像(Image)的运行时状态。 镜像仓库(Repository):Docker为开发者提供了面向各种环境的已经打包好的镜像,这些镜像构成了一个镜像仓库。开发者只需找到自己需要的Docker镜像,下载到本地,添加自己的应用上去,运行即可,某些工具类的镜像,可无需修改,直接运行。 Docker 主机(Host):运行着Docker容器的计算机或虚拟机,用于执行Docker的守护进程。 Docker客户端(Client):是与Docker主机守护进程进行通信的工具,如:Docker控制台。   第二:安装Docker 不同操作系统按照方式不同,以Win7系统为例,需要利用 docker toolbox 来安装,可以使用阿里云的镜像来下载。 下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/ 安装完成之后,在桌面找到三个启动图标:Oracle VM VirtualBox,Kitematic(Alpha),Docker Quickstart …。 安装完成之后,建议重启一下计算机。 Oracle VM VirtualBox :是一个虚拟机程序。Docker是运行在Linux环境下的,要想在Windows下运行,必须借助虚拟机。感兴趣的话可以留着以后研究。 kitematic(alpha):是docker推出的GUI工具,可以更简便地操作Docker,非常适合windows用户使用习惯,推荐大家试试。这个alpha表示预览版吧,可能功能还不完善。 Docker Quickstart Terminal:是Docker控制台启动程序,双击图标启动Docker。 如果一切正常的话,可以看到以下界面。 如果启动过程中出现下面错误,Looks like something went wrong in step 'Looking for vboxmanage.exe’… 意思是没有找到虚拟机启动程序,需要设置VirtualBox的环境变量,系统环境变量中增加VBOX_MSI_INSTALL_PATH和VBOX_INSTALL_PATH 值都为C:\Program Files\Oracle\VirtualBox\ ,即VirtualBox的安装路径,注意后面的\ 不能少。环境变量设置完成之后,可尝试重新启动。   第三:熟悉几个命令 我建议实际工作中使用图形界面 kitematic,真的既简单又实用,但Docker命令还是要学习的,最重要的是,使用命令行操作显得更酷更专业。 docker 命令都是以docker开头,下面介绍几个简单,常用的命令。仅作基础介绍,具体参数用法可后期详细学习 。 docker pull:从镜像仓库中拉取镜像 。 docker run:通过镜像创建一个新的容器,并运行。需要注意的是,如果本地没有指定的镜像,会直接去镜像库下载,一定要保证拼写正确。 docker stop:停止一个容器 。 docker start:启动一个容器 。 docker restart:重启一个容器 。 docker ps:列出当前运行的容器机器状态 。 docker images 或 docker image ls:列出本地镜像。 docker build:使用Dockerfile创建自己的镜像。   第四:操作演示,从hello world开始 你可以登录Docker官方镜像仓库,选择自己感兴趣的镜像进行试验,这里我们选择最简单的 hello-world。 Docker官方镜像仓库地址:https://hub.docker.com […]

龙生   04 Sep 2020
View Details

有没有类似按键精灵的免费手机应用APP开发软件?

最近大家都知道,手机版的按键精灵APP对其导出编译脚本做了限制。本来免费就能打包,现在就只能按月收费。有没有像按键精灵一样的手机端脚本编写软件呢?小编对此做了个小调查。以下是一些软件推荐: 【1】autojs 它的语法和javascipt非常相似,可以说是其在手机端的衍生编写程序app。如果你已经大概掌握了按键精灵的编写技能,就应该有学习这门语言的能力。内置帮助文件说明很详细的脚本案例,让初学者轻松掌握它的用法。 【2】Airtest 它是由网易开发的 UI 界面自动化测试工具。你可以借助 AirtestIDE,通过在 IDE 中进行所见即所得的编码方式,来简化 App 图形界面的测试流程。除此之外,你还可以借助该工具来编写 App 爬虫,效率也是蛮高的。 【3】TC简单开发 你可能听说过它的电脑端,也是十分强大的倾向于网页自动化编程的软件。其他它也有手机端。它是脚本工具中唯一一个完美支持真多线程的工具,支持调用近10000个WIN32函数,支持调用COM组件,集合了文字识别,图色识别,网络,数据库,正则等等各种强大的功能库。 【4】Tasker Tasker是一个让系统根据用户定制的”配置文件”(Profiles),在特定的”背景”下(Contexts),执行指定”任务”(Tasks)的软件,除此之外,它还提供”可供点击”的(Clickable)或”定时运行”的(Timer)桌面”插件”(Widget)。对于自学能力稍差的同学,可以考虑下这款软件试试。 【5】B4A-Basic4android 官方下载网址,安装下载,需要安装JDK,ANDROID SDK,模拟器或手机等Install Java JDK v7 or v8。此应用为VB语言,支持在电脑端编写程序,这些工具都是用BASIC语言写的安卓应用,自已写安卓工具。 以下是几款在手机上编写代码的app: 1)java和Android:AIDE集成开发环境。 2)C语言:c语言编译器、C4droid。 3)python:QPython3、Termux。 4)CSS/HTML/JavaScript:HTMLplay   from:http://www.360doc.com/content/19/0809/21/58781721_853937895.shtml

龙生   27 Aug 2020
View Details

Auto.JS简介与教程

什么是Auto.JS? Auto.JS是Android平台上的JavaScript自动化工具。 它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启“无障碍模式”的情况下对其他App进行一些操作的一个Android App,便于进行自动化操作。学习成本非常低。 Auto.JS已被黑产广泛使用,以至于作者关闭了官方下载通道。 官网:https://github.com/hyb1996/Auto.js 我们能用它自动化地做什么? 1) 对于黑产 微博:自动注册、远程获取内容、动发微博,点赞关注收藏、评价回复转发 注册类:163邮箱注册,抖音注册 签到类:百度地图签到、大众点评签到、叮咚买菜签到、拼多多签到、云闪付签到积分、支付宝签到积分、京东签到京豆等 2) 对于普通人 启动游戏时自动屏蔽通知、一键与特定联系人微信视频、淘宝双十一一键领猫币等 跟按键精灵的区别?跟Robotium等的区别? 1) VS 按键精灵 无需Root;可直接指定控件并点击,无需识图找坐标 2) VS Robotium 手机无需连电脑即可运行;代码极其简单;无需Eclipse或bat脚本;可在手机上选择不同脚本执行 在自动化操作演示/黑产模拟时,比较有用的功能? 1) APP相关 启动App(通过应用名/包名)、打开App设置页、卸载App等 2) 时序相关 等待指定的Activity(页面)出现、等待指定的App启动、获取当前Activity 3) 控件相关※ 输入:点击/长按含特定文字的控件、滑动特定控件、在第N个输入框输入/追加文字、复制粘贴等; ※控件选择器:通过控件的各种xml属性(如ID、text、desc、包名、位置)选择一个或多个控件并进行操作; 等待:等待指定控件出现 4) 创建界面相关 可编写界面、弹出Toast、弹出对话框、创建悬浮窗 5) 坐标/按键类 点击指定坐标&滑动、模拟点击各种按键(Home、后退键、菜单键、电源键等)等 6) 其他 随机数、网络请求、定时器、多线程、文件操作、找图等常见功能;监听按键&屏幕点击、获取各种设备相关信息(Build.**、音量、震动等等);Linux Shell命令 版本限制 在非Root情况下,Auto.JS只能运行在>=Android7.0以上的系统。 如何编写脚本、运行脚本? 1)安装Auto.JS APK:在手机上安装Auto.js_V4.1.1_Alpha2 注:App会自动引导开启“无障碍服务”。以小米为例,按程序指示,在程序跳转到的页面点击“更多已下载的服务”->“Auto.js”->开启服务 2)在PC上编写 首先安装VSCode,在VS Code中菜单"查看"->"扩展"->输入"Auto.js"或"hyb1996"搜索,即可看到"Auto.js-VSCodeExt"插件,安装即可。请把文件保存为.js,方便代码补全。 3)在PC侧调试 1.jpg 注1:“连接电脑”开关若为蓝色才表示连接成功,否则请确认连接到了同一WIFI,若WIFI环境复杂(比如多个同名WIFI但实为不同路由器),请用笔记本/热点开WIFI 4)脱离电脑运行 先把编写并测试好js文件复制到手机上,在手机上启动Auto.js,点⊕按钮-导入,导入到App里,然后在对应的脚本右边点“▶”即可运行。 5)中止运行 点击Auto.JS 右下角的“×” 或在VSCode里ctrl+shift+p然后选”Stop” 官方文档 https://hyb1996.github.io/AutoJs-Docs/ 注:使用选择器时无需加UiSelector. 脚本范例 https://github.com/bjc5233/autojs https://github.com/bayson/autojs https://github.com/hyb1996/Auto.js/tree/master/app/src/main/assets/sample 作者:RedB 链接:https://www.jianshu.com/p/4602db0618df 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

龙生   27 Aug 2020
View Details

用Python实现自动化操作Android手机

一、【必须】安装adb工具 adb全称Android Debug Bridge,是Android系统的调试工具。 下并安装ADB Installer v1.4.3,下载链接:http://pan.webscraping.cn:8000/index.php/s/7kDAJUOmKEa1h4N 安装完成后,启动一个新的cmd窗口,输入adb devices,若无错误提示则表明安装成功。 Ubuntu下安装adb可以参考这篇文章:http://bernaerts.dyndns.org/linux/74-ubuntu/354-ubuntu-xenial-android-adb-fastboot-qtadb) 二、【可选】安装UI Automator Viewer辅助工具 为了使用UI Automator Viewer这个辅助分析工具,我们需要先安装Android SDK,步骤如下: 1. 下载并安装Java 8 2. 下载并安装Google Android SDK 3. 启动Android SDK Manager,选择并安装Android SDK Platform-tools. 4. 双击uiautomatorviewer.bat,启动UI Automator Viewer,点击第二个图标获取设备截图及相关UI信息,如下图所示。 三、【主角】AndroidViewClient AndroidViewClient是用纯Python编写的Android应用程序自动测试框架,它不依赖其它程序(例如 monkeyrunner, jython)。AndroidViewClient在底层是通过调用adb命令实现对Android设备的控制,因此在本文的一开始就先介绍了adb的安装。 开始下文之前,假设你已经安装配置好Python运行环境,否则请先安装Python 2.7(注意:AndroidViewClient不兼容Python3)。 1. 安装AndroidViewClient 项目主页:https://github.com/dtmilano/AndroidViewClient 推荐用easy_install安装: easy_install --upgrade androidviewclient 安装详细说明见这里:https://github.com/dtmilano/AndroidViewClient/wiki#installation PS:依赖库比较多,安装需要有点耐心。 2. 测试安装是否成功 下载https://github.com/dtmilano/AndroidViewClient/archive/master.zip包,解压并切换到examples目录下,执行python check-import.py,如果没有问题,会输出OK。 3. 写一个例子 实现这样一个功能: 点击屏幕微信图标启动微信,点击第一个联系人/群,发送一个报时消息。 代码如下: view plaincopy to clipboardprint? # coding: utf-8 # 点击屏幕微信图标启动微信,点击第一个联系人/群,发送一个报时消息 import sys import os import re import time from com.dtmilano.android.viewclient import ViewClient def test():     # 连接手机     device, serialno = ViewClient.connectToDeviceOrExit()     vc = ViewClient(device, serialno)     # 按HOME键     device.press('KEYCODE_HOME')     time.sleep(3)     # 找到微信图标     vc.dump()     weixin_button = vc.findViewWithTextOrRaise(u'微信')     # 点击微信图标     weixin_button.touch()     time.sleep(10)     # 找到第一个联系人/群     # 可以使用UI Automator Viewer查看到对应第一个联系人/群的resource-id为"com.tencent.mm:id/auj"     vc.dump()     group_button = vc.findViewByIdOrRaise("com.tencent.mm:id/auj")     # 点击进群     group_button.touch()     time.sleep(5)     # 找到输入框并输入当前时间     vc.dump() […]

龙生   27 Aug 2020
View Details

C# this关键字的四种用法(转)

用法一  this代表当前类的实例对象

  用法二  用this串联构造函数

  用法三  为原始类型扩展方法

  用法四  索引器(基于索引器封装EPList,用于优化大数据下频发的Linq查询引发的程序性能问题,通过索引从list集合中查询数据)

给EPList创建索引,并添加数据

通过索引高效查询数据

  from:https://www.cnblogs.com/yellowcool/p/7908607.html

龙生   27 Aug 2020
View Details

移动端touchstart,touchmove,touchend

touchstart:手指触摸到一个 DOM 元素时触发。 touchmove:手指在一个 DOM 元素上滑动时触发。 touchend:手指从一个 DOM 元素上移开时触发。 touchcancel:当系统停止跟踪触发触发   event.touches  当前触摸屏幕的触摸点数组 event.changedTouches   移动的触摸点信息数组 event.targetTouches  只包含放在元素上的触摸信息数组   touch对象代表一个触点,通过event.touches[0]获取

  from:https://www.cnblogs.com/fanbulaile/p/10880232.html

龙生   27 Aug 2020
View Details

简单理解Vue中的nextTick

Vue中的nextTick涉及到Vue中DOM的异步更新,感觉很有意思,特意了解了一下。其中关于nextTick的源码涉及到不少知识,很多不太理解,暂且根据自己的一些感悟介绍下nextTick。 一、示例 先来一个示例了解下关于Vue中的DOM更新以及nextTick的作用。 模板

  Vue实例

  点击前 点击后 从图中可以得知:msg1和msg3显示的内容还是变换之前的,而msg2显示的内容是变换之后的。其根本原因是因为Vue中DOM更新是异步的(详细解释在后面)。 二、应用场景 下面了解下nextTick的主要应用的场景及原因。 在Vue生命周期的created()钩子函数进行的DOM操作一定要放在Vue.nextTick()的回调函数中 在created()钩子函数执行的时候DOM 其实并未进行任何渲染,而此时进行DOM操作无异于徒劳,所以此处一定要将DOM操作的js代码放进Vue.nextTick()的回调函数中。与之对应的就是mounted()钩子函数,因为该钩子函数执行时所有的DOM挂载和渲染都已完成,此时在该钩子函数中进行任何DOM操作都不会有问题 。 在数据变化后要执行的某个操作,而这个操作需要使用随数据改变而改变的DOM结构的时候,这个操作都应该放进Vue.nextTick()的回调函数中。 具体原因在Vue的官方文档中详细解释: Vue 异步执行 DOM 更新。只要观察到数据变化,Vue 将开启一个队列,并缓冲在同一事件循环中发生的所有数据改变。如果同一个 watcher 被多次触发,只会被推入到队列中一次。这种在缓冲时去除重复数据对于避免不必要的计算和 DOM 操作上非常重要。然后,在下一个的事件循环“tick”中,Vue 刷新队列并执行实际 (已去重的) 工作。Vue 在内部尝试对异步队列使用原生的 Promise.then 和MessageChannel,如果执行环境不支持,会采用 setTimeout(fn, 0)代替。 例如,当你设置vm.someData = 'new value’,该组件不会立即重新渲染。当刷新队列时,组件会在事件循环队列清空时的下一个“tick”更新。多数情况我们不需要关心这个过程,但是如果你想在 DOM 状态更新后做点什么,这就可能会有些棘手。虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做。为了在数据变化之后等待 Vue 完成更新 DOM ,可以在数据变化之后立即使用Vue.nextTick(callback) 。这样回调函数在 DOM 更新完成后就会调用。 三、nextTick源码浅析 作用 Vue.nextTick用于延迟执行一段代码,它接受2个参数(回调函数和执行回调函数的上下文环境),如果没有提供回调函数,那么将返回promise对象。 源码

  首先,先了解nextTick中定义的三个重要变量。 callbacks 用来存储所有需要执行的回调函数 pending 用来标志是否正在执行回调函数 timerFunc 用来触发执行回调函数 接下来,了解nextTickHandler()函数。

  这个函数用来执行callbacks里存储的所有回调函数。 接下来是将触发方式赋值给timerFunc。 先判断是否原生支持promise,如果支持,则利用promise来触发执行回调函数; 否则,如果支持MutationObserver,则实例化一个观察者对象,观察文本节点发生变化时,触发执行所有回调函数。 如果都不支持,则利用setTimeout设置延时为0。 最后是queueNextTick函数。因为nextTick是一个即时函数,所以queueNextTick函数是返回的函数,接受用户传入的参数,用来往callbacks里存入回调函数。 上图是整个执行流程,关键在于timeFunc(),该函数起到延迟执行的作用。从上面的介绍,可以得知timeFunc()一共有三种实现方式。 Promise MutationObserver setTimeout 其中Promise和setTimeout很好理解,是一个异步任务,会在同步任务以及更新DOM的异步任务之后回调具体函数。 下面着重介绍一下MutationObserver。 MutationObserver是HTML5中的新API,是个用来监视DOM变动的接口。他能监听一个DOM对象上发生的子节点删除、属性修改、文本内容修改等等。 调用过程很简单,但是有点不太寻常:你需要先给他绑回调:

  通过给MutationObserver的构造函数传入一个回调,能得到一个MutationObserver实例,这个回调就会在MutationObserver实例监听到变动时触发。 这个时候你只是给MutationObserver实例绑定好了回调,他具体监听哪个DOM、监听节点删除还是监听属性修改,还没有设置。而调用他的observer方法就可以完成这一步:

[…]

龙生   26 Aug 2020
View Details
1 118 119 120 413