自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (10)
  • 收藏
  • 关注

原创 哲学家就餐问题的解决(java实现)

前言:生产者-消费者模型和哲学家就餐问题是多线程中比较经典的两个问题.通过这两个问题,可以很好地了解和实践下java多线程的基础知识.哲学家就餐问题:有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五支筷子,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的筷子,只有在他拿到两支筷子时才能进餐。进餐完毕,放下筷子又继续思考。对java多线程不熟悉的可以先看下生产者-消费者模型是怎么实现的,然后再独立实现哲学.

2020-06-29 23:03:44 6034 9

转载 生产者消费者模型的五种实现(java)

前言生产者和消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。现在用四种方式来实现生产者消费者模型wait()和notify()方法的实现这也是最简单最基础的实现,缓冲区满和为空时都调用wait()方法等待,当生产者生产了一个产品或者消费者消费了一个产品之后会唤醒所有线程。/** * 生产者和消费者,wait()和notify()的实现 *

2020-06-29 17:35:23 720

转载 git cherry-pick详解

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用合并(git merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 Cherry pick。一、基本用法git cherry-pick命令的作用,就是将指定的提交(commit)应用于其他分支。$ git cherry-pick <commitHash>上面命令就会将指定的提交commitHash,应用于当

2020-06-29 07:02:27 10202

原创 java基础数据类型大小

可以通过基础类型对应的包装类获取基础类型的大小,如char,可以查看Character类: /** * The number of bits used to represent a {@code char} value in unsigned * binary form, constant {@code 16}. * * @since 1.5 */ public static final int SIZE = 16; /*.

2020-06-25 18:44:56 271

转载 Java语言中:float、double数据类型在内存中是如何存储的

java语言中,float类型数字在计算机中用4个字节(32位)来存储。double类型占用8个字节(64位)。从存储结构和算法上来讲,double和float是一样的,不一样的地方仅仅是float是32位的,double是64位的,所以double能存储更高的精度。  按照IEEE制定的浮点数表示法来进行float,double运算。这种结构是一种科学计数法:用符号、指数和尾数来表示。指数可正可负,所以,IEEE规定,此处算出的次方必须减去127才是真正的指数。底数定为2,即把一个浮点数表示为尾数乘.

2020-06-25 18:28:00 791

原创 Double的MIN_VALUE和Integer的MIN_VALUE

Integer的MIN_VALUE是:-2147483648MAX_VALUE是:2147483647Integer的源码:/** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. */ @Native public static final int MIN_VALUE = 0x80000000; /**

2020-06-25 18:25:28 583

转载 Java中List, Integer[], int[]的相互转换

本文涉及到一些Java8的特性.import java.util.Arrays;import java.util.List;import java.util.stream.Collectors; public class Main { public static void main(String[] args) { int[] data = {4, 5, 3, 6, 2, 5, 1}; // int[] 转 List<Integer&gt.

2020-06-24 07:51:58 446

转载 快速排序-挖坑填数+分治法

快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。该方法的基本思想是:1.先从数列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。虽然快速排序称为分治法,但分治法这三个字显然无法很好的概括快速排序的全部步骤。因此我的对快速排序作了进一步的说明----挖坑填数+分治法:.

2020-06-24 06:53:13 401

转载 BI、数据仓库、ETL、大数据开发工程师有什么区别?

一味的解释 数据仓库 概念可能没意思,我们从不同角色出发吧老板:我是一家手机公司的老板,今天要向去董事局汇报,我要准备一份介绍过去三年的用户增长、用户留存、用户活跃度、手机里面每个APP使用率等情况的报表,假如下面没我下面没有BI,那我肯定就蒙逼了。。BI: 我是一名非技术BI,我天天看竞品的分析报告,看双十一销量,看各种评论,知道自己的产品有哪些短板有哪些长处,我分析南北地域差异,国内外客户喜好,总之我在手机领域有着很强的行业解读能力和数据解读能力,我可以画出非常漂亮的图表和PP...

2020-06-23 20:30:02 5990 1

转载 Google Protocol Buffer 的使用和原理(c++)

简介什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或

2020-06-23 20:01:05 1857

转载 阿里巴巴为什么不用 ZooKeeper 做服务发现?

站在未来的路口,回望历史的迷途,常常会很有意思,因为我们会不经意地兴起疯狂的念头,例如如果当年某事提前发生了,而另外一件事又没有发生会怎样?一如当年的奥匈帝国皇位继承人斐迪南大公夫妇如果没有被塞尔维亚族热血青年普林西普枪杀会怎样,又如若当年的丘老道没有经过牛家村会怎样?2008 年底,淘宝开启一个叫做“五彩石”的内部重构项目,这个项目后来成为了淘宝服务化、面向分布式走自研之路,走出了互联网中间件体系之始,而淘宝服务注册中心 ConfigServer 于同年诞生。2008 年前后,Yahoo 这...

2020-06-22 19:32:29 205

转载 区块链入门

一、区块链的本质区块链是什么?一句话,它是一种特殊的分布式数据库。首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。二、区块链的最大特点分布式数据库并非新发明,市场上早有此类产品。但是,区块链有一个革命性...

2020-06-22 10:33:31 326

转载 mysql面试题

如何设计一个关系型数据库?首先划分为两大部分,一个存储部分,类似文件系统将数据持久化到硬盘上, 另一个是程序实例部分,创建模块: 存储管理,缓存机制,SQL解析,日志管理,权限划分,容灾机制**,索引管理,锁模块**。数据库的三范式是什么?第一范式:强调的是列的原子性,即数据库表的每一列都是不可分割的原子数据项。 第二范式:要求实体的属性完全依赖于主关键字。所谓完全 依赖是指不能存在仅依赖主关键字一部分的属性。 第三范式:任何非主属性不依赖于其它非主属性。事务的基本要素 ACIDAto

2020-06-18 10:39:44 511 1

转载 Linux面试题

如今程序员生产的代码99%都部署在linux环境下,代码发现缺陷,程序员的第一反应是到 Linux 上拉日志下来看。程序员不是运维,不需要掌握非常多复杂命令。推荐终端工具SecureCRT xshell常用命令(重要)ls/ll、cd、mkdir、rm-rf、cp、mv、ps -ef | grep xxx、kill、free-m、tar -xvf file.tar查看进程:(例:如何查看所有xx进程) ps -ef | grep xxx​ ps -aux | grep xxx(-

2020-06-16 17:05:23 222

转载 设计模式

有一些重要的设计原则在开篇和大家分享下,这些原则将贯通全文:面向接口编程,而不是面向实现。这个很重要,也是优雅的、可扩展的代码的第一步,这就不需要多说了吧。 职责单一原则。每个类都应该只有一个单一的功能,并且该功能应该由这个类完全封装起来。 对修改关闭,对扩展开放。对修改关闭是说,我们辛辛苦苦加班写出来的代码,该实现的功能和该修复的 bug 都完成了,别人可不能说改就改;对扩展开放就比较好理解了,也就是说在我们写好的代码基础上,很容易实现扩展。创建型模式创建型模式的作用就是创建对象,说到创建一

2020-06-16 17:03:40 178

转载 原型模式

在有些系统中,存在大量相同或相似对象的创建问题,如果用传统的构造函数来创建对象,会比较复杂且耗时耗资源,用原型模式生成对象就很高效,就像孙悟空拔下猴毛轻轻一吹就变出很多孙悟空一样简单。原型模式的定义与特点原型(Prototype)模式的定义如下:用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型相同或相似的新对象。在这里,原型实例指定了要创建的对象的种类。用这种方式创建对象非常高效,根本无须知道对象创建的细节。例如,Windows 操作系统的安装通常较耗时,如果复制就快了很多。在生活中

2020-06-16 17:01:17 146

转载 建造者模式

在软件开发过程中有时需要创建一个复杂的对象,这个复杂对象通常由多个子部件按一定的步骤组合而成。例如,计算机是由 OPU、主板、内存、硬盘、显卡、机箱、显示器、键盘、鼠标等部件组装而成的,采购员不可能自己去组装计算机,而是将计算机的配置要求告诉计算机销售公司,计算机销售公司安排技术人员去组装计算机,然后再交给要买计算机的采购员。生活中这样的例子很多,如游戏中的不同角色,其性别、个性、能力、脸型、体型、服装、发型等特性都有所差异;还有汽车中的方向盘、发动机、车架、轮胎等部件也多种多样;每封电子邮件的发件人

2020-06-16 16:54:31 184

转载 jvm面试题

JVM 的主要组成部分及其作用类加载器(ClassLoader) 运行时数据区(Runtime Data Area) 执行引擎(Execution Engine) 本地库接口(Native Interface)组件的作用: 首先通过类加载器(ClassLoader)会加载类文件到内存,Class loader只管加载,只要符合文件结构就加载。运行时数据区(Runtime Data Area)是jvm的重点,我们所有所写的程序都被加载到这里,之后才开始运行。字节码文件只是 JVM 的一套指

2020-06-16 16:02:58 396

转载 java多线程面试题

临界资源临界资源是一次仅允许一个进程使用的共享资源。各进程采取互斥的方式,实现共享的资源称作临界资源。属于临界资源的硬件有,打印机,磁带机等;软件有消息队列,变量,数组,缓冲区等。进程间采取互斥方式,实现对这种资源的共享。临界区:每个进程中访问临界资源的那段代码称为临界区(criticalsection),每次只允许一个进程进入临界区,进入后,不允许其他进程进入。线程和进程的区别?进程是系统资源分配的最小单位,线程是程序执行的最小单位 进程使用独立的数据空间,而线程共享进程

2020-06-16 15:43:31 636

转载 Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令,一个是Linux/Unix都支持,二是相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)。一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

2020-06-16 15:31:25 138

转载 java并发基础

JMM(Java 内存模型)原子性(Atomictiy)原子性是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。可见性(Visibility)可见性是指当一个线程修改了某一个共享变量的值时,其他线程能否立即知道这个修改。缓存优化,硬件优化,指令重排,编辑器的优化。可能导致的可见性问题。有序性(Ordering)有序性是指:在本线程内观察,所有操作都是有序的。在一个线程观察另一个线程,所有操作都是无序的,无序是因为发生了指令重排序。在

2020-06-16 15:25:16 184

转载 Java容器

一 概览容器的思维导图:CollectionListJava 的 List 是非常常用的数据类型。List 是有序的 Collection。Java List 一共三个实现类: 分别是 ArrayList、Vector 和 LinkedList。ArrayList:ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数 组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数 组的数据复制到新的存储空间中。

2020-06-16 00:28:35 244

转载 计算机网络面试题

TCP/IP四层网络模型第一层 网络接口层网络接口层包括用于协作IP数据在已有网络介质上传输的协议。协议:ARP,RARP第二层 网间层网间层对应于OSI七层参考模型的网络层。负责数据的包装、寻址和路由。同时还包含网间控制报文协议(Internet Control Message Protocol,ICMP)用来提供网络诊断信息。协议:本层包含IP协议、RIP协议(Routing Information Protocol,路由信息协议),ICMP协议。第三层 传输层传输层..

2020-06-16 00:14:34 521

转载 java基础

Java 语言有哪些特点/什么是Java?简单易学; 面向对象(封装,继承,多态); 平台无关性( Java 虚拟机实现平台无关性); GC实现垃圾回收; 异常处理机制; 支持多线程; 支持网络编程并且很方便; 编译与解释并存;面向对象和面向过程的区别面向过程:面向过程性能比面向对象高。因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、..

2020-06-15 23:57:30 177

原创 jconsole本地连接失败(linux)

本地运行java程序,然后打开一个shell,输入jconsole:选中要连接的程序,如图中的CpuTest,然后点击Connect按钮,然后连接失败,重新连接,还是失败.后经排查发现是因为本地的java是14,程序使用的是11,将两者改为一致的,成功连接上.如果不是因为版本不一致,可能需要设置程序启动的jvm参数.-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx (服务器ip,或者localhost)-Dcom.sun.management.jm

2020-06-13 09:57:45 1572

转载 Java LinkedList源码剖析

LinkedList总体介绍方法剖析add()remove()get()set()LinkedList总体介绍LinkedList同时实现了List接口和Deque接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列(Queue),同时又可以看作一个栈(Stack)。这样看来,LinkedList简直就是个全能冠军。当你需要使用栈或者队列时,可以考虑使用LinkedList,一方面是因为Java官方已经声明不建议使用Stack类,更遗憾的是,Java里根本没有一个叫

2020-06-09 22:26:18 125

转载 深入理解Java PriorityQueue

PriorityQueue总体介绍方法剖析add()和offer()element()和peek()remove()和poll()remove(Object o)PriorityQueueJava中PriorityQueue通过二叉小顶堆实现,可以用一棵完全二叉树表示。本文从Queue接口函数出发,结合生动的图解,深入浅出地分析PriorityQueue每个操作的具体过程和时间复杂度,将让读者建立对PriorityQueue建立清晰而深入的认识。总体介绍前面以Java

2020-06-09 22:24:33 142

转载 ArrayDeque

前言总体介绍方法剖析addFirst()addLast()pollFirst()pollLast()peekFirst()peekLast()前言Java里有一个叫做Stack的类,却没有叫做Queue的类(它是个接口名字)。当需要使用栈时,Java已不推荐使用Stack,而是推荐使用更高效的ArrayDeque;既然Queue只是一个接口,当需要使用队列时也就首选ArrayDeque了(次选是LinkedList)。总体介绍要讲栈和队列,首先要讲Deque接

2020-06-09 22:23:02 385

转载 漫画算法:什么是外部排序?

背景西天取经的路上,一样上演着编程的乐趣.....排序的时候我们可以选择快速排序或归并排序等算法。为了方便,我们把排序好的2G有序数据称之为有序子串吧。接着我们可以把两个小的有序子串合并成一个大的有序子串。注意:读取的时候是每次读取一个int数,通过比较之后在输出。按照这个方法来回合并,总共经过三次合并之后就可以得到8G的有序子串。接下来把12个数据分成4份,然后排序成有序子串然后把子串进行两两合并...

2020-06-09 20:29:49 146 1

转载 Linux下Mycat安装配置和使用

1.mycat安装下载mycat解压tar -zxvf Mycat-server-1.6-RELEASE-20161012170031-linux.tar.gz把mycat文件夹移动到 /usr/local/ 下mv Mycat-server-1.6-RELEASE-20161012170031-linux /usr/local/mycat2.新建用户和组groupadd mycatuseradd -r -g mycat mycatchown -R mycat:...

2020-06-09 09:05:18 370

转载 Linux下安装mysql

一 安装前准备1、检查是否已经安装过mysql,执行命令[root@localhost /]# rpm -qa | grep mysql从执行结果,可以看出我们已经安装了mysql-libs-5.1.73-5.el6_6.x86_64,执行删除命令[root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64再次执行查询命令,查看是否删除[root@localhost /]# r...

2020-06-09 07:54:36 157

转载 Ubuntu 14.04 安装 chkconfig 服务管理程序

一、 问题起源由于CentOS7 存在的问题,在 docker centos 容器中运行 ceph,执行 systemctl 指令会遇到如下错误:Failed to get D-Bus connection: Operation not permitted感觉这个问题只能换宿主机操作系统才能很好地解决,代价太大,遂决定使用Ubuntu14.04 容器运行ceph。注意:只能安装 ceph hammer 或更低版本,因为新版本采用 systemd 管理服务,老版本使用的 chkconf...

2020-06-09 07:44:38 213

转载 刚刚安装完mysql就提示密码过期!

mysql 5.7.14安装完后登陆报错,意思是密码过期[root@mysql]# mysql -u root -pEnter password:ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.解决办法:1.在my.cnfmysqld 部分加入 skip-grant-tables ..

2020-06-09 07:37:10 741

转载 Linux下Redis的安装和部署

一、Redis介绍Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统。和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string、list、set、zset和hash。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。在此基础上,Redis支持各种不同方式的排序。和Memcache一样,Redis数据都是缓存在计算机内存中,不同的是,Memcache只能将数据缓存到内存中,无

2020-06-09 05:05:36 196

转载 SpringBoot集成MyCat

什么是Mycat  MyCat是一个开源的分布式数据库系统,前端用户可以把它看作是一个数据库代理。其实现的核心原理是“拦截” 。Myacat拦截用户发送过来的Sql语句,做一些特定的分析:如分片分析,路由分析,读写分析,读写分离分析。然后将SQL发往真实的数据库。不同于其他的中间件比如druid连接池,Mycat使用的是Nio异步通信机制(非阻塞型的),它的线程池数量默认为1,实际生产环境线程数=CPU的核数。推荐使用Mycat1.6版本,项目中MyCat配置代替原数据源的配置,非常简单。应

2020-06-08 19:53:57 2928 2

转载 多线程 ForkJoinPool

背景ForkJoinPool的优势在于,可以充分利用多cpu,多核cpu的优势,把一个任务拆分成多个“小任务”,把多个“小任务”放到多个处理器核心上并行执行;当多个“小任务”执行完成之后,再将这些执行结果合并起来即可。这种思想值得学习。使用Java7 提供了ForkJoinPool来支持将一个任务拆分成多个“小任务”并行计算,再把多个“小任务”的结果合并成总的计算结果。ForkJoinPool是ExecutorService的实现类,因此是一种特殊的线程池。使用方法:创建了ForkJoi

2020-06-04 22:10:05 215

转载 线程池之ScheduledThreadPoolExecutor

1. ScheduledThreadPoolExecutor简介ScheduledThreadPoolExecutor可以用来在给定延时后执行异步任务或者周期性执行任务,相对于任务调度的Timer来说,其功能更加强大,Timer只能使用一个后台线程执行任务,而ScheduledThreadPoolExecutor则可以通过构造函数来指定后台线程的个数。ScheduledThreadPoolExecutor类的UML图如下:ScheduledThreadPoolExecutor类的UML图..

2020-06-04 21:59:43 714

转载 为什么阿里Java规约禁止使用Java内置Executors创建线程池?

IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒。告诉你手动创建线程池,效果会更好。在探秘原因之前我们要先了解一下线程池 ThreadPoolExecutor 都有哪些参数及其意义。ThreadPoolExecutor构造方法:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, .

2020-06-04 20:52:05 1125

转载 Java并发编程:线程池的源码分析和使用实例

Java并发编程:线程池的使用  我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?  在Java中可以通过线程池来达到这样的效果。今天我们就来详细讲解一下Java的线程池,首先我们从最核心的ThreadPoolEx

2020-06-04 17:48:32 180

原创 java创建线程实例

找到一篇介绍创建线程的方法的文章,在此记录下.1.继承Thread类2.实现Runnable接口(上述两种方法既可以显式创建类,也可以使用匿名内部类)3.使用FutureTask4.使用TimerTask5.java8 parallelStream()6.线程池7.Spring @EnableAsync 和@Async注解以下为实例代码(不包括6,7的实现):package com.example.demo.thread;import java.util..

2020-06-04 16:40:09 288

netty-socketio api接口文档.7z

netty-socketio api接口文档,通过idea生成的netty-socketio的doc文档,api接口文档

2019-10-18

chromedriver_win32.zip

chromedriver_linux64.zip支持77的chrome,用于python爬虫,windows版

2019-08-30

chromedriver_linux64.zip

chromedriver_linux64.zip支持77的chrome,用于python爬虫,linux版

2019-08-30

spoonwep2.rar

BackTrack3下使用的用于破解使用wep加密的wifi的工具。

2019-08-29

phpMyAdmin-4.9.0.1-all-languages.zip

phpMyAdmin-4.9.0.1-all-languages.zip为mysql提供图形管理工具

2019-08-15

mariadb-10.4.6-winx64.msi

mariadb-10.4.6-winx64.msi是mariadb的windows的安装程序。

2019-08-15

mongodb-manual-master.epub

mongodb-manual-master.epub,是mongodb的官方手册,官方教程

2019-08-15

mariadb-java-client-2.4.3.jar

mariadb-java-client-2.4.3.jar,mariadb的驱动程序,用于java程序

2019-08-15

mariadb-connector-odbc-3.1.3-win64.msi

mariadb-connector-odbc-3.1.3-win64.msi,mariadb的odbc驱动程序

2019-08-15

nexus-3.18.0-01-unix.tar.gz

nexus-3.18.0-01-unix.tar.gz unix ,linux平台上的nexus,3.18.0版本

2019-08-08

空空如也

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

TA关注的人

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