java后端3个月工作总结
引言
大三开始来实习 距今已经三个月了 眼看这个项目要做完了 这篇文章对此次后端开发经历的总结 也希望对想要进入码农这个行业的各位有一点学习思路把~
三个月的时间非常感谢在工作中对我有指导的各位同事
再次感谢
java语法
java纯是一门面向对象的编程语言,一提起面向对象,都知道抽象、封装、继承、和多态。但是在实际工作中体现在哪里外行人就不好说了...
-
多态:说一个 最常见的 @Override 重写
什么是重写? 得讲讲继承 既然讲继承 也得讲讲封装,封装都讲了,再提一嘴抽象吧...
我觉得这就是java中面向对象编程的精华所在。耦合...我也不知道自己说的对不对,算我个人理解吧。
耦合太强 这是在项目中绝对不能的,太过于耦合 一步错 整个程序都不能run起来 那是不行的
一定要解耦...
要让我解释面向对象 百度比我解释的好...
-
集合:List,set,map
我在学校就学过List集合 剩下这个两个集合是我在工作中学会的
List的顺序性(封装的方法)
•增加元素:在线性表中指定位置插入指定元素
•删除元素:删除线性表中指定位置的元素
•修改元素:修改线性表中指定位置的元素
•查找元素:返回指定元素在线性表中的位置
•遍历元素:依次访问线性表中每个元素
set的无重复(可有序,但不能重复,没有下标概念)
LinkedHashSet:使用链表实现,元素的顺序和放入的顺序一致
HsahSet:使用数组实现,元素的顺序和放入的顺序无关
List与set都是继承于****Collection接口‘
Map的键值对
•键对象(key):不能重复
•值对象(value):可以重复
•HashMap:无序的键值对的集合,为Hashtable的替代品,比HashTable效率高
•LinkedHashMap:使用链表实现的键值对的集合,键值对的顺序和放入的顺序一致
jdk 1.7 与1.8的HashMap 是不一样的
-
键值遍厉
Iterator it = set.iterator( ); while( it.hasNext( ) ) { **Map.Entry** **entry** = ( Map.Entry )it.next( ); System.out.println( **entry.getKey****( )** ); System.out.println( **entry.getValue****( )** ); }
-
增强for
Student[ ] array = … // 创建数组 for ( Student s : array ) { System.out.println( s ); }
用不了循环的地方 试试递归!
-
类型转换!!!
这个太重要了 前端没准给你传个什么类型的数据,没准前端要个什么类型的数据,要个什么样的数据结构...
string转long,
List转string,long,Interger等等等等
我记不住全百度...(等有时间看看源码怎么实现的...)
-
封装
这个还是挺重要的 百度上,git上扣下来的工具类,自己再封装一下用着可舒服(哈哈哈)
这个怎么封装 不附加代码了
-
异常
try { log.info("try了?没问题奥铁子,反正不报错,不知道写的对不对"); } catch(Exception e) { log.error("天天就知道写bug!这个接口错了 赶紧看看: lubrication, type:{}" type, e); }
说起这个异常
System.out.println("");
System语句java规范不让用...
那就整个 @slf4j (四拉风否借~哈哈哈)
maven仓库里配置代码 我懒得找~
-
多线程
这个面试官很喜欢这个东西,非常抱歉,本人还真研究过这个...
1.集成Thread类,重写(这里的重写指的是override)run方法,调用start方法执行。
2.实现Runable接口,实现run方法,以Runable实例创建thread对象。
3.实现Callable接口,实现call方法,FutureTask包装callable接口,FutureTask对象创建thread对象,常用语异步操作,建议使用匿名内部类,方便阅读和使用。
额外需要说明的是:
1.理解thread的join方法;
2.不要认为volitate是线程安全的(不明白原因的建议去看jvm运行时刻内存分配策略);
3.sleep时间片结束后并不保证立马获取cpu。
4.ThreadLocal能够为每一个线程维护变量副本,常用于在多线程中用空间换时间。
我博客还有我初期学习时候写的几个语句
没搞明白是什么一回事呢...懂一点基础 不过还挺有意思的
-
线程安全
目前不太了解,不能乱讲...
消息队列
-
RabbitMQ
我用过的是这个中间件 不知道别的好不好用...
没有啥太多的话 常用的四种工作模式多用用就会了
简单,工作,订阅,路由
跟web1.0那时候链接数据库一样
Redis
-
这个怎么讲呢 好用,得劲,持久化,减少数据库的压力
整他就完了!
List role = new List<> sysRoleService.listByMap(map);//调用DAO redisUtils.set("options_role", role, 3600); //先存 ------------------------------------- //再取 redisUtils.hasKey("options_role");//get时候你得来个key redisUtils.get("options_role");
简单点~写代码的方式简单点
Mysql
这个太顶了! 我太爱了
左中右链接,多表联查,查索引,建索引
有一说一Navicat真好用 就是有点贵~
再有一说一 数据库建表设计是门艺术
再再有一说一 谁建表不好好建 不考虑周到 我可能要吐血了...(数据库改版一次...重写好多sql语句)
再再再问一句 脏数据处理有什么好办法...
spring全家痛!!!没错是痛!!!
- 就是一个框架
spring boot 轻量级启动框架
spring security 用户权限管理,根据角色和用户,实现UserDetailsService,进行自定义权限管理。
spring task 代码级定时任务,注解方式,使用起来非常方便。需要注意的是,如果某次定时任务出了异常而没有进行处理,会导致接下来定时任务失效。如果各个任务相互独立,可以简单用try,catch包围(之前就吃过这方面的亏)。
spring data 注解方式定义实体,属性等
spring mvc 简单明了的mvc框架。url传值、数组传值、对象传值、对象数组等传值类型,上传/下载文件类型需要注意。
spring RESTful 注意命名,对命名要求很严格。
这个RESTful挺好 命名规范很重要 瞎起名真不行
spring shell 命令行方式执行命令,救火、导入导出数据等用起来非常方便、制作报表。
- springboot常用注解我有篇word文档 整理一下也给大家做个开源
Mybatis
- 得劲,好用 用就中了
- 我喜欢用注解开发 不喜欢用xml文件
- 注解好用 别弄那个xml不当jojo了(轻喷~)
- 没少踩坑(脏数据太多...)
Git 版本控制
版本回溯简直不要太好用
.代码冲突解决方案
.分支管理。
对于某个稳定版本上线后,如果在此基础上开发新功能,一定要新建分支,在新分支上提交代码,最后在新版发布时合并分支。修改运营环境bug切换到主分支进行修改(这个东西拆过坑,idea中切来切去分支代码切丢了)
vue.js+node.js
本地装上用来测试接口比swagger好用
未来规划与展望
挣钱挣钱挣钱
年纪轻轻当然要多学东西了~~
深入了解一下线程安全 深入了解多线程开发 深入了解AOP
学习oracle数据库
学习前端一些框架 vue.js ,jQuery 补足短板 (找个时间写点css 给博客这个弄得像那种高级程序员的感觉...)
不想干全栈的后端工程师不是一个好实习生(没毕业的)
实习生->初级开发->中高级开发->全栈->架构
咳咳咳!
float x, y;
for (y = (float)1.5; y > -1.5; y -= 0.1) {
for (x = (float)-1.5; x < 1.5; x += 0.05) {
float a = x * x + y * y - 1;
if ((a * a * a - x * x * y * y * y) <= 0.0) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}