sprintf

sprintf使用备注

*爱你&永不变心* 提交于 2019-12-19 08:47:28
sprintf使用记录 sprintf函数语法 编辑 函数声明 int sprintf(char *string, char *format [,argument,…]); 参数列表 string-- 这是指向一个字符数组的指针,该数组存储了 C 字符串。 format-- 这是字符串,包含了要被写入到字符串 str 的文本。它可以包含嵌入的 format 标签,format 标签可被随后的附加参数中指定的值替换,并按需求进行格式化。format 标签属性是% [argument]…:根据不同的 format 字符串,函数可能需要一系列的附加参数,每个参数包含了一个要被插入的值,替换了 format 参数中指定的每个 % 标签。参数的个数应与 % 标签的个数相同。 功能 把格式化的数据写入某个字符串缓冲区。 返回值 如果成功,则返回写入的字符总数,不包括字符串追加在字符串末尾的空字符。如果失败,则返回一个负数。 举例说明: int number = 50; char str[50] = {}; sprintf(str,%d,number); printf("s%",str); number 是需要转换成字符串的变量,%d是指当前number的输出格式,str是接收字符数据的字符指针。 使用需要注意的一点就是接收字符数据数组在初始化时要给定一个大小,不然会引起程序使用中异常。 PS

go的模型生成器

烈酒焚心 提交于 2019-12-18 18:58:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 好冷,早知道不写GO了 嗯,就是开个玩笑,冬天有点冷,特别是寒潮来了,各位注意保暖。 为什么写这个生成器 最近要写GO项目,然后发现orm着实难用,一个model要去手动写,更坑的是,`号里面的内容,没有自动打印。天好冷吗,手好抖,南方的冬天,你懂的。 像JAVA、PHP等语言,都有成熟的模型生成器,然而Go我并没有找到,可能是我没有和百度(当然还有墙外的哥)达成深度合作吧?为此,懒人李只能造个轮子,为了提高效率(ps:就是想偷懒、摸鱼)。 过程分析 那我们要将数据库如何转换成go的代码呢?开始我想的是,直接拿create sql进行解析 比如表cate CREATE TABLE `cate` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`) )

大数的幂运算

时间秒杀一切 提交于 2019-12-14 14:28:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 使用 n的m次方 #include<stdio.h> #include<string.h> int main() { float a; long long i,j,m,b,p,sl,str[15],res[200],rl,t,d,tem,bak[200],bl; char num[100],rs[1000]; while(~scanf("%s%lld",num,&b)) { sl=i=0; m=strlen(num)-1; p=-1; memset(res,0,800); memset(rs,0,1000); for(i=0; i<m; i++) { if(num[i]!=48) break; } while(m>i) { if(num[m]!=48) break; m--; } for(; m>=i; m--) { if(num[m]=='.') { p=sl; } else { str[sl++]=num[m]-48; } } while(sl>1&&str[sl-1]==0)sl--; rl = sl; d=0; for(i=sl-1; i>=0; i--) d=d*10+str[i]; sl=res[0]=1; for(j=0; j<b; j++) { if((tem=d/1000000)>0) {

PHP服务端集成微信APP支付以及回调

ぃ、小莉子 提交于 2019-12-11 16:18:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 上一篇说到支付宝APP支付,说到微信APP支付相对复杂一点,复杂在于微信支付参数的两次加密返回支付参数; 至于其他和支付宝处理流程都相同 流程:客户端提供数据 -> 服务端处理生成支付参数返回给客户端调起支付 -> 支付成功 -> 微信回调结果 -> 接受回调修改订单状态 微信官方文档也说的比较清楚,微信APP开发者文档 首先,新建一个微信支付类,命名为appWxPay_class.php ,定义一些支付常量 const appid =""; const mch_id =""; const key =""; const trade_type = "APP"; const notify_url = ""; post方法用于请求 //建立请求 public function http_post($url='',$post_data=array(),$header=array(),$timeout=30) { $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 curl

PHP生成一个唯一订单号,年月日这种高大尚的例子

心已入冬 提交于 2019-12-09 20:34:45
/生成一个订单号 function getOrderNum(){ $order number = date('Ymd').substr(implode(NULL, array map('ord', str split(substr(uniqid(), 7, 13), 1))), 0, 8); return $order number; } 简单从内到外解析一下这个订单号生成过程: date("Ymd"):这个很容易理解,是在最前方拼接一个当前年月日组成的数字 uniqid():此函数获取一个带前缀、基于当前时间微秒数的唯一ID。 substr(uniqid(), 7, 13):由于uniqid()函数生成的结果前面7位很久才会发生变化,所以有或者没有对于我们没有多少影响,所以我们截取后面经常发生变化的几位。 str split(substr(uniqid(), 7, 13), 1):我们将刚刚生成的字符串进行分割放到数组里面,str split()第二个参数是每个数组元素的长度。 array map('ord', str split(substr(uniqid(), 7, 13), 1))):其中array map()函数作用为:函数返回用户自定义函数作用后的数组,意思就是ord是函数ord(),而后面第二个参数是ord()函数的参数。可以这么理解ord(str split

Sqlite时间段查询中遇到的问题

天大地大妈咪最大 提交于 2019-12-07 02:54:30
问题: 我要查询DateTime时间其中的一段符合时间要求的数据,比如我要查询‘2019-06-06 16:50:00’至‘2019-06-06 16:59:00’这一段的数据 开始用这段代码 strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime('2019-06-06 16:50:00') and datetime(DateTime)<=datetime('2019-06-06 16:59:00')"); 是可以查询出来的,然后换下面代码: strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime('datetime_strf1') and datetime(DateTime)<=datetime('datetime_strf2')"); 其中datetime_strf1、datetime_strf2是从控件读取的选择时间,然而并没有正确读取,下面也一样: strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime(datetime_strf1) and datetime(DateTime)<

