自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hoaven的博客

贫穷乃万恶之本。

  • 博客(45)
  • 资源 (18)
  • 收藏
  • 关注

原创 阿里巴巴面经、面试流程、面试题

从去年年中一直到今年年初,我面阿里总共面了5-6次,经历了三次完整的4轮技术面 + 1轮HR面,目前将面试过程和常见题目记录一下,供参考。面试流程面试轮次阿里社招一般都是P6级别以上,技术面4轮以上 + 1轮HR面。阿里校招一般都是P4、P5级别,技术面3轮 + 1轮HR面。面试侧重点以社招P6为例,来看看每轮考察的侧重点。一面一面面试官一般是你组内师兄或组长,主要考察Java基础、中间件原理以及项目经历;面试时长30-60分钟。Java基础和中间件考察范围会在文末附上。项目经历这块,选

2020-05-19 12:01:05 11885

原创 【面试题】详解 ThreadPoolExecutor 的参数含义及源码执行流程?

详解 ThreadPoolExecutor 的参数含义及源码执行流程?线程池是为了避免线程频繁的创建和销毁带来的性能消耗,而建立的一种池化技术,它是把已创建的线程放入“池”中,当有任务来临时就可以重用已有的线程,无需等待创建的过程,这样就可以有效提高程序的响应速度。但如果要说线程池的话一定离不开 ThreadPoolExecutor ,在阿里巴巴的《Java 开发手册》中是这样规定线程池的:线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理

2020-05-09 17:52:53 2524

原创 Java架构师视频+授课资料

近期整理了Java架构师相关视频和资料,供大家学习,获取链接在文末。若链接失效请留言.一、视频部分截图 二、资料部分截图链接:https://pan.baidu.com/s/1RHh5XsxJlMMRj3fejTKEdA 密码:79d6...

2020-05-09 17:51:27 4627 8

原创 【面试题】线程的状态有哪些?它是如何工作的?

线程的状态有哪些?它是如何工作的?线程(Thread)是并发编程的基础,也是程序执行的最小单元,它依托进程而存在。一个进程中可以包含多个线程,多线程可以共享一块内存空间和一组系统资源,因此线程之间的切换更加节省资源、更加轻量化,也因此被称为轻量级的进程。典型回答线程的状态在 JDK 1.5 之后以枚举的方式被定义在 Thread 的源码中,它总共包含以下 6 个状态:NEW,新建状态,线程被创建出来,但尚未启动时的线程状态;RUNNABLE,就绪状态,表示可以运行的线程状态,它可能正在运行,或者

2020-05-09 17:48:32 811

原创 【面试题】HashMap 底层实现原理是什么?JDK8 做了哪些优化?

HashMap 底层实现原理是什么?JDK8 做了哪些优化?HashMap 是使用频率最高的类型之一,同时也是面试经常被问到的问题之一,这是因为 HashMap 的知识点有很多,同时它又属于 Java 基础知识的一部分,因此在面试中经常被问到。典型回答在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的组成结构如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将

2020-05-09 17:47:40 2058 1

原创 【海量数据处理】如何在大量的数据中找出不重复的整数?

题目描述在 2.5 亿个整数中找出不重复的整数。注意:内存不足以容纳这 2.5 亿个整数。解答思路方法一:分治法与前面的题目方法类似,先将 2.5 亿个数划分到多个小文件,用 HashSet/HashMap 找出每个小文件中不重复的整数,再合并每个子结果,即为最终结果。方法二:位图法位图,就是用一个或多个 bit 来标记某个元素对应的值,而键就是该元素。采用位作为单位来存储数据,可以大大节省存储空间。位图通过使用位数组来表示某些元素是否存在。它可以用于快速查找,判重,排序等。不是很清楚?我先举

2020-05-08 17:35:16 930

原创 【海量数据处理】如何从大量数据中找出高频词?

如何从大量数据中找出高频词?题目描述有一个 1GB 大小的文件,文件里每一行是一个词,每个词的大小不超过 16B,内存大小限制是 1MB,要求返回频数最高的 100 个词(Top 100)。解答思路由于内存限制,我们依然无法直接将大文件的所有词一次读到内存中。因此,同样可以采用分治策略,把一个大文件分解成多个小文件,保证每个文件的大小小于 1MB,进而直接将单个小文件读取到内存中进行处理。...

