- 博客(42)
- 资源 (5)
- 收藏
- 关注
原创 生成单元测试的idea插件
生成单元测试的idea插件,暂时只支持junit4和junit5,帮助生成mock when等,从头开始写行覆盖90%,分支覆盖80%的类,估计提升5%写UT的效率。
2023-01-16 23:33:01
895
原创 测试pg和mysql的触发器及存json
测试pgpg触发器的old 和 new 用row_to_json很容易存mysql 目前只知道用 json_object , 用起来麻烦点,而且mysql的json限长65535触发器比较费性能,但取 old 值比较方便。及触发器及存储过程不易于管理及运维是要注意的地方...
2022-02-20 23:22:41
1061
原创 自动生成mock简单的测试
package com.areyoo.lok.controller;import com.areyoo.lok.vo.TestTwoVo;import java.lang.reflect.*;import java.util.HashSet;import java.util.ArrayList;import com.alibaba.fastjson.JSON;import com.areyoo.lok.service.api.WwService;import com.areyoo.lok.
2021-11-08 01:18:59
1333
原创 钱包表的设计
钱包类型可以有余额、提现、待支付和优惠及提成收入等。比如我们支付到商家买商品,是把我们的余额类型转到待支付,使用优惠券是增加优惠类型的金额;交易成功商户余额和用户提成账户收到待支付和优惠的转移。用户提成和优惠可以方便统计用户价值和获客及维护成本。这样设计的好处:1可以避免一些锁,比如用户充值和一个交易自动成功的同时执行,待支付和余额放同一行,就会有竞争,分开少考虑这部分锁的情况,方便一点,并发高一点。2方便扩展,数据库加字段不方便,mysql会锁表。要加个白条功能或者理财功能,加类型就好了。用
2020-11-12 01:41:59
2578
原创 乐观锁version和时间戳外的实现方式
乐观锁并不会使用数据库提供的锁机制第一种:version版本号使用版本号时,可以在数据初始化时指定一个版本号,每次对数据的更新操作都对版本号执行+1操作version类型为int就够了,保守点用long,建议用long不出错version = version +1 是原子化操作第二种:时间戳来实现你不能从web服务器取得时间,要以数据库服务器时间为准version类型为DATETIMEversion = now()now()精度百万分之一秒,但仍然可能重复,只是概率极小。第三种.
2020-11-01 23:15:45
1060
原创 缓存更新的套路之基于数据的version
https://coolshell.cn/articles/17416.html这文章很有深度,我进行了一些思考。写更新缓存数据代码时,先删除缓存,然后再更新数据库的方法,如果改变下删除缓存的方式,是可以简单地解决问题地先删除缓存,可以不是真的删除:可以改为软删除,记录缓存的version和过期时间(比数据库过期时间长一秒就可以)——当查询操作操作发现软件删除时,会直接从数据库取数据,数据库数据的vesion小于等于缓存version时就不更新缓存,大于缓存version时就更新。如果数据库操作失
2020-10-29 00:34:18
295
原创 jwt验证的思考
jwt验证对后端的压力比用session小很多, 毕竟只用对称加密或者hash计算,密钥小可以都存在各台web服务器, 不需要请求redis或者mysql之类的数据库产生io。[登录踢出]有时一些应用需要只让一个账号只能在一个浏览器或手机客户端在线,一个手机登录,另一个手机的相同账号需要登录踢出,jwt就比session麻烦一点,不想存数据库需要通知客户端自己删除。如果客户端出问题没有删除,继续请求,那么应该怎么解决。简单的解决办法是session和jwt一起用(jwt的refresh toke.
2020-10-20 23:59:21
17458
原创 php常驻程序内存泄露的简单解决
php原本设计是用了一次就丢了的,这样用基本没有内存泄露的问题,就是每次要重新构建速度会慢。php常驻的情况内存泄露发生的概率就很高了php主流常驻框架是解决方案也是用了就丢,但不是立刻就丢:1·roadrunner.rr.json的配置文件{ "http": { "address": "127.0.2.1:80", "workers": { "command": "php psr-worker.php", "pool": { "...
2020-10-20 23:55:07
1088
2
原创 if分支过多怎么办
?php $a = 0;$b = 1;$c = 2;$d = 3;if ($a < 1) { if ($b < 2) { if ($c < 3) { if ($d < 4) { $r = 'end'; } else { ...
2019-09-19 00:33:59
565
转载 jQuery的.bind()、.live()和.delegate()之间区别
转自http://developer.51cto.com/art/201103/249694.htm
2014-04-16 18:49:45
575
原创 最近学go语言的小结
因为单位业务需要(据说是http://www.oschina.net/p/docker 这个方向),最近开始学go语言。google做这门语言的目的在于代替部分C/C++在服务器端开发,这门语言是以C为主干,模仿java,javascript及C++的基础上,做了些微创新。个人感觉就是强类型语言版的javascript++。 1、文件结构,和C/C++一样的主文件。主函数如main可以写
2014-01-18 23:51:18
4210
转载 中国大陆开源镜像站汇总
先写csdn的镜像站https://code.csdn.net/OS_Mirror/——>话说有github的风格,又有点像开源中国http://www.oschina.net/的风格 搜狐开源镜像站: 这个有python,速度比官网快, md5值和官网的一样,不过下载后还是要验下。 东软信息学院:这个有android,不过我的android环境
2013-08-30 07:34:32
22991
原创 CodeIgniter的扩展方法
CodeIgniter这个框架的规则比较少,另外核心类都心CI_开头,很方便扩展。CodeIgniter的扩展有很多种方法,有替换核心类的,有继承扩展核心类,及使用钩子的,和__autoload加载的。 先说怎么扩展smarty的例子。 本人作为一个程序员,觉得php原生的模版是比smarty更强大的,只要在格式上用,另外view用的函数必须是php原生的或公共
2013-08-28 22:51:09
5992
原创 php入门第七天
Form的提交及页面间的传值。 Cookie是存放在客户的硬盘上的文件,每种浏览器都有它各自的位置。记得有一回我用不同的浏览器上两个百度号,结果两个浏览器上的用户都成了我后上的那个号,这个用浏览器的Cookie是做不到的,显然用的是flash cookie。也许是为了方便用多个号发贴的人,后来就没遇到这样的事了。Flash是个比较不安全的东西,但有时又不得不用,比如要在新浪上传相片,
2013-07-21 20:59:52
1056
原创 1+Null 居然等于 Null
好吧,我OUT了。因为以前基本上是用php对数据结果的同一行进行计算,居然没注意sql语言中 select1+Null 的结果会是Null, 好在测试细心发现了问题。本人看我的有关sql的书中都好像没有讲这一点,如果谁知道哪本书写了这点,希望能把书名告诉我下。关于SQL 在数值计算时对 NULL 的处理及解决办法,详见:http://iteches.com/archives/5848
2013-07-20 08:39:18
7572
1
原创 公共js在页面底部加载的注意事项
JavaScript脚本文件都放在页面底部加载,可以有效地加快页面的加载速度。 但是,php控制器一般这样写: $this->load->view($HEADER);$this->load->view($MENU);$this->load->view($VIEW_SHOW, $data);$this->load->view($FOOTER);
2013-07-17 21:35:42
1157
原创 用逗号分隔参数不太科学——S表达式才是王道
最近在写php程序和sql语句时用到了这种写法:select a ,b ,cfrom tablewhere a='1' AND b='2' OR c='3'phpfn(1 ,2 ,3); 觉得这样写以后方便改东西。 但想想还是没php的数组来得方便。php数组可以写成这样:
2013-06-22 15:35:08
1135
原创 php之大话代理模式
函数<?phpfunction im_GiveGift(){ return array( 'GiveFlowers' => function() {die('接口未定义');}, 'GiveChocolate' => function() { die('接口未定义');}, );}function SchoolGirl(Array $data){ ex
2013-05-26 18:39:54
1704
原创 写给新手,用最基础的方法重构代码
这是写给新手的。嗯,我实际上也是个新手。老手们应该可以不看,看了如果觉得有地方不对,请多多批评。谢谢!基于数组对if语句的重构。用if时。$table = 'test_order';if ($table === 'test_order' OR $table === 'test_client' OR $table === 'test_are
2013-05-26 18:02:11
819
原创 php之大话装饰模式
这里的构造函数居然这样写。<?phpfunction Person($data = array()){ {/* __construct */ static $i = 0; ++$i; extract(array_merge(array('name' => '未命名') /* 默认值 */, $data)); } return array( 'Show' =
2013-05-12 15:02:34
982
原创 php之大话策略模式
这里用到php的use了。<?php//工厂模式和策略模式function f_cash_context($type){ switch ($type) { case '正常收费': return function($money) { return $money; }; break; case '满300返100': $money
2013-05-12 14:55:47
857
原创 php之大话设计模式-开个头
最早认识设计模式是看博客园伍迷的大话设计模式这本书(他的另一本好本是大话数据结构,最喜欢的地方是下载的源码都能正常运行)。 设计模式是基于 接口、封装、继承、多态这些面向对象的要素实现的。设计模式的首要目的是方便合作,也就是大家改不同的文件,但合到一起就能好好工作。比如MVC模式,前台改视图,后台改MC(我记得有一回我和一个人一个改模型文件,一个改控制文件,也没冲突),之间约定好
2013-05-12 14:33:38
1849
原创 php中strtr和str_replace的坑
str_replace这个函数比较无脑$a = 'abcxy';echo str_replace(array('abc', 'xy'), array('xy', 'abc'), $a),'';?> 你想输出 xyabc, 但是实际是:abcabc,因为它是循环替换。 str_replace格式如下 str_replace ( m
2013-05-08 21:46:51
8220
原创 php入门第六天
灵活的字符串。 因为$表达的灵活性,我们可以用“映射”的方法,调出字符串或者函数。$a = 'b';$b = '123';echo $$a; // 这可以输出123。不过比较好的习惯是echo ${$a},这样更清楚明了。 $c = 'd';echo $c();function d() {return '321';} // $c()调用的是d函数
2013-04-28 21:46:01
2124
原创 php入门第五天
循环:for循环$arr = array(1, 2, 3);for ($i=0, $i_=count($arr); $i';}//或者倒着循环for ($i=count($arr)-1; 0';}//或者把for 当while用$i=count($arr)-1;for (; 0';--$i;}?>foreach 和 while循环:for
2013-03-10 07:39:27
794
原创 替换php中双引号的小程序
因为本人有一点点代码洁癖,看不习惯老代码中的$POST["abc"]或$_GET[abc]什么的,还有没必要用双引号的地方不用单引号的。所以专门写了个php小程序。 这个程序只能转纯php文件,不能用于模版文件。另外如果你定义的常量不是大写的,及字符串用了 这个程序是给自己用的,很多地方不规范,比如应该用有意义名称的地方用的是0啊1啊,这个不要学。代码写得不怎么样,只是
2012-12-24 12:46:24
1440
原创 php入门第四天
运算符的相关内容可以查php手册。下面的内容我会写一些细节问题。算术运算符 递增/递减运算符<?php$i = 0;$x = ($i++); //相当于 $x = $i; $i += 1; $j = 0;$y = (++$j); //相当于 $j += 1; $y = $i; $k = 0;$z = ($k+=1); printf('$i is : %s
2012-12-24 07:34:33
699
原创 php入门第三天
三元运算和if语句。 我先道歉,我最近才发现我用的wamp不是我说的那一版,我安装wamp的时候没删老版的,而且安装在了原目录。现在发现新版的默认配置是如果变量未赋初值,就会报错。虽然变量未赋初值改配置文件就可以,这样写起来也方便,但据我的经验,这样做,好处比坏处少。 现在在下面的二段代码中加入了这两句,就不会报错了。isset($_POST['user_id']) ?
2012-11-18 17:39:09
970
原创 php入门第二天
如果你学过类C语言——c\c++或java, 这些东西的语法和数据结构和php是类似的。当然如果你学了perl,学php就更容易。 下面看php的变量赋初值。 变量开头必须是$, 可以把他看成别的语言的 def 或 var之类,但使用变量的时候,还是要有$号。 另外大家知道在单引号在多数语言表示char类型, 但在php中没有char类型,上面$hello这个
2012-11-11 09:11:39
731
原创 php入门第一天
学习php首先要配置一个php环境 第一步下载wamp(如果你会linux,说明你不用教,应该会配。)。 官网应该在http://www.wampserver.com/ ,自己搜也行。 最好下载wampserver2.2e-php5.4.3-httpd2.2.22-mysql5.5.24-32b.exe (32b指的是x86的处理器,这个要根据自己电脑的处理器类型下
2012-11-11 09:10:03
828
原创 smarty与js冲突的非主流解决办法
Smarty的使用中,有一些麻烦的事。比如在模版可以用{$data}这样的写法,但因为很多模版一般都有它独自的javascript,所以写成了 或 [{$data} 的样子。使用标签{literal}[javascript code]{/literal}虽然是一个解决办法,当然,你也可以为所需的javascript单独写个文件引用(麻烦)。但如果javascript中需要php变量时,这就不合适
2012-09-12 07:23:31
2249
原创 php不支持函数式编程的解决办法
最近看了一下上级写的valid类,都是正则表达式。我想不用正则,应该会提高些运行速度,比如验证是否是0~9的数字组合。function check_num($data){ $len = strlen($data) for($i=0;$i { $ord = $data[$i]; if( $ord >= '0' && $ord
2012-08-04 18:47:53
1896
原创 自动生成简单的sql语句
$sql .= "id='" . $arr['id'] . "'";$sql .= "id='{$arr['id']}'";$sql .= "id='$arr[id]'";最近试了一下生成sql语句不同写法的速度,在上面三种中, 第三种最慢,但没慢多少(顶多20%)。第一种比较麻烦,但方便写成 $sql .= "id='" . func( $arr['id'] )
2012-08-04 18:24:08
940
原创 活用工厂模式调用smarty
最近项目用了ajax 弹出 网页层,先是把弹出 网页层的模版放在了主要页面的模版文件夹下,不过混在一起不太好。就想把模版放到新的文件夹。 看了下引用smarty的inc文件,$tmpl = new Smarty;$tmpl->left_delimiter=';$tmpl->config_dir=。。。。。 不想再写一个smarty的inc文件,因为有
2012-07-16 19:52:58
822
原创 php——有时候你都不知道怎么错的
因为php不用定义变量,所以你写错了变量名,也不会告诉你。很多时候是微差别,一句句的看代码是看不出来的,还好很多软件有显示变量的东西,比如pspad的程序浏览器,notepad++的function list。看一下变量的列表,一般程序不长的话,一两眼就可以看出哪个变量实际上是打错的。 犯这种错误不是第一回了,专们写一下。虽然都是脚本语言,还是python好。赋
2012-06-24 22:51:57
779
原创 总结一下最近实践上用到的sql语句
// 最近写的一些sql语句,感谢上级指导。(写这个文章时还不知道查postgreSql的手册,浪费了上级的时间,如果当时上级直接发我手册就好了)// (写这个文章时实践还太少。个人觉得学习sql语言的最好方法是实践加查手册,上网搜。下面字段k_rea从 1~10,所以用了循环。pgsql可以存数组,上级说这样设计是为了方便新人,"||"是pgsql用的连接符号。mysql虽然存不了数据,不过
2012-06-24 22:49:56
650
转载 Windows7下NetBeans7开发GTK的配置过程(我用xp试的)
这个原文有一些path相关的没有写,还有些小细节,我补充一下。原文的图片这里不能发。原文地址http://blog.knowsky.com/267853.htm 我:GTK的C环境实际上在dev和CodeBlocks上也可以用,也好像更易实现。但有时要用别的语言,用一个的话有方便记快捷键等。准备环境1)Java(JDK
2012-06-23 18:53:47
1034
原创 程序员重要的素质之一——谦虚
谦虚的人不会想当然。比如对客户,你以为客户的需求是这样的,结果把东西一做好,给客户一演示,就黄了。只有谦虚的人,才能和人有真正的沟通和交流。谦虚在找程序的BUG上也有用处,比如同一种程序错误,却可能由不同的原因引起。在这不同的原因中,当然有的可能性很大,有的可能性很小。但如果有人遇到和过去一样的错误时,以自己的经验,认为过去每次都这样解决了,再这样做,却不能解决,却还在坚持。谦虚的人不会完
2012-04-16 18:12:55
2029
原创 应该选择什么语言开发程序?
据说C++比java快三到四倍,又说java的开发速度是C++的二倍。二者之间的选择,在于花三四倍的钱买机器和机房,还是付二倍的工资及人员附属成本(办公桌办公楼折旧或租金等等),还有机会成本。 从今天的来看,机器的运算是越来越便宜,人的成本至少不会变得像机器这么快。所以很多公司经过核算以后,使用了开发周期短,但运行效率不是很高的语言。但效率仍然可以兼顾,一著名博客说用Python作快
2012-04-15 22:21:46
1296
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人