20180228杂记

字节码与IL语言

字节码(Byte-code)是一种包含执行程序,由一序列 op 代码/数据对组成的二进制文件,是一种中间码。字节是电脑里的数据量单位。

 

可空类型Nullable到底是什么鬼

http://blog.jobbole.com/102293/

============================

脚本语言(Script languages,scripting programming languages,scripting languages)是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。虽然许多脚本语言都超越了计算机简单任务自动化的领域,成熟到可以编写精巧的程序,但仍然还是被称为脚本。几乎所有计算机系统的各个层次都有一种脚本语言。包括操作系统层,如计算机游戏,网络应用程序,文字处理文档,网络软件等。在许多方面,高级编程语言和脚本语言之间互相交叉,二者之间没有明确的界限。一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个Shell脚本主要由原本需要在命令行输入的命令组成,或在一个文本编辑器中,用户可以使用脚本来把一些常用的操作组合成一组序列。主要用来书写这种脚本的语言叫做脚本语言。很多脚本语言实际上已经超过简单的用户命令序列的指令,还可以编写更复杂的程序。

脚本语言:命令序列,有语句有类型变成复杂语言。

最简单的脚本语言是命令,command模式,if逻辑判断。宏就是命今录制或命令序列。批次处理语言或工作控制语言或自动化。

各个层面都有自己的脚本,来解决灵活性问题,动态语言,操作系统是powershell,word也有vbs,lua是C的,js是流览器的。数据库SQL.

动静结合。

语言编写和运作:编写=》编译=》运作(操作系统支持),前两步放一起(程序员编写阶段)叫静态语言,后两个放在一起叫动态语言或脚本语言或解释型语言。

编写=》编译=》中间语言(运行时JVM/.net runtime)=》运作(操作系统支持)中间语言是为了解决跨平台问题,如webassembly,或字节码,或IL,整个过程分为四步,两边都占好。

 

 

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。

 

语言编写可经编译成另外一种动态语言,或别一个中间语言,或另一种静态语言。

动态:灵活,单小生产效率高,较难统一、较难大型。运行慢一些。扩建的语言/脚本/动态。方便修改,部署。自带工具。

静态语言:严谨,大工程,整体生产效率高。不够灵活。运行快。需要工具。

 

================================================

WebAssembly入门:将字节码带入Web世界

 

【技术分享】WebAssembly入门:将字节码带入Web世界

使用js vm支持的语言,编写=》编译(工具,人可以写,任何语言)=》中间语言(byte语言,机器好识/运行时JVM/.net runtime)=》运作(操作系统支持)

http://www.360zhijia.com/360anquanke/192092.html

WebAssembly与基于MS ActiveX/Adobe Flash/Orcale Java Applet/MS Silverlight/Google NaCl

Mozilla发布了asm.js

http://www.360zhijia.com/360anquanke/192092.html

 

http://v.youku.com/v_show/id_XODAzOTY1MTM2.html

 

===========================

http://www.cnblogs.com/zhycyq/articles/2679017.html

 

C# Monitor Wait()和Pulse()

 

事件通知机制,开门方式。每个线程一个变量

wait(object),object将关联 thread、等待队列wait queue, 就绪队列 read queue

 

 

Assembly code

|- 拥有锁的线程 lockObj->|- 就绪队列(ready queue) |- 等待队列(wait queue)

当一个线程尝试着lock一个同步对象的时候,该线程就在就绪队列中排队。一旦没人拥有该同步对象,就绪队列中的线程就可以占有该同步对象。这也是我们平时最经常用的lock方法。
为了其他的同步目的,占有同步对象的线程也可以暂时放弃同步对象,并把自己流放到等待队列中去。这就是Monitor.Wait。由于该线程放弃了同步对象,其他在就绪队列的排队者就可以进而拥有同步对象。

比起就绪队列来说,在等待队列中排队的线程更像是二等公民:他们不能自动得到同步对象,甚至不能自动升舱到就绪队列。而Monitor.Pulse的作用就是开一次门,使得一个正在等待队列中的线程升舱到就绪队列;相应的Monitor.PulseAll则打开门放所有等待队列中的线程到就绪队列。

 

http://www.cnblogs.com/zhycyq/articles/2679017.html

ManualResetEvent(手动重事件)和AutoResetEvent(自动重置事件)

ManualResetEvent 是一线程用来控制别一个线程的信号(广义的notity与pv是否有关呢,一个生产,一个消费,一个buffer)

 

 

ManualResetEvent 对象的两个控制方法。

1、this.manualEvent.Reset(); //将事件状态设置为非终止状态,导致线程阻止。(进入等待队列)

2、this.manualEvent.Set();   //将事件状态设置为终止状态,允许一个或多个等待线程继续。(进入就绪队列)

事件等待和通知。wait和notify

P就是请求资源,V就是释放资源。开门操作,门伐操作。


