我是福克斯,闲来无事,随便写写。欢迎大家多多交流
利用命令行提交代码步骤提交代码之前,需先从服务器上面拉取代码,以防覆盖别人代码。1:拉取服务器代码git pull2:查看当前工作目录树的工作修改状态git status状态:1:Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.2:Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作.3:deleted: 文件已删除,本地删除,服务器上还没有删除.4:renamed:3:将状态改变的代码提交至缓存git add . .代表上传目录下所有文件,可以在git add后面加上你要添加的文件,比如git add aa.htmlgit add + 文件git add -u + 路径:将修改过的被跟踪代码提交缓存git add -A + 路径: 将修改过的未被跟踪的代码提交至缓存例如:git add -u vpaas-frontend/src/components将 vpaas-fronten
###前言:JDK7里面新增的Objects类,该类的主要用途是将操作对象的一切常用操作进行的封装。包括hashCode、equals等。 本文是以java8版本介绍Objects类,所以也会介绍一下java8新增的方法。下面进入正题:12###知识点一:Objects类简介:/** * This class consists of {@code static} utility methods for operating * on objects. These utilities include {@code null}-safe or {@code * null}-tolerant methods for computing the hash code of&nb
ResultBean CustomCardIn inUserInfoVo userInfoVoPageResultBeanpublic class PageResultBean<T> extends ResultBean<T> {...}pageResultBean 继承ResultBean类,它拥有父类(ResultBean)的所有属性,同时又具有自己的属性。当我们需要返回ResultBean类是,可以返回任何一个它的子类,因为子类继承父类,拥有父类的一切属性。同理:List list = new ArrayList();我们看ArrayList的继承关系:ArrayListAbstractListListRandomAccessCloneablejava.io.Serializable它实现了List接口,即ArrayList拥有List的一切属性
https://www.jianshu.com/p/3cfdf32bd37ehttps://blog.csdn.net/qq_35181209/article/details/74838690概念:类锁:所有对象共用一个锁对象锁:一个对象一把锁,多个对象多把锁。用synchronized分别修饰静态方法和非静态方法,使用的锁分别为静态:class对象的锁非静态:本对象的锁实验1:对静态方法和非静态方法用synchronized进行修饰结论:出现错乱的输出,说明静态方法和非静态方法用不同的锁实验2:对静态方法用synchronized,非静态方法用synchronized块对 class对象加结论:正确输出,确认静态方法确实使用class对象的锁,而非静态方法使用synchronized默认使用this锁(自己试试吧)在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。在static方法前加synchronizedstatic:静态方法属于类方法,它属于这个类,获取到的锁,是属于
有时候,或许会听到被人说,在重写equals方法的时候,记得重写hashcode方法。那么自然有这样的疑问,那么为什么这样?equals方法和hashCode方法是什么关系?不重写的时候会有什么危害?文章将从一下几个方面进行叙述。一:什么是hashCode(),equals()方法?二:hashCode(),equals()两种方法是什么关系?三:为什么在重写equals方法的时候要重写hashcode的方法?四:怎么重写这两种方法?一:什么是hashCode(),equals()方法?关于equals()方法,经常说的就是比较的是内容(与==比较的地址相对),这么说不完全对--看下面这段代码:学生类:public class Student { private int id; private String name; public Student(int id, String name) { super(); this.id =&nb
Eureka 工作原理上节内容为大家介绍了,注册中心 Eureka 产品的使用,以及如何利用 Eureka 搭建单台和集群的注册中心。这节课我们来继续学习 Eureka,了解它的相关概念、工作流程机制等。Eureka 作为 Spring Cloud 体系中最核心、默认的注册中心组件,研究它的运行机制,有助于我们在工作中更好地使用它。Eureka 核心概念回到上节的服务注册调用示意图,服务提供者和服务的消费者,本质上也是 Eureka Client 角色。整体上可以分为两个主体:Eureka Server 和 Eureka Client。Eureka Server:注册中心服务端注册中心服务端主要对外提供了三个功能:服务注册服务提供者启动时,会通过 Eureka Client 向 Eureka Server 注册信息,Eureka Server 会存储该服务的信息,Eureka Server 内部有二层缓存机制来维护整个注册表提供注册表服务消费者在调用服务时,如果 Eureka Client 没有缓存注册表的话,会从 Eureka Server 获取最新的注册表同步状态Eureka Cl
引言首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文。当然,考虑到目前大多微服务的文章都是口水文,烟哥争取将实现方式讲透,点清楚,让大家有所收获!OK,我要先说明一下,我有很长一段时间将服务降级和服务熔断混在一起,认为是一回事!为什么我会有这样的误解呢?针对下面的情形,如图所示当Service A调用Service B,失败多次达到一定阀值,Service A不会再去调Service B,而会去执行本地的降级方法!对于这么一套机制:在Spring cloud中结合Hystrix,将其称为熔断降级!所以我当时就以为是一回事了,毕竟熔断和降级是一起发生的,而且这二者的概念太相近了!后面接触了多了,发现自己理解的还是太狭隘了,因此本文中带着点我自己的见解,大家如果有不同意见,请轻喷!毕竟还有很多人认为两者是一致的!正文服务雪崩OK,我们从服务雪崩开始讲起!假设存在如下调用链而此时,Service A的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算Service A能扛得住请求,Service B和Service C未必能扛得住这突发的请求。此时,
什么是SQL注入以及mybatis中#{}为什么能防止SQL注入而${}为什么不能防止SQL注入SQL注入是通过把SQL命令插入到web表单提交或通过页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL指令。 注入攻击的本质是把用户输入的数据当做代码执行。 举例如: 表单有两个用户需要填写的表单数据,用户名和密码,如果用户输入admin(用户名),111(密码),若数据库中存在此用户则登录成功。SQL大概是这样 SELECT * FROM XXX WHERE userName = admin and password = 111 但若是遭到了SQL注入,输入的数据变为 admin or 1 =1 # 密码随便输入,这时候就直接登录了,SQL大概是这样 SELECT * FROM XXX WHERE userName = admin or 1 = 1 # and password = 111 ,因为 # 在sql语句中是注释,将后面密码的验证去掉了,而前面的条件中1 = 1始终成立,所以不管密码正确与否,都能登录成功。在mybatis中,$
在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。具体业务流程如下: 读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存和数据库间的数据一致性问题。不管是先写数据库,再删除缓存;还是先删除缓存,再写库,都有可能出现数据不一致的情况。举个例子: 1.如果删除了缓存Redis,还没有来得及写库MySQL,另一个线程就来读取,发现缓存为空,则去数据库中读取数据写入缓存,此时缓存中为脏数据。 2.如果先写了库,在删除缓存前,写库的线程宕机了,没有删除掉缓存,则也会出现数据不一致情况。 &nbs
一,什么是yield()二,什么是wait()wait()方法,让当前线程处于"等待状态",直到其它线程调用此对象的notify()方法或notifyAll()方法,当前线程被唤醒(进入"就绪状态")三,wait()与yield()方法的对比
admin
这个人很懒,什么都没写!!!