2018年7月,大三暑假进行时,时间过得飞快,我到这边实习都已经一个月了。

我在没工作之前,我老是觉得生产项目的代码跟我平时自学练的会有很大的区别

以为生产项目代码啥的都会规范很多,比如在接口上会做很多安全性的工作(自学练的时候确实学到的类似的案例),代码设计上会有很多设计模式的应用。

但实际上,并不像想象中那样。跟以前平时练的没有太大的区别,生产项目的代码也写不出花,接口的参数也没啥校验,甚至发现很多地方都是bad smell

最大的区别就是代码量很大,数据库里躺着百来张密密麻麻的表,代码上的Controller/Service/Dao的数量足以占满整个屏幕。

在这个过程中会出现一些之前没学过的技术栈,比如lombok/svn/swagger等,不过这些都很好学,不是什么大问题。

最近令我头疼的是SQL,SQL是真的难写。我本以为我是写Java的,但大多数时间都是去写SQL。

我是很想去理解我所负责的接口对应的底层数据库表是怎么设计的,但始终都没领悟到。

我只知道,我可以在这个表查这个字段,在那个表查那个字段,前端要什么数据,我就把这俩张表给关联起来,一起查出来就好了。

一个接口出去的数据,底层关联5、6张表,是很正常的事。

有的其实我也不知道为啥要关联的,反正看到历史代码是这么写,我就这么复制上去就完了

还是老样子,不乱改历史的代码,只管往里面增加,除非是真的被测试妹子报出bug了。

对接口的性能也没有啥要求,写出来的SQL索引不索引啥的,根本就不需要我操心,接口能出数据,我就是成功的。

有次需求也是令我发麻,既要得到明细的聚合值,又要展示对应明细数据,这可真的难倒我了。

我琢磨了两天,都没把SQL给写出来,后来就直接去问领导了,说这我卡住了,让他帮帮我。

“前两天不是有个需求嘛?既要统计每个售货机货道补货的数量,又要将每个货道的具体商品查询出来,然后要分页显示,我这边SQL没写出来”

他琢磨了会,说帮我看看,然后让我多训练些SQL相关的题。

我又回工位继续琢磨了,训练SQL相关的能力,我想到的就只有LeetCode了。没想到我还要在LeetCode刷SQL啊。

过了几小时,他喊我去他工位,发了一条SQL给我,让我看行不行,符不符合需求。

我都不用跑sql,这明显就不行。(原来他也写不出来)

我对老板说:”不行哦,这只有统计信息,还要展示sku的明细呢,我根据你的SQL,在这基础上我再想想

最后我嵌套多个子查询,组合使用concatgroup_concat完成信息查询,然后在程序里解析字符串完成数据的组装。

这能写出来真不容易,感觉自己Java技术没啥进展,SQL能力倒是提升了不少。

虽说系统貌似用了SpringCloud,但是没看到远程调用的地方,SpringCloud只有在配置文件才能看到他的踪影,不过我在业余的时间里学了下。我终于踏进了分布式/微服务领域的大门了。

其他的就没啥特别的,来来去去都是针对后台做一些增删改查,也没啥机会接触到高级的技术栈。

上班一个月了,领到工资的感觉是真的爽,行政是支付宝转账的,实打实的3500转在支付宝上。

底层程序员》我的故事持续连载中...

