<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dongmelon的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dongmelon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dongmelon]]></copyright><item><title><![CDATA[手写 Bitmap]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/128996415</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/128996415</guid><author>dongmelon</author><pubDate>Sun, 12 Feb 2023 16:27:15 +0800</pubDate><description><![CDATA[【代码】手写 Bitmap。]]></description><category></category></item><item><title><![CDATA[typescript泛型]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/124937851</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/124937851</guid><author>dongmelon</author><pubDate>Wed, 25 May 2022 23:06:25 +0800</pubDate><description><![CDATA[我们平常是对值编程，而泛型是对类型编程

一、初识泛型

1.1keyof

1.2in

1.3infer

1.4Partial

1.5Required

1.6Readonly

1.7Record

1.8Pick

1.9extends

1.10 Exclude

1.11Extract

1.12 Omit



二、类型

2.1联合类型

满足其中之一的类型就可以了。


interface NAS {
  host: string;
  port: number;...]]></description><category></category></item><item><title><![CDATA[koa-compose重点解析]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/124937054</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/124937054</guid><author>dongmelon</author><pubDate>Mon, 23 May 2022 23:13:02 +0800</pubDate><description><![CDATA[源码：


  return function (context, next) {
    // last called middleware #
    let index = -1
    return dispatch(0)
    function dispatch (i) {
      if (i &lt;= index) return Promise.reject(new Error('next() called multiple times'))
      index = i
      ]]></description><category></category></item><item><title><![CDATA[手写Promise]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/124227945</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/124227945</guid><author>dongmelon</author><pubDate>Sun, 17 Apr 2022 12:45:58 +0800</pubDate><description><![CDATA[class MyPromise {

    PENDING = 'pending'
    FULFILLED = 'fulfilled'
    REJECTED = 'rejected'

    status = null
    value = null
    resolveCallbacks = []
    rejectCallbacks = []

    constructor(executor) {
        this.status = this.PENDING
       .]]></description><category></category></item><item><title><![CDATA[ESM(ESModule)和CJS(CommonJS)]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/123624503</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/123624503</guid><author>dongmelon</author><pubDate>Sun, 20 Mar 2022 23:24:57 +0800</pubDate><description><![CDATA[目录



一、ESM

1.1 import

1.2 export

二、CJS

2.1 require

2.2 exports 和 module.exports



一、ESM

1.1 import

1.2 export



二、CJS

2.1 require

2.2 exports 和 module.exports
]]></description><category></category></item><item><title><![CDATA[移动硬盘安装双系统windows10和ubuntu18.04]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/117602719</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/117602719</guid><author>dongmelon</author><pubDate>Sat, 05 Jun 2021 18:47:30 +0800</pubDate><description><![CDATA[物理工具:

2T移动硬盘准备安装双系统
	8GU盘
思路分析:

 
]]></description><category></category></item><item><title><![CDATA[virtual-box虚拟机挂载目录-ubuntu-16.04]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/105047665</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/105047665</guid><author>dongmelon</author><pubDate>Mon, 23 Mar 2020 14:18:10 +0800</pubDate><description><![CDATA[1: 配置源vim /etc/apt/sources.list


deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe mu...]]></description><category></category></item><item><title><![CDATA[nodejs-指定长度断句]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/102856372</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/102856372</guid><author>dongmelon</author><pubDate>Fri, 01 Nov 2019 14:02:47 +0800</pubDate><description><![CDATA[function clause(str: string, long: number) {
    long = long || 200
    let tmp = str.split(/[？|”|“|‘|’|！|：|，|。|（|）|?|"|'|!|:|;|.|,|(|)]/)
    console.log(tmp)
    let start = 0
    let end = 0
    l...]]></description><category></category></item><item><title><![CDATA[nodejs删除文件夹和文件（全）]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/102456717</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/102456717</guid><author>dongmelon</author><pubDate>Wed, 09 Oct 2019 11:07:34 +0800</pubDate><description><![CDATA[var fs = require('fs')
/**
 * 
 * @param {*} path 必传参数可以是文件夹可以是文件
 * @param {*} reservePath 保存path目录 path值与reservePath值一样就保存
 */
function delFile(path, reservePath) {
    if (fs.existsSync(path)) {
 ...]]></description><category></category></item><item><title><![CDATA[nodejs--快速排序]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/91355715</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/91355715</guid><author>dongmelon</author><pubDate>Sun, 09 Jun 2019 18:44:50 +0800</pubDate><description><![CDATA[function quickSort(arr, start, end) {
    if (start &gt;= end) return;
    var pivotIndex = end;
    var pivotValue = arr[end];
    var tmpStart = start
    var tmpEnd = end
    while (true) {
      ...]]></description><category></category></item><item><title><![CDATA[webjs ---- 前端下载jpg,pdf之类的]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/90747928</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/90747928</guid><author>dongmelon</author><pubDate>Mon, 03 Jun 2019 10:21:51 +0800</pubDate><description><![CDATA[var xhr = new XMLHttpRequest();
        xhr.open('GET', "http://faceunity.com/static/images/index_bc.jpg", true);
        xhr.responseType = "blob";//关键的一步
        xhr.onreadystatechange = function (...]]></description><category></category></item><item><title><![CDATA[nodejs--根据坐标算距离]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/85011862</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/85011862</guid><author>dongmelon</author><pubDate>Sat, 15 Dec 2018 10:08:43 +0800</pubDate><description><![CDATA[
var EARTH_RADIUS = 6378.137; //地球半径  
//将用角度表示的角转换为近似相等的用弧度表示的角 java Math.toRadians  
function rad(d) {
    return d * Math.PI / 180.0;
}
/** 
 * 谷歌地图计算两个坐标点的距离 
 * @param lng1  经度1 
 * @param lat1  ...]]></description><category></category></item><item><title><![CDATA[js -- 箭头函数和function关键字函数的小坑]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/83270082</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/83270082</guid><author>dongmelon</author><pubDate>Mon, 22 Oct 2018 11:09:00 +0800</pubDate><description><![CDATA[
var a = {
    name : 'cd',
    say : function(){
        console.log(this.name)
    }
}

a.say() // cd 正常输出


var a = {
    name : 'cd',
    say : () =&amp;gt; {
        console.log(this.name)  //这里的this...]]></description><category></category></item><item><title><![CDATA[nodejs -- 迭代器]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/81507938</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/81507938</guid><author>dongmelon</author><pubDate>Wed, 08 Aug 2018 14:44:03 +0800</pubDate><description><![CDATA[



function filterAsyncRouter(asyncRouterMap, maps) {


  const accessedRouters = asyncRouterMap.filter(route =&amp;gt; { // router.path  一级 有 /  后面 没有 

    if ( route.path.endsWith()) { // 这里判断有没有 权限
 ...]]></description><category></category></item><item><title><![CDATA[nodejs--log4j]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/80950038</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/80950038</guid><author>dongmelon</author><pubDate>Sat, 07 Jul 2018 11:37:34 +0800</pubDate><description><![CDATA[/**
 * npm install log4js
 * 源码及文档地址：https://github.com/nomiddlename/log4js-node
 */
var log4js = require('log4js');

/**
 * 第一种：
 * configure方法为配置log4js对象，内部有levels、appenders、categories三个属性
 * levels...]]></description><category></category></item><item><title><![CDATA[sh-Linux备份文件]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/80897268</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/80897268</guid><author>dongmelon</author><pubDate>Tue, 03 Jul 2018 13:50:13 +0800</pubDate><description><![CDATA[#!/bin/bash
#datename=$(date +%Y%m%d%H%M%S)

usdtoldfile=/data/usdt/wallet.dat

usdtnewname=usdt$(date +%Y%m%d%H%M%S)wallet.dat

usdtdir=/data/wallet_bak/usdtwallet


# -x 参数判断 $folder 是否存在并且是否具有可执行权限...]]></description><category></category></item><item><title><![CDATA[node js -- 使用 amqplib模块]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/79959034</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/79959034</guid><author>dongmelon</author><pubDate>Mon, 16 Apr 2018 12:30:38 +0800</pubDate><description><![CDATA[var rabbitmq= {
        hostname:&quot;192.1&quot;,
	port:&quot;5672&quot;,
	username:&quot;dep&quot;,
	password:&quot;devl8&quot;,
	authMechanism: &quot;AMQPLAIN&quot; ,
	pathname:&quot;/&quot;,
	ssl: { 
		enabled : false  
    }  
}


var open = require(]]></description><category></category></item><item><title><![CDATA[node  -- nodejs使用request模块]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/79818645</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/79818645</guid><author>dongmelon</author><pubDate>Wed, 04 Apr 2018 15:59:06 +0800</pubDate><description><![CDATA[let request = require('request');
let url= &quot;https://tapi.jingtum.com/v2/accounts/jsQzfc74ZN9wRxXVSWLTWaTBmbUvXK/pants&quot;;

request({
    method:&quot;POST&quot;,
    url:url,
    headers:{
        &quot;content-type&quot;:...]]></description><category></category></item><item><title><![CDATA[nodejs -- promise的返回]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/79423089</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/79423089</guid><author>dongmelon</author><pubDate>Fri, 02 Mar 2018 14:44:10 +0800</pubDate><description><![CDATA[const a = async ()  =&amp;gt; {
    return Sequelize.findAll({})   //这里返回一个promise，&quot;aaaaa&quot;也行
}

const b= async ()=&amp;gt;{
    const result =await a() ;     //这样就能拿到数据了

}ORconst a = async ()  =&amp;gt; {
    re...]]></description><category></category></item><item><title><![CDATA[nodejs -- 使用seneca模块搭建为服务]]></title><link>https://blog.youkuaiyun.com/dongmelon/article/details/79412895</link><guid>https://blog.youkuaiyun.com/dongmelon/article/details/79412895</guid><author>dongmelon</author><pubDate>Thu, 01 Mar 2018 15:18:01 +0800</pubDate><description><![CDATA[senecaService.jsconst Seneca=require('seneca-await');
const seneca = Seneca();
seneca
  .listen({port: 10, pin: {role: 'test'}})
  .ready(function(){
    console.log(&quot;微服务启动&quot;)
  });

seneca.add({
role:...]]></description><category></category></item></channel></rss>