写在前面

我在开发自己用的账本类微信小程序时,因为嫌老是要切屏打开计算器,算完之后还要照着计算结果手动记录很不方便,尤其是当计算出来的结果位数较长时,容易看错或打错,因此想自己开发封装一个计算器组件在需要用的页面里,这样不仅可以减少切屏的次数,还可以直接去拿到计算结果自动记录,非常的方便。

按惯例先贴效果再上代码,啰嗦的话后面再讲。

效果预览

在这里插入图片描述

完整代码

先贴目录,自己对应下面的代码复制到哪个对应的文件里(后续等我把自己的项目整理差不多了,有空写一个demo放到github上,这样下载起来会更方便一些。现在就先复制吧):
在这里插入图片描述

// component/calculator/calculator.js
var util = require("../../utils/util.js");
Component({/*** 组件的属性列表*/properties: {},/*** 页面的初始数据*/data: {pageHeight: wx.getSystemInfoSync().windowHeight,//页面高度finalResult: 0,//显示屏上的结果operationBtnsOn: false,//是否按下了操作按钮preResult: 0,//上次的结果operationBtnType: '',//操作savePre: false,//是否保存上一次的显示屏内容clearResult: false,//是否清除显示屏上的结果resultText: "",//输入记录historyOperationList: [],//历史操作列表figures: 8,//保留位数},methods: {/*** 点击清空*/cleanResult: function () {this.setData({finalResult: 0,operationBtnsOn: false,operationBtnType: '',preResult: 0,savePre: false,clearResult: false,resultText: ''})},/*** 点击退格*/deleteInput: function () {if (this.data.finalResult == "" || this.data.finalResult == "-") {this.setData({finalResult: 0})}if (typeof this.data.finalResult == "number") {this.data.finalResult = this.data.finalResult.toString();}if (this.data.resultText != "" && Number(this.data.finalResult) != 0) {let temp = this.data.resultText.substring(this.data.resultText.length - 1);if (temp == "+" || (temp == "-" && this.data.resultText) || temp == "*" || temp == "/") {this.setData({resultText: this.data.resultText + this.data.finalResult.substring(0, this.data.finalResult.length - 1)})} else {this.setData({resultText: this.data.resultText.substring(0, this.data.resultText.length - 1)})}} else {if (this.data.finalResult.substring(0, this.data.finalResult.length - 1).length > 0) {this.setData({resultText: this.data.resultText.substring(0, this.data.resultText.length - 1)})} else {if (this.data.resultText.length > 0) {this.setData({resultText: this.data.resultText.substring(0, this.data.resultText.length - 1)})}}}if (Number(this.data.finalResult) != 0 && Number(this.data.finalResult.substring(0, this.data.finalResult.length - 1)) != 0) {this.setData({finalResult: this.data.finalResult.substring(0, this.data.finalResult.length - 1)})} else {if (this.data.finalResult.substring(0, this.data.finalResult.length - 1).length > 1) {this.setData({finalResult: this.data.finalResult.substring(0, this.data.finalResult.length - 1)})} else {this.setData({finalResult: 0})}}},/*** 点击输入*/inputNum: function (e) {var finalResult = this.data.finalResult;if (Number(finalResult) == 0) {if (finalResult.length > 8) {return;}if (e.currentTarget.dataset.num == ".") {if (finalResult === "-0") {finalResult = "-0."} else {finalResult = "0."}} else {if (finalResult.toString().substring(0, 2) == "0." && finalResult.length >= 2) {finalResult += e.currentTarget.dataset.num;} else {if (finalResult === "-0.") {finalResult = "-0." + e.currentTarget.dataset.num;} else {if (finalResult === "-0") {finalResult = "-" + e.currentTarget.dataset.num;} else {finalResult = e.currentTarget.dataset.num;}}}}this.setData({savePre: false})} else {if (this.data.savePre) {if (finalResult.length > 8 && !this.data.operationBtnsOn) {return;}if (e.currentTarget.dataset.num == ".") {if (finalResult == "-") {finalResult = "-0.";} else {finalResult = "0.";}} else {if (finalResult == "-") {finalResult = "-" + e.currentTarget.dataset.num;} else {finalResult = e.currentTarget.dataset.num;}}this.setData({savePre: false})} else {if (finalResult.length > 8) {return;}if (this.data.clearResult) {finalResult = e.currentTarget.dataset.num;this.setData({clearResult: false})} else {if (finalResult == ".") {finalResult = "0." + e.currentTarget.dataset.num;} else {if (finalResult.indexOf(".") > -1) {if (e.currentTarget.dataset.num != ".") {finalResult = finalResult + e.currentTarget.dataset.num;}} else {finalResult = finalResult + e.currentTarget.dataset.num;}}}}}this.setData({finalResult: finalResult,resultText: Number(this.data.resultText) == 0 ? e.currentTarget.dataset.num : this.data.resultText + e.currentTarget.dataset.num})},/*** 点击相加*/operationPlus: function () {if (this.data.operationBtnsOn) {this.handleOperation();this.setData({operationBtnType: 'plus',savePre: true,clearResult: false})} else {this.setData({operationBtnsOn: true,operationBtnType: 'plus',preResult: this.data.finalResult,savePre: true,clearResult: false})}this.setData({resultText: this.data.resultText + "+"})},/*** 点击相减*/operationMinus: function () {if (this.data.operationBtnsOn) {this.handleOperation();this.setData({operationBtnType: 'minus',savePre: true,clearResult: false})} else {this.setData({operationBtnsOn: true,operationBtnType: 'minus',preResult: this.data.finalResult,savePre: true,clearResult: false})}this.setData({resultText: this.data.resultText + "-"})},/*** 点击相乘*/operationMultiply: function () {if (this.data.operationBtnsOn) {this.handleOperation();this.setData({operationBtnType: 'multiply',savePre: true,clearResult: false})} else {this.setData({operationBtnsOn: true,operationBtnType: 'multiply',preResult: this.data.finalResult,savePre: true,clearResult: false})}this.setData({resultText: this.data.resultText + "x"})},/*** 点击相除*/operationDivide: function () {if (this.data.operationBtnsOn) {this.handleOperation();this.setData({operationBtnType: 'divide',savePre: true,clearResult: false})} else {this.setData({operationBtnsOn: true,operationBtnType: 'divide',preResult: this.data.finalResult,savePre: true,clearResult: false})}this.setData({resultText: this.data.resultText + "÷"})},/*** 处理连续计算*/handleOperation() {if (this.data.operationBtnType == 'plus') {this.setData({finalResult: util.add(this.data.preResult, this.data.finalResult)})this.setData({preResult: this.data.finalResult,})}if (this.data.operationBtnType == 'minus') {this.setData({finalResult: util.sub(this.data.preResult, this.data.finalResult)})this.setData({preResult: this.data.finalResult,})}if (this.data.operationBtnType == 'multiply') {this.setData({finalResult: util.mul(this.data.preResult, this.data.finalResult)})this.setData({preResult: this.data.finalResult,})}if (this.data.operationBtnType == 'divide') {this.setData({finalResult: util.div(this.data.preResult, this.data.finalResult, this.data.figures)})this.setData({preResult: this.data.finalResult,})}},/*** 点击等于号*/operationEquals: function () {if (this.data.operationBtnsOn) {if (this.data.operationBtnType == 'plus') {this.setData({operationBtnsOn: false,clearResult: true,savePre: false,finalResult: util.add(this.data.preResult, this.data.finalResult)})} else if (this.data.operationBtnType == 'minus') {this.setData({operationBtnsOn: false,clearResult: true,savePre: false,finalResult: util.sub(this.data.preResult, this.data.finalResult)})} else if (this.data.operationBtnType == 'multiply') {this.setData({operationBtnsOn: false,clearResult: true,savePre: false,finalResult: util.mul(this.data.preResult, this.data.finalResult)})} else if (this.data.operationBtnType == 'divide') {this.setData({operationBtnsOn: false,clearResult: true,savePre: false,finalResult: util.div(this.data.preResult, this.data.finalResult, this.data.figures)})}}if (this.data.resultText) {var resultText = this.data.resultText + "=" + this.data.finalResult;this.data.historyOperationList.push(resultText);this.setData({resultText: ''})}this.showHistory();},/*** 打印历史操作*/showHistory: function () {console.log(this.data.historyOperationList)},//点击切换正负opposite: function () {if (this.data.savePre) {if (this.data.finalResult === "-0") {this.setData({finalResult: 0})} else {this.setData({finalResult: "-0"})}} else {if (this.data.finalResult === 0) {this.setData({finalResult: "-0"})} else {this.setData({finalResult: -this.data.finalResult})}}}}})
/* component/calculator/calculator.wxss */
.tools_calculator{background-color: #333;padding: 0 32rpx;
}
.calculator_viewArea{min-height: 125px;width: 100%;position: relative;
}
.calculator_viewArea_result{font-size: 100rpx;color: #fff;text-align: end;position: absolute;bottom: 0;right: 20rpx;word-break: break-all;
}
.calculator_operationArea{display: flex;flex-direction: column;
}
.calculator_operationArea_row{display: flex;flex-direction: row;
}
.calculator_operationArea_eachBox{width: 150rpx;height: 150rpx;border-radius: 100rpx;display: flex;align-items: center;justify-content: center;font-weight: bold;color: #fff;margin: 5px;font-size: 60rpx;
}
.greyBox{background-color: #999;
}
.blackBox{background-color: #666;
}
.orangeBox{background-color: orange;
}
.isActive{color: orange;background-color: #fff;
}
<!-- component/calculator/calculator.wxml -->
<view class="tools_calculator" style="height:{{pageHeight}}px"><view class="calculator_viewArea"><view class="calculator_viewArea_result">{{finalResult==null?"错误":finalResult}}</view></view><view class="calculator_operationArea"><view class="calculator_operationArea_row"><view class="calculator_operationArea_eachBox greyBox" bind:tap="cleanResult">C</view><view class="calculator_operationArea_eachBox greyBox" bind:tap="deleteInput"></view><view class="calculator_operationArea_eachBox greyBox"  bind:tap="opposite">±</view><view class="calculator_operationArea_eachBox orangeBox {{savePre&&operationBtnType=='divide'?'isActive':''}}" bind:tap="operationDivide">÷</view></view><view class="calculator_operationArea_row"><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="7">7</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="8">8</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="9">9</view><view class="calculator_operationArea_eachBox orangeBox {{savePre&&operationBtnType=='multiply'?'isActive':''}}" bind:tap="operationMultiply">x</view></view><view class="calculator_operationArea_row"><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="4">4</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="5">5</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="6">6</view><view class="calculator_operationArea_eachBox orangeBox {{savePre&&operationBtnType=='minus'?'isActive':''}}" bind:tap="operationMinus">-</view></view> <view class="calculator_operationArea_row"><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="1">1</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="2">2</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num="3">3</view><view class="calculator_operationArea_eachBox orangeBox {{savePre&&operationBtnType=='plus'?'isActive':''}}" bind:tap="operationPlus">+</view></view><view class="calculator_operationArea_row"><view class="calculator_operationArea_eachBox blackBox" style="width:320rpx;" bind:tap="inputNum" data-num="0">0</view><view class="calculator_operationArea_eachBox blackBox" bind:tap="inputNum" data-num=".">.</view><view class="calculator_operationArea_eachBox orangeBox" bind:tap="operationEquals">=</view></view></view>
</view>

component/calculator/calculator.json”文件:

{"component": true
}

utils/utils.js”文件:

/*函数,加法函数,用来得到精确的加法结果 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。参数:arg1:第一个加数;arg2第二个加数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)返回值:两数相加的结果
*/
function add(arg1, arg2) {arg1 = arg1.toString(), arg2 = arg2.toString();var arg1Arr = arg1.split("."), arg2Arr = arg2.split("."), d1 = arg1Arr.length == 2 ? arg1Arr[1] : "", d2 = arg2Arr.length == 2 ? arg2Arr[1] : "";var maxLen = Math.max(d1.length, d2.length);var m = Math.pow(10, maxLen);var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen));var d = arguments[2];return typeof d === "number" ? Number((result).toFixed(d)) : result;
}/*函数:减法函数,用来得到精确的减法结果 说明:函数返回较为精确的减法结果。参数:arg1:第一个加数;arg2第二个加数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)返回值:两数相减的结果
*/
function sub(arg1, arg2) {return this.add(arg1, -Number(arg2), arguments[2]);
}/*函数:乘法函数,用来得到精确的乘法结果 说明:函数返回较为精确的乘法结果。参数:arg1:第一个乘数;arg2第二个乘数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)返回值:两数相乘的结果
*/
function mul(arg1, arg2) {var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal, d = arguments[2];m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0);resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m);return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
}/*函数:除法函数,用来得到精确的除法结果 说明:函数返回较为精确的除法结果。参数:arg1:除数;arg2被除数;d要保留的小数位数(可以不传此参数,如果不传则不处理小数位数)返回值:arg1除于arg2的结果
*/
function div(arg1, arg2, d) {var r1 = arg1.toString(), r2 = arg2.toString(), m, resultVal;m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0);resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m);return typeof d !== "number" ? Number(resultVal) : Number(resultVal.toFixed(parseInt(d)));
}module.exports = {add: add,sub: sub,mul: mul,div: div
}

