2016年年终总结

大学编程学习之路
        沉寂了这么多天,终于决定再写一篇blog来描述一下今天(20170118)的想法。这篇博客主要是写一下这一年半以来我在大学所学到的一切以及我课外的所学。
        还记得大一刚进入学校,我便励志要成为一个顶尖的程序员,于是我付出的比同类、同龄稍微多那么一点点。在大一的一节重要的课(计算机导论)上,我接触到了一门语言——Python,计算机导论也是导致我后来做出重要抉择的一门课。当时教我们课程的是我们的班主任——肖老师,他在解释什么是编译型语言和解释性语言的时候给我们演示了一门神奇的语言,当时我还不知道那是Python,我只是依稀记得有三个尖括号,和老师对它的描述——一门用于科学计算的解释性语言,后来我猜想它可能是fortran之类的计算语言,直到我后来接触到了Python,我才确定这门神奇的需要缩进的解释性语言。后来我觉得底层的嵌入式开发不适合我,于是我毅然决然地选择离开了原来的班级。关于嵌入式,最近我接触到树莓派,觉得这东西特别有意思,又突然想去弄弄嵌入式这东西了。不过这个树莓派仍然是需要使用Python进行编程的。
        c#我觉得真不是一门有前途的语言,一切都是因为微软是不开源的商业公司,在大一的第二个学期我曾疯狂地迷恋微软所维护的mfc,我觉得mfc能做出一个很酷炫的界面真是了不起,直到我接触java之后,我鄙视那种拖控件点鼠标的开发方式,我觉得Java是自然的,我认为微软的开发过多地依赖于它自身的ide,一旦脱离了微软的开发环境,想要在记事本上完成一个简单的helloworld都变得那么地不现实。所以我自始至终都有接触c#,这可能是我自接触编程语言以来黑某一门编程语言黑得最要命的一次。
        提到c#主要是它号称尖锐c,而我本人对c语言是无比的崇拜,我觉得它这样的自称有损于c在我心目中的伟大形象。Linux下的许多工具都是纯的c所开发的,在Linux下安装一些大型的无法在源里直接安装的软件,就必须使用gcc来编译成可执行文件。Python的许多核心的功能可以使用纯c语言来编写以提高效率.因此我个人是比较推崇C语言的,而接下来我来总结一下自大一到现在的我所学到的c语言的大部分知识,由于是全靠记忆来书写的,存在批漏是在所难免的,假如大一的初学者要c语言的资料参考的话,此文可略去不看,我写作之目的重在梳理,而非传授知识。
首先我记得c语言的第一章大概是讲c语言是如何发展的,据说是著名的贝尔实验室发明了C语言,贝尔——发明电话的那位伟大的科学家,c语言就是诞生于此。然后就是c程序的编译和执行过程,编辑成的 .c 文件被编译器编译成.obj 文件在被连接成 .exe 的可执行文件,以上就是在Windows下的文件的编译和执行的整个过程。在Linux下, 我通常都是不带参数的 gcc 命令直接编译成 a.out 文件,然后在将该文件重命名成其它名字的可执行文件,这样就避免了下次生成的 a.out 覆盖原来的 a.out 文件。然后学到的就是数据类型以及在内存中所占用的空间,分别是 int 、float、double、long,这些是数值类型,在内存中分别占用4bytes、4bytes、8bytes、4bytes,有Java版本规定long是8字节的,这就另当别论了。然后就是布尔类型和字符类型,bool和char ,我记得有资料说bool是占用 1 bit的,但是存储的基本单位是字节而非比特位,所以硬是给bool加了 7 个比特位变成了1个字节,它只有两个值,true和false,但是各个版本的c是有区别的,因此我好像从来没有在纯c的环境下使用过bool类型,都是使用的 int 的 0 和非零来代替bool类型,至于 char 类型,好像它只有 256 个值, 索引从 0 到 255 ,我之记得65代表大 a ,97 代表小 a ,之后的字母依次类推,49好像是 0, 128  之后的字符是二进制2字符,在显示器上是没办法显示的,可能这也是为什么众多语言的文件操作需要分为是否以二进制格式打开的原因,char类型也是占1个字节也就是8个比特位的,所以这也很好的解释了它只有从索引为 0 到255  所表示的 256 个字符,2的 8 此方恰好是256,  好像在 c 语言里还有个 %c 的格式符用来表示char类型,而这256  个原始的字符就恰好对应最原始的 ASCII 码,这个码就是用1个字节保存的,我接触到的还有utf-8  编码,据说这种编码包含了目前地球上出现的所有字符,具体是多少个字节我真是忘了,好像是32  字节或者 64 字节,那么表示这样一个简单的小 a 就需要用 8*32 个 01 序列来表示  ( 暂且认为它是 32 字节的 吧 ) ,而且这个码是兼容 ascii  码的,也就是说它的 第50  个一定是表示 0,也就是ascii 码索引为 49 的,utf-8 只不过是 对 ascII 的一个扩充而已。以上好像提到数据类型,目前我接触的一个浮点类型比较诡异,在Java Javascript python python3 php c c++ 测试都好像是成立的
 代码大致如下:
 if (0.3-0.2==0.1){printf("same");}else{printf("not same ");}
 以上语言的测试结果都是 not same  ,这是为什么呢?官方的解释是,计算机的小数点位都是采用的二进制计数,只能用 1/2 ,1/4, 1/8  表示小数位,0 .1 0.001  这些我们日常所用的小数只能用二进制数来近似地表示,近似自然没有办法做到精确了。
