简单理解批处理和流处理的区别

关于如何编写好金融科技客户端SDK的思考

引言 回想起来,我在目前的团队(金融科技领域)待了有很长一段时间了,一直在做SDK研发,平时工作中经历过大刀阔斧一蹴而就的喜悦,也经历过被一个问题按在地上摩擦,无奈“废寝忘食”的不堪,日复一日年复一年,如果硬要吐露一下内心的感受,就一个字“难!”。 为什么说难呢?总结下来有两方面原因,一方面原因是所 ......
客户端 客户 金融 科技 SDK

【C#异步】异步多线程的本质,上下文流转和同步

引言 net同僚对于async和await的话题真的是经久不衰,这段时间又看到了关于这方面的讨论,最终也没有得出什么结论,其实要弄懂这个东西,并没有那么复杂,简单的从本质上来讲,就是一句话,async 和await异步的本质就是状态机+线程环境上下文的流转,由状态机向前推进执行,上下文进行环境切换, ......
上下文 线程 本质 上下

用Redis实现延迟队列,我研究了两种方案,发现并不简单

大家好,我是三友~~ 背景 前段时间有个小项目需要使用延迟任务,谈到延迟任务,我脑子第一时间一闪而过的就是使用消息队列来做,比如RabbitMQ的死信队列又或者RocketMQ的延迟队列,但是奈何这是一个小项目,并没有引入MQ,我也不太想因为一个延迟任务就引入MQ,增加系统复杂度,所以这个方案直接就 ......
队列 方案 Redis

redis分布式锁的实现

一.正常加锁 当两个用户同时注册一个用户名时,为保证用户名不能重复,因此对其注册的用户名加锁。 具体步骤: 获得用户注册的用户名,进行判断,如果为空则对其进行加锁,保存到数据库,释放锁资源。 二.线程出现阻塞 当A线程加锁后出现阻塞时,导致数据还没有存到数据库,锁的时间便会失效。 B线程便会执行,对 ......
分布式 redis

Rpc-实现Client对ZooKeeper的服务监听

1、前言 在上一篇文章中,完成了ZooKeeper注册中心,添加了一个简单的本地缓存 但是,存在一些问题: 当本地缓存OK,ZooKeeper对应服务有新的实例时,本地缓存不会自动更新 当ZooKeeper对应服务实例关闭,本地缓存不会监控到实例消失 2、编写 之前我们是将缓存直接放在ZooKeep ......
ZooKeeper Client Rpc

良许翻天覆地的2022年

大家好,我是良许,新年快乐呀~ 在我女室友坚持不懈的努力之下,2022年的最后一天我终于被她传染了,阳了~ 此时的我,正顶着37多度的低烧写下这篇年终总结。 2022年,对于大多数人而言,封控是主旋律——不停地核酸,不停地居家。特别是对于做实体行业的小伙伴,真的是损失惨重。 我在广州租住的地方有个步 ......
翻天覆地 2022

链接服务器查询导致的阻塞

背景 客户反馈数据库在上午10点时出现严重阻塞,阻塞源头会话在等待OLEDB,没有见过这个等待类型,请我们协助分析。 现象 登录SQL专家云,进入趋势分析,下钻到10点钟的活动会话,看到发生了两次严重的阻塞。 转到活动会话原始数据,看到阻塞的源头是会话331,正在执行UPDATE语句,阻塞了其它会话 ......
链接 服务器

JavaScript 日期和时间的格式化

