Easter79 Easter79
3年前
ssh 在大厂写React,学到了什么?
前言进入大厂搬砖也有3个月了,我工作中的技术栈主要是ReactTypeScript,这篇文章我想总结一下如何在项目中运用React的一些技巧解决一些实际问题,本文中使用的代码都是简化后的,不代表生产环境。生产环境的代码肯定比文中的例子要复杂很多,但是简化后的思想应该是相通的。取消请求如果在React里当前正在
Stella981 Stella981
3年前
ReenTrantLock可重入锁和synchronized的区别
ReenTrantLock可重入锁和synchronized的区别可重入性:从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计数器下降为0时才能释放锁。锁的实现:S
Easter79 Easter79
3年前
TiKV 源码解析系列文章(十七)raftstore 概览
第一作者:李建俊,第二作者:杨哲轩,王聪TiKV作为一个分布式KV数据库,使用Raft算法来提供强一致性。Raft算法提供了单一group的一致性,但是单一group无法扩展和均衡。因此,TiKV采用了MultiRaft的方式基于Raft算法提供能兼顾一致性、扩展均衡的KV储存。下文以3.0版本代码为例,讲述raf
Wesley13 Wesley13
3年前
mysql 时间格式函数
平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的转换(即:date转字符串、date转时间戳、字符串转date、字符串转时间戳、时间戳转date,时间戳转字符串)用法,方便日后查看;涉及的函数date\_format(https://www.o
捉虫大师 捉虫大师
3年前
记一次提升18倍的性能优化
背景最近负责的一个自研的Dubbo注册中心经常收到CPU使用率的告警,于是进行了一波优化,效果还不错,于是打算分享下思考、优化过程,希望对大家有一些帮助。自研Dubbo注册中心是个什么东西,我画个简图大家稍微感受一下就好,看不懂也没关系,不影响后续的理解。Consumer和Provider的服务发现请求(注册、注销、订阅)都发给Agen
Stella981 Stella981
3年前
HTTP协议与WebSocket协议对比
1.HTTP从根本上讲,HTTP还是半双工的协议,也就是说,在同一时刻流量只能单向流动:客户端向服务器发送请求(单向),然后服务器响应请求(单向)。2.WebSocketWebSocket是一种自然的全双工、双向、单套接字连接。使用WebSocket,一旦建立连接,服务器与客户端可以随时发送消息。与HTTP轮询不同,WebSocket只发有一个请
Stella981 Stella981
3年前
Halcon和Opencv区别
Halcon:机器视觉行业里知名的商业视觉库,非开源的,在国内市场份额处于第一,其提供了1500个多个API算子供开发人员使用,有些编程基础的都可以轻松的入门,其调试也是很方便的,断点单步运行,图像变化随时可以看到。Halcon算子可以被C,VB,C,Delphi等开发语言调用,同时算子也提供COM版,原则上,支持COM的所有语言都是可以调用H
Stella981 Stella981
3年前
Kotlin代码检查在美团的探索与实践
背景Kotlin有着诸多的特性,比如空指针安全、方法扩展、支持函数式编程、丰富的语法糖等。这些特性使得Kotlin的代码比Java简洁优雅许多,提高了代码的可读性和可维护性,节省了开发时间,提高了开发效率。这也是我们团队转向Kotlin的原因,但是在实际的使用过程中,我们发现看似写法简单的Kotlin代码,可能隐藏着不容忽视的额外开销。本文剖析了K
Wesley13 Wesley13
3年前
MySQL数据库开发的三十六条军规
一.核心军规尽量不在数据库做运算,cpu计算的事务必移至业务层;  控制表、行、列数量(【控制单张表的数据量1年/500W条,超出可做分表】,【单库表数据量不超过300张】、【单张表的字段个数不超过50个,多了拆表】)三大范式没有绝对的要使用,效率优先时可适当牺牲范式 https://www.cnblogs.com/wdw31
Stella981 Stella981
3年前
JVM垃圾回收机制
引用计数法:当给对象添加一个引用计数器,每当有一个地方引用这个对象时计数器值就1;引用失效时,计数器值就1;任何时刻计数器为0的对象就是不可能在被使用。优点:引用计数收集器可以很快地执行,交织在程序运行中。缺点:无法检测出循环引用。例如:MyObjectobject1newMyObject();MyObjectobject2