自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 count(*)、count(1)、count(字段)的区别

count(1) 和 count(*)count(1)走聚簇索引,count(*)会被优化器优化指定到那个字段。count(1)和count(*)基本没有差别count(1) 和 count(字段)count(1) 会统计所有的记录数,包括字段为null的记录count(字段)会统计字段在表中出现的次数,忽略字段为null的情况count(1) 和 count(*)和 count(字段)的区别从执行效果上:count(*)相当于统计行数,包括值为null的列,count(字段)不会统计值为

2021-07-06 00:03:18 273

原创 mysql索引分类

概述索引是一个数据库软件非常重要的一部分,本文来捋一下mysql数据库中的索引分类。从数据结构角度B+树索引HASH索引FULLTEXT索引(全文索引)R-Tree索引(空间索引)从物理存储角度聚簇索引非聚簇索引从逻辑角度普通索引唯一索引主键索引组合索引空间索引总结本文从数据结构、物理存储、逻辑上对索引进行了分类。要注意的是,覆盖索引并不算一种索引,虽然名字跟索引相关,但是它表示的是一个查询方式,是一种避免回表操作的高效查询方式。...

2021-07-02 21:24:11 169

原创 java内存泄漏情况及排查方法

概述java的JVM引入了垃圾回收机制,垃圾回收器会自动回收不再使用的对象,对于回收对象而言,首先要明确哪些对象可以回收,以及哪些对象不能回收,具体的方法有引用计数法和可达性分析法。由于代码的实现不同就会出现各种各样的内存泄漏问题,内存泄漏的实质就是本应该回收的对象因种种原因被JVM认为是不可回收的,因此就继续占用内存,导致可用的内存越来越少,直到内存溢出。通过本文来总结下导致内存泄漏的常见情况以及内存泄漏的排查方式。内存泄漏的情况静态集合类java中提供种类丰富的集合容器对象,如HashMap、

2021-07-02 21:22:24 663

原创 LeetCode 1094.拼车问题

题目描述:https://leetcode-cn.com/problems/car-pooling/题解:一维数组 + 求和 求解拼车问题将所有行程的上车与下车情况记录在一个一维数组中,上车记录负数,表示容量减小;下车记录负数,表示容量增加。最后遍历该数组,同时对capacity求和,当其小于0时,说明不能完成任务,返回false;否则,遍历结束后返回true。代码class Solution { public boolean carPooling(int[][] trips, int

2021-06-27 23:55:29 292 1

原创 LeetCode 1138. 字母板上的路径

题目描述解题思路:思路是维护两个坐标,分别为当前位置坐标和下一个目标位置坐标。假设下一个目标字符为c,则下一个目标位置坐标的横坐标为x = (c-‘a’) / 5, y = (c-‘a’) % 5;有了上述两个坐标,我们就可以得到一个向量,从当前坐标指向目标坐标,且由题意可知,只有上下左右四个方向可以运动,因此最快的方式肯定是要么横向一直朝着左或右走,纵向一直朝着上或下走,同时横向移动和纵向移动的顺序可以随意。因此最短的移动方式有多重,这里我采用的是横着或纵着走到底。本题还还有一个坑的地方,就是最后

2021-06-23 23:25:12 172

原创 面试题之最大子矩阵

题目如下:面试题 17.24. 最大子矩阵给定一个正整数、负整数和 0 组成的 N × M 矩阵,编写代码找出元素总和最大的子矩阵。返回一个数组 [r1, c1, r2, c2],其中 r1, c1 分别代表子矩阵左上角的行号和列号,r2, c2 分别代表右下角的行号和列号。若有多个满足条件的子矩阵,返回任意一个均可。思路如下:解题思路本题的子问题为《LeetCode 53.最大子序和》,不同的是本题为二维矩阵,因此需要将二维矩阵“打成”一维,然后套用最大子串和,打的手段是使用preSum前

2021-06-22 23:59:38 65

原创 设计模式之单例模式

概述在有些系统中,为了节省内存资源、保证数据内容的一致性,对某些类要求只能创建一个实例,这就是所谓的单例模式。定义 & 特点单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式。在计算机系统中,常见的单例模式有: Windows 的回收站、操作系统中的文件系统、多线程中的线程池、显卡的驱动程序对象、打印机的后台处理服务、应用程序的日志对象、数据库的连接池、网站的计数器、Web 应用的配置对象、应用程序中的对话框、系统中的缓存等常常被设计成单例。J2E

