自 2020 年来,网易数帆探索可视化低代码编程已两年有余,打造了轻舟低代码平台用于企业应用开发。然而,不少编程技术人员对这一领域还比较陌生。我们开设《低代码技术内幕》专栏,旨在讨论低代码编程领域中的困难、问题,以及高效的解决方案。本文为第一篇,深度剖析低代码编程带来的机遇。
据说早期人类语言只有“听说”系统,后因国家税收之需,又演化出了“读写”系统。而读写相较于听说的方式,有易于复制传播、歧义少、保存持久等优点……类似的,早期用于人机交流的程序语言只有“字符”系统,现在因为某些诉求,市场上涌现出一批“可视化低代码”系统。什么是低代码,它有哪些优势,我为什么要学习、使用它?低代码未来的市场是怎样的? 本文重点描述低代码未来 5~10 年的广阔市场 ,但仍循序渐进,从概述低代码编程的历史发展开始。(所以想要了解市场规模和前景的读者,请直接跳转到低代码的市场和机遇部分)
低代码定义:发展与变迁提高生产效率是人类永恒的主题。正因此,我们认为广义的低代码编程,取其字面意思,应当是指在某个时间段内,完成项目所需的代码量(大幅)低于其他语言(平均值)的编程模式。无独有偶,我们的认知与 ITP ...
GPT 的缺陷过去几个月的时间,我们正处于人工智能的革命中,其中最耀眼的莫过于 GPT-3.5/4 的横空出世,而 GPT-3.5/4 带给我们无限震撼的同时,其天然的缺陷和诸多的限制也让开发者头痛不已,例如其输入端上下文(tokens)大小的限制困扰着很多的开发者和消费者,像 gpt-3.5-turbo 模型它的限制是 4K tokens(~3000字),这意味着使用者最多只能输入 3000 字给 GPT 来理解和推理答案。
有人可能会疑惑,我使用的 ChatGPT 是有对话记忆功能的,既然它可以做到聊天记忆,那么它的输入端 token 有限制也没什么关系,只要我将给 ChatGPT 的文字内容拆分成多次输入,它自然就可以记住我之前的对话,从而做到解除 token 限制。
这个想法是不太正确的,GPT 作为 LLM 模型是没有记忆功能的,所谓的记忆功能只是开发者将对话记录存储在内存或者数据库中,当你发送消息给 gpt 模型时,程序会自动将最近的几次对话记录(基于对话的字数限制在 4096 tokens 内)通过 prompt 组合成最终的问题,并发送给 ChatG ...
背景最近有个新项目可能会用到规则引擎,所以花了些时间对相关技术做调研,在百度、google用“规则引擎”作为关键字进行搜索,可以找到很多关于这方面的资料,绝大部分都会提到 drools、urules、easy-rules等等这么些开源项目,有一些文章也提到他们是采用groovy脚本来实现的。通过对项目需求的评估,初步判定groovy脚本已经可以满足实际的场景。
然而,在这些资料或者方案之中,除了urules,大部分只是关注框架的性能和使用上的简便,很少探讨如何让业务人员可以自行进行规则定义的方案。而urules虽然自带了可视化的规则管理界面,但是界面样式不好自定义,无法跟现有后台管理界面不突兀的融合。
通过不断尝试变换关键字在搜索引擎搜索,最终在stackoverflow找到了一个探讨这个问题的帖子,特此将帖子中提到的方案分享一下,如果你跟我一样在研究同样的问题,也许对你有用。不过在介绍这个方案之前,得先简单了解一下什么是规则引擎
什么是规则引擎?简单的说,规则引擎所负责的事情就是:判定某个数据或者对象是否满足某个条件,然后根据判定结果,执行不同的动作。例如:
12对于刚刚在网站上完成 ...
软件设计
未读领域驱动设计(DDD)前些年很火,因为近两年2B和SAAS越来越受关注。但不少人读过Eric Evans的《领域驱动设计》和Vaughn Vernon的《实现领域驱动设计》都会很懵,太抽象了。。。
本文介绍领域驱动设计的基本概念的同时,用一个虚拟的公司和一个虚拟的项目,介绍领域驱动设计的落地实践。
前言什么是领域,我习惯描述的是财务领域、人力领域、房地产领域、金融领域等,而在领域内,各种业务规则、业务知识盛行,如何有效的把控规则的变化,应对复杂知识,有一个很关键的四字词语,分而治之。分治法在很多场景下体现了其强大的作用力。领域本身很大很复杂,那就拆分,得到更小的领域,也即子域,如同递归调用一般,将一个复杂问题拆分单独求解,而最终将解汇总得到复杂问题解。
怎么拆,拆成怎么样合适,依据什么拆。(有没有感觉很想结构化思维)这些在领域驱动设计中有了一套答案,虽然领域驱动设计不是银弹,但可以说的上是一套极好的系统方法论或称为架构设计的方法论。
领域驱动设计常以战略设计与战术设计来将整个领域展现的淋漓尽致,其作用范围既面向业务也面向技术。从战略角度的整体性(个人更喜欢称其为上帝视角)去规划系统、划 ...
crawler-mouse (https://github.com/daichangya/crawler-mouse)基于Java实现的 爬虫框架
123456789101112131415161718192021222324252627282930313233 +---------------------+ | Data Input | | -------------------- | | Config Files (JSON, | | TXT) & Resources | +--------+-------------+ | v +----------------- ...
微信公众号扫码关注微信公众号,Java码界探秘。
https://blog.jsdiff.com/
java-redis (https://github.com/daichangya/java-redis)基于Java实现的 redis-server
123456789101112131415161718192021 +---------------+ | 客户端 | +-------+-------+ | +----------+----------+ | 网络层 | +----------+----------+ | +-----------------+------------+ | java-redis 服务器 | +--------------- ...
Panda (https://github.com/daichangya/panda)这个项目是一个基于Netty的Java Web服务器,它提供了从简单HTTP服务器到集成Spring Boot等多个版本的演进。以下是对该项目的详细概述:
项目名称与简介:
项目名称:panda
简介:一个基于Netty的Java Web服务器,随着版本的迭代,逐步增加了更多功能,如静态文件下载、controller支持、servlet支持以及最终集成Spring Boot等。
技术栈:
主要技术:Netty, Spring Boot, Spring Web
Netty:一个高性能、异步事件驱动的NIO框架,用于快速开发可维护的高性能协议服务器和客户端。
Spring Boot:简化了基于Spring的应用开发,通过自动配置和启动类让开发者快速搭建Spring应用。
Spring Web:Spring框架的Web模块,提供了全面的Web开发支持。
功能与特性:
支持静态文件下载。
添加了controller和servlet支持,便于开发Web应用。
集成Spring Boot,使得项目可以更 ...
# 前言当说到“体系化”和“碎片式”这两个词,大家会感到一种矛盾冲突感,因为体系就应该不碎片,碎片的东西它就应该不体系。其实是因为我们的学习过程分为好几个不同的阶段,在这个阶段利用体系化的方式,而在另一个阶段,又用碎片化的方式,这样就可以形成体系化碎片式的学习。
我们的学习分为四阶段:输入、内化、沉淀、输出。碎片化在输入的时候用,因为信息本身是碎片化的,时间也是碎片化的,所以输入信息的时候,要碎片化。但有需要体系化的沉淀。因此碎片化的输入,加上体系化的沉淀,你就可以实现利用碎片化的时间,做体系化的学习。
怎么才能实现呢?其实今天要讲的干货内容综合起来就是三个步骤,加后边一个附录,大家了解这个了,干货内容也就掌握了。
# 步骤一:确定工作的应用目标三大步骤的第一个叫做确定工作的应用目标。定目标特别重要,没有目标的时候我们就很容易陷入盲目学习和无边界学习的状态。盲目学习就是我啥都想学,学了以后串不到一块去。无边界学习就是我学习的范围太广了,哪怕是有一个大概的主线想法,但学的东西可能还是太泛了。其实目标本身并不在于对或者错,浙大的郑强教授曾经说过一句话:我不是因为爱高分子这个专业,所以我才去 ...
一、txt、csv、tsv文件txt、csv、tsv都属于文本文件
文件类型
英文全称
名称
分隔符
描述
txt
text
文本类型
没有明确要求
可以有分隔符,也可以没有
csv
Comma-separated values
逗号分隔值类型
半角逗号:','
csv是txt的特殊类型
tsv
Tab-separated values
制表符分隔值
制表符:'\t'
tsv是txt的特殊类型
csv又有叫做Char-separated values(字符分隔值类型),通过字符值进行分隔。
但因为半角逗号在数据中出现的的可能性比较大,所以经常会使用文本包装符来标识逗号为数据中的一部分,或者直接使用其它特殊符号作为分隔符。
二、csv文件规范
每一行记录位于一个单独的行上,用回车换行符CRLF(\r\n)分割。
文件中的最后一行记录可以有结尾回车换行符,也可以没有。
第一行可以存在一个可选的标题头,格式和普通记录行的格式一样。标题头要包含文件记录字段对应的名称,应该有和记录字段一样的数量。
在标题头行和普通行每行记录中,会存在一个或 ...
指标名称指标描述单位描述CPU使用率CPU_Utilization%CPU使用率。网络流量Net_Read_Kbkb网络读取。Net_Write_Kbkb网络写入。缓存命中率Cache_Hit_Ratio%高速缓存命中率。Buffer_Cache_Hit_Ratio%在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。线程等待ASYNC_NETWORK_IOms数据库服务等待客户端取走数据的等待时间。CHECKPOINT_QUEUEms检查点任务队列长度。CHKPTms服务器通知检查点线程启动的次数。CXPACKETms线程正在等待其他并行线程处理完成。IO_COMPLETIONms等待 I/O 操作完成。LATCH_EXms等待 EX(排他)闩锁。LATCH_SHms等待 SH(共享)闩锁。LATCH_UPms等待 UP(更新)闩锁。LCK_M_Sms任务正在等待获取共享锁LCK_M_SCH_Mms任务正在等待获取架构修改锁。LCK_M_SCH_Sms任务正在等待获取架构共享锁。LCK_M_Ums任务正在等待获取更新锁。LCK_M_Xms任务正在等待获取排他锁。LOGBUFFER ...