<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cobek的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cobek</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cobek]]></copyright><item><title><![CDATA[简单实现call，apply，bind的代码]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127760446</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127760446</guid><author>cobek</author><pubDate>Tue, 08 Nov 2022 22:34:03 +0800</pubDate><description><![CDATA[首先，先来总结一下这三者的共同点与区别：
 - 三者都是为了改变`this`的指向
 - `call`与`apply`其实差不多，都是一次性传入所有参数，调用后马上执行对应的函数，只是前者接收的是参数列表，但后者接收的是一个数组，代码实现中，除了接收参数不同，其他完全一致
 - `bind`返回一个改变了`this`指向的函数，在调用过程中，可以先传入部分固定参数，动态参数可以在调用返回的函数再传入，即可以分开多次传入参数，且返回的函数不会立即执行，开发人员可以根据需求来进行调用返回的函数]]></description><category></category></item><item><title><![CDATA[扁平化数组的方式 JS]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127522732</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127522732</guid><author>cobek</author><pubDate>Tue, 25 Oct 2022 21:54:44 +0800</pubDate><description><![CDATA[扁平化数组的方式 JS]]></description><category></category></item><item><title><![CDATA[超过安全范围的整数相加 JS]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127456498</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127456498</guid><author>cobek</author><pubDate>Sat, 22 Oct 2022 01:14:18 +0800</pubDate><description><![CDATA[超过安全范围的整数相加 JS]]></description><category></category></item><item><title><![CDATA[JS 自定义事件的方法]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127456190</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127456190</guid><author>cobek</author><pubDate>Sat, 22 Oct 2022 00:31:20 +0800</pubDate><description><![CDATA[JS 自定事件]]></description><category></category></item><item><title><![CDATA[可迭代对象 一道使let [a,b] = {c:12, d: 34}成立的题目]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127328513</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127328513</guid><author>cobek</author><pubDate>Fri, 14 Oct 2022 22:25:37 +0800</pubDate><description><![CDATA[可迭代对象 一道使let [a,b] = {c:12, d: 34}成立的题目]]></description><category></category></item><item><title><![CDATA[跑马灯边框、动态边框的实现]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/127312218</link><guid>https://blog.youkuaiyun.com/cobek/article/details/127312218</guid><author>cobek</author><pubDate>Fri, 14 Oct 2022 00:41:59 +0800</pubDate><description><![CDATA[动态边框的实现]]></description><category></category></item><item><title><![CDATA[JS判断对象是否含有某个属性]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/125400758</link><guid>https://blog.youkuaiyun.com/cobek/article/details/125400758</guid><author>cobek</author><pubDate>Tue, 21 Jun 2022 23:53:50 +0800</pubDate><description><![CDATA[JS判断对象是否含有某个属性]]></description><category></category></item><item><title><![CDATA[JS深度克隆的原理]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/125356204</link><guid>https://blog.youkuaiyun.com/cobek/article/details/125356204</guid><author>cobek</author><pubDate>Sun, 19 Jun 2022 11:49:16 +0800</pubDate><description><![CDATA[  在开发过程中如果需要深度克隆，可能很多开发人员都会选择已有的库，采取调用API的形式，可以更加快速的实现效果。比如lodash库。但还是要自己代码实现下这个深度克隆，以便掌握其原理。此外，其原理也是比较简单的，代码原理如下：...]]></description><category></category></item><item><title><![CDATA[JS的==运算原理]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/125347266</link><guid>https://blog.youkuaiyun.com/cobek/article/details/125347266</guid><author>cobek</author><pubDate>Sat, 18 Jun 2022 15:16:11 +0800</pubDate><description><![CDATA[JS的==运算原理]]></description><category></category></item><item><title><![CDATA[JS加法运算原理]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/125234129</link><guid>https://blog.youkuaiyun.com/cobek/article/details/125234129</guid><author>cobek</author><pubDate>Sat, 11 Jun 2022 14:24:27 +0800</pubDate><description><![CDATA[JS 加法原理]]></description><category></category></item><item><title><![CDATA[js动态创建input元素并自动获取焦点]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/122914269</link><guid>https://blog.youkuaiyun.com/cobek/article/details/122914269</guid><author>cobek</author><pubDate>Sun, 13 Feb 2022 22:06:12 +0800</pubDate><description><![CDATA[input元素不会自动获取焦点代码如下：
 &lt;div&gt;
    &lt;h2&gt;js创建input元素并自动聚焦&lt;/h2&gt;
 &lt;/div&gt;
 &lt;script&gt;
let myButton = document.createElement('button');
myButton.innerText = ' 点击我';
document.body.append(myButton);
myButton.onmousedown = () =&gt; {
  let ]]></description><category></category></item><item><title><![CDATA[解决iconfont在本地运行显示，但打包上传至服务器不显示的问题]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/122598501</link><guid>https://blog.youkuaiyun.com/cobek/article/details/122598501</guid><author>cobek</author><pubDate>Thu, 20 Jan 2022 12:26:28 +0800</pubDate><description><![CDATA[阿里巴巴图标库： https://www.iconfont.cn/
创建一个默认项目，然后生成css代码，过程截图如下：
由于生成css代码缺少样式等信息，如eot，就会导致上传至服务器不显示。图中url('data:application/x-font-woff2;charset=utf-的信息表示本地缓存，显示会首先使用缓存中的图标信息进行展示，建议要加上。如果网络不好，且没有数据缓存时，这时会从alicdn获取信息，但由于网络差的原因可能获取不到，导致图标不显示。
解决办法
修改项目设置，如图：


]]></description><category></category></item><item><title><![CDATA[VSCode恢复原来的powershell界面]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/121298227</link><guid>https://blog.youkuaiyun.com/cobek/article/details/121298227</guid><author>cobek</author><pubDate>Fri, 12 Nov 2021 23:39:27 +0800</pubDate><description><![CDATA[由于升级版本之后，VSCode的powershell界面已经变样了，看着好像没有以前那种感觉，恢复步骤如下：

 打开VSCode的设置界面，然后输入tabs进行搜索，找到截图的位置，去掉勾号即可恢复


]]></description><category></category></item><item><title><![CDATA[不定义新的的变量进行两数交换]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/117636543</link><guid>https://blog.youkuaiyun.com/cobek/article/details/117636543</guid><author>cobek</author><pubDate>Sun, 06 Jun 2021 22:08:24 +0800</pubDate><description><![CDATA[题目 ： a = 50, b = 100, 在不定义新的变量情况下进行两数交换。

   相信这道题目很多人都遇到过，如果是定义一个新的变量进行临时存储，大家很快都能做出来。现在我使用几种方法进行两数交换，然后分析得出最优的方法。
代码如下：
// 第一种方法, 使用异或运算
public class ExchageNum {
    public static void main(String[] args) {
       int a = 50;
       int b = 100;
      .]]></description><category></category></item><item><title><![CDATA[算法经典问题----爬楼梯]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/112161191</link><guid>https://blog.youkuaiyun.com/cobek/article/details/112161191</guid><author>cobek</author><pubDate>Sun, 03 Jan 2021 23:01:50 +0800</pubDate><description><![CDATA[1、问题阐述

假设你现在正在爬楼梯，楼梯有 n级。每次你只能爬 1 级或者 2 级，那么你有多少种方法爬到楼梯的顶部？

2、解决思路

该问题的解决方法有两种，一个是利用斐波那契数列，即递归方法，另一种是利用动态规划方法。如果n值很大，递归方法耗时长。当值很大时，前者耗时是后者的成百上千倍，甚至前者会出现运行时间过长的异常现象。这是因为每一次递归，都要重新计算，导致耗时过长。

3、代码如下


package com.learn;

import javax.sound.midi.Soundbank;]]></description><category></category></item><item><title><![CDATA[单例模式（饿汉式与懒汉式）]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/112160322</link><guid>https://blog.youkuaiyun.com/cobek/article/details/112160322</guid><author>cobek</author><pubDate>Sun, 03 Jan 2021 22:39:39 +0800</pubDate><description><![CDATA[单例模式（饿汉式），代码如下：


package com.learn;

/**
 * 单例模式
 */
public class Person {
    /**
     * 饿汉式
     */
    // 1、私有化构造方法
    private Person(){

    }
    // 2、私有化静态属性
    private static Person person = new Person();

    // 3、获取实例的方法
    public static Pe...]]></description><category></category></item><item><title><![CDATA[SourceTree的软合并、混合合并、强合并区别]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/110426141</link><guid>https://blog.youkuaiyun.com/cobek/article/details/110426141</guid><author>cobek</author><pubDate>Tue, 01 Dec 2020 12:33:15 +0800</pubDate><description><![CDATA[SourceTree介绍
  这是一款将git版本管理工具操作可视化的操作软件，适用于Windows、IOS系统，也就是说不必使用git命令就可以进行暂存、提交、推送、拉取、合并、回滚等操作，这无疑是减轻了开发人员的负担，从而提高开发效率。
软合并
  软合并是指将此次提交回滚到指定提交位置，但这个过程中会将修改过的文件暂存到暂存区。操作过程如下：
  首先鼠标右键选中要回滚到的位置，然后选中上图红色箭头所指位置。
  然后选取“软合并”，点击“确定”。
  最后点击左上角的“提交”按钮就可以看到已暂存文件]]></description><category></category></item><item><title><![CDATA[不稳定的选择排序]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/106836888</link><guid>https://blog.youkuaiyun.com/cobek/article/details/106836888</guid><author>cobek</author><pubDate>Thu, 18 Jun 2020 16:24:32 +0800</pubDate><description><![CDATA[步骤
  求出数组的长度len，然后进行len-1趟比较，每一趟记录最小（最大）的元素，通过元素交换放在对应的位置，如：
 第一趟遍历len-1个元素，将最小（最大）的元素放在下标为0，即a[0]的位置；
 第二趟遍历len-2个元素，将最小（最大）的元素放在下标为1，即a[1]的位置；
 ···
 第len-1趟遍历1个元素，将最小（最大）的元素放在下标为len-2，即a[len-1]的位置；
不稳定性
稳定性：指进行排序后，两个相等元素的相对位置没有发生改变。
如数组[10,32,10,5,23]，进行]]></description><category></category></item><item><title><![CDATA[归并排序（基础版），包括升序与降序]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/106494548</link><guid>https://blog.youkuaiyun.com/cobek/article/details/106494548</guid><author>cobek</author><pubDate>Tue, 02 Jun 2020 14:21:21 +0800</pubDate><description><![CDATA[归并排序
  归并排序是一种稳定的排序算法，先进行分组，再进行排序。这个过程中需要采用递归的方法。还需要定义一个辅助数组，用于合并分开的两个子序列。
优点
1、在众多排序算法中，效率可以达到最快，时间复杂度为O（nlogn）
2、由于是稳定排序，故相同的元素会保持排序前的位置，如3，4，4，5，进行排序后，第一个4始终在第二个4前面，适用于某些特定场景。
缺点
  归并算法需要O(n)的辅助空间，而快速排序只需要O(logn)的辅助空间，故该算法的空间复杂度略高。
时间复杂度
始终为O(logn)
空间复杂]]></description><category></category></item><item><title><![CDATA[Hill密码的加密与解密]]></title><link>https://blog.youkuaiyun.com/cobek/article/details/106255723</link><guid>https://blog.youkuaiyun.com/cobek/article/details/106255723</guid><author>cobek</author><pubDate>Thu, 21 May 2020 14:14:05 +0800</pubDate><description><![CDATA[Hill密码原理
    首先随机生成或选取一个密钥矩阵（该矩阵必须是可逆的），过程如下图所示



在加密过程中，先将明文分为三个字母一组，不足的用“X”代替，然后将其转化成数字，如0==‘A’，再与矩阵相乘，得到的数字转成字母，如‘’B‘’==1，进行输出。
在解密过程中，先求出密钥的逆矩阵，本文直接给出逆矩阵，需要注意的是逆矩阵的元素不可以为负数，若存在负数，则将所有元素+26的若干倍，再mod26，得到全为正整数的逆矩阵。将得到的密文字母转成数字（三个一组），与逆矩阵相乘，将所得的数字转成字母，最后]]></description><category></category></item></channel></rss>