请选择 进入手机版 | 继续访问电脑版

技能树.IT修真院-免费在线1对1辅导

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7439|回复: 9

[任务发布] 【Java官方Task】【第一级】Java工程师篇

[复制链接]

666

主题

46

听众

8594

积分

发表于 2015-10-13 16:30 |显示全部楼层
本帖最后由 暗灭 于 2015-12-15 18:19 编辑

前言

本秘籍是  [最强IT特训营] 的线上部分。
因为很多朋友无法来到北京,也没有办法拿出一整月的时间来参加特训,所以根据线下特训,总结出来一套Task任务模板【青云天书】。

修真院并不提倡看视频,看书的方式去学习,一切能力和知识都来自于你真正完成过的项目,所以在修真院里的修真方式永远是这样的。“接受Task,了解需要掌握的技能,查看攻略,自行寻找解决方案,遇到问题,讨论和向学长求助,完成任务,提交给学长审核,执行下一个任务。”



一 免费


官方Task免费开放。Task数目在10~15之间
按照此Task序列,可以在一个月之内完成Java的新手任务。







二 讨论


如果遇到问题,请加群讨论。

A。IT技术教学候选营 185354188【只讨论跟Task相关的问题】
B。IT技术交流群 421010196 【初级程序员交流】



三 解锁

本贴不允许回复。领完任务,并完成以后,可以在论坛上传代码,或者是直接放链接。
有人完成任务之后就解锁下一级任务。


Task的整体设置如下:


1~3           搭建基础环境,学会Eclipse/Idea,Svn/git,linux Shell,dns/dnspod,Maven,Jetty,Host,JUnit,Mybatis/jdbc/,Mysql,SecureCRT,Navcat ,能够读写数据库,学会和Jenkins集成,学会搭建nexus私服务。
4~6           学会完成JSP编写,会使用Tiles,会配置Filter,拦截器,会使用JspTagLib,Rest,生成Json接口,会定义接口,部署脚本, 能够使用Memcache,Redis,能够查看日志,监控性能,错误日志编写
7~9           学会短信通道,邮件发送,图片上传,权限控制,学会使用Tuscany/Spring RMI 完成分布式服务的部署,学会RMI。
10~12       学会使用MongoDB做地理位置的查询,学会使用ElasticSearch做数据的索引,对比ElasticSearch+MongoDB和Mysql+Memcache的方式
13~15       学会QPid做消息队列,学会ETL的编写,学会独立设计DB,架构,部署,监控。



四 目标


通过本系列任务,可以掌握以下内容。





在北京地区,掌握以上技能以后,入职后薪水范围在6K~10K之间,已有线下二期学员入职。





五 资料  

    每个Task会提供相关的指引,和简单的攻略,但是期望各位修真院的学员明白,独立解决问题的能力很重要,相信我,不会给你安排各种送死的任务。


     推荐资料:

     修真院并不推荐先去阅读资料,除非是任务中指定说明,而是希望在遇到一些困惑的时候,去翻阅资料。


六 讨论
   
    群里会有同期的学员跟你一起学习,所以遇到问题可以一起讨论。


七 求助

   线下和线上已经完成了任务的人,都会是你的好老师。




八 推荐


   北京的学员,顺利完成任务,经由学院鉴定通过,可以通过“升云梯”推荐给相关公司。
   “升云梯”是一个人才推荐计划,经由“升云梯”推荐的学员,可以直接跳过一面或二面,直接到达用人部门手里。“升云梯”所选的各个合作方,都是精选的好门派,不仅有较强的技术氛围,更重要的是可以帮助学员顺利成长,积累人脉。



九 规范


    暂无


十 版本

    JDK 1.7
    Maven 3.3.1
















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-10-13 17:43 |显示全部楼层
本帖最后由 暗灭 于 2015-11-27 10:59 编辑

Task  1

              目标:完成学员报名(格式)的DB设计,并且写代码,能够读写数据库
              意义:读写DB是Java工程师必备的技能
              步骤:1.参考线下学员报名填写的资料,设计数据库,数据库要有三个基本的字段,ID(自增Long),create_at,update_at(所有的时间都用Long)
                        2.搭建本地JDK(7)和Maven(3)环境,使用Eclipse或者是Idea创建Maven项目
                        3.编写Junit,使用Mybatis读写数据库
                        4.单元测试通过

              要求:1.明确Service和Impl的差别
                        2.所有的方法都要写单元测试。CRUD和列表查询。
                        3.使用Spring 配置IOC
                        

              掌握技能:     
                               1.JDK,Maven配置         
                               2.Mysql,Navcat/heidisql的使用
                               3.Junit
                                                  
              教程:
               


              时间:1~3天,看个人情况

         















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-10-28 19:12 |显示全部楼层
本帖最后由 暗灭 于 2015-11-9 08:56 编辑

