2019-10-19 14:29
前沿
在文章NLP(十七)利用tensorflow-serving部署kashgari模型中,笔者介绍了如何利用tensorflow-serving部署来部署深度模型模型,在那篇文章中,笔者利用kashgari模块实现了经典的BERT+Bi-LSTM+CRF模型结构,在标注了时间的文本语料(大约2000多个训练句子)中也达到了很好的识别效果,但是也存在着不足之处,那就是模型的预测时间过长,平均预测一个句子中的时间耗时约400毫秒,这种预测速度在生产环境或实际应用中是不能忍受的。
查看该模型的耗时原因,很大一部分原因在于BERT的调用。BERT是当下最火,知名度最高的预训练模型,虽然会使得模型的训练、预测耗时增加,但也是小样本语料下的最佳模型工具之一,因此,BERT在模型的架构上是不可缺少的。那么,该如何避免使用预训练模型带来的模型预测耗时过长的问题呢?
...
2019-10-19 13:54
Cocos通过动作(Action)让精灵动起来,把数个动作组成序列(Sequence)就能让精灵做出连续的动作,在动作中我们可以改变精灵的位置,旋转角度,缩放比例,等等...
2019-10-19 13:21
1 游戏预览
在线体验地址:http://example.creator-star.cn/follo-ball/
2 场景物体
场景物体
新建场景后,引擎会为我们创建默认的摄像机和灯光,这个我们就不介绍了,如果不太了解,可以参考之前的文章。我们先介绍一下游戏中的物体:
地面:地面使用 Plane 创建,将他的Z深度设置为10米,同时为地面定制了一个材质贴图;
吸盘:吸盘是由 Torus 圆环体创建,定制了专用材质,而且还有一个向里面吸入的UV动画(下面一小节),同时为它添加了一个球体碰撞组件,但不添加刚体组件,我只需要使用碰撞组件监听它与障碍物的碰撞,不需要物理表现;
...
2019-10-19 13:51
重写equals方法看起来似乎很简单,但是有许多重写方式会导致错误,而且后果非常严重。最容易避免这类问题的办法就是不覆盖equals方法,在这种情况下,类的每个实例都只能与它自身相等。如果满足了以下任何一个条件,那就是正确的做法:...
2019-10-19 11:41
这篇文章是对上一篇 spring-data-redis-cache 的使用 的一个补充,上文说到 spring-data-redis-cache 虽然比较强悍,但还是有些不足的,它是一个通用的解决方案,但对于企业级的项目,住住需要解决更多的问题,常见的问题有
缓存预热(项目启动时加载缓存)
缓存穿透(空值直接穿过缓存)
缓存雪崩(大量缓存在同一时刻过期)
缓存更新(查询到的数据为旧数据问题)
缓存降级
redis 缓存时,redis 内存用量问题
本文解决的问题
增强 spring-data-redis-cache 的功能,增强的功能如下
...
2019-10-19 11:11
一、背景MQ组件是系统架构里必不可少的一门利器,设计层面可以降低系统耦合度,高并发场景又可以起到削峰填谷的作用,从单体应用到集群部署方案,再到现在的微服务架构,MQ凭借其优秀的性能和高可靠性,得到了广泛的认可。...
2019-10-19 11:44
单独的数据库:
微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。它是基于下面三个原因。
优化服务接口:微服务之间的接口越小越好,最好只有服务调用接口(RPC或消息),没有其他接口。如果微服务不能独享自己的数据库,那么数据库也变成了接口的一部分,这大大拓展了接口范围。
错误诊断:生产环境中的错误大部分都是和数据库有关的,要么是数据出了问题,要么是数据库的使用方式出了问题。当你不能完全控制数据库的访问时,会有各种各样的错误发生。它可能是别的程序直接连到你的数据库或者是其他部门直接用客户端访问数据库的数据,而这些都是在程序中查不到的,增加了错误排查难度。如果是程序中的问题,只要修改了代码,那么这个错误就不会再有。而上面提到的错误,你永远都没法预测它们什么时候还会再次发生。
...
2019-10-19 11:12
最近遇到了奇怪的阿里云 RDS 数据库突发 CPU 近 100% 问题,遇到了3次。第一次是10月12日(周六)凌晨 3:24 负载极低的时候开始出现,早上发现后进行了主备切换,恢复了正常。...
2019-10-19 11:41
前言
在JVM内存模型中会将堆内存划分新生代、老年代两个区域,两块区域的主要区别在于新生代存放存活时间较短的对象,老年代存放存活时间较久的对象,除了存活时间不同外,还有垃圾回收策略的不同,在JVM中中有以下回收算法:
标记清除
标记整理
复制算法
分代收集算法
有了垃圾回收算法,那JVM是如果确定对象是垃圾对象的呢?判断对象是否存活JVM也会有几套自己判断算法了:
引用记数
可达性分析
有了垃圾回收和判断对象存在这两个概念后,再来逐步分析它们。
JVM是如何判断对象是否存活的?
要是让开发人员来判断一个对象是否有用是很简单的,简单的说就是:对象没有任何引用就认为该对象可以被回收了。假设有如下程序代码:
...
2019-10-19 11:11
适配器模式是设计模式行为型模式中的一种模式;...
2019-10-19 11:36
首发于微信公众号《前端成长记》,写于 2019.10.18
导读
有句老话说的好,好记性不如烂笔头。人生中,总有那么些东西你愿去执笔写下。
本文旨在把整个开发的过程和遇到的问题及解决方案记录下来,希望能够给你带来些许帮助。
安装和源码
安装和源码
背景
在 《干货!从0开始,0成本搭建个人动态博客》 中,已经完成了动态博客的搭建。接下来,将围绕该博客,开发对应的 Chrome拓展,方便使用。
上手开发
本文不需要前期准备,直接跟我做就好了
功能拆分
这里主要分为几个大的功能点:
内容菜单导航,方便快速进入到博客的指定菜单页
...
2019-10-17 17:58
前言:
前面讲完了一些并发编程的原理,现在我们要来学习的是线程之间的协作。通俗来说就是,当前线程在某个条件下需要等待,不需要使用太多系统资源。在某个条件下我们需要去唤醒它,分配给它一定的系统资源,让它继续工作。这样能更好的节约资源。
一、Object的wait()与notify()
基本概念:
一个线程因执行目标动作的条件未能满足而被要求暂停就是wait,而一个线程满足执行目标动作的条件之后唤醒被暂停的线程就是notify。
基本模板:
复制代码
synchronized (obj){
...
2019-10-17 17:55
还记得之前介绍过的命名实体识别系列文章吗,可以从句子中提取出人名、地址、公司等实体字段,当时只是简单提到了BERT+CRF模型,BERT已经在上一篇文章中介绍过了,本文将对CRF做一个基本的介绍。本文尽可能不涉及复杂晦涩的数学公式,目的只是快速了解CRF的基本概念以及其在命名实体识别等自然语言处理领域的作用。...
2019-10-17 17:26
0x00 基础操作介绍
在本文中将介绍InfluxDB常用的基础操作,帮助读者建立对InfluxDB的感性认识,快速的动手玩起来,持续查询(Continuous Queies)、Group by、Series、行协议(Line Protocol)、InfluxQL等高级特性和细节,将会在后续文章中逐步介绍。
InfluxDB支持类SQL的操作接口,尽管因为时序数据的特点,InfluxDB是非CRUD的,不支持更新数据、删除单条数据操作,但考虑到大多数的读者对应CRUD的关系型数据库比较熟悉,在本文中,还是按照CRUD原则,介绍数据库(Database)、保留策略(Retention Policy)、表(Measurement)、数据写入、数据查询、数据更新、数据删除等内容。
...