前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >走过的坑-Java开发

走过的坑-Java开发

作者头像
CBeann
发布2023-12-25 15:53:50
1090
发布2023-12-25 15:53:50
举报
文章被收录于专栏:CBeann的博客CBeann的博客

1不要在docker里存数据

   千万不要在docker里装mysql,因为docker容器停了以后,里面的数据就没有了,即使有一些操作可以使得docker映射到操作系统上,但是还是十分不建议用docker存数据、日志等,因为你能保证你就配置的没问题吗。

2不要在MySQL中做复杂的逻辑

   不要在MySQL中做复杂的逻辑,各种group by,各种like,各种多表查询。举一个很简单的例子,有一张站点表和站点日志表,查询站点的报道率(某站点日志表中某字段不为空的数量/某时间段的总数量),其实这个逻辑在MySQL中可以做,在Java的业务层也可以做,这个时候我推荐在Java的业务层做。有两个好处,其一为如果在MySQL中运行复杂的SQL,会拖垮整个MySQL的效率;其二你的SQL语句别人看不懂啊。

3 注意端口安全问题

  一般情况下MySQL的端口为3306,但是当你在部署的时候,建议改一个端口,否则当一个人拿到一个服务器的账号很自然就的就去3306端口访问一下,其实还是有安全问题的。

4 能一次查询的别多次查询

  举一个例子,查询所有的成绩并且带班级信息,一般的逻辑就是查询所有的学生,然后遍历学生信息,对每一个学生的班级信息查询数据库,这样有多少个学生就查多少次班级表,其实完全可以一次把所有的班级信息查询出来,存到map里,然后用的时候直接在map里取。

案例

代码语言:javascript
复制
List<Student> students = studentDao.select();
    for (Student student:students){
      student.setClassName(classNameDao.selectBy(student.getClassId));
    }

优化

代码语言:javascript
复制
List<ClassName> classNames = classNameDao.select();
    Map<Integer, Object> classNameMap = new HashMap<>();
    for (ClassName className:classNames){
      classNameMap.put(className.getId(), className);
    }
     
    List<Student> students = studentDao.select();
    for (Student student:students){
      student.setClassName(classNameMap.get(student.getClassId));
    }

6 千万不要没事格式化代码

   千万不要没事格式化代码,因为也许你的代码风格和别人的不一样,所以你只需要格式化自己写的方法和类就行了,否则合并代码很难受。

7 MySQL数据备份有两种,一种是binlog主从复制,一种是查询并插入

    后者的话建议查询的时候加一个limit,因为如果你的程序1号断了,现在7号了,你一重启的程序的话会查询大量的数据,增加MySQL的压力。

8一定要看文档

一顿操作猛如虎,一看文档和要求的不一样的

9打日志也是个技术活

10不要修改表的名字和字段,可以添加,但是不能修改和删除

+∞ 持续更新

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1不要在docker里存数据
  • 2不要在MySQL中做复杂的逻辑
  • 3 注意端口安全问题
  • 4 能一次查询的别多次查询
  • 6 千万不要没事格式化代码
  • 7 MySQL数据备份有两种,一种是binlog主从复制,一种是查询并插入
  • 8一定要看文档
  • 9打日志也是个技术活
  • 10不要修改表的名字和字段,可以添加,但是不能修改和删除
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档