window.scrollTo({“behavior”: “smooth”, “top”: 5000}); //控制浏览器页面平滑的滚动到指定位置.好处是不会突然闪现到指定位置
以太坊( Ethereum ) 和 波场(Tron)的数学计算函数类
以太坊( Ethereum ) 和 波场(Tron)的数学计算函数类,当然也可用用在阿里蚂蚁区块链上,可以帮助减少gas消耗和防止溢出错误
/**
* @dev包装了Solidity的算术运算,并添加了溢出检查。
*
* Solidity中的算术运算会在溢出时自动换行。 这很容易导致在运算中使用错误的值,尤其是在一些资金运算。
* `SafeMath`通过在操作溢出时回滚事务来处理溢出回滚。
*
* 使用这个库会自动帮你检查类型溢出的情况,所以建议一直使用这个库。
*/
library SafeMath {
/**
* @dev 返回两个无符号整数的相加,并在溢出时回滚事务。
*
* 与Solidity的+操作符相对应。
*
* 使用场景:
* - 要求加法不能溢出的场景.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow"); //报错并且回滚
return c;
}
/**
* @dev 返回两个无符号整数的减法,并在溢出时返回(结果为负数时)。
*
* 与Solidity的`-`运算符相对应。
*
* 使用场景:
* - 要求减法不能溢出的场景.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow"); //报错并且回滚
uint256 c = a - b;
return c;
}
/**
* @dev 返回两个无符号整数的乘法,并在溢出时恢复。
*
* 与Solidity的`*`运算符相对应。
*
* 使用场景:
* - 要求乘法不能溢出的场景.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// gas优化:这里只检测'a'不为零,而是要求a更便宜
// 如果还测试了“ b”,则将失去收益,因为检测也需要消耗gas。
// 参见:https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow"); //报错并且回滚
return c;
}
/**
* @dev返回两个无符号整数的整数除法。 恢复除以零。 结果四舍五入为零。
*
* 与Solidity的`/`运算符相对应。 注意:此功能使用
* `revert`操作码(保留剩余gas不变),而Solidity使用无效的操作码进行还原(消耗所有剩余气体)。
* 使用场景:
* - 除数不能为零。
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// Solidity仅在除以0时自动断言
require(b > 0, "SafeMath: division by zero"); //报错并且回滚
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev返回除以两个无符号整数的余数。 (无符号整数模),除以零时返回。
*
* 与Solidity的`%`运算符相对应。 此功能使用“还原”
* 操作码(使剩余的气体保持不变),而Solidity使用
* 无效的操作码还原(消耗了所有剩余的gas)。
*
* 使用场景:
* - 除数不能为零。
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "SafeMath: modulo by zero"); //报错并且回滚
return a % b;
}
}
Linux 大文件切割 命令
split -l 50000 -d –verbose 20210101-blog.thisnksoa.com.log split-line
split 是用来切割 大文件的工具,ubuntu 20 自带的,不需要安装
这是要被切割的日子文件
20210101-blog.thisnksoa.com.log
命令参数:
-l 多少行保存成一个文件 可以试试 5000 到 50000
-b 多大保存成一个文件 支持单位 K, M, G, T, P, E, Z 呵呵 ,后面几个单位是用来搞笑的 一般要切的话,肯定是因为太大了,才要切的,一般就k和m有点用吧
-d 参数以数字的方式显示 不设置的话生成的文件名后缀是字母的,有点不好看,最好还是设置上
–verbose 切割后自动加数字后缀
split-line 要保存的文件的名字
最简单生成证书的方法
第一步,切换到你要生成证书的目录
第二步:执行下面命令
openssl genrsa -out server.key 1024
openssl req -new -x509 -days 3650 -key server.key -out server.crt -subj “/C=CN/ST=mykey/L=mykey/O=mykey/OU=mykey/CN=blog.thinksoa.com”
第三步:完成
注意:生成的是自签证书,什么是自签证书自己百度.
php 中类 const可以被继承者覆盖
代码!
phpunit 单元测试中执行类的时候指定某个测试方法
php 开发的时候,我们经常会想要做单元测试,写单元测试的好处是,写完了,就可以经常使用,不用每次测试都打开浏览器,一个页面或者接口不停的测试,让测试变得自动化。
而我常用的是postman 和 phpunit。
在phpunit中,我们常常会把很多的case写在一个类中,这时候,执行测试的时候,所有的case都会执行,执行快的时候还好,要是碰到一些执行慢的,等所有的类都执行下来,时间就会花费很多,所以一般情况我们是希望可以最快的执行我们希望执行的类的,这时候就可以指定执行,从而避开不需要执行的案例。
举个栗子:
<?php use PHPUnit\Framework\TestCase; class Unittest_Demo extends TestCase{ public function testA(){ echo "\n testA test\n"; $this->assertTrue(true); } public function testB(){ echo "\n testB test\n"; $this->assertTrue(true); } public function testC(){ echo "\n testC test\n"; $this->assertTrue(true); } public function testD(){ echo "\n testD test\n"; $this->assertTrue(true); } }
像这样的,我们就可以执行命令:
php phpunit Demo --filter testB
这个时候,只有 testB 被执行了。
phpunit 单元测试中执行类的时候指定某个测试方法
php 开发的时候,我们经常会想要做单元测试,写单元测试的好处是,写完了,就可以经常使用,不用每次测试都打开浏览器,一个页面或者接口不停的测试,让测试变得自动化。
而我常用的是postman 和 phpunit。
在phpunit中,我们常常会把很多的case写在一个类中,这时候,执行测试的时候,所有的case都会执行,执行快的时候还好,要是碰到一些执行慢的,等所有的类都执行下来,时间就会花费很多,所以一般情况我们是希望可以最快的执行我们希望执行的类的,这时候就可以指定执行,从而避开不需要执行的案例。
举个栗子:
<?php use PHPUnit\Framework\TestCase; class Unittest_Demo extends TestCase{ public function testA(){ echo "\n testA test\n"; $this->assertTrue(true); } public function testB(){ echo "\n testB test\n"; $this->assertTrue(true); } public function testC(){ echo "\n testC test\n"; $this->assertTrue(true); } public function testD(){ echo "\n testD test\n"; $this->assertTrue(true); } }
像这样的,我们就可以执行命令:
php phpunit Demo –filter testB
这个时候,只有 testB 被执行了。
Ios 中 关于 WebApp 的 meta 标签
随着webapp 开发越来越多, 开发中的坑也越来越多的被人们发现了,呵呵,这个时候 mate中关于填坑的这些设置就变得比较有用了!下面是ios的坑的填法,记下来,以备使用!
apple-mobile-web-app-capable
设置Web应用是否以全屏模式运行。
- 语法:
- <meta name=”apple-mobile-web-app-capable” content=”yes”>
- 说明:
- 如果content设置为yes,Web应用会以全屏模式运行,反之,则不会。content的默认值是no,表示正常显示。你可以通过只读属性window.navigator.standalone来确定网页是否以全屏模式显示。
- 兼容性:
- iOS 2.1 +
apple-mobile-web-app-status-bar-style
设置Web App的状态栏(屏幕顶部栏)的样式
- 语法:
- <meta name=”apple-mobile-web-app-status-bar-style” content=”blank”>
- 说明:
-
除非你先使用apple-mobile-web-app-capable指定全屏模式,否则这个meta标签不会起任何作用。
如果content设置为default,则状态栏正常显示。如果设置为blank,则状态栏会有一个黑色的背景。如果设置为blank- translucent,则状态栏显示为黑色半透明。如果设置为default或blank,则页面显示在状态栏的下方,即状态栏占据上方部分,页面占据 下方部分,二者没有遮挡对方或被遮挡。如果设置为blank-translucent,则页面会充满屏幕,其中页面顶部会被状态栏遮盖住(会覆盖页面 20px高度,而iphone4和itouch4的Retina屏幕为40px)。默认值是default。
- 兼容性
- iOS 2.1 +
format-detection
启动或禁用自动识别页面中的电话号码。
- 语法:
- <meta name=”format-detection” content=”telephone=no”>
- 说明:
- 默认情况下,设备会自动识别任何可能是电话号码的字符串。设置telephone=no可以禁用这项功能。
- 兼容性
- iOS 1.0 +
viewport
- 语法:
- <meta name=”viewport” content=”width=230,initial-scale=2.3,user-scalable=no”>
- 说明:
-
使用viewport meta标签可以提升页面在设备上的表现效果,典型地,你可以设置视口(viewport)的宽度和初始缩放比例。
举个例子来说,如果页面的宽度小于980px,你可以设置视口的宽度以适应页面。如果你正在开发一款Web应用,你应该设置视口的宽度为设备的宽度。
表 1 描述了viewport meta标签支持的属性以及它们的默认值。当有多个属性时,应该使用逗号分隔赋值表达式。设置多个属性时请遵循以下规则:
- 不要使用分号作为分隔符。
- 空格也可以作为分隔符,但最好使用逗号。
- 对于属性值是数字的属性,如果属性值包含了非数字字符但是以数字开头,那么只有数字的部分被当做属性值。例如,1.0x等价于1.0,123×456等价于123。如果参数不以数字开头,则属性值为0。
当要用到设备的尺寸数据时,你可以使用表2中的常量替代数字值。例如,使用device-width替代320(宽度),用device-height替代480(高度)。
你不需要设置每一个属性,未设置的属性会自动采用默认值。
设置视口的宽度为设备的宽度:
<meta name=”viewport” content=”width=device-width”>
设置初始缩放比例为1.0:
<meta name=”viewport” content=”initial-scale=1.0″>
设置初始缩放比例,同时禁止用户缩放。
<meta name=”viewport” content=”initial-scale=2.3, user-scalable=no”>
- 兼容性
- iOS 1.0 +
属性 | 描述 |
---|---|
width | 视口的宽度。默认值是980,取值范围是200至10000,也可以取值为常量device-width。 |
height | 视口的高度。默认值是根据width的值和设备的宽高比来计算,取值范围是223至10000,也可以取值为常量device-height。 |
initial-scale | 视口的初始缩放比例。默认值取决于页面充满屏幕的缩放比例,取值范围取决于minimum-scale和maximum-scale。 |
minimum-scale | 视口的最小缩放比例。默认值是0.25,取值范围是>0至10.0。 |
maximum-scale | 视口的最大缩放比例。默认值是5.0,取值范围是>0至10.0。 |
user-scable | 设置用户是否可以缩放视口。yes表示可以,no表示不能,默认值是yes。设置user-scable为no可以防止当用户在input标签的文本域中输入文本时页面发生滚动。 |
属性值 | 描述 |
---|---|
device-width | 设备的宽度(像素)。 |
device-height | 设备的高度(像素)。 |
Mysql 存储过程 DECIMAL 类型定义向INT 转换
Mysql 存储过程 DECIMAL 类型定义,在定义是,必须定义为带小数点的,也就是与数据库中列的类型要一致,否则会发生类型转换、
如 定义为 DECIMAL不带括号时,是 INT 型的,会发生 小数取整。
所以定义DECIMAL最好严格加上括号()
让他看起来像这样 DECIMAL(10,4)
以上是注意事项 出现在了今天金额计算上的额上!
git 创建远程仓库
git创建远程仓库命令
git init --bare --shared sum.git
备忘!