自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(382)
  • 资源 (5)
  • 收藏
  • 关注

原创 Github无法访问或访问慢解决方案

需要更新 C:\Windows\System32\drivers\etc\hosts文件 具体添加的内容可以访问https://www.ipaddress.com地址获取最新的IP140.82.112.4 github.com199.232.69.194 github.global.ssl.fastly.net按住windows+R,然后输入 ipconfig /flushdns 命令提示符中输入ping github.com 查看响应时间...

2020-07-20 10:50:13 841

转载 我们是怎样打造一款分布式数据库的

关系型数据库在过去数十年的数据库领域一直占据着绝对主导的地位,它所带来的稳定性、安全性和易用性,成为了构建现代化系统的基石。随着的互联网高速发展,构架于单机系统的数据库已无法满足越来越高的并发请求和越来越大的数据存储需求,因此,分布式数据库被愈加广泛的采用。一直以来,数据库领域均由西方的科技公司和社区所主导。而今,越来越多的国产数据库解决方案以分布式为支点,逐渐在此领域有所建树。Apache ShardingSphere 是其中的一个分布式数据库解决方案,也是目前 Apache 软件基金会中唯一的数据库

2020-07-13 15:28:31 1631

转载 SpringBoot结合Sharding-JDBC实现分库分表

前言:今天来聊下 SpringBoot 集成 Sharding-JDBC 实现分库分表;为此写了一个小 Demo,这个Demo是基于SpringBoot,并集成了 Mybatis、Redis、Swagger(生成在线的接口文档 )、PageHelper(分页工具)等,当然绝对也集成了 Sharding-JDBC ;以及设计了 RestFul 风格的接口 ,添加了 单元测试 。下面简单介绍下本文的主线:①、首先介绍下Demo的工程目录,并且介绍下使用的基本环境,如:sql、工程的pom.xml.

2020-07-13 14:54:33 1418 2

转载 Spring Boot 集成 Seata 解决分布式事务问题

seata 简介Seata 是 阿里巴巴2019年开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里内部一直扮演着分布式一致性中间件的角色,帮助阿里度过历年的双11,对各业务进行了有力的支撑。经过多年沉淀与积累,2019.1 Seata 正式宣布对外开源 。目前 Seata 1.0 已经 GA。微服务中的分布式事务问题让我们想象一下传统的单片应用程序,它的业务由3个模块组成,他们使用单个本地数据源。自然,

2020-07-08 17:28:22 471

转载 MySQL高可用方案——双主

mysql的高可用方案有很多种,双主、MHA、MMM等等,这里只是写下最简单的双主这种高可用方案。一、配置Mysql互为主从1、环境准备系统 IP 主机名 服务 Centos 7.5 192.168.20.2 MYSQL01 MySQL+keepalived Centos 7.5 192.168.20.3 mysql02 MySQL+keepalived 注:MySQL已部署完成,可参考博文Centos部署MySQL 5.7进行部

2020-07-07 16:15:36 673

转载 tomcat的maxThreads、acceptCount(最大线程数、最大排队数)

tomcat 的Connector配置如下<</span>Connectorport="8080"protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"maxThreads="800"acceptCount="1000"/>其中最后两个参数意义如下:maxThreads:tomcat起动的最大线程数,即同时处理的任务个数,默认值为200acceptCount:当tomcat起动...

2020-07-07 13:24:22 1004

转载 程序猿都应学习的语言:看25张图学UML

[导读] 作为程序猿都最好掌握的一门语言,那就是UML(Unified Modeling Language),统一建模语言(UML)是软件工程领域中一种通用的开发建模语言,旨在提供一种可视化系统设计的标准方法。是开发人员、系统设计人员交流的有效工具。今天来分享一下UML的一些体会,如有错误请帮忙指正。注:UML工具有很多,本文描述的基于Enterprise Architect。最近微信平台排序规则升级了,如不想错过小号文章,建议给小号加下星标。UML前世今生UML时间进化线:说到UML不

2020-06-26 07:37:07 355