c语言的基本数据类型如上述5种,我依稀记得书中还说什么中级数据类型,我暂且把其它的数据类型归为中级数据类型吧,数组,指针、结构体和枚举,至于什么联合体,我至今仍不清楚。
        学了c 语言之后,后续课程就是数据结构,据说这也是一门特别基础的课程,学这门课程主要还是靠理解,用c语言实现的各种数据结构至今我还是没有办法完全依靠自己敲出来,总共就那几种数据结构,线性表、树和图,线性表又分成好多种,按逻辑来分成普通线性表,stack和queue,按在内存中的地址来分,有可以分为顺序表和链表,这两种表完全可以实现栈和队列,至于代码,我真的是没有理解透,我也记不了这么多,但是我觉得这个主要是靠自己理解原理。在java等各种高级语言中,这些数据结构都被封装得很完善了,自己用底层语言在重新写完全是在重新造轮子。但是后来者想要更加深刻地理解c语言的指针,还是完全可以自己动手写一写这些基础代码,培养自己code的能力。
       大一下学期的那门神一样的课程——离散数学,据说是构建顶层软件架构的基础课程,学得我都糊涂了,如果要是一些算法也就算了,尽是一些基础的晦涩难懂的表达式,老师还要求学生一定要背下来,这个也许真的有用,但愿我是真的无知,领会不了其中的奥妙。
        大一下学期还学了存c++,这门既面向对象又面向过程的编程语言,有人说这就是有类的c语言,加上STL之后才能够和各大高级编程语言相媲美,的却如此,我个人认为,c++还是偏底层了些,好多想要用的函数在标准库里找不到,需要下载其它的东西,否则就是自己造轮子,难怪别人都说c++是最难学习的语言,它的学习曲线如此得陡峭,投入与产出不成正比,还不如Java实在。
        大二上学期学的Java,真是一门伟大的编程语言,我原来以为Java就是从Oracle下载下来的几个写好的包,后来我发现自己真的错了,从Java诞生的那一天起,无数大公司往上面投了多少钱,Java就是各大公司用钱堆出来的,我关注了一个微星公众号,importview,上面就是关于Java的各种资源,上面介绍了Java实现的各种技术,Java用于测试的工具,用于日志的工具,用于web开发的各种写好的框架,深度学习的框架,人工智能的框架,真是不胜枚举,由于目前技术能力实在有限,我真是看不过来。
        大二上学期还学习了数字逻辑,那门被我勉强算作专业课程的课程, 我对硬件开发真的是没有兴趣,对于各种门电路,我反正是无语了,要不是那个老师教得还不错,我压根就不会认真学。2016整年我都是在自学另外一门脚本语言——Python,我觉得这才是真正的高级语言。Python包含了无数个库,几乎涵盖了软件领域的各个角落,在我心目中完全能够媲美Java。其实我学习Python,最主要的原因是在Linux下,Python自动化运维能力是其它语言无法比拟的,而我的服务器开发离不开Python,与其学一门效率低的bash shell ,不如学习强大的Python来的有意义。有人说Python是一门黑客的语言,那纯粹是对Python的误读。我不否认Python hacker有, 但是Python能够完成的任务Java不仅能够胜任而且还能做得更高效。用Python做病毒或者木马简直就是不切实际,首先要给客户端安装Python解释器,这本身就是不太可能完成的任务,其次Python是一门解释型语言,我觉得hacker之所以选择Python是因为它的高效开发,一个Python程序员可以在同一时间内完成10个Java程序员的任务,虽然程序执行得比较慢,但是我觉得Python的快速开发完全可以弥补它在运行速度上的劣势,随着未来计算机硬件的不断发展,Python在计算机上的计算也会越来越快,最终在某些领域达到速度能够被忽略的地步。与Python竞争的是Perl,这是一门对字符串处理最为优秀的语言,这是其它任何语言都无法媲美的。
        利用课余时间我还自学了一些网页制作等等,不过这些都只能算是设计而不能算软件,html是web的基本元素,要想精通web,html是最最基本的知识,然后 就是 css 样式和javascript,网页制作其实没多大技巧,说白了前段开发就是靠基本的记忆,练习在记忆,实践然后赚钱,但不可否认的是,前段开发确实是达到高薪的捷径,无论是后台开发还是基于其它硬件的开发都是需要付出巨大的努力然后才能收获的过程,而前段开发真的不需要多么高智商,需要的就是掌握各种设计的风格和代码,但前端开发和修图片又是另外一回事, 前段开发是要靠代码实现的一些网页效果,虽然经常会使用到一些图片,但图片的编辑、 ps之类的工作真的不是软件工程的范畴。
        至此,我的这篇又臭又长的blog就算结束了,写下这些主要是记录一下我这一年半的一些收获,可以这么说吧
