自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(141)
  • 资源 (3)
  • 收藏
  • 关注

原创 Laravel实现软删除

Laravel实现软删除Laravel 的 Eloquent ORM 提供了一个漂亮、简洁的 ActiveRecord 实现来和数据库交互。每个数据库表都有一个对应的「模型」用来与该表交互。你可以通过模型查询数据表中的数据,以及在数据表中插入新记录。官方文档对于软删除的解释如下:除了真实删除数据库记录,Eloquent 也可以「软删除」模型。软删除的模型并不是真的从数据库中删除了。 事实上,是在模型上设置了deleted_at属性并将其值写入数据库。如果deleted_at值非空,代表这个模型已被软删

2020-07-17 22:31:55 4838

原创 git add . 和 git add * 区别

git add [参数] [–] <路径>  //作用就是将我们需要提交的代码从工作区添加到暂存区,就是告诉git系统,我们要提交哪些文件,之后就可以使用git commit命令进行提交了。git add . 会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore文件,并把任何文件都加入...

2020-06-30 09:57:43 1382

原创 Window常用快捷键

Window常用快捷键快捷键作用Win + R打开运行对话框Win + Q快速打开搜索Win + I快速打开Win10设置栏Ctrl+Alt+Del /Esc快速打开任务管理器Alt+F4关闭当前界面与快速关机Win+ P演示设置Win +左/右 Win +上/下窗口可以变为1/4大小放置在屏幕4个角落Alt + Tab任务切换界面Win + Tab松开键盘界面不会消失Win + Ctrl + D创建新的虚拟桌面

2020-06-28 16:40:33 271

转载 PHP的empty,isset和is_null区别

PHP提供了三个用于测试变量值的函数,分别是isset(),empty(),is_null(),他们都返回布尔值,但是也有区别。通过以下表格查看: 对比项  isset()方法 empty()方法 is_null方法 ""(空字符串) true ture false " "(一个空格) true false false FALS...

2020-05-13 10:02:53 176

原创 CentOS使用composer install 报错 - phpunitphpunit 8

使用composer install报错。解决方案:使用命令查看引入的模块php -m如果没有dom这个模块,查询可以拓展的模块,这里我的PHP版本是7.3yum search php73 找到如下拓展安装yum -y install php73-php-xml.x86_64重启php frmsystemctl restart php73-php-fpm再使用ph...

2020-05-06 23:27:28 281

原创 PhpStorm配置Laravel环境

PhpStorm配置Laravel环境1.安装Laravel插件安装完成重启后,应用laravel plugin到当前项目2.让Command Line Tool Console控制台支持artisan命令设置完成后,打开Command Line Tool Console控制台在里面输入如下内容artisan make:controller TestController...

2020-05-03 14:07:46 2835

原创 怎么安装 Laravel