转载 API 面试四连杀:接口如何设计?安全如何保证?签名如何实现?防重如何实现?

说明:在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢?下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分享.一:token 简介Token:访问令牌access token, 用于接口中, 用于标识接口调用者的身份、凭证,减少用户名和密码的传输次数。一般情况下客户端(接口调用方)需要先向服务器端申请

2020-06-24 08:13:37 329

转载 微服务架构下的统一身份认证和授权

一、预备知识本文讨论基于微服务架构下的身份认证和用户授权的技术方案,在阅读之前,最好先熟悉并理解以下几个知识点:微服务架构相关概念:服务注册、服务发现、API 网关 身份认证和用户授权:SSO、CAS、OAuth2、JWT文章在涉及到上述知识内容时,会附上参考链接。二、背景当企业的应用系统逐渐增多后,每个系统单独管理各自的用户数据容易行成信息孤岛,分散的用户管理模式阻碍了企业应用向平台化演进。当企业的互联网业务发展到一定规模,构建统一的标准化账户管理体系将是必不可少的,因为它是企业互联网

2020-06-22 09:18:25 1000

转载 Vue.directive自定义指令

什么是指令指令 (Directives) 是带有 v- 前缀的特殊特性。指令特性的值预期是单个 JavaScript 表达式 (v-for 例外)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。简单的讲就是: 指令是可以写在DOM元素的小命令,以v-为前缀,vue就能识别这是一个指令并保持语法的一致性。如果需要对HTML进行底层操作的话,这种方式是非常有用的。Vue中常用指令v-if v-else v-else-if v-show v-on v-bi

2020-06-19 13:33:27 348

转载 从头开始学习vue-router

一、前言要学习vue-router就要先知道这里的路由是什么?为什么我们不能像原来一样直接用标签编写链接哪?vue-router如何使用?常见路由操作有哪些?等等这些问题,就是本篇要探讨的主要问题。二、vue-router是什么这里的路由并不是指我们平时所说的硬件路由器,这里的路由就是SPA(单页应用)的路径管理器。再通俗的说,vue-router就是WebApp的链接路径管理系统。 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的

2020-06-19 13:06:05 259

转载 javascript 中const,var,let区别与用法

今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。const定义的变量不可以修改,而且必须初始化。const b = 2;//正确// const b;//错误,必须初始化console.log('函数外const定义b:' + b);//有输出值// b = 5;// console.log('函数外修改const定义b:' + b);//无法输出var定义的变量可以修改,如果不初始化会输出..

2020-06-19 09:50:58 209

转载 vue+element_ui上传文件,并传递额外参数

需求:文件大小验证 文件类型验证 额外参数传输\<template> <el-upload class="upload-demo" action :limit="1" :file-list="formFileList" :http-request="handleUploadForm" :on-exceed="formHandleExceed" :on-remove="formHandleRemove" :before-upload="beforeUploadForm" a

2020-06-18 12:42:22 2981

转载 Vue js-cookie 使用

js-cookie 官方文档里面就详细的介绍了es5怎么引用,以下是ES6以上的用户一、安装npm install js-cookie --save二、引用import Cookies from 'js-cookie'三、一般使用存到Cookie去// Create a cookie, valid across the entire site:Cookies.set('name', 'value');// Create a cookie t...

2020-06-17 13:57:41 263

转载 Promise

在JavaScript的世界中,所有代码都是单线程执行的。由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现:function callback() { console.log('Done');}console.log('before setTimeout()');setTimeout(callback, 1000); // 1秒钟后调用callback函数console.log('after setTimeout()

2020-06-17 09:27:57 152

转载 Vuex白话教程第六讲:Vuex的管理员Module(实战篇)

文 | 大宏写在前面这一讲是 Vuex 基础篇的最后一讲,也是最为复杂的一讲。如果按照官方来的话,对于新手可能有点难以接受,所以想了下,决定干脆多花点时间,用一个简单的例子来讲解,顺便也复习一下之前的知识点。首先还是得先了解下 Module 的背景。我们知道,Vuex 使用的是单一状态树,应用的所有状态会集中到一个对象中。如果项目比较大,那么相应的状态数据肯定就会更多,这样的话,store 对象就会变得相当的臃肿,非常难管理。这就好比一家公司只有老板一个人来管理一样。如果小公司倒还...

