![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础代码
文章平均质量分 60
小松鼠举栗子
学习和分享React/ReactNative, Vue, Flutter, Node.js, Typescript, Webpack, C++编解码等技术.
展开
-
用简短, 可执行的代码理解prototype和__proto__
一. 为什么写这篇文章看了好几篇讲解prototype, __proto__含义的文章,有不少都配了精美的图, 然而看完还是感觉概念不清晰.难以理解的清晰透, 还容易忘.原因是没有将明确这些关键字的价值和意义.最重要的是没有不需要却容易混淆的部分指出来, 从而给理解增加更多难度.因此, 我想自己写代码来验证清楚, 这样查看起来清晰, 记忆也深刻.二. 概念首先, 原型表示继承自父类型的公共部分.而两个关键字的含义则是: prototype: 提供给构造函数...原创 2021-07-13 22:44:31 · 120 阅读 · 0 评论 -
角标的处理细节(overflow:hidden切割圆角不干净).
如图所示, 由于角标的资源文件右上角有圆角.所以在展示时, 底下的图会显出来几个像素.下面的图为了方便看仔细, 有所放大.于是我首先想到给给这个海报外层的div增加一个border-radius.结果发现, 角上的底色变少了, 但是还有少量底色.这会是什么原因呢?我猜测overflow:hidden在切割圆角时不干净.验证一下, 把圆角改大, border-radius:10px;果然, 圆角的外围是干净的, 只有贴着边线的圆弧不干净.怎么办呢?我..原创 2021-06-07 10:12:14 · 379 阅读 · 0 评论 -
网页DOM露出一半才投递, 如何实现性能较好?
今天遇到一个需求, 产品要求每个"内容"露出才投递.每个内容包含一张图片两行标题.如果有广告遮盖, 也不投递.原创 2021-05-28 19:51:22 · 143 阅读 · 0 评论 -
通过120行代码理解Vue的双向绑定原理
一.通过简单代码模拟Vue的实现 在网上找到一个Vue简单实现的例子,为了更好的理解这个例子,通过对这段代码下断点调试,理解了每一行代码,并且对代码做了详细的注释,方便以后阅读.<!DOCTYPE html><html><head><meta charset="UTF-8"></head><body> <div id="test_bind"> <input v...原创 2021-04-07 09:59:15 · 174 阅读 · 0 评论 -
防抖/节流的优缺点分析和改良升级
一.防抖和节流的作用: 防止高频的事件触发造成不必要的计算消耗,比如, 典型的应用场景: 搜索框 input事件; 鼠标移动 mousemove事件; 视窗大小变化 resize事件;二.防抖的优缺点: 创建timer,当新的触发出现时, 销毁老的timer. 性能消耗稍大于节流(不过, 这点性能差别算不了什么). 如果连续的调用间隔一直小于delay, 会造成长时间不触发.三.节流的优缺点: 通过时间差来判断要不要放弃当...原创 2021-03-23 15:55:23 · 977 阅读 · 0 评论 -
Windows共享内存实现跨进程通信
概述:最近了解到共享内存的跨进程通信的效率是最高的.原因是同一个共享内存在不同进程中使用的是同一块物理内存.因此,我想试试共享内存通信的效果.思路:不过这里有个问题,共享内存在写入之后,读取一侧并不知道有新的数据来了,因此,需要实现两个跨进程通知的同步对象.一个用于服务端通知客户端,一个用于客户端通知服务端.Windows上命名Event最适合充当这个角色.服务端代码:MsgSvr.h#include <windows.h>#i...原创 2020-07-31 20:14:33 · 720 阅读 · 0 评论 -
基于vs2017 ffmpeg4.3, sdl2.0 实现简单播放器
背景最近重新敬爱的雷神的<<最简单的基于FFMPEG+SDL的音频播放器>>发现当时的ffmpeg版本已经不能在vs2017编译通过了.因此我下载了最新的ffmpeg4.3(2020-6-15),重新实现一次.自己实现了一遍.下载相关库文件在以下页面下载ffmpeg,注意选择4.3windows-32bit, dev.注意: 考虑到减少搭建中可能遇到的坑,因此统一选择x86.https://ffmpeg.zeranoe.com/buil...原创 2020-07-10 21:08:15 · 641 阅读 · 0 评论 -
关于ffmpeg解码输出的YUV转RGB花屏问题
现象最近尝试基于ffmpeg封装一个dll, 用于视频解码, 然后将yuv转成RGB, 用于在网页显示视频的画面.可是我将YUV转成RGB之后, 发现花屏了.研究了很久, 计算方式没有发现问题, 代码如下.yuv420pToRGB24(pFrame->data[0], pFrame->data[1], pFrame->data[2], pFrame->width, pFrame->height, outputBuf);void yu.原创 2020-07-06 11:05:50 · 2448 阅读 · 1 评论 -
ReactNative 开发Android App
Android开发平台谷歌在2007年发布Android 是一个开源的基于 Linux 的移动设备操作系统支持的设备: phone…语言: 开发语言是java , 后来因为甲骨文准备对android java收费, 又开始向Kotlin转移IDE: 开发工具以前是eclipse+sdk, 后来谷歌退出了独立的IDE, Android Studio打包: 使用签名打包生成.apk文件, 可作为app, 安装在android系统.可用的平台框架现在开发app主要有四种可.原创 2020-05-23 13:49:53 · 4906 阅读 · 0 评论 -
简单易懂的解释什么是WebAssembly
背景由于js的灵活语法特定, 比如对象内的成员有很多种可能的类型, 导致JIT的优化效果变差.如下图所示代码, 这里的sum 和a的每一个元素里面每一次计算前后, 从什么类型变成什么类型, 对于编译器来说, 难以一次确定下来, 于是JIT方式就无法在这里起到很好的优化效果.Asm.js2012年,Mozilla 的工程师Alon Zakai在研究 LLVM 编译器时产生的想法, 专门做了一个编译器项目Emscripten。这个编译器可以将 C / C++ 代码编译...原创 2020-05-21 15:55:24 · 16724 阅读 · 0 评论 -
Flutter开发App简介
简介今天给大家介绍的是Dart2和FlutterDart是google推出的一种新的脚本语言, 希望能替代JS,然而JS也在迭代升级, 生命力很旺盛, 目前, Dart还没能替代JS.现在最新的Dart是2, 据说相比1改变很多. 所以我直接介绍dart2.Flutter是google推出的跨平台开发框架, 类似于React-native.不过相比于React-native, 它的性能更有优势.支持IOS,Android•谷歌的开源移动UI框架•支持iOS..原创 2020-05-16 19:21:26 · 4754 阅读 · 0 评论 -
Angular配置调试环境的域名
调试环境的问题Angular启动打包调试的命令是ng serve. ng serve默认对应的页面地址是localhost:4200. 在这个环境下, 有些资源的加载就会出现问题. 比如图片资源无法加载, 视频无法打开, 广告加载失败等. 主要是跨域或后端限制造成的. 因此, 所以如果可以在ng serve的调试环境配置中指定域名问题应该就能解决.配置域名的方法在C:\Windows\System32\drivers\etc\hosts文件中配置:127.0.0.1 www.abc.com原创 2020-05-15 15:29:39 · 1185 阅读 · 0 评论 -
JS中的try catch性能优化
try catch的性能问题最近在给项目做性能优化, 就推测JS的try catch是否会存在性能问题. 百度搜索了一下, 确实有很多相关的文章. 我索性自己做一个实验来验证一下这个猜测.1. 不发生异常时代码如下, 启动10万次运行, try catch 一个简单的函数执行.function doSomething() { let b = { c:1 }; return b.c;}function testTryCatch(func) { let ret =原创 2020-05-15 14:36:56 · 1127 阅读 · 0 评论 -
Event多线程同步演示
通过这个简单的示例进行可以很快学习了解Event的用法.#include "stdafx.h"#include #include #include "iostream"#include "process.h"#define THREADCOUNT 10 HANDLE ghWriteEvent; HANDLE ghMutex;HAN转载 2017-11-07 17:10:10 · 188 阅读 · 0 评论 -
msgpack序列化,反序列化简单演示
msgpack 可以将结构转变成字符串, 然后又可以将字符串还原官网地址: https://msgpack.org/以下是代码, 只需要定义宏, 然后include就搞定了, 相比jason或xml都更简单易用, 节省内存, 也节省代码, 简化打包, 轻量化. 相比protobuf, 这个msgpack使用起来也更简便.#define MSGPAC原创 2017-11-07 15:40:32 · 3775 阅读 · 0 评论 -
DLL导出函数示例
一. Dll导出工程1. Visual Studio新建一个空工程命名为export, 设置为DLL类型.2. 新建export.h文件, 写入如下代码#ifdef DLL_EXPORTS#define DLL_API extern "C" __declspec(dllexport)#else#define DLL_API extern "C" __declspe原创 2017-11-07 16:45:24 · 671 阅读 · 0 评论 -
线程同步的潜在问题
有一次在项目中遇到一个问题, 发现有些线程始终得不到运行, 而有些线程早已运行了很多次, 于是我猜测是否是因为抢锁不均匀导致的.于是写了一下测验代码, 经过验证, 确实存在这个问题.下面的例子说明, 当等锁的线程达到几百个的时候, 很容易导致有些线程很长的时间都抢不到锁, 而有些线程却反复的获得锁.使用task队列+线程池的方式来运行, 可以改善这个问题.原创 2017-11-07 17:49:48 · 267 阅读 · 0 评论 -
V8 JS引擎
一. Google开发V8Google (丹麦)研发小组在 2006 年开始研发 V8 ,部分的原因是 Google 对既有 JavaScript 引擎的执行速度不满意, 在2008年推出chrome, 巨大的速度优势, 迅速占领市场. 2017年chrome的市场占有达到59%. 二. 常见JS引擎JScript(IE6,IE7, IE8)Chakra(IE9,IE10, IE11, IE ...原创 2018-05-15 20:59:20 · 10476 阅读 · 0 评论 -
ESLint静态检查工具使用简介
ESLint静态检查工具使用简介一. 简介ESLint是一个静态检查工具, 可以对帮助JS检查代码中的一些编写规范问题和常见的编写错误. 配合vscode使用非常便捷, 可以在编写代码的过程中事实的看到代码中的一些常见错误, 中文的官方网址如下: http://eslint.cn二. ESLint安装a. 安装ESLint在cmd中输入npm install –g eslint, 这...原创 2018-05-15 21:06:57 · 1261 阅读 · 0 评论 -
C++ 11 新特性总结
vs2012以上版本支持一. auto的使用:auto func = less<int>(); //自动表示函数指针 auto ite = vector_a.begin(); //自动表示STL的迭代器auto p = new foo(); //自动表示变量指针等变量二. decltypeint x = 3; decltype(x) y = x; /...原创 2018-05-15 21:10:46 · 360 阅读 · 0 评论 -
Vscode搭建Typescript可调试环境
代码https://github.com/gzx-miller/typescript-debug-demo背景使用Typescript对于js开发来说能很大的提升开发效率,不过搭建出可调试的Typescript有些麻烦.所以这里这里说明一下具体的配置方法,以及提供代码.在使用以上代码前需要确保本地安装了node.js以及typescriptnpminst...原创 2019-04-26 17:17:47 · 1008 阅读 · 0 评论 -
EventEmitter可能导致重复注册和重复触发
怎么导致重复?EventEmitter在同一个函数注册到同一个eventname时会导致重复触发例如下面的代码var events = require('events'); let ev1 = "ev-1";let onEv1 = (a, b)=>{ console.log("event coming: ev-1", a, b);}var emitter...原创 2019-04-28 14:41:47 · 2541 阅读 · 0 评论 -
char*, wchar*互转
以下代码对转换操作做了简单的封装#include std::string SysWideToMultiByte(const std::wstring& wide, unsigned int code_page) { int wide_length = static_cast(wide.length()); if (wide_length == 0)原创 2017-11-07 17:20:35 · 379 阅读 · 0 评论