在计算机操作系统中,PV操作是进程管理中的难点。
首先应弄清PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程,操作系统级别,非硬件级别,非应用级别),对信号量进行操作,具体定义如下:
    P(S):①将信号量S的值减1,即S=S-1;
           ②如果S³0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
    V(S):①将信号量S的值加1,即S=S+1;
           ②如果S>0,则该进程继续执行;否则释放队列中第一个等待信号量的进程。
PV操作的意义:我们用信号量及PV操作来实现进程的同步和互斥。PV操作属于进程的低级通信。
什么是信号量?信号量(semaphore)的数据结构为一个值和一个指针,指针指向等待该信号量的下一个进程。信号量的值与相应资源的使用情况有关。当它的值大于0时,表示当前可用资源的数量;当它的值小于0时,其绝对值表示等待使用该资源的进程个数。注意,信号量的值仅能由PV操作来改变。

     一般来说,信号量S³0时,S表示可用资源的数量。执行一次P操作意味着请求分配一个单位资源,因此S的值减1;当S<0时,表示已经没有可用资源,请求者必须等待别的进程释放该类资源,它才能运行下去。而执行一个V操作意味着释放一个单位资源,因此S的值加1;若S£0,表示有某些进程正在等待该资源,因此要唤醒一个等待状态的进程,使之运行下去。

 

semaphore:控制并发线程数,信号工具类。

https://www.cnblogs.com/litaoyang/p/6606499.html

生产消费,多个生产消费者,buffer是缓冲区。搬砖和马路,车位,交通信号灯。

搬砖:100个人搬砖进来in, 100个人搬砖出去out,buffer是只能有50块砖。

厕所坑位:10个人进来in, 10个人出去out,buffer是5个坑位。即达到了控制线程数。

 

Semaphore 类(操作系内核级别是应用级别来控制呢)

限制可同时访问某一资源或资源池的线程数。

https://msdn.microsoft.com/zh-cn/library/system.threading.semaphore.aspx

============================

如何制定计划

https://baike.baidu.com/item/%E8%AE%A1%E5%88%92/2696339?fr=aladdin

 

 

 

预算是计划之后,是行动和计划在财务上的体现。

 

 

https://wenku.baidu.com/view/2973e793f524ccbff12184a4.html?from=search

===========================

mysql:

http://www.runoob.com/mysql/mysql-data-types.html

操作系统linux, 语言java,数据库mysql,三大框架ssm, spring.aop, spring.web, mybatis

http://www.runoob.com/

 

=======================

https://www.sohu.com/a/137041344_721043/?pvid=000115_3w_a

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【标题】"语音识别的一个matlab程序"是一个与语音处理和模式识别技术相关的项目,它使用MATLAB编程语言实现。MATLAB是MathWorks公司开发的一种数值计算和数据可视化环境,广泛应用于工程、科学和数学领域,尤其在信号处理和机器学习方面有很强的功能。 【描述】提到的"在一个网站看到,大家分享一下"表明这是一个社区共享的资源,可能来源于一个在线论坛或编程交流平台。这样的共享行为旨在促进技术交流和学习,让其他对语音识别感兴趣的用户能够参考、学习和改进代码。 【标签】"语音识别"是这个项目的关键词,意味着该程序涉及将人类语音转化为文本或命令的过程。语音识别技术的核心是将音频信号转换为可理解的数据,这通常包括预处理、特征提取、模型训练和匹配等步骤。 在提供的【压缩包子文件的文件名称列表】中,我们可以推断出这个MATLAB程序的组成部分: 1. `demo.m`:通常是演示脚本,用于展示程序的主要功能和用法,用户可以通过运行这个文件快速了解程序的工作原理。 2. `.p` 文件(melfb.p, mfcc.p, vqlbg.p, disteu.p, test.p, blockFrames.p, train.p):这些是MATLAB的编译函数文件,可能包含特定的算法实现,如梅尔频率倒谱系数(MFCC)提取、声学建模、距离计算、训练和测试等功能。例如: - `melfb.p` 可能实现了梅尔滤波器组,用于对语音信号进行频谱分析。 - `mfcc.p` 可能负责MFCC的计算,这是语音识别中常用的特征提取方法。 - `train.p` 和 `test.p` 可能分别对应模型的训练和测试过程。 3. `Read Me.txt`:通常包含关于如何使用、配置和运行程序的说明和指导。 4. `www.pudn.com.txt`:可能指向源文件的下载地址或发布者的信息,PUDN(太平洋下载网)是一个提供各类资源下载的网站。 这个MATLAB程序可能涵盖了语音识别的完整流程,包括预处理、特征提取、模型训练和评估。通过运行`demo.m`,用户可以体验整个识别过程,并可根据源代码深入了解语音识别的实现细节。对于学习和研究语音识别技术的人来说,这是一个宝贵的实践资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值