摘要:
项目中新增一个定时任务,主要功能是将每天的文章内容导出成特定xml文件。 项目部署运行一段时间后,发现程序的内存占用慢慢上涨,很有规律。 经排查代码确认,对象序列化的代码有问题。 问题代码: public static void SaveXmlFile<T>(T data, string fileP 阅读全文
摘要:
项目的日志框架使用了Serilog,现在有需求要将异常日志记录一份到数据库中。 目前网上可以找到适配各个数据库的Sink。https://github.com/serilog/serilog/wiki/Provided-Sinks 但是由于项目需要适配多个不同类型的数据库,故打算自定义一个Datab 阅读全文
摘要:
某天收到运维线上警报,服务器内存告警,需要处理一下。此时通过浏览器打开页面,系统可以正常访问,但是有明显卡顿。为了不影响客户使用,先重启了服务释放了内存。由于该项目平时访问量并不大,因此随着程序运行内存占用率的增长比较缓慢,直到第三天才发现从原本的10%跳到了45%。初步怀疑有内存泄漏问题需要进行线 阅读全文
摘要:
不好的方案 1. 先写 MySQL,再写 Redis 图解说明: 这是一副时序图,描述请求的先后调用顺序; 橘黄色的线是请求 A,黑色的线是请求 B; 橘黄色的文字,是 MySQL 和 Redis 最终不一致的数据; 数据是从 10 更新为 11; 后面所有的图,都是这个含义,不再赘述。 请求 A、 阅读全文
摘要:
JDK自带的延时队列 把订单插入DelayQueue中,以超时时间作为排序条件,将订单按照超时时间从小到大排序。 起一个线程不停轮询队列的头部,如果订单的超时时间到了,就出队进行超时处理,并更新订单状态到数据库中。 为了防止机器重启导致内存中的DelayQueue数据丢失,每次机器启动的时候,需要从 阅读全文
摘要:
索引介绍 MySQL默认的存储引擎是InnoDB,它采用B+树作为索引的数据结构。 InnoDB和MyISAM存储引擎都支持B+树索引,但是它们的数据存储结构实现方式不同。 InnoDB:B+树索引的叶子节点保存全部数据 MyISAM:B+树索引的叶子节点保存数据的物理地址 在创建表的时候,Inno 阅读全文
摘要:
Websocket、SSE(Server-Sent Events)和长轮询(Long Polling)都是用于网页和服务端通信的技术。 Websocket是一种全双工通信协议,能够实现客户端和服务端之间的实时通信。它基于TCP协议,并且允许服务器主动向客户端推送数据,同时也允许客户端向服务器发送数据 阅读全文
摘要:
最近因为需要实现导入Word文件到富文本编辑器的需求,所以打算采用OpenXml来读取文本和图片信息并组装成html输出。当然其实也可以通过调用Office的COM接口,将文档转化为HTML(类似于用Office软件打开Word文档,然后另存为HTML文件)。 在之前的文章提取Office文件(Wo 阅读全文
摘要:
PC版的微信将用户接收到的所有图片加密为DAT文件并保存在本地,具体保存位置就看各自的微信-文件管理设置了。 DAT格式文件不能直接打开,强行查看也就只能看到一些乱码。如果能够找到解密的方式,就可以很方便在本地筛选图片了,虽然大部分可能只是聊天吹水的内容。 加密方式 首先我尝试一下在微信中发送一张新 阅读全文
摘要:
AvalonEdit简介 AvalonEdit是基于WPF开发的代码显示控件,默认支持多种不同语言的关键词高亮,并且可以自定义高亮配置。所以通过AvalonEdit可以快速开发出自己想要的代码编辑器。 通过Nuget安装AvalonEdit,并在页面添加控件 <avalonEdit:TextEdit 阅读全文