怎么安装 LaravelLaravel是PHP的一个Web框架,本次安装的版本是7,需要的PHP版本 >= 7.2.51.安装composer安装Laravel之前,需要安装composer。Laravel 框架使用 Composer(PHP包管理工具,参考 Composer 中文文档)来管理代码依赖性。 首先,你需要下载 Composer 的 PHAR 打包文件( composer...

2020-05-01 23:09:19 646

原创 快速失败和安全失败的区别

在 java.util 包的集合类就都是快速失败的;而 java.util.concurrent 包下的类都是安全失败快速失败:在使用迭代器对集合进行迭代的过程中,如果 A 线程正在对集合进行遍历,此时 B 线程对集合进行修改(增加、删除、修改),或者 A 线程在遍历过程中对集合进行修改,都会导致 A 线程抛出 ConcurrentModificationException 异常。这里我们以...

2020-04-19 22:56:35 2860

原创 如何把1000随机分配成10个数

剪绳子:1.声明一个数组,长度为1000。2.产生随机9个数字,将数组分为10段3.每段的长度加起来为1000代码实现如下: public static void main(String[] args) { boolean[] arr = new boolean[1001]; for (int i = 0; i< 9; i++) ...

2020-03-29 20:56:56 2887

原创 Mysql常见面试题

1.事务2.数据库范式3.事务隔离级别4.并发一致性问题5.存储引擎(InnoDB和MyISAM区别)6.锁机制(有哪些锁?)6.B+索引数据结构,和B树(B-树)的区别7.红黑树8.数据库索引原理9.聚簇索引和非聚簇索引区别10.覆盖索引11.压缩索引(前缀压缩)12.冗余索引和重复索引13.索引为什么能提高速度?14.MVCC机制15.SQL优化16.Mysql...

2020-02-29 21:06:31 186

转载 Webstorm的一些常用快捷键

下面是Webstorm的一些常用快捷键:ctrl + shift + n: 打开工程中的文件,目的是打开当前工程下任意目录的文件。ctrl + j: 输出模板ctrl + b: 跳到变量申明处ctrl + alt + T: 围绕包裹代码(包括zencoding的Wrap with Abbreviation)ctrl + []: 匹配 {}[]ctrl + F12: 可以显示当前文件的...

2020-02-29 21:02:12 234

原创 fastDFS的storage启动失败

fastDFS的storage启动失败原因详解笔者在安装fastDFS时,启动storage一直不成功。启动storage可以使用service fdfs_storaged start 或/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart但是启动之后,如下图所示错误原因解析:①我们可以通过如下命令来查看fdfs进程...

2020-01-25 17:55:19 13653 6

原创 浅谈 服务熔断 降级 限流

复杂分布式体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免地失败。**服务雪崩:**多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。对于高流量的应用来说,比如秒杀...

2019-12-29 19:46:12 489

原创 Sentinel哨兵

一、概述Sentinel(哨兵、哨岗)是Redis的高可用性解决方案。由一个或多个Sentinel实例组成的Sentinel系统Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress), 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocol...

2019-11-30 18:39:18 393

原创 Goland 代码自动格式化

2019-10-31 10:46:32 2279

原创 markdown构建目录结构

markdown构建目录结构程序员经常会有需求,需要列出项目的结构树。Mac或者Linux下可以使用tree列出项目结构,比如:Demo├── Demo.http.mysqlDemo│ ├── Godeps│ │ └── Godeps.json│ ├── build.sh│ ├── common│ │ ├── client.go│ │ ├──...

2019-10-29 10:14:07 2156

原创 解决Failed to read artifact descriptor for org.springframework.cloud:spring-cloud-starter-eureka-serve

今天搭建Springcloud项目,遇到了POM.xml文件 Failed to read artifact descriptor for org.springframework.cloud:spring-cloud-starter-eureka-server:jar:unknow报错查看自己的依赖 <!--eureka-server服务端 --> &...

2019-10-27 09:41:23 10226

原创 String StringBuffer StringBuilder区别

1. 可变性String 不可变:查看源码发现,String 类中使用 final 关键字修饰字符数组来保存字符串 /** The value is used for character storage. */ private final char value[];String类是不可变类,任何对String的改变都会引发新的String对象的生成;如果是String...

2019-09-30 21:15:51 239

原创 聚簇索引和非聚簇索引区别

聚簇索引和非聚簇索引区别MySQL的聚簇索引是指Innodb引擎的特性,MySIAM并没有,如果需要该索引,只要将索引指定为主键(primary key)就可以了。聚集(clustered)索引,也称聚簇索引。聚簇索引并不是一种单独的索引类型,而是一种数据存储方式。Innodb引擎的聚簇索引实际上存放了B+树索引和数据行。所以由于无法同时把数据行存放在两个不同的地方,所以一个表只能有一个聚簇索...

2019-08-28 23:36:44 933

原创 这个符号在Mysql中到底是什么?

Mysql中有个 <=>符号,到底是什么含义呢?https://stackoverflow.com/questions/21927117/what-is-this-operator-in-mysql

2019-08-28 16:34:24 504

转载 树、森林和二叉树的转换

1、树转换为二叉树由于二叉树是有序的,为了避免混淆,对于无序树,我们约定树中的每个结点...

2019-08-28 10:49:28 188

原创 Redis过期键删除策略

定时删除: 在设置键的过期时间的同时,创建一个定时器,让定时器在键的过期时间来临时,立即对键的删除操作。优点:通过使用定时器,定时删除策略可以保证过期键会尽可能快地被删除,并释放过期键所占用的内存。缺点:对CPU时间不友好:在过期键比较多的情况下,删除过期键这一行为可能会占用相当一部分CPU时间。除此之外,创建一个定时器需要用到Redis服务器中的时间时间,而当前时间事件的实现方式–无序链表...

2019-08-28 10:41:35 445

原创 Java多线程详解

一、基本概念程序(program)是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process)进程是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。——生命周期如:运行中的QQ,运行中的MP3播放器程序是静态的,进程是动态的进程作为资源分配的单位,系统在运行时会为每个进程分配不同的...

