软件开发基础之设计模式概述

2022-09-24
成为一名优秀的软件开发工程师,设计模式的重要性不言而喻,本章节是对设计模式的前置知识概述,涉及概念性较大,读者可在设计模式学习过程中参阅本文档. 在第一章节,主要介绍软件设计的七大原则,接着在第二章我们简要介绍设计模式的三种分类,让我们站在一定的高度对设计模式有整体的把握,第三章UML类图帮助我们更好的看懂设计模式的代码. 一.软件设计七大原则 无论是在我们学习设计模式的过程中,还是日常的开发过程中,都要遵循一套统一的软件设计原则. 在常见的设计原则中,一共是7 种设计原则,它们分别为开闭原则.

Mysql如何在select查询时追加(添加)一个字段并指定值

2022-09-23
目录 在select查询时追加(添加)一个字段并指定值 使用select查询时,在查询结果中增加一个字段并指定固定值 在select查询时追加(添加)一个字段并指定值 在特定时候,在 mysql 的查询结果中我们需要追加一个字段来实现某些特定的功能,这时我们可以用到以下语法来实现 值 as 字段 比如我们需要给这个查询结果追加一个 xx 字段并赋值为 null ,可以这样实现 select *, null as xx from topic; 使用select查询时,在查询结果中增加一个字段并指定

C++构造析构赋值运算函数应用详解

2022-09-23
目录 了解C++默默编写哪些函数 不想使用编译器函数 为多态基类声明virtual析构函数 别让异常逃离析构函数 绝不在构造和析构过程中调用virtual函数 令operator=返回一个reference to *this 在operator=中处理自我赋值 复制对象时别忘了每个成分 了解C++默默编写哪些函数 当实现一个空类,c++会为你补上构造函数,拷贝构造函数,拷贝赋值运算符,析构函数 class Empty{}; //等于你写了 class{ public: Empty(){...};

OpenTelemetry-go的SDK使用方法详解

2022-09-23
目录 例子 原理 方法使用 newExporter newResource trace.NewTracerProvider otel 注意 获取当前跨度 设置span状态 设置span属性 记录错误 设置活动 tp.Shutdown 2019年5月,OpenCensus 和 OpenTracing形成了 OpenTelemetry(简称 OTel) 也就是说,我们在使用链路追踪SDK的时候就需要使用OpenTelemetry的新规范.OpenTelemetry帮我们实现了相应语言的SDK,所以我

Go语言开发框架反射机制及常见函数示例详解

2022-09-23
目录 基本介绍 反射中常见函数和概念 reflect.TypeOf(变量名) reflect.ValueOf(变量名) 变量.interface{}和reflect.Value是可以相互转换的 基本使用 反射注意事项 反射的最佳实践 基本介绍 反射可以在运行时动态获取变量的各种信息,比如变量的类型,类别 如果是结构体变量,还可以获取到结构体本身的信息 通过反射,可以修改变量的值,可以调用关联的方法 使用反射,需要import("reflect") 示意图 反射中常见函数和概念 refl

图解Java经典算法冒泡选择插入希尔排序的原理与实现

2022-09-23
目录 一.冒泡排序 1.基本介绍 2.代码实现 二. 选择排序 1.基本介绍 2.代码实现 三.插入排序 1.基本介绍 2.代码实现 四.希尔排序 1.基本介绍 2.代码实现(交换排序) 3.代码实现(移位排序) 一.冒泡排序 1.基本介绍 冒泡排序是重复地走访要排序的元素,依次比较两个相邻的元素,如果它们的顺序与自己规定的不符合,则把两个元素的位置交换.走访元素重复地进行,直到没有相邻元素需要交换为止,完成整个排序过程. 算法原理 1.比较相邻元素,如果前一个元素大于后一个元素,则交换. 2.

Java设计模式之代理模式

