自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(161)
  • 资源 (11)
  • 收藏
  • 关注

原创 容器化技术(十四):Kubernetes中Headless Service

一、Headless Service有时不需要或不想要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 “None” 来创建 Headless Service。无头 Service 并不会分配 Cluster IP,kube-proxy 不会处理它们, 而且平台也不会为它们进行负载均衡和路由。DNS 如何实现自动配置,依赖于 Service 是否定义了选择算符。(1)带选择算符的服务对定义了选择算符的无头服务,End

2021-04-20 10:59:56 2242

原创 容器化技术(十三):Kubernetes中Service(ClusterIP)

Service—服务暴露如果你使用 Deployment 来运行你的应用程序,则它可以动态创建和销毁 Pod。每个 Pod 都有自己的 IP 地址,但是在 Deployment 中,在同一时刻运行的 Pod 集合可能与稍后运行该应用程序的 Pod 集合不同,也就是说Pod是非永久性的资源。这导致了一个问题: 如果一组 Pod(称为“后端”)为集群内的其他 Pod(称为“前端”)提供功能, 那么前端如何找出并跟踪要连接的 IP 地址,以便前端可以使用提供工作负载的后端部分?Service 资源允许 Kub

2021-04-19 10:01:17 1995

原创 容器化技术(十二):如何使用Kubernetes中Deployment实现滚动升级与版本回滚?

Deployment—无状态部署在常规的应用部署到Kubernetes集群当中的时候,很少直接使用Pod来直接部署,而是使用了Deployment的逻辑分装的概念。Deployment是对一组Pod的封装,可以在Deployment中指定运行的Pod实例的数目,Deployment会在Kubernetes集群中的kube-controller-manager的监控下,保证集群中的Pod的实例数目维持在Deployment中设定的数目上。Deployment,顾名思义是部署的意思,它对Pod的集合,可以通

2021-04-16 10:37:42 923

原创 容器化技术(十一):Kubernetes中Pod的调度策略-标签与污点实战

一、Pod的调度策略总述Kubernetes中的容器编排功能的最大需要解决的问题就是将创建的Pod,调度到Node上去。那么Pod在选择调度到哪个Node上去时,是如何决策的。这就涉及到了我们在前面安装Kubernetes集群时,其中介绍的kube-scheduler组件。kube-scheduler 给一个 pod 做调度选择的依据包含两个步骤:(1)过滤:根据Pod对调度的要求,过滤掉一些Node,例如资源是否匹配,标签是否匹配,污点是否容忍等。(2)打分:在满足了过滤要求的情况下,给这些Nod

2021-04-15 10:29:50 742

原创 容器化技术(十):Kubernetes中Pod的生命周期

一、Pod的生命周期Pod 遵循一个预定义的生命周期,起始于 Pending 阶段,如果至少 其中有一个主要容器正常启动,则进入 Running 阶段,之后取决于 Pod 中是否有容器以失败状态结束而进入 Succeeded 或者 Failed 阶段。在 Pod 运行期间,Kubernetes能够重启容器以处理一些失效场景。 在 Pod 内部,Kubernetes 跟踪不同容器的状态,并确定使 Pod 重新变得健康所需要采取的动作。当我们运行一个Pod的时候,可以通过如下命令来查看Pod的运行状态:

2021-04-14 11:54:21 272

原创 容器化技术(九):Kubernetes中的Pod的资源管理与监控

一、安装Metrics-Server,采集资源使用情况想要获得Kubernetes集群中的CPU与内存的资源情况,以前的Kubernetes集群是通过Heapster获取的。本文的Kubernetes集群为1.18的版本,资源的收集需要通过安装metrics-server来实现。有了metrics-server,我们就可以去监测Kubernetes集群中的CPU与内存的使用情况了,同时为我们的集群自动伸缩容技术hpa打好了基础。下载地址如下:https://github.com/kubernetes-s

2021-04-13 11:11:47 893

原创 容器化技术(八):Pod—Kubernetes中的最小调度单位

