发布新日志

  • LoadRunner中文出现乱码的解决办法

    2019-02-18 19:56:32


    录制选项,高级,支持字符集,UTF-8。
    一般情况下不需要开启此选项,否则在Submit里会出现有乱码。
    如果未开启此功能还出现乱码,可尝试开启此选项。

    如果开启此选项还是有乱码,且乱码处的内容你需要进行参数化,可使用lr_convert_string_encoding函数将字符转化为你需要的模式。

    函数原型:

    int lr_convert_string_encoding ( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName);
    sourceString
    The string to convert
    fromEncoding
    The encoding of the sourceString
    toEncoding
    The encoding to convert of the string saved in parameter paramName
    paramName
    The name of the parameter in which the destination string will be saved
    Constant Value
    LR_ENC_SYSTEM_LOCALE
    NULL
    LR_ENC_UTF8
    "utf-8"
    LR_ENC_UNICODE
    "ucs-2"

    浏览器也有转码功能:菜单“查看”-->编码-->Unicode(UTF-8)

    为什么要启用UTF-8,某些请求中会出现:
    web_custom_request("CALL-H001I",
            "EncType=text/xml; charset=UTF-8",
    ……);


    这时候,此函数你就派得上用场了!

    lr_convert_string_encoding函数的使用,直接查看帮助即可。

    说明:
    1. 在树视图里的源码(server Response)的乱码是没法解决的;
    2. 在树视图的页面显示可以是正常,源码视图也可以显示正常;
    3. 虽然在server Response显示乱码,但查找中文字符串还是正常的

  • 什么事,是你做了领导后才明白的?

    2018-11-01 15:42:56

    当我还是个单纯的程序员的时候,我觉得做技术应该是最难的,想搞个简单点的客户端技术,网络、SQL、架构设计、Java、OC, 什么都要懂,Python,Js, shell要学的东西很多,还不断的有新的东西出来,今天 React Native,kotlin ,明天又大数据,后天人工智能,区块链等等。。。说好听是学无止境,说不好听是掉到坑里出不来。


    反过来看那些主管,不参与具体的版本开发,天天就是开开会,发发邮件,今天跟测试撕逼,明天和产品讨论版本计划,后天和项目经理讨论人力安排,半年来个总结汇报,多轻松啊!


    然鹅,当我做了leader后,有些事我才真正开始明白。。。

    1.决策者永远比执行者累,要负的责任和要做的事的大小的影响都是完全不同的概念。


    2.公司失败了,永远是老板的责任,老板不会说公司失败了是因为招了一堆垃圾员工,因为招什么人的责任也是老板自己来背。这个原则向下同样适用于任何管理职位。


    3.从来不会因为某个技术问题发愁,让人累的都是人…...


    4.很多时候明明已经对全部人交代了,但很多人还是要单独确认,同样的话总是要翻来覆去的说。推出一个新的流程,自己要先试试,然后写清操作规程,接着通知,讲解。然后运行的时候各种低级错误依旧层出不穷。


    5.最快乐的时候就是专心写代码的时候,因为对就是对,错就是错,没有中间地带,没有不确定性,不存在写完一段代码后说这段代码可能正确。


    6.没做领导的时候,觉得领导都是傻逼,做了领导之后觉得下属才是傻逼。


    7.如果你手下一员工干起活来让你十分满意舒服无可挑剔,过不了多久,他就不再是你手下员工了。于是你手下一直是一帮各种各样的有毛病的员工。忽然懂得了管理学说每个人必定会升到他/她无法胜任的位置上。


    8.想要招聘个心仪的下属,不知道要花掉多大的运气才行。


    9.以前觉得领导就是吃香喝辣耍威风,现在自己当领导才知道领导很累,很多时候也不是耍威风,而是装孙子。


    10.管理方法是可以学的,但是责任,担当,格局这些内在是需要修炼的!


    11.有多少责任就有多少委屈,地位与责任成正比,责任与待遇成正比,待遇与委屈成正比!


    12.技术出身初做管理恐怕都时常有冲动觉得一些交下去的工作还不如我自己做速度快质量好,不过还要忍住放权和给下属成长的机会。


    13.下属能力不够,有你来带;自己能力不够,自己想办法去弥补。。。

    But,做领导这么累,为什么大部分人还是想继续做管理呢?

    1.薪水提高。这个是当然的,不过说的这个提高得有一个比较,其实在技术型公司,通常都是管理技术两条路走。一般一个级别的技术岗位都有和其对应的管理岗位,所以管理岗位也不一定薪水就绝对高。


    2.格局提高。做到管理岗能够更多的参与到公司的一些战略中来,对公司的业务会有更深理解和认知,而且由于自己这时候有更多的决策权,就更容易从工作中获得成就感。所以职场中,我们经常看到的情况往往是,领导层比基层人员都要更拼,主要原因就是认知的格局提高了,又加上马太效应和相信的力量使然。


    3.为了未来平稳降落。大部分从事IT行业的人都有的焦虑,就是35岁之后的职业发展问题。IT行业是一个日新月异的行业,从移动互联网到物联网到大数据、虚拟现实再到人工智能、区块链用了短短不到10年的时间。仅从技术这个岗位来看,经验和资历这种东西其实就不是那么的重要了,工作经验5年跟10年差别不是特别大,被那些能加班、能出差、能熬夜的小奋斗B们拍在沙滩上,都是迟早的事儿。所以对于大部分IT从业者来说,管理工作或许才是能够让自己在未来平稳降落更好的选择。


    So,从目前的市场情况来看,想要做一辈子码神真的很难,技术转管理已经是大多数从业5年以上的IT技术人员必须考虑的事情。为了未来更好的腾飞,我们需要提高体系化的管理知识,需要培养前瞻行的思维,也了中年时能够平稳降落,我们更需要修炼责任,担当,格局。。。

  • selenium3 webdriver启动火狐、chrome、edge、Safari浏览器的方法

    2018-10-31 08:53:15


    在selenium2中启动常见的火狐、chrome其实都比较简单,网上也一堆教程。现在selenium最新版已经是 3.x的版本了,与selenium2其实没有太大的区别,无非就是精简了一些不用的东西,然后对于浏览器的支持更好了,比如,对于高版本的firefox、chrome、edge等都可以完美支持,这样我们就不用受限于版本的问题了。


    但很多童鞋在用selenium3启动浏览器的时候都会遇到各种问题,虽然网上也有不少解决方法,但没有一个汇总的,而且解决方法也太过于复杂,所以这次我就总结一下在python中使用selenium3启动常用浏览器的方法。


    前提

    安装好python3,并配置好环境变量


    selenium3 webdriver启动火狐浏览器

    1、选择对应的Mozilla GeckoDriver下载,地址:https://github.com/mozilla/geckodriver/releases

    2、把压缩包里的exe文件放到python的根目录里

    3、安装最新版的火狐,必须高于48版本

    4、运行代码启动

    from selenium import webdriver
    
    #方式1:直接启动浏览器
    driver = webdriver.Firefox()
    '''
    方式2:
    通过指定profile来启动浏览器
    好处就是启动浏览器是带着咱们配置好的设置的
    查看profile的文件路径方法为:
    火狐菜单>帮助>故障排除信息>显示文件夹
    '''
    #定义profile文件路径
    profile_ff = "你实际的profile文件的全路径,注意转义字符"
    #指定使用该profile
    fp = webdriver.FirefoxProfile(profile_ff)
    #启动浏览器时加载指定的profile
    driver = webdriver.Firefox(fp)
    

    小提示:如果不想让火狐自动升级,可以做如下改动:进入火狐安装目录下的defaults下的pref,修改channel-prefs.js,内容最终改为:pref("app.update.channel", "default");




    selenium3 webdriver启动chrome浏览器

    1、选择对应的Google Chrome Driver下载,地址:https://sites.google.com/a/chromium.org/chromedriver/downloads

    2、把压缩包里的exe文件放到python的根目录里

    3、安装最新版的chrome

    4、运行代码启动

    from selenium import webdriver
    
    #方式1:直接启动浏览器
    driver = webdriver.Chrome()
    #方式2:chrome的profile,浏览器里输入chrome://version/,查看自己的“个人资料路径”
    profile_chrome = '--user-data-dir=自己chrome profile的全路径'
    ption=webdriver.ChromeOptions()
    option.add_argument(profile_chrome)
    driver=webdriver.Chrome(chrome_options=option)


    selenium3 webdriver启动edge浏览器

    1、先查看自己电脑上edge的版本号(html的)

    2、然后下载对应版本的Microsoft Edge Driver,地址:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

    3、把exe放到python根目录下

    4、写代码运行

    from selenium import webdriver
    
    driver = webdriver.Edge()


    selenium3 webdriver启动Safari浏览器

    简单到怀疑人生,直接写代码运行

    from selenium import webdriver
    
    driver = webdriver.Safari()

  • 对于新旧技术的争论,我很low的想法

    2018-10-31 08:52:49


    身处IT领域不可避免的会面对新旧技术的迭代更新,自然也少不了新旧技术谁好谁坏的争论。因为最近自己也遇到了新旧技术的“战争”,所以顺道说说自己的看法,当然,我的看法很low。

    效率 or 可靠性?

    我们经常会听到这样的言论,新技术可以提升效率,包括我自己也这么说。不论是新技术还是老技术不可否认的是都可以提升效率,这点毋庸置疑。但我想说的是效率有衡量标准吗?你别忘了人的**是无限的。当你提升了1天,就想让你提升1小时,提升1分钟,即使你提升到了1秒还是不够,希望你提升到立刻马上!明白我的意思吗?就是你根本没有一个靠谱的衡量标准或者数据化的衡量标准,因为都在变化。

    那可靠性呢?说实话我更看重可靠性,至于效率,你懂的(邪恶的笑了)。在企业考核你的是什么?当然很多,但最重要的一点就是可靠性!!!你效率在高但可靠性不行会死的很难看(当过leader的都能明白)。另外,可靠性是可以数据化衡量的,一年就365天(排除闰年,别和我较真),一天就24小时,所以你的系统可靠了多久都是真真正正的数据在那,比起效率更容易衡量。

    可能大家有点懵逼了,你丫在说啥呢?这和新老技术又毛线关系啊。嗯,是有点毛线关系。概率上来看老技术会比新技术靠谱一点。为啥呢?

    举例1:你会发现汽车的电子化越来越多,同时对比以前的机械化带来的小问题也随之增多了。虽然新技术带来了更多效率和科技感,但可靠性并没有大幅增长,甚至有些新技术反而让作为一个人应该有的能力退化了,唉

    举例2:为啥现在的电器一过保修期就坏(各种新技术科技感)?为啥N年前的电器却始终一直好好的?

    创新 or 退步?

    想象一个场景,假设有一天你睡在床上,不用起床就有人给你送饭、喂你饭、帮你换洗衣服,帮你。。。。。此处省略N个字,爽不爽就问你?爽吧?那请问,你和一个废人有毛区别?我记得李诞在奇葩说上也说过,有些进步真的好吗?有些进步真的是进步吗?也许有些所谓的进步可能让我们已经失去了人本有的特性,和机器越来越像了。

    合适的才是最好的

    看到这里肯定会有人大骂,你说的都是扯淡的,新技术就是好,能帮助我这个那个,效率提升啥的巴拉巴拉。。。。嗯,没有错,因为新旧也是在不断交互迭代更新中的,也没有绝对。而我想表达的是,新技术不一定是最合适的,老技术也不一定是最low的,不要看不起用老技术的,也不要高抬使用新技术的,俗话说,合适才是最好的,最好的不一定都合适。

    最后再来一句,不论是新技术还是老技术,更重要的是这些技术背后透露的思想

  • 负载均衡环境搭建实战之apache和tomcat

    2018-08-21 08:43:03

    Linux基本环境

    负载均衡的环境需要在linux下搭建完成,所以有一个基础的linux系统是必须的,这里建议大家按照http://edu.51cto.com/course/10209.html中的基础linux环境来安装,这样能少走弯路。

    Apache的安装

    1、下载http2.4版本,并解压http包

    2、./configure --prefix=/opt/apache2/ --with--mpm=worker --enable-so --enable-mods-shared=all --enable-forward=shared --enable-speling=shared --enable-rewrite=shared --enable-proxy=shared --enable-proxy-ajp=shared --enable-dav=shared --enable-mod_proxy_http=shared --enable-mod_proxy_ftp=shared --enable-mod_proxy_ajp=shared --enable-mod_proxy_balancer=shared --enable-mod_proxy_connect=shared --with-apr=/opt/apr --with-apr-util=/opt/apr-util --with-pcre=/opt/pcre

    3、make &&make install

    PS:如果运行命令出现问题请自行google错误一般都可以解决

    image.png 

    JDK安装

    1、 下载对应版本的Java1.7

    a) 现象:如何查看Linux版本:

                uname –m: 若是i386 或 i686 则是32位kernel

    2、 安装Java1.7

                下载rpm包,然后chmod给予777权限之后在安装

    3、 配置JDK环境变量

            a、vi /etc/profile

            在最后面加上:

            export JAVA_HOME=/usr/java/jdk1.7.0_60

            export CLASSPATH=.:$JAVA_HOME/lib

            export PATH=$JAVA_HOME/bin:$PATH

            b、source /etc/profile:重新加载环境变量

        4、java –version:验证是否安装成功

    image.png 

    PS:不知道哪里下载jdk的可以到这里下载:http://www.xqtesting.com/blog/jdk-103.html

    Tomcat的安装

    Tomcat用7.0,安装及集群配置:

    1、解压tomcat

    2、mv成tomcat1

    3、mv到/opt

    4、cp –r tomcat1 tomcat2

    5、vi /etc/profile写入export TOMCAT_HOME=/opt/tomcat1

    6、tomcat1的server.xml文件保持默认,修改tomcat2的为如下

    i. vi /opt/tomcat2/conf/server.xml

    ii. VI下命令模式下 /Server port=8005修改为9005

    iii. VI下命令模式下 /Connector port=8080修改为9090

    iv. VI下命令模式下 /AJP=8009修改为9009

    7、IE上输入http://192.168.0.98:8080http://192.168.0.98:9090

    都可以看到以下界面就成功了!

    image.png 

    修改http.conf文件

    httpd.conf末尾加上:

    include /opt/apache2/conf/mod_jk.conf

    安装mod_jk.conf

    1、  http://www.apache.org/dist/tomcat/tomcat-connectors/jk/ 下载

     tomcat-connectors-1.2.40-src.tar.gz

    2、 tar xzvf tomcat-connectors-1.2.40-src.tar.gz

    3、 mv tomcat-connectors-1.2.40-src /usr/local

    4、 cd /usr/local/tomcat-connectors-1.2.40-src/native

    5、 ./configure --with-java-home=/usr/java/jdk1.7.0_60  --with-apxs=/opt/apache2/bin/apxs

    6、 make && make install

    7、 cp apache-2.0/mod_jk.so   /opt/apache2/modules/

    8、 有下面的图就成功了:

    image.png

    配置mod_jk.conf

    /opt/apache2/conf下建立mod_jk.conf文件,写入以下内容:

    #加载mod_jk Module

    LoadModule jk_module /opt/apache2/modules/mod_jk.so

     

    #加载集群中的workers

    JkWorkersFile /opt/apache2/conf/workers.properties

     

    #加载workers的请求处理分配文件

    JkMountFile /opt/apache2/conf/uriworkermap.properties

     

    #指定jk的日志输出文件

    #JkLogFile /opt/apache2/logs/mod_jk.log

     

    #指定日志级别

    #JkLogLevel warn

     

    #指定日志的格式

    JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"

     

    #指定哪些请求交给tomcat处理,"controller"为在 workers.propertise里指定的负载分配控制器名

    JkMount /*.* controller

    配置workers.properties文件

    /opt/apache2/conf下建立workers.properties文件。配置内容:

     

    #server 列表

    worker.list=controller,tomcat1,tomcat2

    #========tomcat1========

    查看(656) 评论(0) 收藏 分享 管理

  • SDK测试方法

    2018-07-18 09:14:46



    1、全新sdk


    1.1、了解业务流程,确定开放给开发者都有哪些接口


    1.2、了解SDK用到的所有协议,每个协议中字段的意义和作用以及server端处理逻辑


    1.3、接口要校验输入参数各种输入情况是否能正确处理,返回值的正确性,是否有数据缓存到本地,检查是否有回调,如果有对于请求成功、请求失败(包括无网络、服务器返回非200错误代码)是否都有调用


    1.4、测试中对每个请求都应该抓包测试,查看请求的字段、参数值、返回值是否正确


    1.5、对于协议中必传字段,SDK中是否校验为空的情况


    1.6、查看是否存在多发、少发请求的情况


    1.7、对于异步请求的结果在其他地方(A类中)会用到的情况,检查是否存在网络较慢情况下,未完成请求数据为空时A类就用到数据


    2、对于SDK更新


    2.1、对于增加接口,要确定新增接口对应的协议及各字段的意义


    2.2、对于增加接口调用新接口时要进行抓包,确定发送请求的参数、返回值与协议一致


    2.3、对于删除、新增接口都应在集成文档中说明


    2.4、对于删除、新增接口都应确保对于老接口没有影响


    2.5、SDK更新时,对于有用户数据的情况,要考虑旧SDK没有数据,更新新SDK,新SDK是否可以使用;旧SDK已有用户数据,更新新SDK后旧数据是否存在


    3、上线前检查


    3.1、头文件注释部分


    3.2、增加API,头文件更新API


    3.3、删除API,头文件删除API


    3.4、检查包名、版本,测试中url是否存在测试用的端口或url,发布时应改成正式环境


    3.5、检查包大小及包的架构检查(ios 如armv7/armv7s/armv64)


    3.6、检查



    4、上线后检查


    4.1、进行上线回归测试


    4.2、检查文档更新


    4.3、是否上传至cocoapods

  • 测试人员必会MySQL的简单查询语句

    2018-07-02 09:28:03


     1 | 查询所有数据 


    select * from Info 查所有数据

    select Code,Name from Info 查特定列



     2 | 根据条件查 


    select * from Info where Code='p001' 一个条件查询

    select * from Info where Code='p001' and Nation='n001' 多条件 并关系 查询

    select * from Info where Name='胡军' or Nation='n001' 多条件 或关系 查询

    select * from Car where Price>=50 and Price<=60 范围查询

    select * from Car where Price between 50 and 60 范围查询



     3 | 模糊查询 


    select * from Car where Name like '%型' %通配符代表任意多个字符

    select * from Car where Name like '%奥迪%' _通配符代表任意一个字符

    select * from Car where Name like '_马%'



     4| 排序 


    select * from Car order by Price asc 按照价格升序排列

    select * from Car order by Price desc 按照价格降序排列

    select * from Car order by Price,Oil 按照两列进行排序,前面的为主要的


     5 | 统计函数(聚合函数)


    select count(Code) from Car 查询表中有多少条数据

    select max(Price) from Car 取价格的最大值

    select min(Price) from Car 取价格的最小值

    select sum(Price) from Car 取价格的总和

    select avg(Price) from Car 取价格的平均值



     6 | 分组查询 


    select Brand from Car group by Brand having count(*)>2 查询所有系列中数量大于2的



     7 | 分页查询 


    select * from Car limit 0,5 跳过几条数据取几条数据



     8 | 去重查询 


    select distinct Brand from Car

  • 美团外卖服务端的测试面试题居然泄……泄……泄……泄密了

    2018-06-22 10:11:22


    1.列出你常用的linux命令

    答:vim/touch/cat/tail/grep/cd/chmod/mv/rm

    2.测试接口时,常会遇到需要传入不同参数来测试不同场景,如何实现

    答:自己写方法,并添加到test中去。详细代码后期补充。

    3.浏览器中输入一个URL后,详细说明将会发生什么

    答:1.解析URL

    2.通过DNS找到域名对应的服务器IP

    3.浏览器与服务端进行TCP三次握手  

      第一次握手:客户端向服务器端发送请求;

      第二次握手:服务器收到请求并确认;

      第三次握手:客户端收到服务器的回复指令并返回确认

    4.请求和传输数据

    5.浏览器渲染页面

    4.如何查看linux系统进程

    答:ps -aux ps -aux | grep java

    5.如何查看linux实时日志文件

    答:tail -f 

    6.如何查看LinuxCPU信息

    答:cat /proc/cpuinfo

    7.进程和线程的区别

    答:1.定义:

    进程:进程有一定独立功能的程序,是系统进行资源分配和调试的一个独立单位

    线程:线程是进程的一个实体,它比进程更小的能独立运行的基本单位

    2.关系:

    同一个进程的多个线程之间可以并发执行;

    相对进程而言,线程可以与同进程中的其他线程共享数据

    3.区别:

    1)一个程序至少有一个进程,一个进程至少有一个线程

    2)线程的划分惊讶小于进程,使得多线程程序的并发性高

    3)进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而提高运行效率

    4)每个进程有独立的运行入口和出口,线程不能独立运行

    5)多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。

    4.优缺点

    线程执行开销小,但不利于资源的管理和保护

    进程正相反

    8.给定一无序列表,如何去重,代码实现

    答:

    1)解法一:

    ids = [1,2,3,3,4,2,3,4,5,6,1]

    new_ids = []

    for id in ids:

      if id not in new_ids:

        news_ids.append(id)

     

    print(new_ids)

    2)解法二:

    ids = [1,2,3,4,3,2,5]

    new_ids = list(set(ids))

    print(new_ids)

    9.代码写说二分法查找

    答:时间复杂度:O(log2n);

    def Search(array,t):

        low = 0

        height = len(array)-1

        while low < height:

            mid = (low+height)/2

            if array[mid] < t:

                low = mid + 1

            elif array[mid] > t:

                height = mid - 1

            else:

                return array[mid]

        return -1

    if __name__ == "__main__":

        print(Search([1,5,6,8,10,15,18,25],5))

     

     

    10.给一个数据库表,一个Order表,有商户id,订单id, 商品数量,与商品单价,求某商户的销售额,写sql

    答:

    id

    Order_id

    num

    price

    10001

    9000001

    3

    100

    10001

    9000002

    2

    50

    10002

    9000003

    1

    1000

    SELECT id, (num * price) as sum_price FROM Order ORDER BY id

    11.接口测试时主要关注什么

    答:状态码与消息值

    12.HTTP错误中503代表什么意思

    答:5XX为服务器返回的错误,其中503代表了服务不可用是的一种状态,可能是服务器正在维护或者暂停了,或是CPU占用的频率大导致的。

    13.selenium中如何定位动态元素

    答:1) xpath 2)动态元素的规律 3)找到父元素,通过dom结构定位

    14.求一有序列表[1,2,3,4,4,4,5,6]4的区间,代码实现

    答:

    def get_all_index(self, arr, target):

    return [i for i, a in enumerate(arr) if a == target]

    If __name__ == “__main__”:

    arr = [1,2,3,4,4,4,5,6]

    target = 4

    s = get_all_index(arr, target)

    print(s[0], s[-1])

    15.用代码判断一个IP是否正确

    答:

    1)解法一

    try:

    first = int(input(“请输入第一个1-255数字:”))

    second = int(input(“请输入第二个0-255的数字:”))

    third = int(input(“请输入第三个0-255的数字:”))

    fourth = int(input(“请输入第四个0-255的数字:”))

    except Exception as e:

    print(“请输入数字”)

    if 1 <= first <= 255:

    if 0<= second <= 255:

    if 0<= third <= 255:

    if 0 <= fourth <= 255:

    print(“IP %s.%s.%s.%s有效” % (first, second, third, fourth))

    else:

    print(“IP无效”)

    2)解法二:

    import re    

    def judge_legal_ip(one_str):  

        ''''' 

        正则匹配方法 

        判断一个字符串是否是合法IP地址 

        '''      

    compile_ip=re.compile('^((25[0-5]|2[0-4]d|[01]?dd?).)’

    ’{3}(25[0-5]|2[0-4]d|[01]?dd?)$')    

        if compile_ip.match(one_str):    

            return True    

        else:    

            return False     

    def judge_legal_ip2(one_str):  

        ''''' 

        简单的字符串判断 

        '''  

        if '.' not in one_str:  

            return False  

        elif one_str.count('.')!=3:  

            return False  

        else:  

            flag=True  

            one_list=one_str.split('.')  

            for one in one_list:  

                try:  

                    one_num=int(one)  

                    if one_num>=0 and one_num<=255:  

                        pass  

                    else:  

                        flag=False  

                except:  

                    flag=False  

            return flag  

                          

    if __name__=='__main__':  

    ip_list=['','172.31.137.251','100.10.0.1000','1.1.1.1','12.23.13',

    'aa.12.1.2','12345678','289043jdhjkbh']  

        for one_str in ip_list:  

            if judge_legal_ip(one_str):  #正则方法  

            #if judge_legal_ip2(one_str):  #字符串方法  

                print ('{%s} is a legal ip address!' % (one_str))

            else:  

                print ('{%s} is not a legal ip address!' % (one_str))

     

    16.数据库左连接和右连接有什么区别,结果上有什么不同。

    答:左连接是以左表为基准,右连接是以右表为基准。结果看具体情况,相同的是不足的地方会显示为NULL

    17.给一个二叉树,算法实现树的先序、中序后序

    答:先序:根左右;中序:左根右;后序:左右根

    //输出

    void Visit(BiTree T){

        if(T->data != '#'){

            printf("%c ",T->data);

        }

    }

    //先序遍历

  • 个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    2018-06-20 08:57:05


    【个税法迎第七次大修 起征点调至每年6万元】备受关注的个人所得税法修正案草案19日提请十三届全国人大常委会第三次会议审议,这是个税法自1980年出台以来第七次大修,也将迎来一次根本性变革:工资薪金、劳务报酬、稿酬和特许权使用费等四项劳动性所得首次实行综合征税;个税起征点由每月3500元提高至每月5000元(每年6万元)

    之前的标准:

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    目前,国内薪资水平比较高的,当然是IT工作人员们,那么之前的税收政策对于月薪1.2W的IT工程师(毕业学员平均水平)来说,需要交多少税呢?小编以北京为例:

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    可以看出,扣除五险一金后,月薪是9336,按照之前的税率表格计算,(9336-3500)*20%-555(速算扣除数)=612.2

    改完之后,怎么算呢?目前还没有公布细则,如果仅是提高个税起征点。

    (9336-5000)*10%-105(速算扣除数)=328.6

    注意:如果起征点是5000的话,9336-5000=4336 正好匹配到2档 10%税率

    新的起征点对于1.2W月薪人群来说,能少交283.6元(可以买好多鸡腿),可见1.2W是一个临界点(再高就要匹配20%税率了)。对于扣除后月薪不足5000的来说,是个大福利,不用交税了。

    这次税改,可为千呼万唤始出来. 之前网易做了个调查,经济学家和网友们,针对个税情况进行了投票:

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    左侧为经济学家观点,右侧为广大吃瓜网友的观点,大部分吃瓜网友,都认为工薪阶层赋税过重。近期,这不崔叔也不断爆料就连明星们都认为税高,采用各种方式避税嘛。

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    面对明星们“没事走两步” 就可上百万的收入,十分扎心。这么多的钱,小编见都没见过。

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?

    最后,小编看了下目前全国主要城市的平均收入,不禁倒吸一口凉气

    个税起征点调至5000,对月薪1.2W的IT人士来说,能少交多钱?


  • 运维工程师必会的109个Linux命令(3)

    2018-05-21 07:58:41

    压缩管理

    1.1 bunzip2

    1.1.1 功能说明

    .bz2文件的解压缩程序。

    1.1.2 语法

    bunzip2 [-fkLsvV][.bz2压缩文件]

    1.1.3 补充说明

    bunzip2可解压缩.bz2格式的压缩文件。bunzip2实际上是bzip2的符号连接,执行bunzip2与bzip2 -d的效果相同。

    1.1.4 参数

     -f或--force  解压缩时,若输出的文件与现有文件同名时,预设不会覆盖现有的文件。若要覆盖,请使用此参数。

     -k或--keep  在解压缩后,预设会删除原来的压缩文件。若要保留压缩文件,请使用此参数。

     -s或--small  降低程序执行时,内存的使用量。

     -v或--verbose  解压缩文件时,显示详细的信息。

     -l,--license,-V或--version  显示版本信息。

    1.2 bzip2

    1.2.1 功能说明

    .bz2文件的压缩程序。

    1.2.2 语法

    bzip2 [-cdfhkLstvVz][--repetitive-best][--repetitive-fast][- 压缩等级][要压缩的文件]

    1.2.3 补充说明

    bzip2采用新的压缩演算法,压缩效果比传统的LZ77/LZ78压缩演算法来得好。若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

    1.2.4 参数

     -c或--stdout  将压缩与解压缩的结果送到标准输出。

     -d或--decompress  执行解压缩。

     -f或--force  bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数。

     -h或--help  显示帮助。

     -k或--keep  bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数。

     -s或--small  降低程序执行时内存的使用量。

     -t或--test  测试.bz2压缩文件的完整性。

     -v或--verbose  压缩或解压缩文件时,显示详细的信息。

     -z或--compress  强制执行压缩。

     -L,--license,

     -V或--version  显示版本信息。

     --repetitive-best  若文件中有重复出现的资料时,可利用此参数提高压缩效果。

     --repetitive-fast  若文件中有重复出现的资料时,可利用此参数加快执行速度。

     -压缩等级  压缩时的区块大小。

    1.3 cpio

    1.3.1 功能说明

    备份文件。

    1.3.2 语法

    cpio [-0aABckLovV][-C <输入/输出大小>][-F <备份档>][-H <备份格式>][-O <备份档>][--block-size=<区块大小>][--force-local][--help][--quiet][--version]

    或 cpio [-bBcdfikmnrsStuvV][-C <输入/输出大小>][-E <范本文件>][-F <备份档>][-H <备份格式>][-I <备份档>][-M <回传信息>][-R <拥有者><:/.><所属群组>][--block-size=<区块大小>][--force-local][--help][--no-absolute-filenames][--no-preserve-owner][--only-verify-crc][--quiet][--sparse] [--version][范本样式...]

    或 cpio [-0adkiLmpuvV][-R <拥有者><:/.><所属群组>][--help][--no-preserve-owner][--quiet] [--sparse][--version][目的目]

    1.3.3 补充说明

    cpio是用来建立,还原备份档的工具程序,它可以加入,解开cpio或tra备份档内的文件。

    1.3.4 参数

     -0或--null  接受新增列控制字符,通常配合find指令的"-print0"参数使用。

     -a或--reset-access-time  重新设置文件的存取时间。

     -A或--append  附加到已存在的备份档中,且这个备份档必须存放在磁盘上,而不能放置于磁带机里。

     -b或--swap  此参数的效果和同时指定"-sS"参数相同。

     -B  将输入/输出的区块大小改成5210 Bytes。

     -c  使用旧ASCII备份格式。

     -C<区块大小>或--io-size=<区块大小>  设置输入/输出的区块大小,单位是Byte。

     -d或--make-directories  如有需要cpio会自行建立目录。

     -E<范本文件>或--pattern-file=<范本文件>  指定范本文件,其内含有一个或多个范本样式,让cpio解开符合范本条件的文件,格式为每列一个范本样式。

     -f或--nonmatching  让cpio解开所有不符合范本条件的文件。

     -F<备份档>或--file=<备份档>  指定备份档的名称,用来取代标准输入或输出,也能借此通过网络使用另一台主机的保存设备存取备份档。

     -H<备份格式>  指定备份时欲使用的文件格式。

     -i或--extract  执行copy-in模式,还原备份档。

     -l<备份档>  指定备份档的名称,用来取代标准输入,也能借此通过网络使用另一台主机的保存设备读取备份档。

     -k  此参数将忽略不予处理,仅负责解决cpio不同版本间的兼容性问题。

     -l或--link  以硬连接的方式取代复制文件,可在copy-pass模式下运用。

     -L或--dereference  不建立符号连接,直接复制该连接所指向的原始文件。

     -m或preserve-modification-time  不去更换文件的更改时间。

     -M<回传信息>或--message=<回传信息>  设置更换保存媒体的信息。

     -n或--numeric-uid-gid  使用"-tv"参数列出备份档的内容时,若再加上参数"-n",则会以用户识别码和群组识别码替代拥有者和群组名称列出文件清单。

     -o或--create  执行copy-out模式,建立备份档。

     -O<备份档>  指定备份档的名称,用来取代标准输出,也能借此通过网络 使用另一台主机的保存设备存放备份档。

     -p或--pass-through  执行copy-pass模式,略过备份步骤,直接将文件复制到目的目录。

     -r或--rename  当有文件名称需要更动时,采用互动模式。

     -R<拥有者><:/.><所属群组>或

     ----owner<拥有者><:/.><所属群组>  在copy-in模式还原备份档,或copy-pass模式复制文件时,可指定这些备份,复制的文件的拥有者与所属群组。

     -s或--swap-bytes  交换每对字节的内容。

     -S或--swap-halfwords  交换每半个字节的内容。

     -t或--list  将输入的内容呈现出来。

     -u或--unconditional  置换所有文件,不论日期时间的新旧与否,皆不予询问而直接覆盖。

     -v或--verbose  详细显示指令的执行过程。

     -V或--dot  执行指令时,在每个文件的执行程序前面加上"."号

     --block-size=<区块大小>  设置输入/输出的区块大小,假如设置数值为5,则区块大小为2500,若设置成10,则区块大小为5120,依次类推。

     --force-local  强制将备份档存放在本地主机。

     --help  在线帮助。

     --no-absolute-filenames  使用相对路径建立文件名称。

     --no-preserve-owner  不保留文件的拥有者,谁解开了备份档,那些文件就归谁所有。

     -only-verify-crc  当备份档采用CRC备份格式时,可使用这项参数检查备份档内的每个文件是否正确无误。

     --quiet  不显示复制了多少区块。

     --sparse  倘若一个文件内含大量的连续0字节,则将此文件存成稀疏文件。

     --version  显示版本信息。

    1.4 gunzip

    1.4.1 功能说明

    解压文件。

    1.4.2 语法

    gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][文件...] 或 gunzip [-acfhlLnNqrtvV][-s <压缩字尾字符串>][目录]

    1.4.3 补充说明

    gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为".gz"。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。

    1.4.4 参数

     -a或--ascii  使用ASCII文字模式。

     -c或--stdout或--to-stdout  把解压后的文件输出到标准输出设备。

     -f或-force  强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接。

     -h或--help  在线帮助。

     -l或--list  列出压缩文件的相关信息。

     -L或--license  显示版本与版权信息。

     -n或--no-name  解压缩时,若压缩文件内含有远来的文件名称及时间戳记,则将其忽略不予处理。

     -N或--name  解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。

     -q或--quiet  不显示警告信息。

     -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

     -S<压缩字尾字符串>或--suffix<压缩字尾字符串>  更改压缩字尾字符串。

     -t或--test  测试压缩文件是否正确无误。

     -v或--verbose  显示指令执行过程。

     -V或--version 显示版本信息。

    1.5 gzip

    1.5.1 功能说明

    压缩文件。

    1.5.2 语法

    gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][文件...] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][--best/fast][目录]

    1.5.3 补充说明

    gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多出".gz"的扩展名。

    1.5.4 参数

     -a或--ascii  使用ASCII文字模式。

     -c或--stdout或--to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。

     -d或--decompress或----uncompress  解开压缩文件。

     -f或--force  强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接。

     -h或--help  在线帮助。

     -l或--list  列出压缩文件的相关信息。

     -L或--license  显示版本与版权信息。

     -n或--no-name  压缩文件时,不保存原来的文件名称及时间戳记。

     -N或--name  压缩文件时,保存原来的文件名称及时间戳记。

     -q或--quiet  不显示警告信息。

     -r或--recursive  递归处理,将指定目录下的所有文件及子目录一并处理。

     -S<压缩字尾字符串>或----suffix<压缩字尾字符串>  更改压缩字尾字符串。

     -t或--test  测试压缩文件是否正确无误。

     -v或--verbose  显示指令执行过程。

     -V或--version  显示版本信息。

     -<压缩效率>  压缩效率是一个介于1-9的数值,预设值为"6",指定愈大的数值,压缩效率就会愈高。

     --best  此参数的效果和指定"-9"参数相同。

     --fast  此参数的效果和指定"-1"参数相同。

    1.6 split

    1.6.1 功能说明

    切割文件。

    1.6.2 语法

    split [--help][--version][-<行数>][-b <字节>][-C <字节>][-l <行数>][要切割的文件][输出文件名]

    1.6.3 补充说明

    split可将文件切成较小的文件,预设每1000行会切成一个小文件。

    1.6.4 参数

     -<行数>或-l<行数>  指定每多少行就要切成一个小文件。

     -b<字节>  指定每多少字就要切成一个小文件。

     -C<字节>  与-b参数类似,但切割时尽量维持每行的完整性。

     --help  显示帮助。

     --version  显示版本信息。

     [输出文件名]  设置切割后文件的前置文件名,split会自动在前置文件名后再加上编号。

    1.7 tar

    1.7.1 功能说明

    备份文件。

    1.7.2 语法

    tar [-ABcdgGhiklmMoOpPrRsStuUvwWxzZ][-b <区块数目>][-C <目的目录>][-f <备份文件>][-F <Script文件>] [-K <文件>][-L <媒体容量>][-N <日期时间>][-T <范本文件>][-V <卷册名称>][-X <范本文件>]

    [-<设备编号><存储密度>][--after-date=<日期时间>] [--atime-preserve]

    [--backuup=<备份方式>] [--checkpoint][--concatenate][--confirmation][--delete]

    [--exclude=<范本样式>] [--force-local][--group=<群组名称>]

    [--help][--ignore-failed-read][--new-volume-scrip

  • 学习型产品是否要满足人们的“懒”需求

    2018-05-17 09:09:52

    首先我们解释下这个话题的意思,可能有些同学看不懂?

    举个简单的例子,现在很多水果店都把水果切好放那,你可以自由选择拿哪些,然后去结账。这里就是满足了人们的懒需求(不想洗水果,不想切水果,一次想吃很多种水果,嫌水果太多,嫌水果太少,总之你懂的。。。。。)。

    那么,学习性产品是否要满足这样的懒需求呢?我不会告诉你的,哈哈,开个玩笑。

    1、生活的懒需求让我们变得越来越不会生活,但我们享受这样的变化。当产品满足你的懒需求时,你会觉得特别高兴,会对他赞不绝口,这些其实我觉得没啥,说的不好听点,即使丧失了生活的本领如果还有挣钱的本领也是可以的(个人还是觉得生活本领不能丢失,不为自己也得为下一代着想)

    2、换成学习产品呢?如果满足了你的懒需求,我们想象下场景会是这么样子的。

    一睁眼,软件包已经下载到了你本地,安装以及帮你安装好,课件已经帮你翻到了xx页,代码已经帮你写好你拿来就用,问题已经帮你解决你都不用费脑子。。。。。。嗯,真好,如果有这样的产品服务我愿意花钱。可是然后呢?

    3、总有一天你会自己单飞,谁也不是你永久的陪伴。那时候,下个软件不知道怎么下,装个jdk不知道变量怎么赔,给了你N个G资料懒得看,代码放那愣是看不懂,遇到问题瞬间变白只能到处问人。。。。。。。这就是学习中懒需求满足你之后你的结果。

    4、上面说的可能有点概括,那么我们就举几个例子来说说。

    a、真好,老师都已经为我们提供好了jmeter3.3安装包、安装方法步骤,甚至环境都给我们了。棒棒哒。

    aa、N久之后,jmeter升级到了4.0,哪里去下载软件包啊,怎么安装啊,哎呀,环境老是出错啊,war包怎么运行啊,懒需求带给你的结果就是这样的

    b、真好,老师给了我们课件文档,我再也不用记笔记了,哈哈

    bb、N久之后,这个怎么弄来着,我忘了,我没记笔记,我没整理,这个讲过嘛不记得啊,这个是在哪里将来这。。。。。。。。嗯,活了这么久我们还是不懂的好记性不如烂笔头。自己总结记录的能和别人的一样嘛。

    c、真好,我们直接能拿到源码,都不用自己敲代码,拿来就能用啦,哈哈,好省事。

    cc、N久之后,我怎么看不懂代码了,这个是怎么处理的呀,我想改造下框架但是不会写代码了,框架有bug了不会解决啊,这个写法怎么不行啊。。。。。我们总觉得拿个现成的就好,其实是害了你。。。。。

    5、真正好的学习性产品一定不是满足你的懒需求,甚至是和你的懒需求做对,是教你如何思考、解决问题。他不会告诉你A正确B错误,而是告诉你最优选择。这个世界不缺少好的学习性产品,而是缺少发现的人,因为我们都太懒了。

    好了,瞎写了点,可能写的也不好,随便看看吧。突然想到我们的大学教育,本人在澳大利亚某大学做过交流的学生带过一年,我可以很负责任的说,那的大学教你思维,引导你解决问题,不会告诉你标准;而国内大学除**褪荁,全是标准。如果让我选择我会选择前者,因为他教会了万能的方法,而不是针对A的方法,他能让我在未来应对各种问题时可以通过思维、方法、分析来解决,而不是瞬间懵逼。

    所以,如果一个学习性产品满足了你的懒需求,祝贺你,你会变得更差!

  • jmeter3.x以上版本安装插件的方法

    2018-05-11 09:24:34

    好多朋友问到jmeter怎么装插件,其实小编是一脸懵逼的。。。。官网已经有了详细的说明,但100个人里会有超过90个问,好吧,那这次就说一下这个问题吧

    在jmeter3.0之前的版本中,插件的安装方法需要自行去找相应的jar包然后放到对应的目录中。但现在基本不在用低于3.0的版本了,所以此处你可以忽略!

    但是在jmeter3.0版本之后的,插件的安装方法变了,大致步骤为:

    1、https://jmeter-plugins.org/downloads/all/ 下载plugins manager ,放到jmeter的lib下的ext目录中

    2、重启jmeter才可以生效

    3、重启jmeter后,选择菜单“选项”>“plugins manager”>之后在此对话框中进行选择安装,要比之前的操作简单很多,所有可用插件均可在这里找到。

    PS:有童鞋说看不懂英文。。。。这世界上有个软件叫有道词典。。。。。

    好了,以后再问这样的问题,我内心是拒绝的~

  • web安全测试总结

    2018-05-06 21:44:30


    常见问题: 

    1.XSS(CrossSite Script)跨站脚本攻击


    XSS(CrossSite Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而达

    到恶意用户的特殊目的。


    测试方法: 

    在数据输入界面,添加记录输入:

    ,添加成功如果弹出对话框,表明此处存在一个XSS 漏洞



    或把url请求中参数改为

    ,如果页面弹出对话框,表明此处存在一个XSS 漏洞



    修改建议:

    过滤掉用户输入中的危险字符。对输入数据进行客户端和程序级的校验(如通过正则表达式等)。


    Eg:对用户输入的地方和变量有没有做长度和对”<”,”>”,”;”,”’”等字符是否做过滤


    2.CSRF与跨站脚本(XSS)


    CSRF与跨站脚本(XSS),是指请求迫使某个登录的浏览器向易受攻击的Web应用发送一个请求,然后以受害者的名义,为入侵者的利益进行所选择的行动。


    测试方法:

    同个浏览器打开两个页面,一个页面权限失效后,另一个页面是否可操作成功


    使用工具发送请求,在http请求头中不加入referer字段,检验返回消息的应答,应该重新定位到错误界面或者登陆界面。


    修改建议:

    在不同的会话中两次发送同一请求并且收到相同的响应。这显示没有任何参数是动态的(会话标识仅在cookie 中发送),因此应用程序易受到此问题攻击。因此解决的方法为


    1.Cookie Hashing(所有表单都包含同一个伪随机值):


    2.  验证码


    3.One‐Time Tokens(不同的表单包含一个不同的伪随机值)客户端保护措施:应用防止


    CSRF攻击的工具或插件。

    3.注入测试


    SQL注入是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符

    串,最终达到欺骗服务器执行恶意的SQL命令。


    测试方法:

    在需要进行查询的页面,输入正确查询条件 and 1=1等简单sql语句,查看应答结果,如与输入正确查询条件返回结果一致,表明应用程序对用户输入未进行过滤,可以初步判断此处存在SQL注入漏洞


    修改建议:

    对用户的输入进行校验,可以通过正则表达式,或限制长度;对以下关键字进行转换等;


    ||alert|and|exec|execute|insert|select|delete|update|count|drop|chr|mid|master|truncate|declare|sitename|netuser|xp_cmdshell|or|+|,|like'|and|exec|execute|insert|create|drop|table|from|grant|group_concat|column_name|information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|chr|mid|master|truncate|declare|or|--|+|,|like|//

    不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取;


    不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接;


    应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装。


    4.登录认证测试


    4.1暴力破解

    暴力破解是目前最直接有效的攻击方式,特别对于金融业务来说,很多情况下口令都为6位纯数字,很容易被攻击。本测试项在于检查认证系统对暴力破解的防护性。


    测试方法:

    启动抓包工具,同时打开浏览器输入用户登录页面,输入用户名、密码以及验证码,进行登录,如果在抓包中存在明文的用户名和密码,说明存在弱点。


    修改建议:

    将请求方式从HTTP方式修改为HTTPS方式或者对输入的用户名和密码进行加密,在服务端对密码进行验证


    4.2代码注释

    开发版本的Web程序所带有的注释在发布版本中没有被去掉,而导致一些敏感信息的泄漏。我们要查看客户端能看到的页面源代码并发现此类安全隐患。


    测试方法:

    打开登陆页面(或者待测试页面),点击浏览器邮件,查看源代码,检查源代码注释部分是否有敏感信息泄露,敏感信息包括以下内容:字段文字描述、内网 IP 地址、SQL 语句以及物理路径等等。


    修改建议:

    请勿在HTML  注释中遗留任何重要信息(如文件名或文件路径)。

    从生产站点注释中除去以前(或未来)站点链接的跟踪信息。

    避免在HTML  注释中放置敏感信息。

    确保HTML  注释不包括源代码片段。


    4.3 用户名破解

    为了进行暴力破解,攻击者需要知道已存在的用户名,再对该用户名进行攻击。


    测试方法:

    在登录界面输入不存在的用户名和任意的口令,如果提示用户名不存在,则说明存在漏洞;使用正确的用户名和错误的口令进行登录,如果提示口令或密码错误,则说明存在漏洞。


    修改建议:

    服务器对所有的登陆错误原因进行统一的应答,不会提示准确的错误提示信息。


    4.4

    在缺少锁定策略和验证码设计有问题的情况下,攻击者可以通过枚举的方式来进行暴力猜解。


    测试方法:

    在登录页面,输入正确的用户名、错误的口令以及正确的验证码,提交表单,重复10

    次,如果系统没有返回类似账号锁定的信息,则说明存在漏洞。


    修改建议:

    在用户进行错误登录次数达到系统配置后,需要对该账号或者该IP进行临时锁定,到达解锁条件后再进行解锁。


    4.5

    查看是否有验证码机制,以及验证码机制是否完善,避免使用自动化工具重复登录和进行业务操作。


    测试方法:

    打开登陆页面查看是否存在验证码,如果不存在说明存在漏洞。


    输入正确的用户名和口令以及错误的验证码,如果只是提示验证码错误,则说明存在漏洞。


    选择验证码,点击右键,验证码是图片形式且在一张图片中,如果不是,则说明存在漏洞。


    观察验证码图片中背景是否存在无规律的点或线条,如果背景为纯色(例如只有白色)说明存在漏洞。


    修改建议:

    将验证码生成放在在一张进行了混淆处理的图片上。


    4.6

    测试方法:

    进入系统的口令修改界面,查看是否必须输入旧口令,如果不需要则存在漏洞。


    修改建议:

    用户修改密码时必须提供旧密码,且新密码不能与旧密码相同,密码要有一定复杂度,参见口令规则建议。


    4.7 默认账户名称设置

    一般系统均设有默认登录用户,以及超级管理员账号,如登录账号过于简单将易被破解,造成超级权限泄露。


    修改建议:

    上线系统清除超级管理员权限用户,或增加超级管理员登录名复杂度,不要设置成易猜测的admin、superadmin等名称。


    4.8 错误的页面信息

    404、500等错误或警告消息,可能会泄露敏感信息。


    修改建议:

    捕获异常跳转至统一错误页面,避免对外泄漏详细错误信息。


    5.会话管理测试未更新


    5.1会话标识测试


    查看登录成功后会话标识是否变更。如果未变更,那么攻击者就可以通过一些手段(如构造URL)为受害着确定一个会话标识,当受害者登录成功后,攻击者也可以利用这个

    会话标识冒充受害者访问系统。


    测试方法:

    启动抓包工具或浏览器自带开发者模式打开登录页面,输入正确的用户名、口令以及验证码,进行登录,登录后,进行任意一项业务操作。如果登录的SessionId和进行业务的SessionId没有变化,则说明存在漏洞。


    修改建议:

    对每次请求都从上次请求获得令牌,服务端对每次交互都进行验证

    查看是否存在浏览器窗口闲置超时后需重新登录的机制


    5.2会话超时测试


    测试方法:

    打开登录界面,输入正确的用户名和口令,进行登录,进行一项业务操作,将浏览器空闲超过30分钟,在进行其他业务操作,如果能够进行其他业务操作,则说明存在漏洞。


    修改建议:

    需要在后台进行配置Session的超时时间。


    5.3会话清除测试


    用户注销后会话信息需要清除,否则会导致用户在点击注销按钮之后还能继续访问注销之前才能访问的页面。


    测试方法:

    进入登录页面,输入正确的用户名和密码,登录成功后,进行一些业务操作,点击注销按钮,在浏览器输入地址,输入上面进行业务操作的地址,如果能够正常返回业务页面,则说明存在漏洞。


    修改建议:


    在用户注销后,必须将用户的Session信息以及缓存信息全部清空。

        6其他


    6.1文件目录测试


    目录列表能够造成信息泄漏,而且对于攻击者而言是非常容易进行的。所以在测试过程中,要注意目录列表漏洞。


    测试方法:


    通过浏览器访问web 服务器上的所有目录,检查是否返回目录结构,如果显示的是目录结构,则可能存在安全问题;


    或使用DirBuster软件进行测试;


    修改建议:


    1.针对每个Directory 域都使用Allow 、Deny 等指令设置,严格设定WEB服务器的目录访问权限;


    2.删除Options 指令下的Indexes 设置项;


    6.2文件上传漏洞


    文件上传漏洞通常由于网页代码中的文件上传路径变量过滤不严造成的,如果文件上传功能实现代码没有严格限制用户上传的文件后缀以及文件类型,攻击者可通过 Web 访问的目录上传任意文件,包括网站后门文件(webshell),进而远程控制网站服务器。


    修改建议:


    严格限制和校验上传的文件类型、大小等,禁止上传恶意代码的文件。同时限制相关目录的执行权限,防范webshell攻击。


    6.3http请求方法测试


    有些Web服务器默认情况下开放了一些不必要的HTTP方法(如DELETE、PUT、TRACE、MOVE、COPY),这样就增加了受攻击面。


    测试方法:


    使用SoapUI等工具,发送除get、post以外的方法请求,如接收应答为200ok,代表启用了不必要的方法。


    修改建议:


    在tomcat  web.xml中增加如下内容:


       

         /*

         PUT

         DELETE

         HEAD

         OPTIONS

         TRACE

       

       

       

     BASIC

    6.4 服务器安全策略


    1.服务器用户权限


    运行Web服务器的操作系统账号权限越高,那么Web遭到攻击产生的危害就越大。部署到生产环境运行时是不能用root等最高权限的,一切都给予以最小权限。


    2.关闭无关端口


    网络上被攻陷的大多数主机,是黑客用扫描工具大范围进行扫描而被瞄准上的。所以,为了避免被扫描到,除了必要的端口,例如 Web、FTP、SSH 等,其他的都应关闭。


    如:关闭 icmp 端口,并设置规则,丢弃 icmp 包。这样他人无法 Ping到服务器,服务器安全得到提升。


    修改方法:丢弃 icmp 包可在 iptables 中, 加入一条语句:-A INPUT -p icmp -j DROP


    3.更改默认端口


    如:默认的 SSH 端口是 22。建议改成 10000 以上。这样别人扫描到端口的机率也大大下降。


    举例修改方法:


    # 编辑 /etc/ssh/ssh_configvi /etc/ssh/ssh_config# 在 Host * 下 ,加入新的 Port 值。以 18439 为例(下同):Port 22 Port 18439

    # 编辑 /etc/ssh/sshd_configvi /etc/ssh/sshd_config#加入新的 Port 值Port 22Port 18439# 保存后,重启 SSH 服务:service sshd restart

    测试新端口连接正常后,删除 Port 22 的配置。同时从 iptables 中, 删除22端口,添加新配置的 18439,并重启 iptables。


    4.限制IP登录

  • 技术部员工绩效考核方案

    2018-05-04 07:50:59


    岗位应用开发工程师

    项目及考核内容

    分值


    工作态度

    根据平日的工作态度直接上级打分

    20分

    任务完成及质量

    根据任务的度及完成质量上级打分

    40分

    后期维护质量及效率

    根据对所开发功能及模块的维护质量及效率,上级打分

    20分

    开发的出错率

    普通Bug的数量和工作量(人/天)的比值,平均少于等于2个为20分,3-6个为16分,7-9个为10分,由于开发错误导致的系统崩溃或系统运行不正常,直接扣15分

    20分

    合作部门投诉或表扬

    表扬一次加3分,投诉一次扣3分


    创新能力

    如有较好的创新点或建议,对系统优化有较好的帮助,每个加5分


    岗位web前端开发工程师

    项目及考核内容

    分值


    工作态度

    根据平日的工作态度直接上级打分

    20分

    任务完成及质量

    根据任务的度及完成质量上级打分

    40分

    与开发人员的配合默契度

    根据与开发人员的沟通及配合默契程度上级打分

    10分

    工作的出错率

    制作出的页面与原型图出现较大差异的或者兖州错误的,每次扣除3分

    20分

    后期项目的维护

    根据后期项目的维护工作效率由上级打分

    10分

    合作部门或合作人员投诉或表扬

    表扬一次加3分,投诉一次扣3分


    创新能力

    如有较好的创新点或建议,对项目管理优化有较好的帮助,每次加5分


    岗位软件测试工程师

    项目及考核内容

    分值


    有效缺陷率

    用来衡量测试人员发现的,被确认为缺陷的有效缺陷比率,比率越高则测试质量越高。

    >=70% 20 >=50% 15 >=30% 10 >=10% 5 <=5% 0

    20分

    测试覆盖率

    主要用来衡量测试人员对功能点遗漏测试的情况。

    >=90% 10 >=80% 8 >=60% 6 >=50% 4 <=5% 0

    10分

    bug描述质量

    主要衡量测试人员对于bug报告的描述情况。bug报告的描述是否清晰、简洁。

    很好 10 还好 8 一般6 模糊4 很模糊 0

    10分

    严重bug率

    主要是根据严重程度分类的缺陷数比全部缺陷或者有效缺陷。这有助于让测试人员将注意力集中在关键问题上,减少产品的致命缺陷。

    >=70% 20 >=50% 15 >=30% 10 >=10% 5 <=5% 0

    20分

    遗漏缺陷率

    产品正式发布推向市场后,客户在使用产品的过程中发现的缺陷数占缺陷总数的比率。用来总体衡量测试组整体的工作情况。

    >=90% 20 >=80% 15 >=60% 10 >=10% 5 <=5% 0

    20分

    开发人员对测试人员的评估

    开发人员对于测试人员所报告的缺陷进行确认,修改(或者拒绝),对于测试人员的工作表现以及缺陷质量

    很好 20 还好 15 一般10 模糊 5 很模糊 0

    20分

    岗位项目经理

    项目及考核内容

    分值


    工作态度

    根据平日的工作态度直接上级打分

    20分

    项目管理完成度及质量

    根据项目的完成度及完成质量上级打分,能保证所有项目按时保质完成为满分,单个项目延误扣5分,出现严重质量问题扣10分

    40分

    项目管理效率及成本控制

    根据项目管理效率及成本控制上级打分

    40分

    合作部门投诉或表扬

    表扬一次加3分,投诉一次扣3分


    创新能力

    如有较好的创新点或建议,对项目管理优化有较好的帮助,每次加5分


    绩效等级标准

    等级

    考核总分

    优秀

    90分及以上

    良好

    80―89分

    一般

    70-79分

    合格

    60-69分

    不合格

    59分及以下

  • 职场女性,如何平衡工作与怀孕?

    2018-05-03 08:01:14


    当代社会有不少年轻女性为了职场的进阶,不得不推迟受孕年龄,也有不少女性为了生育不得不放弃工作。其实,怀孕并不是女性职场生涯的绊脚石,反而是90后新职场女性自我提升、获得职场新生的跳板。今天给新职场女性一些解决“怀孕与工作的矛盾”的建议。

     

     

    1.掌握基本的请假技巧


    我们先从第一个问题开始说起,在休产假之前,90后职场新女性面临的一大难题就是“如何恰当又合理地频繁请假”,包括产检请假,妊娠反应请假,孕期各种不适请假。这里透露一些新人不知道的职场潜在福利及基本的请假技巧。

     

    1)孕妇享有不被降低工资的权利


    在我国,工资分配实行男女同工同酬,公司或企业在女职员怀孕期、产期、哺乳期降低其基本工资是不合法的。所以孕妈要记住怀孕了是照样可以领基本工资的哦!

     

    2)享受免加班福利


    按照我国《女职工劳动保护规定》第七条规定,女职工在怀孕期间,有权享受免加班福利;所在单位不得安排超过第三级体力劳动强度的劳动(不超过5.8小时),怀孕七个月以上(含七个月)的女职工,一般不得安排其从事夜班劳动。

     

    3)孕妇的产假时长为98天。(其中可休产前假15天)


    什么时候停止上班开始休产假,没有绝对的规定时间,主要取决于你的身体状况、家庭因素、孕期进展情况等。但是产假休得越早,宝宝出生后上班的时间可能也随之提早。


    准妈妈应当根据实际情况进行产假休息,不建议过早休假,因为在上班时间,有更多机会走动、忙碌起来,这样能使时间过得快一些,不至于太无聊,也有利于生产。


    除了一般产假时长,孕妇还享有一些特殊的产假福利:

     

    • 难产,增加产假15天

    • 育多胞胎,每多生育1个婴儿,增加产假15天

    • 怀孕未满4个月流产的,享受15天产假

    • 怀孕满4个月流产的,享受42天产假

    • 晚育产假,由各省、自治区、直辖市根据本省计划生育条例规定。

     

    4)产检假


    根据我国相关规定,怀孕的女职工,在劳动时间内进行产前检查,应当算作劳动时间,单位不应当以此为理由扣发工资。

     

    孕妈在请假时,一定要了解清楚相关假期福利,了解公司规章制度、请假程序,请假术语尽量温和,态度诚恳。

     

    爱2.重新规划工作事宜


    怀孕对于女性而言是人生一大事,孕期期间需要按时吃饭、休息、补充足够的营养,避免加班、过度疲劳,这对于有进取心的职场新人来说,很大程度上会影响到工作计划、工作进程,对于后期的晋升也可能会造成一定的影响。所以这一部分教大家如何科学地重新规划工作,包括孕期新工作日程表的重新制定、工作优先级划分、如何提高工作效率。

     

    1)职场孕妈在怀孕期间许多工作无法自己独立高效地完成,因此,孕妈在重新制定工作日程表的同时,将工作的优先等级按照工作任务的紧急程度、难易程度进行排序,尽可能地考量当前自己的工作能力,将超出工作能力范围的任务交接给其他人,千万不要逞强,孕期的你更需要学会照顾好自己,工作强度要适量并做好身体的健康调理。

     

    2)将每天的工作状况记录下来,做好同事可以随时接手工作的准备。因为怀孕期间的突发状况是无法预想的,有责任感的职场工作者应当以公司的工作效益为先,放弃以自我为中心的工作态度。

     

    3)利用碎片化时间提高工作效率。怀孕期间的检查、休息、不适等都争夺了工作时间,因而工作效率会大大降低,孕妈在时间管理上的合理性,不仅可以提高工作效率,还能增加自身的充实感。


    孕妇的碎片时间一般包括:检查时排队等待的时间、夜间的自由时间、周末、非工作时间,可以利用时间碎片长度的不同进行不同程度的学习,尽可能地利用好时间空隙,弥补被“孕期偷走的工作时间”。

     

    爱3、来几招交往新技能


    孕妈的饮食、时间安排和作息规律与普通群体有所偏差,这有可能会导致职场女性在怀孕期间无法和同事保持正常频率的社交,从而影响到工作和人际。这里同样给出几点建议,帮助孕妈维持办公室人际关系。

     

    1)正确看待同事关系


    职场的同事关系与日常朋友关系是两码事,不要逾越界限,工作上的交接要清楚明了,维持良好的工作关系。

     

    2)不要把自己当成特殊群体


    有的人怀孕了就开始矫情了,把自己看成弱势群体认为全世界人的都应该照顾她让着她。记住,情绪性的东西无论在什么时候都不要带到职场上,你的同事们不会因为你怀孕而特别关照你,大家都在专注自己的工作,哪有闲情雅致顾及你。

     

    3)保持感恩和谦虚的态度


    你在怀孕期间工作上的不便,实际上都是同事在帮你分担,所以尽可能地关心同事,适当地感谢,让对方感觉到你的诚恳。彼此增加好感度。

     

    爱4、巧妙提升自我


    对于职场女性而言,如何在孕期及孕后保持良好体形也是一大挑战。毕竟良好的外表对于工作和社交都有积极的促进作用。孕妈可以参考以下建议,有意识地进行身材管理。

     

    1)适度运动


    怀孕期间适当的运动能够缓解疲劳、改善妊娠反应、促进身体新陈代谢,为顺利产下宝宝做准备。同时,运动能够给予孕妈能量,使睡眠和精神状态得到改善,从而帮助提高工作效率。只要医生和身体状况允许,每周可以锻炼25小时以上,散步、游泳、瑜伽都比较适合孕妇。建议在专业瑜伽教练的指导下,进行孕妇瑜伽;随着产期临近,教练也会帮你不断调整姿势以顺利产下宝宝。

     

    2)合理膳食 

                               

    职场女性尤其想要在孕期做到“胖娃不胖妈”,所以要在饮食上格外注意。一方面需要饮食均衡,保证优质蛋白质、维生素、矿物质和微量元素的摄入。另外需要关注自己的孕期血糖指数。血糖指数与孕妈妈的体重、身体健康(如妊娠糖尿病)、甚至宝宝的身体健康都息息相关。

     

    在孕期可以通过摄入健康营养的低GI食物,来控制血糖指数和帮助管理体重。很多常见的食物比如白面面包、梳打饼干等都是高GI食物;蔗糖的GI值为65,和小米粥、菠萝、芒果等同属于中GI食物;豆类和全脂牛奶属于健康营养的低GI食物,比较适合孕妈妈,让孕期也能光彩照人,自信满满。

     

    前面说过,不少职场女性为了孩子和家庭,会听从家人(尤其是长辈)的建议,把重心转移到宝宝身上而放弃工作;而孕妈也会由于难以平衡怀孕对工作产生的影响而动摇。

     

    其实,90后作为职场新生代,最重要的是改变“怀孕影响工作”的错误思维,形成全新的职场态度。真正的独立女性,能够把怀孕当作是职场自我提升的机会。


    在孕育的过程中,你所孕育的不止是一个新生命,还有一个更丰盈、更自信、更好的自己——BETTER ME。

  • 面试官问你:为什么要从上一家单位离职?

    2018-05-02 08:31:07



    首先,作为一个从事招聘的HR,并不认为追问面试者为什么从上一家公司离职是个明智的做法起码不应该在面试一开始就抛出这个问题,一个较为明显的原因是因为这会引起面试者的防御心理,甚至是敌对心理。最终导致双方的不欢而散。当然,“赚的少“”干得不爽”也不是明智的回答,除非你或你的面试官是马云,否则这个回答将非常容易毁掉这次面试。

    其次,需要承认的是这个问题对于一些公司(尤其是创业公司)或者一些重要的职位是必须要面对的问题。所以,在你下一次面试之前,我们有必要认真的探讨一下这个问题的答案。

    在回答这个问题前,我们先看几个代表性的求职者离职的真正原因:

    原因一:老板/上司的问题

    (领导不懂自己/无法得到肯定)

    @魏琴:上司很奇葩,天天骂人都算了,还骂到人祖宗,牛皮都快吹破了还觉得自己很谦虚。

    @其珍:因为上司让我觉得不舒服。

    @sunshine:前任上司什么都不懂,关键还TM装懂

    @Miya:老板做人不行,过期的油才舍得给员工,得不到人心也留不住人,我走了之后又换了新人,新人又换新人……估计快撑不下去了。

    原因二:个人发展空间的问题

    (没人指导/现有公司无法满足自己的发展需要)

    @冀丽俊:公司的项目折腾的差不多了,没有再大的进步空间。没有人带,待遇不好,几乎没有设计氛围~忍无可忍无需再忍。

    @爱吃肉的姑娘运气不会太差:发展不了想发展的,自己又没提高,一直原地踏步,浪费青春。

    @莫名其妙:因为过得太安逸了,现在这份工作也是太安逸,下份工作要找虐才行。

    @张先生:刚14号刚离职,辞职原因很简单,1.薪资;2.自身的能力已经超出公司所能提供的岗位,需要谋求更好的发展空间;3.短期内公司也难以提供更好发展空间。

    @Cash:我辞职是因为我的能力提高了。


    原因三:公司风气做派的问题

    (包括上下级/同事间关系不融洽以及整个公司的氛围有问题)

    @RICO:钱少,党派斗争恶劣。

    @墨:最近对我安排有所调动,被安排给了一个奇葩运营,真心受不鸟他的为人,还有对我作图的百般挑剔,这个月初提的离职,当时还有点不舍,第二天公司就招人接替我的工作了,当时那个不爽,不过现在想想现在他们对图的苛刻,哈哈~我的选择还是对的 果断离职!

    @Lin.x林曦:上一份工作是家上市公司,离职原因其实也就是我不愿意委屈求全吧,如果当时我能够坚持人脉档次上至少是提一个阶层的,不过自己也确实不适合这样的公司,一年多的磨砺让我懂得了要按自己想去做的工作去做,而不是单纯的只是因为薪水还可以,适合更重要吧…

    @缘梦里:有午休的习惯,但公司人事就不让你睡(工程师被人事的管,真悲催),有一次尽然被拍照发到公司微信群(好几百人呀),果断辞职,然后找到一家可以睡午觉的公司!

    @冀 ++。:办公室里一群大姐大哥在讨论宝宝最近喝什么奶粉用什么尿片的时候跟老板辞职,老板说你要多少工资留下来,我说,跟钱没关系,等我结婚有小孩吧。

    原因四:钱的问题

    (钱给少或者拖欠工资)

    @萧牧梵:钱少。

    @羽:上上个公司钱少,还发工资不准时(因为刚出来工作,要饿死的节奏)而且需要设计的地方太少,需要跑腿的地方特别多,我就走人了…

    @豆芽:拖工资咯, 做了4个月,三个月才领到1500,最后逼急了找他吵架!把两个月的给我了,还有一个月的现在还没给。14年7月在那里,10月底做完就走了,到现在的公司一直没换,只在两个公司待过。

    @ 熊冉然:上一份工作因为老板两个月没有发工资,然后就离职了!

    @娉婷妖娆:因为老是不按时发工资,领着不到三千的工资,身兼3个职务,还老加班。

    原因五:加班太严重

    @暗夜:加班,做地产广告的天天加到两三点

    @昔日餘光。:就是钱少,正常都是一周休一天,他们一个月才休两天,还老是少发工资。哈哈,肯定不能说这个了

    @卫婵:钱少,活多,离家远


    原因六:离家太远

    @风轻云淡:我家在重庆九龙坡区,之前工作是在重庆渝北区,我每天上班路线是:出门(郊区)坐公交到镇上(20分钟左右,有时候还坐不到车)枢纽站在坐公交到主城(40-60分钟)然后就是幸福的时候了- 挤地铁,大概挤了40分钟左右到站了我就开始跑去上班了!每天就是起得比鸡早,睡得比牛晚,吃的是奶,挤的是草啊!

    @杨啊点:上下班将近4个小时,工作内容较少,接触面不广,没有什么大的长进,就辞职了。

    原因七:被解雇

    (公司倒闭/团队解散/或者被投诉或者自身能力不行)

    @PlayCool@Y:被投诉,然后就被炒。

    @Ida兰兰婆:第一份美工工作,我也是考虑有人要我就去了,然后去了发现公司没电脑,要自己背笔记本上班,对于我来说笔记本好重啊,然后用PS好卡的,加上背得背都是坨的,转正后就跟老板要求买个台式机,结果老板口头上答应买,但是一直没买,忍无可忍不想干活了,刚好又快过年想着过了年就辞职,结果过年一到公司人事就被辞退了,说我态度不好,唉!

    @利佩雯:今天老板和我们说公司要解散了,我们公司是创业公司,到今天为止到公司不到四个月,因为创业公司,我和程序员经常加班赶项目,互联网公司做APP一直在烧钱,公司每天的开支应该也不少,说完后我一个出去偷偷的哭了,我们一个十个人左右的创业团队一直在努力,大家都努力着,不过没关系我坚信以后的路会更好的,大家也会是,离职了会找到更好的

  • VB实现自动生成统计图表

    2018-04-30 20:43:47



    方案主要解决如何通过按钮一次完成实现

    表格自动生成统计图表。

    使用对象

    需要统计出各种直方图、饼图、趋势图需要的人员。

    功能概述

    1.自动选择表格,自动化生成统计图表。

    2.自动设置图表式样、格式

    3.设置按钮,满足‘一键完成统计图表’

    主要功能界面

    VB实现自动生成统计图表

    图1

    VB实现自动生成统计图表

    图2

    方案优势

    优势1:扩展了TD REQUIREMENT功能,提供具体需求-用例覆盖数值(覆盖率)。

    优势2:便于需求管理,实时评估测试用例是否符合标准“100%覆盖产品需求”。

    优势3:增加字段,符合项目需求列表特性。

    方案配置

    1. 原始表格

    以TD数据库定期导出的‘History_bug.xls’为例

    VB实现自动生成统计图表

    表2

    2.在EXCEL调用VB,实现筛选Reopen记录的功能

    效果图:

    VB实现自动生成统计图表

    表3

    附:VB编码

    Sub MacroName()

    '

    ' MacroName Macro

  • fiddler抓取https的最终说明

    2018-04-26 08:39:59

    总是有童鞋抓不到https,其实按照视频的讲解一定可以的,我们学员都是这么做的。不成功的童鞋不外乎没认真看,没认真听(有时候重要的东西我都会口述好几遍),没认真操作,不看提示(比如英文提示说你重启fiddler之后就可以使用了,压根不去看),没耐心(里面有些配置出现的对话框很慢,不等就关了他肯定不行啊,测试没耐心是大忌讳)。。。。。


    好了,下面进入正题,最终说明下关于抓https的要点,还是不会的就吃包辣条冷静下吧,哈哈

    在fiddler里的设置

    打开Fiddler菜单项Tools->Options->HTTPS,勾选CaptureHTTPS CONNECTs,勾选Decrypt HTTPS traffic和Ignore servercertificate errors两项,点击OK(首次点击会弹出是否信任Fiddler证书和安全提示,直接点击yes就行)。


    在手机端的设置

    手机打开浏览器输入电脑的ip:端口号(注意冒号是英文的),点击前往之后会打开Fiddler证书界面,点击FiddlerRootcertificate下载证书,提示安装


    最后,重启Fiddler,再次抓包就可以抓到https的请求了


    以上说明配合视频100%可成功。对于使用iphone的童鞋可能还需要做下面的配置:

    手机设置->通用->关于本机->证书信任设置,开启Fiddler证书的信任,之后重启Fiddler就可以抓取到了!


    最后的最后,你需要访问https开头的网址才能抓到啊,你访问的都是http的,然后你说抓不到!哭晕在厕所了~

  • JMeter内存溢出解决办法

    2018-04-26 08:37:10


    使用jmeter进行压力测试时遇到一段时间后报内存溢出outfmenmory错误,导致jmeter卡死了,先尝试在jmeter.bat中增加了JVM_ARGS="-Xmx2048m -Xms2048m -Xmn256m -XX:PermSize=128m -Xss256k",但结果运行时间增加了,但最终还是报内存溢出,百度后按照网友的建议更改了如下设置后jmeter就没有再卡了:

     

    1、windows环境下,修改jmeter.bat

    set HEAP=-Xms256m -Xmx256m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=128m
    改为:
    set HEAP=-Xms256m -Xmx1024m
    set NEW=-XX:NewSize=128m -XX:MaxNewSize=512m
    根据经验,heap最多设置为物理内存的一半,默认设置为512M.如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出,原因java比较吃内存,占CPU.
    注意:JDK32位的电脑Xmx不能超过1500m,最大1378m.否则在启动Jmeter时会报错:
    2、linux环境下,修改jmeter.sh:
    java $JVM_ARGS -Xms1G -Xmx5G -XX:MaxPermSize=512m -Dapple.laf.useScreenMenuBar=true -jar `dirname $0`/ApacheJMeter.jar "$@"
    3、如果查看JDK的位数
    # java -version
    java version "1.6.0_26"
    Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
    Java HotSpot(TM) Server VM (build 20.1-b02, mixed mode)
    
    如果是64位的话,最后一行会显示64-Bit
    #java -version
    java version "1.6.0_26"
    Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
    Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
  • 由《战狼2》的角色定位来认识软件测试行业

    2018-04-24 08:47:35

    《战狼2》上映12天破30亿,成为这个夏天最火的电影。在《战狼2》里,吴京扮演的前特种兵「冷锋」深入非洲一个内乱严重的小国,和队友之间相互配合,完成一系列了不起的挑战,成功撤离了在当地工作的华侨。

    在电影里,冷锋和伙伴们的表现让人热血澎湃。在现实生活中,你是否也希望能有像冷锋一样的好伙伴助你完成挑战?那就让小编带你认识认识软件测试这一职业。

    冷锋:身怀绝技,以一敌百

    首先当然是头号主角——冷锋。他是一名极其专业顶尖的军人,反应敏捷赶超人类体能极限,战术高超头脑灵活,更有着极为鲜明的“中国特色”,一身中国功夫出神入化。

    应对的测试角色——软件自动化测试。

    它实现了高效率、高强度的测试要求,亦如全能可靠的冷锋一般,可满足用户业务多样需求,同时具有企业级产品特性,安全稳定。

    何建国:**可靠,值得信赖

    何建国是一名退伍的老侦察兵,在非洲的华资工厂担任保安主管。叛乱发生后,指挥全体员工守厂自保。当冷锋来到工厂后,与冷锋并肩战斗,一起**叛军和雇佣兵对工厂的袭击,具有极强的专业素养,业务过硬,且非常有责任心。

    应对的测试角色——软件性能测试。

    何建国**可靠、值得信赖的特点亦如软件性能测试,它拥有强大的可靠性,减少BUG概率,实现软件性能,保障关键业务运营的稳定可靠。

    卓亦凡:新兴一代,时代之选

    剧中卓亦凡是一个在非洲开厂的富二代军迷,喜欢军事却只会纸上谈兵的“熊孩子”。但是为人真诚,当叛乱部队攻击他的工厂时,勇敢地拿起武器和两位老兵并肩作战,在战火中完成了从男孩到男人的成长。

    应对的测试角色——软件功能测试。

    软件功能测试亦如卓亦凡,已得到广泛关注。是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能,应用推出的新一代软件,设计理念与用户要求,代表着该软件的成与否。

    《战狼2》中主人公冷锋除了被迫卷入了一场非洲国家内部的叛乱战争中,其间,当地还发生了一次重大疫情,只有陈博士的女儿Pasha掌握疫情的重要线索。

    软件测试引领着软件质量,正如电影中的Pasha一般,有很多因素,决定软件的命运。软件测试作为互联网崛起的新薪行业,不仅入门简单,而且还高薪,犹豫测试行业人员稀缺,测试人员备受行业和企业热抢,特别适合有理想有抱负想深度学习的同学。

601/3123>
Open Toolbar