problem&solution
这完全是一篇水文,只是记录了一下平时遇到的一些问题及查找到的解决方法。0x01.琴声悠悠一.echo“{${phpinfo()}}”可以输出php环境这个问题很早以前就有人提出来了,但是一直都没什么人解答,我其实也不知道真实的情况具体是什么,只是根据测试去推测可能是什么。1.phpinfo()首先phpinfo()函数是php的内置函数,函数原型是对,这个函数返回值是一个布尔类型,但是它是可以输出配置环境的。可以说只要这个函数得到了调用,只要调用printechovar_dump等函数都可以将php环境信息输出到屏幕上。2.php变量众所周知,php中有效变量由$+变量名字组成,变量名字必须为(字母或者下划线开头),除此之外,变量名字可以由其他函数返回值或者变量代替,如:
mysql的一次优化
mysql的一次优化mysqlexplain时,user表主键跟引用表(comment表)关联,始终为all,原因是:user表有18万条记录,主键`id`varchar(32)CHARACTERSETutf8COLLATEutf8_general_ciNOTNULLDEFAULT''COMMENT'用户id',而comment表的引用`user_id`varchar(64)CHARACTERSETutf8mb4COLLATEutf8mb4_general_ciNULLDEFAULTNULLCOMMENT'评论用户id',字符集不相同位数也不同,引起的,查询关联不能按照主键关联,始终为all级别解决方法:把字符集和位数调到一样即可,一下从all级别调到了eq_ref的级别postedon2017-12-0417:16liufx阅读(1)编辑收藏所属分类:调试错误记录
robotframework自动化系统:操作mysql数据库
robotframework自动化系统:操作mysql数据库随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作;但是在设备添加的时候,遇到了难题。添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息。起初的想法是读取文本文件取得mac地址实现自动化操作,但是此方法也是行不通的!所以这个功能暂时没有自动化操作。后来想到可以读取数据库的查询结果,这样一来,每次添加设备的mac都可以确保是服务器上存在的,且是在用户使用设备表中是不存在的就可以。那么该如何实现呢?思路:打开数据库查询表中用户没有使用的mac将查询结果赋值给一个变量mac地址中输入该变量说明一下:测试环境的服务器是mysql既然robotframework需要操作数据库,那么需要安装执行数据库的databaselibrary和pymysql。安装databaselibrary和pymysql通过cmd命令执行:pipinstallrobotframework-databaselibrarycmd命令执行
数据库简介和简单操作
事物transaction:多个操作被当做一个整体对待,事物的特性ACID:原子性、一致性、隔离性、持久性。实体-联系模型实体Entity:客观存在并且可以相互区分的客观事物或抽象事件称为实体,在E-R图中用矩形表示实体属性:实例所具有的特征或性质联系:是数据之间的关联集合,是客观存在的应用语义链。联系分为实体间的联系和实体内部的联系。实体内部的联系指组成实体的个属性之间的联系。实体之间的联系是指不同实体之间的联系。实体之间的联系用菱形表示。联系类型有一对一联系,一对多联系,多对多联系数据三要素数据结构包含两类,一是与数据类型、内容、性质有关的对象,另一类是与数据之间联系有关的对象,他从数据组织层表达数据记录与字段的结构数据的操作:数据提取是在数据集合中提取感兴趣的内容;数据更新是指变更数据库中的数据数据的约束条件:是一组完整性规则的集合,包括实体完整性(Entityintegrity)、与完整性(Domainintegrity)和参考完整性(Referentialintegrity)。简易数据规划流程第一阶段收集数据,得到字段。收集必要且
arcgis for js 动态依次展示图块graphic
思路其实也简单:1、将图层中的图块读出来2、依次在地图上显示这些图块3、依次,可以用arcgisforjs自带的控件:ersi/dijit/TimeSlider来控制但真做起来,并不容易。因为:1、图块加载有个过程。并不是图层load完毕,图块就加载完毕了。2、arcgisforjs3.19版本中,并没有一个图块加载完毕的事件因为我们要依次显示图块,就应该获得所有图块,并按工程时间进行排序。所以,如何得知图块已加载完毕?看了网上的文章,知道可以用图层事件:update-end并结合条件语句进行判断:featurelayer.on("update-end",function(info){if(info.target.graphics.length>0){//图块貌似已经加载完毕//可以进行timeslider控件初始化了}});但是这个”update-end”事件并不是为图块专设的,它代表的是地图变化事件,图块加载完成,拖动,都会触发这个事件。所以上述语句还不够,还要加一个判断,以
八小时实现迷你版vuejs七 总结展望
看代码就像看电影一样,不懂的时候觉得到处都是迷,觉得主角周围发生的事都好不可思议,看懂了之后就能发现一根清晰的主线剧情,或是亲情,或是爱情,或是复仇,或是为名为財。所有之前那些迷都豁然开朗。vuejs源码看下来也是,从3年前接触到vuejs开始,一直断断续续看了一些关于实现原理的文章,初看一堆概念:parser,compiler,observer,watcher等等。每一部分都有复杂的细节实现。但是只要把握他的主线剧情:即如何把state和dom关联起来,使data的改动反应到DOM上,DOM的改动反应到state上。顺着这个思路比较容易看懂甚至自己实现一个类似的框架。那么为什么vuejs几千行的代码量我们只需要约500行代码就能实现呢?其实是因为我们省略了绝大部分的细节,这些细节很重要:完善的生命周期,回调,完善的销毁机制对表达式的支持,其中包括对四则运算,路径,以及函数调用的支持,这一块没细看,但是应该都是基于有限状态机实现的。对DOM的各种边界情况的处理,比如fragment性能优化,batcher。对
koa 实现 jwt 认证
其中/api/register和/api/login为publicapi,无需token就能访问。/users则为privateapi,需要传入正确的token才能访问。自定义401handler使用了koa-jwt中间件后,如果没有token,或者token失效,该中间件会给出对应的错误信息。如果没有自定义中间件的话,会直接将koa-jwt暴露的错误信息直接返回给用户。//server/middlewares/errorHandle.jsexportdefaulterrorHandle=(ctx,next)=>{returnnext().catch((err)=>{if(err.status===401){ctx.status=401;ctx.body={error:err.originalError?err.originalError.message:err.message,};}else{throwerr;
Python学习笔记整理总结【web基础】【web/HTML/CSS/JavaScript/DOM/jQuery】
一、HTMLHTML是英文HyperTextMark-upLanguage(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记)。相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器根据标记语言的规则去解释它。浏览器负责将标签翻译成用户“看得懂”的格式,呈现给用户!(例:djangomoan模版引擎)翻译成人话:一套规则,浏览器认识的规则。标准模板:1#标准规范2 主体内容