设计心得
文章平均质量分 68
明天好,会的
敢于挑战,追求卓越 -- 我在软件开发方面拥有丰富的经验,熟悉多种编程语言和开发框架。我可以开发各种类型的应用程序,包括网页应用、移动应用以及桌面应用。无论是前端开发、后端开发还是数据库管理,我都能胜任。 作为一个独立开发者,我渴望能够将我的技能和创造力应用于各种令人兴奋的项目中。我相信自己具备了丰富的技术知识和灵活的思维,能够为合作伙伴带来独特而有价值的解决方案
展开
-
关于Devin,它只是人类历史的一个正常延续而已
近期,关于Devin的讨论无疑成为了科技界的热点话题。作为一款由初创公司Cognition AI研发的AI程序员,Devin凭借其惊人的“端到端解决成功率”和高效完成需求的能力,在各大社交媒体和科技论坛上引发了广泛的讨论。然而,在这场看似前所未有的技术革命中,我认为Devin的出现只不过是人类历史的一个正常延续而已。原创 2024-03-21 20:59:10 · 407 阅读 · 0 评论 -
浅浅的了解 autoconf:当开源项目不再自带 configure 文件
在开源软件的世界里,开发者可以自己编译和安装需要的组件,这也是我喜欢开源项目的原因之一。然而,就在昨天,当我尝试编译一个颇具吸引力的开源项目时,我意外地发现该项目并没有包含通常所见的configure脚本原创 2024-03-10 16:13:19 · 443 阅读 · 1 评论 -
重构笔记系统:Docker Compose在微服务架构中的应用与优化
在我的笔记系统中,我使用Docker Compose将各个微服务编排在一起,形成了一个完整的应用程序。优化是一个持续的过程,我将继续关注最佳实践和技术发展,以进一步提升系统的稳定性、性能和安全性。的开发是基于微服务的思想,但是在服务的配置和编排上感觉还是不太合理,具体来说,在开发上的配置和在生产上的配置差别太大。因此,我在周末重构了项目结构和docker-compose.yml,本文将分享我在这一过程中的经验,并探讨如何进一步优化基于Docker Compose的微服务架构。请关注我,不要错过更新哟。原创 2024-03-04 08:52:13 · 874 阅读 · 0 评论 -
AI模型训练的初步整理
回到我之前博客中提到的笔记系统,我打算使用增量学习的模型,构建自己的知识库。当笔记数据更新时,会有队列任务去提取笔记数据,对笔记数据进行清洗,然后提取特征,生成向量数据,然后再进行模型训练…这通常是最直接的方法,但也可能非常耗时,尤其是在数据集很大或模型很复杂的情况下。欢迎大家留言区交流。原创 2024-02-23 23:22:49 · 614 阅读 · 0 评论 -
Rust-AI todo list 开发体验
如果你稍微留意一下todo list v0.0.3的代码,你会发现它是比较臃肿的,因为,这个版本只是通过组装AI写出来的代码,完成了功能的开发。说“能”,我想不用我说,很早就有人用AI生成正则表达式的相关功能代码,从这个角度来说,AI 已经替代了程序员的工作了。原创 2024-02-07 16:39:08 · 1367 阅读 · 0 评论 -
在Vue的模块开发中使用GPT的体验及总结
我这一周都在忙着实现一个页面,这个页面是通过vue基于element-ui来实现的。在这个过程中,我把页面拆分成多个组件,而组件的生成是通过Chat-GPT3来实现的。原创 2024-01-27 22:33:09 · 716 阅读 · 2 评论 -
又聊代码重构
只有开发者对代码的不断觉察和理解,才会产生重构代码的念头。因此,驱动重构的应该是开发者本身的认知,而不是线上产品的反馈或者测试的反馈。以上面的代码为例,对属性名称的重构/修改,也是基于对代码的察觉。之前的命名在当前的业务理解上下文中过于模糊,甚至还有歧义。导致这种现象的原因并不是因为我之前对这些属性的命名过于草率,而是因为之前我还没确定生成的代码中要使用vue的mixins技术。为什么我要用觉知这个词呢,因为就算我不修改上面的命名,就现阶段来说,代码也是能够正确运行的。原创 2024-01-19 23:17:26 · 413 阅读 · 3 评论 -
staging-数据管道-处理原则的体验
在数据管道中,staging指的是将数据从源系统移动到目标系统之前的中间步骤。在staging过程中,数据会经过一系列的转换和处理,以确保数据的质量和准确性。staging可以包括数据清洗、格式转换、数据合并等操作,以便最终将数据加载到目标系统中。这里面既有函数式编程的思路,也有系统数据流分析的影子。而今天在这个项目的代码重构中,再次体验到了这个原则。实际上,在我之前设计的bisheng-cli的项目中也成功使用了这个原则,只是现在对这个原则的体验更加强烈。原创 2024-01-17 17:43:19 · 379 阅读 · 0 评论 -
驾驭单元测试漫谈
单元测试,说起来简单,做起来难。写多了,会耽误项目进度不说,后期维护起来也难;写少了,起不了作用,变成了花架子。我之前提出的一个观点是单元测试和代码的设计有关系,也就是说,单元测试和个人的开发经验,写代码的水平有关。换言之,张三在项目里的时候,单元测试可能做得好;李四来了项目,单元测试可能就做的不好。那我们来看一下单元测试的定义:单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个...原创 2020-10-16 22:32:08 · 155 阅读 · 0 评论 -
数据库系统三级模式之“外模式”
我是做开发的,所以我更关心数据库系统的外模式。众所周知,数据库系统的三级模式为:外模式,模式(概念模式),内模式。应用程序依赖于外模式,独立于模式和内模式;一个数据库系统可以有多个外模式,而一个应用程序只能使用一个外模式。模式(概念模式)是数据库设计的中心。而内模式依赖于模式,独立于外模式和存储设备。这样划分的目的,想必大家都明白,是为了提升数据库系统在设计和维护过程中的稳定性,减小或者消除数据库系统局部调整所带来的大范围的冲击。多年以前,那时候我还在做C/S模式的应用系统开发,客户端的数据大都是通过原创 2020-09-10 11:30:00 · 2235 阅读 · 0 评论 -
从3个判断来进行异常处理
“可用性”是指系统在运行过程中,对各种异常的响应及其响应的量度。这些异常包括但不限于,网络异常,底层系统异常,调用第三方功能模块引入的异常,以及测试未覆盖到的代码本身的错误。从代码层面,“可用性”主要关注下面几点:后台Api的调用第三方功能模块的调用事务处理从代码层面,“可用性”的目标包括:不会影响到其它模块的正常运行不会产生错误状态能够帮助恢复错误既然从代码层面出发,那么首先要保证代码的基本健壮性,能够通过各种语言的lint工具扫描(规则可以根据项目的实际情况来顶)。稍微原创 2020-09-04 16:21:21 · 202 阅读 · 0 评论 -
分析代码中的业务逻辑是程序员的必经之路
这一段时间都在现有的项目上开发,开发的前提是要弄清楚业务逻辑。业务逻辑蕴藏在项目的各个代码片断中,所以从代码中去分析出业务逻辑,是一个程序员成长的必经之路。我很佩服我们头,他在不看代码的情况下,就靠分析程序运行时的输入和输出,就能够知道那段代码是什么意思。这是值得我们学习的。实际上程序的输入和输出就是为了业务处理,要弄清楚代码的逻辑,从分析输入和输出开始。但是话分两头说,分析代码的输入和输出也不简原创 2007-08-01 23:25:00 · 4712 阅读 · 0 评论 -
基于构件的软件开发模型漫谈
基于构件的软件开发模型为我们带来了很大的成功,个人认为其背后的原理是构件中成功的商业价值能够被不断复制,因而带来更大的商业价值。“复制”不但能够降低开发成本,还能够提高单位产出,提升系统的整体稳定性,降低bug率。以开发一个App为例,Swiper,ScrollView,Image等等都是常用构件,我们通常以这些构件为基础来实现复杂的商业逻辑,从而产生价值。在这个过程中,我们对实现Swiper和ScrollView的成本几乎为0(当然可能需要一些license费用)。我们的成本主要集中在实现复杂的商业逻原创 2020-07-30 21:18:29 · 2381 阅读 · 0 评论 -
从模块的耦合程度谈程序设计
在结构化设计中,模块是设计的最小单位,模块之间的关联程度,用耦合度来表示。模块之间的耦合度越高,模块的独立性就越差,后期的维护成本也就越高。因此,在程序设计过程中,我们追求的是低耦合度。耦合度从低到高:非直接耦合数据耦合标记耦合控制耦合外部耦合公共耦合内容耦合(高级语言一般不会涉及到这里)非直接耦合是模块之间,通过控制层调度发生关联关系,给一段reactjs的代码:import getUserInfo from './libs/getUserInfo'import { getDat原创 2020-07-25 22:44:06 · 493 阅读 · 0 评论 -
聊一聊代码中的抽象
抽象是编写代码的基础,有效的认识代码中的抽象,对我们做设计模式和架构的选择都有好处。据我所知的抽象分为3种:过程抽象数据抽象控制抽象过程抽象过程抽象是最常用的一种抽象,它是消除系统中重复代码头号方法。例如,在一个App的页面上,当页面打开时,会加载数据;在App重新唤起时,会重新加载数据;当用户点击某个按钮时,会加载数据;面对这种情况,我们通常会把这段代码抽象出来,将其放在一个函数中。从而避免了这段代码在多个事件中重复出现的情况。这样做的好处是当数据加载的逻辑有变化时,修改的地方会被限制原创 2020-06-10 15:01:40 · 746 阅读 · 0 评论 -
Unity 依赖注入--构造器注入
最近准备用Unity来改良系统。 做了一些小测试,拿出来与大家分享一下。 using System;using System.Text;using System.Collections.Generic;using System.Linq;using Microsoft.VisualStudio.TestTools.UnitTesting;using Microsoft.Pr原创 2010-03-23 22:02:00 · 1049 阅读 · 0 评论 -
UML中的几个关系
这几天又看了UML,再次理了一下UML中的关系。总的来说,关系可以分为静态关系和动态关系。静态关系的特征是它可以被保存起来,而动态关系则只在代码运行时才产生。对应于代码,静态关系可以表现为对象及对象的属性,更准确一点是只对象的数据成员。而动态关系,表现为依赖,通常作为对象成员方法中的一个参数出现。原创 2009-12-29 13:21:00 · 639 阅读 · 0 评论 -
UML的那几个图
1. 类图:用于呈现系统内部的静态结构,它可以被直接转换为代码,对于程序员尤为重要 2. 序列图:用于展示操作的实现,同时也展现了某个操作所涉及的对象(群)。这里同时也隐含地提出了“操作”定义的范围。 3. 用例图:用于展示系统外部的行为。这个图在需求分析阶段和客户沟通时必须有的东西。 4. 状态图:用以展示某一对象内部状态的变化过程 5. 活动图:一般性的流程表达。可以用于业务逻辑层面的原创 2009-12-20 02:38:00 · 836 阅读 · 0 评论 -
看看这个Lock可不可靠
看看这个Lock可不可靠(来至于我的cnblogs:http://www.cnblogs.com/czy/)原创 2010-01-30 11:17:00 · 636 阅读 · 0 评论 -
.net 中的异步处理温习
这几天,看WF本质论,里面提到了.net的异步处理。由于里面使用的是代码片段,所以有点看不懂。于是下定决心,温习一下.net中的异步处理。使用C#在.net开发已经有5年了,最初使用.net中的异步处理大约是在4年前。当时,只是为了实现要求的功能,没有详细研究。这也难怪看WF时会头晕(基础不牢的后果呀)。首先,我们分析一下异步处理的环境 需要在当前线程中获取返回值不需要在当前线原创 2010-01-11 14:48:00 · 1235 阅读 · 0 评论 -
对关联表进行Update操作
这个功能用了很多次,但是每次使用时都记得不清楚,要重新查资料。索性今天将其记录在blog上,希望能够记忆深刻一点。 begin transaction Update ReservationTableTypeSet ReservationTableType.StartDate = Reservation.StartTime,ReservationTableType.E原创 2009-10-15 10:19:00 · 722 阅读 · 0 评论 -
2009.5.17 OA项目组一周工作报告
质量评价:60 评价依据:本周在质量上没有发现大的问题。目前在项目中出现了文档危机,可是面对这个危机,我们除了深恶痛绝,似乎还是束手无策。这不仅仅是一个简单的文档管理问题,在需求变化瞬息万变的环境中,这样的文档,对程序的健壮性没有任何帮助。我们实际上需要的是一个能够被迅速证明的系统,而证明这个系统的正确性的就是单元测试。 进度评价:60 评价依据:本周大家基本上按照计划完成了原创 2009-05-17 13:34:00 · 696 阅读 · 0 评论 -
C# Code Analyser 开发感悟
最近一直都没有写blog,也没有翻译,几乎将所有的业余时间都放在了C# Code Analyser上。有好几个晚上,做梦都在思考设计中的递归问题,感觉前进的路十分难走。 开发这个程序的最初目标是分析出程序中对象的结构与关系,本以为能够分析出代码的语言结构就能够做到这一点,可是分析代码的语言结构根本就不像我所想象的那么简单。越往前走,感觉路越黑。而在黑暗中也感觉到了编程语言的精妙所在。 在这个过原创 2009-05-04 15:18:00 · 842 阅读 · 0 评论 -
软件架构风格-调用/返回风格
调用返回风格包括主程序/子程序 面向对象风格 层次结构风格个人觉得这是最常用的一种风格,因为它符合顶层分解的逻辑。每一个抽象层次都会通过向下调用的方式来实现它所定义的功能。 采用调用返回风格的系统的配置比较多,在实践中,我们希望通过配置来实现灵活的调用,即将低层次的结构在有需要的时候随意替换掉。但是,替换没有那么简单,首先,出于动机方面的原因,一旦项目上线,没有人愿意去动线上的代码;其...原创 2019-08-28 22:30:10 · 3724 阅读 · 0 评论 -
2009.3.27 OA项目组一周工作报告
进度评价:60 质量评价:60 这周基本上完成按照计划完成了任务。OpenActivity上,王完成了一个重要的功能的改动;在IOS上,基本上完成了客户提出的修改需求,剩下的部分实际上是tab键在ComponentArt上的处理,目前已经找到了解决方法,下周一可以按照给客户提出的承诺,再次提交一个新的版本。这周快结束时,方在测试中发现了一个bug,之所以在这里提出来,是因为这个bug是在特定的原创 2009-03-27 15:35:00 · 677 阅读 · 0 评论 -
Form的设计原则
界面元素V用于显示数据M; 类P用于处理数据M,包含以下行为: 对M的构造 对M的有效性验证 界面元素V中的用户事件只能作用于P Form作为界面元素V的容器,只能作用于P,而不是V。 最近在学习SmartClient,正在逐步将其应用于系统开发中。很多情况下不能够直接使用smartclient提供的框架,但是其中的思想还是值得借鉴。 希望各位多多指教。原创 2010-04-24 16:03:00 · 1033 阅读 · 0 评论 -
Cache 设计概要
Cache设计需要考虑以下问题 1. Cache的数据同步问题 2. Cache的更新问题 对于数据同步,必须考虑多线程相关技术,要点有 1. lock关键字 2. ReaderWriterLock/ReaderWriterLockSlim 3. InterLocked 4. Mutex 5. Monitor 对于数据更新,要考虑以下问题 1. 自动更新(包括:有效期的使用)原创 2010-05-04 16:00:00 · 809 阅读 · 0 评论 -
原来还有这么一片天空
今天上午,有一位前辈提到了开源。我曾经对这个名词很感兴趣,但是直到我再次听见它被提起,我几乎把它给忘记了。开源对我来说就是思想的自由,为什么我会把这么珍贵的东西给忘记了呢?因为我现在不再自由。今天早上在出来的路上还在想我该如何让自己继续进步,现在似乎找到了答案,就像一颗树一样,要长得高大,首先要有深根。去探求代码后面的代码,获取一个数字世界的自由。原创 2006-12-07 14:33:00 · 1312 阅读 · 0 评论 -
回顾我的设计模式应用
在多个项目里面工作之后发现,离开了所谓的设计模式,项目照样活得好好的,至少在那一刻看上去是那样。我接手的第一个项目,医院信息管理系统,是在PowerBuilder6.5上开发的。虽然我在这个系统上写了很多的代码,但是现在总结起来不外乎下面的工作在窗体加载完成后从数据库中抓取数据 通过界面的按钮事件,对界面的数据进行处理 通过界面的按钮事件,将界面的数据提交到数据库 通过界面的按钮事件,...原创 2019-09-16 17:43:16 · 143 阅读 · 0 评论 -
软件架构风格 - 虚拟机风格
虚拟机风格包含解释器 基于规则的系统解释器侧重于自定义,灵活的功能特性。这些功能特性通过解释器将其转换为目标平台上的可执行代码。基于规则的系统侧重于规则集,规则解释器,常见于人工智能领域和DSS(Decision Support Design)中。相较于“数据流风格,调用返回风格,独立构件风格“,虚拟机风格搭建的是运行规则/语言/自定义描述的平台,而非实现具体的业务逻辑。...原创 2019-09-03 15:35:06 · 4320 阅读 · 1 评论 -
软件架构风格 - 独立构件风格
独立构件风格包含进程通信 事件驱动系统形如其名,独立构件风格强调的是构件的独立性。构件之间的耦合度应该是非常低的“非直接耦合”或者“数据耦合“。个人觉得,微服务就是”独立构件风格-进程通信“的典范。事件驱动系统,强调的是非直接调用,它是信息和一组可扩展的信息处理器的集合,信息处理器之间的关系是“非直接耦合”,而信息和信息处理器之间的关系通过框架来实现。独立构件风格的优势在于,由于...原创 2019-08-31 15:09:51 · 3232 阅读 · 0 评论 -
系统架构师-结构化开发方法
结构化分析研究“物质环境”:当前系统的数据流图,包括人和自动化流程 建立系统逻辑模型:将自然流数据转换成等价的逻辑数据流图 划清人机界限:确定哪些由自动化完成,哪些由人工完成结构化分析的输出:分层的数据流图 数据字典 加工逻辑说明 补充材料数据流图外部实体:目标软件系统之外的人或者系统;也可以是数据的发源地或者归宿地 数据存储:文件存储/数据库存储 加工:描述...原创 2019-08-13 17:18:47 · 260 阅读 · 0 评论 -
我的Blog导读
谢谢大家的光临。写了这么久的Blog,现在是整理的时候了。只有整理好已有的东西,才能更好的前行。个人思想关于系统架构的自问自答软件设计中的设备 --这是我最感兴趣的一篇成长从Microsoft Solver Foundation看微软的未来代码的不完整性从蔡斌失败的思考项目管理我的项目周报项目管理之质量检查点再谈质量检查点关于管理的心得...原创 2009-03-03 21:50:00 · 1704 阅读 · 0 评论 -
总结之总结
这周都在为前一段时间的工作进行总结,虽然没有时间压力,但是还是让我感觉烦恼,特别是在开始阶段,面对一堆资料无从下手,时间过半,还是没有清晰的思路。现在总结虽然写完了,但还是有些不爽,想在这里吐吐槽,希望日后的总结工作能够更加顺利一些。现在回想起来,在总结开始的时候,我有几个疑惑,这次总结的目标是什么,应该达到什么效果,甚至还在纠结是用word来写还是用ppt来写或者直接写在我常用的everno原创 2014-11-13 17:09:43 · 1102 阅读 · 0 评论 -
MVC来源戏说
好久没有来CSDN写博客了。老朋友们可都好。这篇Blog本来是我的个人笔记,在整理过程中,突发奇想整出来的。之所以叫戏说,是因为内容的由来有点把玩儿的味道在里面,限于本人有限的水平和知识面,还望大家多指教。使用数据结构,将后台和前台隔离开,这种方式不仅在MVC中适用,在其它的设计中也是一个根本的原则。在这里,DataModel作为View和Service交换数据的一原创 2014-03-26 22:30:18 · 932 阅读 · 0 评论 -
代码中的地雷
以前听说过软件系统中有定时炸弹,今天我领教了代码中的地雷。 所谓地雷,它的特性是安装容易拆除难,下面段代码完全符合地雷的特性。 public static void GetAvail(SegmentType segment, out int avail){ if(segment.StartDate n.MaxAvail = 0); //....}这是一个底层方法,依赖于它的代码较多,即它的扇出较大。这个函数的本意是获取avail,但在获取avail的同时染指了原创 2010-06-19 22:12:00 · 928 阅读 · 0 评论 -
我眼中的设备
我现在虽然不能够完全定义设备的范畴,但我可以感觉到它的存在。在我们的日常并生活中,我们常常会听到打印设备,扫描设备等等,这些设备和我提到的设备具有类比性。而在软件设计中(我们现在姑且在设计的范畴中讨论),我认为设备不是绝对存在的,而是相对于当前的设计而存在的。而这个断言的存在,将会彻底影响到我们对软件设计的视角。那么什么是设备呢,我先斗胆在这里下一个定义:设备是我们的代码作用于的对象。原创 2009-03-05 14:51:00 · 780 阅读 · 0 评论 -
经典的三段论
“如果所有的人都会死,苏格拉底是人,那么苏格拉底会死”。在这个经典的三段论中,“人”、“会死”和“苏格拉底”这些词都可以换掉。这些词就是逻辑上的不相干的词。我想对设备的探索,应该从这里开始。原创 2009-03-03 14:31:00 · 5358 阅读 · 0 评论 -
软件设计中的设备
最近我发现了“设备”这个XX,之所以用XX表示,是因为我现在也不能对它进行完全定位,它可能是一种概念也可能是一种理论。只是我发现当我感觉到它的存在时,以前那些让我疑惑的问题都被很轻松的解开或找到了合理的处理方法。我会在以后的日子里,用各种代码来证明它的存在及其意义。经典的三段论 我眼中的设备 Technorati 标签: 设备 更多内容,请参考我的Blog导读原创 2009-03-01 13:24:00 · 796 阅读 · 0 评论 -
Abstract Factory设计模式的一些思考
Abstract Factory实际上强调两个概念: Abstract:强调接口 Factory:强调创建 我认为Factory概念尤为重要,这个概念的背后隐含了另外一层意义:创建可以被控制,这就意味着可以将Factory对象的控制权交给其它对象,从而实现低耦合度。当我们创建Factory对象时,我们可以不用担心Factory对象制造出来的对象如何去使用,因此原创 2007-03-15 14:53:00 · 850 阅读 · 0 评论