2018至2023我的开源项目分享

本文主要针对博主2018毕业至2023参与软件开发4年多以来自建的三个开源项目进行介绍与分享,希望对看到本文的新入行的初中级开发者或者未毕业想入行的学生们能够起到帮助。下面是项目介绍 一、newbee-mall-pro newbee-mall-pro 是博主在2019年想要自建PC商城项目时,在 n ...

学习笔记——尚好房:Apache Dubbo

2023-02-12 一、分布式RPC框架Apache Dubbo 1、软件架构的演进过程 单体架构、垂直架构、SOA架构到微服务架构的演进过程 2、单体架构 (1)含义:全部功能集中在一个项目内 (2)优点:架构简单,前期开发成本低、开发周期短,适合小型项目。 (3)缺点:复杂性高、技术债务逐渐上 ...

Java下优雅地构建假数据

在以前我做开发的时候,经常会遇到需要向数据库中添加假数据的需求,有时又需要使用批量的随机数据来验证接口或是方法的稳定性以及容错测验。那个时候我还不知道有类似于 jmockdata 或是 easy-random 的数据生成工具,就只有傻傻地用姓名库和for循环来构造数据。 后来我知道了 jmockda ...

读Java实战(第二版)笔记07_用Optional取代null

1. null的由来 1.1. 历史上被引入到程序设计语言中,目的是为了表示变量值的缺失 1.2. 包括Java在内的大多数现代程序设计语言为了与更老的语言保持兼容 2. null带来的问题 2.1. 错误之源 2.1.1. NullPointerException是最典型的异常 2.2. 代码膨胀 ...

JavaScript中的函数

函数: 一个被设计为执行特定任务的代码块 语法 通过function 关键词定义,后面跟着其函数名称,然后是一对圆括号,圆括号中可以定义一些函数的参数。没有名称的函数呢? 函数名称可以包含字母、数字、下划线、中划线和美元符号(命名规则与变量命名一致)。 // 声明一个函数 function fnNa ...

JavaScript实现数组对象去重

有多种实现方式: 一、使用 Set 对象: Array.from(new Set(array)) 该方法会先创建一个 Set 对象,然后再使用 Array.from 方法将 Set 对象转换为数组,因为 Set 对象不允许有重复的元素,所以这样可以实现去重的效果。 但是,如果数组中的元素是对象,Se ...

原型和原型链的深入浅出

一.前言 假如我们创建了一个对象,只有一个成员变量name, let ss = { name: 'shucheng', } console.log(ss); 结果如下:可以看出该对象有很多原型方法 通过上面的铺垫,我们知道:::::::::::::::::::::: JavaScript 的每个对象 ...

浅谈JS词法环境

JavaScript 词法环境 本文主要讲解JS词法环境,我们将看到什么是词法环境,词法范围如何工作,函数内部的名称如何解析,内部属性,弄清楚词法环境利于我们理解闭包。让我们开始吧... 什么是词法环境? 在理解闭包时,最大的混淆来源是术语“词汇环境”,或者只是“词汇”这个词。在计算机科学中术语“词 ...

Java线程中断

Java线程里:“中断”就是指“终止”,与操作系统里的"中断"、“异常”是完全不同的概念; 由于stop()方法过于暴力,可能导致资源回收无法风险、开销过大等问题,此方法已过期,故Java中没有强制中断线程的手段;但可以调用interupt()、interupted()方法来向进程提出中断请求,待进 ...

"万字" Java I/O 详解

Java 平台的基础 I/O 类。它首先关注 I/O Streams,这是一个强大的概念, 可以大大简化 I/O 操作。该课程还可以看到序列化,这使得程序可以将整个对象写入流并再次读取它们。 然后,该课程将查看 文件 I/O 和文件系统操作,包括随机访问文件。

I/O Streams 大多数都是讲... ...

Java8函数式编程读后总结与感想

1. 基本信息 Java 8函数式编程 Java 8 Lambdas: Functional Programming for the Masses [英] Richard Warburton 著 ; 王群锋 译 人民邮电出版社,2015年3月出版 1.1. 读薄率 书籍总字数191千字,笔记总字数8 ...

JavaScript 评测代码运行速度

一、使用 performance.now() API 在 JavaScript 中,可以使用 performance.now() API 来评测代码的运行速度。该 API 返回当前页面的高精度时间戳,您可以在代码执行前后调用它来计算代码执行所需的时间。 例如: let t0 = performanc ...