12k words 11 mins.

#SpringBoot 手把手教你写出优雅的后端接口

一个后端接口大致分为四个部分组成: 接口地址(url)接口请求方式(get、post等)请求数据(request)响应数据(response) 。如何构建这几个部分每个公司要求都不同,没有什么 “一定是最好的” 标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看是否规范!

本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松。

所需依赖包

3.4k words 3 mins.

# 动态规划算法

# 什么是动态规划

动态规划的大致思路是把一个复杂的问题转化成一个分阶段逐步递推的过程,从简单的初始状态一步一步递推,最终得到复杂问题的最优解。

基本思想与策略编辑:

由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中

3.1k words 3 mins.

# 贪心算法

# 基本概念

所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。

贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。

6k words 5 mins.

# 分治算法

# 定义

将原问题划分成 n 个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后再合并其结果,就得到原问题的解

# 分治策略

“分而治之”,大问题能够拆成相似的小问题,记住这些小问题需要具有相似性。而后将小问题的每个解合成为大问题的解。所以说大问题如何拆,小问题如何合并才是这个算法最主要的一个思想。实际上很多算法如贪心算法,动态规划等等都是要求把大问题拆成小问题。而分治算法的重要一点就是要适用于能够重新把小问题的解合并为大问题的解。

4.6k words 4 mins.

# 二叉树遍历(前序、中序、后序、层次遍历)

二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如堆了。所以,对于一段代码来说,可读性有时候要比代码本身的效率要重要的多。

四种主要的遍历思想为:

4k words 4 mins.

# Spring 事务处理

# Spring 和事务的关系

关系型数据库、某些消息队列等产品或中间件称为事务性资源,因为它们本身支持事务,也能够处理事务。

Spring 很显然不是事务性资源,但是它可以管理事务性资源,所以 Spring 和事务之间是管理关系。

就像 Jack Ma 虽然不会写代码,但是他却管理者一大批会写代码的码农。

3k words 3 mins.

# 面试之旅关于数据结构 数据结构详细讲解 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 # 数据结构中的逻辑结构 集合结构 集合结构的里面的元素关系是孤立的 线性结构 线性结构里面的元素关系:一对一 树形结构 树形结构里面的元素关系:一对多 图结构 图结构里面的元素关系:多对多 #...
3k words 3 mins.

# 常见面试题整理–计算机网络篇(每位开发者必备)

# 1. 请简述 TCP\UDP 的区别

TCPUDPOSI 模型中的运输层中的协议。 TCP 提供可靠的通信传输,而 UDP 则常被用于让广播和细节控制交给应用的通信传输。

两者的区别大致如下:

  • TCP 面向连接, UDP 面向非连接即发送数据前不需要建立链接
  • TCP 提供可靠的服务(数据传输), UDP 无法保证
  • TCP 面向字节流, UDP 面向报文
  • TCP 数据传输慢, UDP 数据传输快

# 2. 请简单说一下你了解的端口及对应的服务?