2021-06-20 20:14:02 61

原创 设计模式的分类与功能

设计模式分类设计模式有两种分类方式:一种是根据模式的目的来分;另一种是根据模式的作用范围来分。根据目的来分根据设计模式是用来完成什么工作来划分,这种方式可以分为 创建型模式、结构型模式、行为型模式 3种。创建型模式:用于描述怎样创建对象,它的主要特点是 将对象的创建与使用分离 。主要包括单例、原型、工厂方法、抽象工厂、建造者等5种创建型模式结构型模式:用于描述如何将类或对象按照某种布局组成更大的结构。主要包括代理、适配器、桥接、装饰、外观、享元、组合等7种结构型模式行为型模式:用于描述

2021-06-19 17:25:17 153

原创 软件设计原则

概述在软件开发过程中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,软件开发人员应该尽量根据7大软件设计原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。开闭原则定义开闭原则(Open Closed Principle, OCP)提出:软件实体应当 对扩展开放,对修改封闭 ,即Software entities should be open for extension,but closed for modification。软件实体主要包含:项目中划分出的模

2021-06-17 00:09:30 375

原创 动态规划之交错字符串

题目如下:给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s1 + s2 + … + snt = t1 + t2 + … + tm|n - m| <= 1交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …提示:a + b 意味着字符串 a 和 b

2021-06-14 12:45:14 147

原创 VO&DO&DTO&PO

概述经常会接触到VO,DO,DTO的概念,本文从领域建模中的实体划分和项目中的实际应用情况两个角度,对这几个概念进行简析。一般而言,VO对应于页面上需要显示的数据(表单),DO对应于数据库中存储的数据(数据表),DTO对应于除二者之外需要进行传递的数据。一般性概念VO(View Object): 视图对象,用于展示层,它的作用是把某个指定页面的所有数据封装起来。DTO(Data Transfer Object): 数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提

2021-06-10 23:51:43 1260 11

原创 动态规划 之 最后一块石头的重量

题目如下:有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为y-x。 最后,最多只会剩下一块 石头。返回此石头 最小的可能重量 。如果没有石头剩下,就返回 0。...

2021-06-10 22:33:18 253

原创 软件设计模式概述

软件设计模式的概念和意义概念软件设计模式(Software Design Pattern),简称为设计模式,是一套被反复使用、普遍知晓的、经过分类编目的、代码设计经验方面的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计总结,具有一定的普遍性,可以被反复使用。目的是为了提供代码的可重用性、可读性以及可靠性。意义设计模式的本质是面向对象设计原则的实际运用,是对类的封装性、继承性、多态性以及类的关联关系和组合关系的充

2021-06-09 23:41:56 279

原创 秒杀系统搭建总结

现在的互联网应用的普遍特点就是多用户量、大流量和高并发,这就导致一般的应用在这种条件下无法提供高可用的服务,传统的代码写法是无法满足系统大并发要求的,在多用户高并发下有一套不同的代码编写方法。本文就是在尝试过编写一个秒杀系统demo后,将心中所感记录下来。目的就是想通过秒杀demo的编写来瞥见高并发系统的代码编写方式。大并发下系统崩溃的一大因素就是数据库,数据库无法承担海量的用户读写请求,从而导致系统性能低下甚至不可用。因此,为了改造系统使其能够适应高并发、提高其可用性,就要从数据库访问着手,减少对数据库

2021-06-06 22:36:01 154 2

原创 spring boot自动配置之spring mvc中 spring.mvc.staticPathPattern 和 spring.resources.static-locations 的区别

spring.mvc.staticPathPattern和spring.resources.static-locations的区别今天在学习的时候解决了一直以来含糊不清的一个知识点:spring.resources.static-locations配置是在spring boot autoconfigure中的resource自动配置模块,意思是配置spring boot项目的静态资源的位置,比如说项目中的图片、js、css等资源,异或是通过网络上传的服务器端的资源的路径,这个路径就可以配置在项目的外部的

2021-06-06 22:31:10 1164 1

原创 sql数据类型

