从此
📄文章 #️⃣专题 🌐酷站 👨‍💻技术 📺 📱

软件编程开发技术


编程导航

程序员重要能力 技术架构(DDD\DCI\MVC等)

编程用项目模板 代码片段(自用) 编程用资源地址

Web+HTML C# Java Android Godot游戏开发
综合
原则
容器使用:
  • 数据库软件原则上在宿主机直接安装,不通过容器方式部署。
通用
  • Linux和Mac均用\n来换行,而HTTP和Windows则用\r\n,JavaScript两种均支持。
  • 在面向对象(Object Oriented/OOP)中,对象(Object/[广义]物理现实)是某一个类(Class)的实例(Instance/物理现实的技术模拟),狭义则两者相同。
  • 解析字符为数字:Java用Integer.parseInt("1"); JavaScript用parseInt("2"); C#用Int32.Parse("3");
  • 调用时为实参:int.TryParse(str, out var result); 声明时为形参:TryParse(String str, Int32 result){ }
  • temporary缩写统一为temp,仅linux目录用/tmp/。
  • 标准写法cmn-Hans优先级高于所有zh-开头(zh-cmn)的兼容性代码。
  • 技术选型 SOP API\SDK - Google、AWS等; 图片格式首选*.webp 未来用*.avif 老派则用*.png - Windows、Linux主流桌面系统,Safari、Chrome等主流浏览器均已支持WebP图像格式。微服务原则
其他
解释器(Interpreter) - 运行时逐行编译和执行。
编译器(Compiler):JVM默认为C1、C2(可换用Graal JIT) 编译器。
  即时编译(Just-In-Time Compilation  简称JIT) - 运行时将热点代码编译为机器码。
  提前编译(Ahead-Of-Time Compilation 简称AOT)- 编译时就将字节码编译为机器码。
必会
  • Git:
    初始化(默认master,但首选github的main分支)
    git init --initial-branch=main
    [错过init指定分支]分支改为main;查看生效 cat .git/HEAD;等同NetBeans->xxx->Git->Switch To Branch->Checkout as New Branch: main
    git switch -c main
    查看变动信息
    git status
    查看单文件变动
    git diff project.godot
    新增和变更均要add下,添加至“Changes to be committed”列表
    git add .
    [仅一次]提交前必须配置下email
    git config --global user.email "you@example.com"
    git remote add origin https://github.com/you/repo.git
    提交“Changes to be committed”列表
    git commit -m "msg"
    [已提交且错过初始化指定分支时]Move默认分支master至main
    git branch -M master main
    推送至仓库(Windows弹出“Connect to GitHub”输入Token即可 / 首次push必须加-u来告知git所关联的远程分支)
    git push -u origin main
  • VS Code对比文件: Ctrl + K 松开按 C - 就能对比当前打开的文件与剪切板的不同。
  • Microsoft Defender防病毒排除项:
    • 查看命令 Get-MpPreference
    • Add-MpPreference -ExclusionPath "$env:userprofile\.gradle\"
    • Add-MpPreference -ExclusionProcess "adb.exe"
    • Add-MpPreference -ExclusionPath "$env:userprofile\AndroidStudioProjects\"
    • Add-MpPreference -ExclusionPath "D:\main\" # 项目目录
    • Add-MpPreference -ExclusionProcess "E:\game-dev\*.exe" # IDE进程
官方导航:

Java C#.NET Android Go Swift Node.js

数据交换

JSON (JavaScript Object Notation)

YAML (YAML Ain't Markup Language™)


面向对象编程 - OOP

概念:
  C语言结构体成员不支持函数,且属于值传递,虽然可以用指针模拟,但内存分配比较繁琐,故C++和Java则专门增加了引用类型的Class和Object。

规范标准

语义化版本 - 采用3段式版本格式,v1.0.0起GA,纯数字对应为001 000 000

Unicode+Emoji


计算机软件著作权登记(R11/政府官方免费申请)

软著只做形式审查,后登记权利无效,且在登记部门内不能重名,诉讼中只作为初步证明,若不被认可还需提交原件;鉴别材料包括程序和文档,两者均提交其前、后各连续30页(每页50行起/美国则为25页) - 中美计算机软件著作权登记差异与比较


技术方案

IM聊天:
  消息DTO结构 - 纯文本、HTML代码(标签白名单)、纯文本混合自定义标记、文本和图片等解析为多个块状标记

编程语法

模块、类、实例化:
  Java
   模块化
    module-info.java

   类 - class C { void m(){ } } // 实例化:new C();

   for/foreach
    for(var element:arr) { System.out.println(element); }

  JavsScript
   模块化
    export const name = "square";
    export function f() { }
    export class c { }

   ES6 Class类
    对象__proto__.constructor属性返回对创建此对象的函数的引用。
    class C1 {
        a = null; // 可选?
        constructor(name) { this.name = name; }
        show() { console.log("x"); }  // 注意 - 方法名前不能写function关键词
        static sum(a, b) { console.log(a+b); }  // 静态调用 C1.sum(1, 2);
    };  new C1("构造函数").show();
    上方class语法糖构造器等同function自动生成的__proto__.constructor:
    function C1(name) { this.name = name; }
    C1.prototype.show = function () {
        console.log("xx");
    }​;  let c1 = new C1("构造函数");

   for/foreach
    forEach((element) => { /* … */ })
    forEach((element, index) => { /* … */ })
    for (x in person) { console.log(person[x]); }

其他

  • docker比podman多一个开机重启参数“--restart=always”,后者需要systemd额外处理。
  • [首选]docker.io是Debian以apt的方式管理依赖;docker-ce则是docker官方用go。