- 文章目录 什么是分布式锁?通过 Redis 分布式锁的实现理解基本概念加锁:解锁锁超时 redis分布式锁实现及各种问题解析SETNX原始代码第一把锁第二把锁第三把锁第四把锁第五把锁 结束语 什么是分布式锁? 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布... 文章目录 什么是分布式锁?通过 Redis 分布式锁的实现理解基本概念加锁:解锁锁超时 redis分布式锁实现及各种问题解析SETNX原始代码第一把锁第二把锁第三把锁第四把锁第五把锁 结束语 什么是分布式锁? 为了防止分布式系统中的多个进程之间相互干扰,我们需要一种分布式协调技术来对这些进程进行调度。而这个分布式协调技术的核心就是来实现这个分布...
- 真是个好问题 今天突然被 ==“不同场景下该如何选择进程间通信方式?”==给噎着了,这我还真没认真想过,以前只知道说它们都是什么?为什么?怎么用?还真没想过什么时候用谁?这个问题。 管道 在shell中管道用“|”表示。管道的历史很悠久了。 可以理解为内存中的一个缓冲区,用于将某个进程的数据流导入,由某一个进程导出,实现通信。 这种管道是没有名字,所以「|... 真是个好问题 今天突然被 ==“不同场景下该如何选择进程间通信方式?”==给噎着了,这我还真没认真想过,以前只知道说它们都是什么?为什么?怎么用?还真没想过什么时候用谁?这个问题。 管道 在shell中管道用“|”表示。管道的历史很悠久了。 可以理解为内存中的一个缓冲区,用于将某个进程的数据流导入,由某一个进程导出,实现通信。 这种管道是没有名字,所以「|...
- 如何开启一个线程? 方法1: Thread thread = new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out... 如何开启一个线程? 方法1: Thread thread = new Thread(){ @Override public void run() { while(true){ try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out...
- 本文于网络整理,版权归原作者所有 这是一名5年经验的 Python小伙伴总结的90条python建议,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用。 1. 首先 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 (1)避免不规范代码,比如只用大小写区分变量、... 本文于网络整理,版权归原作者所有 这是一名5年经验的 Python小伙伴总结的90条python建议,如果你也在学pythpn,准备要学习python,希望这篇文章对你有用。 1. 首先 建议1、理解Pythonic概念—-详见Python中的《Python之禅》 建议2、编写Pythonic代码 (1)避免不规范代码,比如只用大小写区分变量、...
- C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太... C#中禁止跨线程直接访问控件,InvokeRequired是为了解决这个问题而产生的,当一个控件的InvokeRequired属性值为真时,说明有一个创建它以外的线程想访问它。此时它将会在内部调用new MethodInvoker(LoadGlobalImage)来完成下面的步骤,这个做法保证了控件的安全,你可以这样理解,有人想找你借钱,他可以直接在你的钱包中拿,这样太...
- 文章目录 Log:Spdlog初探简介spdlog简介 安装/使用Header only version编译静态库Linux版本Windows版本 代码说明设置日志输出样式基础函数说明其他特性说明 结尾简单的代码片段 Log:Spdlog初探 简介 公司需要开新项目,提议更换日志库,交给我让我调研一下spdlog库的使用。 spdlog简... 文章目录 Log:Spdlog初探简介spdlog简介 安装/使用Header only version编译静态库Linux版本Windows版本 代码说明设置日志输出样式基础函数说明其他特性说明 结尾简单的代码片段 Log:Spdlog初探 简介 公司需要开新项目,提议更换日志库,交给我让我调研一下spdlog库的使用。 spdlog简...
- 1. 引用分类 (1)强引用: Object o = new Object ,平时用的最多的。 (2)软应用: 内存不足时回收,常用于缓存图片 (3)弱引用:不管内存是否足,都回收。GC扫描2次就回收,常用于引用activity的context。 (4)虚引用:用于跟踪GC回收的通知。 软弱引用与引用队列结合的使用场... 1. 引用分类 (1)强引用: Object o = new Object ,平时用的最多的。 (2)软应用: 内存不足时回收,常用于缓存图片 (3)弱引用:不管内存是否足,都回收。GC扫描2次就回收,常用于引用activity的context。 (4)虚引用:用于跟踪GC回收的通知。 软弱引用与引用队列结合的使用场...
- 单例模式 首先什么是单例模式: 《设计模式》一书中给出的定义是:让类自身负责保存它的唯一实例,这个类可以保证没有其他实例被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法,这就是Singleton模式。有人叫单例模式,也有叫单件模式。那么如何实现以上要求呢?首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,... 单例模式 首先什么是单例模式: 《设计模式》一书中给出的定义是:让类自身负责保存它的唯一实例,这个类可以保证没有其他实例被创建(通过截取创建新对象的请求),并且它可以提供一个访问该实例的方法,这就是Singleton模式。有人叫单例模式,也有叫单件模式。那么如何实现以上要求呢?首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,...
- 写在前面:今天开始尝试写写除Vim外的其他内容,仍然是以技术为主,可能涉及的内容包括Linux、正则表达式、gdb、makefile等内容,不知道小伙伴们有没有兴趣看呢?不管如何,也算是我自己的知识沉淀吧~ 我把公众号改名了,你们猜猜新名字是啥? GDB (The GNU Project Debugger)是 Linux 系统下调试 C 和 C++ 程序的主要... 写在前面:今天开始尝试写写除Vim外的其他内容,仍然是以技术为主,可能涉及的内容包括Linux、正则表达式、gdb、makefile等内容,不知道小伙伴们有没有兴趣看呢?不管如何,也算是我自己的知识沉淀吧~ 我把公众号改名了,你们猜猜新名字是啥? GDB (The GNU Project Debugger)是 Linux 系统下调试 C 和 C++ 程序的主要...
- 前面有篇文章讲了 smail代码的简单修改,其实它有3个apk可以用来练手,今天来讲第二个apk,也是比较简单,大佬请飘过。 样本地址: https://github.com/wyhuan/owasp-mstg/blob/master/Crackmes/Android/Level_02/UnCrackable-Level2.apk 依然下载到手机并安装,打开看看... 前面有篇文章讲了 smail代码的简单修改,其实它有3个apk可以用来练手,今天来讲第二个apk,也是比较简单,大佬请飘过。 样本地址: https://github.com/wyhuan/owasp-mstg/blob/master/Crackmes/Android/Level_02/UnCrackable-Level2.apk 依然下载到手机并安装,打开看看...
- 现在我们要启动2个线程,第一个线程打印“gaoxiaowei”中的每一个字符,然后换行; 第二个线程打印“zhangwenbin”的每一个字符然后换行,代码如下: public class TraditionalThreadSynchronized { /** * @param args */ public static void main(String[] args... 现在我们要启动2个线程,第一个线程打印“gaoxiaowei”中的每一个字符,然后换行; 第二个线程打印“zhangwenbin”的每一个字符然后换行,代码如下: public class TraditionalThreadSynchronized { /** * @param args */ public static void main(String[] args...
- LiveData的使用及原理 1.LiveData的使用2.原理3.自定义LiveData LiveData是一个 可观察的数据持有类,它与常见的可观察对象不同的是它有生命周期意识,即它能够感知组件,如activities, fragments, services等的生命周期变化。以前我们可会用EventBus来做事件传递,现在用LiveData也是不错... LiveData的使用及原理 1.LiveData的使用2.原理3.自定义LiveData LiveData是一个 可观察的数据持有类,它与常见的可观察对象不同的是它有生命周期意识,即它能够感知组件,如activities, fragments, services等的生命周期变化。以前我们可会用EventBus来做事件传递,现在用LiveData也是不错...
- 全局定时任务-CronUtil 介绍 CronUtil通过一个全局的定时任务配置文件,实现统一的定时任务调度。 使用 1、配置文件 对于Maven项目,首先在src/main/resources/config下放入cron.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下: # 我是注释[com.company.aaa.jo... 全局定时任务-CronUtil 介绍 CronUtil通过一个全局的定时任务配置文件,实现统一的定时任务调度。 使用 1、配置文件 对于Maven项目,首先在src/main/resources/config下放入cron.setting文件(默认是这个路径的这个文件),然后在文件中放入定时规则,规则如下: # 我是注释[com.company.aaa.jo...
- Handler的用途 Handler是子线程(工作线程)与主线程之间的通信桥梁。由于更新UI只能在主线程里完成,所以在子线程里的工作完成后,可以通过Handler来通知主线程更新UI组件。 什么是主线程呢? 当app应用程序启动时创建的第1个线程就是主线程(MainThread)又叫UI线程,因为它专门用于UI的操作。 什么是子线程呢? 子线程,又因其作用而被... Handler的用途 Handler是子线程(工作线程)与主线程之间的通信桥梁。由于更新UI只能在主线程里完成,所以在子线程里的工作完成后,可以通过Handler来通知主线程更新UI组件。 什么是主线程呢? 当app应用程序启动时创建的第1个线程就是主线程(MainThread)又叫UI线程,因为它专门用于UI的操作。 什么是子线程呢? 子线程,又因其作用而被...
- Akka Dispatcher是维持Akka Actor动作的核心组件,是整个Akka框架的引擎。它是基于Java的Executor框架来实现的。Dispatcher控制和协调消息并将其分发给运行在底层线程上的Actor,由它来负责调度资源的优化,并保证任务以最快的速度执行。 Akka的高稳定性是建立在“Let It Crash”模型之上的,该模型是基于Supervi... Akka Dispatcher是维持Akka Actor动作的核心组件,是整个Akka框架的引擎。它是基于Java的Executor框架来实现的。Dispatcher控制和协调消息并将其分发给运行在底层线程上的Actor,由它来负责调度资源的优化,并保证任务以最快的速度执行。 Akka的高稳定性是建立在“Let It Crash”模型之上的,该模型是基于Supervi...
上滑加载中
推荐直播
-
华为云码道-玩转OpenClaw,在线养虾2026/03/11 周三 19:00-21:00
刘昱,华为云高级工程师/谈心,华为云技术专家/李海仑,上海圭卓智能科技有限公司CEO
OpenClaw 火爆开发者圈,华为云码道最新推出 Skill ——开发者只需输入一句口令,即可部署一个功能完整的「小龙虾」智能体。直播带你玩转华为云码道,玩转OpenClaw
回顾中 -
华为云码道-AI时代应用开发利器2026/03/18 周三 19:00-20:00
童得力,华为云开发者生态运营总监/姚圣伟,华为云HCDE开发者专家
本次直播由华为专家带你实战应用开发,看华为云码道(CodeArts)代码智能体如何在AI时代让你的创意应用快速落地。更有华为云HCDE开发者专家带你用码道玩转JiuwenClaw,让小艺成为你的AI助理。
回顾中 -
Skill 构建 × 智能创作:基于华为云码道的 AI 内容生产提效方案2026/03/25 周三 19:00-20:00
余伟,华为云软件研发工程师/万邵业(万少),华为云HCDE开发者专家
本次直播带来两大实战:华为云码道 Skill-Creator 手把手搭建专属知识库 Skill;如何用码道提效 OpenClaw 小说文本,打造从大纲到成稿的 AI 原创小说全链路。技术干货 + OPC创作思路,一次讲透!
回顾中
热门标签