环境变量配置文件
环境变量配置文件首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。 交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。 login shell就是需要输入用户名及密码登录的shell,如开机shell登陆、ssh登陆、su - username(从root切换到其他用户时无需密码)。 non-login shell无需输入密码,如bash、su username、图形界面打开bash。 /etc/profile 全局(公有)配置,不管是哪个用户,登录时都会读取该文件,该文件被执行并从/etc/profile.d目录的配置文件中搜集shell的设置。 /ect...
git commit提交规范
git commit 提交规范 jetbrains plugin: Git Commit Template 12345<type>(<scope>): <subject><BLANK LINE><body><BLANK LINE><footer> 大致分为三个部分(使用空行分割): 标题行: 必填, 描述主要修改类型和内容 主题内容: 描述为什么修改, 做了什么样的修改, 以及开发的思路等等 页脚注释: 放 Breaking Changes 或 Closed Issues type: commit 的类型 feat: 新功能、新特性 fix: 修改 bug perf: 更改代码,以提高性能 refactor: 代码重构(重构,在不影响代码内部行为、功能下的代码修改) docs: 文档修改 style: 代码格式修改, 注意不是 css 修改(例如分号修改) test: 测试用例新增、修改 build: 影响项目构建或依赖项修改 revert: 恢复上一次提交 ci: 持续集成相关文件修改...
systemd开机启动
开机自启在16.04版本以及之前版本都只需要在"/etc/rc.local"文件的"exit 0;"前加要执行的命令即可。服务器是18.04,etc目录下根本没有rc.local文件,ubuntu做了改动。 ubuntu-16.10 开始不再使用initd管理系统,改用systemd systemd is now used for user sessions. System sessions had already been provided by systemd in previous Ubuntu releases. systemd 的使用方法,发现改动有点大, 包括用 systemctl 命令来替换了 service 和 chkconfig 的功能。 比如以前启动 mysql 服务用: 1sudo service mysql start 现在用: 1sudo systemctl start mysqld.service 设置方法systemd 默认读取 /etc/systemd...
當設置 top_img 為 false 時
當設置 top_img 為 false 時,不顯示頂部圖
GraphQL搭建服务端API
GraphQL搭建服务端API graphql库: github.com/99designs/gqlgen 基于gqlgen加密版: github.com/vndocker/encrypted-graphql 网络框架: github.com/gin-gonic/gin golang: 1.15.2 项目结构1234567891011121314151617181920212223.├── go.mod├── go.sum├── gqlgen.yml├── Dockerfile├── Makefile├── internal│ ├── auth│ │ └── auth.go│ ├── bff│ │ └── bff.go #代码生成│ ├── model│ │ └── model.go #代码生成 │ ├── resolver│ │ ├── resolver.go #代码生成│ │ └── server.resolvers.go ...
gqlgen文档
1.介绍什么是gqlgen?gqlgen是用于构建GraphQL服务器的Go库。 gqlgen is based on a Schema first approach-您可以使用GraphQL模式定义语言来定义API。 gqlgen优先考虑类型安全性-您在此永远都不会看到map [string] interface {}。 gqlgen启用了Codegen-我们生成了无聊的代码,因此您可以专注于快速构建应用程序。 仍不足以说服使用gqlgen?将gqlgen与其他Go graphql实现进行比较 入门 要安装gqlgen,请运行以下命令:在项目目录中运行go get github.com/99designs/gqlgen。 您可以通过运行以下命令来初始化新项目:go run github.com/99designs/gqlgen init。 您可以在这里找到更全面的指南来帮助您入门。我们还有两个真实的示例,展示了如何使用gqlgen无缝实现GraphQL应用程序。您可以在此处查看这些示例或访问godoc。 报告问题如果您认为已发现错误,或某些行为不符合您的预期,请在...
GraphQL文档
GraphQL文档 https://graphql.cn/learn/ GraphQL 入门 在接下来的一系列文章中,我们会了解 GraphQL 是什么,它是如何运作以及如何使用它。在找如何搭建 GraphQL 服务的文档?这有一些类库可以帮你用多种不同语言实现 GraphQL。通过实用教程深入学习体验,请访问 How to GraphQL 全栈教程网站。我们还与 edX 合作创建了免费的在线课程,探索 GraphQL:一种用于 API 的查询语言。 GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。 一个 GraphQL 服务是通过定义类型和类型上的字段来创建的,然后给每个类型上的每个字段提供解析函数。例如,一个 GraphQL 服务告诉我们当前登录用户是 me,这个用户的名称可能像这样: 12345678type Query { me: User}type User { id:...
微服务下使用GraphQL构建BFF
微服务下使用GraphQL构建BFF 原文:https://zhuanlan.zhihu.com/p/35108457 官网:https://graphql.cn/ 服务端库:https://graphql.cn/code/ 微服务架构,这个在几年前还算比较前卫的技术在如今遍地开花。得益于开源社区的支持,我们可以轻松地利用 Spring Cloud 以及 Docker 容器化快速搭建一个微服务架构的原型。不管是成熟的互联网公司、创业公司还是个人开发者,对于微服务架构的接纳程度都相当高,微服务架构的广泛应用也自然促进了技术本身更好的发展以及更多的实践。本文将结合项目实践,剖析在微服务的背景下,如何通过前后端分离的方式开发移动应用。 对于微服务本身,我们可以参考 Martin Fowler 对 Microservice 的阐述。简单说来,微服务是一种架构风格。通过对特定业务领域的分析与建模,将复杂的应用分解成小而专一、耦合度低并且高度自治的一组服务。微服务中的每个服务都是很小的应用,这些应用服务相互独立并且可部署。微服务通过对复杂应用的拆分,达到简化应用的目的,而这些耦合度较低的...
autoxjs高级开发环境搭建
概述autoxjs 是继续维护升级的Auto.js 项目,在原来项目的基础上,实现了如下功能: [x] autoxjs 项目工程化:结合webpack vscode插件,开发、编译、打包、部署、混淆、加密一体化 文档资料[x] vscode 插件右键,自动提示操作等下载地址[x] vscode 自动补全、方法注释等, 文档资料[x] 发布新版autoxjs 4.2.1 : 打包插件,运行apk、autox.js下载地址[x] 建设论坛、提供交流社区,交流社区 [ ] 建设应用商店[ ] 提供更好的sdk 封装 下面我主要对工程化、规划范化这块的环境搭建进行讲解: 优酷视频讲解 环境搭建 你需要安装 nodejs ,安装过程中请注意要 [ 将node添加PATH中 ] 和 安装 npm 这两个选项都要勾选上。(一般的前端工程师都有这个环节) 安装vscode 并安装 autoxjs开发插件即:Auto.js-VSCodeExt-Fixed 注意是0.3.11 或以上版本。 (ctr+ shift+p 选择autojs 启动服务) 安装全局安装 webpack: npm i -g ...
Golang使用validator进行数据校验及自定义翻译器
Golang使用validator进行数据校验及自定义翻译器 包下载:go get github.com/go-playground/validator/v10 https://pkg.go.dev/github.com/go-playground/validator/v10#pkg-overview 一、概述在接口开发经常会遇到一个问题是后端需要写大量的繁琐代码进行数据校验,所以就想着有没有像前端校验一样写规则进行匹配校验,然后就发现了validator包,一个比较强大的校验工具包下面是一些学习总结,详细内容可以查看validator 二、操作符说明 标记 标记说明 , 多操作符分割 | 或操作 - 跳过字段验证 三、常用标记说明比较运算符 运算符 运算描述 例子 eq 等于 Field validate:"eq=0" gt 大于 Field validate:"gt=0" gte 大于等于 Field validate:"gte=0" l...
阿里COLA2.0架构
https://blog.csdn.net/significantfrank/article/details/100074716 COLA 3.0的源代码在:https://github.com/alibaba/COLA/ 很多同学不止一次和我反馈,我们的系统很混乱,主要表现在: 应用的层次结构混乱:不知道应用应该如何分层、应该包含哪些组件、组件之间的关系是什么; 缺少规范的指导和约束:新加一段业务逻辑不知道放在什么地方(哪个类,哪个包)、应该起什么名字比较合适? 解决这些问题,正是我创建COLA的初心之一——试图探索一套切实可行的应用架构规范,这个规范不是高高在上的纸上谈兵,而是可以复制、可以理解、可以落地、可以控制复杂性的指导和约束。 自从COLA诞生以来,我收到了很多的意见和建议。同时,我自己在实践过程中,也发现COLA 1.0的诸多不足,有些设计是冗余的并不是很有必要,而有些关键要素并没有囊括。譬如,我最近的思考应用架构核心和复杂业务代码治理就是对COLA 1.0的反思。 结合实践中的探索和对复杂度治理持续的思考,我决定对COLA进行一次全面的升级,于是有了现在...
DDNS
DDNS ddns 脚本12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#!/bin/bash# 根据实际修改以下字段值auth_email="user@example.com" # CloudFlare 注册邮箱auth_key="c2547eb745079dac9320b638f5e225cf483cc5cfdda41" # API Keyzone_name="example.com" # 要做指向的根域名record_name="www.example.com" # 要做指向的记录# 根据需要修改ip=$(curl -s http://ipv4.icanhazip.com) # 获取外网 IPip_file="ip.txt" # IP 自动检测记录id_file="cloudflare....
端口转发
端口转发iptables关于CentOS 7系统:需要删除firewalld装回iptables. # 安装命令: 1234systemctl stop firewalld.servicesystemctl disable firewalld.serviceyum install iptables-services -ysystemctl enable iptables.service ubuntu 1apt install iptables -y 第一步:开启系统的转发功能首先,先确认服务器是否已开启转发,运行: 12345sysctl net.ipv4.ip_forward# 如果已经启动则显示> net.ipv4.ip_forward = 1# 如果没有启动则显示> net.ipv4.ip_forward = 0 # CentOS 6/Debian/Ubuntu 开启方式: 12echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confsysctl -p #...
git常见问题
常见问题1.使用git提交代码,不是自己的账号解决方法 12git config --global user.email your-emailgit config --global user.name your-name 或者直接删除~/.gitconfig 2.移除文件a.从磁盘和暂存区中同时删除要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交。 可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了。结果:Changes not staged for commit:deleted: C.txt 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f(译注:即 force 的首字母)。 这是一种安全特性,用于防止误删还没有添加到快照的数据,这样的数据不能被 Git 恢复。示例 新建文件 D.txt echo 哈哈哈>D.txt 将D.txt添加到工作区 git add D.txt 删除文件 git rm D.txt发生错误 :e...
Go语言如何使用条件编译
[译] Go语言如何使用条件编译 https://zhuanlan.zhihu.com/p/76535890 当开发需要依赖底层平台或处理器体系特性的Go包时,提供对应的特定实现是非常有必要的。 Go没有预处理,没有宏定义系统,不可以像c语言那样使用#define来控制是否包含平台相关的特定代码。作为替代,Go使用go/build包中定义的标签系统(system of tags)和命名约定(naming convention)以及go tool中的相应支持来允许Go包编译特定代码。 这篇文章说明条件编译是如何实现的以及如何在你自己的工程中使用它。 先说go list讨论条件编译之前,我们需要简单讨论下go list命令。go list允许你访问包内部的数据结构从而驱动编译过程(build process)。 go list的大部分参数和go build、go test、go install相同,但是它不会执行编译。使用-f格式化参数,我们可以填入一段text/template的模板代码,它会在一个包含go/build.Package结构的上下文环境被执行。...
浏览器滚动条美化
浏览器滚动条美化前言作为一个前端,在编辑页面的时候,有的时候遇到滚动条,会觉得浏览器自带的滚动条样式太丑,可能会与设计的美美的页面格格不入,但是滚动效果又必须存在。那么,这个时候就会想到要是能改变滚动条的样式,或者将滚动条隐藏掉更好一些。那么,怎样做到改变滚动条的样式呢? 这里介绍的是css3的一个样式,-webkit-scrollbar。 webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式。但是因为他是css3样式,所有浏览器兼容性还是存在问题的。 滚动条组成123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475=======================================chrome=======================================:horizontal 伪...
Mysql常用函数大全
Mysql常用函数大全一、数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP(x) 返回值e(自然对数的底)的x次方 FLOOR(x) 返回小于x的最大整数值 GREATEST(x1,x2,...,xn)返回集合中最大的值 LEAST(x1,x2,...,xn) 返回集合中最小的值 LN(x) 返回x的自然对数 LOG(x,y)返回x的以y为底的对数 MOD(x,y) 返回x/y的模(余数) PI()返回pi的值(圆周率) RAND()返回0到1内的随机值,可以通过提供一个参数(种子)使RAND()随机数生成器生成一个指定的值。 ROUND(x,y)返回参数x的四舍五入的有y位小数的值 SIGN(x) 返回代表数字x的符号的值 SQRT(x) 返回一个数的平方根 TRUNCATE(x,y) 返回数字x截短为y位小数的结果 二、聚合函数(常用于GROUP BY从句的SELECT查询中) AVG(...
Butterfly添加全局吸底Aplayer教程
以下文章只是教程 如果部署之后,并没有出现 aplayer , 请确认是否跟足步骤操作或者更换音乐源,多试试。 如果遇到使用問題,请仔细查看插件文档,或者到插件那裏反饋。 前言如果你想使用 aplayer,很多人都會推薦安裝 hexo-tag-aplayer 這款插件。這款插件通過 Hexo 獨有的標籤外掛,我們可以很方便的寫入一些參數,插件就會幫我們生成對應的 html。如果你只是使用一些簡單的功能,其實無需使用到這個插件,只需以 html 格式書寫就行,不用插件去轉換。 例如: 如果使用插件,在 markdown 中要這樣寫 1{% meting "000PeZCQ1i4XVs" "tencent" "artist" "theme:#3F51B5" "mutex:true" "preload:auto" %} 其會被插件渲染為 1<div id="aplayer-uxAIfEUs" class="...
vscode开发环境配置
vscode开发环境配置Visual Studio Code: https://code.visualstudio.com/ 安装中文简体包 1.golanggolang下载:https://gomirrors.org/ git下载: https://git-scm.com/downloads gcc(posix-seh)下载: https://sourceforge.net/projects/mingw-w64/files/ 安装golang插件 按说明配置 go 1.13 及以上 12go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,direct 重启vscode Ctrl+Shift+P输入Go:Install/Update Tools命令,选择要安装的工具 安装gopls(代码自动完成,跳转) gopls配置 1234567891011121314151617181920212223242526272829303132333435"go.useLanguageServer&qu...
Findder抓包
Findder抓包 Xposed+JustTrustMe关闭SSL证书验证 widows10 夜神模拟器 android5 root SSLPinning如果能够这样做,是不是就可以解决这种“中间人劫持+伪造证书“攻击的问题: 客户端在收到服务器的证书后,对该证书进行强校验,验证该证书是不是客户端承认的证书,如果不是,则直接断开连接。 浏览器其实已经这样做了,但是如“前面”所说,选择权交给了用户,且浏览器由于其开放性允许让用户自导入自己的证书到受信任区域。 但是在APP里面就不一样,APP是HTTPS的服务提供方自己开发的客户端,开发者可以先将自己服务器的证书打包内置到自己的APP中,或者将证书签名内置到APP中,当客户端在请求服务器建立连接期间收到服务器证书后,先使用内置的证书信息校验一下服务器证书是否合法,如果不合法,直接断开。 当然攻击者也可以通过把这个APP源码给逆出来,然后找到证书校验这段逻辑,给他干掉,或者干脆把证书信息换成自己的服务器证书信息,然后重新打包签名,但是一旦APP做了代码加密和混淆,这个操作也会变得比较难搞。 因此这样看来,通过预先把服务器的证书信息...