Blog icon indicating copy to clipboard operation
Blog copied to clipboard

芦叶满汀洲,寒沙带浅流。二十年重过南楼。柳下系船犹未稳,能几日,又中秋。 黄鹤断矶头,故人今在否?旧江山浑是新愁。欲买桂花同载酒,终不似,少年游。

Results 38 Blog issues
Sort by recently updated
recently updated
newest added

# 解析神经网络进化框架 —— Neuroevolution > 本文旨在通过代码分析让读者了解基于神经网络进化的机器学习实现方法。 之前 G 家的 Alpha Go 打败人类围棋冠军的事件将人工智能推上了人民群众议论的焦点。人工智能的热潮随之扑面而来,无论是手机、摄像、点外卖,无不标榜自己具有人工智能加成。一时间人工智能成为了时代的宠儿。 前不久在逛 github 的时候,偶然发现了一个叫 Neuroevolution.js 的文件,项目作者用它实现了一个人工智能玩游戏的 [Demo](http://xviniette.github.io/FlappyLearning/) ![](https://github.com/xviniette/FlappyLearning/blob/gh-pages/img/flappy.png?raw=true) 【游戏截图】 我认真的读了代码,结合有限的知识,下面尝试将代码讲解下,看看 Neuroevolution 是如何实现机器学习方式之一 —— 神经网络的。 ## 神经网络 Neural Networks 首先介绍一下神经网络。神经网络的研究很早就已出现,今天“神经网络”已经是一个相当大的、多学科交叉的学科领域。神经网络的定义也多种多样,这里我们采用如下定义:...

### 为何写这个文章 很少有时间对于写过的代码重构 这次发现重构是真的很有意思的事情 所以就记录下来了 ### modal的fifo应用 集卡属于互动类型的游戏,此页面有9个弹窗,其中有同时出现的5个弹窗的情况,且如果同时出现必须按照指定顺序弹出。 遇到复杂的交互逻辑,数据结构可以帮助理清思路,抽象逻辑,完成稳定可靠的代码。在这次交互中,弹框要一个个按照顺序弹出,可以虑有序队列。但是弹框的弹出和关闭属于事件。在上一个弹框弹出关闭后,触发下一个弹框弹出。可以考虑事件的发布订阅。 #### 队列图解 ![](https://user-gold-cdn.xitu.io/2020/3/17/170e81044aacdc6c?w=540&h=162&f=png&s=50531) 队列 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(end)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队首。 #### 弹窗和队列结合 队列的弹窗展示有三个状态 1. 同一时间段只有一个弹窗触发 2. 同一时间段有两个或多个弹窗出发 3. 一个弹窗在展示过程中,另一个弹窗要触发 整体逻辑分析如下图 ![](https://user-gold-cdn.xitu.io/2020/3/17/170e7d5ed700891c?w=1494&h=1358&f=png&s=187577) #### 用法 ``` import {...

萌推项目的采集上报规范在立项之初基本已经定义完备,在后续业务迭代过程中也得到了充分的验证。 ## 埋点规范 萌推的采集上报基于集团的采集上报工具,为了区分集团采集上报的预留字段,所有萌推项目上报的字段都以字母 `x` 开头。比如 `type` 字段,在原始报表中是 `xtype` 字段。 萌推所有业务上报字段的值,均为字符串格式或者 NULL。这个的缘由是原始数据落库处理时会将值根据其数据类型放入不同的字段,比如 `a= 123`,最终落库的数据为 a={int_type=123, long_type=0, float_type=0.0, string_type=0},如果是 `a="xyz"`,落库后成了 a={int_type=0, long_type=0, float_type=0.0, string_type=xyz}。为了清洗数据方便,我们规定所有上报字段都用字符串格式。 ### 通用字段 萌推项目每次上报都使用一些通用字段,通用字段中部分来自集团使用的字段,部分来自项目自定义字段,枚举如下: 字段 | 含义 ----...

# 跨平台APP开发实践(RN、Flutter) ---- ## 0. 前言 ``跨平台的优势``: > * ``真正的原生应用``:产生的不是网页应用,不是混合应用,而是一个原生的移动应用。 > * ``快速开发应用``:相比原生漫长的编译过程,Hot Reload简直不要太爽。 > * ``可随时呼叫原生外援``:完美兼容Java/Swift/OC的组件,一部分用原生一部分用RN来做完全可以。 > * ``跨平台``:一套业务逻辑代码可以稳定运行在两个平台。 > * ``节省劳动力``:为企业节省劳动力。。。(不知道算不算好事儿)。 > * ##### 使用Flutter的应用:闲鱼、美团B端、阿里(FlutterGo、AliFlutter、淘宝特价版)、字节(今日头条、西瓜视频、皮皮虾) * ##### 使用React...

