一、简介:
微信小程序登录这个概念有些广,有调用官方登录接口和调用开发者第三方服务器登录两种。为什么要登录?因为小程序用户从微信打开时,就已经登录,但是登录后,对于开发者来说还是未登录状态,没有一个唯一固定的标识,无法保存用户的信息,用户第二次进入小程序不能保持上次登录时的数据、状态。
关于登录流程,我这边从网上拿的一张图,虽然不是很认同里面的说法,但流程大致如此:
一、简介:
微信小程序登录这个概念有些广,有调用官方登录接口和调用开发者第三方服务器登录两种。为什么要登录?因为小程序用户从微信打开时,就已经登录,但是登录后,对于开发者来说还是未登录状态,没有一个唯一固定的标识,无法保存用户的信息,用户第二次进入小程序不能保持上次登录时的数据、状态。
关于登录流程,我这边从网上拿的一张图,虽然不是很认同里面的说法,但流程大致如此:
刚学robot Framework不久,语法的话如果没用过某个关键字比较懵,一般用过一次就会了。感觉最重要的就是xpath定位元素了,其他的我觉得查查语法就行,就是xpath有点难,就算语法全背熟了,有些复杂的页面场景还是很难定位元素。
最的学习过的几个语法和几种定位
1、打开浏览器,并打开相应的网址
Open Browser http://example.com Chrome
一、入门
昨天下午刚开始学习小程序,各种注册申请流程,繁琐得很,好在花了一定时间完成了,然后就进入了开发。其实认识得很浅,慢慢学习吧,一步一步来。
参考资料贴一下:
一、通俗理解
用户关键字,就是自己定义的一个操作或一组操作的封装
二、操作步骤
(如图片看不清楚可点击图片显示原图)
参考:
https://www.ibm.com/developerworks/cn/opensource/os-cn-robot-framework/index.html
1、python 2.7下载安装(添加环境变量,重新打开cmd窗口)
最近两周做了一个库存系统的优化,其实工作量并不是很大,大概就用了几天的时间,但是对系统的影响是特别大的。
写这篇文章,主要是为了说明灵感的重要性,对于做性能优化这件事,就是一件再普通不过的事,并没有什么可说的。
故事还得从一年半以前说起(2016年5月库存系统正式上线运行),库存更新功能最初就是使用Entity Framework框架做的,功能有点复杂,那么开发人员就循规蹈矩用一惯的方式去开发,保存数据就是一条数据一条SQL这种方式,比如说,一次性保存或更新一年(算365天)的数据,那么,保存的数据最多是 365*3 (库存表、日志表、房态自动清零表),一条一条提交到数据库,那得提交1095次,这个时候虽然速度慢点,倒还不算太慢,也是因为数据库总数据量还没多大,后面又加了业务,保存时数据最多是 365*5 (库存表、日志表、房态自动清零表、数据防重表、囤单表),这个时候光执行SQL就得是1825次,还包括一些数据查询操作,逻辑判断操作,还有Mysql数据库表数据量非常大的情况下,这种速度真的慢到事务100%超时,数据保存不成功,现在只能把每次操作时间设置短点,一般是一个月到三个月(30天~90天)这个数据才能勉强保存成功,但等待时间也挺长的。查了下现在(归档移走了部分数据之后),库存表数据近3千万(select count(*) 需要47s),日志表查不出来,查了几分钟还在loading,我怕内存爆掉就停掉了,反正是库存表的N倍,之前有统计是大于1亿的数量。
软件安装
环境windows,64位系统
下载安装软件:python-3.6.1-amd64.exe,安装时选择添加到环境变量,就可以随地调用python了。
交互执行环境:在开始菜单->Python 3.6->IDLE (Python 3.6 64-bit)
可以在里面写python语句,直接回车执行。
testdemo5.java
/* public static 方法返回值 方法名称([参数类型 变量,……]){ return 返回值; } */ public class testdemo5{ public static void main(String args[]){ printTest(); int r = plus(10,20); System.out.println(r); r = plus(10,20,30); System.out.println(r); System.out.println(plus(10.1,20)); System.out.println(OneToN(50)); } //方法定义:无返回值的方法 public static void printTest(){ System.out.println("test function!"); } //方法定义:有返回值的方法 public static int plus(int a,int b){ return a + b; } //方法重载:方法名相同,参数的类型或个数不同,一般重载方法返回值类型相同 //3个参数,与2个参数的同名方法重载 public static int plus(int a,int b,int c){ return a + b + c; } public static double plus(double a,double b){ return a + b; } //方法的递归调用:自己调用自己,往往都有以下特点: //方法必须有一个结束递归调用条件 //每次递归调用后都会有不同的变化 //计算1到n的累加总和 public static int OneToN(int n) { if(n <= 0) return 0; else if(n == 1) return 1; else return n + OneToN(n - 1); } //所有的while循环可以用递归代替,但用哪种取决于具体需求,哪种开发起来方便就用哪种 }
程序逻辑控制:顺序结构、分支结构、循环结构
testdemo4.java
public class testdemo4{ public static void main(String args[]){ int age=26; if(age <= 18){ System.out.println("孩子还小,再长长!"); } else if(age > 18 && age <= 25){ System.out.println("姑娘大了,可以嫁人了!"); } else{ System.out.println("捉急!赶紧找个人嫁了吧!"); } //分支结构 int day = 5; switch(day){ case 1 : { System.out.println("一号"); } break; case 2 : { System.out.println("二号"); } break; default ://除上面情况外的其他情况 { System.out.println("其他"); } break; } //循环结构 int num = 1; int result = 0; //while循环(还有do...while,一般很少用) while(num <= 100){ result += num; num++; } System.out.println(result); result = 0; //for循环 for(num = 1;num<=100;num++) { result += num; } System.out.println(result); //循环控制语句:continue(跳过当前循环),break(退出整个循环) lb: for(int x = 0; x < 5; x ++) for(int y = 0;y < 3;y ++){ if(x > 2) continue lb;//回到执行x循环 System.out.println("x = " + x + ", y = "+y); } //循环嵌套 //打印乘法表 for(int x = 1; x <= 9; x ++){ for(int y = 1;y <= x;y ++){ System.out.print(x + "*" + y +"=" + x * y + "\t"); } System.out.println(); } int line = 6; for(int x = 0; x < line; x ++){ for(int y = 0;y < line - x;y ++){ System.out.print(" "); } for(int y = 0;y < x;y ++){ System.out.print("* "); } System.out.println(); } } }