关于浦发
- 企业愿景:建设数字生态银行
- 立足金融中心——上海
- 企业使命:金融为美好生活创造价值
- 产品:文化主题信用卡(布达拉宫)、etc、手机银行商城活动
- 227位——>216位(最新)
- 业内首推企业科创板上市投行服务方案
- 浦发科技金融服务2.0发布会
- 智能金融高峰论坛
编译与链接
四个步骤:预处理、编译、汇编、链接
.cpp —预处理—> .i —编译—> .s —汇编—> .o —链接—> .out
- 预处理:
将#include预编译指令包含的头文件插入;
将宏定义展开
将注释过滤
- 编译:进行词法分析、语法分析、语义分析及优化后产生相应的汇编代码文件。
词法分析:扫描产生关键字、标志符、字面量等的记号;
语法分析:将记号产生语法树;
语义分析:将语法树的表达式标识了类型,判断是否有意义;
- 汇编:汇编器将汇编代码翻译成机器码
- 链接:把每个源代码模块独立的编译,然后把各个模块组装起来的过程就叫链接。
数据库基本操作
数据库基本操作:
(1)创建数据库:
create database 数据库名;
(2)查看数据库:
show databases;
(3)选择指定的数据库:
use 数据库名;
(4)删除数据库:
drop database 数据库名;
(5)创建表:
create table 表名 (字段名 字段类型 该列是否允许为空)
创建完成后自动会创建三个表名:“表名.frm”,“表名.MYD”,“表名.MYI”
(6)查看数据库中所有的表:
show tables;
(7)查看数据表结构:
describe 表名;
(8)修改数据表结构:
alter table 表名
add [column] create_definition [first | after column_name] //添加新字段
add primary key (index_col_name,…) //添加主码名称
alter [column] col_name {set default literal |rop default} //修改字段名称
change [column] old_col_name create_definition //修改字段名及类型
modify [column] create_definition //修改字段类型
drop [column] col_name //删除字段
drop primary key //删除主码
rename [as] new_tablename //更改表名
(9)删除指定数据表:
drop table 表名;
(10)添加表数据:
语法1:insert into 表名 values(值1,值2,…)(自增长的列应写null)
语法2:insert into 表名(字段1,字段2,…) values (值1,值2,…)
语法3:insert into 表名 set 字段1=值1,字段2=值2,…
(11)更新表数据:
update 表名 set 字段1=值1 where 查询条件(若无查询条件,表中所有数据行都会被修改。)
(12)删除表数据:
delete from 表名 where 查询条件
(13)查询表数据:
select * from 表名;
(14)限制查询记录:
select * from 表名 limit[start] length
start:表示从第几行记录开始输出,0表示第1行
关键字DISTINCT:指示只返回不同的值
限制结果:LIMIT
排序:ORDER BY(默认升序,降序为DESC)
过滤:WHERE
AND优先级大于OR
通配符 LIKE:用来匹配值的一部分的特殊字符
正则表达式是用来匹配文本的特殊的串:REGEXP
正则表达式中使用 BINARY 强制区分大小写
正则表达式包含通配符和模式规则
拼接:Concat()函数拼接两个列
创建分组:GROUP BY
数据库连接方式:内连接、左外连接(左表行)、右外连接、全连接
Linux常用命令
cd:用于切换当前目录
ls:查看文件与目录的命令
grep:文本搜索
find:查找
mkdir:创建指定的名称或目录
cp:复制文件
mv:移动文件、目录或更名
rm:删除文件或目录
ps:列出系统中当前运行的命令
kill:终止指定的进程
tar:对文件进行打包
gzip和bzip:进行压缩和解压
chomd:改变文件的权限
chown:改变某个文件的拥有者和群组
tail:查阅正在改变的额日志文件
pid:查看进程
vi:创建一个文件,并编辑文件内容
history:显示历史命令
su-root:将普通用户改成root用户
df-lh:查看磁盘状态,可知道一共多大,使用了多少,剩余了多少以及挂载点
df-a:全部文件系统使用情况
df-h:统计每个磁盘整体情况
kill-l:列出所有信号名称
kill-9:彻底杀死进程
kill-u:杀死指定用户的进程
du-ah:查看文件大小
job-l:查看后台任务
compgen-c:可以打印出所有支持的命令列表
repquota:能够显示出一个文件系统的配额信息
whatis:查看某一命令的用法简要
disown-r:可以将搜优正在运行的进程移除
netstat:查看网络是否联通
ifconfig:查看ip地址及接口信息
wc-c:对文件的内容进行统计,统计字节数
wc-l:统计行数
wc-w:统计字数
.jpg和.bmp图片有什么区别?
JPG:采用高压缩比技术的图像存储格式。有损压缩格式,所以在你对一张JPEG格式的图片反复进行修改保存时,则会让图片失真,品质下降。优点(文件小,利于网络传输),缺点(画质损失)。
BMP:(全称Bitmap)是Windows操作系统中的标准图像文件格式,它采用位映射存储格式,除了图像深度可选以外,不支持文件压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。优点(无损压缩,图质最好),缺点(文件太大,不利于网络传输)。
MFC(做界面的部分,很重要!!)
微软基础类库(英语:Microsoft Foundation Classes,简称MFC)。以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。
其他做界面的:
QT
WPF
数组越界
读越界:读了不属于自己的数据。如果读的内存地址是无效的,程序立即崩溃;如果地址有效,不会崩溃但会产生后续的问题。
写越界:又称为缓冲区溢出。
避免:
- 数组越界:主要包括数组下标取值越界和指向数组的指针的指向范围越界。
- sprintf、strcpy_s等安全函数的使用。
- 避免忽略字符串最后的’\0’字符而导致的越界。
堆栈溢出
原因:
- 函数调用层次太深导致栈溢出(函数栈无法容纳返回地址)——>使用尾递归(函数调用是尾递归时,它就会覆盖当前的活动记录而不是在栈中创建一个新的);
- 动态内存没有释放导致堆溢出;
- 数组访问越界;
- 指针非法访问;
野指针、空指针、悬垂指针
- 野指针(即:悬挂指针):指向无效地址的指针(指向垃圾内存)
- 指针变量未初始化;
- 指针被delete或free后未被置为空;
- 指针操作超越了变量的范围。
- 空指针:没有存储任何内存地址的指针(如0指针和NULL指针)。
- 悬垂指针:指向曾经存在的对象,但该对象已经不存在了。
上溢出、下溢出、假溢出
上溢出就是访问下标小于0
下溢出是访问下标大于等于数组长度
假溢出:队列用的存储区还没有满,但队列却发生了溢出,我们把这种现象称为"假溢出"——>循环队列解决or队列元素平移
printf函数怎么不输出到屏幕,输出到日志
输入输出重定向:
输入重定向<
输出重定向>
C++11
智能指针
移动语义和右值引用
特殊的成员函数(移动构造函数、移动赋值运算符)
Lambda函数(用于创建匿名函数)
包装器(调用特征标、缩小可执行代码规模)
可变参数模板(参数数量可变)
迭代器失效
- 序列容器(如vector、deque)中:当前元素的iterator被删除后,其后的所有元素的iterator都会失效,因为序列容器存储一段连续的空间,进行erase时,其后的每一个元素都会向前移动一个位置。
已经失效的迭代器不能进行++操作,不过vector的erase函数可以返回下一个有效的迭代器,所以每次执行删除操作的时候,将下一个有效迭代器返回就可以避免迭代器失效带来的错误了:
vec.erase(it);
——>it = vec.earse(it);
- 关联式容器中:删除当前的iterator,仅仅会使当前的iterator失效,只要在erase时,递增当前的iterator即可。
排序算法稳定性
不稳定排序:
选择、希尔、快速、堆排序
error和exception
error(错误)是系统中的错误,只能通过修改程序才能修整(内存空间不足,内存溢出)。
exception(异常)表示程序可以处理的异常,可以捕获且可能恢复。
解释性语言和编译性语言
编译性语言:
先通过编译器将源代码变异成机器语言,运行时脱离开发环境,运行效率高。
解释性语言:
不需要事先编译,直接将源代码解释成机器码并立即执行,效率低。
C++比java多的:
编译与解释
指针
重载(java不支持运算符重载)
垃圾回收(java自动回收,C++用析构函数)
多重继承