<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bye_cherry的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/bye_cherry</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; bye_cherry]]></copyright><item><title><![CDATA[前端js操作截取/裁剪图片]]></title><link>https://blog.csdn.net/bye_cherry/article/details/115461937</link><guid>https://blog.csdn.net/bye_cherry/article/details/115461937</guid><author>bye_cherry</author><pubDate>Tue, 06 Apr 2021 15:26:03 +0800</pubDate><description><![CDATA[前端js操作截取图片
主要使用用canvas相关api来实现图片裁剪

在vue中使用
&lt;template&gt;
  &lt;div&gt;
    &lt;img :src="imgSrc"/&gt;
    &lt;div&gt;
      &lt;h2&gt;裁剪后的图片&lt;/h2&gt;
      &lt;img :src="handleSrc" height="100"&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/template&gt;

&]]></description><category></category></item><item><title><![CDATA[JavaScript设计模式：观察者模式和订阅/发布模式]]></title><link>https://blog.csdn.net/bye_cherry/article/details/114766099</link><guid>https://blog.csdn.net/bye_cherry/article/details/114766099</guid><author>bye_cherry</author><pubDate>Sat, 13 Mar 2021 22:50:22 +0800</pubDate><description><![CDATA[observer和subscribe/publish
observer（观察者模式）
概念

一个或多个观察者对目标的状态敢兴趣，他们通过将自己依附在目标对象上以便注册所感兴趣的内容。目标状态发生改变并且观察者可能对这些改变感兴趣，就会发送一个通知消息，调用每个观察的更新方法，当观察者不在对目标状态感兴趣是，他们可以简单地将自己从中分离
——引用自《javascript设计模式》引用《设计模式：可复用面向对象软件的基础》

《JavaScript设计模式》一书中给出了观察者模式的实现方法，使用了四个组件（书]]></description><category></category></item><item><title><![CDATA[防抖和节流]]></title><link>https://blog.csdn.net/bye_cherry/article/details/113436817</link><guid>https://blog.csdn.net/bye_cherry/article/details/113436817</guid><author>bye_cherry</author><pubDate>Sat, 30 Jan 2021 16:00:14 +0800</pubDate><description><![CDATA[防抖和节流
使用场景
防抖：比如echarts图表需要根据窗口的大小进行resize操作，但是浏览器的resize事件触发太频繁了，特别是在拖拉浏览器窗口的时候，就会导致echarts实例经常去调resize方法，但是实际上只需要在停止变化浏览器窗口大小之后再去执行resize方法就好了，那么这个时候就需要用到防抖的技术了。
防抖函数有另一个需要注意的地方，就是停止多久之后再执行的问题。
但是很少有人思考为什么叫防抖，防抖是什么意思，防止抖动？这么理解完全没有问题，并且还十分形象。
举个生活中的例子，假设现]]></description><category></category></item><item><title><![CDATA[vue自定义指令——v-eharts自定义指令实现实践]]></title><link>https://blog.csdn.net/bye_cherry/article/details/113435337</link><guid>https://blog.csdn.net/bye_cherry/article/details/113435337</guid><author>bye_cherry</author><pubDate>Sat, 30 Jan 2021 15:37:12 +0800</pubDate><description><![CDATA[vue自定义指令
官方文档
作用
自定义指令为什么存在？官方文档给出的原因如下

…在 Vue2.0 中，代码复用和抽象的主要形式是组件。然而，有的情况下，你仍然需要对普通 DOM 元素进行底层操作，这时候就会用到自定义指令。…

对普通dom元素进行底层操作！有点振聋发聩的意思，我们所熟知的vue指令包含了v-if,v-show,v-for,v-model,v-bind，v-on等等，如果再往下想一层，这些指令无一不是在帮我们操作底层的dom。


v-if，删除/新增dom节点


v-show，给do]]></description><category></category></item><item><title><![CDATA[post请求下载文件(兼容IE)]]></title><link>https://blog.csdn.net/bye_cherry/article/details/109373781</link><guid>https://blog.csdn.net/bye_cherry/article/details/109373781</guid><author>bye_cherry</author><pubDate>Thu, 29 Oct 2020 22:58:31 +0800</pubDate><description><![CDATA[post请求下载文件(兼容IE)
有时候由于下载文件的url携带的参数过多，导致整个url长度超过get请求的上限，这个时候需要更换为post请求，具体实现如下
function downLoadFile (url, params, fileName) {
  const xhr = new XMLHttpRequest()
  xhr.open('post', url)
  xhr.setRequestHeader('Content-Type', 'application/json')
  xhr.res]]></description><category></category></item><item><title><![CDATA[【js】this作用域全解析]]></title><link>https://blog.csdn.net/bye_cherry/article/details/105408636</link><guid>https://blog.csdn.net/bye_cherry/article/details/105408636</guid><author>bye_cherry</author><pubDate>Thu, 09 Apr 2020 13:31:49 +0800</pubDate><description><![CDATA[this作用域问题