Pod—Kubernetes中的最小调度单位Pod是Kubernetes中的最小调度单位,应用容器就运行在Pod内。Node是我们运行Pod的机器,一个Node上可以运行很多个Pod。可以说Pod是Kubernetes中最重要的概念。一个Pod是一组容器的集合,这组容器是紧密相关的,这组容器共享网络和存储等。每个Pod内都运行着一个Init的基础容器,其他的容器在Init容器上建立起来的。同一个Pod内的容器共享Init容器建立起来的网络和存储资源。如下图所示,一个Pod中运行着A、B、C三个容器,它

2021-04-12 10:33:29 1416

原创 容器化技术(七):Kubernetes集群中安装了哪些组件?

文章目录一、Kubernetes集群总览二、Worker节点的运行机制1、kubelet2、kube-proxy3、容器运行时三、Master节点的运行机制1、kube-apiserver2、kube-controller-manager3、kube-scheduler4、etcd四、下篇文章预告一、Kubernetes集群总览Kubernetes中的节点分为两类:Master节点:也称为控制平面,是Kubernetes集群的大脑,其中包括如下组件:kube-apiserver:管理员操作整个K

2021-04-09 10:34:04 558

原创 容器化技术(六):Kubernetes最全安装指南

Kubernetes的安装很多读者在学习Kubernetes的路上,被搁浅在了搭建Kubernetes集群这一步,本小节将带领读者手把手搭建一套Kubernetes集群。安装Kubernetes的方法有很多,比较成熟与简便的办法是采用kubeadm来进行安装。如果我们采用二进制的方式安装,会非常的繁琐。一、环境准备1、机器配置要求Kubernetes集群中的机器被划分一个Master节点和一群Worker节点。本套Kubernetes集群需要三台机器,一台安装Master,两台安装Worker。

2021-04-08 17:13:14 330

原创 容器化技术(五):初识Kubernetes

真正的生产型应用会涉及多个容器,这些容器必须跨多个服务器主机进行部署。 Kubernetes可以提供用户所需的编排和管理功能,以便用户针对这些工作负载进行大规模容器部署。 借助Kubernetes编排功能,用户可以构建多个容器的应用服务,跨集群调度、扩展这些容器,并长期持续管理这些容器的健康状况 。一、Kubernetes概述Kubernetes站在Borg(Borg是谷歌的一个久负盛名的内部使用的大规模集群管理系统,它基于容器技术,目的是实现资源管理的自动化,以及跨多个数据中心的资源利用率的最大化。)

2021-04-07 15:47:29 225

原创 容器化技术(四):容器到底隔离了什么?

一、容器的本质是一个进程一个容器就如同你之前跑到一个虚拟机中的一个应用程序,比如跑一个Java程序。那么在容器中,主进程就是跑着你Java程序的这个Java进程,其他的进程都是围绕着这个主进程的,如果主进程失败了,那么这个容器就是失败的。二、容器中隔离了以下资源mnt: 存储net : 网络pid : 进程user:用户uts :主机名、域名等ipc :进程间的通信cgroups:隔离资源,如CPU、Memory如果对这些特性感觉有些陌生,这很正常,我们可以通过创建一个容器,然后登

2021-04-06 15:14:05 1109

原创 容器化技术(三):Docker的运转流程

Docker的本质是容器运行时,它是CS架构的,也就是我们通过客户端可以操作Docker服务端。为了方便大家理解,我们不上来就讲解Docker内部的底层运作原理,我们先从Docker的运转流程开始,让大家知道Docker是什么。Docker的整体运转流程包括三个重点:镜像:仓库容器一、镜像(Image)这是Docker的一大发明,Docker之所以这么火,跟这个镜像的发明也有很大的关系。一句话来说,镜像把你的程序包与相关的依赖打包了起来,成为image,也就是镜像。所以想要在企业内部进

2021-04-02 10:20:00 502 1

原创 容器化技术(二):启动你的第一个容器

在启动容器之前,我们需要先安装Docker,具体的安装参照我的另一篇文章:Docker的安装与常用命令。一、本地启动一个Redis本地启动一个Redis的命令如下:docker run -d -p 6378:6379 redis命令中-d与-p参数的含义如下。1、 -d参数的意义代表这个容器在后台运行,如果不带有这个参数,你会看到Redis的启动日志,而且当年关闭你的执行这个命令的窗口时,Redis就关闭了。所以启动容器的时候,一定记得带有这个参数。2、-p参数的意义这个参数是用于设定容器

