自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

liuyanmin专栏

技术在于积累

  • 博客(92)
  • 资源 (16)
  • 收藏
  • 关注

原创 基于ReentrantLock深入分析AQS原理

基于ReentrantLock深入分析AQS原理此篇文章基于JDK8来分析的,在JDK9及以后的版本源码实现略有不同,不过思路是一样的,只是在JDK9中推出了新的类型 VarHandle 变量句柄,替代Unsafe的大部分功能。Java中大部分同步类(ReentrantLock、CountDownLatch、Semaphore、ReentrantReadWriteLock等)都是基于AQS实现的。AQS提供了原子式管理同步状态(state)、可以阻塞和唤醒线程、FIFO双端队列模型实现的简单框架。AQS

2021-03-14 16:11:03 261

原创 基于AQS实现同步锁

基于AQS实现同步锁一、实现原理本篇文章基于AQS来手动实现一个同步锁,实现锁的基本功能,加锁和解锁。在实现之前,需要了解什么是AQS,以及AQS的核心原理。然后,可参考ReentrantLock的实现原理,来实现自己的同步锁。以下是ReentrantLock的实现大体思路:实现步骤:自定义同步类Sync,继承AbstractQueuedSynchronizor,重写tryAcquire() 和 tryRelease()。实现加锁解锁api接口,lock() 和 unlock()。这两个法

2021-03-08 21:42:53 305

原创 高并发下实现线程安全的i++操作