呵,老板不过如此,SQL还是得看我的更多相关文章

  1. 从SQL Server CloudDBA 看云数据库智能化

    最近阿里云数据库SQL Server在控制台推出了CloudDBA服务,重点解决数据库性能优化领域问题,帮助客户更好的使用好RDS数据库,这是继MySQL之后第二个关系型数据库提供类似的服务.   数 ...

  2. SQL Server之看懂执行计划

    在SQL Server中,选中一段SQL按Ctrl+L,就可以查看它的执行计划. 上面是一个执行计划的实例,在SQL Server中,执行计划是从右往左看的. SQL Server中,查找数据的方式有 ...

  3. 大数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

    简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...

  4. 数据框架对比:Hadoop、Storm、Samza、Spark和Flink——flink支持SQL,待看

    简介 大数据是收集.整理.处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称.虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性.规模,以及价值在最近几年才 ...

  5. sql server服务看不到,显示为远程过程调用在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误10061

    需要启动sql server服务 启动就可以完成登录了

  6. sql 触发器,看完后对CHK有更深的理解

    触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. 什么是触发器? 触发器对表进行插入.更新.删除 ...

  7. 面试题: 数据库笔试 sql操作 已看 上课的练习题50sql

    2018/5/31 oracle数据库面试笔试试题总结http://www.yjbys.com/qiuzhizhinan/show-308759.html 1/4Oracle数据库1.基础测试选择在部 ...

  8. sql语句怎么看效率?

    1.数据库设计当面: 对查询进行优化,应该尽量避免全表扫描,首先应考虑在where及order by设计的列上加索引. d.索引并不是越多越好,索引可以提高查询效率,同时降低了insert和updat ...

  9. 转://从一条巨慢SQL看基于Oracle的SQL优化

    http://mp.weixin.qq.com/s/DkIPwbDKIjH2FMN13GkT4w 本次分享的内容是基于Oracle的SQL优化,以一条巨慢的SQL为例,从快速解读SQL执行计划.如何从 ...

  10. 从一条巨慢SQL看基于Oracle的SQL优化(重磅彩蛋+PPT)

    本文根据DBAplus社群第110期线上分享整理而成,文末还有好书送哦~ 讲师介绍 丁俊 新炬网络首席性能优化专家 SQL审核产品经理 DBAplus社群联合发起人.<剑破冰山-Oracle开发 ...

随机推荐

  1. P3806 题解

    看到现有的一篇 DSU on tree 的题解复杂度假了,于是我来再写一篇. 首先重新梳理思路,维护每棵子树内深度为某个值的节点是否存在. 维护这个东西可以直接 DSU on tree 也就是把小的子 ...

  2. react上传文件显示上传进度

    Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中.在使用react, vue框架的时候, 如果需要监听文件上传可以使用axios里的onUploadPro ...

  3. vue中的插槽详解

    插槽(slot)插槽在vue中是一种很常见的写法,让父组件可以向子组件指定位置插入html结构,也是一种组件间通信的方式 一共有三种分类:默认插槽.具名插槽.作用域插槽,下面一一根据案例改造说明 1 ...

  4. C# 语言笔记

    1. C# 初识 因为先前已经学过 C++ 了,所以在C# 的学习中,大多只记录和 C++ 不同的点,在学习的过程中,感谢刘铁猛老师的教程,您是我C# 入门的领路人. 1.1 使用 .net cli ...

  5. webgl未使用独立显卡报告2

    楔子 在上一篇文章 <# [https://juejin.cn/post/7074771064286347301] webgl未使用独立显卡报告> 发表后,有读者在公众号给我发了一段评论, ...

  6. my-http-server 静态服务器源码学习实现缓存及压缩

    目录 一.准备工作及流程说明 二.配置命令行 三.设置入口文件和渲染模板 四.my-http-server源码 一.准备工作及流程说明 一看这标题,大家可能一下子没有反应过来,到底是要干什么?那么就先 ...

  7. 数据仓库建模工具之一——Hive学习第四天

    Hive的基本操作 1.3HIve的表操作(接着昨天的继续学习) 1.3.2 显示表 show tables; show tables like 'u*'; desc t_person; desc f ...

  8. 解决IE11兼容问题的一些心得

    IE11中,都不支持es6新特性. vue想要兼容IE11不要写箭头函数, UI框架不要写有箭头的回调函数(编译成es5的时候,会通不过), 使用label将es6编译成es5. 使用typescri ...

  9. java面试一日一题:说下mysql中的binlog

    问题:请讲下mysql中的binlog 分析:该问题主要考察对mysql中binlog的理解及使用场景? 回答要点: 主要从以下几点去考虑, 1.什么是binglog? 2.binlog的使用场景是什 ...

  10. (六)Redis 消息队列 List、Streams

    Redis 适合做消息队列吗?有什么解决方案?首先要明白消息队列的消息存取需求和工作流程. 1.消息队列 我们一般把消息队列中发送消息的组件称为生产者,把接收消息的组件称为消费者,下图是一个通用的消息 ...