自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(273)
  • 资源 (4)
  • 问答 (4)
  • 收藏
  • 关注

原创 SqlConnection、SqlCommand 和 SqlDataAdapter

本文介绍了ADO.NET中操作SQL Server数据库的三大核心组件:SqlConnection、SqlCommand和SqlDataAdapter。SqlConnection负责建立数据库连接,SqlCommand用于执行SQL命令,而SqlDataAdapter则在数据库与DataSet/DataTable之间建立桥梁。文章通过代码示例展示了各组件的基本用法,并对比了连接式(SqlCommand)和断开式(SqlDataAdapter)两种数据访问方式的适用场景。最后通过一个综合示例演示了如何在实际应

2025-11-22 18:07:07 609

原创 多线程之线程安全集合(Thread-Safe Collections)

本文介绍了C#中的线程安全集合及其应用场景。主要讲解了四种System.Collections.Concurrent命名空间下的线程安全集合:ConcurrentQueue(线程安全队列,先进先出)、ConcurrentStack(线程安全栈,后进先出)、ConcurrentBag(线程安全无序集合)和ConcurrentDictionary(线程安全字典,使用分段锁技术)。通过银行存取款、餐厅盘子叠放、杂物抽屉和酒店房卡管理等生活化比喻,形象说明了各类集合的特点。文章包含丰富的代码示例,展示了多线程环境下

2025-11-12 15:03:30 955

原创 C# 中的 Trace.Assert

Trace.Assert是.NET中的运行时断言检查工具,用于验证代码中的关键条件。它通过条件判断来捕获潜在问题,当条件为false时触发错误信息。与Debug.Assert不同,Trace.Assert在发布版本中仍有效。典型应用包括参数验证(如检查非空/合法值)、状态检查(如余额验证)和集合操作安全(如索引边界检查)。可通过配置文件或自定义TraceListener(如日志记录、邮件报警)进行扩展。在Web API开发中特别适用于核心参数的防御性验证,是保障代码健壮性的重要手段。

2025-11-11 09:38:46 764

原创 重写 Equals 为何必须重写 GetHashCode

摘要: 在C#中,重写Equals方法时必须同时重写GetHashCode,否则会导致哈希集合(如Dictionary、HashSet)出现严重错误。默认的Object.GetHashCode基于对象引用而非值,导致相等的对象可能返回不同哈希码,违反哈希集合的契约。这会导致Dictionary查找失败、HashSet重复存储、Distinct失效等问题。正确做法是实现IEquatable<T>,并用HashCode.Combine生成一致的哈希码。哈希码应基于不可变字段,或在构造时缓存以提高性能

2025-11-10 17:06:34 522

原创 多线程之线程本地存储(Thread-Local Storage)

线程本地存储(TLS)解决了多线程编程中共享变量的竞争问题,为每个线程提供独立的变量副本。C#提供了三种实现方式: [ThreadStatic]特性标记静态字段,轻量但功能有限; ThreadLocal<T>支持初始化工厂和线程安全,推荐使用; AsyncLocal<T>专为异步编程设计,能在线程切换时保持上下文。 典型应用场景包括线程安全的Random实例、数据库会话管理等。TLS避免了锁竞争开销,简化了线程特定数据的处理,是高性能多线程编程的重要工具。

2025-11-05 17:12:22 1056

原创 多线程之内存屏障(MemoryBarrier)

摘要: MemoryBarrier(内存屏障)用于解决现代计算机系统中由编译器优化重排序、CPU乱序执行和缓存一致性问题导致的并发问题。其核心作用是阻止指令重排序和保证内存操作的可见性。在C#中可通过Thread.MemoryBarrier()显式插入全屏障,或通过Interlocked类、lock语句隐式实现屏障,也可使用volatile关键字实现轻量级的“释放-获取”同步。最佳实践中,优先使用lock确保安全,无锁编程时选择Interlocked,仅在必要时手动控制内存屏障。MemoryBarrier本

2025-11-04 15:24:03 677

原创 C# 中的双缓冲区

双缓冲区是一种图形渲染技术,通过使用两个"画布"(前台和后台缓冲区)来消除画面闪烁问题。其核心思想是将所有绘制操作先在后台缓冲区完成,然后瞬间切换到前台显示,确保用户看到的是完整的画面而非绘制过程。在C#中可以通过设置DoubleBuffered属性或手动创建后台缓冲区来实现。这种技术不仅能消除闪烁,还能提高性能、实现平滑动画效果,特别适用于需要频繁重绘或复杂图形处理的场景。典型应用包括游戏开发、动画制作等需要流畅视觉效果的程序。

