2022-29周 项目问题整理

新知识

1、好文学习

1.1、如何写一篇技术文章

开发项目或做学习时,多小步记录,则方便整合汇总;
文章标题夺人眼球;
干货;
图片(尤其是展示结构的图片);
提纲,论据、论点;
结构不宜过深,篇幅不宜过长,通读无错别字,形象;

个人思考:技术文章通常包含一些原理性才更具有价值,原理只是架构虽然详实严谨,但是如果可以加上形象的例子更容易理解;但本身技术就比较抽象,功夫还需深;

2、ts(TypeScript)实用程序类型

Partial 构造一个所有属性都Type设置为可选的类型
Required 构造一个所有属性都Type设置为必填的类型
Readonly 只读,不可覆盖
Record<Keys, Type> 构造一个对象类型,属性键为 keys,属性值为 type,常用于一种类型的属性映射到另一种类型,name-info
Pick<Type, Keys> 挑选某类型中的某些项组合成新的类型
Omit<Type, Keys> 去除类型中某些项
Exclude<UnionType, ExcludedMembers> 重联合成员排除部分成员
Extract<Type, Union> 从联合中提取构造新的类型,取交集
NonNullable 排除 null、undefined 这种nullable类型
Parameters 从函数类型的参数中使用的类型构造元组类型Type

type T2 = Parameters<<T>(arg: T) => T>;

ConstructorParameters 从构造函数类型的类型构造元组或数组类型。它产生一个包含所有参数类型的元组类型(或者never如果Type不是函数的类型)
ReturnType 构造一个由 function 的返回类型组成的类型Type
InstanceType 构造一个类型,该类型由 中的构造函数的实例类型组成Type。

class C {
  x = 0;
  y = 0;
}
 
type T0 = InstanceType<typeof C>;
// type T0 = C

ThisParameterType 提取函数类型的this参数的类型,如果函数类型没有参数,则为未知this
Uppercase 大写
Lowercase 小写
Capitalize 大写
Uncapitalize 取消大写
OmitThisParameter 从 中删除this参数Type
ThisType 此实用程序不返回转换后的类型

3、node连接redis服务

Remote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。
redis较之于mysql简化很多,且内存存取,常用于做一些内存字段小如密码类的存储内容小的字段内容;
使用 ioredis npm包

// 封装 RedisHelper 
const Redis = require('ioredis');
const redisPass = 'xx';

class RedisHelper {
    static redisInstance = null;
    constructor() {
        if (!RedisHelper.redisInstance) {
            const redis = new Redis({
                host: host,
                port: 6379,
                password: redisPass,
            });
            RedisHelper.redisInstance = redis;
        }
    }
    /**
     * 存redis,返回promise
     * @param {*} key
     * @param {*} value
     */
    set(key, value) {
        const redisInstance = RedisHelper.redisInstance;
        const redisStr = JSON.stringify(value);
        return redisInstance.set(key, redisStr);
    }
    /**
     * 读redis,返回promise
     * @param {*} key
     */
    get(key) {
        const redisInstance = RedisHelper.redisInstance;
        return redisInstance.get(key).then((redisStr) => {
            return JSON.parse(redisStr);
        });
    }
}

module.exports = RedisHelper;


// 引用
const RedisHelper = require('utils/redisHelper');
const redis = new RedisHelper();
redis.get(key).then((result) => {
	/* result 的类型
	{
		start: number, // 开始时间
		time: number, // 持续时间
		ok: boolean, // 是否有效 - 待确认
	}
	*/
	// 处理超时时间,重置key
	return redis.set(key, cacheData);
});

4、Memcached 内存对象缓存系统

是一个简洁的key-value存储系统。Memcached 官网
感觉同redis类似,均为一主多从分布式;
建议选择redis,不仅支持类型多,还可以持久化存储数据;简单 key-value可以考虑memchached,复杂持久对数据类型有要求选redis,因为redis支持数据结构还包含list、set、hash等;
Redis和memcached的区别和使用场景

问题

1、npm windows下 命令 export DEV_MODE=‘true’ && npx --node-arg=–inspect tsw config=./config/dev/config.js

export -> set
node-arg -> node-options

2、定时任务部署多台服务器同时触发

为避免同时触发,可结合redis进行key值设置“互斥锁”;不存在,设置key值并处理定时任务,若存在则不做处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值