2020-05-08 17:06:27 3841 1

原创 【海量数据处理】如何从大量的 URL 中找出相同的 URL?

如何从大量的 URL 中找出相同的 URL?题目描述给定 a、b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G。请找出 a、b 两个文件共同的 URL。解答思路每个 URL 占 64B,那么 50 亿个 URL占用的空间大小约为 320GB。5,000,000,000 * 64B ≈ 5GB * 64 = 320GB由于内存大小只有 4G,因此...

2020-05-08 16:45:38 1580

原创 【消息队列】如何保证MQ的高可用?

面试题如何保证消息队列的高可用?面试官心理分析如果有人问到你 MQ 的知识,高可用是必问的。上一讲提到,MQ 会导致系统可用性降低。所以只要你用了 MQ,接下来问的一些要点肯定就是围绕着 MQ 的那些缺点怎么来解决了。要是你傻乎乎的就干用了一个 MQ,各种问题从来没考虑过,那你就杯具了,面试官对你的感觉就是,只会简单使用一些技术,没任何思考,马上对你的印象就不太好了。这样的同学招进来要是做...

2020-04-28 10:04:53 1677

原创 为什么要使用消息队列?消息队列有什么优缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ的区别?

面试题为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架...

2020-04-28 09:25:59 385

原创 docker兼容性报错

1. 错误日志error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/images/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio...

2018-11-21 11:39:38 1028

原创 Docker / Kubernetes部署Java / SpringBoot项目

一、部署流程二、构建镜像1、创建应用可以到 http://start.spring.io/ (或者借助IDE)创建一个SpringBoot 的应用,在创建的时候,请选择Web 依赖,以方便部署到 Kubernetes 之后可以查看效果。2、暴露测试接口新建一个Rest接口:@RestController public class HelloCtroller { @RequestM...

2018-11-21 11:34:52 7945 2

原创 Redis常用场景、数据结构、读写一致、缓存穿透、缓存雪崩等

一、分布式系统为什么要用Redis1、性能 我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。2、并发 在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用 Redis 做一个缓冲操作,让请求先访问到 Redis,而不是直接访问数据库。...

2018-08-31 10:50:01 576

原创 Java面试题-阿里、饿了么、链家、携程

一、J2SE部分1、Java基础==与equals()方法的区别?1. ==在比较基本数据类型时比较的是值,比较两个对象时比较的是地址值;2. equals()方法存在于Object类中,Object类中equals()方法底层依赖的是==操作, 在所有没有重写equals()的类中,调用equals()其实和使用==的效果一样,也是比较的地址值。 Strin...

2018-07-19 21:29:36 7572 4

原创 Nginx企业应用

