前言 我们经常会遇到这样的事情:有时候我们找到了一个库,但是这个库是用 TypeScript 写的,但是我们想在 C# 调用,于是我们需要设法将原来的 TypeScript 类型声明翻译成 C# 的代码,然后如果是 UI 组件的话,我们需要将其封装到一个 WebView 里面,然后通过 JavaScript 和 C# 的互操作功能来调用该组件的各种方法,支持该组件的各种事件等等. 但是这是一个苦力活,尤其是类型翻译这一步. 这个是我最近在帮助维护一个开源 UWP 项目 monaco-editor…
TS (TypeScript)区别于JS (JavaScript)一个最大的不同是TS增加了类型.当一些TS代码要使用JS包的时候,最好这些JS包都有类型介绍,比如这个变量是什么类型,那个函数参数的什么类型,返回什么类型参数等等,这个Type Declaration File有点像是C++的头文件,定义了JS包的接口信息,这个文件的后缀是.d.ts 如果让我们从头手写一个JS包的.d.ts文件会比较痛苦,因为JS包本身就写得很乱,有定义了很多对象,有时候要理清他们之间的关系就是头疼的事情,特别是…
这其实是一个NSInvocation练习作业 GitHub源码 vk_msgSend 引子 工作中难免会遇到一些场景,开发的时候不想引入整个头文件,但是又想调用一些方法 动态创建,动态调用看起来比较酷 这种使用场景确实不常见,导入了头文件最省事,最直接,但是这种方式我觉得能搞出很多好玩的东西 一个群里聊天的时候聊到了一个场景,tableView内的cell有N种样式,在cellForRow的时候,通过NSClassFromString从字符串创建对象,然后挨个对Cell的UI赋值,接下来问题就来…
前言: SVM(支持向量机)一种训练分类器的学习方法 mnist 是一个手写字体图像数据库,训练样本有60000个,测试样本有10000个 LibSVM 一个常用的SVM框架 OpenCV3.0 中的ml包含了很多的ML框架接口,就试试了. 详细的OpenCV文档:http://docs.opencv.org/3.0-beta/doc/tutorials/ml/introduction_to_svm/introduction_to_svm.html mnist数据下载:http://yann.l…
参考了秋风细雨的文章:http://blog.csdn.net/candyforever/article/details/8564746 花了点时间编写出了程序,先看看效果吧. 识别效果大概都能正确. 好了,开始正题: 因为本程序是提取HOG特征,使用SVM进行分类的,所以大概了解下HOG的一些知识,其中我觉得怎么计算图像HOG特征的维度会对程序了解有帮助 关于HOG,我们可以参考: http://gz-ricky.blogbus.com/logs/85326280.html http://bl…
背景: > 一直使用 Newtonsoft.Json.dll 也算挺稳定的. > 但这个框架也挺闹心的: > 1.影响编译失败:https://www.cnblogs.com/zihuxinyu/archive/2013/05/06/3063181.html (我也经常遇到) > 2.WinCE版本(小众用户)太大:Newtonsoft.Json.Compact.dll 352kb > 3.自己写一个微型框架,在通讯方面 要用到Json:一个 100k 的框架,引用一个 40…
查看手写JAVA虚拟机系列可以进我的博客园主页查看. 前面我们介绍了准备工作以及命令行的编写.既然我们的任务实现命令行中的java命令,同时我们知道java命令是将class文件(字节码)转换成机器码,那么我们现在的任务就是读出这个class文件里面的内容. 正文: java虚拟机规范中是没有规定虚拟机该从哪里找类,也就是找class文件的,而oracle的是根据类路径,也就是classpath来搜索类的.搜索的优先级:启动类路径(bootstrap classpath)>扩展类路径(exten…
Http协议 1.深入概念 Http:HyperText Transfer Protocol,即是超文本传输协议. 2.浅出概念(使用浏览器访问服务器端网页时需要遵循的一系列规则) Http:将各种不同浏览器或各种自研客户端的文字信息组织在一起的网状文本数据. 协议:多方一起约定的一系列规则,然后大家活动必须遵循这些规则,就像法律大家必须遵循才能享受法律提供的保护. 举个栗子:我们平时去饭店吃饭通常会有以下几个步骤: 1.坐到合适的座位上. 2.服务员拿出菜单点餐. 3.服务员按照点餐菜单下单.…
扩展手写数字识别应用 识别并计算简单手写数学表达式 主要知识点 了解MNIST数据集 了解如何扩展数据集 实现手写算式计算器 简介 本文将介绍一例支持识别手写数学表达式并对其进行计算的人工智能应用的开发案例.本文的应用是基于前文"手写识别应用入门"中的基础应用进行扩展实现的.本文将通过这一案例,展示基本的数据整理和扩展人工智能模型的过程,以及介绍如何利用手写输入的特性来简化字符分割的过程.并且本文将演示如何利用Visual Studio Tools for AI进行批量推理,以便利用底…
手写数字是32x32的黑白图像.为了能使用KNN分类器,我们需要把32x32的二进制图像转换为1x1024 1. 将图像转化为向量 from numpy import * # 导入科学计算包numpy和运算符模块operator import operator from os import listdir def img2vector(filename): """ 将图像数据转换为向量 :param filename: 图片文件 因为我们的输入数据的图片格式是 32 * 32…
上一节,我们已经学会了基于PyTorch深度学习框架高效,快捷的搭建一个神经网络,并对模型进行训练和对参数进行优化的方法,接下来让我们牛刀小试,基于PyTorch框架使用神经网络来解决一个关于手写数字识别的计算机视觉问题,评价我们搭建的模型的标准是它是否能准确的对手写数字图片进行识别. 其具体的过程是:先使用已经提供的训练数据对搭建好的神经网络模型进行训练并完成参数优化,然后使用优化好的模型对测试数据进行预测,对比预测值和真实值之间的损失值,同时计算出结果预测的准确率.在将要搭建的模型中会使用到…
一 感知器 感知器学习笔记:https://blog.csdn.net/liyuanbhu/article/details/51622695 感知器(Perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1.这种算法的局限性很大: 只能将数据分为 2 类; 数据必须是线性可分的; 虽然有这些局限,但是感知器是 ANN 和 SVM 的基础,理解了感知器的原理,对学习ANN 和 SVM 会有帮助,所以还是值得花些时间的. 感知器可以表示为 f:Rn ->…
基础类型:https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Basic%20Types.html 高级类型:https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Advanced%20Types.html TypeScript 的 基础类型,包括:boolean.number.string.数组.Tuple(元组).enum(枚举).an…
一.问题描述 手写数字被存储在EXCEL表格中,行表示一个数字的标签和该数字的像素值,有多少行就有多少个样本. 一共42000个样本 二.KNN KNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近: K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近…
  最近百度为了推广自家编写对深度学习框架PaddlePaddle不断推出各种比赛.百度声称PaddlePaddle是一个“易学.易用”的开源深度学习框架,然而网上的资料少之又少.虽然百度很用心地提供了许多文档,而且还是中英双语具备,但是最关键的是报错了很难在网上找到相应的解决办法.为了明年备战百度的比赛,便开始学习以下PaddlePaddle. 1.安装 PaddlePaddle同样支持CUDA加速运算,但是如果没有NVIDIA的显卡,那就还是装CPU版本. CPU版本安装:pip insta…
引言 上一篇博客整理了一下SVM分类算法的基本理论问题,它分类的基本思想是利用最大间隔进行分类,处理非线性问题是通过核函数将特征向量映射到高维空间,从而变成线性可分的,但是运算却是在低维空间运行的.考虑到数据中可能存在噪音,还引入了松弛变量. 理论是抽象的,问题是具体的.站在岸上学不会游泳,光看着梨子不可能知道梨子的滋味.本篇博客就是用SVM分类算法解决一个经典的机器学习问题--手写数字识别.体会一下SVM算法的具体过程,理理它的一般性的思路. 问题的提出 人类视觉系统是世界上众多的奇迹之一.看…
简述] 我们在学习编程语言时,往往第一个程序就是打印“Hello World”,那么对于人工智能学习系统平台来说,他的“Hello World”小程序就是MNIST手写数字训练了.MNIST是一个手写数字的数据集,官网是Yann LeCun's website.数据集总共包含了60000行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test),每一个数字的大小为28*28像素.通过利用Tensorflow人工智能平台,我们可以学习到人工智能学习平台是如何通过数据…
一 . tesseract 4.0 安装及使用 1. tesseract 4.0 安装 安装包下载地址: http://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-setup-4.00.00dev.exe 我在CSDN下载资源里也上传了一份: http://download.csdn.net/download/dcrmg/10021168 exe可执行文件直接安装,选择安装路径: 安装完成之后需要添加2个环境变量: 1. 把安装路径"C:\P…
Haskell手撸Softmax回归实现MNIST手写识别 前言 初学Haskell,看的书是Learn You a Haskell for Great Good, 才刚看到Making Our Own Types and Typeclasses这一章. 为了加深对Haskell的理解,便动手写了个Softmax回归.纯粹造轮子,只用了base. 显示图片虽然用了OpenGL,但是本文不会提到关于OpenGL的内容.虽说是造轮子, 但是这轮子造得还是使我受益匪浅.Softmax回归方面的内容参考…
再我们现在项目中Spring框架是目前各大公司必不可少的技术,而大家都知道去怎么使用Spring ,但是有很多人都不知道SpringIoc底层是如何工作的,而一个开发人员知道他的源码,底层工作原理,对于我们对项目的理解是有非常大的帮助的,有可能工作了两三年的中级工程师,乃至四五年的,只知其然,却不知其所以然.我的一个盆友,今年年初以实习生的身份去北京面试 ,面试官让我的朋友说Spring源码,作为一个实习生,就要去知道Spring的源码.虽然我们可以不用知道,也可以做项目,但他会成为我们面试结果…
引言 - 导航栏目 有些朋友可能对 redis 充满着数不尽的求知欲, 也许是 redis 属于工作, 交流(面试)的大头戏, 不得不 ... 而自己当下对于 redis 只是停留在会用层面, 细节层面几乎没有涉猎. 为了更快的融于大 家, 这里尝试抛砖引玉. 先带大家手写个 redis 中最简单的数据结构, adlist 双向链表. 让我们一 起对 redis 有个初步的认知. 本文会从下面几个标题展开解读(吐槽), 欢迎交流和指正. 1. redis adlist 解析 2. redis c…
课程回顾 对象的创建过程 类加载 加载父类,父类的静态变量分配内存 加载子类,子类的静态变量分配内存 父类静态变量赋值运算, 和静态初始化块 子类静态变量赋值运算, 和子类初始化块 创建对象 创建父类对象, 父类的实例变量分配内存 创建子类对象, 子类的实力变量分配内存 父类的实例变量赋值, 父类的构造方法 子类的实例变量赋值 子类的构造方法 接口 作用: 结构设计工具, 解耦合, 隔离实现 本质上是一个抽象类 interface implements 接口可以实现多个 接口之间也可以多继承 内…
实现防抖函数(debounce) 防抖函数原理:在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. 那么与节流函数的区别直接看这个动画实现即可. 手写简化版: // 防抖函数 const debounce = (fn, delay) => { let timer = null; return (...args) => { clearTimeout(timer); timer = setTimeout(() => { fn.apply(this, args); }, del…
手写STL,卡常专用. node为变量类型,可以自由定义,以下不再赘述. 1.stack(栈) 开一个数组,和一个top指针,压栈时++,弹栈时--即可. struct stack{ int tp;node st[N]; node top(){return st[tp];} void push(node x){st[++tp]=x;} void pop(){--tp;} bool empty(){return !tp;} void size(){return tp;} ;} }s; 2.queu…
链表倒转  leetcode-206 连续子数组最大和问题(和最大的连续子序列的和)   leetcode-53 输出字符串中最长的回文子串长度?  leetcode-5 一个字符串,求最长无重复子串的长度?  leetcode-3 最长递增子序列  leetcode-300 反转一个字符串......(手写代码) leetcode-344 数组中存在一个大于n/2次的数,如何以最优方法查找它?LeetCode 169 \ 229 一个字符串中{}  [ ]  ()匹配问题     LeetCo…
本教程创建一个小的神经网络用于手写字符的识别.我们使用MNIST数据集进行训练和测试.这个数据集的训练集包含60000张来自500个人的手写字符的图像,测试集包含10000张独立于训练集的测试图像.你可以参看本教程的Ipython notebook. 本节中,我们使用CNN的模型助手来创建网络并初始化参数.首先import所需要的依赖库. %matplotlib inline from matplotlib import pyplot import numpy as np import os i…
手写简易SpringMVC 手写系列框架代码基于普通Maven构建,因此在手写SpringMVC的过程中,需要手动的集成Tomcat容器 必备知识: Servlet相关理解和使用,Maven,Java 反射,Java自定义注解 配置Web类型结构 结构如图所示: 注意 要设置 webapp为web moudle -> IDEA 有蓝色小圈圈为准,resource 配置为资源文件 配置Web.xml,配置Artifacts,配置文件 <?xml version="1.0" e…
本文已经收录进 : https://github.com/Snailclimb/netty-practical-tutorial (Netty 从入门到实战:手写 HTTP Server+RPC 框架). 相关项目:https://github.com/Snailclimb/jsoncat (仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架) 目前正在写的一个叫做 jsoncat 的轻量级 HTTP 框架内置的 HTTP 服务器是我自己基于 Netty…
一. 介绍 一周前,老同学阿立给我转了一篇知乎回答,答主说检验一门语言是否掌握的标准是实现一个Json解析器,网易游戏过去的Python入门培训作业之一就是五天时间实现一个Json解析器. 知乎回答---链接 该回答对应的问题提及了一个开源的"从零开始的JSON库教程",恰好我刚开始学习go语言,对Json的理解也仅停留在一种端到端之间交互的数据格式,于是便跟着教程写了一遍,受益良多,至少对我这种编程经验少的人来说十分有帮助,以下是我的学习心得. 从零开始的JSON库教程地址---链接…
手写开源ORM框架介绍 简介 前段时间利用空闲时间,参照mybatis的基本思路手写了一个ORM框架.一直没有时间去补充相应的文档,现在正好抽时间去整理下.通过思路历程和代码注释,一方面重温下知识,另一方面准备后期去完善这个框架. 传统JDBC连接 参照传统的JDBC连接数据库过程如下,框架所做的事情就是把这些步骤进行封装. // 1. 注册 JDBC 驱动 Class.forName(JDBC_DRIVER); // 2. 打开链接 conn = DriverManager.getConnec…