Sky Lan

Sky Lan

Hang Zhou, Zhe Jiang
14 posts
Chore

VSCode Task Config

When authoring tasks  configurations, it is often useful to have a set of predefined common  variables. VS Code supports variable substitution inside strings in the tasks.json file and has the  following predefined variables: ${workspaceRoot} VSCode中打开的文件夹的路径${file} 当前打开的文件路径${relativeFile} 当前打开的文件相对于workspaceRoot的路径${fileBasename} 当前打开的文件的basename${fileDirname} 当前打开的文件的文件夹名$

  • Sky Lan
    Sky Lan
AI

HMM简介

HMM简介 HMM(Hidden Markov Model): 隐式马尔科夫模型。 HMM模型可以应用在很多领域,所以它的模型参数描述一般都比较抽象,以下篇幅针对HMM的模型参数介绍直接使用它在中文分词中的实际含义来讲: HMM的典型介绍就是这个模型是一个五元组: StatusSet: 状态值集合 ObservedSet: 观察值集合 TransProbMatrix: 转移概率矩阵 EmitProbMatrix: 发射概率矩阵 InitStatus: 初始状态分布 HMM模型可以用来解决三种问题: 参数(StatusSet, TransProbMatrix, EmitRobMatrix, InitStatus)已知的情况下,求解观察值序列。(Forward-backward算法) 参数(ObservedSet, TransProbMatrix, EmitRobMatrix, InitStatus)已知的情况下,求解状态值序列。(viterbi算法) 参数(ObservedSet)已知的情况下,求解(TransProbMatrix, EmitRobMatrix, InitStatus)

  • Sky Lan
    Sky Lan
AI

Epoch & Batch_size & Iterations