2020-06-17 08:59:20 301 1

转载 Vuex白话教程第五讲:Vuex的小帮手

文 | 大宏先说两句前面已经讲完了 Vuex 下的State、Getter、Mutation及Action这四驾马车,不知道大家是否已经理解。当然,要想真正熟练掌握的话,还是需要不断的练习和动手实践才行。其实只要把这四驾马车完全熟练驾驭了,那么应对一些中小型的项目,基本上就已经没啥问题了,后面的 Module 这架终极马车,其实是为了搞定那些稍微大型复杂一点的项目,避免 store 里面的数据太多,难以管理而设计,这驾马车稍微比较抽象,不太好驾驭,我们下一讲再来详细的去剖解它。V...

2020-06-17 08:58:31 147

转载 Vuex白话教程第四讲:Vuex旗下的Action

写在前面通过上一讲「Vuex 旗下的 Mutation」,我们知道了如何去修改 State 的数据,而且只能通过 Mutation 去提交修改,另外还了解到了 Mutation 必须是同步函数,那么如果需求当中必须要用到异步函数怎么办?好办,那就轮到 Action 上场了。简单介绍Action 类似于 mutation,不同在于:1、Action 提交的是 mutation,而不是直接变更状态。2、Action 可以包含任意异步操作。看一个简单的 actio..

2020-06-17 08:57:53 211

转载 Vuex白话教程第三讲:Vuex旗下的Mutation

大宏说关注22018.11.01 18:37:27字数 1,208阅读 13,263文 | 大宏写在前面上一讲「Vuex 旗下的 State 和 Getter」,告诉了我们怎么去使用仓库 store 中的状态数据。当然,光会用肯定还不够,大部分的应用场景还得对这些状态进行操控,那么具体如何操控呢,这就是这一讲要说的重点。只有 mutation 能动 State更改 Vuex 的 store 中的状态的唯一方法是提交 mutation。Vuex 中的 mutation 非常类..

2020-06-17 08:57:09 176

转载 Vuex白话教程第二讲:Vuex旗下的State和Getter

文 | 大宏先说两句上一讲「Vuex 到底是个什么鬼」,已经完美诠释了 Vuex 的牛逼技能之所在(纯属自嗨)。如果把 Vuex 比喻成农药里面的刘备,那就相当于你现在已经知道了刘备他是一个会打枪的力量型英雄,而且他打的枪还是双排量的,认识到这一点后,那么接下来就是要了解他到底是如何打枪的,是左手打,还是右手打,还是双手一起端着枪打?同样,我们已经知道了 Vuex 就如同一个全局的管理员一样,帮着我们统一管理着项目的共享数据,那它到底是通过什么样的方式去管理的呢?我们应该如何与这个管理员进...

2020-06-17 08:56:28 218

转载 Vuex白话教程第一讲:Vuex到底是个什么鬼?

文 | 大宏先说两句官方已经有教程了,为什么还要写这个教程呢?说实话,还真不是我闲着蛋疼,官方的教程真的是太官方了,对于刚入门 Vuex 的童鞋来说,想必看官方的教程,很多地方就如同看圣经一样,比如「欧玛尼玛尼牙」,所有的字都认识,就是不知道说些什么玩意,不信,你可以戳进去看看。当然,对于大神级别一看就懂的,那就不用说了,肯定是看官方的更权威。还有,如果对 Flux、Redux、The Elm Architecture 比较熟悉的话,也可以移步官方,因为官方也说了,Vuex 的套路基本上都是..

2020-06-17 08:54:42 197

转载 MySQL集群高可用架构之MHA

前面写过一篇:浅谈MySQL集群高可用架构。之后一直有很多小伙伴在后台或其它渠道问我,何时有相关的深入配置管理文章出来,因此,民工哥,也将对前面的各类架构逐一进行整理,然后发布出来。那么今天将来发布的MHA的架构整体规划与配置操作。1、架构简介MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且

