- 博客(23)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 高质量sql语句真实开发中总结下来的
前言本文将结合实例demo,阐述30条有关于优化SQL的建议,多数是实际开发中总结出来的,希望对大家有帮助。1、查询SQL尽量不要使用select *,而是select具体字段。反例子:select * from employee;正例子:select id,name from employee;理由:只取需要的字段,节省资源、减少网络开销。select * 进行查询时,很可能就不会使用到覆盖索引了,就会造成回表查询。2、如果知道查询结果只有一条或者只要最大/最小一条记录,建议用
2021-09-07 15:07:54 222
原创 狂神说:介绍后端工程师压力测试、并发测试实践
Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,支持http、https、websocket、grpc等协议的并发压测。实际实践中建议并发数先在10,100,500,1000左右分别测试下,如果失败率小于1%,再考虑逐步增加并发数量。单接口压测是为了能够在开发阶段对单个接口进行性能测试,快速了解接口的承载能力、发现性能瓶颈,在开发早期就能发现问题,消除性能风险。作为一名优秀的后端工程师,在交付线上环境前,对自己的每一个接口进行简单的性能检测,是一种良好的职业习惯。
2024-08-14 11:48:20 442
原创 2024年mysql最新最全面试题
二叉查找树(二叉排序树、二叉搜索树): 一个节点最多两个子节点(左小右大),查询次数和比较次数都是最小的,但是索引是存在磁盘的,当数据量过大的时候,不能直接把整个索引文件加载到内存,需要分多次IO,最坏的情况IO的次数就是树的高度,为了减少IO,需要把树从竖向变成横向。简言之,它是在每个读的数据行上加上共享锁。③B+树适合范围查找: 这才是关键,因为数据库大部分都是范围查找,B+树的叶子节点是有序链表,直接遍历就行,而B树的范围查找可能两个节点距离很远,只能通过中序遍历去查找,所以使用B+树更合适。
2024-08-13 14:34:12 1286
原创 Nginx 和 Tomcat 集群
Nginx 和 Tomcat 集群的组合是一种常见且强大的架构方案,旨在实现高可用性、可扩展性和高性能的 Web 应用服务。Nginx 是一款轻量级的高性能 Web 服务器和反向代理服务器。它能够高效地处理静态资源请求,并将动态请求转发到后端的 Tomcat 服务器。其优点包括:– 出色的并发处理能力,能够同时处理大量的连接请求。– 低资源消耗,在硬件资源有限的情况下仍能保持良好性能。Tomcat 则是一个流行的 Java Servlet 容器,用于运行 Java Web 应用程序。
2024-07-10 13:36:05 891 1
转载 java常用的加密算法
非对称加密(不可互逆)MD5非对称加密算法。优点:不可逆,压缩性,不容易修改,容易计算缺点:穷举法可以破解**实现String2MD5**public static String string2MD5(String text) { try { //获取摘要器 MessageDigest MessageDigest messageDigest = MessageDigest.getInstance("MD5"); //通过摘要器对字符串的二进制字
2021-04-16 10:18:02 193
原创 数据库的4种隔离级别
数据库的四种隔离级别1.读未提交(Read uncommitted):这种事务隔离级别下,select语句不加锁。此时,可能读取到不一致的数据,即“读脏 ”。这是并发最高,一致性最差的隔离级别。2.读已提交(Read committed):可避免 脏读 的发生。在互联网大数据量,高并发量的场景下,几乎 不会使用 上述两种隔离级别。3.可重复读(Repeatable read):MySql默认隔离级别。可避免 脏读 、不可重复读 的发生。4.串行化(Serializable ):可避免
2021-03-11 19:00:37 291
原创 MyISAM与InnoDB 的区别
区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败;3. InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的(表数据文件本身就是按B+Tree组织的一个索引结构),必须要有主键,通过主键索引效率很高。但是辅助索引需
2021-03-02 08:04:40 266
原创 java中的序列化和反序列化
序列化和反序列化 什么是序列化? 将数据结构转换为字节的过程 什么是反序列化? 将字节转换为数据结构的过程如果想使用序列化和反序列化就要通过 OOS 和 OIS 序列化和反序列化必须要使用一个接口 java.io.Serializable;...
2021-03-02 07:47:38 102
原创 Object对象中有那些方法。
Object()默认构造方法。clone() 创建并返回此对象的一个副本。equals(Object obj) 指示某个其他对象是否与此对象“相等”。finalize()当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。getClass()返回一个对象的运行时类。hashCode()返回该对象的哈希码值。notify()唤醒在此对象监视器上等待的单个线程。notifyAll()唤醒在此对象监视器上等待的所有线程。toString()返回该对象的字符串表示。wait(
2021-03-02 07:36:29 173
原创 mysql数据类型及占用字节数
一、数值类型1,int 类型 4字节 。备注:一个字节8位,即有32位,存在一个符号位。所以能存的数值大小为-2的31次方到2的31次方;2,tinyint 类型 1字节。3,smallint 类型 2字节4,mediumint 类型 3字节5,bigint 类型 8字节6,float 类型 4字节 单精度浮点数7,double 类型 8字节 双精度浮点数备注:float单精度有效数字是7位,double双精度有效数字是16位。double占用的内存是float的两倍
2021-03-01 15:51:19 4873
原创 在linux下设置SSH空闲超时退出时间
一,原因1,降低未授权用户访问其他用户ssh会话的风险2,防止多用户同时登录对文件修改编辑二,如何做?1,编辑/etc/ssh/sshd_config2,将ClientAliveInterval 设置为300到900,即5-15分钟,将ClientAliveCountMax设置为0-3之间。ClientAliveInterval 600ClientAliveCountMax 210分钟空间超时 退出,最多两个活跃用户登录3,拓展ssh暴力破解定义:不断通过ssh尝试密码登录服务器基本
2021-03-01 15:39:46 2952
原创 java中的Exception和Error有什么区别?
首先Exception和Error都是继承于Throwable 类,在 Java 中只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception和Error体现了JAVA这门语言对于异常处理的两种方式。Exception是java程序运行中可预料的异常情况,咱们可以获取到这种异常,并且对这种异常进行业务外的处理。Error是java程序运行中不可预料的异常情况,这种异常发生以后,会直接导致JVM不可处理或者不可恢复的情况。所以
2021-03-01 08:14:54 337 1
原创 java中的final、finally 和finalize 有什么区别?
final 表示一个修饰符,如果用它来修饰一个类,则该类是不能继承的;如果用它来修饰一个变量,则该变量一旦赋值之后就不能再修改;如果用它来修饰一个方法,则该方法不能被重写。finally 用于异常处理,它用来修饰一个代码块,即使前面的代码处理异常,该代码块中的代码也会执行。通常用于释放资源。finalize 表示Object 类中定义的一个方法,它可以重写,用于回收资源。...
2021-03-01 07:48:44 178 1
原创 什么是 Nginx
Nginx是一个web服务器和方向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。优点:(1)更快这表现在两个方面:一方面,在正常情况下,单次请求会得到更快的响应;另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求。(2)高扩展性,跨平台Nginx的设计极具扩展性,它完全是由多个不同功能、不同层次、不同类型且耦合度极低的模块组成。因此,当对某一个模块修复Bug或进行
2021-02-28 19:43:19 8667
原创 最全最新常用的Linux命令
Linux 命令大全1. 绝对路径用什么符号表示?当前目录、上层目录用什么表示?主目录用什么表示? 切换目录用什么命令? 绝对路径: 如/etc/init.d 当前目录和上层目录: ./ …/ 主目录: ~/ 切换目录: cd2. 怎么查看当前进程?怎么执行退出?怎么查看当前路径? 查看当前进程: ps ps -l 列出与本次登录有关的进程信息; ps -aux 查询内存中进程信息; ps -aux | grep * 查询*进程的详细信息; top 查看内存中进程的
2021-02-27 14:02:32 142
原创 redis缓存穿透、缓存击穿、缓存雪崩区别和解决方案
一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。二、缓存穿透 描述: 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案:接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;从缓存取不到的数据,在数据库中也没有取到,这
2021-02-27 13:42:07 109
原创 Java八大基本数据类型
Java中有八大基本数据类型byte类型: byte类型,使用一个字节存放一个数据,一个字节占八位,所以它取值范围是:1000 0000 ~ 0111 1111(-128-127)为什么不是0000 0000 ~ 1111 1111呢?我们都知道1111 1111 是负数的最大值,因为负数在电脑中的存储是用(该数值的绝对值的反码+1表示)而最高位是符号位,1表示负数,0表示正数。所以0111 1111表示正数最大值(换算十进制为127)而负数最大值是1111 1111(按照反码换算成十
2021-02-27 12:21:43 277
原创 解决elasticsearch的跨越问题
修改elasticsearch安装目录下的config/elasticsearch.yml文件加入两行代码,重启elasticsearch**#开启跨域**http.cors.enabled: true**#允许所有**http.cors.allow-origin: "*"就可以解决跨域问题了
2021-02-27 11:35:23 342
原创 什么是死锁,发生原因是什么,如何解决和避免产生死锁?
什么是死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。是操作系统层面的一个错误,是进程死锁的简称,最早在 1965 年由 Dijkstra 在研究银行家算法时提出的,它是计算机操作系统乃至整个并发程序设计领域最难处理的问题之一。事实上,计算机世界有很多事情需要多线程方式去解决,因为这样才能最大程度上利用资源,才能体现出计算的高效。但是,实际上
2021-02-27 10:42:22 1042 2
原创 最新java map集合面试题
1、 你都知道哪些常用的Map集合?HashMap、HashTable、LinkedHashMap、ConcurrentHashMap。2、Collection集合接口和Map接口有什么关系?没关系,Collection是List、Set父接口不是Map父接口。3、HashMap是线程安全的吗?线程安全的Map都有哪些?性能最好的是哪个?HashMap不是线程安全的。线程安全的有HashTable、ConcurrentHashMap、SynchronizedMap,性能最好的是Concurrent
2021-02-27 09:25:27 341
原创 最新docker安装全教程
安装docker教程参考网站:https://developer.aliyun.com/article/110806官方文档:https://docs.docker.com/engine/install/centos/官网:https://docs.docker.com/Docker CE 镜像源站使用官方安装脚本自动安装(仅适用于公网环境)curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun手动安装帮助(阿
2021-02-26 09:42:33 228
原创 zookeeper有什么功能
(1)命名服务在zookeeper的文件系统里创建一个目录,即有唯一的path.(2)配置管理程序总是需要配置的,如果程序分散部署在多台机器上,要逐个改变配置就变得困难。好吧,现在把这些配置全部放到zookeeper上去,保存在 Zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 Zookeeper 的通知,然后从 Zookeeper 获取新的配置信息应用到系统中就好。(3)集群管理检测是否有机器退出或加入, 选举mast
2021-02-26 09:27:55 688 1
原创 Minor GC和Full GC区别?
新生代GC(Minor GC):指的是发生在新生代的垃圾回收动作,因为大多数对象都具备朝生夕灭的特性,所以minor GC非常频繁,一般回收速度也比较快。老年代GC(Full GC):指的是发生在老年代的GC,出现了major GC,经常会伴随至少一次的Minor GC(但非绝对的,在Parallel Scavenge收集器的收集策略里就有直接进行Major Gc的策略选择过程)。Major GC的速度会比Minor GC慢10倍以上。...
2021-02-26 08:25:14 463
冒泡排序怎么排求解求解求解求解求解
2021-04-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人