• Algorithm | Bidirectional bfs

    Bidirectional bfs provides us a chance to search in both ways and may save some useless steps


  • Algorithm | Shortest Path

    Shortest path can be applied to multiple situations. The most populor ones are Floyd, Dijkstra and SPFA. In this article, I will introduce some of them.


  • Backend | Message Queue

    Message queue is an asynchronous message communication between different micro services. Message will be saved on message queue before handled by a service. The message queue can be used to deffer the high periodical volumn.


  • Linux | Record of Installing Ubuntu 18.04


  • Backend | Primary Key Generation Methods

    Primary key is the unique id for a instance saving in the database. In this article, I want to discribe three methods to generate the primary key, which are UUID, database auto_increment and snowflake algorithm from Twitter.


  • Algorithm | Topological Sort 拓扑排序

    Topological sorting is based on DAG(Directed Acyclic Graph). There are so many implementations for topological sorting in real world, for example, course selection, driver installation, etc. The key requirement is "pre-requests". In DAG, we need to figure out the relationships between vertices and find out a way that we can traverse all vertices and match all pre-requests.


  • SQL | Procedure存储过程

    存储过程我个人认为是一种解除业务和数据库操作之间的耦合的一种方式。同时存储过程只会在其第一次被调用的时候被编译,所以速度也会有所加快。


  • Algorithm | Counting Sort 计数排序


  • Algorithm | Bucket Sort 桶排序

    利用分治的排序方法。


  • Tensorflow| 集群式处理思想

    集群式的tensorflow是从单机多卡演化出来的,当硬件限制了单机上的GPU数量以及内存容量。此时我们需要进行集群式的训练,换句话说就是分布式训练。在极度无聊于深度学习设计网络和充当民工训练的过程中,我深感于人生正在被极度的浪费。人生还是要苦中作乐一些,于是我发现了Tensorflow的分布式模块,想要设计出一套可以易于填充的集群处理框架。由于我个人的水平问题,并没有在Python中发现类似于Spring中IOC和AOP的功能,所以只能用我自己写的一些丑陋的代码去实现类似的功能。


  • Java8| Asynchronized programming

    CompletableFuture同时实现了Future接口和CompletionStage接口。Future接口保证了阻塞式的异步接口,而CompletionStage实现了异步流式接口,让我们能通过流式接口简单快捷的实现异步。


  • Java8| Stream

    从支持数据处理操作的源生成的元素序列。


  • Java8| Lambda Expression

    Lambda表达式是一种简洁的表示可传递的匿名函数的一种方法:它没有名称,但是它有参数列表,函数主体,返回类型还能抛出异常列表。


  • Spring| Annotations

    总结Spring中出现的所有注解。


  • Spring| IOC Container: BeanFactory, ApplicationContext

    Spring中的IOC容器描述了Bean和Bean之间的关系,并且在此基础上提供了Bean实例缓存,生命周期管理,Bean实例代理,事件发布,资源装载等高级功能。具体的实现类是BeanFactory和ApplicationContext,前者是面向Spring框架本身的,而ApplicationContext是面向程序员的。


  • Spring| Resource Object

    Spring的核心思想就是通过规范和资源配置将程序员从繁琐的编程业务中解放出来,即使SpringBoot强调注解式配置的今天,仍然无法避免的使用properties文件,所以我单独的将Spring Resource拉出来分为一章进行总结。


  • Concurrency | ThreadPool 线程池

    在我最开始总结多线程的时候文章MultiThreadAndLock中曾经提到过线程池,但是当时对设计模式并没有很深刻的理解(Fly weight),并且对线程池的研究也没有很深入,此次我将会更加深入的总结线程池相关的应用。


  • Concurrency | Fork/Join Framework

    Fork/Join框架是一种用于多线程并行的框架,实际上是利用了分治(divide and conquer)的思想,将大任务拆分成小任务进行运算。每次将任务分割成小任务,直到无法分割以后再进行运算,最后将所有的结果汇总。


  • Concurrency | ReentrantLock, Szychronized

    在我的第一次接触到C的时候就已经开始了对锁的研究,并且在总结《MultiThreadAndLock》的时候也有所提及,本次已经时隔大半年,技术方面的理解也更加深刻,我想重新研究这个话题,尽量做到更深入,更全面。同时在我的另一篇文章《volatile, Szychronized关键字》也有提及,可以参考。


  • Data structure | Queue Conclusion