起始

  很快,大学四年转眼即逝,下学期已经没有课的我抱着复杂的心情开始找实习,本着可以学到技能的心态出去找实习,然而经历了半个月的苦找,终于找到一家,初次到公司来实习,初次体会的是企业内部的系统很大,和平时自己学到的项目并不能相比….涉及到的内容很广,因为实习的岗位是java开发岗,所以在公司的部门中看到了公司内部OA系统的大框架和流程。第一周主要是熟悉一下业务流程。
  系统中按照大模块划分大概我数了一下是有19个大功能模块,由于是证券公司,所选用的框架形态也是比较沉稳老套的SSH(Spring+Struts2、Struts+Hibernate)框架,而数据库的选型采用的是MSSql(Mircosoft sql微软自己出的sql数据库),前端网页也是后端的老前辈们用jQuery的封装EasyUI样式搭建出来的后台界面。因为涉及到安全方向的考虑,所以公司采用内网环境,与外网隔绝来保证安全性。而初次预览一个项目时,第一步要做的肯定是启动服务本地访问网页的主页,在找到index.jsp后发现怎么也登陆不了,后来才想到是因为数据库连接的是测试库,而测试库中的数据没有同步我的用户名,也就是员工编号(毕竟是刚来…),这里也想到过直接到数据库里查询一下自己的用户名和密码,结果发现是经过加密的。这时就看了一下后台的逻辑代码,学习到了一个知识点:MD5。MD5是不可逆的,但是同样值得字符串只能有一个MD5编码,所以用户登录输入密码后,在后台验证时是先把取得的用户密码转化成MD5加密后的编码,然后在和数据库中的MD5值做比较。
   最后登录到主界面用的账号是同事的账号,登录后发现主界面的左面是一颗“树”,“树”的显示内容是根据每个人的权限而确定的。点开后的详情页面在右侧的iframe中显示。初步预览了一下,业务大概都是一些查询业务,还有一些导入导出功能。第一周的主要收获就是熟悉了一下公司的业务流程,了解到了数据库的选型,还有公司内部的系统代码,由于代码的工程真的是很多,所以不是一时半会可以看完的,希望接下来的几周继续努力学习,增强自己的代码审计能力。而自己尽量可以在熟悉流程以后,开始着手编码工作。
   接下来的几周我来总结一下我实习中学到的东西。大部分的时间是在阅读代码,熟悉大体流程,许多模块内都使用了表单来作为提交,而其中提交表单用到的技术是ajax(异步提交表单),这个技术现在使用的很广,例如前端验证数据库中有没有注册用户的时候,此时是不需要刷新整个页面的,而是采取了局部刷新页面的方式,所以我先来总结一下ajax在这一周看到的用法。
   ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。使用Javascript向服务器提出请求并处理响应而不阻塞用户!核心对象XMLHTTPRequest。通过这个对象,您的 JavaScript 可在不重载页面的情况与Web服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果。AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。AJAX 可使因特网应用程序更小、更快,更友好。
   而ajax现在用的到最广的方法是直接利用jQuery中封装好的方法,例如这样调用jQuery.ajax([settings]),其中的参数分为:options,async,beforeSend(XHR),cache,complete(XHR, TS),contentType,context,data,dataFilter,dataType,error,global,ifModified,jsonp,jsonpCallback,password,processData,scriptCharset,success,traditional,timeout,type,url,username,xhr。光是参数就有这么多,其实实际编码中常用到的就几个:url(刷新时执行的路径),data(传递的数据),type(提交数据的方式,POST/GET),async(是否异步请求,默认true,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。),cache(是否使用缓存效果,默认false,此时就是不缓存当前页面),success(成功后执行的函数)。公司内部采用的是代码形式如下来提交表单:
  

$.ajax({url :  “xxxxxxxx.action”,      //  这里写action提交的路径data : $(“#listForm).serialize(),  //  这里是提交的表单数据,同时序列化type : “post”,                //  这里是提交表单时用到的请求类型async:false,                 //  这里是不使用异步请求cache:false,                 //  这里是不使用缓存效果缓存当前页面success:function(data){xxx}   //   这里是成功执行后的函数
});

