- 博客(113)
- 收藏
- 关注
原创 【单片机】三极管的电路符号及图片识别
用万用表黑表笔固定三极管的某一个电极,红表笔分别接半导体三极管另外两各电极,观察指针偏转,若两次的测量阻值都大或是都小,则改脚所接就是基极(两次阻值都小的为NPN型管,两次阻值都大的为PNP型管),若两次测量阻值一大一小,则用黑笔重新固定半导体三极管一个引脚极继续测量,直到找到基极。如果已知某个半导体三极管的基极,可以用红表笔接基极,黑表笔分别测量其另外两个电极引脚,如果测得的电阻值很大,则该三极管是NPN型半导体三极管,如果 测量的电阻值都很小,则该三极管是PNP型半导体三极管.按功能分:开关管和放大。
2024-06-19 20:04:46 656
原创 多线程系列(十三) -一文带你搞懂阻塞队列
在之前的文章中,我们介绍了生产者和消费者模型的最基本实现思路,相信大家对它已经有一个初步的认识。在 Java 的并发包里面还有一个非常重要的接口:BlockingQueue。是一个基于阻塞机制实现的线程安全的队列。通过它也可以实现生产者和消费者模型,并且效率更高、安全可靠,相比之前介绍的生产者和消费者模型,它可以同时实现生产者和消费者并行运行。那什么是阻塞队列呢?简单的说,就是当参数在入队和出队时,通过加锁的方式来避免线程并发操作时导致的数据异常问题。
2024-05-10 10:43:15 745
原创 多线程系列(十二) -生产者和消费者模型
在 Java 多线程编程中,还有一个非常重要的设计模式,它就是:生产者和消费者模型。这种模型可以充分发挥 cpu 的多线程特性,通过一些平衡手段能有效的提升系统整体处理数据的速度,减轻系统负载,提高程序的效率和稳定性,同时实现模块之间的解耦。那什么是生产者和消费者模型呢?简单的说,生产者和消费者之间不直接进行交互,而是通过一个缓冲区来进行交互,生产者负责生成数据,然后存入缓冲区;消费者则负责处理数据,从缓冲区获取。
2024-05-10 10:39:27 1013
翻译 智算创新 云峦同行!龙蜥衍生版浪潮信息 KeyarchOS 的 10 年发展历程
在算力产业发展时,算力供给的服务化、云原生化,以及算力应用的智能化,对系统软件支撑层提出了高要求。在这种情况下,浪潮信息提出了“ 以应用为导向、以系统设计为核心”的系统理念。
2024-05-10 10:36:02 108
原创 多线程系列(十一) -浅析并发读写锁StampedLock
在上一篇文章中,我们讲到了使用可以解决多线程同时读,但只有一个线程能写的问题。如果继续深入的分析,从锁的角度分析,会发现它有一个潜在的问题:如果有线程正在读数据,写线程准备修改数据的时候,需要等待读线程释放锁后才能获取写锁,简单的说就是,读的过程中不允许写,这其实是一种悲观的读锁。。与相比,最大的改进点在于:在原先读写锁的基础上,新增了一种叫乐观读的模式。该模式并不会加锁,因此不会阻塞线程,程序会有更高的执行效率。什么是乐观锁和悲观锁呢?
2024-05-09 10:18:31 921
原创 多线程系列(十) -ReadWriteLock用法详解
在上篇文章中,我们讲到可以保证了只有一个线程能执行加锁的代码。但是有些时候,这种保护显的有点过头,比如下面这个方法,它仅仅就是只读取数据,不修改数据,它实际上允许多个线程同时调用的。// 加锁try {// 释放锁站在程序性能的角度,实际上我们想要的是这样的效果。1.读和读之间不互斥,因为只读操作不会有数据安全问题2.写和写之间互斥,避免一个写操作影响另外一个写操作,引发数据计算错误问题3.读和写之间互斥,避免读操作的时候写操作修改了内容,引发数据脏读问题。
2024-05-09 10:16:17 366
翻译 快准稳:值得所有运维学习的SRE故障处理经验
在网络上关于 SRE 的讨论中,故障相关的内容比比皆是,但关于故障发生时的应急处理过程的详细讨论却寥寥无几。然而面对故障,故障指挥官一定面临着较大的压力,需要快速、正确地处置故障,应对内外部的挑战。在这篇文章中,我们将重点探讨故障指挥官在故障处理过程中的具体行动思路。值得注意的是,本文总结了作者在担任故障指挥官时,对故障感知、故障定级、故障处理以及故障恢复等环节的经验和心得,而并未涉及如何预防故障或进行故障复盘的内容。
2024-05-09 10:09:19 62
原创 多线程系列(九) -ReentrantLock常用方法详解
在上一篇文章中,我们介绍了类的一些基本用法,今天我们重点来介绍一下其它的常用方法,以便对类的使用有更深入的理解。/*** 默认创建非公平锁*//*** fair为true表示是公平锁,fair为false表示是非公平锁*/相比于同步锁,有一个很大的特点,就是开发人员可以手动指定采用公平锁机制还是非公平锁机制。公平锁:顾名思义,就是每个线程获取锁的顺序是按照线程排队的顺序来分配的,最前面的线程总是最先获取到锁。优点:所有的线程都有机会得到资源。
2024-05-08 20:35:36 690
原创 多线程系列(八) -ReentrantLock基本用法介绍
在之前的线程系列文章中,我们介绍到了使用关键字可以实现线程同步安全的效果,以及采用wait()notify()和方法,可以实现多个线程之间的通信协调,基本可以满足并发编程的需求。但是采用进行加锁,这种锁一般都比较重,里面的实现机制也非常复杂,同时获取锁时必须一直等待,没有额外的尝试机制,如果编程不当,可能就容易发生死锁现象。从 JDK 1.5 开始,引入了一个高级的处理并发的包,它提供了大量更高级的并发功能,能大大的简化多线程程序的编写。比如我们今天要介绍的包提供的。
2024-05-08 20:33:29 251
翻译 【玩转香橙派Orange Pi】香澄派(Orange Pi AIpro)踩坑第一弹
在科技迅速发展的今天,智能硬件设备如香澄派(Orange Pi AIpro)的开发板因其强大的功能和便捷的操作受到广大电子爱好者和专业人士的青睐。然而,随着使用频率的增加,用户可能会遇到外机壳过热的问题,这不仅影响设备的稳定性和使用寿命,还可能对用户的安全造成威胁。通过科学的方法和技术手段,我们不仅能够有效解决过热问题,还能提升设备的工作效率和使用寿命,确保用户的利益和安全。先进性模式的切换,将本来设定的自动模式改为手动模式,然后在进行转速的设定,不到两分钟温度就降下来了。
2024-05-08 20:26:58 315
原创 多线程系列(七) -ThreadLocal 用法及内存泄露分析
在 Java web 项目中,想必很多的同学对这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束。比如下面这个参数传递的简单例子!/*** 线程本地变量*//*** 存储请求对象*//*** 获取请求对象* @return*//*** 移除请求对象* @return*/@Override// 存储请求对象变量try {// 业务逻辑...// 请求完毕之后,移除请求对象变量。
2024-05-07 11:03:07 815 1
原创 多线程系列(六) -等待和通知模型详解
在之前的线程系列文章中,我们介绍了和volatile关键字,使用它能解决线程同步的问题,但是它们无法解决线程之间协调和通信的问题。举个简单的例子,比如线程 A 负责将 int 型变量 i 值累加操作到 10000,然后通知线程 B 负责把结果打印出来。这个怎么实现呢?其中一个最简单的办法就是,线程 B 不断的通过轮询方式检查是否满足条件,这样就可以实现了。虽然这种方式可以实现需求,但是也带来了另一个问题:线程 B 中的while()
2024-05-07 10:59:34 720
翻译 如何理解平台工程的本质?
平台可复用服务从中台架构(“中台”的概念太过混乱,这里是优化的中台架构,中台实现的是经过抽象和封装的以微服务为粒度的企业级可复用服务,不包括支撑这些服务的平台和工具)来说,就是中台架构中的在企业内共享和复用的服务,服务粒度可以是微服务,和平台工程所推崇的 API 化是一致的。这就要求内部系统、工具平台等的整合、融合,疏通内部协作,构建统一的基础设施,自服务工具、平台、流程等,通过复用和自动化,环境一致性提升交付效率,部署效率,变更效率,可观测性能力等。不过平台工程的价值不仅仅限于赋能,它是技术发展的结果。
2024-05-07 10:53:35 91
原创 多线程系列(五) -死锁分析及解决办法介绍
在之前的文章中,我们介绍了同步锁关键字的作用以及相关的用法,它能够保证同一时刻最多只有一个线程执行修饰的代码段,以实现线程安全执行的效果。但是如果过度的使用等方式进行加锁,程序可能会出现死锁现象。那什么是死锁呢?它有什么危害?我们知道被修饰的代码,当一个线程持有一个锁,其它线程尝试去获取这个锁未获取到时,那么其它线程会进入阻塞状态,直到线程释放锁才能再次拥有获取锁的条件。
2024-05-06 20:32:08 902 5
原创 多线程系列(四) -volatile关键字使用详解
在上篇文章中,我们介绍到在多线程环境下,如果编程不当,可能会出现程序运行结果混乱的问题。出现这个原因主要是,JMM 中主内存和线程工作内存的数据不一致,以及多个线程执行时无序,共同导致的结果。同时也提到引入同步锁,可以保证线程同步,让多个线程依次排队执行被修饰的方法或者方法块,使程序的运行结果与预期一致。不可否认,采用同步锁确实可以保证线程安全,但是它对服务性能的消耗也很大,
2024-05-06 20:29:44 627
翻译 各类算力芯片,如何繁荣生长?
智能自动驾驶涉及人机交互、视觉处理、智能决策等众多方面,车载传感器(激光雷达、摄像头、毫米波雷达等)的不断增加,数据处理的实时性、复杂性和准确性要求不断提高,都对车载算力提出了更高的要求。在智能驾驶中,安全至关重要,因此该场景对算力芯片的可靠性有着极高的要求,对于芯片通用性的要求也较高,对于功耗和成本的要求就相对没有那么苛刻。相比于GPU,FPGA具有更高的处理速度和更低的能耗,但相比相同工艺条件下的ASIC,FPGA仍有不及,不过FPGA可以进行编程,相比ASIC也更加灵活。
2024-05-06 20:25:59 61
原创 多线程系列(三) -synchronized 关键字使用详解
在之前的线程系列文章中,我们介绍了线程创建的几种方式以及常用的方法介绍。今天我们接着聊聊多线程线程安全的问题,以及解决办法。实际上,在多线程环境中,难免会出现多个线程对一个对象的实例变量进行同时访问和操作,如果编程处理不当,会产生脏读现象。我们先来看一个简单的线程安全问题的例子!count++;@Overridej++) {// 初始化数据实体//使用多线程编程对数据进行计算i < 10;i++) {try {第一次运行:result: 9788554。
2024-05-05 21:33:06 967 2
原创 多线程系列(二) -Thread类使用详解
在之前的文章中,我们简单的介绍了线程诞生的意义和基本概念,采用多线程的编程方式,能充分利用 CPU 资源,显著的提升程序的执行效率。其中是 Java 实现多线程编程最核心的类,学习Thread类中的方法,是学习多线程的第一步。下面我们就一起来看看,创建线程的几种方式以及Thread类中的常用方法。构造方法实例方法静态方法。
2024-05-05 21:28:47 1034
翻译 懂数据还不够,重要的是拥有数据思维!
就在前段时间,我的一个游戏分析师朋友告诉我,他的公司做了款游戏,很受欢迎,他们分别开发了安卓、iOS、Pad 等等版本。之前,我一直关注的数据大神“郭炜”,他是前易观的 CTO,易观大家都知道,专业做大数据分析研究的,他在极客时间上出了一个《数据分析思维课》专栏,把自己 20 年来的数据分析心法、思考方式、项目经验都浓缩在这里了。我自己看了两遍了,也给大家推荐过好几次,他梳理了一条从「数据分析基础 → 数据算法基础 → 分析工具」的学习路径,并整理了 15 种数据思维图,帮你获得与数据工作者对话的能力。
2024-05-05 21:20:28 32
原创 多线程系列(一) -线程技术入门知识讲解
在很多场景下,我们经常听到采用多线程编程,能显著的提升程序的执行效率。例如执行大批量数据的插入操作,采用单线程编程进行插入可能需要 30 分钟,采用多线程编程进行插入可能只需要 5 分钟就够了。既然多线程编程技术如此厉害,那什么是多线程呢?在介绍多线程之前,我们还得先讲讲进程和线程的概念。从计算机角度来讲,进程是操作系统中的基本执行单元,也是操作系统进行资源分配和调度的基本单位,并且进程之间相互独立,互不干扰。例如,我们windows。
2024-05-04 11:29:37 1022
原创 golang反射
有时我们需要写一个函数,这个函数有能力统一处理各种值类型,而这些类型可能无法共享同一个接口,也可能布局未知,也有可能这个类型在我们设计函数时还不存在,这个时候我们就可以用到反射反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。
2024-05-04 11:15:30 692
翻译 软件架构模式之第一章:介绍
常见的混合架构风格包括基于事件驱动的微服务(通过微服务之间的事件进行通信)、基于空间划分的微服务(将处理单元作为微服务实现)甚至是事件驱动型微内核架构(核心系统与远程插件组件之间通过事件进行交互)。一些架构风格自然地适用于高度可伸缩的系统,而其他架构风格则自然地适用于允许开发人员快速响应变化的应用程序。架构模式与设计模式(如生成器设计模式)有所不同,架构模式主要影响系统的结构方面,而设计模式则主要影响源代码的设计方式。在第二版中,您会注意到一个变化,即本报告所描述的架构被称为“架构风格”而非“架构模式”。
2024-05-04 11:11:37 42
原创 zookeeper源码-follower处理客户端请求
CommitProcessor处理器会将其提交到committedRequests队列,之后客户端Request会继续向下游FinalRequestProcessor处理器传递。logRequest会使用syncProcessor将事务写入到txnlog文件,之后调用SendAckRequestProcessor处理器给leader发ack数据包。在follower中,Follower使用processPacket方法处理来自leader的数据包,此处看一下PROPOSAL和COMMIT的逻辑。
2024-05-03 10:09:45 755
原创 深入理解C语言循环结构,高效实现重复性任务
前面贝蒂带大家了解了选择结构,今天就来为大家介绍,也就是我们熟悉的的用法。只要给定的条件为真,C 语言中的循环语句会重复执行一个目标语句。
2024-05-03 10:05:18 136 1
翻译 性能与Llama 3 70B相当,训练成本更低:Snowflake开源Arctic大模型的市场搅局
我们相信,AI的发展将建立在我们正在构建的数据基础之上。根据Snowflake分享的基准测试数据,在性能上,Arctic在GenAI基准测试中与其他LLMs得分相近,平均得分为65%,与Llama 3 70B的平均企业性能相当,并仅略逊于Mistral 8X22B的70%得分。Snowflake夸下海口,“Arctic”不仅架构创新,以“专家混合”模式优化了模型,以应对五花八门的企业用例,而且在Apache 2.0许可下,大方公开了模型的权重及训练细节,为AI界树立了新的“开放”标杆。
2024-05-03 09:48:50 92
原创 golang中协程&管道&锁
(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基 本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进 程都有一个自己的地址空间。一个进程至少有 5 种基本状态,它们是:初始态,执行态, 等待状态,就绪状态,终止状态,通俗的讲进程就是一个正在执行的程序。互斥锁是完全互斥的,但是有很多实际的场景下是读多写少的,当我们并发的去读取一个资源不涉及资源修改的时候是没有必要加锁的,这种场景下使用读写锁是更好的一种选择。的规则,保证收发数据的顺序。
2024-05-02 10:47:30 989 2
原创 Redis能保证数据不丢失吗?
大家即使没用过Redis,也应该都听说过Redis的威名。Redis是一种Nosql类型的数据存储,全称Remote Dictionary Server,也就是远程字典服务器,用过Dictionary的应该都知道它是一种键值对(Key-Value)的数据结构,所以Redis也称为KV存储。Redis的用途十分广泛,包括帮助网页快速加载,管理登录状态,更新社交动态、游戏积分排名、电商抢购秒杀,等等,有点规模的应用后边都有它的身影。
2024-05-02 10:42:39 1023
翻译 如何开展特定数据域的数据治理
利用定义的数据标准以及为优先数据域CDE数据域收集的数据质量规则、指标、目标和阈值,了解究竟是什么使数据适合每个数据域的目的。总之,特定数据域的数据治理为组织提供了显着的优势,有助于有针对性、量身定制并快速关注治理方面感兴趣的数据域,提供跨业务、职能、产品、数据域的整体视图。特定于数据域的数据治理可帮助组织立即关注最关键的数据域或问题数据域,并针对数据域进行定制。这有助于实现特定数据域数据治理的显着优势,即跨组织内的业务/职能建立通用且一致的定义、数据质量规则和衡量标准,提供数据域的整体视图。
2024-05-02 10:37:07 28
原创 最简最快了解RPC核心流程
客户端Proxy/*** 获取代理Service*/@Overridethrow new IllegalAccessException("不能访问" + methodName + "方法");throw new RuntimeException("无法找到对应的服务提供者");});服务端Proxy@Overridetry {//interfaceIdentity组成:接口类+方法+参数类型//拿出是哪个类//拿出是哪个方法。
2024-05-01 19:30:21 60 2
原创 Kubernetes leader election 源码分析
lease 存储在 etcd 中,通过 Raft 算法实现 lease 资源的唯一性和原子性,以保证多副本仅可抢占唯一的 lease。接着看状态转移图中的更新 lease 的流程,场景是 lease 资源已存在并过期,holder 是 id 为 1 的进程。进程 2 抢占不到 lease,因为此时进程 1 是 leader,且 lease 未被释放或者过期。可以看到,id 为 1 的进程(简称进程 1)抢占到 lease,接着进入进程的运行逻辑。实现的就是状态转移图中的逻辑,这里我们仅关注创建锁这一流程。
2024-05-01 19:18:28 886
翻译 广交会烹饪机器人用上大模型 支付宝小程序云提供技术支持
大模型服务运行在支付宝小程序云上,使得CookGPT不仅具备基础的身份认同、多语言适应和无关问题拒答能力,还能进行精准的意图识别、人群精细化分层推荐,以及复杂语义的深层理解等专业化功能,从而满足不同用户群体在烹饪领域的广泛和多元化需求。通过CookGPT,用户可以在田螺云厨官方APP上,用自然语言进行流畅问答,比如询问烹饪知识、菜谱查找、膳食营养,在确定好食谱后,可进一步驱动机器人一键炒菜,温度、火力、时长完全自动化。各类智能产品的亮相,从中国制造迈向中国创造,也成为广交会的一个亮点。
2024-05-01 19:08:45 20
原创 Java里使用AspectJ实现AOP
前言已经正式从NET转型JAVA。今后开始多写一点JAVA相关的文章。因为已经正式转Java了,所以,对于Java的一些判断,应该就比以前更准确了。总得来说,java有好的东西,有不好的东西,就语言本身和java的常用组件来讲,并不能判断,java比其他语言高一个档次,当然,也不会低一个档次。应该跟其他语言是一个段位的。但java的调试,确实是比较花费时间,他做不到编译成功后,就能运行成功。这里有注解的问题,有maven的问题,有组件版本的问题。总之,检测的非常不好,非常浪费时间。java的好处就是,团队成
2024-04-30 21:18:49 578 1
原创 SQL中为什么不要使用1=1?
1=1”在SQL语句中可能看起来无害,但实际上它是一种不良的编程习惯,可能会导致性能下降。就像在做饭时不会无缘无故地多加调料一样,我们在编写SQL语句时也应该避免添加无意义的条件。
2024-04-30 21:06:29 1085 5
翻译 数据库管理 - 分库分表vs分布式
Oceanbase还通过引入租户模式,可以实现业务的拆分与隔离,通过对租户主可用区的规划,可以做到不同副本承载不同业务的负载。
2024-04-30 21:02:34 101
原创 vue 快速入门 系列 —— 玩转 CMS
例如 src/layouts/BasicLayout.less,里面包含一些基本布局的样式,被 src/layouts/BasicLayout.vue 引用,项目中使用这种布局的页面就不需要再关心整体布局的设置。好比中医发展了好几千年,许多本源的东西老中医也是不清楚的,但我们摸索出一套规则,按照这个能治病,这个就很好。.clearfix() 混合器定义了清除浮动的样式。组件相关的样式,有一些在页面中重复使用的片段或相对独立的功能,你可以提炼成组件,相关的样式也应该提炼出来放在组件中,而不是混淆在页面里。
2024-04-29 10:23:29 1018 6
原创 序列化协议:Protobuf入门
在上一个步骤中,我们已经写好了一个.proto文件,接下来要做的就是根据这个.proto去生成一系列用于读写地址簿数据的类。在这里要使用 protobuf 的编译器:protoc。protoc运行时,若无指定路径,则当前工作路径即为其默认路径;这条命令运行后,protocxxx.pb.h和xxx.pb.cc。
2024-04-29 10:12:34 835
翻译 降本增效,如何做到实时可量化精益人效?
以盖雅工场为例,其劳动力管理系统,能够让不同区位,让不同客群的奶茶店都拥有每小时最优的员工配置,最优的打工方案,这就是效率,这就是高效的精准配置。因为砍掉应有的成本,可能会导致品质下降,提升人效需要将企业的资源能够用到极致来减少浪费,真正让合适的人在合适的时间出现,在合适的地点,干合适的活,拿到合适的钱。”章新波进一步指出。章新波强调,人效的提升并非一蹴而就,人力资源的精准配置并不是一成不变的,需要随着市场变化和企业发展及时动态调整,与企业的发展节奏步调一致,相契合,保持企业组织的活力和竞争力。
2024-04-29 09:54:03 70
原创 C++ map自定义比较函数遵守严格弱序
由以上代码可见,map是可以自定义Compare比较函数和Alloc分配器的,此处就使用了自定义的Compare比较函数,应用于ByteArray数据类型。具体到我们此处的代码:此时我们已经遍历完成了a和b中较短的那个,但是对于剩余长度,没有进行比较,而是直接返回true,因此出现了上述的非严格弱序问题。例:(a, b)形式输入,输出结果为a < b(假设为false),(b, a)形式输入,输出结果应该为true,若为仍false则会出现问题。至此,我个人百思不得其解,按照常理来说,应该是没有问题的。
2024-04-28 22:23:56 368 1
原创 Python学习之Pytorch
在Python环境中查看是否安装了PyTorch可以通过几个简单的步骤来完成。这里有一些方法:使用Python命令行:打开你的命令行工具(比如Terminal、Command Prompt或Anaconda Prompt),然后输入Python来启动Python解释器。之后,尝试导入PyTorch库来看看是否会报错。如果PyTorch已经安装,这将打印出PyTorch的版本号。如果没有安装,你会收到一个。使用pip列表:在命令行中,你可以使用pip包管理工具列出所有已安装的Python包。
2024-04-28 22:19:29 604
翻译 了解计算机
计算机在人类社会中的地位逐渐上升,已到了不可替代的地位。电竞房里、办公桌上,计算机的身影随处可见。学会更好的利用电脑,更方便地使用计算机,能够让我们工作的效率更高。对于计算机这熟悉的工具,我们又了解多少呢?
2024-04-28 22:12:32 48
305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\空调系统示意图.dwg
2024-06-28
305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\空调标高空调平面图.dwg
2024-06-28
305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\空调08二层空调平面图(二).dwg
2024-06-28
305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\空调07二层空调平面图(一).dwg
2024-06-28
305建筑结构水电欧式6套(14.5x20.2)\施工图\D型施工图\空调06首层空调平面图(二).dwg
2024-06-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人