0%

在javascript中undefinednull都可以表示空,不存在,他们之间有什么联系和区别呢?

undefinednull作为条件的时候都等价于false

if(undefined) {
console.log(true)
} else {
console.log(false)
}
// false

if(null) {
console.log(true)
} else {
console.log(false)
}
//false

用松散比较判等的时候,JavaScript默认undefined == null,而严格比较时,由于类型不一致undefined !== nulltypeof undefined的结果是'undefined',而typeof null的结果是'Object'

阅读全文 »

分布式系统中往往涉及生成唯一ID的业务:例如多个模块产生一类数据库的记录,需要保证记录的ID互不冲突。较优的ID生成规则往往需要满足:

  • 唯一性:生成的ID全局上唯一,冲突的概率几乎为0
  • 有序性:生成的ID按照某种规则有序,便于数据库的插入和排序
  • 可用性:在高并发下依然能正确生成唯一的ID
  • 高性能:每次生成唯一ID的相应速度要快
  • 自主性:不依赖中心认证即可自主生成唯一的ID
  • 安全性:不暴露系统和业务相关信息

这里总结一下主要的ID生成方案。

阅读全文 »

最近的项目出现了samba的文件拷贝的BUG,项目主要流程是:windows端通过samba协议拷贝一个文件夹到Linux的samba server上,Linux的samba server所在节点运行着一个Python程序,它监听者文件大小的变化,一旦文件夹大小60秒不变,就判断文件上传完成,开始对文件进行处理。

起初上传包含大量小文件的文件夹并没有出现问题,但是传大文件(压缩包)的时候,会发现文件损坏无法解压。起初我以为是压缩包太大,多个任务的压缩包一起解压造成内存不够,于是设置了失败重新解压的机制。但是后来发现实际上一个大文件也会造成解压失败,日志显示重新解压了几百次,还是失败。之后又是设计解压重试时间间隔,还是失败。于是把传上去解压失败的压缩包拷贝到本地,发现打不开,文件真的损坏了!于是突发奇想,用Hex Editor查看了一下文件结构:

阅读全文 »

最近看到项目里有个模块叫download,用node编写,用作中间件,改变HTTP Response的Header以下载文件,于是打算在本文对H5种媒体的展示或下载方式做一个简单的归纳。

首先npx create_react_app media-demo创建一个测试媒体类型展示的React Demo,我们打算在Download.jsx种实现一个简单的图片展示和下载模块。首先上代码:

import React from 'react';
const url = "https://img.moegirl.org.cn/common/f/ff/YJSNPI_Ascii_Art..png"

function Download() {
return (
<div>
<img src={url} />
<a href={url}>link</a>
</div>
);
}

export default Download;

阅读全文 »