日常开发技术概念
端口映射和端口转发:
端口映射:是将外网的一个端口完全映射给内网一个地址的指定端口,实现外网到内网和内网到外网双向的通信。
端口转发:是将一个端口(可以是本机的端口或本机可以访问到的任意主机的端口)转发到任意一台可以访问到的IP上,通常这个IP是公网IP。它只能实现外网到内网的单向通信。端口转发是网络地址转换(NAT)的一种应用。
编程范式:编程范式是一种编程方法、风格或习惯,它决定了程序员如何组织和构建代码。常见的编程范式包括面向对象编程(OOP)、函数式编程和逻辑式编程等。每种范式都有其独特的理念和方法,适合解决不同类型的问题。
设计模式及原则:
设计模式:是一种常用的软件设计方法,通过将一些常见的设计问题定义为模式,然后根据模式来解决问题。它有助于代码的重用和提高软件的可维护性。
设计原则:包括单一职责原则、开放-封闭原则、里氏代换原则和依赖倒转原则等。这些原则指导了如何设计良好的软件结构和模块,以提高代码的质量和可维护性。
数据结构与算法:
数据结构:定义了数据的组织方式,它决定了数据在计算机中的存储和访问方式。
算法:是对数据进行操作的一系列指令或步骤。算法复杂度是指算法在编写成可执行程序后,运行时所需要的资源(包括时间资源和内存资源)。
迭代、循环、遍历、递归:
迭代:是按照某种顺序逐个访问线性结构(如数组、队列)中的每一项。
循环:是在满足条件的情况下,重复执行同一段代码。
遍历:是按一定规则访问一个非线性的结构(如树、图)中的每一项,且只访问一次。
递归:是一个函数不断调用自身的行为。
进程、线程、协程:
进程:是操作系统分配资源的基本单位,它包含了一个程序的执行实例。
线程:是进程中的一个执行单元,共享进程的资源。多线程可以并发执行,提高程序的执行效率。
协程:是一种比线程更加轻量级的执行单元,它可以在单线程内实现非阻塞或微线程调度。
缓存:缓存是一种提高系统性能的技术,它通过将数据存储在相对较快的介质(如内存)中,以便更快地访问这些数据,从而减少对较慢介质(如硬盘)的访问。
定时任务:定时任务是指在指定的时间或按照指定的时间间隔自动执行的任务。它常用于自动化运维、数据备份、定时发送邮件等场景。
这些概念在软件开发中起着至关重要的作用,它们共同构成了现代软件开发的基石。理解和掌握这些概念对于提高软件开发的效率和质量至关重要。
Flag
RESTful是一种架构风格,其核心是面向资源,更简单;而WebService底层SOAP协议,主要核心是面向活动;两个都是通过web请求调用接口
注解(也称为元数据)就是代码中的特殊标记,为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
Graceful/Gentle Exit(优雅退出):指程序结束前,等待当前任务完成或做一些记录后再完全退出
逃逸分析(Escape Analysis)
是编译器用来决定程序中值的位置的过程。编译器执行静态代码分析,以确定一个构造体的实例化值是否会逃逸到堆
逃逸是指在某个方法之内创建的对象,除了在方法体之内被引用之外,还在方法体之外被其它变量引用到;
这样带来的后果是在该方法执行完毕之后,该方法中创建的对象将无法被GC回收,由于其被其它变量引用。
正常的方法调用中,方法体中创建的对象将在执行完毕之后,将回收其中创建的对象;故由于无法回收,即成为逃逸。
微服务、Service Mesh 和 Serverless
Fuction as a Service
无服务器计算,目的是希望应用不用一直运行着,只有当有请求来的时候,才快速启动这个应用
,然后请求一走就停掉这个应用,换句话说,不让应用在背景程式持续的启动着,而是有需要的时候才开启他
编程范式
编程范型、编程范式或程序设计法(Programming Paradigm)是某种编程语言典型的编程风格或者说是编程方式
- https://en.wikipedia.org/wiki/Programming_paradigm
- https://en.wikipedia.org/wiki/Foreign_function_interface
- https://github.com/geekxh/hello-algorithm
范类:强类型/弱类型,动态语言/静态语言,编译/解释
- 过程化(命令式)编程
- 事件驱动编程
- 面向对象编程
- 链式编程
- 函数式编程
- 并发编程
- 约束编程
- 数据流编程(Dataflow programming)
- 声明性编程
- 分布式的编程
- 泛型编程
- 逻辑编程
- 元编程
- 响应式/反应式编程(Reactive programming)
- 面向方面/面向切面编程(AOP)
- 过程式编程
- 元编程(Metaprogramming)
- 宏(Macro)
设计模式及原则
- Java设计模式:23种设计模式全面解析(超级详细)
- https://github.com/topics/design-patterns
- https://github.com/topics/principles
- 设计模式 https://github.com/search?q=sourcemaking
- Java实现的设计模式 https://github.com/iluwatar/java-design-patterns
- https://github.com/hiparker/tank-design
- https://github.com/ccqy66/java-design-patterns-cn
- https://github.com/gavin66/head-first-design-patterns-Java<