随笔 - 2228  文章 - 4  评论 - 371  阅读 - 1109万
04 2015 档案
linux time命令参数--执行命令并计时
摘要:【命令】time — 执行命令并计时 【格式】time [-p] command [arguments...] 【说明】 执行命令行"command [arguments...]",命令行执行结束时在标准输出中打印执行该命令行的时间统计结果,其统计结果包含以下数据: 1)实际时间(real time 阅读全文
posted @ 2015-04-30 17:08 duanxz 阅读(6227) 评论(0) 推荐(1) 编辑
linux防火墙启动、停止、查看
摘要:停止防火墙 service iptables stop 启动防火墙 service iptables start 查看防火墙配置 iptables -L -n 修改的内容只是暂时保存在内存中,如果重启后还要生效,则要保存一下 service iptables save ubuntu怎么关防火墙 ub 阅读全文
posted @ 2015-04-30 15:33 duanxz 阅读(702) 评论(0) 推荐(0) 编辑
mycat分布式mysql中间件(数据库切分概述)[转]
摘要:mysql数据库切分 前言 通 过MySQLReplication功能所实现的扩展总是会受到数据库大小的限制,一旦数据库过于庞大,尤其是当写入过于频繁,很难由一台主机支撑的时 候,我们还是会面临到扩展瓶颈。这时候,我们就必须许找其他技术手段来解决这个瓶颈,那就是我们这一章所要介绍恶的数据切分技术。 阅读全文
posted @ 2015-04-29 14:32 duanxz 阅读(953) 评论(0) 推荐(0) 编辑
单服务器最大tcp连接数及调优汇总
摘要:启动线程数: 启动线程数=【任务执行时间/(任务执行时间-IO等待时间)】*CPU内核数 最佳启动线程数和CPU内核数量成正比,和IO阻塞时间成反比。如果任务都是CPU计算型任务,那么线程数最多不超过CPU内核数,因为启动再多线程,CPU也来不及调度;相反如果是任务需要等待磁盘操作,网络响应,那么多 阅读全文
posted @ 2015-04-28 22:00 duanxz 阅读(44746) 评论(0) 推荐(3) 编辑
架构方法论
摘要:我们通常定义架构有几个层次,这包括业务架构、产品架构、应用架构和技术架构。 1.业务架构:描述一个企业围绕一个行业做了哪些业务,例如支付行业的收单、退款、出款、充转提等能力,这与公司对外和对内定义的产品无关。 2.产品架构:描述对外和对内定义的可销售的产品,例如微信的条码支付、扫码支付、公众号支付等 阅读全文
posted @ 2015-04-28 21:50 duanxz 阅读(3120) 评论(0) 推荐(0) 编辑
内部锁之一:锁介绍(偏向锁 & 轻量级锁 & 重量级锁 & 各自优缺点及场景)
摘要:一、内部锁介绍 上篇文章《Synchronized之二:synchronized的实现原理》中向大家介绍了Synchronized原理及优化锁。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的。但是监视器锁本质又是依赖于底层的操作系统的Mutex 阅读全文
posted @ 2015-04-26 20:52 duanxz 阅读(2709) 评论(0) 推荐(1) 编辑
Thread之八:interrupt中断
摘要:Java中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,它只是要求被中断线程在合适的时机中断自己,这需要被中断的线程自己处理中断。这好比是家里的父母叮嘱在外的子女要注意身体,但子女是否注意身体,怎么注意身体则完全取决于自己。 认为Java设置线程中断就是表示线程停止了,不往前执行了 阅读全文
posted @ 2015-04-26 10:23 duanxz 阅读(3154) 评论(0) 推荐(2) 编辑
mysql负载均衡方案
摘要:mysql负载均衡方案 一、直接连接 数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案。 比较常见的读写分离方案如下: 1 基于查询分离 最简单的分离方法是将读和写分发到主和从服务器上,这种策略很容易实现,但是仅限于一些能够容忍查询脏数据的操作。 举个例子来说,用户写入了一条评论 阅读全文
posted @ 2015-04-25 20:06 duanxz 阅读(1393) 评论(0) 推荐(0) 编辑
TreeMap源码解析
摘要:1、TreeMap介绍 TreeMap是一个通过红黑树实现有序的key-value集合。 TreeMap继承AbstractMap,也即实现了Map,它是一个Map集合 TreeMap实现了NavigableMap接口,它支持一系列的导航方法, TreeMap实现了Cloneable接口,它可以被克 阅读全文
posted @ 2015-04-25 10:31 duanxz 阅读(569) 评论(0) 推荐(0) 编辑
集合总体大纲
摘要:前言 Java集合是java提供的工具包,包含了常用的数据结构:集合、链表、队列、栈、数组、映射等。Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表、Set集合、Map映射、工具类(Iterator迭代器、Enumeration枚举类、Arrays和Co 阅读全文
posted @ 2015-04-25 10:18 duanxz 阅读(448) 评论(0) 推荐(0) 编辑
spark api之一:Spark官方文档 - 中文翻译
摘要:转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linking with Spark) 3 初始化Spark(Initializing Spark) 3.1 使用Spark Shell(Using the Shell) 阅读全文
posted @ 2015-04-25 00:46 duanxz 阅读(2828) 评论(0) 推荐(0) 编辑
spark提交模式
摘要:spark基本的提交语句: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value>\ ... # other opti 阅读全文
posted @ 2015-04-24 21:54 duanxz 阅读(842) 评论(0) 推荐(0) 编辑
Linux上构建一个RADIUS服务器详解
摘要:作为一名网络管理员,您需要为您所需管理的每个网络设备存放用于管理的用户信息。但是网络设备通常只支持有限的用户管理功能。学习如何使用Linux上的一个外部RADIUS服务器来验证用户,具体来说是通过一个LDAP服务器进行验证,可以集中放置存储在LDAP服务器上并且由RADIUS服务器进行验证的用户信息... 阅读全文
posted @ 2015-04-24 10:40 duanxz 阅读(8795) 评论(0) 推荐(0) 编辑
分布式事务之:定期校对
摘要:现金和积分的组合支付场景中,需要同时保证现金和积分的支付结果同步。可以通过定期校对来完成。 注意: 1、查询接口保证“可查询操作” 2、积分相关接口要求“幂等性” 冻结积分 解冻积分 操作积分(冻结后的确认) 时序图: 定时校对的时序图: 阅读全文
posted @ 2015-04-23 08:55 duanxz 阅读(436) 评论(0) 推荐(0) 编辑
spark运行模式之二:Spark的Standalone模式安装部署
摘要:Spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或 阅读全文
posted @ 2015-04-18 23:28 duanxz 阅读(951) 评论(0) 推荐(0) 编辑
对象的强、软、弱和虚引用
摘要:本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。 1.对象的强、软、弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为 阅读全文
posted @ 2015-04-18 18:38 duanxz 阅读(792) 评论(0) 推荐(0) 编辑
spark运行模式之一:Spark的local模式安装部署
摘要:Spark运行模式 Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或 阅读全文
posted @ 2015-04-18 18:05 duanxz 阅读(12217) 评论(0) 推荐(0) 编辑
Spark Tungsten in-heap / off-heap 内存管理机制--待整理
摘要:一:Tungsten中到底什么是Page? 1. 在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的 阅读全文
posted @ 2015-04-18 18:04 duanxz 阅读(2151) 评论(0) 推荐(0) 编辑
sparkContext之一:sparkContext的初始化分析
摘要:Spark源码学习:sparkContext的初始化分析 spark可以运行在本地模式local下,可以运行在yarn和standalone模式下,但是本地程序是通过什么渠道和这些集群交互的呢?那就是sparkContext,他在spark生态系统中的作用不言而喻,绝对是最重要的,整体架构如图所示: 阅读全文
posted @ 2015-04-13 21:10 duanxz 阅读(1274) 评论(0) 推荐(0) 编辑
mysql分区表之四:分区表性能
摘要:一, 分区概念 分区允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表。MySQL从5.1.3开始支持Partition。 分区和手动分表对比 MySQL支持RANGE,LIST,HASH,KEY分区类型,其中以RANGE最为常用: Range(范围)–这种 阅读全文
posted @ 2015-04-11 18:11 duanxz 阅读(1788) 评论(0) 推荐(0) 编辑
服务的升级和降级
摘要:1.开关 先讲一下开关的由来,例如京东在6月18日做店庆促销活动,在交易下单环节,可能需要调用A、B、C三个接口来完成,但是其实A和B是必须的,C只是附加的功能(例如在下单的时候做一下推荐),可有可无,在平时系统没有压力,容量充足的情况下,调用下没问题,但是在类似店庆之类的大促环节,系统已经满负荷了 阅读全文
posted @ 2015-04-11 17:24 duanxz 阅读(3732) 评论(0) 推荐(0) 编辑
怎样编写高质量的 Java 代码
摘要:代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍。也请有过代码质量相关经验的朋友提出宝贵的意见。 代码质量所涉及的5个方面,编码标准、代码重复、代码覆盖率、依赖项分析、复杂度分析。这5方面 阅读全文
posted @ 2015-04-09 23:19 duanxz 阅读(878) 评论(0) 推荐(0) 编辑
cglib简介与callback解析
摘要:简介 cglib是一套java动态代理实现框架,cglib被应用到spring app,hibernate等高级业务框架,spring事务在业务实现类未实现接口的情况下也会使用该技术。 实际上,cglib基于继承实现,这也就意味着final,private相关的method无法被代理(在《Sprin 阅读全文
posted @ 2015-04-09 18:06 duanxz 阅读(4084) 评论(0) 推荐(1) 编辑
Spark Streaming之六:Transformations 普通的转换操作
摘要:与RDD类似,DStream也提供了自己的一系列操作方法,这些操作可以分成四类: Transformations 普通的转换操作 Window Operations 窗口转换操作 Join Operations 合并操作 Output Operations 输出操作 2.2.3.1 普通的转换操作 阅读全文
posted @ 2015-04-09 17:04 duanxz 阅读(1081) 评论(0) 推荐(0) 编辑
Spark Streaming之五:Window窗体相关操作
摘要:SparkStreaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD。 网官图中所示 阅读全文
posted @ 2015-04-09 09:36 duanxz 阅读(11412) 评论(0) 推荐(1) 编辑
LinkedHashSet的实现原理
摘要:LinkedHashSet是具有可预知迭代顺序的Set接口的哈希表和链接列表实现。此实现与HashSet的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可为插入顺序或是访问顺序。 注意,此实现不是同步的。如果多个线程同时访问链接的哈希Set,而其中至少 阅读全文
posted @ 2015-04-08 23:01 duanxz 阅读(2608) 评论(0) 推荐(1) 编辑
Servlet3.0之八:基于Servlet3.0的文件上传@MultipartConfig
摘要:在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不需要借助任何第三方上传组件,直接使用Servlet3.0提供的API就能够实现文件上传功能了。 @M 阅读全文
posted @ 2015-04-07 23:44 duanxz 阅读(2493) 评论(0) 推荐(0) 编辑
分布式事务之:可靠消息/事务消息
摘要:方案一:消息中间件 所谓的消息事务就是基于消息中间件的两阶段提交,本质上是对消息中间件的一种特殊利用,它是将本地事务和发消息放在了一个分布式事务里,保证要么本地操作成功成功并且对外发消息成功,要么两者都失败,开源的RocketMQ就支持这一特性,具体原理如下: 关于RocketMQ中的特性详解见《分 阅读全文
posted @ 2015-04-06 21:14 duanxz 阅读(755) 评论(0) 推荐(0) 编辑
PowerDesigner导出SQL时自动生成注释
摘要:在powerBuilder中新建一个Physical Data Model,在其中新建一个用户表,信息如下图所示: 此时的SQL语句可从其中的Preview视图中得到,如下图所示: 这个时候生成的sql语句是没有注释的,而且sql语句可能也不是适合自己所对应的数据库语言。此时可以通过以下方法来生成注 阅读全文
posted @ 2015-04-06 19:34 duanxz 阅读(474) 评论(0) 推荐(0) 编辑
powerdesigner导出SQL时大写转换
摘要:打开物理模型,点击菜单“Tools->Execute Commands -> Edit/Run Script...",或者快捷键(Ctrl+Shift+X)执行下面vbscript脚本 Option Explicit ValidationMode = True InteractiveMode = i 阅读全文
posted @ 2015-04-06 19:24 duanxz 阅读(923) 评论(0) 推荐(0) 编辑
MySQL waiting for table level lock
摘要:1、表使用了MyISAM引擎 2、是Innodb引擎引擎,但是mysqldump的运行会导致该问题 , 你能否确认当您做插入测试时, 是否有mysqldump正在运行? 3、innodb存储引擎只在以下三种情况会产生table level lock【1】【2】: 3.1、 innodb_table_ 阅读全文
posted @ 2015-04-05 23:31 duanxz 阅读(3591) 评论(0) 推荐(0) 编辑
mysql 查看死锁和去除死锁
摘要:1、查询进程 show processlist 2、 查询到相对应的进程,然后 kill id 验证(kill后再看是否还有锁) 2、查询是否锁表 示例: 新建一个会话执行如下的显示锁示例 另开启一个会话检查锁表情况: 3、在5.5中,information_schema 库中增加了三个关于锁的表( 阅读全文
posted @ 2015-04-05 19:55 duanxz 阅读(36059) 评论(0) 推荐(1) 编辑
linux 中的局部变量、全局变量、shell 变量的总结
摘要:系统局部变量和全局变量 一、变量分类局部变量和环境变量,局部变量只适用于当前shell,而环境变量是全局的,它适用于所有当前shell以及其派生出来的任意子进程,有些变量是用户创建的,其他的则是专用的shell变量。 二、局部变量局部变量的作用域被限定在创建它们的shell中。local函数可以用来 阅读全文
posted @ 2015-04-05 19:19 duanxz 阅读(4320) 评论(1) 推荐(1) 编辑
SSL卸载技术对于HTTPS应用的优化与思考
摘要:迅猛发展的互联网为我们提供了丰富的信息资源,在带来便利的同时也影响着人们工作和生活方式。而让我们无法忽视的是,在开放的互联网所带来的繁荣背后,同时也潜藏着安全方面的隐患。随着人们对网络的依赖愈渐加深,各种加密技术应运而生,用以保障网络信息的安全性。SSL(Secure Sockets Layer)协 阅读全文
posted @ 2015-04-05 18:14 duanxz 阅读(907) 评论(0) 推荐(0) 编辑
HashMap源码解析
摘要:要理解HashMap, 就必须要知道了解其底层的实现, 而底层实现里最重要的就是它的数据结构了,HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。 在分析要理解HashMap源码前有必要对hashcode进行说明。以下是关于HashCode的官方文档定义: hashcode方法 阅读全文
posted @ 2015-04-05 12:17 duanxz 阅读(621) 评论(0) 推荐(0) 编辑
LinkedList源码解析
摘要:LinkedList是基于链表结构的一种List,在分析LinkedList源码前有必要对链表结构进行说明。1.链表的概念链表是由一系列非连续的节点组成的存储结构,简单分下类的话,链表又分为单向链表和双向链表,而单向/双向链表又可以分为循环链表和非循环链表,下面简单就这四种链表进行图解说明。 1.1 阅读全文
posted @ 2015-04-05 11:52 duanxz 阅读(417) 评论(0) 推荐(0) 编辑
ArrayList源码解析
摘要:ArrayList简介 ArrayList定义 ArrayList 是一个数组队列,相当于 动态数组。与Java中的数组相比,它的容量能动态增长。它继承于AbstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。 阅读全文
posted @ 2015-04-05 11:42 duanxz 阅读(647) 评论(0) 推荐(0) 编辑
HashSet的实现原理
摘要:HashSet定义 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺 阅读全文
posted @ 2015-04-05 11:35 duanxz 阅读(1524) 评论(0) 推荐(0) 编辑
Spark Streaming之四:Spark Streaming 与 Kafka 集成分析
摘要:前言 Spark Streaming 诞生于2013年,成为Spark平台上流式处理的解决方案,同时也给大家提供除Storm 以外的另一个选择。这篇内容主要介绍Spark Streaming 数据接收流程模块中与Kafka集成相关的功能。 Spark Streaming 与 Kafka 集成接受数据 阅读全文
posted @ 2015-04-05 08:32 duanxz 阅读(815) 评论(0) 推荐(0) 编辑
Spark Streaming之三:DStream解析
摘要:DStream 1.1基本说明 1.1.1 Duration Spark Streaming的时间类型,单位是毫秒; 生成方式如下: 1)new Duration(milli seconds) 输入毫秒数值来生成; 2)seconds(seconds) 输入秒数值来生成; 3)Minutes(min 阅读全文
posted @ 2015-04-04 10:15 duanxz 阅读(1604) 评论(0) 推荐(0) 编辑
Spark Streaming之二:StreamingContext解析
摘要:1.1 创建StreamingContext对象 1.1.1通过SparkContext创建 源码如下: 第一参数为sparkContext对象,第二个参数为批次时间; 创建实例: val ssc = new StreamingContext(sc, Seconds(5)) 1.1.2通过Spark 阅读全文
posted @ 2015-04-03 23:48 duanxz 阅读(3907) 评论(0) 推荐(0) 编辑
curl与wget区别
摘要:1.curl是libcurl这个库支持的,wget是一个纯粹的命令行命令。2.curl支持更多的协议。curl supports FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, POP3, IMAP, 阅读全文
posted @ 2015-04-02 22:42 duanxz 阅读(3134) 评论(0) 推荐(0) 编辑
MongoDB 慢日志字段解析
摘要:慢查询日志范例 "Thu Apr 2 07:51:50.985 I COMMAND [conn541] command animal.MongoUser_58 command: find { find: \"MongoUser_58\", filter: { $and: [ { lld: { $gt 阅读全文
posted @ 2015-04-02 22:08 duanxz 阅读(1890) 评论(0) 推荐(0) 编辑
Thread之九:stop
摘要:搞过Java线程的人都知道,stop这个方法是臭名昭著了,早就被弃用了,但是现在任然有很多钟情与他的人,永远都放不下他,因为从他的字面意思上我们可以知道他貌似可以停止一个线程,这个需求是每个搞线程开发的人都想要的操作,但是他并非是真正意义上的停止线程,而且停止线程还会引来一些其他的麻烦事,下面就来详 阅读全文
posted @ 2015-04-02 00:07 duanxz 阅读(1749) 评论(0) 推荐(0) 编辑
mysql实战优化之九:MySQL查询缓存总结
摘要:mysql Query Cache 默认为打开。从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销。 mysql Query Cache 和 Oracle Query Cache 是不同的, oracle Que 阅读全文
posted @ 2015-04-01 23:53 duanxz 阅读(3180) 评论(0) 推荐(1) 编辑
PBE加密算法
摘要:这是我参加全国信息安全大赛的设计的加密系统中的一个加密算法,虽然比赛的结果不是非常理想但是,我还是学到了很多东西,现在和大家分享一下,比赛收获的东西。基于口令加密 PBE(Password Based Encryption,基于口令加密)算法是一种基于口令的加密算法,其特点在于口令是由用户自己掌握的 阅读全文
posted @ 2015-04-01 23:41 duanxz 阅读(4344) 评论(0) 推荐(0) 编辑
kafka之三:kafka java 生产消费程序demo示例
摘要:kafka是吞吐量巨大的一个消息系统,它是用scala写的,和普通的消息的生产消费还有所不同,写了个demo程序供大家参考。kafka的安装请参考官方文档。 首先我们需要新建一个maven项目,然后在pom中引用kafka jar包,引用依赖如下: <dependency> <groupId>org 阅读全文
posted @ 2015-04-01 23:30 duanxz 阅读(1755) 评论(0) 推荐(0) 编辑
生产环境下JAVA进程高CPU占用故障排查---temp删除
摘要:问题描述:生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高。问题分析:1,程序属于CPU密集型,和开发沟通过,排除此类情况。2,程序代码有问题,出现死循环,可能性极大。问题解决:1,开发那边无法排查代码某个模块有 阅读全文
posted @ 2015-04-01 23:01 duanxz 阅读(858) 评论(0) 推荐(0) 编辑
RESTLET开发实例(三)基于spring的REST服务
摘要:http://www.lifeba.org/arch/restlet_spring_3.html http://www.lifeba.org/arch/restlet_spring_3.html 前面两篇文章,我们介绍了基于JAX-RS的REST服务以及Application的Rest服务。这里将介 阅读全文
posted @ 2015-04-01 22:10 duanxz 阅读(1384) 评论(0) 推荐(0) 编辑
REST Web 服务介绍
摘要:在项目上使用到了Rest技术,应该是Rest的服务概念才对。主要是对外(BPM)暴露API来提供Service。推荐一篇有质量的文章,接下来会系统一点的学习一下Restful概念。http://kb.cnblogs.com/page/91827/ REST介绍 如果要说什么是REST的话,那最好... 阅读全文
posted @ 2015-04-01 17:14 duanxz 阅读(7245) 评论(0) 推荐(1) 编辑
人人网开放平台技术架构
摘要:本文档介绍了人人网开放平台技术架构的设计细节和接口定义,是一个大而全的文档,涵盖了人人网开放平台对外提供的所有接口。如果你想了解人人网开放平台的整体架构和原理,或者想查阅某个接口参数,那么你一定可以在这里找到答案。人人网开放平台的技术架构,正处于巨大的变革之中,正向着越来越标准化和通用化的方向发展。... 阅读全文
posted @ 2015-04-01 16:28 duanxz 阅读(2405) 评论(0) 推荐(0) 编辑

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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