# Electron-萌推IM PC客户端分享 ## 一、Electron ### 1.1、简介 * Electron 可以让你使用纯 JavaScript 调用丰富的原生(操作系统) APIs 来创造桌面应用。 你可以把它看作一个 Node. js 的变体,它专注于桌面应用而不是 Web 服务器端。 * Electron 使用 web 页面作为它的 GUI,所以你能把它看作成一个被 JavaScript 控制的,精简版的 Chromium 浏览器。...

首先我们要弄清楚 `reduxjs` 的思想、作用是什么,这样我们才能开始下一步的构思。在我看来 `reduxjs` 核心就是一种单一数据源的概念,数据存储在一个函数的 `state` 变量中,只能通过固定的方法去修改和获取 `dispatch()、getState()`。 在 SPA 应用中,`reduxjs` 被广泛使用。对数据进行统一管理、实现数据共享,通常组件和组件之间、页面和页面之间可以数据共享。在 `react` 开发中,我经常将共用的数据和异步请求数据存放在 `state` 中。通过 `props` 的形式存在,只要在一个组件中对数据源进行了修改,其他共享的组件都会及时得到更新和渲染UI界面。 现在我们知道了关于 `redux` 的关键思想和用途,接下来我们一步一步实现它。我会按照下面这个列表的顺序给大家详细说明: * createStore * reduce、combineReducers * applyMiddleware * 中间件原理 *...

## 思考 ### 迎接新技术的思考 - 学习成本 考虑团队成员的接纳能力。如果成本小于收益,而且推行阻力较大就算了 - 收益 是否解决当前某些痛点 - 风险 实验阶段不可以放在生产环境 - 实施 对于团队有兴趣的可以自己探索将成果分享出来,如果靠谱再放入实验,最后推广 ### 脚手架和项目模板 工具 - [midou-generate](https://github.com/songxuecc/midou-generate) - 生成React组件, 大部分组件的文件结构差不多, 这个工具就是帮助你生成这些重复的代码 - [jsinspect ](https://zhuanlan.zhihu.com/p/26031868) - 使用...

# 前言 之前自己看了些资料和代码,这里尝试通过实现一个类react的框架,来理解下react的工作流程,写文章也是对自己思路的一个整理,如有谬误还请大家帮忙指出。 # 主要内容 1. 什么是React Element 2. ReactDOM的render实现 3. jsx与React Element 4. React reconcile过程简介 5. React Component实现 6. Fiber简介 7. 基于Fiber的代码实现 # 没有包含的内容 1. 生命周期 2. context 3....

# What forces layout / reflow All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is...

### 前言 js的一个特点是单线程,即浏览器中js引擎中负责解析执行js代码的线程只有一个。这是因为在浏览器环境中,我们常常需要对DOM做各种各样的操作。假设js是多线程的,那么当两个js线程同时对一个DOM进行一项操作,比如线程A希望删除这个DOM,而线程B希望改变其样式,这时就涉及到了复杂的同步问题。因此,为了保证不发生和上述场景类似的问题,js的执行只由一个线程完成。 而js中有许多原生的异步事件,诸如 setTimeout,setInterval,事件监听,Ajax请求等等。那么单线程的js是如何实现异步的呢?其核心在于js的事件循环机制。 ### 宏任务、微任务 每个js线程拥有独立的Event loop,大多数的代码会依据正常的函数调用规则来执行,而遇到特殊的任务源,如 setTimeout/setInterval 则由他们将不同的任务分发到对应的任务队列中。 任务又分为**宏任务(Macrotask)** 与 **微任务(Microtask)** 两种。在浏览器中, 宏任务:包括主代码块,setTimeout/setInterval回调,I/O,UI Rendering等; 如有必要,浏览器会在一个宏任务完成之后,下一个宏任务开始之前,重新渲染页面。 微任务:包括promise回调,MutationObserver回调。 ### 事件循环过程 事件循环的过程可以用下图来表示,概括起来,事件循环的一轮迭代主要包括3个步骤: 1. 从Macrotask队列中取出一个任务执行至结束; 2. 将Microtask队列中的任务依次取出并执行,直到Microtask队列为空; 3. 如果浏览器需要渲染,则重新渲染。 ![event-loop](https://user-images.githubusercontent.com/12581399/56120393-96bebf00-5fa0-11e9-8e69-5232fc06d148.jpg) ###...