自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文带你搞懂工厂设计模式

什么是工厂设计模式?对象都需要创建,如果创建的时候直接 new 该对象,就会对该对象严重耦合。假如我们要更换对象,所有 new 对象的地方都需要修改一遍,显然违背了软件设计的开闭原则(OCP)。如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的。工厂模式最大的优点就是:解耦。三种工厂设计模式的使用1. 简单工厂设计模式定义:一个工厂方法,依据传入的参数,生成对应的产品对象;角色:抽象产品类具体产品类

2020-06-21 14:03:52 306

原创 一文带你搞懂单例设计模式

什么是单例设计模式?单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的类只有一个实例。即一个类只有一个对象实例。在Java语言中,单例带来了两大好处:对于频繁使用的对象(数据源、Session工厂),可以省略创建对象所花费的时间,这对于重量级的对象而言,是非常可观的一笔系统开销。由于new操作的次数减少,因而对系统内存的使用频率也会降低,这将减轻GC压力,缩短GC停顿时间。具体实现需要:(1)将构造方法私有化,使其不

2020-06-17 23:26:51 281

原创 Java14了还不知道Lambda表达式?

更多知识,请移步我的小破站:http://hellofriend.top

2020-06-03 23:41:18 226

原创 超详细的MySQL性能分析(Explain)

1. 概述使用EXPLAIN关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或是表结构的性能瓶颈。通过Explain,我们可以获取以下信息:表的读取顺序哪些索引可以使用数据读取操作的操作类型哪些索引被实际使用表之间的引用每张表有多少行被物理查询2. 怎样获取SQL语句的执行计划?Explain + SQL语句举例EXPLAIN SELECT * FROM USER;执行计划所包含的信息3. 执行计划各个名词字段的解

2020-05-26 13:26:56 2181

原创 Java容器集合,看这一篇就够了

更多知识,请移步我的小破站:http://hellofriend.top概览Java中的容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。Collection1. SetTreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSe...

2020-04-21 00:25:18 850 6

原创 Java中的拆箱和装箱机制

一.装箱拆箱的定义众所周知,Java中有8大基本数据类型,其为每种基本数据类型都提供了对应的包装器类型。 下表是基本数据类型对应的包装器类型:在Java SE5之前,如果要生成一个数值为5的Integer对象,必须这样进行:Integer i = new Integer(5);而从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为5的Integer对象,只需要这样就可以了...

2020-04-09 13:45:09 3717 4

原创 通俗易懂的MySQL事务隔离

事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 仅从其定义来看,你可能难以理解什么是事物,接下来我们举个经典例子来说明事务的用途:用户A向用户B转账,我们需要进行以下操作:从A账户中把余额读出来;对A账户做减法操作;把结果写回A账户中;从B账户中把余额读出来;对B账户做加法操作;把结果写回B账户中。在以上这些操作中需要保证所有操作是一个整...

2020-03-23 23:37:34 1146

原创 Nginx工作原理(Master+Worker)

原理Nginx 采用的是多进程(单线程) & 多路IO复用模型。使用了 I/O 多路复用技术的 Nginx,就成了 “并发事件驱动” 的服务器。Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。也就是说,Worker的工作方式是争抢。

2020-06-14 23:26:55 646 2

原创 Nginx实现反向代理