字符串与其他基本类型的转换——从C到C++11

橙三吉。 提交于 2019-12-06 22:35:19
转自 IBM 编译器中国开发团队的《C++11中的string - atoi/itoa》 在C++11中,由于右值引用的引入,常为人所诟病std::string的性能问题得到了很大的改善。另外一方面,我们也可以看到新语言为std::string类增加了很多新的api。比较引人注意的就是std::string的成员函数stoi系列,以及std::to_string全局函数。这两种API虽然很不起眼,却为C++11的格式化输出(formatted I/O)增加了一种实用的手段。我们可以依序会议一下C,C++98,C++11中我们是如何处理atoi/itoa的问题的: 在C时代,通常我们遇到atoi(字符串到数值转换)的问题的时候我们会使用<stdlib.h>中的atoi函数: int num = atoi(cstr); 这里的cstr通常为char 或者const char 类型的字符串。函数返回的结果则是该字符串所表示的一个十进制的integer。函数的整个效果则等同于<stdlib.h>中的另外一个函数strtol: int num = strtol(cstr, NULL, 10); 相比于atoi,strtol多了最后一个参数"radix"表明函数采用的是几进制(这个进制数可以从2到34,这个数值范围的原因显而易见)。除去strtol会在出错时设置全局的errno外

Bystack跨链技术源码解读

对着背影说爱祢 提交于 2019-12-06 20:52:54
Bystack是由比原链团队提出的一主多侧链架构的BaaS平台。其将区块链应用分为三层架构:底层账本层,侧链扩展层,业务适配层。底层账本层为Layer1,即为目前比较成熟的采用POW共识的Bytom公链。侧链扩展层为Layer2,为多侧链层,vapor侧链即处于Layer2。 (图片来自Bystack白皮书) Vapor侧链采用DPOS和BBFT共识,TPS可以达到数万。此处就分析一下连接Bytom主链和Vapor侧链的跨链模型。 主侧链协同工作模型 1、技术细节 POW当前因为能源浪费而饱受诟病,而且POW本身在提高TPS的过程中遇到诸多问题,理论上可以把块变大,可以往块里面塞更多的交易。TPS是每秒出块数*块里面的交易数。但是也存在问题:小节点吃不消存储这么大的容量的内容,会慢慢变成中心化的模式,因为只有大财团和大机构才有财力去组建机房设备,成为能出块的节点。同时传输也存在问题,网络带宽是有限的,块的大小与网络传输的边际是有关的,不可能无限的去增加块的大小,网络边际上的人拿不到新块的信息,也会降低去中心化的程度,这就是为什么POW不能在提高可靠性的情况下,提高TPS的原因。 而BFT虽然去中心化较弱,但其效率和吞吐量高,也不需要大量的共识计算,非常环保节能,很符合Bystack侧链高TPS的性能需求 (1)跨链模型架构 在Bystack的主侧链协同工作模型中,包括有主链

sprintf简介

≯℡__Kan透↙ 提交于 2019-12-06 04:27:10
s p r i n t f 基本用法 输入一段有特点的字符串 #include <cstdio> #include <cstring> using namespace std; int main(){ char a[100]; int pos=0; for(int i=1;i<=10;i++){ pos+=sprintf(a+pos," %d-",i); } a[pos-1]='\n'; printf(a); return 0; } 把整数123打印成一个字符串保存在s中。 sprintf(s,"%d", 123); //产生"123" 可以指定宽度,不足的左边补空格: sprintf(s,"%8d%8d", 123, 4567); //产生:" 123 4567" 当然也可以左对齐: sprintf(s,"%-8d%8d", 123, 4567); //产生:"123 4567" 也可以按照16进制打印: sprintf(s,"%8x", 4567); //小写16进制,宽度占8个位置,右对齐 sprintf(s,"%-8X", 4568); //大写16进制,宽度占8个位置,左对齐 这样,一个整数的16进制字符串就很容易得到,但我们在打印16进制内容时,通常想要一种左边补0的等宽格式,那该怎么做呢?很简单,在表示宽度的数字前面加个0就可以了。 sprintf(s,"%08X",

原生php pdo几个处理

旧城冷巷雨未停 提交于 2019-12-05 17:19:06
闲来无事,便记录几个最近遇到的Pdo细节问题,平常都是用orm的。 长连接 在历史的Mysql驱动中,都是使用connect和pconnect来区分长短连接,到了pdo之后,改成了参数。 \PDO::ATTR_PERSISTENT $dbh = new \PDO(MYSQL_DSN, MYSQL_USER, MYSQL_PASS, array( \PDO::ATTR_PERSISTENT => true, \PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', )); 如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。 MySQL server has gone away 某个mysql长连接很久没有新的请求发起,达到了server端的timeout,被server强行关闭。此后再通过这个connection发起查询的时候,就会报错server has gone away,这种情况特别容易出现在脚本里。(max_allowed_packet 是包太大造成的连接中断,这里不予以讨论) 解决方案: 修改my.cnf的 wait_timeout、interactive