自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(63)
  • 资源 (16)
  • 收藏
  • 关注

转载 架构师能力层次模型

成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。这几种能力之间的关系大概如下图。编程能力、调试能力和编译部署能力属于最基础的能力。不能精通掌握这三种能力,很难在性能优化能力和业务架构能力方面有所成就。具备了一定的性能优化能力和业务架构能力之后,才能在线运维能力和项目管理能力方面表现优越。团队管理能力是最高能力,它对项目管理能力的依赖度更大。编程能力对工程师而言,编程

2020-12-26 18:57:49 630

原创 认证授权——JWT

一、Tokentoken 是一串字符串,通常因为作为鉴权凭据,最常用的使用场景是 API 鉴权。1. API 鉴权那么 API 鉴权一般有几种方式呢?我大概整理了如下:cookie + session和平常 web 登陆一样的鉴权方式,很常见,不再赘述。HTTP Basic将账号和密码拼接然后 base64 编码加到 header 头中。很显然,因为账号和密码几乎是『明文』传输的,而且每次请求都传,安全性可想而知。HTTP Digest将账号和密码加上其他一些信息拼接然后取摘要加到 hea

2021-01-06 10:45:26 458

转载 常见性能优化策略的总结

本文要感谢我职级评定过程中的一位评委,他建议把之前所做的各种性能优化的案例和方案加以提炼、总结,以文档的形式沉淀下来,并在内部进行分享。力求达到如下效果:1. 形成可实践、可借鉴、可参考的各种性能优化的方案以及选型考虑点,同时配合具体的真实案例,其他人遇到相似问题时,不用从零开始。2. 有助于开阔视野,除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。文章在内部分享后,引起强烈分享,得到了不少同事和朋友的认可和好评,觉得对日常的工作

2021-01-02 11:24:58 386

原创 Linux 下 ZooKeeper集群安装

Apache ZooKeeper 是一个分布式的、开源的程序协调服务,是 Hadoop 项目下的一个子项目。ZooKeeper 主要应用场景包括集群管理、配置中心、分布式锁、注册中心等。实际项目中,为了保证高可用,ZooKeeper 都是以分布式集群的方式进行安装的,至少需要三个节点。ZooKeeper 包含主从节点以及心跳机制(选举模式),假设 master 节点挂了之后,ZooKeeper 会通过选举模式在 slave 节点选举出一个新的 master。这里 Linux 选择 CentOS 7.2。

2020-12-28 09:45:06 148

转载 工作中如何做好积累

引言古人云:“活到老,学到老。”互联网算是最辛苦的行业之一,“加班”对工程师来说已是“家常便饭”,同时互联网技术又日新月异,很多工程师都疲于应付,叫苦不堪。以至于长期以来流传一个很广的误解:35岁是程序员工作的终点。如何在繁忙的工作中做好技术积累,构建个人核心竞争力,相信是很多工程师同行都在思考的问题。本文是我自己的一些总结,试图从三个方面来解答:第一部分阐述了一些学习的原则。任何时候,遵循一些经过检验的原则,都是影响效率的重要因素,正确的方法是成功的秘诀。提升工作和学习效率的另一个重要因素是释惑

2020-12-26 18:47:53 609

转载 写给工程师的十条精进原则

“追求卓越”是美团的价值观。作为一名技术人员,我们应该如何践行呢?本文总结了十条精进原则,希望能够给大家带来一些启发,更好地指导我们的行动。原则一:Owner意识“Owner意识”主要体现在两个层面:一是认真负责的态度,二是积极主动的精神。认真负责是工作的底线。首先,要对我们交付的结果负责。项目中每一个设计文档、每一行代码都需要认真完成,要对它的质量负责。如果设计文档逻辑混乱,代码没有注释,测试时发现一堆Bug,影响的不仅仅是RD的工程交付质量,还会对协同工作的RD、QA、PM等产生不好的影响。久而久