Task  2

              目标:定制接口格式,创建一个WEB工程,能够提供Rest的数据接口
              意义:接口定义是Java工程师和前端交互的必备要素。
              步骤:1.参考接口定义格式示例,定义Rest接口格式
                        2.创建Maven WEB 工程
                        3.使用SpringMVC完成REST接口                                               4.使用Task1中的Service完成接口的实现
                        5.使用jetty:run命令 启动Jetty服务
                        6.使用PostMan/dhc测试自己写的接口,确认接口可以正常使用。

              要求:1.代码由SVN或者是Git管理
                        2.使用SpringMVC完成Rest,使用JsonTagLib完成Json接口。
                        3.使用Log4j记录日志
                        

              掌握技能:     
                               1.spring mvc        
                               2.rest 接口的定义
                               3.Jetty的使用
                               4.Log4j
                               5.JsonTagLib
                                                  
              教程:Controller 相关的,可以参考我之前做的一个通讯录的小例子。代码可能并不能正确运行,我记得是有几个包不能用了。还是看如何生成Json以及如何使用Spring MVC和Rest
               


              时间:3~5天,看个人情况

         

















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-11-1 17:08 |显示全部楼层
本帖最后由 暗灭 于 2015-11-27 11:38 编辑

Task  3

              目标:正式部署代码到线上服务器,学会部署脚本,查看日志,统计性能。
              意义:后端工程师永远要记着,代码只是最简单的工作,要时时刻刻都对代码的运行情况了如指掌。
              步骤:1.执行Maven Install命令,打出来War包
                        2.寻找云服务器(自己找或者是去论坛申请),Linux系统,配置好数据库,创建好部署目录/data/XXX-home/,使用Resin或者是Jetty或者是Tomcat,写好start.sh,stop.sh,deploy.sh 能正常启动和访问,使用IP+端口号能正常访问Task2中的REST请求。
                       3.配置Nginx,使用子域访问。                                         4.查看Nginx日志,编写脚本统计访问次数,统计响应延时。
                        5.查看Resin日志,统计访问DB时间,Controller处理时间。
                        6.使用Top命令查看WEB服务占用内存和CPU
                         7.将以上数据都贴到日报里去。 执行时间统计要分成 执行了100次。其中的分布是怎么样的。如20MS有多少次。10MS有多少次。
                        

              要求:1.对访问DB的时长和接口访问时长了如指掌。
                        2.编写出启动,停止,重新部署脚本,能够通过Nginx配置域名访问(可以本地配置Host解决备案问题)
                        
                        

              掌握技能:     
                               1.Resin,SecureCRT,Vim,Tail,Cat等脚本。      
                               2.Nginx和Resin日志查看
                               3.Top
                              
                                                  
              教程:
               


              时间:1~3天,看个人情况


             附加任务:找师兄做一次CodeReview,把CodeReview结论贴在日报里,并做相应的更改。

         





















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-11-27 10:56 |显示全部楼层
Task  4

              目标:完成一个简单的WEB网站,熟悉Tiles框架,了解Java后台开发常用的两种模式,一种是提供Json数据,一种是套静态页面。
              意义:套页面在短时间之内还会是WEB网站的主流开发方式,尽早熟悉常用的框架Tiles和Tag标签。
              步骤:1.找到一个通关任务的CSS学员,要到Task15和Task14中的静态页面,将其中的静态内容变成动态内容,设计DB。
                        2.用Tils来完成页面的复用配置,用Tag标签来处理时间的转换,可以自行写一个JSP的时间处理Tag,可以根据传入的时间格式把Long变成对应的格式。                       3.部署到云服务器上。   
                        4.写一篇Tiles的学习心得,放到日报里,转发到自己的自媒体上,记着末尾加上IT修真院的宣传。

              要求:1.分出头部,左边栏,右边栏和底部
                        2.宣传修真院的时候一定要夸老大帅
                        
                        

              掌握技能:     
                               1.Tiles,JSP Tag的使用      
                             
                                                  
              教程:
               


              时间:1~3天,看个人情况



         





















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-11-27 11:10 |显示全部楼层
Task  5

              目标:修改Task4的内容,添加登录注册的模块,并完成对用户是否登录的判断
              意义:了解如何使用Cookie完成登录的验证,以及了解拦截器的使用
              步骤:1. 使用DES对用户ID和登录时间加密,生成Token,放入Cookie中,拦截器里通过Cookie中判断Token的有效性来判断用户是否登录
                        2. 修改Task4中的两个页面,一个设为用户不登录可以访问,一个设为用户必须登录才可以访问。要求用户必须登录才能访问的url统一增加前缀 /u/
                        

              要求:1.登录要使用MD5加盐
                        2.简单了解DES的算法,同样写出心得,放到自己的自媒体(QQ,微博,微信等,记得附上IT真院的介绍,链接,地址,自己的学号,以及称赞老大帅)
                        
                        

              掌握技能:     
                               1.md5,des                                  2.cookie
                               3.拦截器
                                                  
              教程:
               


              时间:1~3天,看个人情况



         






















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-11-27 11:30 |显示全部楼层
Task  6

              目标:通过压力测试来理解缓存和并发的概念。
              意义:通过压测来深刻理解如何做性能优化
              步骤:1.下载JMeter,压测自己的JSP,查看TPS数据,调整并发数,压到程序挂掉为止。
                        2.加上Memcache,在新建数据的时候同时维护好缓存(没有新建数据接口就自己加上,可以分成是压测JSP和Json接口两种方式) ,确定数据没问题,重新压测服务器,测出90%的线在哪里                        3.停止Memcache进程,观察压测数据。部署两台WEB,使用Nginx的Upstream来做负载。重新压测。   
                        4.将Memcache替换成Redis,重复以步骤。最后生成一份压测报告,同样的发布到自媒体里。

              要求:1.模拟访问数据,最好数据会有一些变化
                        2.模拟数据穿透缓存的情况
                        3.性能报告要包括:A.系统当机时的负载 B。TPS稳定时的响应时长 C.系统可以在500MS返回时的TPS
                        
                        

              掌握技能:     
                               1.Tiles,JSP Tag的使用      
                             
                                                  
              教程:
               


              时间:1~3天,看个人情况



         






















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-12-15 12:10 |显示全部楼层
Task  7

              目标:常用的第三方API操作
              意义:短信,邮箱,图片等都是最常见的API操作,学会查看第三方的API文档,学会快速搭建第三方的Demo,可以很快的就掌握各种开源API的使用方式
              步骤:1.学员报名系统加上手机,邮箱,头像的字段,接口中添加对应的字段。
                        2.去容联申请免费的短信通道(或者是收钱的我不知道),SendCloud申请邮箱的,去金山云或者是七牛云去申请图片存储的。所有的账号和密码都只能通过Spring的配置文件完成。                        3.分别按照Demo,测试短信,邮件,图片能否正常上传,账号是否可以正常使用,再去集成到自己的学员报名系统中。   
                        4.分别做好异常处理,要知道第三方Api是很容易出问题的,最常见的方式就是当出现异常的时候,记录错误日志,然后每天晚上跑脚本,看看当天的邮件,短信,图片上传的失败率有多少。
                        5.编写图片迁移程序:假设是从金山云迁到七牛云,以及从七牛云迁到金山云。

              要求:1.追踪短信的发送进度,了解第三方的返回值的含义,做好短信通道的防攻击策略,邮箱的防攻击策略
                        2.了解第三方图片存储如何做缩略图,防盗链等,写出来两种不同的云存储API的功能对比,能够通过配置文件快速切换使用哪种图片存储
                        3.能够将数据做正常迁移
                        
                        

              掌握技能:     
                               1.短信/邮箱使用,防攻击的策略(IP,时间,验证码,次数)
                               2. 云存储的使用。
                             
                                                  
              教程:
               


              时间:3~5天,看个人情况



         






















