linux日常笔记
BSD & System V 风格
BSD(Berkeley Software Distribution)和 System V 都是 Unix 操作系统的重要分支和变体,它们在 Unix 的发展历程中有着重要地位,在系统架构、功能特性和应用场景等方面存在一定差异,以下是具体介绍:
BSD
起源与发展:BSD 起源于 20 世纪 70 年代末的加州大学伯克利分校。它是在 AT&T 的 Unix 基础上进行开发的,添加了许多新的特性和功能。在发展过程中,产生了如 FreeBSD、NetBSD、OpenBSD 等多个衍生版本,这些版本在服务器、嵌入式系统等领域都有广泛应用。
特点
网络功能强大:BSD 在网络方面的支持非常出色,它率先实现了许多重要的网络协议和功能,如 TCP/IP 协议栈的完善和优化,为现代网络通信奠定了基础。像 FreeBSD 就因其强大的网络性能,常被用于构建网络服务器和防火墙等设备。
开源与社区活跃:BSD 及其衍生版本大多采用开源的方式发布,拥有活跃的社区。社区成员积极参与开发和维护,不断为系统添加新功能、修复漏洞,使其技术不断更新和进步。
可移 ...
golang并发编程
摘抄自极客时间课程
go并发编程实战课:https://b.geekbang.org/member/course/intro/100061801
检查程序的工具:
race detector
vet工具
一、开篇词
学习 Go 并发编程,有哪些困难? 那学习 Go 并发会有哪些困难呢?
主要总结为 5 大问题。
在面对并发难题时,感觉无从下手,不知道该用什么并发原语来解决问题。
如果多个并发原语都可以解决问题,那么,究竟哪个是最优解呢?比如说是用互斥锁,还是用 Channel。
不知道如何编排并发任务。并发编程不像是传统的串行编程,程序的运行存在着很大的不确定性。这个时候,就会面临一个问题,怎么才能让相应的任务按照你设想的流程运行呢?
有时候,按照正常理解的并发方式去实现的程序,结果莫名其妙就 panic 或者死锁了,排查起来非常困难。
已知的并发原语都不能解决并发问题,程序写起来异常复杂,而且代码混乱,容易出错。
怎么提升 Go 并发编程能力?
学习这件事儿,最怕的就是不成体系,即使知识点之间是彼此独立的,也必定存在着联系。我们要做的,就是找出逻辑关系,拎出知识线。关于 ...
Prometheus
B站视频
Prometheus 是一个生态。
1. 概述
Prometheus Server,主要用于抓取数据和存储时序数据,另外还提供查询和 Alert Rule 配置管理。
client libraries,用于检测应用程序代码的客户端库。
push gateway,用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。
exporters,收集监控样本数据,并以标准格式向Prometheus 提供。例如:收集服务器系统数据的node_exporter,收集MySQL监控样本数据的是MySQL exporter 等等。
alertmanager,用于告警通知管理。
Pushgateway 是Prometheus 生态中一个重要工具,使用它的原因主要是:
Prometheus 采用pull模式,可能由于不在一个子网或者防火墙原因,导致Prometheus 无法直接拉取各个target 数据。
在监控业务数据的时候,需要将不同数据汇总,由Prometheus 统一收集。
当exporter不能满足需要时,也可以通过自定义(python、shell、java)监控我们想要 ...
go包管理
https://cnblogs.com/songhaibin/articles/15512953.html
1. 三种包管理方式
使用go path问题
代码开发必须在go path src目录下,不然,就有问题。
依赖手动管理
依赖包没有版本可言
从这个看, go path不算包管理工具
govendor
解决了包依赖,一个配置文件就管理
依赖包全都下载到项目vendor下,每个项目都把有一份。拉取项目时,开始怀疑人生。
go mod介绍
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:
模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
2. go mod基本说明
下面设置go mod和go proxy
12go env -w GO111MODULE=ongo env -w GOPROXY=https:// ...
SQLBoiler
SQLBoiler入门指导1-最好用的Go ORM框架
SQLBoiler官方文档翻译–最好用的Go ORM框架
SQLBoiler 是一个根据数据库表生成对应的 Go ORM 代码的工具。
它是一个数据库先行的 ORM 框架,也就是说你需要先设计你的数据库,而不是像 gorm 那样先设计 struct。
1. 环境
这里使用 MySQL 作为数据库,其他数据库配置和依赖可能会有所不同。
环境要求:
Go 1.13以上
表名列名使用蛇形命名法snake_case
蛇形命名法
特点
全部小写:所有字母都使用小写。
单词间隔:单词之间使用下划线(_)来分隔。
数据库表结构
123456789CREATE TABLE `user` ( `id` bigint(0) UNSIGNED NOT NULL AUTO_INCREMENT, `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `password` varchar(64) CHARACTE ...
Gin
https://www.liwenzhou.com/posts/Go/gin/
中文文档
一、下载与示例
下载并安装Gin:
1go get -u github.com/gin-gonic/gin
例子:
1234567891011121314151617181920package mainimport ( "github.com/gin-gonic/gin")func main() { // 创建一个默认的路由引擎 r := gin.Default() // GET:请求方式;/hello:请求的路径 // 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数 r.GET("/hello", func(c *gin.Context) { // c.JSON:返回JSON格式的数据 c.JSON(200, gin.H{ "message": "Hello world!", ...
leetcode hot 100 刷题(go语言版)
入口
Cookbook
哈希
两数之和
查看代码 顺序扫描数组,对每一个元素,在 map 中找能组合给定值的另一半数字,如果找到了,直接返回 2 个数字的下标即可。如果找不到,就把这个数字存入 map 中,等待扫到“另一半”数字的时候,再取出来返回结果。
1234567891011121314151617func twoSum(nums []int, target int) []int { visited := make(map[int]int) // map[val]index ans := make([]int, 2) for i := 0; i < len(nums); i++ { anotherPart := target - nums[i] anotherPartIndex, ok := visited[anotherPart] if ok { ans[0] = anotherPartIndex ans[1] = i ...
如何学习新技术
怎么去学习新技术
何时需要学习新技术
遇到一个新的问题、新的问题,首先我们会看看现有的技术能否解决,其次我们就需要学习新的技术。
跳槽,学习新的技术。
怎么学习新的技术
学习新技术:
(1)原理
(2)基本语法
快速入门案例,会基本使用,不需要涉及技术细节
讨论这个新技术的细节
(1)怎么使用更规范
(2)有什么使用的陷阱
(3)使用时,有什么注意事项
……
Go学习路线
等我称为go语言大佬再更新,啊哈哈……
amis
官方仓库:baidu/amis: 前端低代码框架,通过 JSON 配置就能生成各种页面。 (github.com)
官方文档:中文文档
官方可视化编辑器:可视化编辑器
B站教学视频:Amis 前端低代码框架 百度出品 基础简介(1)_哔哩哔哩_bilibili
这玩意需要会json,不了解的先学一下语法
低代码平台amis学习 三:发送网络请求并回显响应内容 - 我是冰霜 - 博客园 (cnblogs.com)
概念
接下来我要用我的话来说一下这个东西,可能有些说的不太准确,主要是自用,细节还是看文档
背景:
低代码是什么?
低代码(Low-Code)是一种软件开发方法,旨在通过最小化手动编码的需求,使开发人员能够更快速地构建和部署应用程序。低代码平台提供了一套可视化的工具和组件,使开发人员可以通过拖放、配置和设置属性来创建应用程序,从而从头开始编写大量的代码。低代码平台的主要目标是降低开发应用程序所需的技术复杂度,从而加快开发周期并减少这种方法适用于那些需要快速响应业务需求、构建原型、开发内部工具或简化业务流程的项目。
可以想象自己正在建造一座房子。传统的方法是从头开始打 ...
面经
我的简历
CS-Notes 面试笔记 (cyc2018.xyz)
小林coding (xiaolincoding.com)
帅地玩编程-校招|面试|学习路线,你都可以在这里找到 (iamshuaidi.com)
大厂15万字C++开发面试手册出炉(C++和计算机基础全有) (qq.com)
编程十万问的个人空间 (bilibili.com)
程序员面试HR问题汇总及答案,好不容易过了一面二面,千万别栽在HR面_哔哩哔哩_bilibili
手撕
宇量升:
查看解析 就是leetcode的动态规划原题,刷的不多,压根就没往动态规划想,下面是现场做的暴力解法
12345678910111213141516171819202122232425262728293031323334353637383940#define _CRT_SECURE_NO_WARNINGS#include<bits/stdc++.h>using namespace std;int main() { if (freopen("./sample1.txt", &quo ...