在一次面试中被面试官问到了这样一个问题:常见的mysql数据类型有哪些?这个问题不像其他的数据库方面的八股,什么索引啊、事务啊,比较冷门,但是确实日常使用必定接触到,冷不丁地被问到,事前没有系统总结,结果答得并没有一气呵成,这次来总结下。sql数据类型数据类型是定义列中可以存储什么数据以及该数据实际怎样存储的基本规则。数据类型用于以下目的:数据类型用于限制可存储在列中的数据数据类型允许在内部更有效地存储数据数据类型允许变换排序顺序在设计表时应该特别重视所用的数据类型,使用错误的数据类型可能

2021-06-06 18:28:13 324

原创 突破Linux系统资源配置之ulimit

突破Linux系统资源配置之ulimit在学习netty是,探讨netty高性能调优,发现俩比较有趣且重要的命令:lsof和ulimit。lsoflsof用于列出系统当前打开的文件句柄。有句话是这么说的,“Linux中一切皆文件”,在Linux文件系统中任何资源都是以文件句柄的形式进行管理的,例如:硬件设备、磁盘文件、网络套接字等,系统内部为每一种资源分配一个句柄,应用程序只能用操作系统分配的句柄来引用资源,因此,文件句柄为应用程序与基础操作系统之间的交互提供了通用的操作接口。应用程序打开文件的描述

2021-05-20 21:46:35 230

原创 springboot多数据源配置

​ 在以往的学习中,经常会听到数据库的分库分表等操作,我就会想,平常的应用都是连接一个数据库,但是分库时候,要连接的数据库就不止一个,这个时候后台是怎么实现的?答案是肯定的!切换数据源。我们只要配置需要用到的多个数据源,然后在需要的地方进行数据源的切换,后端应用就可以像指针一样指向具体的某一个数据库,获取到到数据库的连接,接下来的操作就是针对该数据源所指向的数据库的。​ 那么,要如何实现数据库的动态切换呢?经过我阅读过几篇博文并加上自己的思考后,得出了一下解决思路,在这里以文档的形式做下记录。​

2021-05-19 18:49:10 189

原创 动态规划总结

坐标型动态规划unique path: 有一个m*n的网格。问从左上角到右下角有多少种不同的走法?unique path II: 有一个m*n的网格,网格上有若干障碍物,不能经过障碍物。问从左上角到右下角有多少种不同的走法?minimum path sum: 有一个m*n的网格,每个网格中都有一个非负数,求从左上角到右下角的所有路径中的最小路径和是多少?能试着返回这条最小路径吗(使用dp)?bomb enemy: 有一个m*n的网格,每个网格上能放置空、敌人、墙三种中的一种,炸弹只能

2021-05-19 18:33:54 100

原创 Redis两种持久化策略——RDB和AOF

Redis持久化​ Redis是一个内存数据库,它将自己的数据存储在内存中,一旦出现服务器进程退出,存储在内存中的数据将不复存在。为了解决这个问题,Redis提供了持久化功能,这个功能将Redis在内存中的数据库状态持久化到磁盘中,避免因进程退出而导致的数据丢失。​ Redis的持久化有两种方式:RDB和AOFRDB持久化​ RDB持久化既可以手动执行,亦可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中。RDB文件是一个经过压缩的二进制文件,通过该文件

2020-06-29 12:29:03 191

原创 从无到有,打造完善的单例模式写法

单例模式单例模式是一种非常常见的设计模式,我们有必要规范地用好单例模式。单例模式是指,在整个系统中,该单例类只有一个实例对象并始终对外提供同一个实例对象。单例模式常见的写法有两种,懒汉模式***和***饿汉模式懒汉模式:public class Singleton { //在类加载的时候就创建了单例类的对象 private static final Singleton instance = new Singleton(); //单例模式的无参构造函

2020-05-28 13:14:27 113

原创 Docker基本概念和常用命令

Docker核心概念Docker主机(host): 安装了Docker程序的机器(Docker直接安装在操作系统之上)Docker客户端(Client):连接docker主机进行操作docker仓库(registry):用来保存打包好的各种软件镜像,分为公共仓库(docker hub)和私有仓库docker镜像(images):软件打包成镜像放在docker仓库中docker容器(con...

2019-11-22 22:18:06 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除