在js中仿java的枚举类型设计实例

简介

在javascript中,像EventTarget.addEventListener(),Document.createElement() 等方法,只接收指定字符串作为参数。比如:

const okButton = document.getElementById("button_ok");
okButton.addEventListener('click', () => console.log('button_ok clicked!'), false);

在上述代码中,我们必须按Events 中所定义的类型字符串(如:click, load)传参,否则程序就不能正常工作。本文将介绍如何通过object,class两种封装形式,分别实现枚举类型。
Continue reading →

使用opencv查找两张图片不同的部分

简介

有一款游戏叫《大家一起来找茬》不知道大家有没有玩过,就是给出2张相似图片,在规定的时间内找出图片上有几处不同并标记出来。本文将介绍如何通过opencv替代肉眼快速找出准确的答案。

材料准备

  • 通过搜索引擎,找出要比较的素材。如下
    找茬素材1
  • 将素材裁剪成2张图片
// ubuntu 系统命令裁剪
convert -crop 50%x100% image01.jpg image01.png

上面命令将生成image01-0.png和image01-1.png两张图片,至今素材准备完毕
Continue reading →

使用JAVA的ExecutorService来限制线程数量

前言

诸如利用多线程并行访问数据库可以提高系统的并发性能,但是线程变多伴随而来的是,当线程数大于DBMS(数据库管理系统)设置的最大DB连接数时,程序就挂掉了。在JAVA中如何避免这种问题呢?

解决方法

使用ExecutorService,限制最大线程数量

ExecutorService是?

ExecutorService是JAVA标准的并行计算库[java.util.concurrent]里包含的接口,封装原来难以使用的JAVA线程,使其简单化。

Continue reading →

spring boot定制个性化命令

前言

使用过lumen(php)框架的朋友,大概都接触过artisan工具。按框架所给过的规范,可以轻松定制自己业务所用到的命令集成到框架里。如下图汉字部分所示
lumen artisan
当想执行想要用到的业务命令时,只需要执行对应的命令

php artisan build.es.plazas.config //刷新全部广场配置

是不是很直观,那么在spring boot中,我们要如何实现类似功能呢?
Continue reading →