禅与计算机程序设计艺术
著有《AI大模型应用入门实战与进阶》(写作中)《ClickHouse入门实战与进阶》《Kotlin 极简教程》《Spring Boot开发实战》《Kotlin从入门到进阶实战》等技术书籍。资深程序员、大数据与后端技术专家、架构师,拥有超过10年的技术研发和管理经验。现就职于字节跳动,曾就职于阿里巴巴,主要从事企业智能数字化经营管理、电商智能数字化运营等系统架构设计和研发工作。在大数据和企业级系统架构领域有非常深厚的积累,擅长大数据系统架构和分布式系统架构设计开发。热衷于新技术的学习和技术分享。
展开
-
Kotlin 入门极简教程
Kotlin 是一种现代、简洁且功能强大的编程语言,非常适合用于 Android 开发和服务器端开发。通过本教程的学习,你应该已经掌握了 Kotlin 的基础语法和核心概念。希望你能在实际项目中灵活运用这些知识,提升开发效率和代码质量。如果你对 Kotlin 有更多的兴趣,建议深入学习其高级特性和应用场景,并尝试开发一些实际项目来巩固所学知识。祝你在 Kotlin 的学习和使用中取得成功!原创 2018-11-05 14:10:00 · 8381 阅读 · 0 评论 -
C++异步编程与Coroutine
在计算机科学中,同步(synchronous)和异步(asynchronous)是两种不同的执行模型。同步编程:一个线程从头到尾依次执行每一行代码,直到该线程的执行流程被阻塞或结束。当一个函数调用发生在同步编程环境下时,调用线程会被阻塞,直到函数执行完成,线程才会继续往下执行。异步编程:允许多个操作并发执行,不需要等待其他操作完成就可以继续执行。当一个函数调用发生在异步编程环境下时,调用线程不会被阻塞,而是立即返回一个可观测对象(Promise),通过该对象可以获取函数返回值或监听函数执行状态。原创 2024-02-05 03:15:57 · 74 阅读 · 0 评论 -
Go必知必会系列:并发模式与锁
Golang从2009年诞生至今已经十多年的时间了,而它的并发特性也已经成为开发者们非常关注的问题。多线程、协程等编程模型虽然可以提高并行处理能力,但同时也带来了复杂性问题,导致编码难度变高,维护困难等一系列问题。为了解决并发编程中的各种问题,Golang在语言层面上提供了一些并发模式和同步机制,使得开发者可以方便地进行多线程和协程编程。这篇文章将要对Golang中最常用的几种并发模式和同步机制做个简要介绍,并结合具体的代码实例进一步阐述其工作原理。原创 2023-11-04 03:09:58 · 82 阅读 · 0 评论 -
Python 入门编程课系列:了解 Python,开启编程之旅
作者:禅与计算机程序设计艺术 1.背景介绍Python 是一种高级语言,它具有简单、易用、功能丰富等特点,并且拥有众多的库、工具和框架支持,是非常适合学习编程的语言。在学习 Python 的过程中,开发者需要掌握一些基础知识、技巧、调试方法等,才能顺利地编写出高质量的代码。另外,为原创 2023-10-28 02:38:13 · 123 阅读 · 0 评论 -
Rust编程基础教程:结构体和枚举类型
Rust 是由 Mozilla Research 开发的一门新兴的现代通用编程语言,它的设计目标是提供高效、可靠和并发的软件。它已经成为 Mozilla Firefox、Google Chrome、Dropbox等知名网站的后台语言,被越来越多的初创公司、小型公司和企业采用。它拥有独特的安全保证、极高的性能、实时性能保证以及活跃的社区支持。Rust语言中的结构体(struct)和枚举类型(enum)都是用来定义数据结构的两种主要方法。原创 2023-10-17 01:38:58 · 280 阅读 · 1 评论 -
【代码实践】A utility class JsonMapper that provides methods for converting Java objects to JSON(Jackson)
这些示例提供了基本的Jackson库使用指南,帮助你进行JSON序列化和反序列化。你可以根据需要进行进一步的定制,例如使用注解来控制字段的序列化和反序列化行为,处理复杂的JSON结构等。Jackson库提供了丰富的功能和选项,以满足不同的需求。Jackson是一个流行的Java库,用于处理JSON数据的序列化和反序列化。然而,我可以为你提供一个详细的Jackson库使用指南的概述,并包含一些关键的示例代码,以帮助你快速上手。Jackson的使用非常简单,只需要导入Jackson的依赖,然后就可以使用了。原创 2023-10-12 11:36:38 · 372 阅读 · 1 评论 -
Kotlin 序列化库介绍以及实践分享
作者:禅与计算机程序设计艺术 1.背景介绍Kotlin Serialization 简介Kotlin 是一个多范型编程语言,同时拥有静态类型检测和动态类型支持,具有安全、易用性强等优点。而它的一个重要特性就是可以编译成原创 2023-10-11 01:28:41 · 927 阅读 · 5 评论 -
Boost C++ Libraries 教程:从入门到进阶
Boost C++ Libraries 是一组高效且可扩展的C++编程工具箱,包括多种用于并行、图形图像处理、信号处理和数字信号处理领域的算法库和组件。Boost C++ Libraries 的目的是通过提供简洁而易于使用的接口,帮助开发者更加容易地构建出色的软件。Boost C++ Libraries 提供了许多开放源码项目中常用的技术实现,如哈希表、堆栈、队列、优先级队列、串列容器等。原创 2023-10-09 02:00:51 · 921 阅读 · 6 评论 -
Python编程基础教程:多线程与多进程编程
作者:禅与计算机程序设计艺术 1.背景介绍在软件开发过程中,我们经常需要处理大量的数据,因此需要充分利用计算机的硬件资源,提高我们的处理速度。由于CPU的单核特性,我们只能通过并行计算的方式提高我们的处理效率。但同时,由于CPU的存储、运算能力限制,内存容量往往会成为瓶颈,因此,除了CPU之外,计原创 2023-10-08 01:18:50 · 656 阅读 · 3 评论 -
Rust编程基础教程:物联网应用开发
Rust是一种多样化的编程语言,它具有极高的性能、安全性和可靠性,适合用在关键任务系统软件中。Rust编译器能够进行高效的代码优化,包括栈上分配、类型推断、借用检查、循环优化等等。Rust的并发机制、内存管理、面向对象编程特性使得它成为一个适用于复杂系统的优秀语言。Rust可以用于开发服务器应用程序、嵌入式设备驱动程序、实时系统软件、浏览器插件和游戏引擎。近年来,Rust的热度已经得到了很大的提升。目前,Rust已逐渐成为主流的语言,尤其是在云计算、微服务、区块链等领域。原创 2023-10-06 01:35:54 · 910 阅读 · 6 评论 -
Go编程基础教程:Go数据结构和算法
Go语言作为Google公司开源的编程语言,它的内置数据类型和标准库提供了丰富的数据结构和算法。本教程将会从实现基本数据结构开始,介绍四个重要的Go数据结构——数组、链表、栈、队列,以及二叉树、哈希表等高级数据结构及其应用。原创 2023-10-07 01:31:55 · 687 阅读 · 4 评论 -
Java编程基础教程:条件语句和循环结构
计算机语言是用来描述计算器或者机器的指令以及对数据的处理方式的集合。不同编程语言之间的语法、结构、运算符号可能都不相同,但它们在很多方面都是相通的。例如,C语言、Java语言、Python语言都是属于通用编程语言,可以用于编写运行于多种平台上的应用软件。Java是由Sun Microsystems开发的一种面向对象、跨平台的编程语言。作为一个资深的技术专家或是程序员,你需要熟练掌握各种编程语言,包括Java语言。因此,掌握Java语言的基本语法是成为高级工程师或是CTO的必备技能。原创 2023-10-06 01:28:27 · 644 阅读 · 3 评论 -
Go必知必会系列:内存管理与垃圾回收
对于任何一门编程语言来说,内存管理和垃圾回收都是其基本功能。在没有GC机制之前,程序员需要自己手动分配和释放内存,来达到动态分配和释放资源的目的。当代码中出现内存泄漏、堆栈溢出等问题时,就需要找出这些内存的泄漏点。而使用GC机制后,这一切都可以自动化处理。对于Go语言来说,GC(Garbage Collection)就是垃圾回收机制,是编译器实现的一种自动内存管理机制。目前的Go语言已经成为了主要的云计算语言。由于其高效的垃圾回收机制,让Go语言成为最受欢迎的静态语言之一。原创 2023-10-06 01:47:02 · 690 阅读 · 5 评论 -
Go必知必会系列:Go语言基础语法与特性
Go(英文全称:Golang)是一种静态强类型、编译型、并发的编程语言,它的特点是快速编译、执行速度快,读写方便简单。它支持并发、函数式编程、面向对象编程等多种编程范式,也有自己独有的垃圾回收机制,经过“GC复制算法”的优化,可以用于开发可伸缩、高性能的服务端应用。Go已经成为云计算领域的标杆语言,被越来越多的公司和组织采用作为主要开发语言。因此,Go语言在国内也有非常广泛的应用。原创 2023-10-06 01:09:53 · 656 阅读 · 5 评论 -
编程语言发展史之:编程语言的未来趋势
编程语言是计算机科学的基础,它们是程序员用来与计算机进行交流的工具。编程语言的发展历程可以追溯到20世纪50年代,从最初的机器语言和汇编语言,到后来的高级语言,如C、C++、Java、Python等,再到今天的函数式编程语言、并发编程语言、数据科学语言等,编程语言的发展一直在不断变化和进步。A: 编程语言是计算机科学的基础,它们是程序员用来与计算机进行交流的工具。A: 函数式编程语言是一种编程范式,它强调函数的重要性,函数可以作为数据处理和计算的单位。原创 2023-10-04 00:12:58 · 625 阅读 · 5 评论 -
面向对象编程的基本特征和代码实例讲解
面向对象的编程(Object-Oriented Programming,OOP)是一种抽象程度很高、编程方式更接近自然语言的方式,具有很强的可维护性和扩展性。抽象化:把现实世界中相似或相关的事物归类到一个集合体中,进而对这个集合体进行操作,提高编程效率和代码的复用性;继承和多态:子类可以继承父类的属性和方法,并根据需要重写其行为,从而避免代码重复;封装:隐藏实现细节,仅向外界提供接口,提高代码的可靠性和安全性;多线程和分布式处理:支持多线程编程,充分利用多核CPU资源,方便开发分布式系统;原创 2023-10-03 01:53:49 · 687 阅读 · 6 评论 -
结合Mocha和Chai来编写一个简单的函数进行单元测试 What is the best way to write clean unit tests in JavaScript
很多人认为学习编程并不仅仅是在学语法、数据结构等基础知识。还有很多其他要素比如业务逻辑、用户体验、性能优化、可靠性保障等都需要考虑到。所以,单元测试也是一个非常重要的环节。本文将会介绍单元测试的相关知识,包括什么是单元测试、为什么要进行单元测试、如何编写干净的单元测试、单元测试的工具链及运行方式等。并且结合Mocha和Chai来编写一个简单的函数进行单元测试。测试驱动开发(TDD)函数式编程(FP)单元测试就是指针对一个模块、一个函数或者一个类来进行正确性检验的过程。原创 2023-10-02 19:30:52 · 693 阅读 · 5 评论 -
C++编程入门——从基础语法开始学起
C++(通称“CPP”)是一种高级、面向对象的、静态ally typed、结构化的编程语言。它不但可以编写系统级程序,而且还可以编写游戏、GUI和Web应用等应用软件。它的开发者为贝尔实验室的史蒂夫·乔布斯(Dennis Ritchie)。目前,C++已经成为众多领域最受欢迎的编程语言。2003年,在一个名叫“龙芯”的计算机实验室里,当时只有3个成员,但很快就扩展到7个人,并于同年发布了第一个C++编译器——GNU C Compiler (GCC)。原创 2023-10-02 19:32:27 · 659 阅读 · 6 评论 -
那就赶快来一起开启美好的函数式编程之旅吧
作者:禅与计算机程序设计艺术 1.简介函数式编程(Functional Programming)一直以来都是一种比较热门的编程范式。从Haskell、Scheme、Lisp到Erlang/Elixir等主流语言都对其提供了支持。它的主要思想就是利用函数式编程中数学归纳、高阶函数等特性来编写出更加优雅、原创 2023-10-02 18:47:13 · 688 阅读 · 4 评论 -
R语言中的并发编程和分布式计算实践
作者:禅与计算机程序设计艺术随着互联网、大数据、云计算等新兴技术的发展,越来越多的人们开始使用这些技术进行数据处理、分析及科技创新。基于数据的分析需要复杂的计算机系统才能实现高效的运算,如何提升计算机资源利用率,解决计算密集型任务的并行计算、分布式计算是机器学习和人工智能领域所面临的挑战。而R语言作为一种跨平台的数据处理、统计分析、可视化语言,其提供了丰富的并行和分布式计算机制。原创 2023-10-02 12:23:13 · 704 阅读 · 0 评论 -
编程语言发展史之:编程语言标准化与社区
在现代社会中,计算机技术不断发展,程序员数量也在日益增长。对程序员而言,编程语言选择直接影响着生产力、职业生涯和个人发展方向。因此,要实现程序员之间的相互沟通,开发软件系统,提高编程能力水平,就需要确保编程语言的统一性与可移植性。为了让编程语言具有更好的维护性、可读性和可扩展性,降低学习曲线,提升效率,使程序员能够更加轻松地编写程序,所以编程语言标准化与社区应运而生。本文试图通过分析编程语言发展历程及其演变过程中的关键因素,阐述编程语言标准化与社区的重要意义。原创 2023-09-26 01:38:12 · 902 阅读 · 2 评论 -
编程语言发展史之:编程语言与量子计算
近年来随着人工智能技术的发展,传统的算法越来越难以应对复杂的问题。因此,工程师们更倾向于采用机器学习、深度学习等新的计算方式,并希望这些计算模型能够解决现实世界中遇到的新问题。在探索新的计算方式时,工程师们需要掌握一些编程语言知识,例如掌握哪些编程语言比较适合量子计算相关的任务。由于我国人工智能领域的蓬勃发展,计算机技术日渐成熟。本文将介绍现代编程语言发展历史、语言之间的区别与联系、常用语言特点、它们所应用的领域及局限性等内容,介绍量子计算领域所使用的编程语言,并提供相应的代码示例。原创 2023-09-25 01:18:12 · 2108 阅读 · 6 评论 -
SQL 编程语言极简教程
【代码】SQL 编程语言极简教程。原创 2023-09-27 12:16:52 · 1562 阅读 · 2 评论 -
Go必知必会系列:Go语言基础语法与特性
作者:禅与计算机程序设计艺术 1.简介Go(Golang)是由Google开发并开源的一门编程语言,由, 及一起创造,于2009年发布,其开发者为了实现更高的并行处理能力、更易于编写安全、快速且可维护的代码而设计出来。Go语言具有相对传统编程语言简单清晰的特点,同时原创 2023-09-25 01:27:19 · 1770 阅读 · 6 评论 -
数据结构与算法代码实战讲解之:字符串与正则表达式
本文主要讲解了字符串匹配相关的一些基础知识,以及字符串匹配算法的原理及具体实现。文章主要面向对数据结构、算法、计算机底层原理有一定了解,有兴趣的同学可以收获颇丰。阅读本文不需要任何编程经验。字符串匹配:在一个主串(string)中查找一个模式串(pattern),或者说判断一个字符串是否是另一个字符串的子序列。换句话说,就是寻找在主串中首次出现的某个模式串,或者说找到使模式串能够完全覆盖主串的最短的子串,而不用考虑顺序。1. 字符串匹配算法可以用来检索和替换文本中的特定字符串。原创 2023-09-24 02:02:24 · 1613 阅读 · 7 评论 -
Go必知必会系列:分布式事务与XA协议
作者:禅与计算机程序设计艺术 1.简介随着互联网、移动互联网、物联网等新兴技术的飞速发展,网站应用的规模正在发生爆炸式增长,每天产生的数据越来越多,这些数据需要进行实时处理和存储。为了保证数据的一致性,必须通过分布式系统实现数据副本之间的同步,才能确保数据的正确性。但分布式系统在处理并发问题上,也面临原创 2023-09-24 02:09:17 · 1683 阅读 · 7 评论 -
编程语言发展史之:面向对象编程语言
面向对象编程(Object-Oriented Programming,OOP)是一种计算机编程方法,它以数据抽象、继承和多态作为编程哲学基础,并通过类、对象和消息传递的方式实现对真实世界的模拟,[1] [2][3]。在过去几十年里,面向对象编程已经成为一种主流的程序设计方法,并且越来越受到开发者的欢迎。特别是在大型软件系统中,采用面向对象的方法可以有效地提高开发效率、降低维护难度,增强系统的可扩展性、可复用性和可维护性。原创 2023-09-24 02:06:37 · 1746 阅读 · 7 评论 -
编程语言发展史之:并发编程语言
随着计算机系统性能的不断提高,人们越来越关注如何利用多核CPU及其软/硬件资源更好地解决各种计算密集型任务。为了解决计算密集型任务,编程语言设计者们开始思考如何充分发挥多线程、多处理器等多核特性,从而实现程序的并行化执行。本文将介绍并发编程的概念,并分析最流行的几种编程语言的发展历程,包括Go语言、Java语言、C++语言以及Python语言。通过对并发编程的特性、优缺点、应用场景进行分析,让读者能够更加全面、准确地理解并发编程的含义与意义。所谓并发编程,就是指两个或多个事件或者指令交替执行的现象。原创 2023-09-24 01:50:43 · 1657 阅读 · 8 评论 -
Rust语言的诞生与应用
Rust(原名为 Mozilla 的 Firefox 引擎项目)于 2009 年 5 月 17 日在 GitHub 上发布,并受到全球开发者的欢迎。它的定位是系统级编程语言,通过安全、并发和互操作性保证内存安全、线程安全和高性能。Rust 编译器能够为其提供可靠的性能,并且支持丰富的开发工具集,包括自动补全、类型检查、构建工具链和文档生成等。基于 Rust 这种新兴的语言,Mozilla 的工程师们逐渐开始投入 Rust 的实践中,其通过改变技术栈来进一步促进他们的软件工程能力和工作效率。原创 2023-09-23 02:27:17 · 2661 阅读 · 9 评论 -
Rust语言基础语法及应用实践
Rust 是一门注重安全、并发性、性能、生态系统和兼容性的多范型编程语言。它的设计初衷就是为了解决现代操作系统开发中常见的问题,如效率低下和崩溃导致的数据丢失等。基于这些目标,Rust 提供了清晰明确、高效、可靠和可用的抽象机制,帮助开发者编写出具有高度可读性、安全、并发性、可扩展性和并行性的代码。随着越来越多的公司、组织选择使用 Rust 作为其主要的编程语言,它也成为了各个领域中最受欢迎、最具竞争力的语言之一。原创 2023-09-22 01:46:15 · 941 阅读 · 1 评论 -
使用 Go 语言实现高性能网络服务: 包括TCP连接管理、内存池、epoll、缓存设计、序列化等
Go 是一门开源的编程语言,由 Google 开发并于 2009 年正式发布。静态强类型:在编译时已经把变量的数据类型确定下来,并进行严格类型检查;自动垃圾回收:不需要手动分配和释放内存,通过引用计数实现自动释放无用对象;接口:支持接口、多态特性,可以方便地实现依赖注入、适配器模式、代理模式等;goroutine:采用协程(Coroutine)机制,使得编写异步并发程序变得简单;cgo:可以调用 C/C++ 的库函数,通过 cgo 可以直接利用现有的第三方库;原创 2023-08-07 00:22:02 · 1515 阅读 · 16 评论 -
Visual Basic 编程语言基础教程
2008年,微软推出了一款全新的编程语言——VB(Visual Basic),其设计目的是为了提供一种面向对象的、命令式的编程环境,来帮助开发人员更简单地创建基于Windows系统的应用程序。该语言包括一些高级特性,如自动内存管理、异常处理、动态类型、多线程、网络访问、数据库支持、图形用户界面等。VB被认为是微软在Windows平台上首个采用面向对象编程模型的语言。原创 2023-08-05 01:24:27 · 1324 阅读 · 29 评论 -
Go编程基础——详细讲解Golang的语法特性和运行机制
Go语言(又称Golang)是Google开发的一门新的开源编程语言,在2009年发布。它主要被用于构建简单、可靠且高效的分布式系统应用。本书旨在帮助读者快速掌握Go语言的使用方法并理解其特性,能够写出更加健壮和可维护的程序。《Go编程基础》一书由五个部分构成,分别介绍了Go语言中的数据类型、流程控制语句、函数、接口、并发编程等方面的知识。每章的最后还有一个练习题,读者可以用来巩固所学的内容,提升能力。在阅读本书之前,建议先熟悉Go语言的一些基础知识和用法。原创 2023-08-01 01:47:31 · 2347 阅读 · 34 评论 -
跨语言编程:未来的发展趋势和挑战
随着云计算、物联网、区块链等新兴技术的蓬勃发展,无论从应用层面还是底层协议层面都出现了越来越多的跨平台需求,这就要求开发者们需要了解这些新的技术所涉及到的编程语言之间的差异,才能实现不同编程语言之间的数据交换和通信。而对于跨语言编程这个领域来说,目前最火热的话题就是“边界效应”的问题。什么是“边界效应”?它意味着不同的编程语言之间,存在着对数据类型的限制,即一个编程语言的数据类型不能完全兼容另一种编程语言的数据类型。原创 2023-07-26 00:33:28 · 1016 阅读 · 9 评论 -
javaagent 实现原理:Instrument 机制、Attach功能
类加载过程中, defineClass()方法会将二进制文件读取得到class对象, redefineClasses就是可控的再次进行这一过程.对于已经加载的类, 该方法通过使用提供的新的字节码文件进行替换,现有的类文件字节不会被使用,就像从源头进行重新编译以进行修复和继续调试时一样。redefineClasses的工作流程重定义类的请求会被JVM包装成一个VM_RedefineClasses类型的VM_Operation,VM_Operation是JVM内部的一些操作的基类,包括GC操作等。原创 2023-07-24 20:25:00 · 1673 阅读 · 16 评论 -
精通React:从入门到精通JavaScript框架
作者:禅与计算机程序设计艺术。原创 2023-07-06 04:25:40 · 1946 阅读 · 9 评论 -
Java:跨语言编程的另一种选择
作者:禅与计算机程序设计艺术 1.简介1.1 JavaJava(一种高级程序设计语言)是一种静态类型、多范型的面向对象编程语言,它是当今世界上最流行的通用编程语言之一。Java具有编译执行,跨平台特性,动态加载等特点,可以编写桌面应用程序、移动应用程序、分原创 2023-07-23 01:55:53 · 1870 阅读 · 15 评论 -
从后端开始学习框架:如何选择合适的后端框架来提高开发效率和代码质量
随着互联网的飞速发展、移动互联网的兴起和云计算的普及,后端服务领域也从单纯的Web服务器、API服务器转变为独立于前端的应用编程接口(Application Programming Interface)层,成为承载企业业务核心数据的支撑系统。因此,掌握后端开发技能已成为一个IT从业人员的基本要求。而后端开发涉及的技术栈繁多,各种后端框架也层出不穷,如何在项目中选取最合适的框架对我们来说至关重要。在选择框架时,要考虑以下几个方面:易用性:框架的易用性体现了其学习曲线平滑程度、开发效率和用户熟练程度。原创 2023-07-18 00:13:06 · 2658 阅读 · 17 评论 -
C++中的移动应用程序开发:使用跨平台框架和库
作者:禅与计算机程序设计艺术 移动端应用程序开发已经成为越来越热门的开发领域。在这个过程中,需要考虑不同平台、不同处理器架构、不同网络条件下的兼容性、节省设备资源的能力等方面因素。C++语言作为一种高效、安全、可移植、跨平台的编程语言已经吸引了众多的开发者,也因此受到越来越多的关注。C++语言的特性使它非常适合编写移动端应用程序,同时也提原创 2023-07-17 00:43:36 · 1858 阅读 · 11 评论 -
C++PrimerPlus第十版重点总结:C++中的内存管理
作者:禅与计算机程序设计艺术 在C++中进行内存管理一直是一个很重要的话题。目前,C++提供了两种方式来管理内存,分别是堆内存和栈内存。它们都有自己的特点和作用,所以我们需要对二者有比较深刻的理解才能更好的应用内存管理技术。文章将详细介绍一下C++中堆和栈的概念、作用以及用法,并且结合具体的代码实例与示例,带领读者对C++堆和栈的概念和用原创 2023-07-17 00:42:03 · 1362 阅读 · 11 评论