编程相关
文章平均质量分 88
-飞鹤-
喜欢音乐,喜欢文学,喜欢跑步,喜欢编程!
展开
-
人工智能——大语言模型
一千行代码实现一个完整的可训练和推理的60亿参数的大语言模型,去魅人工智能,去魅大语言模型。本文重在介绍机器学习和大语言模型的基本原理。在科学研究上,机器学习和大语言模型的每一个环节都可以优化研究。如何提升训练的效率,降低训练过程中的过拟合是大语言模型的关键,Transformer的出现为大语言模型的可行性提供了技术支持,OpenAI的chatgpt的出现,证明了加大模型参数可以让模型的能力出现质的提升。大语言模型未来将会继承发展,会让人工智能走进世界每一个角落。几百行代码实现大语言模型。原创 2024-04-09 19:01:01 · 5222 阅读 · 0 评论 -
人工智能——深度学习
深度学习是一种基于人工神经网络的机器学习方法,其核心思想是通过多层次的神经网络来模拟人脑的神经元之间的连接。深度学习的特点是可以通过大规模的数据来训练模型,并且可以自动学习到数据的特征表示。上图就是一个神经网络的基本结构图,X1到Xn是输入,O1到Oj是输出,圆圈是神经元(也称感知机),连线带权重参与计算生成下一个神经元。隐层在实际的神经网络中可能会多层,并且都是全连接,所以计算量巨大,所以需要AI CPU、AI GPT等。原创 2024-04-09 18:58:18 · 2523 阅读 · 1 评论 -
人工智能——机器学习概述
上面的列举也不全,生物的结构蛋白、化学的合成材料,早期的这些都是靠烧钱不停地实验来进行。我们可以看到这个函数是关于a和b的一个三维曲面,这里我们可以分别对a和b求偏导,再设置偏导为0即可以得出两个a和b的方程,然后即可求出最小误差平方和对应的a和b,即得到这线性拟合方程的完整表达式。人工智能(Artificial Intelligence,AI),是新一轮科技革命和产业变革的重要驱动力量, [26]是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。原创 2024-04-09 18:56:08 · 3213 阅读 · 0 评论 -
GCC工具链简介
想编译各种嵌入式裸机的,想编译Linux Kernel,又或者想编译u-boot的,或者想编译运行在KylinOS上,甚至想编译运行在Android上的C代码,该选择哪个gcc版本呢?MinGW和gcc什么关系?ARM下几种gcc有什么区别?RISC-V内核又该如何选择GCC工具链呢?gcc不同版本的头文件、动态库等兼容性如何呢?选择了正确的gcc版本,又是如何编译安装呢?下载arm gcc时,经常会遇到Linaro,那么Linaro与arm、gcc是什么关系呢?gdb-multiarch?原创 2024-02-26 17:49:55 · 1866 阅读 · 0 评论 -
Windows下打包工具包为一个exe
很多时候,一个工具包有除了一个exe还有不少配置文件及dll库。如果只想给客户发布一个exe,要怎么办呢?使用静态编译,不使用dll,将资源编译到exe中,使用时再释放出来。这种方法比较麻烦,而且需要将资源释放到临时目录,针对一些有安全性的工具,安全性也不够。有没有简单又安全的方法呢?原创 2023-08-19 10:30:00 · 1511 阅读 · 0 评论 -
命令行参数设计
众多通用的小功能,制作为一个小工具,然后通过命令行来进行交互,使用非常的简便。本规范是为了统一命令行参数的设计,使得大家在制作或使用命令行工具时,能够更加有共享,进行会更加方便。原创 2023-08-16 14:58:23 · 239 阅读 · 0 评论 -
ChatGPT在编程中的应用
ChatGPT是一个大型语言模型(Large Language Model,LLM),是一种基于生成式预训练变换模型(Generative Pre-trained Transformer,简称GPT)的聊天机器人,由美国OpenAI团队研发。它可以根据聊天的上下文生成自然、流畅、有逻辑的回复,并能进行多轮对话。ChatGPT是OpenAI开发的一款产品,它基于GPT-3.5系列的模型,并使用了人类反馈强化学习(RLHF)的方法来优化其对话能力。原创 2023-03-21 22:10:36 · 17203 阅读 · 0 评论 -
kafka的安装、部署及应用
kafka是一款分布式、支持分区的、多副本,基于zookeeper协调的分布式消息中间件。其最大特性就是能够实时处理大量消息。原创 2022-11-14 19:11:30 · 1677 阅读 · 0 评论 -
C/C++中如何判断浮点类型相等?
1. 浮点类型在计算中的存储格式1.1. 小数的科学计数法科学记数法是一种记数的方法。把一个数表示成a与10的n次幂相乘的形式(1≤|a|<10,a不为分数形式,n为整数),这种记数法叫做科学记数法。例如:19971400000000=1.99714×10^13。计算器或电脑表达10的幂是一般是用E或e,也就是1.99714E13=19971400000000。1.2. 计算机中小数的存储格式计算机中小数的存储格式依据IEEE 745标准制定,其有三种精度标准。分别为单精度、双精度以及扩展精度原创 2022-05-23 18:39:50 · 2785 阅读 · 0 评论 -
基于.NET的托管C++开发
1. 简介随着Windows的发展,基于.Net的功能越来越多,使用也越来越方便。早期的.Net主要是C#和VB.NET进行开发。Windows希望几种主要的语言都能够统一,大家互相调用。Windows提供了CLR(Common Language Runtime),来统一各语言编译后的标准。另外还提供了.Net库,包括非常多的相关.Dll,提供功能API供调用。2. 托管C++基本语法托管,意味着内存的申请释放都统一交给CLR来处理。所以托管C++扩展了标准C++,提供了托管类。.NET中,所有类型都原创 2022-05-20 12:02:57 · 1973 阅读 · 0 评论 -
Windows下命令行编译MFC工程
1. makefile方式Visual Studio自带有nmake,也可以解析makefile文件,但是功能较弱,此处使用gcc自带的make解析工具。1.1. 配置编译环境call “C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat”1.2. 建立测试工程新建mfc的对话框工程,名字默认即可。1.3. 建立makefile文件SRC_DIR=.OBJ_DIR=debugCPP_SRC=$(wildc原创 2022-05-11 19:56:51 · 973 阅读 · 0 评论 -
C/C++和Lua混合编程
1. 概述发布一款应用程序比较耗时,尤其是手机游戏应用还需要各种审查。一种简单方便的热更新,可以满足上述需求。静态编程语言生成框架,动态语言完成其他逻辑,这样可以达到热更新。lua由于其性能及简洁,是许多项目热更新时选择的动态开发语言。此文主要讲解C/C++和Lua的混合编程,主要针对Lua5.2及之后的版本(之前的版本接口略有调整)。2. 编译Lua代码2.1. Linux下编译直接在指定目录执行以下命令即可完成编译,会生成liblua.a(静态库),lua(解释器),luac(编译器)。2.2原创 2022-05-09 19:04:31 · 2494 阅读 · 0 评论 -
本周小贴士#123: absl::optional和std::unique_ptr
作为totW#123最初发表于2016年9月6日由Alexey Sokolov (sokolov@google.com) and Etienne Dechamps (edechamps@google.com)创作如何存储值?此贴士讨论了几种存储值的方法。此处我们使用类成员变量作为示例,但是以下的许多点同样也适用于局部变量。#include <memory>#include "third_party/absl/types/optional.h"#include ".../bar.h"翻译 2022-03-10 20:33:29 · 2318 阅读 · 0 评论 -
本周小贴士#77:临时的,移动的,和拷贝的
作为totw/77最初发表于2014年7月9日由Titus Winters (titus@google.com)创作更新于2017年10月20日在不断尝试着给对编程语言不熟悉的人解释C++11是如何改变事物的过程中时,我们展示了“拷贝什么时候产生?”的系列中的另一个条目。这是简化C++中有关拷贝微妙规则并用一系列更简单的规则来替换的一般尝试中的一部分。你能计数到2吗?你能?太好了。请记住,“命名规则”意味着你可以为某个特定的资源分配一个唯一的名字,这会影响在流通中对象的副本数。(请参阅TotW55翻译 2021-07-19 18:26:22 · 120 阅读 · 0 评论 -
敏捷软件开发宣言和原则
敏捷软件开发宣言(Manifesto for Agile Software Development)我们一直在实践中探寻更好的软件开发方法,身体力行的同时也帮助他人。由此我们建立了如下价值观:We are uncovering better ways of developingsoftware by doing it and helping others do it.Through this work we have come to value:● 个体互动高于流程和工具(Individuals and原创 2021-05-18 11:00:10 · 725 阅读 · 0 评论 -
Windows下的C/C++的远程调试
1. 问题程序员经常会面临,开发电脑上一切运行正常,但是在测试电脑上却死活都有问题。一般情况下,我们可加一些弹窗或是打印Log来进行分析调试。但是如果问题复杂时,以上方法调试还是比较麻烦。如果可以像开发电脑一样,可以单步运行,并可以查看各种变量、堆栈信息,那就非常方法。有人直接在测试电脑上安装编译调试工具,但是有时问题是出现在客户电脑上,此时去安装相关编译调试工具,就非常不方便。那么有没有一种方法,不用安装Visual Studio,就能方便地直接对测试电脑进行调试呢?另外,Windows内核程序的调试原创 2020-10-31 18:16:46 · 1324 阅读 · 0 评论 -
Windows下C/C++单元测试两种打桩方法
敏捷开发,非常强调效率。如果只顾着效率,代码质量必须很低,未来的维护成本必定大增,会得不偿失。那么敏捷开发中,CodeReview和单元测试是保证代码质量的重要手段。1. 问题如下代码,通过宏开关来控制桩函数,虽然功能上能够达到打桩的效果,但是对待测代码增加了大量的宏,影响代码的可读性。int Fun1(){ return 12;}int Fun(){#ifdef STUB_...原创 2020-03-09 20:58:20 · 2296 阅读 · 0 评论 -
Windows通过gcc和lcov统计代码覆盖率
1. 准备工作因为lcov只能运行在linux环境下。但是不想装双系统,也不想通过虚拟机来装linux系统。幸好Win10新版已经支持linux子系统,除了没有Linux的桌面,通过命令行来操作完全可以。首先将win10操作系统升级到版本1809及以上。控制面板 -> 程序和功能 -> 启用或关闭windows功能,勾选下图红框所选条目。重启电脑,并打开Microsoft...原创 2020-02-29 23:42:01 · 2864 阅读 · 4 评论 -
C++与正态分布
正态分布(Normal distribution)又名高斯分布(Gaussiandistribution)。若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。从上图可以看出,原创 2014-10-23 23:57:41 · 6989 阅读 · 0 评论 -
同行代码审查实践经验
数百万年前,猿猴从树上繁衍出来,进化出可真立的脚,最终成为人类。我们以类似的方式看到强制的代码审查:在软件开发大草原地的翻滚的草原上将人与兽区分开来。尽管如此,我有时还是听到我们团队成员的评论:“对该项目进行代码审查是浪费时间。”“我没有时间进行代码审查。”“我的发布被推迟了,因为我懦弱的同事还没有完成我的审查。”“你能相信我的同事希望我更改我的代码吗?请向他们解释,如果以任何方式更...翻译 2020-02-20 01:30:53 · 309 阅读 · 0 评论 -
C++11的正则表达式基本用法
1. 介绍正则表达式(Regular Expression,常简写为regex、regexp或RE)。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。C++11开始支持正则表达式。正则表达式非常强大,具体的实现算法有差异,所以会有多种实现方式。C++11支持6种正则表达式引擎。ECMAScript 是其中支持最多元素的引擎,也是regex默认支持的引擎。ECMAScript...原创 2019-04-15 18:22:39 · 5470 阅读 · 2 评论 -
Windows下SVN通过Hook设置限制注释及文件后缀名
1. 服务端更改服务端做的更改适用于所有连接此仓库的人员 - 在仓库服务目录里有Hooks\pre-commit.tmpl文件,可将此文件更名为pre-commit.bat,然后将文件下面的批处理代码更改为下列代码。 - 在SVN服务器上 2. SVN客户端客户端所做的修改只适用客户端本人 下附脚本代码@echo offsetlocalset REPOS...原创 2018-05-11 12:30:00 · 3230 阅读 · 0 评论 -
Windows下SVN引用外部链接
有时候一个大项目会引用很多外部公共项目。这个时候,会有两种选择方式。一,将大项目和公共项目放在一起,这样更新的时候,就可以一起更新到了,不用担心未同步。但是此方式面临众多工程累积在一个仓库里,导致仓库的独立性不够,甚至上传记录的庞杂。二,将大项目和公共项目分开,能够保证各项目的独立性,但是却容易忽略了代码的同步性。面对这样的问题,TortoiseSVN提供了一种引用外部仓库的方法。这种方法能够将外...原创 2018-03-31 16:51:29 · 4188 阅读 · 0 评论