h2

HTML5游戏开发实例

妖精的绣舞 提交于 2020-04-06 18:34:21
开发工具: vscode 一、人物拼图游戏 游戏介绍: 拼图游戏将一幅图片分割成若干拼块并将它们随机打乱顺序。当将所有拼块都放回原位置时,就完成了拼图(游戏结束)。 在“游戏”中,单击滑块选择游戏难易,“容易”为3行3列拼图游戏,中间为一个4行4列拼图游戏,“难”为5行5列拼图游戏。拼块以随机顺序排列,玩家用鼠标单击空白块的四周来交换它们的位置,直到所有拼块都回到原位置。 程序设计思路: HTML5可以把图片整合到网页中。使用canvas元素可以在这个空白的画布上填充线条,载入图片文件,甚至动画效果。这里制作拼图游戏用来展示HTML5 canvas的图片处理能力。 游戏程序首先显示以正确顺序排列的图片缩略图,根据玩家设置的分割数,将图片订割成相应tileCount行列数的拼块,并按顺序编号。动态生成一个大小tileCount tileCount,的数组boardParts,存放用0、1、2到tileCount tileCount-1的数,每个数字代表一个拼块(例如4*4的游戏拼块编号如图所示)。 游戏开始时,随机打乱这个数组boardParts,假如boardParts[0]是5,则在左上角显示编号是5的拼块。根据玩家用鼠标单击的拼块和空白块所在位置,来交换该boardParts数组对应的元素,最后依据元素排列顺序来判断是否已经完成游戏。 游戏参考代码: sliding.js

一文读懂滤波器的线性相位,全通滤波器,群延迟

情到浓时终转凉″ 提交于 2020-04-06 18:26:34
一文读懂滤波器的线性相位,全通滤波器,群延迟 1. 延迟 2. 全通滤波器 3.相位延迟和群延迟 4. 实际生活中的例子 总结: 数字信号处理最常见的面试题,请简述FIR和IIR的区别。其中的一个区别是FIR可以方便地实现线性相位。那这个线性相位指的是什么呢?本篇博客通过两个例子, 延迟 和 全通滤波器 ,来解释这些概念。 先说结论: 线性相位能保证信号中各频率成分的相对相位关系不改变。 通俗解释是: 信号经过线性相位滤波器后,各个频率分量的延时时间是一样的 。 1. 延迟 举一个最简单的FIR的例子,延迟。假设16kHz的采样频率,一个采样周期的延迟,可以用FIR来表示。利用Matlab来观看这个滤波器的频率响应,代码如下。采样频率为Fs = 16kHz, 采样周期为Ts,Ts = 1/Fs。 num = [0,1] den = [1,0] fvtool(num,den) 下图中,蓝色的实线表示的幅频响应,为0dB。红色实线表示相频响应,主要看相频响应。图中对1k,2k,4kHz频点的横纵坐标有截图,16kHz采样率下,1kHz的正弦信号一个完整的周期(这里说的周期指的是 2 π 2\pi 2 π )内会得到16个采样值。一个采样周期的延迟,带来的相位变化是 − 2 π / 16 = − π / 8 = − 22.5 ° -2\pi/16=-\pi/8=-22.5\degree

Java基础知识回顾之五 ----- 多线程

强颜欢笑 提交于 2020-04-06 18:15:51
前言 在 上一篇 文章中,回顾了Java的集合。而在本篇文章中主要介绍 多线程 的相关知识。主要介绍的知识点为线程的介绍、多线程的使用、以及在多线程中使用的一些方法。 线程和进程 线程 表示进程中负责程序执行的执行单元,依靠程序进行运行。线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。 进程 表示资源的分配和调度的一个独立单元,通常表示为执行中的程序。一个进程至少包含一个线程。 进程和线程的区别 进程至少有一个线程;它们共享进程的地址空间;而进程有自己独立的地址空间; 进程是资源分配和拥有的单位,而同一个进程内的线程共享进程的资源; 线程是处理器调度的基本单位,但进程不是; 生命周期 线程和进程一样分为五个阶段: 创建 、 就绪 、 运行 、 阻塞 和 终止 。 新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序start() 这个线程。 就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。 运行状态:如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。 阻塞状态:如果一个线程执行了sleep(睡眠)、suspend