一般来说，谁调指谁是一个基本原则，但是这并不是一个非常好的面试回答，虽然从某种程度上，这有助于帮我们判断this指向问题，但是不能涵盖所有的情况，建议从函数调用的4种方式展开

函数式调用
方法调用模式
构造函数调用模式（this指向实例）
call、apply、bind

函数式调用
var age = 10
var person = {
  age:12,
  say(){...]]></description><category></category></item><item><title><![CDATA[【前端:Ts+React+Redux+React-Router+ant-design;服务端:Node+Koa2+MongoDB】从TodoList入门React全家桶采坑合集]]></title><link>https://blog.csdn.net/bye_cherry/article/details/100320320</link><guid>https://blog.csdn.net/bye_cherry/article/details/100320320</guid><author>bye_cherry</author><pubDate>Mon, 02 Sep 2019 21:17:36 +0800</pubDate><description><![CDATA[文章目录前言采坑合集没有全家桶脚手架搭建typescript环境在官方全家桶中使用typescript配置tslint样式表的使用配置其他类型的css处理文件行内样式的使用样式没有模块作用域配置react-router没有双绑绑定事件事件参数问题使用ant-designreduxredux谷歌开发者工具combineReducersredux中间件redux-thunk概念使用redux中间件re...]]></description><category></category></item><item><title><![CDATA[字节跳动2020届秋招提前批前端面经]]></title><link>https://blog.csdn.net/bye_cherry/article/details/96458459</link><guid>https://blog.csdn.net/bye_cherry/article/details/96458459</guid><author>bye_cherry</author><pubDate>Thu, 18 Jul 2019 21:48:00 +0800</pubDate><description><![CDATA[字节跳动面经
一面
自我介绍完，面试官问了为什么项目中选择vue
1、上来聊如何理解mvvm、vue组件通信、vex、路由实现
2、写一个组件
实现一个user banner组件，根据用是否登录、注册显示不同的信息；name、id、icon
我的实现
&lt;template&gt;
&lt;div&gt;
   &lt;div v-if:'isLogin'&gt;
       &lt;div&...]]></description><category></category></item><item><title><![CDATA[【web】仿微博浏览量自增（判断元素是否在可视区+停留2s事件响应）]]></title><link>https://blog.csdn.net/bye_cherry/article/details/95515171</link><guid>https://blog.csdn.net/bye_cherry/article/details/95515171</guid><author>bye_cherry</author><pubDate>Thu, 11 Jul 2019 20:14:41 +0800</pubDate><description><![CDATA[浏览量自增
需求分析
微博、空间动态中经常能看到浏览量统计，不同于博客，点击之后浏览量自动加1，这种碎片化的推送信息，浏览次数不能以常规的点击方式来统计，用户可能甚至根本不会点击内容，匆匆一瞥就把滚动条往下滑动了，所以如何设计一个自动统计用户浏览这些零散信息的浏览量，是大有操作空间的。
首先规定用户的什么行为作为一次浏览，考虑用户在每个信息前停留的时间，以及浏览页面的习惯，做出如下规定
如果一条微...]]></description><category></category></item><item><title><![CDATA[【Rxjs】初步感知-不算入门的入门]]></title><link>https://blog.csdn.net/bye_cherry/article/details/90490307</link><guid>https://blog.csdn.net/bye_cherry/article/details/90490307</guid><author>bye_cherry</author><pubDate>Thu, 23 May 2019 23:49:26 +0800</pubDate><description><![CDATA[文章目录Rxjs异步数据流编程各异步编程语法比较相比Promise的优势Rxjs unsubscribe 取消订阅Rxjs 订阅后多次执行Rxjs 工具函数
rxjs教程指路中文手册
Rxjs异步数据流编程
个人理解：异步编程，类Promise，功能比Promise更强大
各异步编程语法比较

回调函数

function getcallbackData(callback) {
  setTime...]]></description><category></category></item><item><title><![CDATA[【js】require和import的区别]]></title><link>https://blog.csdn.net/bye_cherry/article/details/90414563</link><guid>https://blog.csdn.net/bye_cherry/article/details/90414563</guid><author>bye_cherry</author><pubDate>Tue, 21 May 2019 20:27:11 +0800</pubDate><description><![CDATA[文章目录`require`和`import`的区别起源导出命令/引入命令CommonJSes6静态优化