2019-07-28 18:41:21 195

原创 Java中compareTo()方法详解

Java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。当一个对象调用该方法与另一个对象进行比较时,例如obj1.compareTo(obj2),如果该方法返回0,则表示两个对象相等,如果该方法返回一个正整数,则表明obj1大于obj2;如果该方法返回一个...

2019-07-23 12:28:42 26650 3

原创 关于LINUX权限-bash: ./startup.sh: Permission denied

用命令chmod 修改一下bin目录下的.sh权限就可以了如chmod u+x *.sh

2019-06-25 21:38:03 1787 1

原创 JSP 解决Page directive illegal to have multiple occurrences of contentType with different values 错误

在一个JSP页面使用include标签包括了另一个页面<%@ include file="../common/menu.jsp"%>然后就报了如下的错误HTTP Status 500 - /WEB-INF/views/permission/../common/menu.jsp (line: 1, column: 2) Page directive: illegal to h...

2019-06-22 00:24:28 579

原创 Springboot搭建文件服务器

笔者最近遇到了一个需求,需要搭建一个文件服务器,用于上传文件(.txt格式等)和图片(.jpg格式等)。下面演示怎么上传txt文件和上传头像(.jpg),如有需要可自行修改后缀名进行拓展。准备工作:配置文件以及配置类:主要配置不同类型的文件路径,比如上传头像,可以放到 avatar目录,上传不同类型的文件方便区分,并获取其指定的上传路径。配置文件application.yml:# 项目相...

2019-05-20 17:37:55 15777 8

原创 Java8特性之Optional类

Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用 null 表示一个值不存在,现在 Optional 可以更好的表达这个概念。并且可以避免空指针异常。常用方法:Optional.of(T t) : 创建一个 Optional 实例Optional.empty() : 创建一个空的 Optional 实例Optional.ofNul...

2019-05-19 00:14:39 161

原创 Mysql CASE函数 详解

CASE函数格式如下:CASE expr WHEN v1 THEN r1 [WHEN v2 THEN r2][ELSE rn] END该函数表示,如果expr值等于某个vn,可以是等于v1或v2…vn,则返回对应位置THEN后面的结果。如果与苏军偶有值都不相等,则返回ELSE后面的rn。示例一:使用CASE value WHEN 语句执行分支操作,输入语句如下:SELECT CA...

2019-05-09 16:31:34 2925

转载 Python初始化列表

Python初始化列表下面我们就来介绍在Python中初始化列表(我们创建大小为1000并使用零初始化的列表)的一些方法。1)方法一:使用for循环和append()函数arr = []for i in range(1000): arr.append(0)2)方法二:使用带计数器变量的while循环和append()arr = []i = 0while(i<100...

2019-04-29 18:17:49 32171 3

原创 Python基础入门(五)——高级变量类型

高级变量类型1)高级变量类型概述Python 中数据类型可以分为 数字型 和 非数字型数字型整型 (int)浮点型(float)布尔型(bool)真 True 非 0 数 —— 非零即真假 False 0复数型 (complex)主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题非数字型字符串列表元组字典在 Python 中,所...

2019-04-28 09:30:10 407

原创 Springboot—@RequestParam和@PathVariable详解

@RequestParam@RequestParam注解一般是加在Controller的方法参数上下面我们来分析一下加@RequestParam与不加@RequestParam的区别第一种情况,加@RequestParam@RequestMapping("/test")public void test(@RequestParam Integer testId){ }@Req...

2019-04-17 22:37:04 5918

原创 Java8特性之Stream流

一、Stream流概念Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一 个则是 Stream API(java.util.stream.*)。Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可...

2019-03-31 18:07:41 299 1

原创 Python基础入门(四)——函数

函数1)函数概念所谓函数,就是把 具有独立功能的代码块 组织为一个小模块,在需要的时候 调用函数的使用包含两个步骤:定义函数 —— 封装 独立的功能调用函数 —— 享受 封装 的成果函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的 重用2)函数定义定义函数的格式如下:def 函数名(): 函数封装的代码 ……def是英文defi...

