CComma's Blog

CComma's Blog

Connect the world

世界各大条码打印设备厂商生产的打印机都采用了各自不同的打印语言以实现其打印,如 Zebra 系列的 ZPL(斑马条码打印机工业型号),Eltron 的 EPL(斑马条码打印机桌面小机器),Datamax 的 DPL 等。

目前我们公司使用的是 TSC 的打印机,其语言是 TSPL。

1
2
3
4
5
SIZE 60 mm,40 mm 
GAP 2 mm
CLS
TEXT 50,50,"4",0,1,1,"DEMO FOR TEXT"
PRINT 1

一张标签通常包含三个部分:

  • 系统设定:包括标签尺寸(SIZE、GAP)和清除缓冲区数据指令(CLS)等。
  • 打印内容设定:打印具体内容。
  • 执行打印指令:用于打印出设计好的标签,在此指令发送后打印机才执行打印动作。

需要特别注意,在每一条指令结尾需要加入换行符,即字符串 “\r\n” 或 16 进制 0x0D 0x0A

Read more »

这篇文章来讲讲自己在工作中如何实现在标签打印中打印图片。

背景

为什么会有打印图片的需求?在许多 app 内都会有打印小票的功能,例如美团点外卖后商家会打印小票,小票上可以放商家的 logo、自定义图片等

最近在项目中对接快递鸟发货后需要把快递鸟的返回的打印样式给打印出来。由于发货类型和快递公司非常多,也就存在多套打印模版,我们不可能每次对接一家公司就自己写一套模板,于是就迫切需要打印图片这么一个功能。

Read more »

背景

ES 支持四种对文档的数据写操作:create、delete、index、update,这些对数据进行更改的操作的流程和原理是怎么样的呢?以及,了解写入原理对我们有什么帮助?

1. 解决写入问题
心心念念用上了 ES,但是却在项目中遇到写入并发问题及写入大吞吐量数据之类的问题,这时候需要好好了解下 ES 的写入原理,再结合项目实际情况对相关参数进行调优。

2. 学习架构设计思想
这也是很重要的一点,了解 ES 是如何处理写入中遇到的问题,以及这些处理方式是否在我们平常项目中有所帮助。

3. 应对面试
虽然比较功利,但不可否认,写入原理是 ES 面试的高频问题

常见的面试问题:

  • 你了解 ES 的写入原理吗
  • 你了解文档的写入 / 删除过程吗
  • 如何保证 ES 数据写入一致性
  • 文档写入超时原因
  • ES 写入实时性如何去保证
  • 数据量大时如何保证数据写入性能
  • 如何提高数据检索能力
Read more »

为什么搭建博客

  • 知识积累
  • 分享
  • 影响力

建站

静态页面生成

我们可以自己写一套个人博客网站,不过那样做周期太长,样式之类的东西都得手动去调整,也不利于我们去专心的写作。

像博客这种静态页面可以由工具直接生成。市面上的博客工具有很多,像 hexo、vuepress

为什么选择 hexo?主题较现代化、方便快捷
hexo github

Read more »

在做项目时遇到需要可重入的缓存锁场景,缓存锁用的是 Redis 分布式锁,于是考虑用 ThreadLocal 来实现本机上的可重入锁

Read more »

这周碰到一个问题:客户在 C 端下单后,打印机延迟打印甚至不打印。很是让人头疼,耗费了大把时间结果发现只是因为手机 B 端 APP 处于后台无法自动更新。

整个链路流程大致是这样,用户在小程序上下单后通过消息通道发消息给客户端,客户端再去调用打印机打印,然后再去更新打印状态。

排查了很久发现是客户端接收不到消息,客户端同学也表示不知所措,问了消息通道那边的同学后发现安卓客户端在这之前就断开连接了,重新连接后立马就接收到了消息。一度怀疑是消息通道的问题,后来才发现客户端一直运行在后台,且自动刷新是关闭的。

因整个排查浪费了太多时间故在此做个复盘
整个链路很长,任何环节都有可能出现问题。

  1. 先尽可能排除用户误操作产生的影响
  2. 有些地方不好排查(如消息通道),排查必须得有侧重点
  3. 需要有一个负责人协调多位项目相关人,依次推进进度,提高效率

现象

1
2
3
4
5
6
Type type = getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) type;
Class<R> requestClass = (Class<R>) parameterizedType.getActualTypeArguments()[0];
...
}

第四行 Class<R> requestClass = (Class<R>) parameterizedType.getActualTypeArguments()[0]java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class 错误

这个代码是子类想要拿到泛型参数时出现的类型转换异常

Read more »

一、准备

1. redis-cli

执行命令
例:
远程 redis 服务上执行命令

1
redis-cli -h host -p port -a password

2. ping

该命令用于检测 redis 服务是否启动
例:

1
redis 127.0.0.1:6379> PING
Read more »
0%