高并发下实现线程安全的i++操作一、使用synchronized这个比较简单,就是在进行i++操作时,直接使用synchronized加锁,也可以使用Lock加锁,本质都是一样的(锁原理不同),最终都是通过加锁来保证多线程安全的。public class Synchronized_add { int i = 0; public synchronized void add() { i++; } public static void main(String[

2021-03-06 21:56:47 1396

原创 放弃丑陋的 swagger-ui,使用 knife 接口文档生成神器

文章目录接口生成利器 knife 介绍springboot 整合 knifepom.xml 文件增加依赖编写Swagger2Config配置文件注意事项总结knife Gitee 地址:https://gitee.com/xiaoym/knife4j接口生成利器 knife 介绍之前项目中一直在使用 swagger 生成后台接口文档,很好用,至少比之前用 word 写接口文档 postman 调试接口方便多了。swagger 提供了一套前端页面,但是需要在代码中加入注解,如: @Api @ApiOpe

2021-02-21 20:05:58 2629

原创 linux下PHP安装gd库

    在这里必须记录一下我gd的安装过程,首先说明一下,PHP我只是一个小白白,由于搭建个人博客的需要缩略图,所有需要PHP安装gd,PHP安装的时候默认是没有安装gd的,经过了周末两天的挣扎,终于把gd扩展按上了,超级开心,博客可以接着往下弄了。    废话不多少,下面展示我安装的过程(历尽艰难啊~~~):    由于gd依赖了一些扩展包,所以需要先安装依赖包,依赖包如下:freetype-2...

2018-05-27 19:47:03 24930 3

转载 Dubbo_异常_服务注册运行正常但是Dubbo-Admin看不到服务

一、背景:1、Dubbo服务正常注册到ZooKeeper2、客户端调用Dubbo服务正常二、原因:consumer和provider配置了group信息,但是group不是dubbo,而且在Dubbo-Admin未配置分组信息。由于Dubbo-Admin默认分组是dubbo,所以在监控平台看不到服务。三、解决步骤:1、dubbo.properties添加分组信息:/usr/local/src/to...

2018-05-11 10:49:49 5048

转载 代理模式

关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理。 一、代理模式   代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代...

2018-04-10 08:56:54 494

转载 JDK 1.8 LinkedList源码分析

LinkedList是一个实现了List接口和Deque接口的双端链表。 有关索引的操作可能从链表头开始遍历到链表尾部,也可能从尾部遍历到链表头部,这取决于看索引更靠近哪一端。 LinkedList不是线程安全的,如果想使LinkedList变成线程安全的,可以使用如下方式:List list=Collections.synchronizedList(new LinkedList(...));it...

2018-03-27 21:09:56 227

转载 2018进BAT必备的Java面试总结

上周陪同之前一起工作的同事去面试(乔治,小袁,鹏飞(面试人)),第一站是去深圳,第二站上海,第三站杭州。面试什么公司我在这里就不多说了,你们知道是一线公司就行。其实本来真的没打算写这篇文章,主要是自己的记忆力不是很好,再者是最近好多人询问2018年最新的面试题有点多,我实在回答不过来,而且怕为了避免重复回答,给自己省点力气,干脆就在这里统一回复了。说实话,虽作为陪同人,面试的时候我是不可以一同进去...

2018-03-27 08:58:19 2703 1

转载 java中的fail-fast(快速失败)机制

引入在前面介绍ArrayList的扩容问题时对于modCount的操作没有详细说明,该变量的操作在add,remove等操作中都会发生改变。那么该变量到底有什么作用呢?简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentModifica...

2018-03-26 21:14:50 247

原创 ArrayList和Vector的区别jdk8

共同点:1、ArrayList和Vector都实现了List接口2、ArrayList有的方法Vector大多数也都有(不完全一样)3、底层实现都是数组不同点:1、ArrayList是线程不安全的,Vector是线程安全的。(Vector把所有的public修饰的对外提供的方法都使用synchronized修饰,使用synchronized关键字来保证线程安全的)。类似的还有HashMap和Has...

2018-03-26 20:50:40 455

转载 ArrayList源码分析jdk8

本篇博客是基于JDK8来分析ArrayList源码,通过添加注释的方式分析ArrayList类中每个方法的含义,以及重点代码的实现思路。一下内容是从网上copy过来的,自己仔细的读了一遍,感觉没有什么问题,再次记录一下。一下是通过读源码总结出来的几点:1、ArrayList底层是通过数组的方式实现的2、默认初始数组长度是103、扩容大小为原数组长度的1.5倍4、数组的长度发生变化是修改modCou...

2018-03-26 20:37:05 157

原创 微信开发模式下自定义菜单配置

微信打开开发者模式后,以前通过微信后台配置的菜单就失效了,需要通过我们自己服务器后台配置(需要开发),还有一种比较简单的方法,就是通过微信提供的“微信公众平台接口测试工具”进行配置。下面重点说一下通过微信提供的测试工具进行配置的过程。一、进入微信接口调试页面地址:https://mp.weixin.qq.com/debug接口类型选择“自定义菜单”接口列表选择“自定义菜单创建接口/menu/cre...

2018-03-23 18:07:38 6652 1

原创 Java实现微信开发者-测试账号申请及配置

最近在搞微信的开发者模式,对于第一次接触这东西的人来说还真是没有头绪,因为需要跟微信进行交互,难免会碰到一些问题,不像我们在本机开发那样,很快就能把逻辑代码写完。今天主要是让测试耽误了时间,由于微信只能绑定域名,不能使用ip地址,但是在公司中域名直接解析到线上服务器,但是线上服务器该域名下已经有服务在运行,所以不能使用线上服务器直接进行开发测试,也不能把已有的服务号打开开发者模式,因为打开开发者模...

2018-03-21 22:49:11 3812

转载 redis实现分布式锁

最近看了一些关于分布式锁相关的文章,网上关于分布式锁相关的文章也有很多,但是可能由于水平原因,什么样的都有,个人觉得下面的博客写的还不错,copy过来记录下。前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实...

2018-03-18 12:21:30 189

原创 kafka核心原理与实战

kafka介绍消息的生产和消费kafka环境搭建kafka原理之负载均衡kafka主从及副本分布kafka消息格式kafka文件系统消息的删除和压缩磁盘缓存的利用Zero-copy技术介绍说明:    本博客出自于网易云课堂视频ppt截图,使用kafka及初步的了解其内部原理使用。详细介绍及使用可以参考一下地址:http://kafka.apache.orghttps://github.com/a...

2018-03-11 11:36:06 897

转载 浅谈分布式消息技术:Kafka

Kafka的基本介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。主要应用场景是:日志收集系统和消息系统。Kafka主要设计目标如下:以时间复杂度为O(1)的方...

2018-03-08 13:00:52 458

转载 深入理解乐观锁与悲观锁

在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。无论是悲观锁还是乐观锁,都是人们定义出来的概念,可以认为是一种思想。其实不仅仅是关系型数据库系统中有乐观锁和悲观锁的概念,像memcache、hibernate、ta...

2018-02-26 16:45:56 200

转载 几张图轻松理解String.intern()

在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。 其实要搞明白String.intern(),我总结了下面几条规则: 一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用。二、通过字面量赋值创建字符串(如:String str=”...

2018-02-04 19:04:30 154

原创 SimpleDateFormat线程安全问题

使用SimpleDateFormat在多线程下处理日期但得出的结果却是错误的,这是因为SimpleDateFormat方法是非线程安全的。示例代码:class MyThread extends Thread { private SimpleDateFormat sdf; private String dateString; public MyThread(SimpleDat...

2017-11-15 21:00:04 3443

原创 List在调用add、remove方法后报java.lang.UnsupportedOperationException

今天工作中碰到List对象调用add、remove方法竟然报错,用了好几年了尽然一直没发现,不知道之前写了多少bug。在使用Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常。这是由于Arrays.asList() 返回java.util.Arrays$ArrayList,而不是Array...

2017-11-14 19:53:28 1013

原创 Linux下PHP安装redis扩展

我安装的PHP redis扩展是phpredis-2.2.7版本的步骤:1、下载phpredis-2.2.7wget http://pecl.php.net/get/redis-2.2.7.tgz  或直接在windows上下载,然后传到Linux系统上2、将redis-2.2.8.tgz放到/usr/local/目录下3、解压redis-2.2.7.tgztar -zxvf redis-2.2....

2017-11-01 21:53:27 442

转载 java emoji表情存储解决方案

1.问题产生情况我遇到这个问题是做微信开发的时候有些有用的头像用了微信的emoji表情,然而我的mysql数据库用的编码是utf8_general_ci,就是utf-8编码,结果也就报错误了。2.为什么会出现这种原因因为mysql的utf8编码的一个字符最多3个字节,但是一个emoji表情为4个字节,所以utf8不支持存储emoji表情。但是utf8的超集utf8mb4一个字符最多能有4字节,所以...

2017-10-29 16:06:37 638

转载 模板方法设计模式

在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的:  模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构  模板方法模式是所有模式中最为常见的几...

2017-09-24 09:32:46 249

转载 观察者设计模式

在生活实际中,我们经常会遇到关注一个事物数据变化的情况,例如生活中的温度记录仪,当温度变化时,我们观察它温度变化的曲线,温度记录日志等。对于这一类问题,很接近java设计模式里面的“观察者模式”,它适合解决多种对象跟踪一个对象数据变化的程序结构问题。观察者设计模式涉及到两种角色:主题(Subject)和观察者(Observer)观察者设计模式总结如下:1)主题要知道哪些观察者对其进行监测,说明主题...

2017-09-21 20:44:55 259

转载 策略设计模式

       策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构       策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:...

2017-09-10 11:33:40 229

转载 Java集合---HashMap源码剖析

一、HashMap概述二、HashMap的数据结构三、HashMap源码分析     1、关键属性     2、构造方法     3、存储数据     4、调整大小     5、数据读取                     6、HashMap的性能参数                      7、Fail-Fast机制特别声明:该片博客是对jdk7的HashMap 源码进行剖析,jdk8Ha...

2017-08-28 07:21:04 294

转载 linux 打开文件数 too many open files 解决方法

现象描述:由于生产系统网络的升级,导致F5负载均衡器无法使用。系统中正常情况下是起的双节点前置(A节点、B节点),所有客户端都访问F5的地址,然后通过F5转到A节点或B节点,由于F5无法起到负载的作用,所以F5把所有请求直接转到A节点上,导致A节点的交易量是平时的二倍,并发量增加导致系统无法创建socket连接,交易无法进行。linux系统默认的open files是1024.Linux 打开文件...

2017-07-26 10:52:05 5493 1

原创 oracle数据库开发注意事项

作为java程序员对数据库有或多或少的了解,基本使用大家都会,一些关键性的细节可能在平时的开发过程中没有注意到,导致写出来的SQL查不出数据,或查询速度特别忙、超时等情况,以下是工作中常用oracle数据库的一些总结:oracle数据库开发规范查询语句不走索引的常见原因数据库中常见的问题一、oracle数据库开发规范1、所有的名称用英文要用简单明了的英文单词或简明的英文缩写,不要用拼音,特别是拼音...

2017-06-10 09:50:37 2746

转载 Linux中history历史命令使用方法详解

当你在玩Linux的时候,如果你经常使用命令行来控制你的Linux系统,那么有效地使用命令历史机制将会使效率获得极大提升。事实上,一旦你掌握了我在下面给出的15个有关Linux history历史命令的例子,你就会发现使用history历史命令行将更有乐趣。1、使用HISTTIMEFORMAT在历史中显示TIMESTAMP通常情况下,当你在命令行中键入history时,终端中将显示你刚输入的命令及...

2017-06-08 12:44:22 5906

原创 hadoop完全分布式部署无法访问namenode的8020端口解决方案

遇到的问题:我搭建的是完全分布式系统,克隆了5台虚拟机,1台启动namenode节点,3台启动datanode节点,1台启动secondarynamenode节点,启动start-dfs.sh和start-yarn.sh脚本时,datanode节点日志报错,错误信息:2017-06-03 19:05:39,452 INFO org.apache.hadoop.ipc.Client: Retryin...

2017-06-03 19:22:49 14113

转载 CentOS下SSH配置无密码登录

如果没有安装SSH服务,通过命令安装:sudo apt-get install ssh 启动SSH服务:service sshd restartSSH无密码登录的原理如下假设A机器想要通过SSH无密码登录访问B机器,则需要在A机器上生成一对秘钥(公钥+私钥),而后将公钥复制到B机器上;当A机器通过SSH链接B机器时,B机器就会生成一个随机数,并且使用A机器的公钥(通过上一步拷贝,B机器上有A机器公...

2017-05-29 00:32:23 472

转载 Intellij IDEA+Tomcat+JRebel热部署

一、安装JRebel插件1. 在线安装 打开设置 File ->setting或者直接点设置的图标进入在线下载并安装2. 破解插件下载破解补丁具体要找到对应版本的,这边用的是6.2的破解版本(但实际安装的是6.2.2,照样可以使用)将破解版里面的jrebel.lic拷贝到C:\当前用户下\.jrebel 目录下;jrebel.jar替换C:\当前用户\.IntelliJIdea13\conf...

2017-05-05 08:29:38 3985

转载 @Controller和@RestController的区别

@Controller和@RestController的区别?官方文档:@RestController is a stereotype annotation that combines @ResponseBody and @Controller.意思是:@RestController注解相当于@ResponseBody + @Controller合在一起的作用。1)如果只是使用@RestContr...

2017-04-09 18:04:02 207

原创 linux 常用指令

常用指令ls          显示文件或目录(只显示名称)     -l           列出文件详细信息l(list),或直接使用ll命令     -a          列出当前目录下所有文件及目录,包括隐藏的a(all)mkdir         创建目录     -p           创建目录,若无父目录,则创建p(parent)cd               切换目录touc...

2017-04-07 08:43:52 290

转载 Linux下的压缩文件剖析 (tar/gzip的区别)

Linux下的压缩文件剖析 对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在...

2017-04-07 08:24:03 648

原创 PL/SQL锁定一行记录

一、现象描述在开发中有时需要测试程序中某个查询语句超时的现象,要想出现该效果必须把该条查询语句对应的行记录锁住,是的程序无法查询,这样程序才会出现超时的现象。二、解决方法步骤:1、首先使用PL/SQL、Navicat或其他客户端锁定数据库中某个表的待查询记录记录并,只需要在查询语句后加 for update 即可select * from CARD_USER_INFO where card_id ...

2017-04-06 08:20:11 1148

转载 linux gzip 命令详解

压缩文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。 gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。 语法:gzip [选项] 压缩(解压缩)的文件名 各选项的含义: -c 将输出写到标准输出上,并保留原有文件。 -d 将压缩文件解压。 -l 对每个压缩文件,显示下列字段: 压缩文件的大小 未压缩文件的大小 压缩比...

2017-04-06 08:03:46 11544

转载 IntelliJ IDEA 设置代码提示或自动补全的快捷键

对于中国的Java开发者来说,可能使用Eclipse的人最多。 使用Idea的程序员也不少, 而且每个人都在鼓吹其好用之处。 试用半个月,感觉各有千秋,关键看熟练程度和配置是否好用。有时候希望使用自动补全,因为不偷懒的程序员不是好程序员。但是Idea的默认快捷键是 Ctrl + 空格。 对于安装中文输入法的普通人来说那就是杯具了,你懂的。修改方法如下:点击 文件菜单(File) –> 点击 ...

2017-03-30 22:22:47 3173

原创 Spring Boot修改默认Banner

一、自定义banner启动Spring Boot项目时,在控制台或日志中会默认显示一个Banner,如图所示:在我们的项目中更希望使用自己的Banner,这样看起来更帅写,但是这对于程序员来说并不难,只需要修改/src/main/resources/banner.txt里的文本值即可,若该目录下没有banner.txt文件,需要手动创建一个,把里面放上自己想要的值。可以通过该http://pato...

2017-03-30 21:29:19 9089

PHP安装gd库依赖包

包含: freetype-2.4.0.tar.bz2, jpegsrc.v9.tar.gz, zlib-1.2.8.tar.gz, libpng-1.6.16.tar.gz, gd-2.0.33.tar.gz 安装PHP的gd扩展依赖库之一,安装步骤参考: https://blog.csdn.net/u014740338/article/details/80471655

2018-05-27

Druid监控系统安装及配置

Druid监控系统可以监控Druid数据库连接池运行时的使用情况,便于分析排查问题

2017-07-07

MiniDao实现分布式事务

扩展MiniDao,实现分布式事务。使用spring+jta来完成的

2017-03-26

dubbo监控系统dubbo-monitor-simple-2.5.3-assembly.tar.gz

dubbo官方提供的简易监控系统,部署到服务器上只需修改dubbo.properties配置文件后就可以直接使用,启动后可以通过浏览器访问,输入http://IP:8081

2017-03-03

java即时通讯项目

使用JavaSE实现即时通讯项目,适合有一定的Java基础的用户编写,主要用到多线程、网络编程、集合、面向对象的只是。 我把我写的分一步的源代码都打包在里了,另外附上项目的文档手册,项目只实现的大体功能,有很多功能大家可以下载下来自己扩展,添加自己想要的功能。代码部分我添加了大量的注册,并且加了一些我在开发的过程中遇到的问题,都用特殊标记标注出来了,以此来警告自己下次不犯类似的错误。

2015-05-28

Myeclipse的经典主题+默认主题

里面有好多比较经典的MyEclipse主题,也有默认的主题,供大家恢复MyEclipse的默认主题

2015-02-08

struts2自定义类型转换器

使用struts2提供的转化器,实现Date类型的数据转换

2015-02-03

jquery-blockUI-2.70.js

官方最新版的 jquery-blockUI,本人没有对其进行任何的修改,完全是从官网上下载了。

2015-01-20

使用Ajax实现国家-省份-城市三级联动

使用Ajax技术实现三级联动,本项目实现的是国家-省份-城市三级联动,大家可以根据自己的需要进行修改。这个项目采用的数据库是MySQL,在压缩文件中附加的sql文件,导入数据库中就可以运行了。并且,在项目中使用了jQuery block UI 插件,一次来达到更炫的效果,我是使用的默认效果,大家可以根据需要自己进行修改。

2015-01-20

javaSE实现是男人就坚持20秒的小游戏

使用javaSE实现的小游戏,试用于把javaSE学完,为了巩固知识或者为了娱乐而开发的小游戏。在游戏的开发中包含了一些小算法,仔细研究能极大地提升自己的思想和编程能力。而且,把这类游戏研究清楚,其他的所有竖版飞行类游戏自己都可以开发了。

2014-08-03

MySQL的卸载过程

卸载MySQl一定要删除一些注册表,否则下次再安装就安装不上了。在卸载的过程中一定要按照步骤卸载,可能会遇到一些要删除的文件不存在,不用担心,正常按照不照步骤卸载就行,一切视情况而定。

2014-05-24

数据结构之单链表

使用java实现数据结构中的单链表,结点定义成内部类,添加结点、删除结点、输出结点都由结点自己提供,外部不可访问内部类中的方法。

2014-05-24

模拟双色球彩票中奖项目

系统随机产生6个不相同的数,注意此算法的实现

2014-05-24

java-二叉树

java之数据结构,使用java创建一颗二叉树,并使用中序遍历循环输出结点元素

2014-05-24

使用java程序从磁盘中复制文件到另一个文件中(声音、图片、视频、文本,word文档等都可以复制),一定要保持复制的文件与源文件的字节大小相等

程序执行成功后一定要查看两个文件的字节大小是否想等,有可能新复制的文件比源文件大,但是这样也能打开

2014-05-24

用java查看磁盘大小

使用File类的getTotalSpace()、getFreeSpace()、getUsableSpace()方法可以分别查看磁盘总大小、磁盘剩余空间、磁盘已使用空间

2014-05-24

空空如也

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

TA关注的人

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