2020-12-26 18:29:16 161

原创 短链接服务系统设计

功能简单描述:功能很简单,实现将长网址缩短的功能,如:短链服务总的来说,就做两件事:将长链接变为短链接,当然是越短越好用户点击短链接的时候,实现自动跳转到原来的长链接长链转短链在转短链的时候,我们其实就是要将一个长长的链接映射为只有 4 到 7 个字母的字符串。这里我用了 MySQL 来存储,存放 short_key 和 original_url 的记录。数据表很简单,最主要的列有以下几个:id: 逻辑主键,BIGINTshort_key: 短链中的字符串,域名部分一般不需要加进去

2020-12-19 22:28:04 319 1

原创 分布式——ID生成策略

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。业务系统对ID号的要求:全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:在MySQL InnoDB引擎中使用的是聚集索引,由于多数RDBMS使用B-tree的数据结构来存储索引数据,在主键的选择上面我们应该尽量使用有序的主键保证写入性能。单调递增:保证下一个ID一定大于上一个ID,例如事务版本号、IM增量消息、排序等特殊需求。信息安全:如果ID是连续的,恶意用户的扒取工作就非常容易做了,直接按照顺序下载指定

2020-09-20 19:24:21 154

原创 JVM性能调优——GC优化

当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化。但GC算法复杂,影响GC性能的参数众多,且参数调整又依赖于应用各自的特点,这些因素很大程度上增加了GC优化的难度。即便如此,GC调优也不是无章可循,仍然有一些通用的思考方法。一、参数基本策略各分区的大小对GC的性能影响很大。如何将各分区调整到合适的大小,分析活跃数据的大小是很好的切入点。活跃数据的大小是指,应用程序稳定运行时长期存活对象在堆中占用的空间大小,也就是Full GC后堆中老年

2020-09-18 22:29:37 658

原创 Java——NIO

NIO(Non-blocking I/O,在Java领域,也称为New I/O),是一种同步非阻塞的I/O模型,也是I/O多路复用的基础,已经被越来越多地应用到大型应用服务器,成为解决高并发与大量连接、I/O处理问题的有效方式。常见I/O模型对比所有的系统I/O都分为两个阶段:等待就绪和操作。举例来说,读函数,分为等待系统可读和真正的读;同理,写函数分为等待网卡可以写和真正的写。需要说明的是等待就绪的阻塞是不使用CPU的,是在“空等”;而真正的读写操作的阻塞是使用CPU的,真正在”干活”,而且这个过程

2020-09-18 10:00:17 87

原创 JVM性能调优——垃圾回收机制

JVM 中栈、本地方法栈、程序计数器三个区域随线程而生,随线程而灭,每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了。而堆、方法区则不一样,只有在程序处于运行期间才能知道会创建哪些对象,内存的分配和回收都是动态的,GC 所关注的是这部分内存。注意:Jdk1.8 移除了方法区 (永久代),替换为了元空间。1.标记算法对象被判断为垃圾的标准即没有被其他对象引用了,下面是两种标记算法

2020-09-16 14:54:42 97

原创 JVM性能调优——GC日志