下面是要调用的页面的写法:

<!--pages/test/test.wxml-->
<calculator></calculator>

pages/test/test.json”文件:

{"usingComponents": {"calculator": "/component/calculator/calculator"}
}

小结

调用封装的组件应该都会吧,不会的话上面代码也贴了,就是要用的页面比如上文的test页面的json文件里引一下,wxml文件里调一下。

utils里的方法是为了处理js在进行运算时如果有小数会出现精度丢失导致结果不准确的问题的。

很明显可以从界面看出来,我这个是仿ios的计算器写的,所以一些处理也和它类似。我自己在测试的时候是用自己手机先算一遍,再用我写的计算器组件算一遍,去对照结果的,暂时没发现什么问题。

简单说一下思路:就是先点击数字键,相当于输入要参与运算的第一个数字,然后按操作符,这个时候用一个变量记录你已经用了运算符了,那接下来再按数字键就是输入要参与运算的第二个数字了。然后第二个数字输完按等于号计算结果,如果要连续计算,那再按运算符的时候也要把当前结果计算出来。

就差不多这样,思路很简单,但实际处理起来,小数点,正负数,特别是对于“-0,0.xxx”这种的要考虑清楚,还是有很多坑在里面的。

其他暂时没想到什么要注意的。有问题大家一起探讨。