2025-11-04 15:23:29 801

原创 多线程之取消框架(Cancellation Framework)

本文介绍了.NET中的取消框架机制,通过餐厅点餐的比喻形象说明了其工作原理。核心包括两个组件:CancellationTokenSource(取消信号发射器)和CancellationToken(取消信号接收器)。CancellationTokenSource负责创建令牌并发出取消请求,而CancellationToken则用于监听取消信号并传播给相关操作。文章深入解析了底层实现机制,包括状态管理、回调注册和执行过程,以及如何通过链接多个令牌实现复合取消逻辑。该框架提供了一种协作式、可传播的取消机制,使长时

2025-11-03 15:38:14 707

原创 多线程之并发集合(Concurrent Collections)

本文通过生活比喻和代码示例解析了并发集合的核心原理。文章首先将普通集合比作单收银台,而并发集合则类比为多收银台系统,详细说明了ConcurrentQueue、ConcurrentStack等不同集合类型的工作机制。核心部分揭示了四种线程安全实现策略:细粒度锁、无锁编程、线程本地存储和比较并交换技术,并通过代码示例展示了ConcurrentQueue的无锁实现原理,包括节点链接和原子操作等关键技术。全文从比喻到代码层面,系统阐述了并发集合如何通过精细设计实现多线程安全访问。

2025-11-03 15:37:57 556

原创 多线程之同步上下文(Synchronization Context)

同步上下文(SynchronizationContext)是.NET中一个抽象调度机制,它负责将代码执行调度到适当的线程或上下文。核心功能包括:1)捕获当前上下文;2)通过Post/Send方法在不同线程间调度任务。UI框架(WPF/WinForms)会实现特定上下文确保UI操作在主线程执行。在异步编程中,await默认会捕获并恢复原始上下文,ConfigureAwait(false)可禁用此行为。底层通过状态机捕获上下文,并在任务完成后使用Post方法将延续任务调度回原线程执行。这种机制简化了跨线程的UI

2025-10-30 13:36:11 753

原创 多线程之异步编程模型(Async/Await)

本文深入解析C#中Async/Await的底层原理与实现机制。通过餐厅服务类比同步/异步执行方式,揭示Async/Await作为语法糖的本质,使异步代码具有同步代码的可读性。核心内容包括:1) 编译器将async方法转换为状态机实现非阻塞执行;2) 执行上下文的流动机制;3) 基于等待器(Awaiter)模式的通用实现原理;4) 同步上下文(SynchronizationContext)对线程调度的影响。文章还展示了基础异步操作示例,并详细分析了状态机转换、任务构建器等底层实现细节,帮助开发者深入理解异步编

2025-10-30 13:35:07 557

原创 多线程之并行循环(Parallel.For、Parallel.ForEach)

并行循环通过任务分割和负载均衡实现高效并发处理。Parallel.For采用范围分割,将迭代区间平均分配给多个线程;Parallel.ForEach使用块分割或动态工作窃取算法,从共享队列中获取任务。底层通过分区策略、状态机和执行流程管理循环迭代,确保线程安全和异常处理。动态负载均衡机制(如工作窃取)能自动调整任务分配,提高CPU利用率,适用于不同规模的数据处理场景。

2025-10-27 14:54:16 852

原创 多线程之任务并行库(Task Parallel Library, TPL)

摘要:TPL任务并行库的核心原理与实践 TPL(Task Parallel Library)是基于线程池的高级任务抽象模型,提供高效的并行编程方式。其核心架构分为四层:async/await语法糖(顶层)、Task类型(中层)、线程池与任务调度器(底层)。TPL通过任务状态机管理任务状态、结果、异常和延续任务。任务调度机制将任务放入线程池队列执行,支持异步/等待模式,编译器将async方法转换为状态机实现非阻塞调用。基础操作包括启动任务、等待结果、处理异常等,使开发者能更简单高效地实现并发编程。

2025-10-27 14:17:19 708

原创 多线程之屏障(Barrier)