阅读 GC 日志是处理 JVM 内存问题的基础技能,它只是一些人为确定的规则,每一种收集器的日志形式都是由它们自身的实现所决定的,但 JVM 设计者为了方便用户阅读,将各个收集器的日志都维持了一定的共性。例如下面两段典型的日志:33.125: [GC [DefNew: 3324K->152K (3712K), 0.0025925secs] 3324K->152K (11904K), 0.0031680 secs]100.667: [FullGC [Tenured: 0K->210K

2020-09-16 14:39:58 71

原创 深入理解 Elasticsearch

Elasticsearch 是一个基于 Lucene 的 Java 开发的企业级搜索引擎,是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力,基于 RESTful web 接口。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。本篇主要讲解 Elasticsearch 的相关原理。1.倒排索引与分词1.倒排索引正排索引,即文档 id 到文档内容、单词的关联关系:文档 id文档内容10001elasticsea

2020-09-12 09:29:54 463

原创 Elasticsearch API

1.文档与索引常见术语说明文档 Document用户存储在 ES 中的数据文档,ES 中存储的最小单元,类比数据库表中的一行数据索引 Index由具有相同字段的文档列表组成,类比数据库一张表(table)节点 Node一个 ES 的运行实例,是集群的构成单元集群 Cluster由一个或多个节点组成,对外提供服务...

2020-09-11 13:28:49 466

原创 Java 8——Optional

Optional 是一个对象容器,具有以下两个特点:提示用户要注意该对象有可能为null简化if else代码使用创建Optional.empty(): 创建一个空的 Optional 实例Optional.of(T t):创建一个 Optional 实例,当 t为null时抛出异常Optional.ofNullable(T t):创建一个 Optional 实例,但当 t为null时不会抛出异常,而是返回一个空的实例获取get():获取optional实例中的对象,当optio

2020-08-16 10:40:45 158

原创 Java8——DateTime

java8 重新定义了一套语义非常清晰的日期、时间Api,位于java.time包中。该包中的所有类都是不可变且线程安全的。在java8中,java.time包下主要包含下面几个主要的类:Instant:时间戳Duration:持续时间,时间差LocalDate:只包含日期,比如:2016-10-20LocalTime:只包含时间,比如:23:12:10LocalDateTime:包含日期和时间,比如:2016-10-20 23:14:21Period:时间段ZoneOffset:时区偏移量

2020-08-16 10:30:55 849

原创 Java8——Stream

Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用Stream API 对集合数据进行操作,就类似于使用 SQL 执行的数据库查询。也可以使用 Stream API 来并行执行操作。简而言之,Stream API 提供了一种高效且易于使用的处理数据的方式。特点:Stream 自己不会存储元素。Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。Stream 操作是延迟执行的。这意味着

2020-08-16 08:41:37 399

原创 Java8——CompletableFuture

本文将介绍Future模式和CompletableFuture实现异步编程FutureJDK 5引入了Future模式。Future接口是Java多线程Future模式的实现,在java.util.concurrent包中,可以来进行异步计算。Future模式是多线程设计常用的一种设计模式。Future模式可以理解成:我有一个任务,提交给了Future,Future替我完成这个任务。期间我自己可以去做任何想做的事情。一段时间之后,我就便可以从Future那儿取出结果。缺点:Future虽然可以实

2020-08-15 22:14:52 290

原创 Java8——Lambda

Lambda表达式本质上是将一个函数的代码作为一个参数或变量进行传递,这种处理方式有个专门的名字——函数式编程。语法Lambda表达式用于表示一个函数,所以它和函数一样,也拥有参数、返回值、函数体,但它没有函数名,所以Lambda表达式相当于一个匿名函数。语法如下:(Person person)—>person.getAge()>30Lambda表达式用—>连接,->左侧为函数的参数,->右侧为函数体。若右侧由多条语句构成则需要用{}包裹,如:(Person pe

2020-08-15 21:00:38 122

原创 SpringCloud——Feign+Ribbon

Feign实现的过程如下:首先通过@EnableFeignCleints注解开启FeignCleint根据Feign的规则实现接口,并加@FeignCleint注解程序启动后,会进行包扫描,扫描所有的@ FeignCleint的注解的类,并将这些信息注入到ioc容器中。当接口的方法被调用,通过jdk的代理,来生成具体的RequesTemplateRequesTemplate在生成RequestRequest交给Client去处理,其中Client可以是HttpUrlConnection、Htt

2020-08-14 10:13:40 435

原创 Dubbo服务框架实践与原理

近几年随着微服务化项目的崛起,逐渐成为许多公司中大型分布式系统架构的主流方式,而今天所说的 RPC 在这其中扮演着至关重要的角色。什么是RPC?RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。RPC协议假定某些传输协议的存在,如TCP或UDP

2020-08-14 09:16:26 134

原创 Zookeeper核心原理

本文主要介绍 ZooKeeper 的基本数据模型、watcher机制、分布式一致性协议 ZAB 协议、选举机制。基本数据模型ZooKeeper 的基本数据模型是一个树形结构:每一个节点都称之为 znode,它可以有子节点,也可以有数据;每个节点分为临时节点和永久节点,临时节点在客户端断开后消失;每个 zk 节点都有各自的版本号,可以通过命令行来显示节点信息;每当节点数据发生变化,那么该节点的版本号会累加(乐观锁);删除/修改过时的节点,版本号不匹配则会报错;每个 zk 节点存储的数据不宜过

2020-08-13 17:44:07 146

原创 SpringCloud——Eureka

微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的Dubbo和Spring Cloud。关于注册中心的解决方案,dubbo支持了Zookeeper、Redis、Multicast和Simple,官方推荐Zookeeper。Spring Cloud支持了Zookeeper、Consul和Eureka,官方推荐Eureka。两者之所以推荐不同的实现方式,原因在于组件的特点以及适用场景不同。简单来说:ZK的设计原则是C

2020-08-13 14:14:10 286

原创 MQ——RabbitMQ

RabbitMQ 是消息中间件的一种,实现了 AMQP 标准。对于 RabbitMQ 来说,除了生产者、消息队列、消费者这三个基本模块以外,还添加了 交换机 (Exchange) 模块。它使得生产者和消息队列之间产生了隔离,生产者将消息发送给交换机,而交换机则根据调度策略把相应的消息转发给对应的消息队列。...

2020-08-12 23:01:22 113

原创 MQ——RocketMQ

为什么要用 MQ?MQ的应用场景:应用解耦。以电商为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出现故障或者因为升级等原因暂时不可用都会造成下单操作异常,影响用户使用体验。使用 MQ 后,比如物流系统发生故障,需要几分钟才能修复,在这段时间,物流系统要处理的数据被缓存到 MQ 中,用户的下单操作正常完成,当物流系统恢复后,补充处理存在 MQ 中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障;流量削峰。将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提

2020-08-12 22:57:40 434

原创 数据结构和算法——二叉树

二叉树:树的每个节点最多只能有两个子节点。树的效率:查找节点的时间取决于这个节点所在的层数,每一层最多有2n-1个节点,总共N层共有2n-1个节点,那么时间复杂度为O(logN),底数为2。二叉树的前、中、后序遍历前序遍历递归public void preorderBT(BinaryTree root) { //结束条件 if (root == null) return; //递归主体 System.out.p

2020-08-11 21:02:11 162

原创 数据结构和算法——排序

本文介绍常见的排序编程题冒泡排序思路:双层循环嵌套,比较并交换public static int[] sort(int[] array) { //需要多少轮比较(N-1) for (int i = 1; i < array.length; i++) { //每轮需要参与比较的元素下标(N-1-i) for (int j = 0; j < array.length - i; j++) {

2020-08-11 21:01:01 85

原创 数据结构和算法——链表

链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。使用链表结构可以克服数组需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。删除链表中重复元素(排序链表)思路:有序链表,遍历当前节点和下一个节点相等,删除即可public ListNode deleteDuplicates(

2020-08-11 20:59:24 148

原创 数据结构和算法——字符串

本文介绍常见的字符串编程题反转字符串思路:while循环遍历,交换前后对应位置元素 public void reverseString(char[] s) { int i = 0; int j = s.length - 1; while (i < j) { char temp = s[i]; s[i] = s[j]; s[j] = temp; i++;

2020-08-11 20:58:04 91

原创 数据结构和算法——数组

在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型(Object类型数组除外)。数组是存在下标索引的,通过下标可以获取指定位置的元素,数组小标是从0开始的,也就是说下标0对应的就是数组中第1个元素,可以很方便的对数组中的元素进行存取操作。数组特点:数组一旦创建后,大小就固定了,不能动态扩展数组的元素个数。查找如果根据下标查找速度很快。如果根据元素值来查找,对于无序数组,我们需要从数组第一个元素开始遍历,直到找到那个元素。有序数组通过特定的算法查找的速度会比无需

2020-08-11 20:55:52 101

原创 Java多线程——Thread

Java 线程采用的是单线程编程模型,程序会自动创建主线程,主线程可以创建子线程,主线程原则上要后于子线程完成执行。需要注意的是,JVM 线程是多线程的,JVM 实例在创建的时候会同时创建很多线程,例如垃圾收集器的线程等。由于进程有独立的地址空间,而线程没有,所以多进程的程序比多线程的程序要健壮,但是进程的切换比线程的切换开销大,所以多线程比多进程拥有更高的性能。...

2020-08-10 17:13:24 207

原创 MySQL——表结构设计

良好的数据库逻辑设计和物理设计是数据库获得高性能的基础。数据库设计的步骤:需求分析:全面了解产品设计的存储需求、数据处理需求、数据的安全性和完整性有什么样需求;逻辑设计:设计数据的逻辑存储结构,搞清楚数据实体之间的逻辑关系,解决数据冗余和数据维护异常;物理设计:根据所使用的数据库(Oracle、SQLServer、MySQL、Redis)特点进行表结构设计;维护优化:根据实际情况对索引、存储结构等进行优化。逻辑设计数据库逻辑设计一般按照的三范式进行设计:范式说明第一范

2020-08-10 17:11:14 452

原创 Redis——开发规范

本文介绍了使用 Redis 时的开发规范,从键值设计、命令使用等方面进行说明,通过本文的介绍可以减少使用 Redis 过程中带来的问题。键值设计-规范Levelkey1.以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id; 2.保证语义的前提下,控制key的长度; 3.不要包含特殊字符(空格、换行、单双引号以及其他转义字符)。强制value1.禁止bigkey(防止网卡流量、慢查询),string类型控制在10KB以内,hash、list

2020-08-10 06:18:57 78

原创 Java多线程——JMM内存模型

JMM(Java 内存模型)是一种抽象的概念,并不真实存在,它描述的是一组围绕原子性、有序性、可见性的规范Java内存模型中规定了所有的变量都存储在主内存中,每条线程还有自己的工作内存(可以与前面将的处理器的高速缓存类比),线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝,线程对变量的所有操作(读取、赋值)都必须在工作内存中进行,而不能直接读写主内存中的变量。不同线程之间无法直接访问对方工作内存中的变量,线程间变量值的传递均需要在主内存来完成。常见问题volatile 变量为何立即可见?

2020-08-09 14:03:55 141

原创 Java——Servlet

Servlet 为创建基于 web 的应用程序提供了基于组件、独立于平台的方法。一个 Servlet 其实就是一个 Java 类,并且可以通过 “请求-响应” 编程模型来访问的这个驻留在服务器内存里的 Servlet 程序。Java Servlet API 是Servlet容器(tomcat)和servlet之间的接口,它定义了serlvet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的就是ServletRequest和ServletResponse。所以说我们在编写se

2020-08-09 11:03:27 168

原创 Spring——MVC

Spring MVC 是以请求为驱动,围绕 Servlet 设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是 DispatcherServlet,它是一个 Servlet,顶层是实现的 Servlet 接口。DispatcherServlet 在 web.xml 中配置,并且需要配置 Spring 监听器 ContextLoaderListener。...

2020-08-09 10:22:53 129

原创 MySQL——SQL优化

如何定位并优化慢查询 SQL?大致思路如下:根据慢查询日志定位慢查询 SQL;使用 explain 等工具分析 SQL;修改 SQL 或者尽量让 SQL 走索引。SQL调优获取有性能问题的 SQL 的两种方法:通过慢查日志获取存在性能问题的 SQL;实时获取存在性能问题的 SQL;慢SQL定位1.根据慢查询日志定位慢查询 SQLMySQL 慢查询日志是一种性能开销比较低的解决方案,主要性能开销在磁盘 IO 和存储日志所需要的磁盘空间。对于磁盘 IO 来说,由于写日志是顺序存储,开

2020-08-09 06:17:05 274

原创 Nginx——反向代理、负载均衡配置

反向代理是代理服务器的一种。服务器根据客户端的请求,从其关联的一组或多组后端服务器获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器簇的存在。负载均衡是高可用网络基础架构的一个关键组成部分,有了负载均衡,我们可以将应用服务器部署多台,然后通过负载均衡将用户的请求分发到不同的服务器用来提高网站、应用、数据库或其他服务的性能以及可靠性。Nginx 反向代理的过程:Nginx负载均衡的过程(会自动选择压力较小的服务器进行访问):负载均衡的核心就是

2020-08-09 00:04:21 93

原创 Java 多线程——JUC 包

JUC 包(java.util.concurrent)提供了并发编程的解决方案,CAS 是 java.util.concurrent.atomic 包的基础,AQS 是 java.util.concurrent.locks 包以及一些常用类比如 Semophore,ReentrantLock 等类的基础。JUC 包的分类:executor:线程执行器locks:锁atomic:原子变量类tools:并发工具类collections:并发集合...

2020-08-09 00:03:56 336

原创 Java——集合框架

ava 集合类位于 java.util 包下,JDK1.5 之后还在 java.util.concurrent 包下提供了一些多线程支持的集合类。Java 集合主要由两个接口派生而出:Collection 和 Map。Collection 的父接口是 Iterable(迭代器),所以 Collection 的子接口全部可以使用 Iterable 遍历集合。Collection 的子接口包括 List、Set 和 Queue 接口。从 Java 源码来看,Java 先实现了 Map,然后通过包装一个所有

2020-08-09 00:03:40 107

Sentinel技术调研

Sentinel技术调研

2019-03-22

机器学习(自然计算、机器学习与图像理解前沿)

机器学习(自然计算、机器学习与图像理解前沿)

2018-08-12

R大(国内JVM权威)资料合集

R大(国内JVM权威)资料合集R大(国内JVM权威)资料合集R大(国内JVM权威)资料合集R大(国内JVM权威)资料合集R大(国内JVM权威)资料合集R大(国内JVM权威)资料合集

2018-07-21

强大的代码生成器

HeimaCodeUtil_V2.4_64 强大的代码生成器

2018-07-21

基于SSH的商务综合管理平台

基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台基于SSH的商务综合管理平台

2018-02-02

EasyUI和JS的API

前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API前端各类API

2018-02-02

基于Socket的聊天室

基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室基于Socket的聊天室

2017-12-28

毕设PPT模板

毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板毕设PPT模板

2017-12-28

zeroMQ全部demo

zeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demozeroMQ全部demo

2017-12-28

Effective Java笔记

Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记Effective Java笔记

2017-12-28

zookeeper笔记

zookeeper笔记

2017-12-28

RocketMQ初见

(一)RocketMQ初步认知.pdf

2017-12-28

算法基础,算法基础

算法基础算法基础算法基础算法基础算法基础算法基础算法基础算法基础算法基础算法基础算法基础算法基础

2017-12-28

Java并发编程

Java并发编程实战,Java并发编程实战,Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战Java并发编程实战

2017-12-28

深入理解JVM

JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,JVM-周志明,

2017-12-28

Spring源码解读

spring源码,spring源码,spring源码,spring源码,spring源码,spring源码,pring源码,spring源码,spring源码,spring源码,spring源码,spring源码,spring源码,pring源码,pring源码,pring源码,pring源码,pring源码,pring源码,pring源码,pring源码,pring源码,

2017-12-28

空空如也

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

TA关注的人

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