MySQL添加购物车防止重复添加

最近做APP购物车下单支付这一块儿.被测试提了一个bug,当点加入购物车点的比较快的时候,同一个商品在购物车中出现了两个.

因为加入购物车的时候,分2步, 第1步是先判断要加入购物车的商品是不是已经在购物车当中了,如果在的话就在原来的数量基础上做加一操作.如果不在再插件.

因为两步不是原子的操作,所以就出现了多线程的安全问题.

MySQL insert有一个比较高级的操作

当唯一键约束起作用的时候,会走update语句,把数量加1 Read more →

python开发环境搭建之virtualenv和virtualenvwrapper(MAC环境)

一 virtualenv介绍

在开发过程中,有时候会有这种需求.我们在开发两个项目,项目A和项目B, 其中项目A依赖模块A的1.0版本, 项目B依赖模块A的2.0版本.但是这两个版本不互相兼容.就会出现问题.又或者项目A要用python要用python2开发,项目B用python3进行开发,这时候就会搞的很头痛

python不像JAVA,有maven这种项目的依赖管理工具.都是通过pip easy_install这种工具来管理模块依赖的.当我们需要依赖某一个模块时,就使用pip install来安装,或者是使用easy_install来进行模块安装.安装完这个模块是全局生效的.个人感觉python在这一块儿实在是太弱了,像JAVA有强大的maven可以管理运行时的依赖.但是python这个是真的没有.我们通过virtualenv来进行管理,可以解决一部分问题.

virtual[……]

Read More…

Read more →

记一次线上MySQL慢查询的优化

哎,这次苦逼的经历,真泥坑爹,看了一下午SQL,眼睛都快看瞎了,现在终于解决了,总结一下吧.

中午的时候运维报了一个慢SQL出来.看了一下执行计划,没发现问题,SQL如下

执行计划如下图


这执行计划能跑44秒?我擦,怎么可能呢! 但是事实就是如此

下面就开始了苦逼的profiling

EXPLAIN看不出问题,那就profile看一下

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发现这个Sending Data很慢(因为这个名字[……]

Read More…

Read more →

使用selenium做自动化测试入门-基于JAVA

之前在使用JAVA做爬虫的时候,有遇到一个问题,就是有些网站,必须要浏览器运行,然后JS执行.内容才能显示出来.遇到这种站,代码直接就趴了,内容抓取不到.网上找了一下发现有一个叫selenium的,可以模拟浏览器行为,做自动化测试.感觉这个应该挺好玩的.难得今天有时间.玩了一把.确实不错

我的项目使用的依赖管理工具是maven,下面给出Selenium的maven地址

然后写一个入门测试的程序

由于selenium的运行是基于浏览器的,所以这里要下载一个webdriver,把下载下来的webDriver放到一个目录里面,然后使用System工具类设置一下系统变量,指向这个webDri[……]

Read More…

Read more →

记一题CTF的decode和encode

最近开始接触了CTF,发现挺有意思的. 在某网站上,看到了这样一个题目.看了半天,根据自己的思路,猜想发现了一些东西,但是搞到最后,怎么都不对.最后借助大神们的思路,找到了解决方法,原来自己一开始,就想错了.解出题目之后,想逆向实现一下.

题目如下:

encode和decode

  Read more →