一、proxy参数深入理解1、请求头设置参数(location中) nginx支持在原请求里添加和设置参数proxy_set_header Host $host; 设置请求host为客户端访问的域名(指向nginx虚拟服务),由于nginx重发了一次请求,所以默认服务节点收到的请求host为反向代理指向的服务节点的host。2、连接相关参数(一般配置在loc...

2018-07-09 19:08:50 507

原创 Nginxa安装、命令、配置以及核心模块

写在前面:负载均衡:请求分发(转发)–一次请求反向代理:代理服务器重新发起请求(重定向)–两次请求一、nginx的安装1、下载 http://nginx.org/download/ –> ./configure 运行nginx配置文件 –> make 编译 –> make install 安装 brew install nginx ...

2018-07-09 19:08:07 704

原创 Java并发-剖析ThreadLocal源码

一、ThreadLocal是什么? ThreadLocal与线程同步机制不同,线程同步机制是多个线程共享同一个变量,而ThreadLocal是为每一个线程创建一个单独的变量副本,故而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程所对应的副本。可以说ThreadLocal为多线程环境下变量问题提供了另外一种解决思路。二、ThreadLocal常用方法的源码...

2018-07-03 15:05:18 210

原创 Quartz集群数据库连接失效

一、问题描述[2018-6-5 13:57:11] [WARN ] [com.mchange.v2.c3p0.impl.NewPooledConnection:425] - [c3p0] A PooledConnection that has already signalled a Connection error is still in use![2018-6-5 13:57:11]...

2018-06-06 10:56:57 2652

原创 Java线程池的实现--Executor、ThreadPoolTaskExecutor、@Async的使用

一、为什么要使用线程池 当我们需要的并发执行线程数量很多时,且每个线程执行很短的时间就结束了,这样,我们频繁的创建、销毁线程就大大降低了工作效率(创建和销毁线程需要时间、资源)。java中的线程池可以达到这样的效果:一个线程执行完任务之后,继续去执行下一个任务,不被销毁,这样线程利用率提高了。二、Jdk 1.5后线程池 //【固定的线程池】定义进程池并指定其大小 ...

2018-06-05 17:33:21 5598

原创 filter过滤器注入bean实例时注入失败null

1、问题描述 SpringBoot中filter注入bean时注入失败,bean一直为空。@Slf4j@Componentpublic class RestAuthFilter extends FormAuthenticationFilter { //实际注入为null @Autowired MobileDeviceService mobileDev...

2018-05-30 17:44:02 6566

原创 Cannot forward to error page for request [/wechat/portal] as the response has already been commit

1、问题描述 最近使用Spring Boot搭建 web 框架过程中遇到这样一个问题:该接口接收微信服务器的签名校验,但是请求的时候报了ERROR。2018-05-30 13:56:14.265 ERROR - Cannot forward to error page for request [/wechat/portal/hdd] as the response has al...

2018-05-30 17:05:49 23031 2

原创 Tomcat This is very likely to create a memory leak. Stack trace of thread 错误分析

1、问题描述 启动tomcat部署项目时,报This is very likely to create a memory leak. Stack trace of thread错误。29-May-2018 12:30:09.322 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.sta...

2018-05-30 10:18:55 118618 1

原创 AngularJS教学视频+资料+ES6教学视频

获取链接在文末,若失效请留言。一、视频截图 二、资料截图链接:https://pan.baidu.com/s/1gfMA1fNME6yCD50vPScmvA 密码:0tgy

2018-05-02 17:32:57 849 1

原创 数据结构--图(Java版)

一、图的基本概念 线性表和树两类数据结构,线性表中的元素是“一对一”的关系,树中的元素是“一对多”的关系,本章所述的图结构中的元素则是“多对多”的关系。 图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。无向图: 无向图是由顶点和边构成。有向图: 有向图是由顶点和有...

2018-05-02 16:23:37 25544 7

原创 数据结构--树(Java版)

一、树节点的表示/** * 树的节点 * @author hoaven * */public class TreeNode<T> { T data; TreeNode<T> left; TreeNode<T> right; public TreeNode(T data){ this.data =...

2018-05-02 15:14:03 1082

原创 数据结构--冒泡排序、归并排序、快速排序、选择排序、插入排序(Java版)

一、冒泡排序1、思路 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 针对所有的元素重复以上的步骤,直到没有任何一对元素需要比较。 2、实现/** * 排序算法的接口 * @author hoaven */public interface ISort { /** * 对数组array进行升序排序 * @p...

2018-05-02 11:06:48 705

原创 数据结构--二分查找(Java版)

二分查找:在一个有序数组中查找某个值。一、循环实现/** * 使用循环的方式实现二分查找 * * @param array * @param value * @return 找到了value就返回该值,否则返回null */ public static Integer searchCirculation(int[...

2018-04-28 17:53:17 276

原创 数据结构--队列(Java版)

一、队列介绍 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列也是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的特点:先进先出二、队列的简单操作1、队列的定义/** * 队列的接口 * @author hoaven */public...

2018-04-28 17:33:57 189

原创 数据结构--堆栈(Java版)

一、栈的介绍 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈的特点:先进后出二、栈的简单操作...

2018-04-28 16:47:12 225

原创 数据结构--链表(Java版)

一、链表介绍 链表是由一系列非连续的节点组成的存储结构,链表是一种递归的数据结构,它或者为空,或者是指向一个结点的引用,该结点含有一个泛型的元素和一个指向另一个结点的引用。分类:简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明。1、单向链表 单向链表就是通过每个结点的指针指向下一个结点从而链...

2018-04-28 15:11:19 254

原创 Java后端接口、Mysql优化建议与规范

一、后端接口禁止使用递归;原因:每次递归调用时会向栈中push当前方法的运行状态(现场),而Java栈内存的使用超过限制的大小时,程序会出现栈异常;避免层级嵌套循环;注意方法、类文件中的代码量,适度分离;使用基本类型定义变量时,千万注意该变量值可能为null的情况,此时建议使用对应的包装类来定义变量;避免在同一接口中过多的访问数据库,建议次数控制在3次以内;避免过多使用static...

2018-04-28 11:25:55 1845

原创 slf4j、slf4j-logback日志框架使用

写在前面:本文旨在代码中使用@Slf4j注解实现日志处理,使用slf4j作为门面api,使用slf4j-logback作为日志绑定。一、Slf4J介绍 SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。1、依赖 <dependency> ...

2018-04-28 11:00:09 447

原创 lombok-Java插件使用

一、lombok介绍 lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。二、lombok安装1、安装插件2、引入依赖<dependency> <groupId>org.projectlombok</gr...

2018-04-28 10:26:10 394

原创 单例设计模式的几种Java实现

一、静态变量初始化实现线程安全的单例模式 static变量instance是在类被加载时初始化并仅被初始化一次,这样就可以保证只有一个instance被初始化。public class Singleton { private static Singleton instance = new Singleton(); private Singleton(){} ...

2018-04-28 09:34:46 142

原创 Redis分布式锁Java实现

一、背景 在天猫、京东、苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,可能会有几十万几百万的并发量,来抢这个手机,在高并发的情形下会对数据库服务器、文件服务器、应用服务器造成巨大的压力,严重时甚至宕机了。另一个问题是,秒杀的东西都是有量的,例如一款手机只有10台的量秒杀,那么,在高并发的情况下,成千上万条数据...

2018-04-09 11:27:42 197

原创 javassist 版本导致ClassNotFoundException: javassist.ClassPath异常

1、异常描述使用Dubbo时,引入了javassist导致出现了ClassNotFoundException: javassist.ClassPath异常,因为此异常网上资料较少,特分享出来供大家脱坑: 服务启动后报错:message: Context initialization failed (o.s.web.context.ContextLoader:350) [localhost-sta

2018-03-30 11:34:29 15319 2

原创 java.util.concurrent源码分析(五)ConcurrentHashMap实现

1、线程安全和非线程安全引入问题:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?以上是Java面试中常见的提问,众所周知,前者是非线程安全的,后者是线程安全的。那何为非线程安全?何为线程安全?线程安全:线程安全就是说多线程访问同一代码(临界资源),不会产生不确定的结...

2018-03-27 18:40:53 165

原创 java.util.concurrent源码分析(四)ReentrantReadWriteLock实现

1、ReentrantReadWriteLock介绍(1)ReentrantReadWriteLock与ReentrantLock ReentrantLock实现了标准的互斥操作, 也就是一次只能有一个线程持有锁, 也即所谓独占锁的概念. 显然这个特点在一定程度上面降低了吞吐量, 实际上独占锁是一种保守的锁策略, 在这种情况下任何”读/读”, “写/读”, “写/写”操作都不能同时发生.但是同样

2018-03-27 13:30:18 149

原创 java.util.concurrent源码分析(三)ReentrantLock实现

1、ReentrantLock介绍(1)简介在java.util.concurrent.locks包中有很多Lock的实现类, 常用的有ReentrantLock, ReadWriteLock(实现类ReentrantReadWriteLock). 这些锁的实现思路都大同小异, 都依赖java.util.concurrent.AbstractQueuedSynchronizer类。...

2018-03-26 20:13:36 188

原创 java.util.concurrent源码分析(二)atomic包

1、atimic包介绍Aomic数据类型有四种类型:AomicBooleanAomicIntegerAomicLongAomicReferrence:引用,针对Object以上四种类型对应的数组类型所有原子操作都是依赖于sun.misc.Unsafe这个类,它是Java的一个安全的开发工具。2、关于CAS现代主流CPU都支持的一种硬件级别的原子操作, 比较并交换, 操作包含三个操作数:*

2018-03-26 17:50:51 217

深入理解Java虚拟机:JVM高级特性与最佳实践(两本高清供选择)pdf

《深入理解Java虚拟机:JVM高级特性与最佳实践》内容简介:作为一位Java程序员,你是否也曾经想深入理解Java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,本书极尽化繁为简之妙,能带领你在轻松中领略Java虚拟机的奥秘。本书是近年来国内出版的唯一一本与Java虚拟机相关的专著,也是唯一一本同时从核心理论和实际运用这两个角度去探讨Java虚拟机的著作,不仅理论分析得透彻,而且书中包含的典型案例和最佳实践也极具现实指导意义。

2018-04-03

架构探险——从零开始写Java Web框架高清带书签pdf

本书首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA、Maven、Git 等开发工具搭建 Java Web 应用;接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求分析与系统设计开始,带领读者动手完成该 Web 应用,完善相关细节,并对已有代码进行优化;然后基于传统 Servlet 框架搭建一款轻量级 Java Web 框架,一切都是从零开始,逐个实现类加载器、Bean 容器、IoC 框架、MVC 框架,所涉及的代码也是整个框架的核心基础。为了使框架具备 AOP 特性,从代理技术讲到 AOP 技术,从 ThreadLocal 技术讲到事务控制技术。最后对框架进行优化与扩展,通过对现有框架的优化,使其可以提供更加完备的功能,并以扩展 Web 服务插件与安全控制插件为例,教会读者如何设计一款可扩展的Web应用框架。

2018-04-03

RabbitMQ实战 高效部署分布式消息队列完整版带书签pdf

AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

2017-12-22

Java多线程编程核心技术_完整版_高清带书签

《Java多线程编程核心技术》作者高洪岩。想要学习多线程的朋友,这本书是我大力推荐的,我的个人博客里面二十多篇的多线程博文都是基于此书,并且在这本书的基础上进行提炼和总结而写出来的。 此书和《Java并发编程实战》 相反,这本书的特点是大篇幅的代码+小篇幅的精讲解,可能这和中国人写的书比较偏向实用主义的风格有关。本书关于线程安全、synchronized、 Reentrant、Timer等等都用详细的代码进行了讲解,而且每个大知识点下的多个小知识点都会详细讲解到,非常有实践价值。 有兴趣的朋友们,我相信只要你们跟着这本书里面的代码敲、运行、思考,三步走,对于多线程的使用与理解一定会进几大步。 不 过这本书的缺点就是对于Java并发包下的一些类像CountDownLatch、Semphore、CyclicBarrier、Future、 Callable等都没有讲到,重点的CAS和AQS也没有触及,重点类的实现原理也没有提。当然,这很深入了,在学习了这本书之后如果能再去对这些知识 进行一些学习、研究的话,你一定会慢慢成长为一个很厉害的多线程高手。

2017-09-26

spring cloud hystrix原理介绍及使用

spring cloud hystrix通过服务隔离、熔断、降级等手段控制依赖服务的延迟与失败。

2017-08-18

微信开发笔记--微信公众号研发公司新人培训笔记(基于java)

基于java的微信开发笔记,专为公司新人准备的笔记。

2016-12-08

AngularJS开发下一代Web应用(完整版高清带书签)

高清版带书签,接近于文字版

2016-12-08

metronic 1.5.5完整版源码及开发文档

metronic 1.5.5完整版,包含四套模版,前台2套后台两套,带全套文档和psd。

2016-12-08

Base64加密解密java工具类

Base64加密解密java工具类

2016-09-30

apache-tomcat-7.0.72

2016-09-30

Maven实战高清pdf

2016-09-30

AngularJS权威教程源码

AngularJS权威教程书中全部源码,推荐购买本书籍,网上pdf看的很是蛋疼。

2016-09-30

微信公众号二次开发java教程(含源码)

这里面有微信公众号二次开发java版教程,并且含有源码,希望对正在学习的筒子们有用!

2016-09-30

hadoop笔记和相关资料

2016-08-31

Git详细教程

这是我根据在公司里常用的git命令和场景总结出来的,希望能帮到大家。

2016-08-31

详细介绍Linux-shell脚本基础学习

这是Shell编程的基础,希望对大家有用。

2016-08-31

空空如也

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

TA关注的人

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