require和import的区别
起源
es6诞生之前，js一直没有模块系统，就连css都有@import，对现在复杂的大型项目开发无疑是一种阻碍。es6在2015年6月正式发布，所以es6也有一个别称es2015。官方没有提出es6之前，社区给出了解决模块问题的方案，那就是node.js。介...]]></description><category></category></item><item><title><![CDATA[【最全】原生JS创建对象与继承的所有方法]]></title><link>https://blog.csdn.net/bye_cherry/article/details/89677470</link><guid>https://blog.csdn.net/bye_cherry/article/details/89677470</guid><author>bye_cherry</author><pubDate>Mon, 29 Apr 2019 16:23:06 +0800</pubDate><description><![CDATA[文章目录1. JS创建对象（实例）的方法1.1 工厂模式1.2 构造函数模式1.3 原型模式1.4 组合使用构造函数模式和原型模式1.5 动态原型模式1.6 寄生构造函数模式1.7 稳妥构造函数模式2. JS实现继承的方法2.1 原型链继承2.2 借用构造函数2.3 组合继承2.4 原型式继承2.5 寄生式继承2.6 寄生组合式继承
1. JS创建对象（实例）的方法
1.1 工厂模式
functi...]]></description><category></category></item><item><title><![CDATA[【SpringMVC】仿空间说说照片上传]]></title><link>https://blog.csdn.net/bye_cherry/article/details/87541848</link><guid>https://blog.csdn.net/bye_cherry/article/details/87541848</guid><author>bye_cherry</author><pubDate>Sun, 17 Feb 2019 18:47:45 +0800</pubDate><description><![CDATA[先看看实现效果，如果不是您需要的效果就不浪费您宝贵的时间了。代码地址

此需求适用于用户在提交包含多张图像信息的相关记录时， 前端页面中图像排版的一个相关显示。

一、实现思路 

如果只是上传单张图像，那么常规的上传流程应该是

1：用户（前端）选择需要上传的图像

2：后台（服务器端）接收前端发送的表单数据，将照片存入指定位置，再连同文本信息一起保存进数据库，上传文件的方式使用Apache 的...]]></description><category></category></item><item><title><![CDATA[【Bootstrap】modal模态框动态修改标题或其他内容]]></title><link>https://blog.csdn.net/bye_cherry/article/details/81460749</link><guid>https://blog.csdn.net/bye_cherry/article/details/81460749</guid><author>bye_cherry</author><pubDate>Mon, 06 Aug 2018 21:02:02 +0800</pubDate><description><![CDATA[       最近用bootstrap的模态框做一个表记录的修改和新增，考虑代码的复用性这两个功能肯定是使用一个模态框，但是标题肯定需要修改成“新增xxx”和“修改xxx”，最开始的思路是在点击事件中通过id获取标题所在的标签，然后修改标签里的内容，结果当然是行不通，F12也看不出什么问题，直觉告诉我在模态框初始化的时候一定发生了什么事情，于是去bootstap的官网查开发文档，然后发现了一个很有...]]></description><category></category></item><item><title><![CDATA[【C#】winform软件UI设计模板]]></title><link>https://blog.csdn.net/bye_cherry/article/details/78148073</link><guid>https://blog.csdn.net/bye_cherry/article/details/78148073</guid><author>bye_cherry</author><pubDate>Sun, 01 Oct 2017 17:25:20 +0800</pubDate><description><![CDATA[最近一直在改软件UI，源码，欢迎讨论


一、简介
        之前用的一个模板用的是office风格的，但是奈何最近做的系统功能并不是很多，菜单栏显得很空洞，BOSS严令整改。遂改变思路想做一个类似360的UI，但是BOSS还是不满意，于是改来改去改成了现在这个样子，除了使用winform的原生控件，还使用了DevExpress插件。
二、构成
        主要分为三个部分，]]></description><category></category></item><item><title><![CDATA[【C#】byte[]数组中有值大于127时与string之间的相互转化]]></title><link>https://blog.csdn.net/bye_cherry/article/details/76603642</link><guid>https://blog.csdn.net/bye_cherry/article/details/76603642</guid><author>bye_cherry</author><pubDate>Thu, 03 Aug 2017 09:23:17 +0800</pubDate><description><![CDATA[接触到byte[]数组是在做对象序列化的时候，在将byte[]数组转化到string时，尝试过多种方法，比较靠谱的是这两种

string s1 = System.Text.Encoding.ASCII.GetString(b);
string s2 = System.Text.Encoding.Default.GetString(b);
byte[] b1 = System.Text.E]]></description><category></category></item><item><title><![CDATA[C#设置DataGridView某一具体单元格的内容居中显示]]></title><link>https://blog.csdn.net/bye_cherry/article/details/75417912</link><guid>https://blog.csdn.net/bye_cherry/article/details/75417912</guid><author>bye_cherry</author><pubDate>Wed, 19 Jul 2017 17:00:29 +0800</pubDate><description><![CDATA[找了很多方法，要么是设置整个DataGridView的内容居中显示要么是整列内容居中显示，于是去https://msdn.microsoft.com/zh-cn/library/1yef90x0(v=vs.110).aspx查]]></description><category></category></item></channel></rss>