bash-shell高级编程--退出和退出状态码

▼魔方 西西 提交于 2020-04-06 18:15:36
退出和退出状态码 大家都知道 exit 是用来退出一个脚本,既可以使用 exit 来结束一个脚本,像常用的C语言一样,它也会返回一个值,这个值会传递给脚本的父进程,父进程会使用这个值做下一步的处理。 其实在 linux 中执行任何一个命令都会返回一个退出码,成功的命令返回0,而不成功的命令返回非零值,非零值通常通常都会解释成一个错误码。 当然脚本中的函数和脚本本身也会返回退出状态码,在脚本中最后执行的命令决定脚本返回的状态码(就是exit之前的命令) #!/bin/bash tldr ls . . . # 在执行exit之前的一个命令决定脚本返回值状态码值 ls -l name exit # exit $? 不带参数的exit命令和exit $?的效果是一样的,就算你在脚本的末尾不写exit效果也是一样的 bash 脚本中 $? 保存这最后执行命令的退出状态码,当函数返回之后, $? 同样保存函数中最后执行的命令的退出状态码,这就是 bash 对函数返回值的处理方法,同样,当一个脚本退出 $? 保存了脚本的退出状态码,这个退出状态码就是脚本中最后执行的命令的退出状态码。 #!/bin/bash echo hello echo $? # 退出状态为0, 因为命令执行成功. lskdf # 无效命令. echo $? # 非零的退出状态, 因为命令执行失败. echo exit 113

SharePoint 混合单点--使用密码同步身份--解决同步问题

女生的网名这么多〃 提交于 2020-04-06 18:08:07
SharePoint 混合单点--使用密码同步身份--解决同步问题 解决方法导航图 解决方法说明: Azure AD Connect跟踪日志 查看Azure AD Connect跟踪日志,了解安装Azure AD Connect期间发生的任何警告或错误。这些警告([WARN])和错误([ERROR])是与所选配置选项和权限相关的潜在问题的第一个迹象。 您可以在 C:\ Users \%username%\ AppData \ Local \ AADConnect \ traceyyyymmdd- xxxxx.log中 找到跟踪日志文件,其中yyyymmdd-xxxxx.log是文件的名称。 新服务请求 Office 365具有服务请求工具,您可以在执行初始故障排除后提交针对您遇到的特定问题的服务请求。要在Office 365中提交新的服务请求,请转到 Office 365管理中心 ,然后在左侧的窗格中展开“ 支持” ,然后单击“ 服务请求” 。单击+(加号)以创建新的服务请求。对于目录同步问题,请选择 Identity Management 。 不合规的目录对象 通过在新文件夹中运行IdFix来重新检查任何目录对象(用户,组和联系人)错误,以获取有关潜在错误的新报告。实现修复,然后重新运行IdFix工具,以确保您的目录从IdFix工具报告的所有错误中清除。 故障排除工具

Docker的上手(Ubuntu140.4 Mate)

核能气质少年 提交于 2020-04-06 18:02:31
首先按照官网运行https://docs.docker.com/engine/installation/linux/ubuntu/#prerequisites 然后不知道怎么用,然后需要 安装Docker-Compose(需要先安装docker) 1. Go to the Compose repository release page on GitHub . 2. Follow the instructions from the release page and run the curl command, which the release page specifies, in your terminal. 【“Permission denied” Run sudo -i, then the two commands below, then exit.】 3. An example command illustrating the format,Apply executable permissions to the binary.Test the installation. 1 2 curl -L https: //github .com /docker/compose/releases/download/1 .8.1 /docker-compose- ` uname -s`-`

Java基础知识回顾之四 ----- 集合List、Map和Set

