java开发3个月总结

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();
}
原文地址:https://www.cnblogs.com/laowt/p/14151736.html