文章摘要 屏障是一种线程同步机制,用于协调多个线程在特定集合点(屏障点)同步执行。其核心原理是:所有参与的线程必须到达屏障点后,才能共同进入下一阶段。屏障内部通过阶段号、参与者计数和等待队列等状态管理线程同步,确保阶段间的内存可见性。典型应用场景如并行计算,其中屏障可协调各线程分阶段完成任务,并汇总结果。若线程异常或超时,屏障可能损坏,需特殊处理。屏障既包含用户态的自旋等待优化,也依赖内核对象实现线程唤醒,是多线程协作的重要工具。

2025-10-26 22:31:58 885

原创 多线程六脉神剑第六剑:事件同步 (AutoResetEvent/ManualResetEvent)

事件同步机制通过信号状态协调线程执行顺序。ManualResetEvent像火车站大门,打开时所有线程同时通过,需手动关闭;AutoResetEvent则像旋转闸机,每次仅放行一个线程后自动关闭。内核对象维护信号状态和等待队列,Set()方法根据事件类型唤醒线程:手动事件唤醒所有线程并保持信号,自动事件仅唤醒一个线程后重置信号。典型应用场景包括线程协调(如ManualResetEvent控制批量线程启动,AutoResetEvent实现生产者-消费者模型)。两种事件通过不同的信号管理模式满足不同的线程同步需

2025-10-25 20:48:17 918

原创 多线程六脉神剑第五剑:原子操作 (Interlocked)

原子操作是编程中确保操作不可分割执行的关键机制。通过CPU指令级的保证,如CAS(比较并交换)和内存屏障,原子操作能够实现线程安全的变量更新。在C#中,Interlocked类提供了各种原子操作方法,如递增、递减、加法、交换等。其底层依赖于CPU的缓存一致性协议(如MESI)来确保多核环境下的数据同步。原子操作的核心特点是全有或全无,不会出现中间状态,常用于实现无锁数据结构和高性能并发控制。

2025-10-25 20:47:49 808

原创 多线程六脉神剑第四剑:读写锁 (ReaderWriterLockSlim)

读写锁(ReaderWriterLockSlim)是处理"读多写少"场景的高效并发控制机制。其核心原理是基于锁的兼容性规则:允许多个线程并发读取,但写操作必须独占访问。读写锁内部通过状态计数器管理读/写锁的获取与释放,并采用公平策略防止写者饥饿。典型应用场景如缓存系统,读操作用共享锁(允许多线程并发),写操作用独占锁(保证数据一致性)。通过区分读/写操作,读写锁在保证线程安全的同时,显著提升了高并发读场景下的性能表现。

2025-10-24 21:00:34 764

原创 多线程六脉神剑第三剑:信号量 (Semaphore)

摘要: 信号量是一种控制资源并发访问的同步机制,通过计数器管理可用许可数。其核心原理包括原子计数器操作和两阶段获取策略(用户态自旋+内核等待)。典型应用场景如数据库连接池,通过WaitOne()获取许可(无许可时阻塞)和Release()归还许可,确保资源合理分配。现代实现优化了性能,减少内核切换开销。信号量适用于限制线程并发数,避免资源竞争。

2025-10-24 21:00:01 974

原创 多线程六脉神剑第二剑:监视器锁 (Monitor)

摘要 .NET中的Monitor是线程同步的核心机制,通过对象头中的同步块索引实现锁管理。类比打印机场景:Monitor.Enter/Exit对应获取/释放打印权限,Wait/Pulse机制支持线程协调。Monitor本质依赖对象的SyncBlock存储锁状态(拥有者线程、重入计数、等待队列)。lock语法糖简化了Monitor的使用,而Wait/Pulse可用于生产者-消费者等复杂场景,实现高效线程通信。Monitor能有效保护共享资源,但需注意异常处理和锁释放以避免死锁。

2025-10-23 21:18:47 940

原创 多线程六脉神剑第一剑:互斥锁 (Mutex)

Mutex(互斥锁)的本质是操作系统内核维护的同步原语,通过用户态自旋和内核态等待的两阶段策略实现高效线程同步。核心特性包括线程所有权、递归获取和跨进程能力,适用于需要长时间持有或复杂协调的场景。其底层依赖CPU原子指令和内核队列管理,虽比用户态锁开销大,但能确保线程安全。Mutex通过物理标志(如门锁)的机制,保证同一时刻只有一个线程访问共享资源。