2022-09-23
本文由老王出租房子引出——代理设计模式,将从最简单的静态代理实现开始,后延伸使用jdk实现动态代理,最后扩展到Cglib实现动态代理.为了更深入理解代理模式,我们会对实际应用中的典型案例进行介绍,包括在Spring和Mybatis中的应用. 读者可以拉取完整代码到本地进行学习,实现代码均测试通过后上传到码云. 一.引出问题 上篇文章老王和小王组装电脑虽然完美结束了,但是老王和小王的争吵却并没有结束.老王决定将小王扫地出门,并把小王住的房子出租,租金用来弥补游戏本的花销. 老王花费很大的功夫,搞清

mysql实现表内增加一个字段并赋值

2022-09-23
目录 mysql表内增加一个字段并赋值 mysql表加一字段并对现有记录赋值 mysql表内增加一个字段并赋值 将spider增加source_pic字段并赋值为url字段 update spider a INNER JOIN (select * from spider) b on a.uid = b.uid set a.source_pic = b.url mysql表加一字段并对现有记录赋值 加字段SQL: alter table tasktemplate add TaskType varc

Redis中HyperLogLog的使用详情

2022-09-23
目录 前言 添加元素 前言 HyperLogLog ,基数统计: 那什么是基数? 比如有两个数组 数组A = [1,2,3,4,5]; 数组B = [3,4,5,6,7]; 这时候基数就是 [1,2,3,4,5,6,7],总共有7个数: 就是去重之后的数据: HyperLogLog 就是用来做去重复统计的: bitmap 在做统计时,虽然使用的是 bit 来做记录,已经很节省空间了: 但是在随着数据量快速增长的情况下,bitmap 也是很占内存空间的: 而 HyperLogLog 就不同了,Hy

Java中缀表达式转后缀表达式流程详解

2022-09-23
目录 一.栈 1.栈的基本介绍 2.栈的底层实现 二.中缀表达式转后缀表达式 1.拆解中缀表达式 2.中缀转后缀的算法 3.中缀转后缀代码解析 4.对后缀表达式进行计算 一.栈 1.栈的基本介绍 栈是⼀个先⼊后出的有序列表.栈(stack)是限制线性表中元素的插⼊和删除只能在线性表的同⼀端进⾏的⼀种特殊线性表.允许插⼊和删除的⼀端,为变化的⼀端,称为栈顶(Top),另⼀端为固定的⼀端,称为栈底(Bottom). 根据栈的定义可知,最先放⼊栈中元素在栈底,最后放⼊的元素在栈顶,⽽删除元素刚好相反,

如何处理elementUI中表格多选框禁用的问题

2022-09-23
目录 处理elementUI中表格多选框禁用 elementUI多选表格禁用某一行不被选择 处理elementUI中表格多选框禁用 在 el-table-column type 类型为 selection 组件中,添加 :selectable='方法名' <el-table :data="tableData" v-loading="loading" max-height="570" stripe :header-cell-style=&qu

Java设计模式之单例和原型

2022-09-23
今天这篇文章我们来学习创建型设计模式的另外两个孪生兄弟,单例和原型,其中原型设计模式中我们深入到JVM的内存模型,最后顺便谈谈Java中的值传递和引用传递. 上篇文章老王买产品 我们从最原始的基本实现方法,到简单(静态)工厂,然后使用工厂方法设计模式进行改造,最后考虑产品会产生变体,我们又扩展到了抽象工厂. 设计模式所有的相关代码均已上传到码云 读者可以自行下载学习测试. 一.引出问题 今天老王又来了,还是想买我们的产品,今天老王上老就提出来一个要求,当他购买产品的时候,每次都要从货架上给他拿相

Redis主从复制分步讲解使用