一、日期和时间的格式化 1、原生方法 1.1、使用 toLocaleString 方法 Date 对象有一个 toLocaleString 方法,该方法可以根据本地时间和地区设置格式化日期时间。例如: const date = new Date(); console.log(date.toLocal ......
JavaScript 日期 格式 时间

一文看懂 Python 中的函数参数

函数定义中的参数也就是形式参数,规定了在调用函数时如何传递实际参数以及这些参数有无默认值。 实参传递方式 def f(a): print(a) 实参传递方式有两种,位置和关键字。对于上面定义的函数 f,形如 f(1) 这种调用是通过位置的方式传参,形如 f(a=1) 这种调用是通过关键字的方式传参, ......
函数 参数 Python

为什么sleeping的会话会造成阻塞

背景 客户反映HIS数据库每天22点后都会发生阻塞,阻塞的源头是一个sleeping的会话,越阻塞越多,只能通过手动KILL掉才能解决,十分不解为什么状态为sleeping的会话会造成阻塞。 现象 在SQL专家云的活动会话中,回溯22点一个小时内的运行情况,从22点开始出现阻塞情况。 转到活动会话原 ......
sleeping

真正“搞”懂HTTPS协议15之安全的定义

前面我们花了很大的篇幅来讲HTTP在性能上的改进,从1.0到1.1,再到2.0、3.0,HTTP通过替换底层协议,解决了一直阻塞性能提升的队头阻塞问题,在性能上达到了极致。 那么,接下来,我们来聊一聊HTTP在安全上都做了哪些事情,HTTPS是如何帮助HTTP解决安全问题的。 那为什么要有HTTPS ......
HTTPS

真正“搞”懂HTTPS协议16之安全的实现

上一篇噢,我们搞明白了什么是安全的通信,这个很重要,特别重要,敲黑板!! 然后,我们还学了HTTPS到底是什么,以及HTTPS真正的核心SSL/TLS是什么。最后我们还聊了聊TLS的实现,也就是OpenSSL。 那么这一篇,就会稍微长一点了,很重要!我们来聊一聊,安全的四大特性是如何被TLS实现的。 ......
HTTPS

为什么sleeping的会话会造成阻塞(2)

背景 客户反馈系统突然从11:10开始运行非常缓慢,在SQL专家云中看到大量的产生阻塞的活动会话,KILL掉阻塞的源头马上又出现新的源头,实在没有办法只能重启应用程序断开所有数据库连接才解决,请我们协助分析根本的原因。 现象 登录SQL专家云,进入趋势分析页面,下钻到11点钟内一个小时的数据,看到从 ......
sleeping

浅显直白的Python深拷贝与浅拷贝区别说明

一、可变数据类型与不可变数据类型 在开始说深拷贝与浅拷贝前,我们先来弄清楚,可变对象与不可变对象 总的来说,Python数据类型可分为可变数据类型与不可变数据类型 可变数据类型:在不改变对象所指向的地址的前提下,地址中的值是可以改变的,例如列表[1, 2, 3],我们可以改为[2,3]并不需要变更它 ......
拷贝 Python

.Net Core中使用NEST简单操作Elasticsearch

C#中访问Elasticsearch主要通过两个包NEST和Elasticsearch.Net,NEST用高级语法糖封装了Elasticsearch.Net可以通过类Linq的方式进行操作,而Elasticsearch.Net相比之下更为原始直接非常自由。 注意:ES的8.X以上的版本有新的包Ela ......
Elasticsearch Core NEST Net

推荐一款.Net Core开发的后台管理系统YiShaAdmin

若依(RuoYi)是码云上一款精美的开源快速开发平台,作者毫无保留给个人及企业免费使用。RuoYi目前有三个版本:普通版本(RuoYi)、前后端分离版本(RuoYi-Vue)、微服务版本(RuoYi-Cloud)。.net的小伙伴们估计很羡慕JAVA的生态,现在.net core发展也很快,奈何生态 ......
YiShaAdmin 后台 管理系统 系统 Core

网页js版音频数字信号处理:H5录音+特定频率信号的特征分析和识别提取

音频数字信号处理 Audio DSP (Digital Signal Processing) 是一个复杂又专业的话题,本文介绍的是如何从音频中实时分析和识别出特定频率信号的一种方法,对应的代码为可运行在浏览器中的html5网页版(可移植);可用于识别环境中特定频率的声音、或噪声、乐器弹奏的音调。 在 ......
信号 信号处理 频率 特征 音频

gitlabApi如何获取项目文件夹的commitId

在我们做配置管理系统和gitlab系统集成的时候,有一个常见的场景,就是要获取某个文件的commitId,来记录本次配置文件提交的版本。这个通过gitlabApi很容易实现: GET /projects/:id/repository/files/:file_path?ref=:ref 其中: id: ......
文件夹 gitlabApi commitId 文件 项目

函数式编程:Flutter&Dart中的组合

本文翻译自: Composition in Flutter & Dart 在 Flutter & Dart 中使用组合创建模块化应用程序。 什么是组合? 在dictionary.com 中 composition 的定义为:将部分或者元素组合成一个整体的行为。简单说,组合就像堆乐高积木,我们可以将积 ......
函数 Flutter Dart amp

立即执行函数在前端国际化方案中的应用

说起国际化,开发过跨区域网页的小伙伴应该都遇到过。我们的网页需要配置多套语言,方便用户进行切换。 本文就以 React 为例,介绍其中一种实现方案,并学习一下其中的知识点。 一种国际化方案 方案是这样的: 为多套语言创建对应的 object,并 export 出去 通过 js 立即执行函数,加载选定 ......
前端 函数 方案 国际

SpringBoot多数据源以及事务处理

背景 在高并发的项目中,单数据库已无法承载大数据量的访问,因此需要使用多个数据库进行对数据的读写分离,此外就是在微服化的今天,我们在项目中可能采用各种不同存储,因此也需要连接不同的数据库,居于这样的背景,这里简单分享实现的思路以及实现方案。 如何实现 多数据源实现思路有两种,一种是通过配置多个Sql ......
数据源 SpringBoot 事务 数据

Python常见面试题006 类方法、类实例方法、静态方法有何区别?

006. Python中类方法、类实例方法、静态方法有何区别? 全部放一个里面篇幅过大了,就拆分成1个个发布 示例代码 class Human: def __init__(self, name): self.name = name def say(self): print(f'我的名字是{self. ......
方法 静态 实例 试题 Python

研究c#异步操作async await状态机的总结

前言 前一段时间得闲的时候优化了一下我之前的轮子[DotNetCoreRpc]小框架,其中主要的优化点主要是关于RPC异步契约调用的相关逻辑。在此过程中进一步了解了关于async和await异步操作相关的知识点,加深了异步操作的理解,因此总结一下。关于async和await每个人都有自己的理解,甚至 ......
状态 async await

使用JsonTextReader提高Json.NET反序列化的性能

一、碰到的问题 在服务器的文件系统上有一个业务生成的BigTable.json文件,其可能包含的JSON字符串很大,同时里边的集合会包含很多的记录;我们使用以下的代码来反序列化,虽然使用了异步的ReadAllTextAsync来读取文件,但是还是需要将整个的文件内容都读取到内存中,这样会极大的占用服 ......
JsonTextReader 序列 性能 Json NET

selenium结合tenacity的retry实现验证码失败重试

说在前面 验证码登录的demo后续可以单独讲解,VIP学员对这部分应该都是掌握的,此处不再赘述 本文假设了一个场景 你通过OCR识别的验证码是有一定的错误几率的 本文是通过识别后的验证码去加一个随机字符,如果取到的是''空字符则可能成功,否则必然不会成功 所涉及的python库 selenium d ......
selenium tenacity retry

Typescript 回调函数、事件侦听的类型定义与注释--拾人牙慧

实际项目中会运到的 Typescript 回调函数、事件侦听的类型定义,如果刚碰到会一脸蒙真的,我就是 这是第一次我自己对 Typescript 记录学习,所以得先说一下我与 Typescript 的孽缘 记得最早是在2014年遇上 Typescript 当时是完全看不上这东西的,甚至带着鄙视的心态 ......
拾人牙慧 注释 Typescript 函数 类型

基于FLink实现的实时安全检测(一段时间内连续登录失败20次后,下一次登录成功场景)

研发背景 公司安全部目前针对内部系统的网络访问日志的安全审计,大部分都是T+1时效,每日当天,启动Python编写的定时任务,完成昨日的日志审计和检测,定时任务运行完成后,统一进行企业微信告警推送。这种方案在目前的网络环境和人员规模下,呈现两个痛点,一是面对日益频繁的网络攻击、钓鱼链接,T+1的定时 ......
安全检测 实时 场景 时间 FLink

现在的我,不想做管理

回看上一次复盘,还是在2022年12月31日。那次复盘的内容是年终工作总结,距离现在已经过去快要两个月,也是时候该做一次复盘了。 这两个月,发生的事情其实不算多,但是心态发生了不小的转变。 原以为该结束的项目,一直拖着没有结束。原因其一是因为对接的客户方联系人并不知道确切的验收标准,再加上他们各自也 ......

基于图的路径搜索技术基础知识

基于图搜索的路径规划方法基础概念,介绍了配置空间,工作空间等相关概念,引出了深度优先搜索和广度优先搜索并进行了对比。 ......
基础知识 路径 基础 知识 技术

这6种性能优化,让你的程序飞起来!

软件设计开发某种意义上是"取"与"舍"的艺术。关于性能方面,就像建筑设计成抗震9度需要额外的成本一样,高性能软件系统也意味着更高的实现成本,有时候与其他质量属性甚至会冲突,比如安全性、可扩展性、可观测性等等。大部分时候我们需要的是:在业务遇到瓶颈之前,利用常见的技术手段将系统优化到预期水平。那么, ......
性能 程序