2025-10-23 21:18:04 989

原创 多线程之“六脉神剑”

多线程同步的"六脉神剑"包含六种核心机制:1)互斥锁(Mutex),跨进程同步的刚猛解决方案;2)监视器锁(Monitor),C#中最常用的轻量级锁机制;3)信号量(Semaphore),控制并发线程数量的方案;4)读写锁(ReaderWriterLock),优化读多写少场景;5)原子操作(Interlocked),轻量级线程安全操作;6)自旋锁(SpinLock),低延迟场景的高性能选择。这些机制各具特色,适用于不同的并发场景,开发者可根据性能需求、并发规模和资源特点灵活选择。

2025-10-22 14:10:04 743

原创 KeyValuePair 与 Dictionary

KeyValuePair是C#中一种轻量级键值对结构体,主要用于存储两个相关联的数据。其核心特点包括:1) 键(Key)作为唯一标识,值(Value)存储对应数据;2) 结构体设计使其内存分配高效;3) 不可变性保证线程安全;4) 是字典(Dictionary)的基础元素。典型应用场景包括字典遍历、方法返回多个值、配置存储和LINQ查询。但KeyValuePair功能简单且不可修改,在需要灵活性的场景下,可考虑使用元组(Tuple)或自定义类替代。

2025-10-22 10:33:10 1209

原创 三大并发集合ConcurrentDictionary、ConcurrentBag、ConcurrentQueue

本文介绍了.NET中的三种并发集合:ConcurrentQueue(并发队列)、ConcurrentDictionary(并发字典)和ConcurrentBag(并发包)。ConcurrentQueue采用无锁链表实现先进先出,适合任务调度场景;ConcurrentDictionary使用分段锁哈希表实现键值存储,适合缓存管理;ConcurrentBag通过线程本地存储和工作窃取机制实现无序集合,最适合对象池应用。文章通过比喻说明原理,比较了三者的数据结构、性能特点和适用场景,并提供了实际代码示例。选择建议

2025-10-21 17:42:38 925

原创 C# 预处理指令 (# 指令) 详解

C#预处理指令是编译前的指令,用于条件编译、诊断和代码组织。条件编译指令如#define、#if等可定义符号并根据条件编译代码块。诊断指令#warning和#error用于生成警告或错误。行指令#line控制错误报告中的行号,区域指令#region/#endregion组织代码结构。#nullable指令控制可空引用类型检查。实际应用场景包括多环境配置,如开发/生产环境使用不同数据库连接字符串。这些指令在编译前处理,不会出现在最终IL代码中,是强大的代码管理工具。

2025-10-14 18:11:41 936 6

原创 ValueTuple 详解

C# ValueTuple 是一种轻量级的值类型元组,可以临时组合多个不同类型的数据而无需定义新类。核心特性包括:值类型(栈分配)、解构功能和与方法的无缝集成。实际应用场景广泛,如替代 out 参数实现优雅的多返回值、在 LINQ 查询中创建临时数据结构、简化多条件排序等。通过解构语法,可以轻松提取元组中的值,特别适合需要临时数据组合或方法返回多个值的场景。相比传统方式,ValueTuple 提供了更简洁、高效的代码编写方式。

2025-10-11 17:06:35 853

原创 CancellationToken与Abort

摘要: CancellationToken 是 .NET 中用于协作式取消任务的机制,类似于交通系统中的红绿灯控制。它通过 CancellationTokenSource(指挥中心)发出取消信号,任务通过 Token(红绿灯)检查是否被取消,并安全终止。其核心功能包括: 协作式取消:任务主动检查取消请求,确保安全停止。 资源安全:通过 using 和异常处理保证资源释放。 传播机制:一个取消信号可触发多个任务的连锁响应。 相比强制终止(如 Thread.Abort),CancellationToken 更安

2025-10-10 18:21:51 761

原创 volatile 关键字

volatile关键字说明

2025-10-10 17:52:20 867

原创 同步原语-Monitor、Mutex 与 Interlocked

C#多线程同步机制对比:Monitor与Interlocked Monitor是基于对象的互斥锁,通过SyncBlock机制实现,支持递归获取和条件变量(Wait/Pulse),适用于复杂的线程同步场景。Interlocked提供原子操作,直接使用CPU指令实现,性能更高但功能有限,适合简单计数器场景。两者选择取决于具体需求:Monitor适合需要锁保护的复杂逻辑,Interlocked适合高性能的原子变量操作。