我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-12-15 18:29 |显示全部楼层
Task  8

              目标:使用SpringRMI完成WEB端和Service端的分离
              意义:Web端和Service端的分离是现在分布式系统中最常用的方式,一般而言,会使用RMI,JsonRPC,Thrift,ProtocolBufer等各种通讯协议,对纯Java来说,RMI是最简单的。
              步骤:1.去Spring的官方网站查找Spring RMI 的官方手册,将原有学员系统中Service中拆分出来,变成一个RMI的Service。
                        2. 在原来的WEB中调用Service。
                        3. 部署两台Service,在WEB中随机访问任意一台Service。                        4.部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service



              要求:1.任何一台WEB/Service 挂掉,不影响正常使用
                     
                        
                        

              掌握技能:     
                               1.Spring RMI
                               2. Nginx Upstream
                             
                                                  
              教程:
               


              时间:3~5天,看个人情况



         
























我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

666

主题

46

听众

8594

积分

发表于 2015-12-15 18:32 |显示全部楼层
Task  9

              目标:使用Tuscany完成WEB端和Service端的分离
              意义:Tuscany是一个设计精良的SCA框架,不仅支持RMI,还支持Json,WebService等,以及可以动态扩展其他的协议。
              步骤:1.寻找Apache Tuscany的官方手册,查看如何配置Tuscany和Spring
                        2. 将原有的Spring RMI更改为Tuscany的RMI,WEB端更改为Tuscany的调用方式
                        3. 部署两台Service,在WEB中随机访问任意一台Service。                                               4.部署两台WEB,通过Nginx配置两台WEB随机访问,两台WEB可以随机访问两台Service



              要求:1.任何一台WEB/Service 挂掉,不影响正常使用
                     
                        
                        

              掌握技能:     
                               1.Tuscany
                               2.SCA的概念
                             
                                                  
              教程:
               


              时间:3~5天,看个人情况



         

























我在你身边 灰飞烟灭 你在我心中 犹如初见
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

QQ|葡萄藤轻游戏|博客|手机版|Archiver|技能树.IT修真院论坛 ( 京ICP备13005880号

GMT+8, 2019-8-24 15:33 , Processed in 0.127056 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部