2021-04-01 11:02:29 229

原创 让你弄懂什么是缓存穿透,并轻松get布隆过滤器原理,快速上手。

一、什么是缓存穿透?一图胜千言,如下图,当访问到数据库中没有的数据的时候,每次访问同样的数据,都会绕过缓存系统(一般是Redis),直接访问到数据库层,这就是我们说的缓存穿透。解决办法:我们可以在缓存中将这样的数据也缓存起来,只是缓存的key的value为空。但是如果有特别多的key是这种情况的,我们的缓存中要缓存好多这样的key,比较占用缓存。另外如果这种key访问的次数比较少,我们缓存这种key的效果也不是很好。于是引出了一种办法:我们有什么办法可以让这样的数据在访问缓存之前,就可以被判断

2020-11-27 10:03:29 209

原创 磁盘满了,如何排查?

第一步概览,排查各目录对磁盘的占用情况。df -h第二步进入上面占用空间很大的目录下,查看此目录下一级路径的文件占用空间情况,进一步细化,是哪个文件或者目录占用空间太大了。du -h —max-depth=1第三步删除对应的文件。rm -rf file第四步查看删除的文件是否释放了磁盘空间,如占用,用下面的命令找出对应的进程。lsof | grep deleted第五步关闭对应进程,即可释放占用的空间。kill -9 pid...

2020-10-10 16:14:36 1478

原创 UML时序图的概念与实战

StarUML很好用,推荐用它来画时序图。下面脑图中是时序图中的重要组成元素。以下是一个时序图的例子:

2020-08-04 17:09:36 233

原创 如何在 mac 10.14 上面出现任何来源的选择?

一、以下是mac中默认的选项二、在mac的命令行中,输入如下命令sudo spctl --master-disable并输入你的mac的密码。三、安全性与隐变成了如下的界面

2020-08-03 17:06:25 564

原创 Snagit for Mac 如何截取长图,滚动截图?

困扰我很久了,为了在mac上截取长图,今天终于成功了。如下图:第一步:选择image。第二步:Selection选择Panoramic,就是选择滚动截图的意思。第三步:到达你想要滚动截图,也就是长截图的地方,点击旁边的红色的Capture按钮,就好了。...

2020-07-31 15:37:19 1418

原创 一图说明静态代理与动态代理

2020-07-08 17:35:02 214

原创 排查maven中可以从远程下载下来jar包,但是却报错Failure to find was cached in the local repository, resolution will not

一、问题maven打包的过程中报错如下:Failure to find cfca:backport-util-concurrent:pom:3.1 in http://maven.company.com/repository/maven-public was cached in the local repository, resolution will not be reattempted until the update interval of nexus has elapsed or updates

2020-07-02 19:32:42 5844

原创 ES-ElasticSearch-概念

ES在日志处理领域的使用非常广泛,那么它和我们的MySQL的数据库的联系是什么呢?概念又是如何呢?老版本里,ES中的概念与关系型数据库里基本是一一对应的。索引对应数据库。类型对应表。文档对应一行数据。映射对应表结构。不过新版本里,不推荐类型了。也就是没有表的概念了。主要还是因为ES底层对于同一索引中的同一字段采用相同的存储概念,但是多个type中的同名字段如果类型不同,存储起来效率比较低。...

2020-07-01 12:03:09 243

原创 Redis分布式锁之红锁

一、问题分布式锁,当我们请求一个分布式锁的时候,成功了,但是这时候slave还没有复制我们的锁,masterDown了,我们的应用继续请求锁的时候,会从继任了master的原slave上申请,也会成功。这就会导致,同一个锁被获取了不止一次。二、办法Redis中针对此种情况,引入了红锁的概念。三、原理用Redis中的多个master实例,来获取锁,只有大多数实例获取到了锁,才算是获取成功。具体的红锁算法分为以下五步:获取当前的时间(单位是毫秒)。使用相同的key和随机值在N个节点上请求锁。这