2025-10-10 15:09:22 710

原创 【层面二】.NET 运行时与内存管理-01(CLR/内存管理)

.NET 运行时与内存管理

2025-09-18 22:15:36 1275

原创 【层面一】C#语言基础和核心语法-06(数据结构/常用设计模式)

文章摘要: .NET开发中高效使用数据结构和设计模式是提升代码质量的关键。数据结构分为线性结构(如数组、链表、栈、队列)和集合结构(如哈希集、字典、有序集合),各自适用于不同场景:数组适合随机访问,链表适合频繁增删,哈希结构优化查找,而有序集合保证排序。设计模式分为创建型(如工厂方法)、结构型(如适配器)和行为型(如观察者),通过封装变化提高灵活性,例如工厂方法将对象创建延迟到子类。核心原则是根据需求选择合适工具:索引用List,查找用Hash,排序用Sorted,增删用LinkedList,遵循“后进先出

2025-09-18 00:20:05 860

原创 【层面一】C#语言基础和核心语法-05(winform架构/可空引用)

WinForms架构与Nullable Reference Types摘要 WinForms架构: 采用餐厅服务员模型,核心是消息循环机制监听用户操作 基于Windows API构建,使用GDI+绘图 控件采用继承层次结构,事件驱动编程模型 优势是开发快速、简单易学,缺点是界面过时、缩放支持差 Nullable Reference Types: C# 8.0引入的编译时静态分析特性 目的:减少NullReferenceException 核心机制:区分可空和不可空引用类型 需在项目文件中启用,编译器会进行空

2025-09-17 10:15:52 615

原创 【层面一】C#语言基础和核心语法-04(Socket/类加载/多线程)

文章摘要: 本文通过生动的比喻系统讲解了.NET中的类加载机制和多线程原理。类加载被比喻为"建筑公司读取蓝图"的过程,详细阐述了CLR按需加载类的5个阶段:程序集定位→元数据读取→内存分配→静态初始化→就绪使用。重点分析了静态构造函数的陷阱与初始化时机控制。多线程部分则用"厨房厨师"类比,介绍了.NET线程管理的演进:从直接控制Thread类,到线程池ThreadPool优化资源,再到基于任务的Task并行库。文章揭示了两种机制的核心设计思想:类加载的惰性优化原则和多

2025-09-16 10:52:14 1063

原创 【层面一】C#语言基础和核心语法-03(泛型/集合/LINQ)

泛型是C#中的核心特性,通过将类型参数化解决代码重复与类型安全问题。在泛型出现前,开发者需为每种类型编写重复代码或使用object类型(导致装箱拆箱和运行时错误)。泛型在运行时动态生成具体类型,提供类型安全、高性能(避免装箱拆箱)和代码复用三大优势。使用泛型包括消费现有泛型(如List<T>)和创建自定义泛型类/方法,通过约束(如where T : IComparable)限制类型参数。高级主题协变(out)和逆变(in)增强了泛型接口和委托的灵活性。泛型极大提升了代码的可维护性和安全性,是.N

2025-09-15 22:21:41 904

原创 【层面一】C#语言基础和核心语法-02(反射/委托/事件)

摘要: 反射是.NET运行时利用程序集元数据实现的自省机制,通过System.Type类提供运行时类型检查和动态操作能力。其核心功能包括获取类型信息、动态创建对象和调用方法,但存在性能开销和安全性风险,适用于框架开发、DI容器、ORM等场景。委托则是类型安全的函数指针,通过定义方法契约实现间接调用,提供灵活的回调机制。两者均为.NET高级特性:反射强调运行时动态性,委托侧重方法解耦,需权衡性能与灵活性后谨慎使用。

2025-09-14 16:48:21 954

原创 【层面一】C#语言基础和核心语法-01(类型系统/面向对象/异常处理)

文章摘要 本文深入讲解.NET类型系统和面向对象编程基础。第一部分介绍类型系统的核心概念,包括CTS和CLS两大标准,重点分析值类型与引用类型的区别,并通过身份证和保险箱的比喻帮助理解。第二部分阐述面向对象编程的基本概念,通过"类=蓝图,对象=房子"的类比,说明类作为模板与对象作为实例的关系,并以Dog类为例展示类的定义和对象实例化过程。全文强调类型系统为代码提供结构、安全性和可读性,是.NET开发的基石。