2020-06-12 15:33:47 238

转载 一篇文章了解大前端

大前端是什么?简单来说,大前端就是所有前端的统称,比如Android、iOS、web、Watch等,最接近用户的那一层也就是UI层,然后将其统一起来,就是大前端。大前端最大的特点在于一次开发,同时适用于所有平台,开发者不用为一个APP需要做Android和iOS两种模式而担心。大前端是web统一的时代,利用web不仅能开发出网站,更可以开发手机端web应用和移动端应用程序。大前端为什么出现?由于node的出现,前端工程师不需要依赖于后端程序而直接运行,从而前后端分离起来。所以当开发一个新产品的时

2020-06-12 11:42:30 164

转载 RocketMQ消息丢失场景及解决办法

既然使用在项目中使用了MQ,那么就不可避免的需要考虑消息丢失问题。在一些涉及到了金钱交易的场景下,消息丢失还是很致命的。那么在RocketMQ中存在哪几种消息丢失的场景呢?先来一张最简单的消费流程图:上图中大致包含了这么几种场景:生产者产生消息发送给RocketMQ RocketMQ接收到了消息之后,必然需要存到磁盘中,否则断电或宕机之后会造成数据的丢失 消费者从RocketMQ中获取消息消费,消费成功之后,整个流程结束这三种场景都可能会产生消息的丢失,如下图所示:场景1中生产者

2020-06-12 10:05:34 2622

转载 分布式锁,分布式事务

一、分布式锁1、什么是分布式锁?场景1:常规的我们多线程访问同一代码块的时候,为了保证同一时间只能 由一个线程访问,保证数据安全一致性,通常我们使用synchronized关键字来对方法加锁,以达到保证数据安全性。场景2:现在越来越多的项目,为了追求性能与高并发,采用了soa架构,微服务架构,于是就会出现多个模块单独的服务。这个时候呢就会有一个问题,如何保证多个节点的现场同步执行呢? 这种情况呢,就会用到了分布式锁。2、分布式锁的解决方案与实现有哪些呢?1、数据库解决方案思路:...

2020-06-12 09:48:20 516

转载 Jenkins一键打包部署SpringBoot应用

摘要任何简单操作的背后,都有一套相当复杂的机制。本文将以SpringBoot应用的在Docker环境下的打包部署为例,详细讲解如何使用Jenkins一键打包部署SpringBoot应用。Jenkins简介Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,满足任何项目的需要。我们可以用Jenkins来构建和部署我们的项目,比如说从我们的代码仓库获取代码,然后将我们的代码打包成可执行的文件,之后通过远程的ssh工具执行脚本来运行我们的项目。Jenk

2020-06-12 09:31:13 792 1

转载 SpringBoot - 安全管理框架Spring Security使用详解(11)-获取当前用户的用户名、id

有时我们需要获取当前登录的用户信息(比如用户名),通常有如下几种方式来实现。方法1:通过 Authentication.getPrincipal() 获取用户信息(1)通过Authentication.getPrincipal()可以获取到代表当前用户的信息,这个对象通常是UserDetails的实例。通过UserDetails的实例我们可以获取到当前用户的用户名、密码、角色等信息。 Spring Security使用一个Authentication对象来描述当...

2020-06-07 06:00:49 4865 1

转载 SpringBoot - 使用Spring Security实现OAuth2授权认证教程

一、OAuth 2 介绍1,什么是 OAuth 2?OAuth是一个开放标准,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头像、照片、视频等),而在这个过程中无须将用户名和密码提供给第三方应用。实现这一功能是通过提供一个令牌(token),而不是用户名和密码来访问他们存放在特定服务提供者的数据。 每一个令牌授权一个特定的网站在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站灵活地访问存储在另外一些资源服务器的特定信息,而非所有内容。目前主流的qq,微...

2020-06-07 05:59:40 1798 2

转载 SpringBoot - 安全管理框架Spring Security使用详解(10)-通过注解配置方法安全

