0%

Redis持久化的原理及优化

Redis为持久化提供了两种方式:

  • RDB:在指定的时间间隔能对你的数据进行快照存储。
  • AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据。
阅读全文 »

Go语言的GPM调度器是什么?

相信很多人都听说过Go语言天然支持高并发,原因是内部有协程(goroutine)加持,可以在一个进程中启动成千上万个协程。那么,它凭什么做到如此高的并发呢?那就需要先了解什么是并发模型。

阅读全文 »

Goroutine调度策略

原文: 第三章 Goroutine调度策略(16)

在调度器概述一节我们提到过,所谓的goroutine调度,是指程序代码按照一定的算法在适当的时候挑选出合适的goroutine并放到CPU上去运行的过程。这句话揭示了调度系统需要解决的三大核心问题:

  • 调度时机:什么时候会发生调度?
  • 调度策略:使用什么策略来挑选下一个进入运行的goroutine?
  • 切换机制:如何把挑选出来的goroutine放到CPU上运行?
阅读全文 »

goroutine调度器概述

goroutine简介

goroutine是Go语言实现的用户态线程,主要用来解决操作系统线程太“重”的问题,所谓的太重,主要表现在以下两个方面:

  • 创建和切换太重:操作系统线程的创建和切换都需要进入内核,而进入内核所消耗的性能代价比较高,开销较大;
  • 内存使用太重:一方面,为了尽量避免极端情况下操作系统线程栈的溢出,内核在创建操作系统线程时默认会为其分配一个较大的栈内存(虚拟地址空间,内核并不会一开始就分配这么多的物理内存),然而在绝大多数情况下,系统线程远远用不了这么多内存,这导致了浪费;另一方面,栈内存空间一旦创建和初始化完成之后其大小就不能再有变化,这决定了在某些特殊场景下系统线程栈还是有溢出的风险。
阅读全文 »

python正则分割字符串忽略括号

业务中需要以分割字符串,但是实际情况中有的数据是在()中的 不希望括号中的 被分割 思路是用正则匹配分割
研究半天发现正则实现不了,最后先分割 然后在拼接

阅读全文 »

python-转换doc为docx

最近需要实现功能读取word文档,开发思路是使用python-docx库,读取过程中发现文档又doc,docx两种格式,python读取doc的方式没有太好的解决方法,所以使用pypiwin库把 doc文档转换为docx

阅读全文 »

Mysql中将查询出来的多列的值用逗号拼接

业务需要 把查出的订单号 保存到 结算单字段里,最开始想写查询,后来想是否有sql可以直接实现

1
2
3
4
5
select group_concat(order_id) from book_order;#结果以,号分割

select group_concat(order_id SEPARATOR '_') from book_order

select group_concat(order_id order by order_id desc SEPARATOR '_') from book_order
阅读全文 »