2020-06-29 10:37:22 20931 9

原创 java线上环境分析特定线程运行情况

一、top看进程查看服务器上的cpu和内存等使用情况。shift+p: 进程会按照cpu使用率高的来排序。shift+m: 进程会按照内存占用情况高的来排序。二、top看线程通过top查出异常的进程pid后,我们来看下进程的线程的运行情况:top -Hp pid从其中,我们可以看到哪些线程的使用情况不太正常。得到系统层面的线程nid。三、jstack线程dump接下来我们通过jstack命令dump出目前的进程情况。jstack pid > a.dump四、找到要分析的线程

2020-06-23 11:25:32 300

原创 Java中的引用的使用场景

Java中的引用,一共分为以下四种。一、强引用默认的对象是强引用。对象还在被引用,就不会被回收。即使内存已经不够了,也不会被回收。二、软引用:SoftReference当内存吃紧的时候,才会被回收。可以用在缓存的场景,内存足够时进行缓存,内存都不够了,就不用缓存了。三、弱引用WeakReference不管内存是否不够用。GC的时候,就会被回收。ThreadLocal就是使用的弱引用来实现的。四、虚引用:PhantomReference必须与ReferenceQueue一起使用。当要

2020-06-23 11:02:47 205

原创 一图说明Java中的队列的使用

Java中的队列数据结构中我们学完了栈,马上就会学习队列。那么在Java中队列又是什么样的结构,有哪些方法呢。一、队列接口的类关系图看到了吗,我们经常使用的LinkedList就是实现了队列接口Queue的双端队列。二、Queue接口的方法-功能分类 三、Queue接口的方法-返回分类...

2020-06-19 18:51:50 176

原创 Java中的栈的使用

Java中的栈我们在学数据结构的时候,学完数组,链表,就开始学习栈了,知道它是后进先出的,以及一些使用场景。但是在我们的Java中到底如何使用呢,我们如何记住它的方法,知道它的类结构呢,下面开始总结,有了图便一目了然了。Stack的类关系图Stack中的方法...

2020-06-19 18:44:10 1017

原创 Redis中的批量操作pipeline碰到了RedisCluster

以下是我们的业务需求,将多个key放到list中去,为了提高效率,使用了pipeline管道功能。cat list.txt | redis-cli -h 127.0.0.1 -p 26387 -a pwd --pipe单机中执行没有问题。遇到了RedisCluster就不可以了,因为pipeline不会自己去移动槽位,所以需要我们在运行命令的时候,就指定那个我们的list在那个ip上。于是我们需要先看list在哪个槽位上:cluster keyslot list-namecluster k

2020-06-16 17:03:36 359

原创 利用Excel给系统批量添加用户

Excel远比你想的强大,它可以做各种程序做的事情。一、随机生成六位密码=CONCATENATE(CHAR(INT(RAND()*25+97)),CHAR(INT(RAND()*25+97)),CHAR(INT(RAND()*25+97)),CHAR(INT(RAND()*25+97)),CHAR(INT(RAND()*25+97)),CHAR(INT(RAND()*25+97)))二、将密码进行MD5加密=LOWER(Md5_String_Calc(F2))在加密前,需要在Excel中需要

2020-06-15 10:38:15 574

原创 Excel中的合并多个单元格中的内容

phonetic:用这个函数,参数是你想要操作的单元格。

2020-06-14 14:27:30 452

原创 Redis被哪些系统调用?如何查询?

Redis的连接ip有哪些?最近在负责公司的Redis统一升级的工作:那么我们就需要将业务迁移到新版本的Redis上。关掉旧版本的Redis。那么问题来了,我们在关掉旧的Redis的时候,就需要排查哪些系统在调用这个Redis。方法一:lsof -i:portCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEredis-cli 5214 zhangjin 3u IPv4 3147120732

2020-06-10 16:37:38 1528

原创 fastjson的漏洞解决—2020年5月28日

一、前言fastjson真是不让人省心,2020年5月28日又报了漏洞。fastjson的作用:将javabean序列化为json格式的字符串。将json格式的字符串,反序列化为javabean。二、fastjson使用过程添加maven依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <v