在之前的文章样例中,认证和授权都是基于URL的。开发者也可以通过注解来灵活地配置方法安全,下面通过样例进行演示。十、通过注解配置方法安全1,样例代码(1)首先我们要通过@EnableGlobalMethodSecurity注解开启基于注解的安全配置:@EnableGlobalMethodSecurity 注解参数说明:prePostEnabled = true会解锁@PreAuthorize和@PostAuthorize两个注解。顾名思义,@PreAuthori...

2020-06-06 07:25:03 439

转载 SpringBoot - 安全管理框架Spring Security使用详解(9)-密码加密配置

在之前的文章中密码都是使用明文的方式进行存储,但这样会有很大的安全隐患。所以正常做系统时,密码都要加密处理。而在Spring Boot中配置密码加密非常容易,下面通过样例进行演示。九、密码加密配置1,样例代码(1)要配置密码加密只需要修改两个地方。首先要修改HttpSecurity配置中的PasswordEncoder这个Bean的实现,这里我们采用BCryptPasswordEncoder加密方案。Spring Security提供了多种密码加密方案,官方推荐使用...

2020-06-06 07:24:26 815

转载 SpringBoot - 安全管理框架Spring Security使用详解(8)-配置多个HttpSecurity

在之前的文章中我们都只配置一个HttpSecurity,如果业务比较复杂,我们也可以配置多个HttpSecurity,实现对WebSecurityConfigurerAdapter的多次扩展。八、配置多个 HttpSecurity1,样例代码(1)配置多个HttpSecurity时,MultiHttpSecurityConfig不需要继承WebSecurityConfigurerAdapter,而是在MultiHttpSecurityConfig中创建静态内部类继承...

2020-06-06 07:23:54 668

转载 SpringBoot - 安全管理框架Spring Security使用详解(7)-注销登录配置

默认情况下,Spring Security提供了注销接口是/logout,访问这个接口即可注销当前登录用户并且自动跳转到登录页。如果需要修改注销接口,或者想在注销时做一些业务逻辑,或者注销后不是跳转到登录页而是返回一段JSON提示,只需在一些简单配置即可。七、注销登录配置1,样例代码首先修改Spring Security配置,增加相关的自定义配置代码:开启并设置注销登录的URL。 在注销是做一些数据清除工作。 注销后返回一段JSON提示,而是不是跳转到登录页。...

2020-06-06 07:23:21 457

转载 SpringBoot - 安全管理框架Spring Security使用(6)-自定义登录页、接口、结果

在之前的所有样例中,登录表单一直都是使用Spring Security提供的默认登录页,登录成功后也是默认的页面跳转。有时我们想要使用自定义的登录页,或者在前后端分离的开发方式中,前后端的数据交互通过JSON进行,这时登录成功后就不是页面跳转了,而是一段JSON提示。下面通过样例演示如何进行登录表单的个性化配置。六、自定义登录页面、登录接口、登录成功或失败的处理逻辑1,样例代码(1)首先修改Spring Security配置,增加相关的自定义代码:将登录页改成使用自定义...

2020-06-06 07:22:48 465

转载 SpringBoot - 安全管理框架Spring Security使用详解(5)-角色继承

之前的文章中,各个角色之间不具备任何关系,但一般来说角色之前是有关系的,例如ROLE_admin一般既有admin的权限,又具有user的权限。下面介绍如何配置这种角色之间相互继承的关系。五、角色继承1,配置角色关系要配置角色继承关系,只需在Spring Security的配置类中提供一个RoleHierarchy即可。下面高亮代码含义:ROLE_dba拥有所有的权限 ROLE_admin具有ROLE_user的权限 ROLE_user则是一个公共角色...

2020-06-06 07:22:13 272

转载 SpringBoot - 安全管理框架Spring Security使用详解(4)-基于数据库的URL权限规则配置

