C语言sprintf例子

sprintf使用例子:

1、BCD转换成字符

char src = 0x3A;
char tmp[6];
memset(tmp, 0x00, sizeof(tmp));
sprintf(tmp, "%02X", src);

说明:
1)打印出tmp为3A
2)%02X含义:
02:0表示长度不足用0填充,2表示格式化后总长度是2
X:表示以大写16进制形式输出

2、字符串数值相加

char * p = "000000000100";
char * p2 = "000000000099";
char * p3 = "000000876666";
double d = 0.0;
d = atof(p); //atof字符串转double
d += atof(p2);
d += atof(p3);
char temp[16];
memset(temp, 0x00, sizeof(temp));
sprintf(temp, "%016.0lf", d);

说明:
1)打印出temp为0000000000876865
2)%016.0lf含义:
016:0表示长度不足用0来填充,16表示格式化后的总长度是16
.0lf:.0表示小数点后长度是0,整数部分=总长度-小数点后长度。lf是long float型,与double同义
继续阅读C语言sprintf例子

上海徒步游记(不断更新中。。。)

1、复兴中路
时间:2016年4月24日
起点:13号线新天地站5号口
终点:7号线常熟路站
见闻:
5号口出来后就是复兴SOHO广场,往前走是一个基督教堂叫诸圣堂,但是平时不对外开放。
过了重庆南路,左边是思南公馆,右边是复兴公园,不得不说复兴SOHO广场和思南公馆都是高大上的地方,好多老外。
在这段路上,边上就是一排一排的花园别墅或花园洋房,像重庆公寓、花园公寓都是以前租借时候造的房子吧?
再往前走,什么是豪宅,像香山丽舍这样的房子,外面看看很低调,实际里面应该很豪华?
继续往前就会看到街边有很多外贸小店、小吃店、酒吧、特色饭店等等,就有一种市中心的感觉了。
复兴中路边上的学校也有很多,比如黄浦区卢湾二中心小学、徐汇区第一中心小学、位育中学,都是很有历史的重点学校。
在上海交响乐团对面有两座洋房,黑石公寓和克莱门公寓,看上去就好气派。我觉得当时大概只有像《上海滩》里面的冯敬尧这样的人物才能独门独户的住。可惜现在都变成72家房客了吧。。。
走到上海音乐学院这边,街两边的小店都变成卖乐器、考级培训、音乐书店等等,音乐学院的辐射面挺大的呀。
地图:

继续阅读上海徒步游记(不断更新中。。。)

生活小常识(1)

如手机、银行卡和身份证丢失
1、致电手机运营商挂失手机号。
2、致电银行挂失银行卡。
3、手机绑定支付宝的,拨打95188挂失。
4、微信用户登录110.qq.com冻结账户。
5、向常住户口所在地公安机关申报丢失补领身份证。
6、到手机运营商处补手机卡。

oracle 分区表

分区表的概念,简单来说就是:原来一个用户下表的数据是放在一个表空间里,使用了分区表后,表的数据是放在多个表空间中。

PS:表空间是包括一个用户下所有文件的逻辑概念。

如果一个数据库中,某几个表(特别是历史表)占了数据库50%以上的空间,或达到几百G的磁盘容量。这时就要考虑使用分区表了。

Oracle表分区分为四种:范围分区(Range分区),散列分区(Hash分区),列表分区(List分区)和复合分区(范围-散列分区range-hash,范围-列表分区range-list)

分区的好处,主要用到以下两点:
改善查询性能
维护备份数据方便

一、范围分区
范围分区就是根据表中某一字段的值的范围来分区,特别适用于时间日期、ID号来分区

1、建立测试用户

create user wangyi identified by wangyi;
grant dba to wangyi;
conn wangyi/wangyi;

2、建立测试表和数据
//策略是按月创建分区,保留一年数据,年末备份前年数据。

例子:

create table range_table (
inst_date date,
produce_id number,
amt varchar(12)
)
partition by range(inst_date)
(
partition p1 values less than(to_date('01/02/2016','DD/MM/YYYY')),
partition p2 values less than(to_date('01/03/2016','DD/MM/YYYY')),
partition p3 values less than(to_date('01/04/2016','DD/MM/YYYY')),
partition p4 values less than(to_date('01/05/2016','DD/MM/YYYY')),
partition p5 values less than(to_date('01/06/2016','DD/MM/YYYY'))
);

继续阅读oracle 分区表

oracle interval函数

一、interval函数
interval函数用于将一个整形值转换成时间值date类型的年月或时分秒。

oracle语法:

interval 'integer [- integer]' {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} [(precision)][TO {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND}]