以上就是使用ajax来进行表单的提交。
  随后很幸运的赶上了一个新平台的合作,是公司从外面引进的一个报表系统平台,通过与数据库做交互查询来实现前端的报表系统展示,这个系统的培训我正好跟进了全程,于是从这周开始着手与报表系统打交道,而对于这个系统的基础是数据库的基础,为了达到业务部门报表前端的需求展示,后端对数据库的字段的要求有一些会比较复杂。总结一下学到的数据库方面的知识点。
  在数据库中,时间类型的字段有三种,分别是DATETIME ,TIMESTAMP[(M)] ,DATE。分别解释一下:DATETIME :日期和时间的组合。支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’。以’YYYY-MM-DD HH:MM:SS’格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。TIMESTAMP[(M)] :时间戳。范围是’1970-01-01 00:00:00’到2037年。 TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。 TIMESTAMP值返回后显示为’YYYY-MM-DD HH:MM:SS’格式的字符串,显示宽度固定为19个字符。如果想要获得数字值,应在TIMESTAMP 列添加+0。DATE 类型:可用于需要一个日期值而不需要时间部分时。以 ‘YYYY-MM-DD’ 格式检索与显示 DATE 值。支持的范围是 ‘1000-01-01’ 到 ‘9999-12-31’。
  这三项是关于时间字段的三种差别,接下来总结一下我学到的两个函数,一个是convert(),还有一个是datepart()。
convert()函数语法:convert(data_type(length),data_to_be_converted,style)
第一个参数是数据类型(长度),第二个参数是转化的数据列表名,第三个参数从固有选格式,例如112,对应的时间格式就是yymmdd。
datepart()函数:datepart(datepart,date)通过不同的datepart缩写来选择得到的格式。
date 参数是合法的日期表达式。datepart 参数也是固有的值:例如wk,对应周。
  在sql语句方面接触了一些语句,是一些之前在学校没学到过得,先从简单的开始说起。一个关键字in,这个关键字对应的是sql中的’=’,而它们的区别在于in后面可以有多个结果集,而’=’后面只能有一个结果集,例如select * from student where id = 1,这样的语句只能查询id=1的条件,如果要是用in的话,例如select * from student where id in(1,2,3),这样可以查出多个,有点像and语句似的。还接触到了case when语句,这个语句就像if似的是在sql里用来做判断,后面再钻研一下这个语句的具体用法。
  这些日子的收获主要是在和数据库相关的操作,其中还看到了存储过程(这个不会,以后有时间要研究一下)。
经过前面几周的流程熟悉,这周已经获得了一个小模块的编写任务,需求大概是因为随着“新增招待费用申请”模块使用时间增长,数据量也越来越大,为了方便查询,实现如下几个小改动:
1、财务审批阅读标注。在现有的结构上增加这个功能,后期审核时,对于已经审核过的可以手工标注,防止重复批注。
2、对于上述标注的标注时间进行一下记录,并对超过标注时间90天以上的单据,在查询的时候不在全部显示。
3、在上述功能调整后,再添加一个可以显示全部单据的功能。
  由于是第一次实际着手编码,在完成这3个功能的时间要长一些,这周我只完成了第一个功能,剩下的两个功能下周会完成。说一下这个小功能学到的东西以及遇到的坑。。。
  第一个坑就是从前端的角度去出发考虑,前端展示给大家看的都是以表格的形式进行的,而不是文本框,那么我要进行批注这个功能必然是需要让表格里变成文本框,于是通过不断地检索代码信息,最终可以完成双击表格,让其变成文本框,当输入完成后并且失去焦点,此时保存数据,用前面学到的ajax提交表单来实现入库处理。代码如下:
  

