后端

架构设计——软件产品规划设计绕不过的坎

任何在 IT 公司工作的人,对于“架构”这个词应该都不陌生。但你去问“架构”这个词是什么意思,似乎又有点只可意会不可言传的意思。那么 “架构”这个词,它应该如何定义呢? 架构设计对于软件系统和软件开发而言起到的作用是什么呢? 软件系统或软件产品的架构应该用什么样的方式表达呢? 这篇文章,会尝试讨论一下上面这些问题。 如何定义架构设计? 我们先来看一个古老的的思想实验: 忒休斯之船(The S

只是清清楚楚看着它

轻轻松松看着它。 好奇地看着它。 用眼晴去勾勒它的每个细节、每个光影、每个色泽、每个线条。 不要加一个念头,不要加一个联想不要加一个解释。 甚至,不要分别,不要加一个比较。 只是清清楚楚看着它。 只是看着每个细节、每个光影、每个色泽、每个线条。 不加ー个解释,不加一个比较。一个念头,都舍不得放上去。 轻轻松松地看,就好像我的“看”,不是为了得到,不是为了掌握,不是为了理解。 没有目

Java多线程与线程池技术

一、序言 Java多线程编程线程池被广泛使用,甚至成为了标配。 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。 // 任务 Runnable runnable = () -> System.out.println(Th

【算法】基数排序算法的讲解和代码实践

思路 基数排序也是三个桶排序算法之一,排序过程也是不需要进行比较。 基数排序的主要思路是: 1、先按个位数不同,把数组中所有元素放到0~9这10个不同的桶中; 2、从桶中按先入先出的顺序取出数据,此时数组个位数已经有序,再按照十位,放入桶中; 3、再取出,直到所有位数到进过桶,就完成了整个数组的排序。 另外说明一下计数排序的适用场景: 1、因为是按位数进行排序的,所以只能排正整数; 2、数组中的元

输入www.xxx.com会发生什么(一次完整的http请求)

1、浏览器向DNS请求解析出域名的ip地址。浏览器先去搜索自己的DNS缓存。若没有,则搜索操作系统中的缓存在,若再没有,则搜索操作系统hosts文件,若再没有,则操作系统将域名发送至本地域名服务器(采用递归查询方式)查询自身的DNS缓存,成功则返回结果。本地域名服务器将IP地址放回给操作系统,同时自己也将IP地址缓存。至此,浏览器已获得域名对应的IP地址。 2、三次握手建立TCP连接 3、基于TC

10《算法入门教程》分治算法之最大子数组问题

1. 前言 本节内容是分治算法系列之一:最大子数组问题,主要讲解了什么是最大子数组问题,如何利用分治算法解决最大子数组问题,给出了最大子数组的实现伪代码并进行分析,并用 java 语言进行了伪代码实现,帮助大家通过最大子数组问题更好地理解分治算法思想的应用。 2. 什么是最大子数组问题? 最大子数组(Max Subarray)问题,是计算机科学与技术领域中一种常见的算法问题,主要可以利用分治思想进

Python循环语句-3·For&Range用法

一、range 函数概念 range 函数是一个内建函数,它的返回值是一个半闭半开范围内的整数。for 循环常与range函数一起使用,range函数为循环提供条件。 二、语法结构 语法结构 案例 常规使用: [root@localhost day02]# python3 >>> tmp = range(1, 10) >>> tmp range(1,

SpringBoot 响应数据

SpringBoot可以很方便地响应数据。 内容协商: 根据客户端接收能力的不同,返回不同类型的媒体数据。 1.响应Json数据 在方法上加上@ResponseBody,便可以给前端返回json数据。如下: 2.响应XML数据 1.首先要引入xml依赖: 这时我们发现上一节返回的person变成了xml格式,这是因为网页可接受类型xml要优先于json,因

07.《JavaEE 笔记》Session会话

1、会话的概念 客户端向服务器端发送请求,服务器端接受请求并生成响应返回给客户端,客户端对服务器端这样一次连续的调用过程,被称为会话(session)。 Session:记录一系列状态 Session与cookie功能效果相同。Session与Cookie的区别在于Session是记录在服务端的,而Cookie是记录在客户端的。 Cookie与Session的区别 session是在服务器端保存