admin管理员组文章数量:1794759
Java程序员日常积累
--ping端口需要装服务telnet命令 --、面试题:MySQL性能调优——索引详解与索引的优化 ~、索引优化,可以说是数据库相关优化、理解尤其是查询优化中最常用的优化手段之一。 所以,只有深入索引的实现原理、存储方式、不同索引间区别,才能设计或使用最优的索引,最大幅度的提升查询效率! ~、BTree索引:使用最频繁的索引类型 MyISAM引擎索引结构:存放的并不是实际的数据记录,而是数据记录的地址。 特点:不支持事务、只支持表级锁、不支持外键、保存数据库表中表的具体行数 InnoDB引擎索引结构:存放的就是实际的数据记录 四大特性:事务性存储引擎、支持ACID特性、INNODB 支持行级锁、innodb 状态检查 应用场景:innodb 适合大多数的OLTP应用,支持全文索引和空间函数 MySQL的存储引擎InnoDB使用重做日志(redo log)保证一致性与持久性,回滚日志(undo log)保证原子性,使用各种锁来保证隔离性。 ~、Hash索引:使用Hash索引的数据库并不多 优点:索引的检索效率非常高,可以一次定位,不像B-Tree索引需要进行从根节点到叶节点的多次IO操作。 缺点:1、Hash索引仅仅能满足等值的查询,范围查询不保证结果正确 2、Hash索引不能被排序 3、Hash索引不能避免表数据的扫描 4、Hash索引在发生大量Hash值相同的情况时性能不一定比B-Tree索引高 5、Hash索引不能使用部分索引键查询 ~、Full-Text索引: 目前MySQL中只有MyISAM存储引擎支持,并且只有CHAR、VARCHAR、TEXT类型支持。 判断是否应该建索引的条件 1、较频繁的作为查询条件的字段应该创建索引 2、唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件 3、增、删、改操作较多的数据库字段不适合建索引 --、遇到程序报错要知道两个问题: 1、在哪报错? 2、报什么错? --、MySQL数据库查看大小 //各个数据大小 数据单位M select table_schema ,round(sum(data_length/1024/1024),2) as size from information_schema.tables group by table_schema order by size desc;
//数据库整个大小,单位M select round(sum(data_length/1024/1024),2) as size from information_schema.tables;
--、是否应该使用 MongoDB? *、应用不需要事务及复杂 join 支持 *、新应用,需求会变,数据模型无法确定,想快速迭代开发 *、应用需要2000-3000以上的读写QPS(更高也可以) *、应用需要TB甚至 PB 级别数据存储 *、应用发展迅速,需要能快速水平扩展 *、应用要求存储的数据不丢失 *、应用需要99.999%高可用 *、应用需要大量的地理位置查询、文本查询
如果上述有1个符合,可以考虑 MongoDB,2个及以上的符合,选择 MogoDB 绝不会后悔。
--、MongoDB 比较适用哪些业务场景? *、游戏场景,使用 MongoDB 存储游戏用户信,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新 *、物流场景,使用 MongoDB 存储订单信,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。 *、社交场景,使用 MongoDB 存储存储用户信,以及用户发表的朋友圈信,通过地理位置索引实现附近的人、地点等功能 *、物联网场景,使用 MongoDB 存储所有接入的智能设备信,以及设备汇报的日志信,并对这些信进行多维度的分析 *、视频直播,使用 MongoDB 存储用户信、礼物信等
--、CI(持续集成)/CD(持续交付/持续部署)介绍: 互联网软件的开发和发布,已经形成了一套标准流程,假如把开发工作流程分为以下几个阶段: 编码 --> 构建 --> 集成 --> 测试 --> 交付 --> 部署 --、NVM介绍及使用:维护多个版本的node,在同一台PC机上可以随意切换node版本。 --、Advanced Packaging Tool(APT)是Linux下的一款安装包管理工具,是一个客户/服务器系统。
--、sails其实是内置的express,所以如果你之前使用的是express,那么你将很快的入门该框架, 因为sails基本的语法同express相同,只不过sails集成了很多其他工具,使得我们开发更简单。
--、软件文档编写规范 标题:宋体 二号 加粗 一级标题:黑体三号 二级标题:黑体四号 正文:仿宋_GB2312 四号 1.5倍行距,首行缩进2个字符 --、lomak hutools p3c --、端口号被占用问题: 1、根据端口号查找对应的进程号 netstat -ano | findstr 80 //列出进程极其占用的端口,且包含 80 2、据进程号寻找进程名称 tasklist | findstr 9268 3、杀死80的进程号 taskkill -PID <进程号> -F //强制关闭某个进程 --、学习新知识之前一定要搞明白的几个问题: 1、有什么用?好处 2、有什么弊端?坏处 3、比较同类知识优缺点。 以上三个问题被也要背下来
--、学习MQ: 1、作用: 1)、系统解耦 2)、异步:将消写入消队列,非必要的业务逻辑以异步的方式运行,加快响应速度 3)、流量削峰 2、坏处: 1)系统可用性降低 2)、系统复杂性增加 3、对比 特性 ActiveMQ RabbitMQ RocketMQ kafka 开发语言 Java erlang java scala 单机吞吐量 万级 万级 10万级 10万级 时效性 ms级 us级 ms级 ms级以内 可用性 高(主从架构) 高(主从架构) 非常高(分布式架构) 非常高(分布式架构) 功能特性 成熟的产品,在很多公司得到应用; 有较多的文档;各种协议支持较好 基于erlang开发,所以并发能力很强,性能极其好,延时很低;管理界面较丰富 MQ功能比较完备,扩展性佳 只支持主要的MQ功能,像一些消查询,消回溯等功能没有提供,毕竟是为大数据准备的,在大数据领域应用广。
--、Vuex概念理解 在SPA单页面组件的开发中 Vue的vuex和React的Redux 都统称为同一状态管理,个人的理解是全局状态管理更合适; 简单的理解就是你在state中定义了一个数据之后,你可以在所在项目中的任何一个组件里进行获取、进行修改, 并且你的修改可以得到全局的响应变更。 --、约定大于配置
--、entity:ocr/.. dao:ocr/.. --、全部注释的文件: OcrDocumentAnalyzeKeywordServiceImpl.java AbstractCustomsCreate.java OcrIntelWaybillServiceImpl.java
--、git使用顺序: 1、本地先commit到本地 2、pull=>master pull,同时注意刷新 3、冲突:解决冲突 4、commit本地 5、push 到自己的分支:注意修改分支 6、确认没有冲突-->请求合并到master主分支
--、权限控制:还用不用移? 2019年4月26日: --、code + name 放在一张表里面 维护压力大 code在主表,name放在数据展示表里面 --、字段不明,立马提出来,不要私自套 --、msql 对同一张表里面的字段数是由限制的 --、制单主表一对一的,创建时必须都要创建,不管空不空 --、表明命名规范 表开头:T 视图开头:VW --、层级; controller:不要写太多的业务逻辑,把业务逻辑放在service层 service dao --、数据来源: 来源一:先整理基础数据到数据库 来源二:最值钱的技术点: 1、ocr:读PDF和图片 2、excel表 --、MyBatis Generator 自定义生成注释 segmentfault/a/1190000016525887
--、传参:个数尽量要少,扩展性要好(增加/减少属性方法方法不需要改)
--、代码规范:尽量少的访问数据库 查询字典,先全部查出来放到List里面,然后根据需要遍历出符合要求的数据格式和数据类型要求。
--、防止二次提交 前端:通过JavaScript屏蔽提交按钮(不推荐) 后台:{ 1、利用Session防止表单重复提交(推荐) 2、使用AOP自定义切入实现 3、使用redis计数器防止并发请求 } 数据库: 给数据库增加唯一键约束(简单粗暴) --、jQuery在页面上找到所有格text类型、可见、不是readonly及不是disabled的input框, 每次输入完之后自动跳到下一个input框
if (flag != false) { var inputs = $("input:text:visible").not("[readonly]").not("[disabled]"); for (var s in inputs) { if ($(inputs[s]).attr("id") == dateOfPort + "_text") { $(inputs[parseInt(s) + 1]).focus(); return false; } } }--、pojo里面关于金额的字段类型要用BigDecimal,不要用double,更不能用float 主要考虑到精度的问题,涉及金额的都要力求做到一点不能错
--、mysql里面的in字段可以写3000个值,oracle数据量里面的in字段可以写1000个值 --、上传单据加文件大小属性
--、权限问题: 1、分为:行为权限和数据权限 行为权限:把每一种操作看作一个行为。 数据权限:要用一张表来关联用户要看那些数据的关系。表里面要有部门id,组id等等。
--、JPA学习 1、增删改 2、查询: 》普通查询 》关联查询:只支持链式关联查询 》查询处对象之后,不要使用set方法修改查询出来的对象, JPA在事务中碰到异常会把查询的对象回写到数据库中。 3、JPA和Mybatis的事务是一样的
版权声明:本文标题:Java程序员日常积累 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686818524a106691.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论