09 2018 档案

摘要:一、读写分离 什么是数据库读写分离? 答:一主多从,读写分离,主动同步,是一种常见的数据库架构,一般来说: 主库,提供数据库写服务 从库,提供数据库读服务 主从之间,通过某种机制同步数据,例如mysql的binlog 主库,提供数据库写服务 从库,提供数据库读服务 主从之间,通过某种机制同步数据,例 阅读全文
posted @ 2018-09-30 17:00 twoheads 阅读(274) 评论(0) 推荐(0) 编辑
摘要:工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销。此时,我们可以考虑将一些相关的产品组成一个“产品族”,由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本思 阅读全文
posted @ 2018-09-30 14:09 twoheads 阅读(248) 评论(0) 推荐(0) 编辑
摘要:简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码,将违背“开闭原则”,如何实现增加新产品而不影响已有代码?工厂方法模式应运而生,本文将介绍第二种工厂模式——工厂方法模式。 1 日志记录器的设计 S 阅读全文
posted @ 2018-09-30 10:39 twoheads 阅读(202) 评论(0) 推荐(0) 编辑
摘要:工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式。本章将要学习的简单工厂模式是工厂方法模式的“小弟”,它不属于GoF 23种设计模式,但在软件开发中应用也较为频繁,通常将它作为学习其他工厂模式的入门。此外,工厂方法模式还有一位“大哥”——抽象 阅读全文
posted @ 2018-09-29 17:24 twoheads 阅读(286) 评论(0) 推荐(0) 编辑
摘要:单例模式有饿汉模式、懒汉模式、静态内部类、枚举等方式实现,但由于以上模式的构造方法是私有的,不可继承,Spring为实现单例类可继承,使用的是单例注册表的方式(登记式单例)。 什么是单例注册表呢, 登记式单例实际上维护的是一组单例类的实例,将这些实例存储到一个Map(登记簿)中,对于已经登记过的单例 阅读全文
posted @ 2018-09-29 14:33 twoheads 阅读(6728) 评论(2) 推荐(0) 编辑
摘要:'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。下面转一篇文章。 回车和换行 今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。 在计算机还没有出现之前,有一种叫做电传打字机(T 阅读全文
posted @ 2018-09-29 10:44 twoheads 阅读(10755) 评论(0) 推荐(1) 编辑
摘要:spring中用到了哪些设计模式?(顺丰) spring中常用的设计模式达到九种,我们举例说明: 第一种:简单工厂又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一。 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类。 s 阅读全文
posted @ 2018-09-28 18:05 twoheads 阅读(8564) 评论(0) 推荐(0) 编辑
摘要:TODO 阅读全文
posted @ 2018-09-28 17:41 twoheads 阅读(644) 评论(0) 推荐(0) 编辑
摘要:了解mysql缓存吗(顺丰) mysql缓存机制就是缓存sql 文本及缓存结果,用KV形式保存再服务器内存中,如果运行相同的sql,服务器直接从缓存中去获取结果,不需要在再去解析、优化、执行sql。 如果这个表修改了,那么使用这个表中的所有缓存将不再有效,查询缓存值得相关条目将被清空。表中得任何改变 阅读全文
posted @ 2018-09-28 16:11 twoheads 阅读(317) 评论(0) 推荐(0) 编辑
摘要:索引使用时遇到的问题(顺丰)--InnoDB引擎不使用自增主键导致性能问题,也可答最左前缀 InnoDB自增主键 InnoDB主索引(同时也是数据文件)的示意图: 上文讨论过InnoDB的索引实现,InnoDB使用聚集索引,数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子 阅读全文
posted @ 2018-09-28 14:55 twoheads 阅读(623) 评论(0) 推荐(0) 编辑
摘要:我们经常会涉及到对时间的处理,例如登陆网站,我们会看到网站首页显示XXX,欢迎您!今天是XXXX年。。。。某些网站会记录下用户登陆的时间,比如银行的一些网站,对于这些经常需要处理的问题,Java中提供了Calendar这个专门用于对日期进行操作的类,那么这个类有什么特殊的地方呢,首先我们来看Cale 阅读全文
posted @ 2018-09-28 11:26 twoheads 阅读(6549) 评论(0) 推荐(0) 编辑
摘要:1、TCP与UDP区别总结: 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付Tcp通过校验和,重传控制,序号标识,滑 阅读全文
posted @ 2018-09-27 16:38 twoheads 阅读(9871) 评论(0) 推荐(0) 编辑
摘要:《高性能Mysql》原文 聚簇索引如下图为聚簇所有的存储方式,聚簇实际不是一种索引,而是一种数据的存储方式,InnoDB的聚簇事假在同一个结构中保存了B-Tree索引和数据行。 当表有聚簇索引时,他的数据行实际存在放叶子页。InnoDb通过主键聚集数据,如果没有定义主键则InnoDB会选择一个唯一的 阅读全文
posted @ 2018-09-27 14:58 twoheads 阅读(1190) 评论(0) 推荐(0) 编辑
摘要:比如mysql 单列索引是将该列数据当做关键字构建一颗b+tree,但是组合索引是如何实现的呢?比如两个字段的组合索引,SELECT * FROM TABLE1 WHERE A=22 AND b=33 ; 是要建两棵树吗?如果只建立一颗树,那b列是如何存放的? 一棵树 如果是单列,就按这列数据进行排 阅读全文
posted @ 2018-09-27 14:34 twoheads 阅读(2330) 评论(0) 推荐(0) 编辑
摘要:★ B-Tree索引:每一个叶子节点都包含指向下一个叶子节点的指针,从而方便叶子节点的范围遍历。B-Tree通常意味着所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同,很适合查找范围数据。 ★ B+树索引:并不能找到一个给定健值的具体行,B+树索引只能找到被查找数据行所在的页,然后从数据库将 阅读全文
posted @ 2018-09-27 13:29 twoheads 阅读(870) 评论(0) 推荐(0) 编辑
摘要:简介: B+树中只有叶子节点会带有指向记录的指针,而B树则所有节点都带有 B+树索引可以分为聚集索引和非聚集索引 mysql使用B+树,其中Myisam是非聚集索引,innoDB是聚集索引 聚簇索引索引的叶节点就是数据节点;而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。 B树 阅读全文
posted @ 2018-09-27 10:53 twoheads 阅读(5752) 评论(0) 推荐(0) 编辑
摘要:一、MySQL存储引擎:MySQL将数据用各种不同的技术存储在文件中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。这些不同的技术以及配套的相关功能在 mysql中被称作存储引擎(也称作表类型)。建表时,选择合适的存储引擎很重要,如果到后期再更换将 阅读全文
posted @ 2018-09-26 14:04 twoheads 阅读(165) 评论(0) 推荐(0) 编辑
摘要:线程安全是并发编程中的重要关注点,应该注意到的是,造成线程安全问题的主要诱因有两点,一是存在共享数据(也称临界资源),二是存在多条线程共同操作共享数据。因此为了解决这个问题,我们可能需要这样一个方案,当存在多个线程操作共享数据时,需要保证同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程 阅读全文
posted @ 2018-09-25 17:36 twoheads 阅读(1492) 评论(0) 推荐(0) 编辑
摘要:思路:通过ThreadPoolExecutor创建线程池,它有一些参数,任务提交给线程池之后的处理流程。不过java doc中,并不提倡我们直接使用ThreadPoolExecutor,而是使用Executors类中提供的几个静态方法来创建线程池,各方法的区别,优缺点,问题。 一.Java中的Thr 阅读全文
posted @ 2018-09-25 10:59 twoheads 阅读(424) 评论(0) 推荐(0) 编辑
摘要:CompletionService原理:内部通过阻塞队列+FutureTask,实现了任务先完成可优先获取到,即结果按照完成先后顺序排序。 一般情况下,使用Runnable接口、Thread实现的线程我们都是无法返回结果的。但是如果对一些场合需要线程返回的结果。就要使用用Callable、Futur 阅读全文
posted @ 2018-09-21 15:43 twoheads 阅读(375) 评论(0) 推荐(0) 编辑
摘要:比较简单,主要用到clone() 大同小异的工作周报 Sunny软件公司一直使用自行开发的一套OA (Office Automatic,办公自动化)系统进行日常工作办理,但在使用过程中,越来越多的人对工作周报的创建和编写模块产生了抱怨。追其原因,Sunny软件公司的OA管理员发现,由于某些岗位每周工 阅读全文
posted @ 2018-09-21 11:36 twoheads 阅读(194) 评论(0) 推荐(0) 编辑
摘要:看Java核心技术1的时候看到HashMap的对象,书中讲到: 1.如果有一个值,对应的键不再使用他了,但由于key与value之间存在强引用,是不会被垃圾回收的 2.垃圾回收器跟踪活动的对象,只要映射对象是活动的,其中的所有桶也是活动的,它们不能被回收 所以做了下面的测试: 测试结果: 果然,GC 阅读全文
posted @ 2018-09-20 17:11 twoheads 阅读(1266) 评论(0) 推荐(0) 编辑
摘要:恢复内容开始 意图:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。 主要解决:职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处 阅读全文
posted @ 2018-09-20 16:28 twoheads 阅读(549) 评论(0) 推荐(0) 编辑
摘要:意图:将对象组合成树形结构以表示"部分-整体"的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 主要解决:它在我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。 何时使用: 1、您想表示对象 阅读全文
posted @ 2018-09-20 14:34 twoheads 阅读(347) 评论(0) 推荐(0) 编辑
摘要:现象: 公司windows定期修改过密码后 一直报错。push的时候显示“Authentication Failed for http://x.x.x.x/x/git” 猜想: 发现可能是账号问题。 于是进入“控制面板”——“用户账户”-凭据管理器——windows凭据(搜索凭据管理器) 找到了gi 阅读全文
posted @ 2018-09-20 11:28 twoheads 阅读(8873) 评论(2) 推荐(2) 编辑
摘要:处理多维度变化 在正式介绍桥接模式之前,我先跟大家谈谈两种常见文具的区别,它们是毛笔和蜡笔。假如我们需要大中小3种型号的画笔,能够绘制12种不同的颜色,如果使用蜡笔,需要准备3×12 = 36支,但如果使用毛笔的话,只需要提供3种型号的毛笔,外加12个颜料盒即可,涉及到的对象个数仅为 3 + 12 阅读全文
posted @ 2018-09-19 17:06 twoheads 阅读(2464) 评论(0) 推荐(0) 编辑
摘要:装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或者排气扇。在购买开关时,我们并不知道它将来到底用于控制什么电器,也就是说,开关与电灯、排气扇并无直接关系,一个开关在安装之后可能用来控制电灯,也可能用来控制排气扇或者其他电器设备。开关与电器之间通过电线建立连 阅读全文
posted @ 2018-09-19 15:10 twoheads 阅读(257) 评论(0) 推荐(0) 编辑
摘要:外观模式(Facade Pattern)向客户端提供了一个客户端可以访问系统的接口,隐藏系统的复杂性 医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其“分而治之”,把一个系统划分为几个较小的子系统。如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号、门诊 阅读全文
posted @ 2018-09-18 17:37 twoheads 阅读(347) 评论(0) 推荐(0) 编辑
摘要:创建型: 2 个 (工厂模式, 单例模式) 结构型: 6 个 (适配器模式, 组合模式, 装饰者模式, 代理模式, 外观模式, 桥梁模式) 行为型: 8 个 (中介者模式, 策略模式, 模板模式, 观察者模式, 迭代器模式, 责任链模式, 命令模式, 状态模式) 1.1创建型模式 能够高效地创建对象 阅读全文
posted @ 2018-09-18 17:06 twoheads 阅读(191) 评论(0) 推荐(0) 编辑
摘要:装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 意图:动态地给一个对象添加一些额外的 阅读全文
posted @ 2018-09-18 16:33 twoheads 阅读(322) 评论(0) 推荐(0) 编辑
摘要:2.适配器模式分类 有三种分类: 类适配器 (通过引用适配者进行组合实现) 对象适配器(通过继承适配者进行实现) 接口适配器 (通过抽象类来实现适配) 前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。 3.适配器的实例讲解 (1)类适配器模式 原理:通过继承来实现适配器功能。 当我们要 阅读全文
posted @ 2018-09-17 17:59 twoheads 阅读(188) 评论(0) 推荐(0) 编辑
摘要:1. 背景 ThreadLocal源码解读,网上面早已经泛滥了,大多比较浅,甚至有的连基本原理都说的很有问题,包括百度搜索出来的第一篇高访问量博文,说ThreadLocal内部有个map,键为线程对象,太误导人了。 ThreadLocal非常适合对Java多线程编程感兴趣的程序员作为入门类阅读,原因 阅读全文
posted @ 2018-09-17 14:21 twoheads 阅读(220) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal是什么 ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用ThreadLocal,就可能会导致内存泄漏。 ThreadLocal的实现是这样的:每个Thread 维 阅读全文
posted @ 2018-09-14 14:31 twoheads 阅读(4555) 评论(0) 推荐(0) 编辑
摘要:首先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。 另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并 阅读全文
posted @ 2018-09-14 11:14 twoheads 阅读(345) 评论(0) 推荐(0) 编辑
摘要:一、MySQL扩展具体的实现方式 随着业务规模的不断扩大,需要选择合适的方案去应对数据规模的增长,以应对逐渐增长的访问压力和数据量。 关于数据库的扩展主要包括:业务拆分、主从复制,数据库分库与分表。这篇文章主要讲述数据库分库与分表 (1)业务拆分 在 大型网站应用之海量数据和高并发解决方案总结一二 阅读全文
posted @ 2018-09-13 16:15 twoheads 阅读(24998) 评论(1) 推荐(3) 编辑
摘要:目前很多互联网系统都存在单表数据量过大的问题,这就降低了查询速度,影响了客户体验。为了提高查询速度,我们可以优化sql语句,优化表结构和索引,不过对那些百万级千万级的数据库表,即便是优化过后,查询速度还是满足不了要求。这时候我们就可以通过分表降低单次查询数据量,从而提高查询速度,一般分表的方式有两种 阅读全文
posted @ 2018-09-13 15:36 twoheads 阅读(1722) 评论(0) 推荐(0) 编辑
摘要:重入锁ReentrantLock是排他锁,排他锁在同一时刻仅有一个线程可以进行访问,但是在大多数场景下,大部分时间都是提供读服务,而写服务占有的时间较少。然而读服务不存在数据竞争问题,如果一个线程在读时禁止其他线程读势必会导致性能降低。所以就提供了读写锁。 读写锁维护着一对锁,一个读锁和一个写锁,读 阅读全文
posted @ 2018-09-12 15:59 twoheads 阅读(3412) 评论(0) 推荐(2) 编辑
摘要:概要: ArrayBlockingQueue的内部是通过一个可重入锁ReentrantLock和两个Condition条件对象来实现阻塞 注意这两个Condition即ReentrantLock的Condition:ReentrantLock的内部类Sync继承了AQS这个抽象类,Sync的newC 阅读全文
posted @ 2018-09-11 17:27 twoheads 阅读(256) 评论(0) 推荐(0) 编辑
摘要:写入时复制(CopyOnWrite) 什么是CopyOnWrite容器 CopyOnWrite容器即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往当前容器添加,而是先将当前容器进行Copy,复制出一个新的容器,然后新的容器里添加元素,添加完元素之后,再将原容器的引用指向新的容器 阅读全文
posted @ 2018-09-11 16:00 twoheads 阅读(244) 评论(0) 推荐(0) 编辑
摘要:<T extends Comparable<? super T>>首先这是运用了java的泛型①extends后面跟的类型如<任意字符 extends 类/接口>表示泛型的上限 ②同样的super表示泛型的下限③<T extends Comparable<? super T>>这里来分析T表示任意字 阅读全文
posted @ 2018-09-11 14:00 twoheads 阅读(1999) 评论(0) 推荐(0) 编辑
摘要:(问题:深拷贝的实现方式,除了重写clone()) 什么是浅拷贝和深拷贝 首先需要明白,浅拷贝和深拷贝都是针对一个已有对象的操作。那先来看看浅拷贝和深拷贝的概念。 在 Java 中,除了基本数据类型(元类型)之外,还存在 类的实例对象 这个引用数据类型。而一般使用 『 = 』号做赋值操作的时候。对于 阅读全文
posted @ 2018-09-10 16:28 twoheads 阅读(1032) 评论(0) 推荐(0) 编辑
摘要:一、基本概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程; (2)序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上 阅读全文
posted @ 2018-09-10 15:40 twoheads 阅读(680) 评论(0) 推荐(0) 编辑
摘要:相关资料 IO基本概念 Linux环境 同步异步阻塞非阻塞 同步与异步 阻塞与非阻塞 IO模型Reference Link 阻塞IO模型 非阻塞IO模型 IO复用模型 信号驱动异步IO模型 异步IO模型 总结 AIOBIONIO Java对BIONIOAIO的支持 AIOReference Link 阅读全文
posted @ 2018-09-10 13:40 twoheads 阅读(795) 评论(0) 推荐(0) 编辑
摘要:netty是什么 Netty是一个基于Java NIO的client-server网络服务框架,人们可以利用netty快速地开发网络应用。同时netty相对于其他网络框架更加简单并且扩展性更强,这主要得益于其提供的简单易用的api将业务逻辑和网络处理代码解耦开来。能够使你更加专注于业务的实现而不需要 阅读全文
posted @ 2018-09-10 09:51 twoheads 阅读(436) 评论(0) 推荐(0) 编辑
摘要:前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂。针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三方接口。通常,我们处理方法是让代码同步顺序的去调取这些接口。显然,调取接口数量的增加必然会造成响应时 阅读全文
posted @ 2018-09-07 17:51 twoheads 阅读(1903) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/anxpp/article/details/51512200 源码:https://github.com/anxpp/Java-IO 阅读全文
posted @ 2018-09-07 16:30 twoheads 阅读(194) 评论(0) 推荐(0) 编辑
摘要:一、BIO 在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒 阅读全文
posted @ 2018-09-07 15:59 twoheads 阅读(226) 评论(0) 推荐(0) 编辑
摘要:几篇解释的不错的文章: BIO NIO AIO NIO.2 入门,第 1 部分: 异步通道 API 使用异步 I/O 大大提高应用程序的性能 阅读全文
posted @ 2018-09-07 14:28 twoheads 阅读(163) 评论(0) 推荐(0) 编辑
摘要:一、引言 Java1.4之前的早期版本,Java对I/O的支持并不完善,开发人员再开发高性能I/O程序的时候,会面临一些巨大的挑战和困难,主要有以下一些问题: (1)没有数据缓冲区,I/O性能存在问题 (2)没有C或者C++中的Channel概念,只有输入和输出流 (3)同步阻塞式I/O通信(BIO 阅读全文
posted @ 2018-09-06 16:57 twoheads 阅读(369) 评论(0) 推荐(0) 编辑
摘要:概要: AQS维护了一个同步队列 Condition是JUC的一个接口,AQS的ConditionObject实现了这个接口,维护了一个等待队列(等待signal信号的队列) 线程调用reentrantLock.lock()时,线程被加入到AQS同步队列中; 线程A调用condition.await 阅读全文
posted @ 2018-09-05 17:10 twoheads 阅读(1284) 评论(0) 推荐(1) 编辑
摘要:本篇文章将介绍Condition的实现原理和基本使用方法,基本过程如下: 1、Condition提供了await()方法将当前线程阻塞,并提供signal()方法支持另外一个线程将已经阻塞的线程唤醒。 2、Condition需要结合Lock使用 3、线程调用await()方法前必须获取锁,调用awa 阅读全文
posted @ 2018-09-05 14:24 twoheads 阅读(1469) 评论(0) 推荐(0) 编辑
摘要:一、前言 有了前面分析的基础,现在,接着分析CyclicBarrier源码,CyclicBarrier类在进行多线程编程时使用很多,比如,你希望创建一组任务,它们并行执行工作,然后在进行下一个步骤之前等待,直至所有的任务都完成,和join很类似,下面,开始分析源码。 二、CyclicBarrier数 阅读全文
posted @ 2018-09-04 16:37 twoheads 阅读(312) 评论(0) 推荐(0) 编辑
摘要:概要: ReentrantLock类内部总共存在Sync、NonfairSync、FairSync三个类,NonfairSync与FairSync类继承自Sync类,Sync类继承自AbstractQueuedSynchronizer抽象类 对ReentrantLock类的操作大部分都直接转化为对S 阅读全文
posted @ 2018-09-04 15:26 twoheads 阅读(284) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/ligang2585116/article/details/71094887 开发过程中,你肯定会遇到这样的场景: 场景一: 糟了,我刚把不想要的代码,commit到本地仓库中了,但是还没有做push操作! 场景二: 彻底完了,刚线上更新的代码出现问题了, 阅读全文
posted @ 2018-09-04 09:47 twoheads 阅读(4144) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示