- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 从零开始写一个RPC框架
从零开始写一个RPC框架当前,互联网公司的应用基本都是基于微服务的,系统被拆分为多个分布式的服务,每个服务之间通过RPC远程调用来交互。常用的RPC框架为Dubbo、Spring Cloud的相关套件等。我们试着自己实现一套简易的RPC框架,加深自己的技术理解。技术选型为Netty、SpringBoot。客户端客户端的实现参考了Mybatis中Mapper的实现,通过ClassPathBea...
2020-03-06 09:36:31 554
原创 有序链表多路归并
有序链表多路归并Merge k Sorted ListsMerge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.Example:Input:[1->4->5,1->3->4,2->6]Output: 1-&...
2019-08-31 13:41:47 400 1
原创 Kafka入门
Kafka是最初由Linkedln开发的,基于发布与订阅的消息系统。它一般被称为”分布式提交日志”或者“分布式流平台”。Kafka的数据是按照一定的顺序持久化保存的,可以按需读取。此外,Kafka的数据分布在整个系统里,具备数据故障保护和性能伸缩能力。Kafka的数据单元被称为“消息”,它相当于数据库里的一个“数据行”或一条“记录”。消息由字节数组组成。Kafka的消息通过“主题”进行分类...
2018-04-21 13:02:31 464
原创 LRU缓存的简单实现
LRU缓存的Java实现LRU是Least Recently Used的缩写,即最近最少使用。它将最近一段时间不使用的数据替换掉。LRU算法的提出基于一个事实:在前面几条指令中频繁使用的页面很可能在后面的几条指令中频繁使用。这里使用一个链表结构来保存元素的使用顺序,如果一个元素被使用过,那么它将被放到链表头的下一个节点,如果此时缓存满了,同时也要删除链表尾节点的前一个节点,具体实现如下:...
2018-03-23 20:54:17 326
原创 阻塞队列的简单实现
阻塞队列的简单实现阻塞队列是一种当队列满了和队列空了时,会阻塞的队列,简单的实现如下,实现了添加元素的操作(put)和取元素的操作(take),这里用到了JUC下的Condition和ReentrantLock类import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import
2018-01-18 21:00:48 1941
原创 JVM类加载机制
JVM类加载机制双亲委派模型 如果一个类加载器收到了类加载请求,它首先不会尝试自己去加载这个类,而是把类加载请求委托给父类加载器完成 每一层的类加载器都把类加载请求委派给父类加载器,直到所有的类加载请求都传递给顶层的启动类加载器 如果顶层的启动类加载器无法完成加载请求,子类加载器尝试去加载,如果连最初发起类加载请求的类加载器也无法完成请求时,将会抛出ClassNotFoundException
2018-01-08 22:05:45 253
原创 二叉搜索树(BST)
二叉搜索树(BinarySearchTree)一棵二叉搜索树是以一颗二叉树来组织的。对于它的每一个节点Node,其左子树的关键字最大不超过Node.key,其右子树中的关键字最小不低于Node.key,下面是它的Java实现:/** * Created by wukn on 2017/11/7. */public class BinarySearchTree<Key extends Comp
2017-12-27 21:39:50 239
原创 栈(Stack)
栈(Stack)栈(Stack)是一种基本的数据结构,它有先进先出的特性,有入栈、出栈等操作,下面给出栈的Java实现/** * Created by CvShrimp on 2017/10/21. */public class Stack<T> { private Node top; private int size = 0; private class Node {
2017-12-20 22:21:18 292
原创 计数排序(Counting-Sort)
计数排序(Counting-Sort)计数排序假设n个输入元素的每一个都是在0到k闭区间的一个整数,它的时间复杂度为O(n),下面是计数排序的Java实现:import java.util.Arrays;/** * Created by CvShrimp on 2017/11/11. */public class CountingSort { public static int[] c
2017-11-11 12:48:58 282
原创 快速排序(Quick-Sort)
快速排序(Quick-Sort)对于包含n个数的数组来说,快速排序是一种最坏情况下时间复杂度为O(n²)的排序算法。虽然最坏情况下的时间复杂度很差,但是快速排序通常是实际应用中最好的选择,因为它的平均性能非常好。 下面是算法导论中给出的快速排序的伪代码: QUICK-SORT(A,p,r) if p < r q = PARTITION(A,p,r) QUICK-SORT(A,p
2017-11-02 22:22:08 414
原创 堆排序(Heap-Sort)
堆排序(Heap-Sort) (二叉)堆是一个数组,它可以被看成一颗近似的完全二叉树。树上的每个节点对应数组中一个元素。除了最底层外,该树是完全充满的,而且是从左向右填充的。堆排序是一种用堆来实现的排序算法,它的时间复杂度为O(nlgn),下面是堆排序的Java实现:import java.util.Arrays;/** * Created by CvShrimp on 2017/10/11.
2017-10-14 20:17:57 254
原创 插入排序(Insert-Sort)
插入排序(Insert-Sort)插入排序的时间复杂度为O(n²),算法思路为将待排序的数据一个个的插入已经排序的序列中,下面是它的Java实现/** * Created by CvShrimp on 2017/10/10. */public class InsertSort { public static void insertSort(int[] array) {
2017-10-10 21:59:49 458
原创 归并排序(Merge-Sort)
归并排序是一种比插入排序更加高效的排序算法,尤其是规模较大的时候,其时间复杂度为O(nlgn)而插入排序为O(n²),下面给出数组的归并排序的Java实现代码package com.cvshrimp.algorithms;/** * Created by CvShrimp on 2017/9/26. */public class MergeSort { public static vo
2017-09-28 21:02:23 303
原创 Java集合框架Collection
HashMap和HashTable的区别HashMap是多线程不安全的,HashTable是多线程安全的。HashMap继承自AbstractMap,而HashTable继承自Dictionary。而且HashMap可以用null的键值对,而HashTable则不能。
2016-05-15 14:37:04 356
原创 Linux中易混淆知识点
Linux中易混淆知识点’ ‘(单引号)和” “(双引号)的区别单引号不会对其内的内容进行转义,如lelouch,如果被单引号包含,则{lelouch},如果被单引号包含,则不会被转义成变量符号,变量的值也就无法取得 双引号会对其内的内容进行转义,如果定义了lelouch变量的值为6,则${lelouch}的实际上就表示为6$()和“(反引号)的区别首先,这两个都是用来做命令替换的,但是$
2016-05-14 11:53:48 440
原创 Linux常用操作
Linux命令ls 显示当前目录下的文件信息mkdir 建立目录mv 移动文件或者重命名文件cp 复制文件或者目录(-r)rm 删除文件或目录(-r)cd 进入目录. 当前目录chown 给用户授权,如chown ossuser:ossgroup ./test.sh chmod 改变文件或者目录的访问权限,如chmod 775 .
2016-05-10 21:25:59 383
Redis实战 高清中文pdf
2017-11-23
Deep Learning With Python(Jason Brownlee)
2017-11-15
Java虚拟机规范(Java SE 7)中文版
2017-11-09
HTTP权威指南中文版(高清电子版)
2017-11-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人