反向代理我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实的服务器的IP地址。实例实现访问www.123.com访问到tomcat(端口为8080)的主页。步骤修改Windows的hosts文件,将自定义的域名和虚拟机的IP地址进行绑定。修改nginx.conf文件(在linux系统上安装的nginx)。启动nginx和tomcat(注意:一定要在linux中

2020-06-12 21:12:26 191

原创 快速入门Nginx

1. Nginx简介1.1 什么是Nginx?Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,专门为性能优化而开发,有研究表明 Nginx 能支持 50000 个并发连接数。1.2 正向代理在客户端(浏览器)配置代理服务器,通过代理服务器对互联网进行访问。1.3 反向代理我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器的地址,隐藏了真实的服务

2020-06-08 23:57:34 611

原创 MySQL之截取查询分析

更多知识,请移步我的小破站:http://hellofriend.top慢查询日志MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。(默认关闭)具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10秒以上的语句。由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条s.

2020-06-01 23:23:43 207

原创 MySQL之排序分组的索引优化

更多知识,请移步我的小破站:http://hellofriend.top排序优化ORDER BY子句,尽量使用Index方式(索引)排序,避免使用FileSort方式(手工)排序。技巧:无过滤,不索引;顺序错,必手工排序;方向反,必手工排序;要想Order BY使用到索引,必须要添加过滤条件(where子句对索引中的字段进行过滤,而且必须按照顺序),Limit分页也行。在SQL语句中的顺序一定要和定义索引中的字段顺序完全一致。要么全升序、要么全降序。有升有降无法使用索引。案例SE.

2020-05-30 20:22:33 1677

原创 MySQL之索引查询优化

1. 单表查询优化注意使用复合索引的效果会大于使用单个字段索引(但是要注意顺序)。查询条件时要按照索引中的定义顺序进行匹配。如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始并且不跳过索引中的列。不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的列,范围查询的列在定义索引的时候,应该放在最后面。mysql 在使用不等于(!= 或者<>)的时候无法使用索引会导致全表扫描。is not nu

2020-05-28 00:32:04 308

原创 常用的NoSQL数据库一览

Memcached优点很早出现的NoSQL数据库。数据都在内存中,一般不持久化。支持简单的key-value模式。一般作为缓存数据库辅助持久化的数据库。Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。支持直接配置为session handle。缺点只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。无法进行持久化,

2020-05-25 00:03:23 1152

原创 编写Dockerfile自定义镜像

更多知识,请移步我的小破站:http://hellofriend.top要求编写一个Dockerfile自定义centos镜像,要求在容器内部可以使用vim和ifconfig命令,并且登入落脚点为/usr/local。编写DockerfileFROM centosMAINTAINER moti<[email protected]>ENV MYPATH /usr/localWORKDIR $MYPATHRUN yum -y install vimRUN yum -y ins.

2020-05-24 00:07:00 430

原创 一文带你认识Docker

Docker是什么?Docker是基于Go语言实现的云开源项目。Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到 “一次封装,到处运行” 。Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致

2020-05-22 23:24:04 296

原创 对象不再使用时为什么应赋值为null?

前言许多Java开发者都曾听说过 “不使用的对象应手动赋值为null” 这句话,而且好多开发者一直信奉着这句话;问其原因,大都是回答“有利于GC更早回收内存,减少内存占用”,但再往深入问就回答不出来了。鉴于网上有太多关于此问题的误导,本文将通过实例,深入JVM剖析 “对象不再使用时赋值为null” 这一操作存在的意义。示例代码我们来看看一段非常简单的代码:public static void main(String[] args) { if (true) { byte[]

2020-05-15 22:08:04 249

原创 DNS知识小结

概述DNS:Domain Name System通过域名去寻找到主机的真实IP地址,就是所谓的DNS服务。域名解析系统DNS多层命名服务器构成的分布式数据库应用层协议:完成名字的解析Internet核心功能,用应用层协议实现网络边界复杂DNS服务域名向IP地址的翻译主机别名邮件服务器别名负载均衡:Web服务器它是一种分布式层次式数据库的方式,从根目录开始,逐层往下查询的。例如www.baidu.com,会先找根服务器,找到com域名解析的服务器,然后从com域名解析的服务器

2020-05-14 13:44:53 374

原创 SpringMVC执行请求的流程总结

概述SpringMVC框架是一个基于请求驱动的Web框架,并且使用了“前端控制器”模型来进行设计,再根据“请求映射规则”分发给相应的页面控制器进行处理。整体流程具体步骤:首先用户发送请求到前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤;页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托

2020-05-13 23:51:11 188

原创 通俗讲解数据库索引

更多知识,请移步我的小破站:http://hellofriend.top前言提起索引我想你应该不陌生,当我们查阅一本大部头的时候我们应该如何快速的找到想要的内容呢?很简单,先找目录,通过目录我们就可以了解到我们要找的内容在书中的什么地方,而这个目录就担任着索引的功能。相同,数据库为了能快速的寻找到指定的数据必须要建立索引。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加...

2020-05-07 14:05:31 292

原创 深入剖析数据库底层设计

1. 前言说到数据库这个词,我只能用爱恨交加这个词来形容它。两年前在自己还单纯懵懂的时候进了数据库的课堂,听完数据库的课,觉得这是一门再简单不过的课程,任何一门编程语言都比SQL要晦涩难懂,任何一门理论课程都比数据库关系要复杂得多。直到从被面试官按在地上摩擦,到工作中那一条条令人发指的慢查询SQL,这就已经完全颠覆了我对数据库的看法。在有各种数据库工具的今天,我们是看不到那简单到不能再简单的一张...

2020-05-03 23:16:27 1699 3

转载 Java垃圾回收

之前听说有这么一个梗,说在食堂里吃饭,吃完把餐盘端走清理的,是 C++ 程序员,吃完直接就走的,是 Java 程序员。言归正传。确实,在 Java 的世界里,似乎我们不用对垃圾回收那么的专注,很多初学者不懂 GC,也依然能写出一个能用甚至还不错的程序或系统。但其实这并不代表 Java 的 GC 就不重要。相反,它是那么的重要和复杂,以至于出了问题,那些初学者除了打开 GC 日志,看着一堆01...

2020-04-29 23:03:49 146

原创 Java的static关键字,超精炼

static用法static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。这篇文章我们来了解一下static关键字及其用法。修饰成员变量在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员。p...

2020-04-27 12:55:32 287

原创 Java的final关键字(高度浓缩版)

final 关键字在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们来了解一下final关键字及其用法。修饰数据在编写程序时,我们经常需要说明一个数据是不可变的,我们成为常量。在java中,用final关键字修饰的变量,只能进行一次赋值操作,并且在生存期内不可...

2020-04-25 11:34:24 187 2

原创 将应用部署到阿里云服务器之调了一晚上Bug...

之前用Spring-boot搭建的电商秒杀项目是在本地电脑和数据库上实现的,今天尝试着把它部署到阿里云服务器上,为了方便后续的高并发、性能优化等方面的内容深入。部署的过程中问题一个接一个,还是我太菜了,第一次尝试,一晚上都在调Bug…最终还是成功把应用部署到云服务器上运行了…抽时间总结一下。收工… ????????????...

2020-04-25 00:26:04 298

原创 Maven报错: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources

更多知识,请移步我的小破站:http://hellofriend.topidea创建Maven项目时,报错显示Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.0.2:resources,并且Maven插件内看不到 mybatis-generator。如下图:折腾了好久发现配置放错地方了,需要将 ...

2020-04-13 23:21:17 1242

原创 连接MySQL报错Access denied for user 'root'@'localhost' (using password: YES)解决办法

更多知识,请移步我的小破站:http://hellofriend.top在使用SQLyog连接数据库时,报错Access denied for user ‘root’@‘localhost’ (using password: YES)。从错误信息我们可以看出, 密码输入确定是对的。解决步骤打开MySQL安装目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables...

2020-04-11 23:14:31 1461 1

原创 Windows无法启动MySQL服务,报错1067的解决方法

更多知识,请移步我的小破站:http://hellofriend.top近日,在使用MySQL时发现无法启动MySQL服务且报错1067,追查一番后,将问题的源头锁定在mysql.user表上。原因是误删或者清理了data 中的user.frm,user.MYD,user.MYI这3个文件,记不清后缀没关系,只用知道是user开头的文件缺失就行。解决方法1.找到MySQL安装目录下的user...

2020-04-10 20:07:00 9823 3

原创 已解决:修改WordPress地址(URL),导致主页面出现404错误

前几天,出于好奇无意间修改了WordPress的URL地址,没想到却连 WordPress 的仪表盘都出现404错误无法登录。为了解决该问题,在网上搜索了一番,发现绝大部分文章帖子都是说伪静态设置出了问题,试着修改.htaccess文件,设置伪静态规则等等,依旧无果…后来猛然发现是数据库的问题。误操作解决方案1. 使用SSH登录服务器,如XShell等工具都可以2. 登录到MySQL数据...

2020-04-02 18:48:11 5024 7

原创 阿里云ECS服务器Linux CentOS7安装与配置vsftpd

阿里云ECS服务器Linux CentOS7安装与配置vsftpd1. 查看是否安装vsftprpm –qa|grep vsftpd2. 安装vsftpyum -y install vsftpd3. 配置vsftpd服务vim /etc/vsftpd/vsftpd.conf按 i 键进入编辑模式vsftpd.conf 常用设定值的说明3.1 与服务器环境较相关的设定值con...

2020-03-21 20:47:00 1672 1

原创 IntelliJ IDEA超实用快捷键

IntelliJ IDEA实用快捷键作为一名Java程序员,一款好的开发软件必不可少,目前大多数人已经用IntelliJ IDEA取代了Eclipse,当然,快捷键的使用可以加快程序开发的速度。下面整理了IDEA中的实用快捷键:Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/…/ )Ctrl+D 复制行Ctrl+X 删除行快速修复 alt+enter(modify/cast...

2019-12-07 19:39:57 330

原创 已解决:mysql安装在D盘,已经配置了环境变量,却还是无法通过cmd命令行启动

已解决:mysql安装在D盘,已经配置了环境变量,却还是无法通过cmd命令行启动Windows10系统,将mysql安装在D盘,已经配置了环境变量,却还是无法通过cmd命令行启动,原因是由于win10系统的权限问题,win10对权限的控制更加严格了。解决办法:先去c盘目录下找到cmd的位置,一般在c:/windows/system32/cmd。把cmd添加桌面快捷方式,然后再到桌面点击右...

2019-12-06 22:39:46 11356 11

Xshell和Xftp安装包.rar

Xshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他们的工作。 Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。除此之外,其还有丰富的外观配色方案以及样式选择。

2020-04-05

空空如也

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

TA关注的人

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