徐小夕 徐小夕
5年前
10分钟教你手写8个常用的自定义hooks
前言Hook是React16.8的新增特性。它可以让你在不编写class的情况下使用state以及其他的React特性。本文是一篇以实战为主的文章,主要讲解实际项目中如何使用hooks以及一些最佳实践,不会一步步再介绍一遍reacthooks的由来和基本使用,因为写hooks的文章很多,而且官网对于reacthooks的介绍也很详细
Easter79 Easter79
4年前
supersocket client 的简单使用方法
由于需要在服务端和客户端持续通信,于是在网上找了好久的socket通信工具。刚开始想直接用.net自带的socket通信,后来担心不够稳定健壮,毕竟自己不专业。找来找去觉得supersocket还可以,但是说实话,他们的帮助文档写的真是太烂了,使用也不够简单易懂,折腾了一阵大致明白如何使用。1,在nuget上引用supersocket.clienteng
Stella981 Stella981
4年前
Kafka开发环境搭建
如果你要利用代码来跑kafka的应用,那你最好先把官网给出的example先在单机环境和分布式环境下跑通,然后再逐步将原有的consumer、producer和broker替换成自己写的代码。所以在阅读这篇文章前你需要具备以下前提:1.简单了解kafka功能,理解kafka的分布式原理2.能在分布式环境下成功运行—topictest。如果你
Stella981 Stella981
4年前
Redis 总结精讲
本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题
Stella981 Stella981
4年前
ReentrantReadWriteLock(读写锁)
ReentrantReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效的帮助减少锁的竞争,以此来提升系统的性能。用锁分离的机制来提升性能也非常好理解,比如线程A,B,C进行写操作,D,E,F进行读操作,如果使用ReentrantLock或者synchronized关键字,这些线程都是串行执行的,即每次都只有一个线程做操作。但是当D进行读
Easter79 Easter79
4年前
Tomcat 源码分析一 :快速搭建 Debug 环境
最近不是特别忙,空闲之余就开始倒腾Tomcat源码了,之前也陆陆续续看过一点,翻过《Howtomcatworks》这本书。这次想趁着有时间,系统性的好好分析下Tomcat的源码。分析源码的第一步自己是先搭建debug环境,我之前选择的是先下载Tomcat源码,然后通过Tomcat文档里面写的方法,使用ant构建,发现中间需要用很长的时间,中间经常提
Stella981 Stella981
4年前
Android模块化初体验及教程(二)
上一章初级体验了一下模块化,但是还是有很多需要优化和改进的地方思考点:怎么单独运行某一个子模块,不影响到其他模块之间的依赖?子模块需要Application,难道要每个模块写一个?因为是同一个服务器,所以网络请求库,怎么跨模块间公用?模块间怎么通信?解决将项
Stella981 Stella981
4年前
Jenkins持续集成与部署
1.1开发写代码的演变好景不长,开发越来越多,代码文件越来越多,每天下班前合并代码时,发现很多合并失败的文件。最后每天加班3小时人工合并代码。解决方法:将合并代码的周期缩短,以前一天,现在一小时,半小时。。。随时随地地将代码合并,这种方法叫做持续集成。1.2持续集成(简称CI)说
布局王 布局王
6个月前
鸿蒙仓颉语言开发教程:页面和组件的生命周期
大家下午好,今天要分享的内容是仓颉开发语言中的生命周期。其实幽蓝君比较喜欢分享代码,不太喜欢讲太理论的东西,今天之所以单独写一篇文章分享生命周期的内容,因为这部分内容如果不讲一下还真是容易踩坑。生命周期指的是页面或者组件从加载、显示到消失的过程,在这个过程
上海张律师 上海张律师
6个月前
The "paths[1]" argument must be of type string. Received undefined 错误的解决
​HarmonyOS应用开发这两天我准备把我写的一些库放到OpenHarmony三方库中,让其他人能够通过ohpm加入到自己的项目中去,整个过程实际上我觉得是比较复杂的,特别是第一次完成的时候很容易出问题,当然,完成一个以后再去上传新的就感觉简单很多了在我