Java程序员日常积累-向大神学习(一)

网友投稿 557 2022-05-30

--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)、系统复杂性增加

Java程序员日常积累-向大神学习(一)

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 自定义生成注释

https://segmentfault.com/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 开发者

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:特征工程——文本特征
下一篇:在120篇系列专栏中,才能学会 python beautifulsoup4 模块,7000字博客+爬第九工场网
相关文章