2022-09-23
主服务器(master)启用二进制日志 选择一个唯一的server-id 创建具有复制权限的用户 从服务器(slave)启用中继日志, 选择一个唯一的server-id 连接至主服务器,并开始复制 主库ip:192.168.235.130 端口:3306 从库ip:192.168.235.139 端口:3306 主库配置 (1)设置server-id值并开启binlog参数 [mysqld]log_bin = mysql-binserver_id = 130 重启数据库 (2)建立同步账号 cr

python中numpy 常用操作总结

2022-09-22
前言: NumPy 是 Python 语言的一个扩充程序库,支持大量高维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.同时NumPy 是机器学习必不可少的工具之一. 常用操作主要有: 创建数组 数组运算 数学函数 数组切片和索引 数组形状操作 数组排序 数组统计 环境 Python 3.6 NumPy: 1.14.2 1.导包 import numpy as np 2.通过列表创建数组 array() np.array([1, 2, 3]) #一维数组 np.array([(1, 2

前端算法题解leetcode49-字母异位词分组

2022-09-22
目录 题目 解题思路 代码实现 题目 题目地址 给你一个字符串数组,请你将 字母异位词 组合在一起.可以按任意顺序返回结果列表. 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次. 示例 1: 输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 输出: [["bat"],[

Java创建型设计模式之抽象工厂模式(Abstract Factory)

2022-09-22
目录 抽象工厂模式 概述 产品等级结构与产品族 优缺点 主要角色 抽象工厂模式的基本使用 创建抽象产品 创建具体产品 创建抽象工厂 创建具体工厂 客户端执行 抽象工厂模式 概述 抽象工厂模式(Abastract Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方式. 它提供一个创建一系列相关或相互依赖对象的接口,无须显式指定他们具体的类.每个生成的工厂都能按照工厂模式提供对象. 抽象工厂模式是围绕一个超级工厂创建其他工厂,该超级工厂又称为其他工厂的工厂. 产品等级结构与

Java快速排序与归并排序及基数排序图解示例

2022-09-22
目录 一.快速排序 1.基本介绍 2.代码实现 二.归并排序 1.基本介绍 2.代码实现 三.基数排序 1.基本介绍 2.代码实现 一.快速排序 1.基本介绍 以上面的数组为例分析快速排序. 首先要传入三个值,数组arr[ ] ,最左边下标left ,最右边下标 right.然后将根据左右的下标值计算出中间值mid. 我们要做的就是将左边的值大于mid的放到右边,将右边小于mid的值放到左边. 左右两边分别单独循环,左边找到比mid大的数,右边找到比mid小的数. 两边分别找到符合条件的数后,进

解读python正则表达式括号问题

2022-09-22
目录 python正则表达式括号 python中re库函数的简单用法 python正则表达式入门教程括号及字符 括号区别 常用正则表达式 python正则表达式括号 python中re库函数的简单用法 re.findall(pattern,string) 匹配所有符合正则表达式的字符,返回一个列表 re.search(pattern,string) 查找第一个符合正则表达式的字符,返回一个Matcher对象.用group()或groups()方法取值 re.match(pattern,strin

mysql中的多个字段最大最小值

2022-09-22
目录 mysql多个字段最大最小值 1.语法 2.说明 mysql取多列最大最小值GREATEST,LEAST mysql多个字段最大最小值 1.语法 最大值: GREATEST(expr_1, expr_2, ...expr_n) 最小值: LEAST(expr_1, expr_2, ...expr_n) 2.说明 GREATEST(expr_1, expr_2, ...expr_n)函数从表达式(列.常量.计算值)expr_1, expr_2, ... expr_n等中找出最大的数返回. 在

Python实现简单的文件操作合集

2022-09-22
目录 一.文件操作 1.打开 2.关闭 3.写入 4.读取 二:python中自动开启关闭资源 一.文件操作 1.打开 r+ 打开存在文件 文件不存在 报错 file = open("user.txt","r+") print(file,type(file)) w+ 若是文件不存在 会创建文件 file = open("user.txt","w+") print(file,type(file)) 2.关闭 file.close