可以优化的点(不影响使用)

1、ios的计算器,不管是输入还是计算结果,都严格控制在一行显示的。我这个呢是输入一行以内,计算结果两行以内。反正不影响使用,我也和ios一样都是输入9位数以内运算,无非就是难看一些。如果你觉得难看呢可以自己改一下,也像ios那样一行显示,确实更好看,而且人家位数多了还改变了字体大小,这个效果呢倒是很好实现,根据屏幕上显示的结果长度去动态改变css就行,写几个不同字体大小的class,去切换,但我想我这个反正是两行了,也没必要搞这个字体大小了,就没弄,想搞的可以弄一下,很简单也更好看。

2、我只进行了除法运算时小数点最多保留到8位的限制,加减乘的小数位没做限制,加减乘除的整数位也没做限制。这个和上面那个控制到一行有关,你要是全部控制位数了那肯定就不会超出一行了,但我想想没必要吧,就处理一下无限小数就行了呗,不搞那么麻烦。还是那句话,根据自己需要来。

3、可以看到我的代码里记录了历史操作,也专门写了个方法,但里面只有一个console。这个本来是要做个按钮专门把历史操作反映到界面上的,但因为这个记录啊还有点问题,我就只在按“=”的时候调用一下console,反正用户端也看不出什么,后续再优化什么的都行。