注:
1、年、月、日、时、分、秒可以单独使用。
2、{YEAR | MONTH} to {YEAR | MONTH}和
{DAY | HOUR | MINUTE | SECOND} to {DAY | HOUR | MINUTE | SECOND}是分别使用。
3、该函数常用来计算一段时间差。
4、precision为精度域,有效范围是0到9,默认值为2。这里精度是指显示结果的精度,如果结果超过两位长度要指定精度。

例子:
1、表示2个年

select interval '2' year from dual;

INTERVAL'2'YEAR
---------------------------------------------------------------------------
+02-00


2、表示1234个年

select interval '1234' year(4) from dual;

INTERVAL'1234'YEAR(4)
---------------------------------------------------------------------------
+1234-00


继续阅读oracle interval函数

年付12刀左右vps信息收集

最近没啥写的,故整理了下近期便宜vps的信息。

商家:hostus
内存:768m
价格:12刀/年 – OpenVZ
地址:https://my.hostus.us/cart.php?a=add&pid=103
备注:这家用下来还行

商家:hostbd24
内存:256m
价格:10刀/年 – OpenVZ
地址:https://clients.hostbd24.com/cart.php?a=add&pid=112
备注:无货

商家:virmach
内存:512m
价格:12刀/年 – OpenVZ
地址:https://virmach.com/manage/cart.php?a=add&pid=117
备注:亚特兰大

商家:sentris
内存:32m ~ 512m
价格:1.99刀 ~ 9.99刀/年 – OpenVZ
地址:https://www.sentris.net/billing/cart.php?a=add&pid=794
备注:西雅图PCCW线和Custom线,论坛上说超售严重

商家:alpharacks
内存:512m
价格:9刀/年 – OpenVZ
地址:https://www.alpharacks.com/myrack/cart.php?a=add&pid=154
备注:无

商家:123systems
内存:512m
价格:14刀/年 – OpenVZ
地址:https://123systems.net/billing/cart.php?a=add&pid=102
备注:看人品,找优惠码

3月12日

平时休息天好像总是待在家里,现在春天又到了好想出去玩啊。。。

话说B站在15年1月推出了日本游频道,之前有一些up主的游记视频:
2015
bilibiliyoo!关西首发团副本攻略(一到五集)
http://space.bilibili.com/7775438/#!/index
陆夫人带你宅日本!
http://www.bilibili.com/video/av3002106/
【敖厂长+陆夫人+乌鸦】品尝岛国饮料
http://www.bilibili.com/video/av2998642/
bilibiliyoo!哔哩哔哩UP主带你游东京
http://space.bilibili.com/12514/#!/index

2016
然而2016变成图文博客的形式了

2月28日

最近公司对员工进行了网络安全方面知识的培训,介绍了几个安全漏洞点:
1)登录、注册、忘记密码的验证码
在这些界面,每次提交验证码都要刷新,否则就是形同虚设,用软件扫可以绕过验证码
2)平行越权
这个用户可以查到其他用户的记录
3)sql注入
4)跨站脚本攻击

演示了使用WebGoat搭建测试环境,Burp Suite进行渗透的过程。

扫的时候他是观察工具里返回的字节长度,一般失败和成功返回字节长度不一样。
建议对成功和失败的返回长度一样,或者返回尽量少的信息?

时间久了忘了后面的内容了。。。

oracle清理数据问题

一、删除一个用户下所有数据库对象
一种方法是删除这个用户然后重建,需要管理员操作:

drop user wangyi cascade; --删除用户
select * from dba_users where username = 'wangyi'; --查询默认表空间
drop tablespace WANGYI_DTBS including contents and datafiles; --删除表空间

重建用户:

create user wangyi identified by wangyi;
grant create session, create view, create any index, imp_full_database to wangyi;
alter user wangyi default tablespace wangyi temporary tablespace temp;
alter user wangyi quota unlimited on wangyi;

二、清除整个表的内容

delete from 表名;
truncate table 表名;

delete和truncate的区别:
delete删除的数据可以恢复,truncate不能恢复
delete高水位线不会下降,truncate高水位线会下降(释放表空间)
继续阅读oracle清理数据问题

gdb查看coredump文件

有时候编写的linux程序,在运行时会异常退出,此时会生成名为:“core.进程号”的core文件。
core文件保存了程序异常退出时的内存情况。

用gdb命令可以查看是在代码的哪一行出错,找到问题所在。
gdb [exec file] [core file]

说明:
exec file:产生core文件的程序
core file:要调试的core文件

进入gdb后用bt命令查看backtrace,堆栈信息。
PS:where命令也可以

软件及互联网爱好者