0x00 前言 在进行机器学习训练的时候,我们会在TF/TORCH中输入各种训练参数,其中关于迭代次数的参数有Epoch,Batch_size和Iterations,这几个参数的作用是什么?有什么样的作用?关系又是什么?笔者将简单给大家解释一下 0x01 基本概念 想要搞清楚Epoch & Batch_size & Iterations之间有什么关系,先给大家普及一些基本概念和知识,大段的讲述各种能够google到的基础知识就不讲了,如果有兴趣可以自行查询。 梯度下降(Gradient Descent) 梯度下降是一个利用不断迭代来优化并找到最优解的算法(求一个曲线的最值)。 我们来分析一下这句话: 梯度:坡度倾角或偏差变化的速率(the rate of inclination or declination of a slope)。 下降:是一个正在发生下降变化的事实(the instance

  • Sky Lan
    Sky Lan
Chore

BC Crack

Original key: keexjEP3t4Mue23hrnuPtY4TdcsqNiJL-5174TsUdLmJSIXKfG2NGPwBL6vnRPddT7tH29qpkneX63DO9ECSPE9rzY1zhThHERg8lHM9IBFT+rVuiY823aQJuqzxCKIE1bcDqM4wgW01FH6oCBP1G4ub01xmb4BGSUG6ZrjxWHJyNLyIlGvOhoY2HAYzEtzYGwxFZn2JZ66o4RONkXjX0DF9EzsdUef3UAS+JQ+fCYReLawdjEe6tXCv88GKaaPKWxCeaUL9PejICQgRQOLGOZtZQkLgAelrOtehxz5ANOOqCaJgy2mJLQVLM5SJ9Dli909c5ybvEhVmIC0dc9dWH+ Replace with: N9KmiLVlKMU7RJqnE+WXEEPI1SgglmfmLc1yVH7dqBb9ehOoKG9UE+HAE1YvH1XX2XVGeEqYUY-Tsk7YBTz0WpSpoYyPgx6Iki5KLtQ5G-aKP9eysnkuOAkrvHU8bLbGtZteGwJarev03PhfCioJL4OSqsmQGEvDbHFEbNl1qJtdwEriR+VNZts9vNNLk7UGfeNwIiqpxjk4Mn09nmSd8FhM4ifvcaIbNCRoMPGl6KU12iseSe+w+1kFsLhX+OhQM8WXcWV10cGqBzQE9OqOLUcg9n0krrR3KrohstS9smTwEx9olyLYppvC0p5i7dAx2deWvM1ZxKNs0BvcXGukR+ It’s easy to do that by using a command sed -i "s/keexjEP3t4Mue23hrnuPtY4TdcsqNiJL-5174TsUdLmJSIXKfG2NGPwBL6vnRPddT7tH29qpkneX63DO9ECSPE9rzY1zhThHERg8lHM9IBFT+rVuiY823aQJuqzxCKIE1bcDqM4wgW01FH6oCBP1G4ub01xmb4BGSUG6ZrjxWHJyNLyIlGvOhoY2HAYzEtzYGwxFZn2JZ66o4RONkXjX0DF9EzsdUef3UAS+JQ+fCYReLawdjEe6tXCv88GKaaPKWxCeaUL9PejICQgRQOLGOZtZQkLgAelrOtehxz5ANOOqCaJgy2mJLQVLM5SJ9Dli909c5ybvEhVmIC0dc9dWH+/N9KmiLVlKMU7RJqnE+WXEEPI1SgglmfmLc1yVH7dqBb9ehOoKG9UE+HAE1YvH1XX2XVGeEqYUY-Tsk7YBTz0WpSpoYyPgx6Iki5KLtQ5G-aKP9eysnkuOAkrvHU8bLbGtZteGwJarev03PhfCioJL4OSqsmQGEvDbHFEbNl1qJtdwEriR+VNZts9vNNLk7UGfeNwIiqpxjk4Mn09nmSd8FhM4ifvcaIbNCRoMPGl6KU12iseSe+w+1kFsLhX+OhQM8WXcWV10cGqBzQE9OqOLUcg9n0krrR3KrohstS9smTwEx9olyLYppvC0p5i7dAx2deWvM1ZxKNs0BvcXGukR+/g" BCompare Grant

  • Sky Lan
    Sky Lan
Chore

Git自动生成Git Log

如果你的所有 Commit 都符合 Angular 格式,那么发布新版本时, Change log 就可以用脚本自动生成。 生成的文档包括以下三个部分。 New features Bug fixes Breaking changes. 每个部分都会罗列相关的 commit ,并且有指向这些 commit 的链接。当然,生成的文档允许手动修改,所以发布前,你还可以添加其他内容。 conventional-changelog 就是生成 Change log 的工具,运行下面的命令即可。 $ npm install -g conventional-changelog $ cd my-project $ conventional-changelog -p angular -i CHANGELOG.md -w

  • Sky Lan
    Sky Lan
V8

看了Js引擎之后の随想

有时编写 Web 应用的代码会感觉充满魔力,因为我们只是写了一系列字符,就能在浏览器里看到效果了。但是理解魔法背后的技术,可以帮助你更好地提高编程技巧。至少当你试 图解释在 JavaScript 驱动的 web 或移动应用的幕后发生了什么的时候,会觉得自己不那么白痴了。 尝试向工程师解释 NativeScript 是如何通过 JavaScript 引擎在幕后工作、 在运行时连接调用原生的 APIs——面对这样一件复杂的工作很容易在一片杂草中迷失方向。事实上,任何 JavaScript 开发者都应该对我们每天使用的这门技术基础的引擎感到好奇。现在我们一起来仔细分析下 JavaScript 引擎到底做了什么,为什么不同的平台使用不同引擎,多年来它们是如何发展的,以及作为开发者我们为什么要关注这些。 首先,一些专业术语“JavaScript 引擎”通常被称作一种 虚拟机。“虚拟机”是指软件驱动的给定的计算机系统的模拟器。有很多类型的虚拟机,它们根据自己在多大程度上精确地模拟或代替真实的物理机器来分类。 例如,“系统虚拟机”

  • Sky Lan
    Sky Lan
V8

JS 引擎 V8 Parser 源码分析

V8 对 js 的脚本的处理流程大体分为 : parser 生成抽象语法树,这里将每一句 js 语句(statement) 生成为一个节点 本地代码引擎将抽象语法树生成对应的二进制代码,依次 取出每个节点,不同类型的节点有着不同代码生成方法 执行,遇到新的函数调用再次启动这个过程(这时 是 lazy_parser) 本文所研究的正是这个流程第一步。 V8 parser 处理脚本的层次 进入 FunctionLiteral* MakeAST(...),这里分辨出要处理时 json 还是普通的 js 脚本,普通 的 js 脚本通过调用 parser.ParseProgram(...)处理 进入 FunctionLiteral* Parser::ParseProgram(

  • Sky Lan
    Sky Lan
Mobile

Activity、Task、应用和进程

一、问题的提出 1. 谁负责管理Activity? Android的framework框架中采用C/S的方式实现由后台服务ActivityManagerService(很多书上将其简称为Ams)来管理具体的Acitivity实例,虽然Ams命名为ActivityManagerService,但是它其实不仅仅管理Activity,他还管理除Acitvity外的其它三大组件,还包括Intent、pendingintent、apk进程和task等等,具体可以查看源码frameworks\base\services\java\com\android\server\am下面的Ams源码和相关的*Record类。 网上资料显示在2.3以后的SDK中,Ams将原来的HistoryRecord类重新命名为ActivityRecord类,并将其原来Ams中的一些处理抽出来成为一个ActivityStack类,每一个Activity实例对应一个ActivityRecord对象,并存放在ActivityStack中,手机一旦启动,就会启动一个Ams服务,在Ams服务中有一个ActivityStack实例专门管理手机上的ActivityRecord实例。这样一来,不具体分析源码,仅从架构角度来说谁负责管理Activity的问题就清晰多了。 2. Task到底是什么? 根据对上面问题的解答,既然Activity是由Ams通过ActivityStack来管理的,那么这个Task又是干什么的呢? 以往基于应用(application)的程序开发中,程序具有明确的边界,

  • Sky Lan
    Sky Lan
Mobile

Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()

一、前言 Android中触摸事件传递过程中最重要的是**dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()**方法。这个是困扰初学者的问题之一,我开始也是。这里记录一下dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()的处理过程,以供记忆。 二、函数功能 dispatchTouchEvent是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行super.dispatchTouchEvent(ev),事件向下分发。 onInterceptTouchEvent是ViewGroup提供的方法,默认返回false,返回true表示拦截。 onTouchEvent是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。 View里,有两个回调函数: public boolean dispatchTouchEvent(MotionEvent ev); public boolean onTouchEvent(MotionEvent ev)

  • Sky Lan
    Sky Lan
Mobile

Activity Manager Service总结

一、涉及的主要类及解释 ActivityManagerService.java Android系统服务,Activity管理的服务端,用于管理activity的各种行为,控制activity的生命周期,派发消息事件,低内存管理等等。实现了IBinder接口,可以用于进程间通信。 ApplicationThread.java 实现了IBinder接口,activity整个框架中客户端和服务端(Ams)通信的接口。同时也是类ActivityThread的内部类。这样就有效地把Ams和ActivityThread绑在了一起。代理模式 ? 有点像。 ActivityThread.java 如第2点所述,ApplicationThread所绑定的客户端就是ActivityThread。ActivityThread这个类在Activity客户端非常重要。 * 它是应用程序的入口,众所周知,java程序的入口时 main() 方法,同样,当AMS拉起一个新的进程,同时启动一个主线程的时候,主线程就从ActivityThread.main方法开始执行,它会初始化一些对象,然后自己进入消息等待队列, 也就是Looper.loop(),一旦进入loop()方法,线程就进入了死循环,

  • Sky Lan
    Sky Lan