-
Java 中如何告别面条式的 null 判断”
Java 中如何告别面条式的 null 判断[TOC]背景最近在写 Java,其中 MongoDB 中存了某个文档数据,「如果存在」结构是如下这样:{ "localtion":{ "pickup":{ "region":{ "region_en":"China" } } }}现在需要判断如果 region_en 有值就拿出来,在 PHP 中用 empty() 函数处理即可:$r...…
-
是时候清理你的 Git 分支了”
背景 历史原因,拆分了 20 几个仓库出来,仓库太多而人员太少,没有人维护项目分支的管理 Git 分支的成本太廉价,创建且不删除的代价很小 Windows 上的 GUI 工具太给力,轻易就能搜索对应的分支,但在 Linux 下 Git GUI Tools 没什么很好的工具 开发人员没有良好的习惯,自己创建的分支经常不删除、经常在过期的迭代分支调试代码…长期下来,导致分支泛滥,最严重的一个历史项目居然积压了 256 个无效分支。目前后端团队就 10 来人,因此 95% 的分支估计都是...…
-
重学编程-PHP”
[TOC]WSL2 Debian 编译安装 PHP 8.1.13(LNMP) php/apache 和 php/nginx的区别 PHP 线程安全与非线程安全版本的区别深入解析安装 PHP 前置准备sudo apt updatesudo apt upgrade安装依赖sudo apt-get install -y \ autoconf build-essential curl libtool \ libssl-dev libcurl4-openssl-dev libsqlite3-d...…
-
005 Why You Need To Learn Design Patterns
设计模式学习导读[TOC]为什么说每个程序员都要尽早地学习并掌握设计模式相关知识? 很多程序员都知道基础知识的重要性,觉得要夯实基础,才能走得更远,但:基础知识有哪些?基础要怎么样才算是“夯实”?如何将基础知识转化成开发“生产力”? 基础一般有哪些?框架、语言都是变化的,“不变”的是基础,如:计算机组成原理、操作系统原理、编译原理、网络原理、算法与数据结构、设计模式… “夯实”的基础是怎么定义的?用最简单的方式,能快速实现解决问题,并明白其“本质”、“原理” ...…
-
004 Personal Growth Experience
个人成长经验[TOC]什么才是所谓的编程能力?如何考核?如何提升?所谓编程能力,指的是把“逻辑”(或者说“功能”“业务”)翻译成代码的能力。所谓编程能力强,指的是,不仅能编写正确的代码,而且编写代码的速度很快,写出来的代码 bug 很少、性能很好、质量很高。更加具体点讲,一个编程能力强的人,能熟练使用编程语言、开发类库等工具,思路清晰,面对复杂的逻辑,能够编写出 bug free 的代码,能够合理地利用数据结构和算法编写高效的代码,能够灵活地使用设计思想、原则和模式,编写易读、易扩展、易维...…
-
003 Code Review
代码审计(Code Review)[TOC]聊一聊 Google 是如何做 Code Review 的 腾讯工程师,万字长文说 Code Review Code Review 的巅峰 Code Review 快把我逼疯了 技术团队如何高效的落地代码CR [Google官方:How to do a code review eng-practices (google.github.io)](https://go...…
-
002 Recommend Some Books For You
002-加餐内容学习[TOC]设计模式、重构、编程规范相关的书籍 《设计模式:可复用面向对象软件的基础》GoF 的23种设计模式是设计模式的开山之作,经典之中的经典,很薄,但理解上会比较晦涩。可能作者是大佬,写的东西很有深度、很经典,但不是很容易被平凡人理解 《Head First 设计模式》口语化、场景化,但是例子比较脱离实践,可以通过该书对 “什么是设计模式?有哪些设计模式?” 有很好的解答,小白首选! 《图解设计模式》日本程序员-结城浩 写的 《深入设计模式》 一名乌克兰程序...…
-
001 How To Learn Design Patterns
001-如何学习《设计模式之美》专栏[TOC] KISS 原则:Keep It Simple and Stupid。 编程,本质就是:人和计算机沟通的工作,各类编程范式、各类设计模式都是为了写出:可维护性高、可重用性高的代码。 大多数设计模式、编码规范、重构等类型的书籍都偏重理论,举例简单但不切合工作,不能实际落地。 看源码到底是看什么?看作者写代码的设计模式、看作者代码的设计思想,大部分情况下并非为了让你拿着源码去做什么改动优化。 ...…
-
Laravel ORM 分表查询
背景新接手一个“改造”酒店项目,需要3个月内和现有业务打通且完成前台的改造并上线。由于只是“试水”业务且唯一的要求就是“快”。所以就得尽量少改动,为了维持后台及各种配置的可用,表设计也不能更改。前台业务除了对接供应商搜索获取报价的部分代码可用,其余基本都要推倒,使用的是 PHP 开发,经过团队商议决定使用最新的 Laravel 9.x 版本进行前台 API 的开发。在使用 Laravel 过程中我比较喜欢 ORM 中的 with 关联模型查询数据 ,而现有表结构中 product 表和 p...…
-
StarShip 定制 Windows Terninal
StarShip 定制 Windows TerninalStarShip 终端订制指南1. 安装 Nerd Font 系列的字体如果是 Windows 一定要通过 “管理员身份” 打开 powershell,然后执行:choco install firacode其他 OS 安装方式:https://github.com/tonsky/FiraCode/wiki/Installing安装完字体后,在 WSL 的设置中将字体设置为新安装的 Fira Code2. 安装 StarShip# W...…
-
IDEA 乱码小记
周末遇到了 IDEA 输出中文乱码的问题,以前也遇到过…但是都属于零散记录在有道中,依然是弄了一大晚上。趁此机会将这些小知识点整理记录一下,理解一些“乱码”的原因。local(系统区域设置)、字体、LANG(系统语言) 的区别locale 指的的是当前操作系统的语言环境,如:你当前系统是用中文、英文、还是泰文,但要注意这仅仅是你当前系统本身的语言环境,跟你通过浏览器上网能否正常浏览中文、英语、法语这些没有直接关系。在 Linux 下,所有支持的语言环境配置都放在 /usr/share/i1...…
-
一些网络概念
记录一些不算常听,但需要知道的基本概念。DNS 记录类型参考:DNS 记录类型 域名解析:就是域名到IP地址的转换过程,相比 IP,使用域名标识站点更加简单好记 A 记录:A-address,A 记录就是将一个域名解析到一个特定的 IP-v4 地址,在公网域名解析经常遇到 AAAA记录:是将一个域名解析到一个特定的 IP-v6 地址,目前IP-v6 还未普及,见的不多 NS 记录:Name Server 记录是指域名服务器记录,用于指定该域名是由哪个 DNS 服务器来进行解析 M...…
-
Docker 启动错误:Bind for xxx failed“port is already allocated”
早上启动 Docker 容器时,报错信息如下:lms@LMS:/docker/erc-docker$ ./app.sh startStarting erc_php74 ...Starting erc_php74 ... errorERROR: for erc_php74 Cannot start service erc_php74: driver failed programming external connectivity on endpoint erc_php74 (b29cfd7...…
-
对解耦、抽离的思考:代码毒瘤-“魔术数字”
记录于 2022-04-21 与同事交流学习的思考在工作环境中,我们经常会用到数字(1、2、3…)来作为某一种代码状态的标识。如:性别(0-男性、1-女性)、订单状态(0-未支付、1-已完成…)等等这类情况。但是如果我们在后台统计时要将变性也细分出来,那么 sex 字段就可能有:0-男性、1-女性、2-女变性为男、3-男变性为女 四种情况,而于用户而言其实依然只有:男、女 两种。当然上述情况我们可以拆分为两个字段,但如果将这种情况类别到电商系统的订单状态来说,这种情况就会复杂很多,如果...…
-
Linux 网络共享存储学习记录
对于 Linux 系统来说,远程挂载就相当于“移动硬盘”,我们经常会用:NFS、rsync、SMB、sshfs 这些方式来进行网络文件共享(Docker 或 Vagrant 还有 unionfs 、 vboxfs 等挂载方式)。这篇文章是为了汇总(逐渐记录)对这些网络共享存储方式的学习。NFS 共享存储NFS(Network File System-网络文件系统)主要功能是:通过 TCP/IP 方式,通过 RPC 服务调用让不同的主机系统之间可以共享文件或目录(企业集群架构中,还有更复杂的...…
-
管理你的Git密钥和用户信息?
正常情况下,我们的 Git 项目只需要一个密钥对即可了,但有些情况下不得不要用到多个密钥对。如:部分公司为了管理员工的权限问题会统一分发办公的密钥对、我们需要针对不同的项目组使用不同的密钥对。我们要怎么让 Git 自动针对不同的项目使用不同的邮箱、用户、密钥验证呢??我们使用 git clone 代码的时候基本就两种方式: HTTP(S)、SSH HTTP(S) : 私人项目需要手动输入用户名和密码,而公开的项目是可以直接下载无需账户信息的。 SSH : 不管是公有还是私有的项目,都需...…
-
硬链接和软链接有什么区别?
ln 命令简介ln <source path> <link path> 是 *inux 系统下建立链接文件的命令。ln 的解释如下:Usage: ln [OPTION]... [-T] TARGET LINK_NAME (1st form) or: ln [OPTION]... TARGET (2nd form) or: ln [OPTION]... TARGET... DIRECTORY (3rd form) ...…
-
对低代码平台的思考?
文章写于 2022-02-26.第一次听到 「低代码-Low Code」 这个概念还是在曹大的 Go 语言直播课中听到,但是了解了一下概念就没有过多的思考了。但最近关于这个词,被很多的公众号推文,算是小火了一波。刚好查了几篇文章看了看,加深一些了解,也有一些自己的思考。当天也恰好碰到飞哥(公众号:开发内功修炼)推文送低代码相关的书籍,就将自己的理解和思考在评论区写了一下,然后就出现了下方截图的好消息,哈哈哈~这也促使我写下这篇文章来记录一下自己的理解和思考。以下都是自己的理解和思考,但由于...…
-
如何利用 VSCode 远程开发?
文章来源于公众号「奇伢云存储」大佬的文章 《VSCode 阅读 Linux 代码怎么才不卡顿?这样做才能快的飞起!》 的一部分,由于自己在实操过程中遇到一点小问题,记录一下。大家感兴趣的可以去阅读一下原文。本地环境配置根据自己系统去 VSCode 官网 自行下载安装包并进行安装即可。安装 VSCode安装 VSCode 过程就不介绍了,安装完毕首次运行 VSCode 的时候会提示你安装中文语言扩展,可自行选择,配图是中文版,但中英版本差别不大。安装 Remote-SSH首先,安装 Remo...…
-
如何将本地分支同时推送到多个远程分支?
背景由于在国内访问 Github 速断相对比较慢,因此一些项目我们可能需要同时推送到 Github 和国内的 Gitee。我们可以通过 git remote add <origin name> <url> 设置多个 remote,如下:但是,推送的时候就需要分开逐个提交# 先推送 github 远程git push origin main:main# 再推送 gitee 远程git push gitee main:main这样每次提交的时候都需要两步操作才可以,还是...…