前言IoC本身来说并不是一种技术,而是一种思想。在spring开发中我们常常使用,但有时候想起来这个概念时,却不知道从何说起。本文就来谈谈spring中的核心概念——IoC。
正文IoC概念IoC(Inversion of Control)中文名“控制反转”,它是一种设计的思想。Ioc代表着你将对象交给容器来控制,而不是自己控制对象...
前言本篇来讲讲Java中线程池的使用与分析。
正文阿里巴巴Java开发手册中强调,线程资源必须通过线程池来提供,不允许显式创建线程。首先我们讲讲普通的线程创建方式。
Java线程创建方式在Java语言中,我们通过两种方式创建一个新线程,分别是继承Thread类或者实现Runnable接口。
继承Thread类Thread类本质上...
前言最近准备秋招感觉自己还是蛮菜的,啥都不会。但学习还是得继续,偶尔趁着休息时间来写写文章。这篇大概是最后一篇整理动态规划题目,感觉整理多了也没用,只有自己去理解才真正有用。话不多说,开始正文。
实践地下城游戏
一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初...
前言之前陆陆续续写了几篇高并发架构的文章,本篇文章是浅谈高并发架构系列的最后一篇。前面说过,单点故障是影响整个高并发系统的重要原因,在单点的服务出现故障时有可能影响整个系统的运行。而数据库作为数据存放的服务,是最底层的服务,使用的频率也是非常高的。因此有必要将单点数据库系统进行多节点复制,以至于在一个节点出现故障时,另一个节点能够提...
前言上一篇文章讲了负载均衡的几种实现方式,这期就重点讲讲当请求到达负载均衡服务器时,服务器可以根据哪些算法来进行分配请求。
正文轮询法这种方法很简单,就是按照顺序轮流将请求分配到各个服务器上,对服务器的状态和负载情况并不关注。由于需要对pos变量进行操作,如果是高并发场景必须加写锁,并且会导致并发吞吐量的明显下降。以下代码实现了一...
前言面对大量的访问请求与海量的数据,我们可以通过加大单机的性能来实现服务的稳定,还可以考虑拆分系统来防止单机故障。负载均衡(Load Balance)是指将负载(例如访问请求,任务等等)进行平衡分摊到多个服务器或组件上执行,以提高性能,作为单点故障的解决方案。本文将讨论常见的负载均衡分类。
负载均衡分类从实现方式不同,可以分为软件实...
前言其实在学生时代,基本上是遇不到高并发的架构,真正遇到高并发的问题,往往是在工作之后,我在学生时代所写的很多项目其实跟高并发是一点边都沾不上,但是我依旧学习了许多高并发的知识,希望以后能派上用场。当然,其实脱离了实际去讲述高并发并不是正确的,因为不同的系统架构是不一致的,分析高并发与高可用性需要先分析整体架构再来定夺。本篇文章就是...
前言上次简单讲了动态规划的概念与如何分析,本篇文章就理一理几道常见的典型的动态规划题目。
实践接雨水给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。来自leetcode 42题。这道题目有两种大思路,一种是按行求,一种是按列求。由于我们只讨论动态规划,并且让理解相对简单,我们使用按列...
前言TopK问题通常指的是寻找数组中第k大(小)的数或前k大(小)的数组。最简单的方法当然是使用排序,本文将从TopK问题入手,讲讲常见的几种解决方法并详细讲解快速选择算法。
实践1解决TopK问题的解决方案有以下几种:
排序
堆
快速选择算法
我们使用剑指offer中给出的一道题目作为例子。输入整数数组 arr ,找出其中最小...
前言二分查找是常见的一种搜索方式,通常用在顺序列表中查找特定的数或者区间,虽然看起来十分简单,但是在写代码的时候极容易出错,原因在于边界判断上,本质上还是对二分查找理解不到位。这篇文章整理下二分查找的模板以及谈谈自己的理解。
实践大体框架123456789101112def binarySearch(nums,target): ...