自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 [Erlang]AC自动机过滤屏蔽词

通过Erlang实现的AC自动机,可用于高效率进行屏蔽词替换匹配等操作

2023-01-18 13:30:21 233

原创 springboot ElasticSearch配置自定义转换器ElasticsearchCustomConversions

springboot ElasticSearch配置自定义转换器ElasticsearchCustomConversions问题场景在将Timestamp类型存进Elasticsearc后,将其取出时抛出异常。从提示中可以看出缺少从Long转换到Timestamp的类型转换器。原理及分析在spring-data-elasticsearch中,java对象到json的互相转换是通过ElasticsearchConverter来进行的。使用springboot的自动配置机制能够快速地完成elastic

2021-08-05 16:29:54 3116 1

原创 springboot-data-mongodb 使用autoconfiguration如何添加自定义Converter

springboot-data-mongodb 使用autoconfiguration如何添加自定义Converter在使用spirng-data-mongodb的自动配置时,默认会启用mappingMongoConverter,其中附带了许多类型转换器,供向数据库中插入或读取数据时做类型转换。读取数据时首先会从mongodb中读取数据并构造为java中的对应的类型,随后再将其转换为实体对象,mappingMongoConverter就是提供这项功能的。当mappingMongoConverter遇到无法

2021-07-27 22:20:59 1429

原创 树莓派GPIO驱动ST7735S主控TFT液晶屏显示图片和文字

本文使用1.8‘’128*160RGB_TFT ST7735C主控的液晶屏来操作参考blog:http://blog.mangolovecarrot.net/2017/03/05/raspi-study1102文中使用同类型液晶屏显示了纯色和制作点阵来显示文字,但是这实在是太麻烦了。本文主要介绍如何使用PIL库来辅助显示,想要了解更多细节建议先看原文。PIL库的安装sudo apt-get install python-pil python3-pil代码在原作者的代码上增加了两个函数,用于图片

2020-10-15 16:43:53 5878 8

原创 基于Adafruit_SSD1306的ssd1306OLED局部刷新

基于Adafruit_SSD1306的ssd1306OLED局部刷新刚好最近在做树莓派项目的时候用到了Adafruit_SSD1306模块来控制ssd1306主控的显示屏,发现模块并没有提供局部刷新的方法。看了源码后发现在display方法中用到了列指针和页指针,于是修改了一下,给添加了局部刷新的方法。连接方式如图,图片源于网络,侵删!import Adafruit_SSD1306from Adafruit_SSD1306 import SSD1306_COLUMNADDRfrom Adafru

2020-08-26 17:48:54 3684

原创 Python线程同步和GIL

线程同步 for Python在多线程程序中,当多个线程同时去访问修改一个资源,就会引发线程安全问题。例如两个线程同时做累加操作时,两个线程拿的都是增加前的值,并且增加后同时或先后进行覆盖,其中一个线程的操作就被覆盖了。这在程序设计中是相当危险的,往往会导致得到一个错误的结果。Lock同步锁,即阻塞锁,是线程同步比较常用的手段。同一个锁同一时间只有一个线程能够获取,只要有一个线程获取了锁,其他线程请求时就会阻塞,等待锁被释放。只要控制一个资源同时只有一个线程访问,就不会引发安全问题。threadin

2020-08-01 18:32:08 166

原创 Python日志 logging模块用法

logging模块日志级别logging中的日志级别是通过数值比较来进行的,可以是非下列表中的数值,但不推荐。LevelvalueCRITICAL50ERROR40WARNING30,defaultINFO20DEBUG10NOTSET0设置通知level后,低于该级别的日志信息都会被忽略。使用log时需要传入上述级别参数也可以直接使用下列方法critical() error() waring() info() debug()

2020-07-30 18:44:58 391 2

原创 Python多线程 threading

Python多线程 threading在很多程序设计问题中,都要求程序能够停下手头的工作,改为处理其他一些问题,再返回回来继续执行。可以通过多种途径达到这个目的。最开始的时候,那些掌握机器低级语言的程序员编写一些“中断服务例程”,主进程的暂停是通过硬件级的中断实现的。尽管这是一种有用的方法,但编出的程序很难移植,由此造成了另一类的代价高昂问题。中断对那些实时性很强的任务来说是很有必要的。但对于其他许多问题,只要求将问题划分进入独立运行的程序片断中,使整个程序能更迅速地响应用户的请求 。最开始,线程只是

2020-07-30 13:03:57 179

原创 并发和并行的区别

并发并发和并行的区别并发:并发指的是,事件同时发生。就是接下来需要完成的事件,是一种情况。​ 比如一条只能同时经过一辆车的村道,如果同时有多辆车要通过,这就是一个并发的问题。现实中我们通常会使用排队的方式,让车辆一个一个通过。算法源于生活,队列是一种很常见的处理并发的方法。并行:并行是指同时完成多个事件,是并发的一种处理手段。​ 在上面那个例子中,并行就是建条多车道,同时让多辆车通过。并发饭堂打饭模型中午12点,开饭了,都涌向食堂,这就是一种并发。如果人很多,就是高并发。1、队

2020-07-28 20:19:16 207

原创 Python模块化

Python模块(Python Module)一般来说,在编程语言中。包、库、模块都是指同一个概念,是一种代码的组织方式,将一种功能或若干种封装起来,供自己或他人使用。Python中只有一种组织方式,称为模块。modulePython中的模块module,指的是Python源代码文件python中的一个类。模块导入后,会实例化一个module对象方便使用package包package是一种特殊的module为了便利模块的组织,使用文件夹(目录)加__init__.py文件来作为包,包也

2020-07-24 19:36:35 186

原创 Python的异常(Python Exception)

异常 Exception错误在编写代码时能够避免的语法错误:未按照代码限制进行编写,或者手误拼错了变量名等逻辑错误:思维方向出现了问题,算法不正确等。异常编写代码阶段无法避免的,与运行时环境相关的错误。例如打开的文件不存在,网络中断等。异常是可追溯的,Python中使用Tranceback来追溯异常。Python中的ExceptionPython中提供了一系列异常类和try语句块来捕获和处理异常。如果程序中触发了异常,当前函数未捕获则会向外抛出抛给调用者,直到被捕获或者抛到Py

2020-07-22 20:38:01 25892

原创 Python描述器(Python Descriptors)

描述器 Descriptors定义在Python中,类中实现了魔术方法__get__ __set__ __delete__三者中其一则称其为描述器。当一个类的属性为描述器时,访问这些属性会受到以上三者的控制。魔术方法只有当实现的类作为一个类的属性时,以下方法才起作用实现__get__方法则称为非数据描述器实现__get__和其他二者其一称为数据描述器方法参数作用__get__instance:属主实例 owner:属主类型当实现类作为类属性时,通过类或者实例访问

2020-07-21 18:28:16 248

原创 Python实现双向链表

Python双向链表class DwLinkedList: class Node: """ 结点类 用于存放数值以及前后指针 """ def __init__(self, value, last, next=None): self.value = value self.last = last self.next = next def __init__(

2020-07-18 18:12:57 218

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除