做软件开发
1、要有扎实的编程语言基础
2、对开发使用的平台要非常熟悉
3、对软件的业务逻辑要非常熟悉
有的人资历深,其实就是在这个行业做了很多年,对平台和业务逻辑的了解,变成了一种本能反应,不需要多思考和查资料
大公司难免会拉帮结派,最好不加入帮派也不得罪人家
对于程序员来说最最重要的是把领导安排的工作做好,做实!!!
做软件开发
1、要有扎实的编程语言基础
2、对开发使用的平台要非常熟悉
3、对软件的业务逻辑要非常熟悉
有的人资历深,其实就是在这个行业做了很多年,对平台和业务逻辑的了解,变成了一种本能反应,不需要多思考和查资料
大公司难免会拉帮结派,最好不加入帮派也不得罪人家
对于程序员来说最最重要的是把领导安排的工作做好,做实!!!
xargs命令的作用就是将上一个命令的结果,作为xargs后面命令的参数来使用。
命令对比:
1、假设当前目录下有111.txt和222.txt两个文件
find -name 111.txt | ls -la
搜索出来的结果和ls -la命令执行结果一样。
find -name 111.txt | xargs ls -la
搜索出来的结果只有111.txt信息。
第二句find语句将前面的结果作为了ls -la的参数,ls -la 111.txt。
2、在当前目录下搜索以.c结尾的文件
find . -name "*.c" | grep SetMessage
搜索出来的是一个叫SetMessage.c的文件。
find . -name "*.c" | xargs grep SetMessage
搜索出来的是在某个.c中有SetMessage函数定义。
第一个find语句是grep从管道出来的结果集中去找SetMessage的内容。
第二个find语句是将管道出来的结果作为grep的参数,比如结果里有1.c、2.c、SetMessage.c,命令就变成
grep SetMessage 1.c 2.c SetMessage.c
后来在2.c中找到SetMessage函数定义。
1、dbvisualizer中文乱码
tools–tool properties找到Fonts–修改SQL Editor/Text Editor
将字体换成:微软雅黑、新宋体、楷体、黑体
2、dbvisualizer自动提示
tools–tool properties找到SQL Commander–Auto Completion
都打上勾
3、SQL提示
修改SQL提示的步骤如下:
1)编辑dbvis.jar包下的dbvis-actions.xml文件(解压或直接修改)
2)找到以下的代码
<actionidref=”show-auto-completion-command”keystroke=”control SPACE”/>
3)将以上代码修改为以下代码 (改成 alt + 点 或 alt + 斜杠 )
<actionidref=”show-auto-completion-command”keystroke=”alt PERIOD:alt SLASH”/>
4)保存文件并放回到dbivs.jar中
经过以上步骤便让dbvis的SQL提示的快捷键与eclipse的代码提示快捷键一致,修改在与我们编写代码习惯一致,提高我们的编写SQL的效率
此时用alt+点 或 alt+斜杠,SQL提示的框就出来了
4、快速执行一行sql语句
shift+home 选中一行
ctrl+enter 执行语句
5、修改查询结果的显示条数
右上角将Max Rows从1000改为1000000
6、格式化SQL语句
SQL Commander -> Format SQL
7、SQL Editor右上角Max Rows和Max Chars设为-1显示全部,或指定一个大小
8、dbvisualizer编写P/L SQL
需要在declare前加上“–/”,end后加上“/”
--/
DECLARE
v_num number(1) := 1;
BEGIN
dbms_output.put_line(v_num);
end;
/
注意--/和/之前不能有空格,否则执行报错
在SQL Commander里面执行以上代码,dbms_output.put_line()语句没有输出?
1)先选择DBMS OUTPUT选项卡,点击enable绿色箭头
2)再执行以上代码
— 10:31:45 —
1
9、DBMS OUTPUT
在SQL Commander执行:
@set serveroutput on;
相当于在DBMS OUTPUT选项卡,点了enable绿色箭头
@set serveroutput off;
相当于点了stop红色图标
10、调用存在的存储过程
--/
begin
hr.getpages(1,10);
end;
/
不用加exec。
应用选择
应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的。终端的AID列表是通过IC卡参数下载交易从服务端获取,卡片的AID是在做卡片个人化时写入的。
建立应用列表有两种方法,PSE目录选择方法和AID选择方法。
目录选择法流程:
终端先读取PSE,PSE也是一个目录称为支付系统环境。
通过READ RECORD命令读取PSE中的短文件标识(SFI)以及文件里的记录号。读取的记录号对应的记录就是卡片支持的AID。将卡片支持的AID列表和终端支持的AID列表比较,把共同支持的AID放入候选目录中。
AID选择法流程:
AID选择法,就是终端将自己所支持的全部AID通过SELECT命令发送给卡片,逐一尝试,看哪条AID是卡片所支持的。把卡片也支持的AID放入候选目录中。
建立完列表后,可以1)显示应用供用户选择,或2)自动选择优先级最高的一个应用,用于引导处理交易。
卡片会在终端发送SELECT命令响应中返回PDOL(处理选项数据对象列表)是卡片要求终端提供数据的标签和长度列表。终端之后在应用初始化时处理PDOL,通过GPO命令提供列表中所要求的数据给卡片。
继续阅读PBOC借贷记学习(未完待续)
1、C++中引用和指针的区别
指针保存的是一个对象的地址,引用是这个对象的别名。
int a = 1;
int * p = &a;
这里变量a和指针p本身地址是不一样的。
int a = 1;
int &b = a;
这里变量a和引用变量b的地址是一样的,两个变量指向同一个内存地址。
主要区别:
引用变量不能为空,在定义时必须初始化。
引用变量初始化后,引用的对象不能再改变。b引用了a后,不能再引用c变量。
总结:
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。
指针和引用作为函数参数进行传递时的区别:
传值调用、传址调用、引用调用中传址调用、引用调用都可以改变传入的实参的值。
区别在于指针调用也是将指针变量的值(所指向变量的地址的拷贝)传入形参,在函数内修改所指向变量的值。
引用调用直接把实参传入了函数内,修改了形参就修改了实参。
2、__cdecl和__stdcall区别
两者的区别是清栈方式不同,如果使用__stdcall由函数自己清栈,如果使用__cdecl由调用者自己清栈。
当函数参数个数不定时,只能使用__cdecl来说明函数的调用方式。
如:int sprintf(unsigned char *out, const unsigned char *format, …)
3、类中的静态变量和静态函数
类中的静态变量是属于类的不属于某个对象,它是所有对象所共用的。
静态数据成员需要单独初始化:
<数据类型><类名>::<静态数据成员名>=<值>
静态成员函数可以使用静态数据成员,非静态数据成员要通过具体对象来引用(因为静态成员函数没有this指针)。
静态成员函数主要为了调用方便,不需要生成对象就能调用。
继续阅读C++学习
想跑30分钟得先具备走30分钟的体力。
跑步姿势
1、挺胸
头和上半身要和着地的那只脚成一直线,身体挺直不要前倾。
2、摆动手臂
摆臂时感觉好像在打鼓一样。
3、脚后跟先着地
摆臂时带动肩胛骨,要用全身来带动脚。
平时锻炼时用时间来衡量而不是用距离,速度不用太快,可以一边轻松讲话一边跑的速度就可以。
LSD训练
L:long,长时间,S:slow,慢速度,D:distance,长距离。
用7到8分钟跑1公里的速度持续跑90到120分钟。
shadowsocks是一个轻量级的socks5代理软件,shadowsocks开发语言有nodejs、go、python、c。
shadowsocks python语言版
https://github.com/clowwindy/shadowsocks
shadowsocks go语言版
https://github.com/hugozhu/shadowsocks-go
shadowsocks nodejs语言版
https://github.com/clowwindy/shadowsocks-nodejs
shadowsocks libev版(使用C语言+libev库+openssl开发)
https://github.com/madeye/shadowsocks-libev
shadowsocks libuv版(很久没更新了)
https://github.com/dndx/shadowsocks-libuv
网上推荐安装python版和Shadowsocks-libev版,这里安装标准python版,系统为CentOS6。
一、服务端
1、安装库和shadowsocks
继续阅读CentOS VPS安装shadowsocks代理服务端
yum install m2crypto python-setuptools
easy_install pip
pip install shadowsocks
原来的一代身份证号是15位的,现在用的二代身份证号是18位的,它们之间有一个转换规则。
一代:340524800101001
二代:34052419800101001X
可以看到它们之间的区别是二代在年份前多了19,最后面多了一位校验位
第十八位数字的计算方法为:
1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
2.将这17位数字和系数相乘的结果相加。
3.用加出来和除以11,看余数是多少?
4余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
以下代码VC6编译测试通过:
#include<stdio.h> #include<string.h> void id_card_convert(char * id) { char tmp[20]; int i, j ,sum = 0; char verify[11] = {'1','0','X','9','8','7','6','5','4','3','2'};//校验位 int num[17] = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//系数 //转换号码15位到18位 memset(tmp, 0x00, sizeof(tmp)); memcpy(tmp, id, 6);//复制前6位 memcpy(&tmp[6], "19", 2);//前6位后补19 memcpy(&tmp[8], id+6, 9);//复制后9位 for (i = 0; i < 17; i++)//现在tmp有17位算第18位校验位 { sum = sum + (tmp[i]-0x30)*num[i]; } j = sum % 11;//从verify数组中找到第j位就是校验值 tmp[17] = verify[j]; memcpy(id, tmp, 20); } void main() { char id_card[20]; memset(id_card, 0x00, sizeof(id_card)); memcpy(id_card, "340524800101001", 15); printf("原身份证号:%s\n", id_card); id_card_convert(id_card); printf("转换后:%s\n", id_card); //显示34052419800101001X是正确值 }
参考资料:
http://blog.csdn.net/ylqmf/article/details/4904483
情景剧:
红茶坊
开心公寓
老娘舅
新闻节目:
大家帮侬忙 周六、周日 新闻综合频道 16:45~17:30
快乐三兄弟.嘎讪胡 周一至五晚 新娱乐频道 18:00~18:30
http://v.baidu.com/show/393.htm
谈话节目:
闲话上海滩 周一至五晚 记实频道 19:00
http://v.baidu.com/show/9737.htm
综艺节目:
欢乐星期二 周二 新娱乐频道 20:00
http://v.baidu.com/show/335.htm
阿庆讲故事 周一至周五 新娱乐频道 19:15
http://v.baidu.com/show/26.htm
没环境讲不来了,记得看!
又到了定期推荐日影的时候了。《黄色大象》、《贞子3D续集》、《地狱为何恶劣》、《小好、小麻、佐和子》。
《黄色大象》
◎译 名 黄色大象
◎片 名 きいろいゾウ/YellowElephant
◎国 家 日本
◎年 代 2013
◎语 言 日语
◎类 别 剧情
◎导 演 广木隆一
◎主 演 宫崎葵
向井理
濱田龍臣
浅見姫香
本田望結
柄本明
松原智恵子
荻野目慶子
安藤樱
绪川玉木
LilyFranky
◎简 介
继续阅读推荐日影20140614