女生的网名这么多〃 提交于 2020-04-06 17:58:34
前言 在 上一篇 中回顾了Java的三大特性:封装、继承和多态。本篇则来介绍下集合。 集合介绍 我们在进行Java程序开发的时候,除了最常用的基础数据类型和String对象外,也经常会用到集合相关类。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用。 集合类型主要有3种:List、Set、和Map。 它们之间的关系可用下图来表示: 注:Map不是collections的子类,但是它们完全整合在集合中了! List List 接口是继承于 Collection接口并定义 一个允许重复项的有序集合。该接口不但能够对列表的一部分进行处理,还添加了面向位置的操作。 一般来说,我们在单线程中主要使用的List是ArrayList和LinkedList来实现,多线程则是使用Vector或者使用Collections.sychronizedList来装饰一个集合。 这三个的解释如下: ArrayList:内部是通过数组实现的,它允许对元素进行快随机访问。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。 LinkedList: 则是链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢。另外,他还提供了List接口中没有定义的方法

Redis集群搭建详细指南

泄露秘密 提交于 2020-04-06 17:44:28
原文出处: https://www.cnblogs.com/mafly/p/redis_cluster.html Redis 集群简介 Redis 是一个开源的 key-value 存储系统,由于出众的性能,大部分互联网企业都用来做服务器端缓存。Redis 在3.0版本前只支持单实例模式,虽然支持主从模式、哨兵模式部署来解决单点故障,但是现在互联网企业动辄大几百G的数据,可完全是没法满足业务的需求,所以,Redis 在 3.0 版本以后就推出了集群模式。 Redis 集群采用了P2P的模式,完全去中心化。Redis 把所有的 Key 分成了 16384 个 slot,每个 Redis 实例负责其中一部分 slot 。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。 Redis 客户端可以在任意一个 Redis 实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。 随随便便搭建一个集群 安装部署任何一个应用其实都很简单,只要安装步骤一步一步来就行了。下面说一下 Redis 集群搭建规划,由于集群至少需要6个节点(3主3从模式),所以,没有这么多机器给我玩,我本地也起不了那么多虚拟机(电脑太烂),现在计划是在一台机器上模拟一个集群,当然,这和生产环境的集群搭建没本质区别。 我现在就要在已经有安装了 Redis 的一个

docker探索-swarm搭建docker集群

倾然丶 夕夏残阳落幕 提交于 2020-04-06 17:33:48
原文出处: http://www.cnblogs.com/520playboy/p/7873903.html 前言 Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令,docker swarm是创建服务器集群的工具,只需要几条命令就可以创建一个服务器集群。它内置一些服务器集群需要的工具,比如说:服务查找,网络,负载均衡等等 一、环境 centos 7.3 Docker version 1.12.6 ip 角色 192.168.6.130 manager 192.168.6.131 worker 192.168.6.132 worker 二、集群 2.1、在192.168.6.130中,初始化集群 [root@jacky jacky]# docker swarm init --advertise-addr 192.168.6.130:2377 Swarm initialized: current node (4devzwb6rpimfpteqr17h2jx9) is now a manager. To add a worker to this swarm, run the following command: docker swarm join \ -

shell高级编程--引用

人盡茶涼 提交于 2020-04-06 17:30:09
引用 在shell中,引用的意思就是时讲字符串使用双拥好括起来,他的作用就是保护字符串中的特殊字符、不被shell或者shell脚本重新解释,或者扩展。 andrew@andrew:~$ ls -l [ Ss ] * -rwx------ 1 andrew andrew 3849 1月 19 01:07 sources.list andrew@andrew:~$ ls -l "[Ss]*" ls: 无法访问 '[Ss]*' : 没有那个文件或目录 andrew@andrew:~$ 某些程序和工具能够重新解释或者扩展被引用的特殊字符,引用的一个重要的作用就是保护命令行参数不被shell解释,但是还是能够让调用的程序来扩展它。 点赞 收藏 分享 文章举报 Achou.Wang 博客专家 发布了370 篇原创文章 · 获赞 153 · 访问量 34万+ 他的留言板 关注 来源: oschina 链接: https://my.oschina.net/u/4406332/blog/3216126