2019-03-31 15:09:57 989

原创 Python基础入门(三)——控制语句

一、分支语句if 判断语句基本语法在 Python 中,if 语句 就是用来进行判断的,格式如下:if 要判断的条件: 条件成立时,要做的事情 ……注意:代码的缩进为一个 tab 键,或者 4 个空格 —— 建议使用空格在 Python 开发中,Tab 和空格不要混用!我们可以把整个 if 语句看成一个完整的代码块# 1. 定义年龄变量age = 18...

2019-03-27 14:21:32 475

原创 Python基础入门(二)——变量

Python基础入门二变量变量类型在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要)数据类型可以分为 数字型 和 非数字型数字型整型 (int)浮点型(float)布尔型(bool)真 True 非 0 数 —— 非零即真假 False 0复数型 (complex)主要用于科学计算,例如:平面场问题、波动问题、电感电容等问题...

2019-03-27 10:31:07 289

原创 Java8特性之内置函数式接口

上一篇Lambda表达式说到,Lambda表达式需要“函数式接口”的支持,那每一次需要用到Lambda表达式,都得写一个接口,这样不就更麻烦了吗?但是,Java8已经为我们内置了一些常用的函数式接口,一般来说,我们是不需要自己定义一个函数式接口的。内置函数式接口一:Consumer : 消费型接口​ void accept(T t);消费型接口的返回值为void,也就是对参数进行操作,...

2019-03-23 13:48:45 186

原创 Java8特性之Lambda表达式

一、Lambda入门Java8中引入了一个新的操作符 “->” 该操作符称为箭头操作符或 Lambda 操作符,箭头操作符将 Lambda 表达式拆分成两部分:左侧:Lambda 表达式的参数列表右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体Lambda语法格式①:无参数,无返回值示例下面是匿名内部类的写法Runnable r1 = new ...

2019-03-22 16:24:28 167

原创 Java中获取当前时间

Java中获取当前时间1)获取当前时间。返回类型为long类型,这个值其实是距离 1970-01-01 00:00:00 相差的毫秒数import java.util.Date;public class Test { public static void main(String[] args) { //方法一 Date date = new Date(); Sys...

2019-03-20 14:06:33 18184 6

原创 Mybatis查询Mysql datetime类型时,相差8小时 解决方案

最近,笔者在做项目的时候,发现了一件特别奇怪的事情。Mysql数据库里数据如下:可是,使用Mybatis查询出来的数据却是查出来的数据跟数据库里的数据相差了8个小时,这是为什么呢?这是因为Mysql 使用系统默认时区,东八区。而Tomcat java使用UTC时区进行处理业务逻辑。System.out.println(System.getProperty("user.ti...

2019-03-19 15:44:38 9892 2

图书管理系统

采用JSP技术,利用三层架构开发模式开发的一个CRUD的简易图书管理系统

2018-12-16

SpringMVC4超权威教程

1.SpringMVC 概述 2.SpringMVC 的 HelloWorld 3.使用 @RequestMapping 映射请求 • 4.映射请求参数 & 请求头 • 5.处理模型数据 • 6.视图和视图解析器 7.RESTful CRUD • 8.SpringMVC 表单标签 &处理静态资源 • 9.数据转换 & 数据格式化 & 数据校验

2018-04-19

《重构》和《clean code》

《代码整洁之道》讲述了一系列行之有效的整洁代码操作实践。软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。《代码整洁之道》提出一种观念:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,这些实践在《代码整洁之道》中体现为一条条规则(或称“启示”),并辅以来自现实项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。 “这《重构:改善既有代码的设计》之于重构就相当于韵谱之于作诗。一个翻着韵书作诗的诗人一定是蹩脚的,但好的诗人却要对那109个韵部了然于胸;同样,一个好的程序员要求能够主动自然地重构代码,虽不应翻着重构手册干活,但需对《重构:改善既有代码的设计》中提到的70多个重构方法成竹在胸。然而,在达到这一境界之前,需要不断的实践和经验积累,并且要先读读Fowler的这《重构:改善既有代码的设计》。”

2018-02-07

空空如也

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

TA关注的人

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