虽然前面我们实现了通过数据库来配置用户与角色,但认证规则仍然是使用HttpSecurity进行配置,还是不够灵活,无法实现资源和角色之间的动态调整。 要实现动态配置URL权限,就需要开发者自定义权限配置,具体步骤如下。四、基于数据库的URL权限规则配置1,数据库设计这里的数据库在前文(点击查看)的基础上增加一张资源表和一张资源角色管理表,并添加一些预置数据:资源表中定义了用户能够访问的URL模式。 资源角色表则定义了访问该模式的URL需要什么样的角色...

2020-06-06 07:21:38 536

转载 SpringBoot - 安全管理框架Spring Security使用详解(3)-基于数据库的用户角色配置

之前的文章样例中,认证数据都是定义在内存里。而在真实项目中,用户的基本信息以及角色等都存储在数据库中,因此需要从数据库中获取数据进行认证。本文通过样例进行演示。三、基于数据库的用户角色配置1,添加依赖、配置数据库 本次样例使用MyBatis来操作数据库,首先在项目中添加MyBatis相关依赖,并进行数据库连接配置。具体参考我之前写的文章:SpringBoot - 使用MyBatis操作数据库1(安装配置,基本用法)2,创建数据表(1)首先创建相关的用户角色表,共三张...

2020-06-06 07:20:35 477

转载 SpringBoot - 安全管理框架Spring Security使用详解(1)-基本内存的用户、URL权限配置

二、基于内存的用户、URL权限配置1,用户角色配置(1)我们可以通过自定义类继承WebSecurityConfigurerAdapter,从而实现对Spring Security更多的自定义配置。比如下面样例我们就配置了两个用户,以及他们对应的角色。注意:基于内存的用户配置在配置角色时不需要添加“ROLE_”前缀,而下文介绍的基于数据库的认证配置角色时需要添加“ROLE_”前缀。 1 2 3 4 5 6 7 8 9...

2020-06-06 07:19:37 368

转载 SpringBoot-安全管理框架Spring Security使用详解(1)-基本用法

一般项目都会有严格的认证和授权操作,而在Java开发领域常见的安全框架有Shiro和Spring Security。本文首先介绍下后者。一、基本用法1,什么是 Spring Security ?Spring Security是一个相对复杂的安全管理框架,功能比Shiro更加强大,权限控制细粒度更高,对OAuth 2的支持也更友好。 由于Spring Security源自Spring家族,因此可以和Spring框架无缝整合,特别是Spring Boot中提供的...

2020-06-06 07:18:01 541

原创 Centos 7 安装Redis

采用直接从Yum源安装方式yum install redis启动redissystemctl start redis.service设置redis开机启动systemctl enable redis.service设置redis密码打开文件/etc/redis.conf,找到其中的# requirepass foobared,去掉前面的#,并把foobared改成你的密码redis.conf文件默认在/etc目录下,你可以更改它的位置和名字,更改后,注意在文件/usr

2020-05-28 18:32:47 151

原创 Centos 7 安装 JDK

准备阶段:.下载JDK ,访问Java官网,下载 jdk-8u251-linux-x64.tar.gzhttps://www.oracle.com/java/technologies/javase/javase-jdk8-downloads安装步骤将JDK安装包jdk-8u251-linux-x64.tar.gz 上传到 /usr/java 下解压tar -zxvf jdk-8u251-linux-x64.tar.gz配置JDK, 编辑 /etc/profile 文件,尾部添.

2020-05-28 18:28:26 134

深入理解Java虚拟机+JVM高级特性与最佳实践

深入理解Java虚拟机+JVM高级特性与最佳实践深入理解Java虚拟机+JVM高级特性与最佳实践

2018-04-06

Java并发编程艺术

Java并发编程艺术Java并发编程艺术Java并发编程艺术Java并发编程艺术

2018-04-06

Git-2.14.1-64-bit.exe

Git-2.14.1-64-bit.exe

2017-08-23

SpringBoot CRUD + 事务 DEMO

SpringBoot CRUD + 事务 DEMO,CSDN竟然不支持0分下载,只能设置1分了

2017-08-10

Git教程By廖雪峰.pdf

非常不错的Git入门书籍

2017-04-13

空空如也

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

TA关注的人

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