那这个记录有什么问题呢?其实计算结果的记录,正常的加减乘除操作记录都没什么问题,有问题的是:处理正负号,多次按小数点,想打“0.xxx”的时候只打“.xxx”(这个很多人都有吧),各种情况下按退格键这些情况下,会记录每个按下的小数点啦,少记录一个0直接记录.和后面的数字啦等等。但这个地方吧,因为你不能影响到正常操作的记录,也不好判断值也不好判断长度,所以怎么去限制我输入一个小数的时候多次点击小数点,在记录中只记录一个正确位置的小数点就是问题了。还有就是我想输入“0.xxx”,但我先狂按“00000000”然后在输入“0.xx”,那我记录里应该只有“0.xx”,前面那么多无效的0不能记录。

不过呢,我这个记录是每个按键都去记录的。对我这个来说,不能只把记录写在运算符按键上,不记录数字键,然后每次操作运算符的时候记录当前屏幕显示结果。因为此时当前屏幕显示结果已经是运算完的结果了,记录的不是第二个数。这是由于我只用了一个字段去保存计算结果而不保存参与运算的数。如果我用两个字段分别保存参与运算的第一个数和第二个数,然后再用一个字段专门去存运算结果,那这样我只在操作运算符的时候去记录应该就是可行的了。

但这样要改的地方比较多,只能说当初构思的时候还是想的不完善,还有很多要注意的地方。
不需要操作记录的直接把相关代码删掉就行了,这样还能给这个组件瘦瘦身。