$(".td1").dblclick(function(){var td = $(this);var text = $.trim(td.text());var txt = $("<input type='text' >").val(text);txt.blur(function(){var rdremark = $(this).val();
//获取同行不同列的值,通过当前对象的父节点的父节点(td->tr->table)获取td类名applyid这一列的遍历var applyid = $(this).parent().parent().find("td.applyid:eq(0)").text();alert("当前申请编号为:" + applyid + ",审核阅读标注修改成功!");$.ajax({url : "sop_cwbx_aJaxModifyRdremark",data : {"applyid" : applyid , "rdremark" : rdremark},type : "post",async : true,cache : false,dataType : "json",success : function(){               }});var newText = $(this).val();$(this).remove();td.text(newText);           });td.text("");td.append(txt);txt.focus();});
}

  在这其中遇到的坑是后台获取数据时一开始是怎么都获取不到的,后来请教了一下前辈,先让我在前端做个alert验证,看看前端有没有获取到值,这才让我恍然大悟。。。而从中学到的是获取数据可以先通过判断前端拿没拿到数据,再去后端做校验。因为这个是编辑功能,所以需要新添加一个字段,在库中新建字段,同时后面也要对时间:
  

/创建rdremark字段,类型字符串
alter table nod..zc_Finance_feeapply add rdremark varchar(112),
//创建createtime字段,类型时间
alter table nod..zc_Finance_feeapply add createtime datetime

  本周收获就是这些,下周继续完成剩下的两个功能模块。
这周是实习的第五周,经过上一周的流程熟悉,这周已经熟悉了“新增招待费用申请”模块,本周完成的是:
2、对于上述标注的标注时间进行一下记录,并对超过标注时间90天以上的单据,在查询的时候不在全部显示。
3、在上述功能调整后,再添加一个可以显示全部单据的功能。
  对于第二点的需求分析,让我学到了一个sql的函数,可以通过底层sql语句去写这个逻辑,有一个函数叫DATEDIFF(),这个函数的用法如下:
DATEDIFF(datepart,startdate,enddate)所以要想判断标记时间超过90天数据以上就可以用到这个函数,其中datepart是固定值,例如写dd,代表的就是日为单位,然后我的写法是这样来判断时间的:select * from nod..zc_Finance_feeapply where DATEDIFF(dd, createtime, GETDATE())<90;通过这样一条语句就可以显示出小于90天的数据,为了检测是否成功的判断了这个逻辑加上一条测试数据:update nod..zc_Finance_feeapply set rdremark=’呵呵’,createtime=’2016-03-12 ’ where applyid = ‘18’,通过前端页面测试数据完毕后成功筛选。
  对于第三点的分析,就比较简单了,不加条件的限制,只需添加一个按钮,然后查询这个表里的所有数据即可,通过select * from nod..zc_Finance_feeapply去调用到按钮上完成全部数据查询。
  同时这周末有一个小插曲,因为要买了一台新服务器,需要把之前服务器的数据库迁移到新的服务器上,因为就得服务器跑数据库太慢了,所以主动加入到这次计划中,顺便开拓一下视野,看看服务器是什么样子的。周末到了发现公司采用的是windows server的操作系统。顿时有点。。。。。。。因为之前一直听说现在的服务器基本都是用Linux的系统来支撑的,后来在这点上问了一下总监,为什么不采用Linux作为系统,总监说因为不是外网环境,所以从安全角度上来考虑没有什么影响,而Windows server作为服务器的操作系统减少了开发人员的学习成本,如果选用Linux则需要开发人员学习相关知识。可是是因为金融行业,并没有那么大的需求吧。但是从现在的公司来分析,大部分的操作系统都是Linux的。
  这周的收获是见识到了服务器,没有想象中的那么高大上,其实就是比普通电脑的内存和容量,配置高了一些,学习了数据库中DATEDIFF()函数的使用,还学到了一个UNION的用法,两表级联,顺序必须一致。
这周是实习的第六周,上周的模块做完后,这周又得到了新的模块,学习到了关于数据字典的编程思想。需求如下:
RATING_LVL RATING_LVL_NAME
1 低
2 较低
3 中
4 较高
5 高
风测期限:
1 短期——0(含)到1年(不含)
2 中短期——1(含)到3年(不含)
3 中长期——3(含)到5年(不含)
4 长期——5年(含)以上

风测级别
固收类 1 固定收益类或同等风险级别的投资品种,如债券、货币市场基金、债券基金等
权益类 2 权益类或同等风险级别的投资品种,如股票、混合型基金、偏股型基金、股票型基金等
另类 3 另类或同等风险级别的投资品种,如信托、基金专项计划等
杠杆类 4 杠杆类或同等风险级别的投资品种,如融资融券、期货、期权等
复杂类 5 复杂或高风险金融产品
  通过以上的3个类型来分别匹配数据库中的字段,比如在风测级别中,1这个数字就对应固收类,然后他的内容是后面的一长串,而前端页面我需要做的是把固收类显示在前端页面上,此时对应的数字来决定后面的内容。这时就需要用到的是字典表的设计理念,直接在dict表中插入如下语句:
  

insert into tongji..t_dict values ('1','低','fcjb','1')
insert into tongji..t_dict values ('2','较低','fcjb','1')
insert into tongji..t_dict values ('3','中','fcjb','1')
insert into tongji..t_dict values ('4','较高','fcjb','1')
insert into tongji..t_dict values ('5','高','fcjb','1')
insert into tongji..t_dict values ('1','固收类','fclb','1')
insert into tongji..t_dict values ('2','权益类','fclb','1')
insert into tongji..t_dict values ('3','另类','fclb','1')
insert into tongji..t_dict values ('4','杠杆类','fclb','1')
insert into tongji..t_dict values ('5','复杂类','fclb','1')
insert into tongji..t_dict values ('1','短期——0(含)到1年(不含)','fcqx','1')
insert into tongji..t_dict values ('2','中短期——1(含)到3年(不含)','fcqx','1')
insert into tongji..t_dict values ('3','中长期——3(含)到5年(不含)','fcqx','1')
insert into tongji..t_dict values ('4','长期——5年(含)以上','fcqx','1')
而风测类别前端的代码处理是这样的:
<select name="fclb" style="width:83px"><option value="1">固收类</option><option value="2">权益类</option><option value="3">另类</option><option value="4">杠杆类</option><option value="5">复杂类</option></select>

  通过option的value来与数据库中的字典表相互对应起来,最终实现逻辑上的需求。
这个需求完成后,我还记得之前一直说的case when 语句,这周抽时间总结了一下。
比如这样的一条语句:
select * , convert(datetime,bizdate,105)as riqi,
case when
flag in (‘港股交易’) then ‘港股通交易佣金(未扣营业税)’
when
flag in (‘买入跟随’,’卖出跟随’)then ‘A股跟随交易佣金(未扣营业税)’
else flag
end as Nflag
from nod..sop_jgt_logasset
意思就是,查询logasset这张表的所有内容,并且把bizdate这个字段转化为日期类型并且重命名为riqi,case when就是当flag=港股交易的时候,则把flag归为港股通交易佣金(未扣营业税),后面的when是一个意思,else flag是剩下的不变,end as Nflag这句话是结束了条件同时把上面的步骤归到新增列Nflag中。

终止

  通过这几周的企业中实习,真的是学到了不少东西,例如ajax的使用,数据库高级语句(case when)的使用等等,我们更多学到的是不懂就要问和自己应该尽自己的全力去尝试,哪怕失败,也要尽自己的全力,和身边的同学一起探讨而不是抄袭,团队合作和发挥团队意识,最后在自己的努力下终于运行成功,这种感觉美不可言,心情愉悦至极,有很强的成就感。我第一次体会到Java工程师的工作是什么样子的,也发现了很多不曾注意到的细节,在实习的演示过程中,我对作为一名Java工程师注意的事项应该从小事做起、从基本做起。相信在以后的工作中能更加的沉稳,不断地学习进步!

实习总结-2017.5.2相关推荐

  1. 武汉工程科技学院.网络集成与安全.综合实习报告.2017.12.5

    声明:此分享仅供学习参考,不得用于任何商业用途. 武汉工程科技学院.网络集成与安全.综合实习报告.2017.12.5 拓扑图如下: 主要知识点如下: 1)        静态路由 2)         ...

  2. 2016年阿里巴巴、腾讯等公司暑期实习面试经验分享

    前言 其实我一直不是很喜欢写东西,但我常怀着一颗感恩的心去阅读别人的博客,别人各种形式的分享,希望之后能慢慢培养自己写东西的习惯,学会分享,学会感恩! 那么就从今天开始吧! 我今年研二,其实从研二上学 ...

  3. Android实习报告

    生产实习报告 专    业: 通信工程 班    级: 通信14-4班 学    号: 2014023218 姓    名:           2017年12月4日  至  2017年12月29日 ...

  4. 报道 | 本科4篇顶会论文如何做到?清华特奖干货分享:我是这样写论文、做实验、与导师相处...

    ↑↑↑↑↑点击上方蓝色字关注我们! 『视学算法』转载 作者:量子位 编者按: 清华本科特奖获得者.清华计算机大四学生高天宇的顶会论文干货分享,手把手教你打开本科生/嗑盐小白科研之门的门钥匙. 本科生, ...

  5. 本科4篇顶会!清华特奖高天宇干货分享:我是这样写论文、做实验、与导师相处...

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 鱼羊 晓查 发自 凹非寺  本文转载自:量子位(QbitAI) 本科 ...

  6. 谷歌2020博士生奖研金名单出炉,大陆高校无一人入选

    作者 | 陈彩娴.陈大鑫 编辑 | 陈大鑫 10月8日,谷歌发布2020年博士生奖研金名单(2020 Google PhD Fellows),大陆高校在读博士无一人入选,但海外高校在读博士生入选中,大 ...

  7. 谷歌2018博士生奖研金名单出炉,清华、上交大多人入选

    源/新智元 谷歌的博士生奖研金项目(Google Ph.D Fellowship Program)创立于2009 年,以奖励在计算机学科及其相关学科或者其它前瞻科研领域方面表现优异的博士生. 该项目为 ...

  8. repost 双非本科到腾讯的编程奋斗之路

    我为什么要开通这个编程剑谱? 首先我认为编程的学习重在讨论和分享一些知识,其次希望营造一个互动的社区,自己想从更优秀的人身上学到更多,也希望帮助更多的人更有效的学习编程:技术.经验的分享将会使我们少走 ...

  9. 找工作,要做就做最好的自己,大平台去闯闯,一定不要让未来后悔!~附简历...

    找工作,要做就做最好的自己,大平台去闯闯,一定不要让未来后悔!~附简历 王郑军 性别:男   出生年月:1995.10.20  民族:汉  政治面貌:中共党员 湖南涉外经济学院   电子信息工程专业 ...

最新文章

  1. 微信公众平台两种消息处理流程对比
  2. 【结论】游戏(jzoj 1984)
  3. db设计专用excel_独家|自卸车如何实现侧板结构快速设计,减少重复工作?
  4. 计算机主板知识,小白必看电脑主板知识扫盲,主板是什么?有什么用?
  5. javascript正则表达式一
  6. XSS漏洞原理/方式/防御
  7. 13 -3 jquery选择器和 jquery动画
  8. “十亿赌约”,雷军输,董明珠胜?
  9. mysql怎么绿化绿化_Windows下MySQL的绿化与精简
  10. 端到端无人驾驶文献学习:ChauffeurNet: Learning to Drive by Imitating the Best and Synthesizing the Worst
  11. mysql默认密码树莓派_树莓派重置root密码
  12. 【LOJ#10064】黑暗城堡
  13. filezilla,filezilla下载文件
  14. 从网线到网页之物理层一网线网口
  15. VMware与宿主机文件夹共享、虚拟机磁盘映射
  16. 概率分布 ---- 正态分布
  17. php 模拟数猴子数大王,猴子大王的问题
  18. DRDOS,Novell DRDOS,Calder DRDOS, Real32 DOS 多用户多任务操作系统使用心得
  19. 计算机组成加减交替法被除数,2019考研408计算机组成原理知识:定点数的表示和运算...
  20. Python数据分析(一)

热门文章

  1. 诺奖终属黑洞理论-IT与物理的相互成就
  2. 为自己的snap应用添加变量
  3. 市场刚需亚马逊测评还能不能做?如何评论、提升排名、打造爆款
  4. 这款超强搜索神器,我爱了!
  5. 关系数据库和非关系数据库
  6. 卷起来了!校招提前批爆发期!
  7. python制作软件excel,利用Python制作Excel对比工具
  8. Deep Residual Learning for Image Recognition浅读与实现
  9. 【学习笔记】C# 静态类
  10. 原生js实现歌词滚动以及卡拉OK效果