2020-06-08 14:35:42 11858 1

原创 Redis中的各种scan命令的区别与用法

前言Redis中的keys *的访问,容易引起Redis的阻塞。于是有了各种scan命令,它如同游标一样,逐渐的遍历Redis中的key。scan:用于迭代当前数据库中的数据库键。hscan:用于迭代哈希键中的键值对。sscan:用于迭代集合键中的元素。zscan:用于迭代有序集合中的元素(包括元素成员和元素分值)。以下是各命令的使用,其中<>中是参数,[]中是可选参数。scanscan <cursor> [match <pattern>] [cou

2020-06-05 14:52:24 1658

原创 Redis中的Hash类型的底层编码

一、命令的使用type <key>type:说明key是五种基本类型里的哪种。object encoding <key>object encoding:说明key的底层是使用Redis中的哪种数据结构。二、验证命令的情况今天我们就拿Hash类型来做下检验。当我们随便设置一个Hash类型的数据时:hmset user:1 name jxl age 20我们用type user:1,返回的是hash。type user:1hash我们用object enc

2020-06-05 11:51:12 484

原创 你想知道Redis中哪些key过期了?哪些key被淘汰了吗?—Redis中notify-keyspace-events的作用

一、配置意义Redis中默认的notify-keyspace-events的配置值为空。可以的配置值如下:notify-keyspace-events 的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知:字符发送的通知K键空间通知,所有通知以__keyspace@<db>__ 为前缀E键事件通知,所有通知以 __keyevent@<db>__ 为前缀gDEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知

2020-06-04 18:41:24 7711 3

原创 Redis Cluster 中的slot槽位迁移

0.0、目标从from节点迁移槽位slot到to节点上。0.1、获取key所在槽位如果我们是针对big key的迁移。cluster keyslot <key>1、在目标节点上执行cluster setslot <slot> importing <from-nodeid>2、在源头节点上执行cluster setslot <slot> migrating <to-nodeid>3.0、获取槽位上的key获取分片上的数据:

2020-06-03 17:03:17 3366

原创 SSH免密登录实战步骤及原理

一、SSH免密登录客户端想要免密登录服务端。客户端生成公私钥。将公钥复制给服务。客户端可以免密登录服务端。二、客户端生成秘钥过程中,有三次确认:一次是存放位置。两次是文件的加密密码。ssh-keygen生成两个文件:私钥:id_rsa公钥:id_rsa.pub三、公钥复制给服务端1、目录公钥复制到服务端的/home/account-name/.ssh目录下。也就是你正在登录的用户account-name的.ssh目录下,~/.ssh下。2、文件文件autho

2020-06-01 17:36:09 423

原创 grep -v 的使用

一、不加-v的grep已经习惯了使用grep来搜索进程。例如:ps -ef | grep redis结果是:501 29708 29692 0 4:10下午 ttys001 0:00.11 redis-server *:6379501 29870 29734 0 4:13下午 ttys002 0:00.00 grep redis二、加了-v的grep我们肯定是不想让grep本身的进程也出来的。所以,我们使用如下命令:ps -ef | grep redis |

2020-06-01 16:17:20 2210

原创 Redis内存淘汰策略(一图胜千言)

一、清除过期keyRedis中的key按照是否设置的了过期时间分为两类:没有过期时间的:正常不会被清理。设置了过期时间的:会有被动清除和主动清除那些已经过期了的数据的Redis的内部处理机制。二、内存淘汰策略那么还有什么情况下会清理Redis中的key呢?或者说没有设置了过期时间,是否可以被清除呢?当Redis的内存使用达到设置的maxmemory的时候,就会触发内存淘汰策略。那么有哪些淘汰策略呢?如下图,淘汰策略针对已经设置了过期时间的key和不区分是否设置了过期时间的可以,都有各自的

2020-05-29 10:55:59 216

原创 Redis中的scan命令的使用

scan cursor match key* count n如果是扫描库中所有的key,可以简化为:scan cursor count n其中:n是这次扫描出多少个key。cursor是从哪个游标开始扫描。match后面的key*是key的模糊表达式。

2020-05-28 17:34:43 569

原创 Redis的持久化机制—实战

Redis的持久化共有三种方式:RDBAOFRDB与AOF的混合模式下面我就将针对这几种模式,如何打开,关闭,持久化的文件形式,以及适用的场景来展开。一、RDBRDB,其实就是Redis的内存的dump文件,它的形式就是一堆二进制的东东。1、打开RDBRedis默认是打开RDB持久化的。以下配置文件的任何一条触发,就会发生RDB的持久化。save 900 1 # 900秒内发生一次键值变化,则发生持久化。save 300 10 # 300秒内发生十次键值变化,则发

2020-05-26 16:42:22 140

apache-skywalking-apm-6.5.0.tar

SkyWalking是国内开发的apm(应用性能管理),也就是分布式应用的程序监控方面的优秀工具,已经被Apache收纳。其中包括SkyWalking的应用程序,客户端Agent,以及Web页面。

2020-01-07

2019全球互联网架构大会—大中台.zip

2019全球互联网大会中,关于大中台的分享,包括了如下的三篇文章:1、阿里巴巴-崔飞飞-面向无确定业务边界之中台架构。2、乘法云-李令辉-企业级的终极模式:aPaaS。3、有赞-万小辉-中台如何助力标准化业务。

2019-12-03

sentinel-dashboard-1.6.3.jar.zip【Sentinel控制台】【Sentinel服务端】

阿里巴巴出品的降级限流组件,先将zip格式文件解压,然后直接java -jar sentinel-1.6.3.jar,即可启动。截止到2019年11月的最新版本。

2019-11-06

nacos-server-1.1.4.tar(Nacos控制台,Nacos服务端)

Nacos的服务台程序。Spring-Cloud-Alibaba中的服务治理采用了Nacos,只需要解压资源后,运行bin目录下的开始脚本即可,支持Linux,Windows,Mac系统。1.1.4是截止到目前2019年11月的最新版本。

2019-11-06

2018互联网架构大会PPT合集.zip

2018年6月1~2日,GIAC 全球互联网架构大会将于深圳华侨城洲际酒店举行!GIAC全球互联网架构大会是由msup和高可用架构技术社区联合举办的面向架构师、技术负责人及高端技术从业人员的技术架构大会。GIAC已确定有腾讯、百度、链家、美团、优酷、去哪儿网、旷视科技、ofo等公司技术专家出席。 GIAC是中国互联网技术领域的行业盛事,每年从互联网架构最热门系统架构设计、人工智能、机器学习、工程效率、区块链、分布式架构等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们在本年度最值得的总结、盘点的实践启示,打造一个分享及讨论平台,改变未来的互联网构建方式。 本次大会共有 5 大板块方向,20 场技术专题,70 个互联网架构案例。

2019-07-24

elastic-job-lite-console-3.0.0.M1.tar.gz

下载后,tar xvzf elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz,解压后,进入bin目录,直接运行./start.sh。默认端口为8899,直接在浏览器里打开:yourip:8899,即可看到你的Elasticjob的控制台啦,默认的账号密码为root/root。

2019-07-19

2017互联网大会ppt12月23日

GIAC是中国互联网技术领域一年一度的行业盛事,每年从互联网架构最热门系统架构设计、人工智能、机器学习、工程效率、未来的编程语言、分布式架构等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们在本年度最值得的总结、盘点的实践启示,打造一个分享及讨论平台,改变未来一年的互联网构建方式。

2018-01-05

Java并发编程的艺术

Java并发编程的艺术,里面的所有源代码,非常方便,便于理解书中的很多观念,对大家很有帮助。希望大家在并发编程方面有所提高。

2017-09-15

Java并发编程的艺术【带目录完整版】

Java并发编程的艺术【带目录完整版】内容清晰,国内很好的一本关于Java并发的一本书,高级程序员,架构师必备。

2017-09-15

dubbo实例—自测好用

适合现有项目改造成服务化的参考。

2017-07-13

Enum的实例

Enum的实例

2017-06-22

空空如也

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

TA关注的人

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