AI 代码审查Review工具 是一个旨在自动化代码审查流程的工具。它通过集成版本控制系统(如 GitHub 和 GitLab)的 Webhook,利用大型语言模型(LLM)对代码变更进行分析,并将审查意见反馈到相应的 Pull Request 或 Merge Request 中。此外,它还支持将审查结果通知到企业微信等通讯工具。 一个基于 LLM 的自动化代码审查助手。通过 GitHub/GitLab Webhook 监听 PR/MR 变更,调用 AI 分析代码,并将审查意见自动评论到 PR/MR,同时支持多种通知渠道。 主要功能 多平台支持: 集成 GitHub 和 GitLab Webhook,监听 Pull Request / Merge Request 事件。 智能审查模式: 详细审查 (/github_webhook, /gitlab_webhook): AI 对每个变更文件进行分析,旨在找出具体问题。审查意见会以结构化的形式(例如,定位到特定代码行、问题分类、严重程度、分析和建议)逐条评论到 PR/MR。AI 模型会输出 JSON 格式的分析结果,系统再将其转换为多条独立的评论。 通用审查 (/github_webhook_general, /gitlab_webhook_general): AI 对每个变更文件进行整体性分析,并为每个文件生成一个 Markdown 格式的总结性评论。 自动化流程: 自动将 AI 审查意见(详细模式下为多条,通用模式下为每个文件一条)发布到 PR/MR。 在所有文件审查完毕后,自动在 PR/MR 中发布一条总结性评论。 即便 AI 未发现任何值得报告的问题,也会发布相应的友好提示和总结评论。 异步处理审查任务,快速响应 Webhook。 通过 Redis 防止对同一 Commit 的重复审查。 灵活配置: 通过环境变量设置基
【直流微电网】径向直流微电网的状态空间建模与线性化:一种耦合DC-DC变换器状态空间平均模型的方法 (Matlab代码实现)内容概要:本文介绍了径向直流微电网的状态空间建模与线性化方法,重点提出了一种基于耦合DC-DC变换器的状态空间平均模型的建模策略。该方法通过数学建模手段对直流微电网系统进行精确的状态空间描述,并对其进行线性化处理,以便于系统稳定性分析与控制器设计。文中结合Matlab代码实现,展示了建模与仿真过程,有助于研究人员理解和复现相关技术,推动直流微电网系统的动态性能研究与工程应用。; 适合人群:具备电力电子、电力系统或自动化等相关背景,熟悉Matlab/Simulink仿真工具,从事新能源、微电网或智能电网研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握直流微电网的动态建模方法;②学习DC-DC变换器在耦合条件下的状态空间平均建模技巧;③实现系统的线性化分析并支持后续控制器设计(如电压稳定控制、功率分配等);④为科研论文撰写、项目仿真验证提供技术支持与代码参考。; 阅读建议:建议读者结合Matlab代码逐步实践建模流程,重点关注状态变量选取、平均化处理和线性化推导过程,同时可扩展应用于更复杂的直流微电网拓扑结构中,提升系统分析与设计能力。
内容概要:本文介绍了基于物PINN驱动的三维声波波动方程求解(Matlab代码实现)理信息神经网络(PINN)求解三维声波波动方程的Matlab代码实现方法,展示了如何利用PINN技术在无需大量标注数据的情况下,结合物理定律约束进行偏微分方程的数值求解。该方法将神经网络与物理方程深度融合,适用于复杂波动问题的建模与仿真,并提供了完整的Matlab实现方案,便于科研人员理解和复现。此外,文档还列举了多个相关科研方向和技术服务内容,涵盖智能优化算法、机器学习、信号处理、电力系统等多个领域,突出其在科研仿真中的广泛应用价值。; 适合人群:具备一定数学建模基础和Matlab编程能力的研究生、科研人员及工程技术人员,尤其适合从事计算物理、声学仿真、偏微分方程数值解等相关领域的研究人员; 使用场景及目标:①学习并掌握PINN在求解三维声波波动方程中的应用原理与实现方式;②拓展至其他物理系统的建模与仿真,如电磁场、热传导、流体力学等问题;③为科研项目提供可复用的代码框架和技术支持参考; 阅读建议:建议读者结合文中提供的网盘资源下载完整代码,按照目录顺序逐步学习,重点关注PINN网络结构设计、损失函数构建及物理边界条件的嵌入方法,同时可借鉴其他案例提升综合仿真能力。
内容概要:本文介绍了一个基于Java和Vue的强化学习广告出价与预算分配优化系统的设计与实现。系统采用Spring Boot作为后端框架,Vue作为前端框架,结合深度强化学习算法(如DQN、DDPG),构建了一个智能化广告投放决策平台。通过数据采集与预处理、强化学习环境建模、策略优化、在线决策反馈及可视化交互等模块,实现了广告出价和预算的动态调整与优化。系统将广告投放问题建模为马尔可夫决策过程,利用多维状态空间和动作空间进行策略学习,并设计了综合点击率、转化率、收益等因素的多目标奖励函数。代码示例展示了状态定义、动作空间、奖励函数计算及前后端交互逻辑,体现了系统的可实现性与工程落地价值。; 适合人群:具备Java与Vue开发基础,熟悉Spring Boot框架,了解机器学习或强化学习基本概念的中高级研发人员或数据科学家,适用于从事智能广告、推荐系统或AI工程化的技术人员; 使用场景及目标:①应用于互联网广告投放场景,实现自动化出价与预算分配;②提升广告投放效率与ROI,解决传统人工策略滞后问题;③为企业提供数据驱动的智能营销决策支持,推动数字化转型; 阅读建议:此资源融合了前后端开发、算法建模与系统架构设计,建议读者结合代码示例深入理解强化学习在实际业务中的应用,重点关注状态设计、奖励函数构建与系统实时性优化,并可基于项目结构进行二次扩展与实验验证。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值