2025-09-13 22:39:25 854

原创 【.Net技术栈梳理】10-.NET Core 程序的执行

摘要:本文详细解析了.NET Core程序的执行流程与中间件模型。程序执行分为构建(配置和服务准备)和运行(中间件管道处理)两大阶段。构建阶段通过WebApplication.CreateBuilder()加载配置并初始化服务容器;运行阶段通过builder.Build()构建中间件管道,处理HTTP请求。中间件按特定顺序排列(异常处理→静态文件→路由→认证→授权→端点),形成"洋葱模型"处理流程。中间件可选择调用next()传递请求或直接"短路"返回响应,开发者可通

2025-09-12 23:53:40 1045 1

原创 【.Net技术栈梳理】09-面向切面编程AOP

面向切面编程(AOP)是OOP的重要补充,通过将横切关注点(如日志、事务、安全等)从核心业务逻辑中抽离,实现代码解耦和复用。AOP的核心概念包括切面(模块化功能)、通知(执行时机)、切点(应用位置)和连接点(插入时机)。在.NET中,可通过过滤器(如MVC的ActionFilter)和中间件实现AOP,前者针对特定控制器/方法,后者处理全局HTTP请求。典型应用场景包括日志记录、性能监控、权限校验等,使开发者能专注于业务逻辑,提升代码可维护性。

2025-09-12 23:41:29 1080

原创 【.Net技术栈梳理】08-控制反转(IoC)与依赖注入(DI)

IoC(控制反转)和DI(依赖注入)是解决对象耦合的设计原则和模式。IoC将对象创建的控制权交给外部容器,实现解耦,提升可测试性和扩展性。DI是IoC的具体实现方式,通过构造函数、属性或方法注入依赖。.NET中的DI系统包含服务注册(IServiceCollection)、解析(IServiceProvider)和注入三个核心组件,支持瞬时(Transient)、作用域(Scoped)和单例(Singleton)三种生命周期管理。在ASP.NET Core中,通过Program.cs配置文件实现服务注册和依

2025-09-12 23:07:31 1208

原创 【.Net技术栈梳理】07-面向对象OOP

面向对象编程(OOP)是一种基于"对象"概念的编程范式,将现实事物抽象为包含属性和方法的独立对象。其核心四大特性是:1)封装-隐藏内部实现细节,通过接口交互;2)继承-子类复用父类特性,建立类层次关系;3)多态-同一方法在不同子类中有不同实现;4)抽象-定义规范而不关心具体实现。OOP使代码组织更贴近现实世界,提高安全性、复用性和灵活性,但也存在处理横向关注点困难的局限性。

2025-09-12 23:05:00 485

原创 【.Net技术栈梳理】06-CORS

CORS(跨源资源共享)是现代Web开发中解决跨域访问的关键机制。它基于同源策略,允许服务器声明哪些外部源可访问其资源,平衡安全与功能需求。CORS请求分为简单请求(GET/POST等)和需预检的复杂请求(如PUT/DELETE)。服务器通过响应头(如Access-Control-Allow-Origin)控制访问权限,.NET Core可通过中间件和特性灵活配置CORS策略,包括允许特定源、方法和凭证(如Cookies)。开发时需注意预检请求流程和头部配置,确保安全跨域通信。

2025-09-09 14:47:06 1001

佳博热敏票据打印机中文编程手册

佳博热敏打印机中文编程手册包含打印命令、打印位置命名、查询与请求命令、行间距指令、字符设定命令、位图命令、条码命令、汉字字符控制命令、黑标命令、切刀命令、蜂鸣器命令、网口打印机状态检测命令、二维码命令、CODE128详解/综述、字符集

2019-04-25

佳博热敏标签打印机C# Demo

佳博热敏标签打印机C# Demo,通过C#语言调用模板进行标签打印

2019-04-25

C#微信后台代码

目前公众号应用越来越规范,该项目用于C#对接微信公众号,易懂,上手快。

2018-01-22

佳博条码机接口开发包

佳博条码机接口开发包包好多种语言的开发包,ASP.NET、ASP、BCB6、Delphi、FoxPro、Java、VB.NET、VBA_Access、VBA_Excel、VCsharp_Example以及TSCLIB.DLL函数库使用说明

2019-04-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除