四时宝库

程序员的知识宝库

php关于游戏合成道具成功失败机率的思路(随机概率)

今天研究了游戏中合成物品的概率问题,刚开始在网上搜了相关的资料,也看了好多别人的概率算法,但都不怎么明白,也不能满足我的要求。于是自己看了一些概率算法,也在qq群里请教了一些高人

自己写了以下的算法:

第一步是传入一个概率参数我这里给了一个80的

$rate = 80;//值越高,概率就越高

使用阿里云oss记录业务日志(阿里云的日志服务是什么技术)

阿里云oss作为一个非常好用的一个存储服务, 一般作为一些静态资源的存储,如web开发中的css、js图片等或者是客户上传的附件、图片等。今天我们来实现一个非主流的用法:用他来记录日志.

这得益于阿里云oss的"追加上传文件"接口,这样我们不需要每次获取oss上的文件内容后再手动日志内容然后后上传文件。

jQuery EasyUI 数据网格 - 设置排序

本实例演示如何通过点击列表头来排序数据网格(DataGrid)。

PHP闪电入门(8)数据类型转换(php数据类型转换分为哪两种)

需要您的鼓励!

【欢迎关注、分享、点赞或评论,您的一个举手之劳,就是最大的鼓励!】

前言:

上一节我们聊了php的数据类型,主要是整型、浮点型、布尔型,字符串型和NULL这五种类型,其他类型暂时不聊天。

php+redis实现分布式锁(php redis 分布式锁)

 /**
 * 添加锁
 * @param unknown $key_name 键的名称
 * @param unknown $uniqid 唯一值
 * @param unknown $key_expire 键的过期时间
 * @return int 0失败,1成功
 */
 static function lock($key_name, $uniqid, $key_expire)
 {
 $lua_script = <<<EOF
 local flag = redis.call("setnx", KEYS[1], ARGV[1])
 if tonumber(flag) > 0 then
 redis.call('expire', KEYS[1], ARGV[2])
 return redis.call('get', KEYS[1])
 else
 return 0
 end
EOF;
 $redis = MyRedisService::getInstance();
 return $redis->eval($lua_script, 1, $key_name, $uniqid, $key_expire); 
 }
 
 /**
 * 释放锁
 * @param unknown $key_name 键名称
 * @param unknown $key_val 键值校验
 * @return int 0失败,1成功
 */
 static function unlock($key_name, $key_val)
 {
 $lua_script = <<<EOF
 local lockKey = redis.call('get', KEYS[1])
 local lk = ARGV[1]
 if lockKey == lk then
 return redis.call('del', KEYS[1]) 
 else
 return 0
 end
EOF;
 $redis = MyRedisService::getInstance();
 return $redis->eval($lua_script, 1, $key_name, $key_val);
 }
 
 
 public function index()
 {
 //键名
 $key_name = 'index';
 
 //key过期时间
 $key_expire = 1;
 
 //键的唯一标识
 $uniqid = uniqid(null, true).microtime();
 
 //加锁
 $key_val = self::lock($key_name, $uniqid, $key_expire);
 
 //加锁成功,开始执行以下代码
 if($key_val > 0)
 {
 try
 {
 $redis = MyRedisService::getInstance();
 //从数据库或者redis中得到库存
 $store_nums = $redis->get("store_nums");
 if($store_nums > 0)
 {
 $redis->decrby("store_nums", 1);
 echo "去库存成功,剩余:".$redis->get('store_nums')."<br>";
 }
 else
 {
 echo "库存不足<br>";
 }
 }
 catch (\Exception $e)
 {
 //如果代码抛出异常,则直接删除key
 $redis->del($key_name);
 }
 }
 
 //释放锁
 $res = self::unlock($key_name, $key_val);
 
 //如果释放锁失败,则直接手动删除key
 if(intval($res) === 0)
 {
 $redis->del($key_name);
 }
 }

在php页面添加访问量显示功能(在php页面添加访问量显示功能是什么)

用tcexam给用户做了一个在线考试平台,结果客户要求统计网站访问量,使用下面的方法简单实现了这个功能。

1.创建counter.dat文件,内容写为0。

2.创建tongji.php文件,内容如下:

<?php

error_reporting(E_ALL);

jQuery EasyUI 树形菜单 - 树形网格动态加载

动态加载树形网格有助于从服务器上加载部分的行数据,避免加载大型数据的长时间等待。本教程将向您展示如何创建带有动态加载特性的树形网格(TreeGrid)。

GeoHash原理及redis geo相关操作(geode与redis)

本文作者:Maxiye

本文链接:https://segmentfault.com/a/1190000038529554

PHP价格转大写(php中将大写字母转换为小写字母的函数是)

function currencyToChinese($data)


{

$data = str_replace(',', '', $data);

if #($data == '') {

return '';

php获取上传图片的宽和高(php获取图片信息)

PHP如何生成二维码图片

在我们开发过程中,往往我们会遇到将某个商品或者将某个活动生成一个二维码,当用户扫描二维码时候,用户可以直接跳转到商品详细页面或者活动详情页面。那我们如何生成一个二维码图片呢,来,看这里哦!!!

1.封装

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接