4、最后也是最值得优化的地方:代码写的不够简洁漂亮。可以看到我对小数点和负号的处理很粗糙,部分逻辑可能存在冗余。也不知道有没有潜在的bug。目前测试下来暂时没发现什么问题,等待后续再看。

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. ADB 安装和简单使用

    Windows下*一,安装:安装AndroidAtudio,也可以单独安装ADB。Android 调试桥 (adb) 是一种功能多样的命令行工具,可让您与设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端…...

    2024/4/16 17:35:08
  2. 如何有效实施DevOps?

    当今IT行业的竞争日益激烈,各家公司都在寻找优化软件研发过程的方法,因为交付比对手更具竞争力的产品已经越发成为一件成本高昂的事情。这也是DevOps发挥作用的地方,因为它可以在工程管理的各个方面提供帮助。 瀑布开发模型已被广泛使用多年,但它的开发、测试和运维在整个生…...

    2024/4/16 17:35:01
  3. Hadoop序列化机制

    文章目录一.什么是序列化和反序列化二.Hadoop的序列化三.Hadoop的序列化案例 一.什么是序列化和反序列化序列化:将对象转化为字节流,以便在网络上传输或者写在磁盘磁盘上进行永久存储 反序列化:将字节流转回成对象 序列化在分布式数据处理的两个领域经常出现: 进程间通信和永久…...

    2024/4/18 13:00:54
  4. 注解(Annotation)

    一、注解(Annotation)概述 1.注解的作用不是程序本身,可以对程序做出解释—> 相当于注释。 可以被其他程序(比如“编译器”等)读取。2.注解的格式 注解格式为“@注释名”,还可以添加一些参数值,;例如: @SuppressWarnings(value = “unchecked”). 3.使用方式 可以附…...

    2024/4/28 0:29:33
  5. 《最值得收藏的python3语法汇总》之错误和异常

    目录关于这个系列1、定义2、处理异常3、清理行为4、自定义异常关于这个系列《最值得收藏的python3语法汇总》,是我为了准备公众号“跟哥一起学python”上面视频教程而写的课件。整个课件将近200页,10w字,几乎囊括了python3所有的语法知识点。你可以关注这个公众号“跟哥一起…...

    2024/4/16 17:35:32
  6. BFS - Meteor Shower - 流星雨

    题解这个是我前三个月扔下的题,原来一直没有读懂是什么意思ps:这次也是看了别人的博客才知道大意:给你M个坐标,坐标后面是这个点爆炸的时间,注意点爆炸以后就不能再去了,不是只是一瞬间。 从源点开始,找一个永远都不会爆炸的点 所需要的时间(步数)题解:说了x,y的范围…...

    2024/4/20 16:03:21
  7. QQ扫码解冻找好友担保立即解冻

    最近的绿萝行动,导致大部分QQ账号被冻结,扫码担保解冻成了热门话题,符合解封条件的号码少之又少,那么如何才能快速解冻呢?Q 40026692 15代解,10分钟左右完成。...

    2024/4/16 17:35:49
  8. gitlab 删除远端untracked content文件或目录

    git rm -r --cached 远端untracked content文件或目录 git commit -m "备注信息" git push -u origin master...

    2024/4/16 17:35:55
  9. f103 hal RTC_alarm使用方法

    1.初始化RTC RTC_handle.Instance = RTC; RTC_handle.Lock = HAL_UNLOCKED; RTC_handle.Init.AsynchPrediv = RTC_AUTO_1_SECOND; RTC_handle.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;if(HAL_RTC_Init(&RTC_handle) != HAL_OK) {HAL_GPIO_WritePin(GPIOB,GPIO_PIN_8,GPIO_PI…...

    2024/4/19 21:40:58
  10. 数据库系统原理——数据库定义与操作语言练习题

    数据库定义与操作语言练习题 设有如下3个关系模式: 职工(职工号,姓名,性别,年龄) 工程(工程号,工程名称,预算) 报酬(职工号,工程号,工资) (1)新建报酬表,要求指定关系的主键和外键,以及工资大于零的约束。(说明:职工号char (7), 工程号char (6),工资numeric(20,2)) …...

    2024/4/16 17:35:19
  11. javaEE(十)if标签进行一个笔记的查询

    查询笔记,在笔记界面添加一个输入框和一个添加按钮笔记内容在数据库中是content,所以输入框的name和id是content 搜索按钮的id是searchnote 查询个数和查询笔记的具体信息,在原有的基础上添加了一个if标签,根据内容来查询定义一个方法,并进行调用点击搜索的时候不仅仅是传…...

    2024/4/20 8:55:35
  12. macOS如何查看chrome插件源码

    macOS如何查看chrome插件源码第一步页面输入:chrome://extensions/找到【开发者模式】,并打开找到需要查询的插件,这时候就可以看到ID了,比如:ID:kfjggehkabeloleficlmkkcpeogoiagb第二步页面输入:chrome://versions 找到个【人资料路径】,比如我的路径: /Users/apple…...

    2024/4/16 17:36:25
  13. 立个flag 暑期 一天一更博客 今天起

    打卡表:No 博客标题 时间12020-07-01...

    2024/4/4 21:32:12
  14. 手动实现IOC与事务控制-JDBC-4-基于自定义注解

    基于之前的添加pom文件<!--反射工具包--><dependency><groupId>org.reflections</groupId><artifactId>reflections</artifactId><version>0.9.12</version></dependency><!--工具包--><dependency><gro…...

    2024/4/16 17:38:13
  15. css基础学习记录

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>CSS</title><!--也可在head style标签里--><!--<style type="text/css">--><!--p{--><!--color: bisqu…...

    2024/4/26 10:45:22
  16. 半导体物理复习总结(五)——非平衡载流子

    非平衡载流子 热平衡状态是指在一定温度下,半导体中的载流子浓度一定。载流子的产生与复合相等,载流子的浓度乘积一定。统一的费米能级是热平衡状态的标志。非平衡状态是指在外界因素的影响下,半导体平衡状态受到微扰,内部的载流子浓度产生涨落。 复合是电子和空穴被洇灭或…...

    2024/4/4 21:32:05
  17. Centos7下redis6.0.5的详细安装步骤

    Centos7下redis6.0.5的详细安装步骤: 0、官网浏览,安装wget 1、打开 https://redis.io/download,浏览最新的redis信息。 2、安装wget:执行命令:yum install wget -y 备注:-y的意思是yes 1、wget获得redis安装包 执行: wget http://download.redis.io/releases/redis-6.0…...

    2024/4/20 0:45:34
  18. anaconda安装pytorch

    CPU版本: https://pytorch.org/get-started/previous-versions/ #CPU only conda install pytorch==1.2.0 torchvision==0.4.0 cpuonly -c pytorch 参考博客 [1]https://blog.csdn.net/u014723479/article/details/103001861?utm_medium=distribute.pc_relevant.none-task-bl…...

    2024/4/16 17:37:01
  19. 数据结构:双向链表(1)

    双向链表基本思想大体结构增加修改MyList测试遍历修改MyList删除修改MyList测试 基本思想 双向链表与单向链表大同小异,只不过双向链表还有个节点指向最后一个节点 大体结构 新建工程,结构如下package list; public class MyList {long size;Node firstNode;Node lastNode;pu…...

    2024/4/16 17:35:31
  20. 数据库学习随笔

    SQL (Structured Query Language) 是一种规则,定义了如何操作所有关系型数据库(如 Oracle, Mysql DB2) SQL 通用语法 单行多行书写,分号结尾 不区分大小写,但关键字建议大写 注释 单行:-- 这是一段注释 或 # 这是一段注释 多行 /* 这是一段注释 */ SQL 分类 DDL (Data De…...

    2024/4/18 7:15:59

最新文章

  1. 新手Pytorch入门笔记-概念入门

    文章目录 1.主干权重和模型权重2.超参数2.1 ReLU(inplaceTrue)2.2 交叉熵损失CrossEntropyLoss 3.反向传播4.优化器4.1 optimizer.zero_grad()5.卷积6.Batch Normalization7.U-Net结构 这章节比较枯燥&#xff0c;都是大段文字 1.主干权重和模型权重 主干权重&#xff08;Back…...

    2024/4/28 3:30:55
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 虚拟货币:数字金融时代的新工具

    在数字化时代的到来之后&#xff0c;虚拟货币逐渐成为了一种广为人知的金融工具。虚拟货币是一种数字化的资产&#xff0c;它不像传统货币那样由政府或中央银行发行和监管。相反&#xff0c;虚拟货币通过密码学技术和分布式账本技术来实现去中心化的发行和交易。 虚拟货币的代…...

    2024/4/19 5:33:22
  4. 如何转行成为产品经理?

    转行NPDP也是很合适的一条发展路径&#xff0c;之后从事新产品开发相关工作~ 一、什么是NPDP&#xff1f; NPDP 是产品经理国际资格认证&#xff0c;美国产品开发与管理协会&#xff08;PDMA&#xff09;发起的&#xff0c;是目前国际公认的唯一的新产品开发专业认证&#xff…...

    2024/4/22 16:14:13
  5. 多态--下

    文章目录 概念多态如何实现的指向谁调谁&#xff1f;例子分析 含有虚函数类的大小是多少&#xff1f;虚函数地址虚表地址多继承的子类的大小怎么计算&#xff1f;练习题虚函数和虚继承 概念 优先使用组合、而不是继承; 继承会破坏父类的封装、因为子类也可以调用到父类的函数;…...

    2024/4/24 6:46:26
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/28 3:28:32
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/27 9:01:45
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/28 1:22:35
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/27 11:43:08
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/27 8:32:30
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57