Git 分目录配置
Git目录级配置和分支级配置的解决方案
git支持多级配置
系统级
用户级
项目级
工作区级
但是不支持目录级的配置(即:对指定目录下的所有git项目都生效的配置),所以就没有很好的办法实现给某个目录下的所有git项目设置统一的配置;为了解决这个问题,我研究了git的相关帮助文档,终于找到了我认为还算完美的解决方案,也顺便解决了分支级配置的解决方案;本文就详解这个解决方案以及其中的细节。
目录
问题背景
目录级配置场景
分支级配置场景
解决思路
解决方案
相关内容详解
include 和 includeIf
4.1.1. include
4.1.2. includeIf
多级配置
通过config命令读写指定的配置文件
内容
1. 问题背景
1.1. 目录级配置场景
在用git进行提交时需要提交者的 姓名 和 邮箱,通常,我们有两个邮箱,一个是个人的邮箱,一个是工作邮箱;当一台电脑上即有 个人项目 又有 公司项目 时,需要分别为每个公司(或个人)项目设置邮箱,这很不方便;也是我们大多数人经常遇到的痛点,特别是疫情当下的居家办公场景,免不了用自己的电脑 ...
NetBeans+XDebug 多人远程调试配置
NetBeans 的安装及配置
安装
NetBeans15下载地址
Windows下安装需要先配置 JDK, 配置 JDK 的教程网上很多,就不多赘述
新建/导入项目
新建/导入项目时,Run As 选择 Local Web Site (running on local web server)
Project URL 保持默认即可
注意⚠️:导入已有项目不要直接用NetBeans打开项目目录,而是点击新建PHP项目,然后选择项目导入,可以避免自动识别成错误类型的项目
项目运行配置
右键点击项目根节点,选择 Properties,弹出窗口选择 Run Configuration
Run As 保持 Local Web Site (running on local web server) 不变
Project URL 与 Index File 保持默认,Arguments 可不填
点击 Advanced, 在弹出窗口里配置远程目录与本地目录映射(很重要,错误配置会导致调试时的断点位置错乱,如果远程项目位于镜像内,则填写镜像内的路径!)
Debug URL 选择 Do No ...
Gitlab-Runner
关于学习 Gitlab-runner 遇到的一些坑
Alpine 容器使用ssh连接部署服务器
job_name: image: node:alpine before_script: - 'which ssh-agent || (apk update && apk add openssh-client)' # 如果找不到 ssh-agent,安装 ssh 服务 # run ssh-agent - eval $(ssh-agent -s) # add ssh key stored in SSH_PRIVATE_KEY variable to the agent store - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null # 讲 ssh-private-key 添加到 ssh-agent - mkdir -p ~/.ssh - ssh-keyscan -H $DEPLOY_HOST & ...
Crontab + Shell 实现日志监听
Crontab + Shell 实现日志监听
概述
需要将服务器日志利用 ELK 可视化
前提
因为客观条件没有办法直接修改服务端代码
应用服务器也无法随意安装软件
服务器的日志是文件形式输出的
日志服务器部署在内网的机器上
解决思路
使用的工具
ELK 是 (Elasticsearch + Logstash + Kibana) 的简称,指的是利用 Logstash收集日志,输出到Elasticsearch进行数据处理,再利用Kibana界面对日志进行可视化
Logstash 利用插件,可以支持非常多的输入方式,原生支持且较常用的有:
File : 最常用的输入方式,监听本地日志文件作为数据源
TCP : 监听发送到端口的数据
HTTP : 监听通过HTTP协议POST到端口的数据
问题分析
应用服务器不好安装Logstash实例(占用资源),所以无法使用本地Logstash实例使用 File 方式监听本地日志文件
由于日志服务与应用服务器不在同一台服务器,且部署在内网服务器上,所以File输入无法实现
由于无法直接修改服务端代码,所以只能利用现有的日志 ...
Docker环境搭建高可用Redis-Sentinel集群
Docker环境搭建高可用Redis-Sentinel集群
环境介绍
在单机docker环境下搭建 “3哨兵+1主2从” 的 Redis Sentinel 集群。
准备工作
一台装有docker环境的 Linux/Wins/macOS 设备
了解基础的docker命令
了解docker-compose的使用
正式开始
拉取redis镜像
docker pull redis:alpine
编写Redis集群配置
编写主从节点配置:保持为默认配置即可
编写哨兵配置:其他保持默认配置即可,只需添加一行以下配置:
# 设置主节点名字、主节点的 IP 地址和端口号以及 quorum 值。sentinel monitor <master-name> <ip> <redis-port> <quorum>
至此,Redis集群就算配置好了。接下来,开始编写 docker-compose 文件来编排容器
编排容器
以下给出一个笔者搭建的一个 docker-compose 文件示例
# Docker Compose 文件格式版本version ...
浏览器开发者工具的使用技巧
浏览器开发者工具的使用技巧
打开开发者工具的方法:
快捷键 F12 或 Ctrl+Shift+i(Win)、Command+Option+i(macOS)
鼠标右键菜单中选择 检查
模块
使用过程中,最常用的三个模块为:
元素
网络
控制台
元素
用于定位页面元素、修改元素代码及属性;新增/移除监听事件;添加/删除DOM断点等;
查看元素的代码
点击工具栏左上角箭头图标(Ctrl+Shift+C/Command+Shift+C),进入元素选择模式,鼠标单击页面上需要定位的元素,开发者工具会跳转到元素所在的代码区域,右键单击元素会弹出可操作的所有选项,可以对元素的属性进行增删查改,效果会立即作用在当前标签页,常用于调试开发中的页面样式
此处做的修改刷新页面后会复原为初始状态,调试好样式记得先把所做修改保存起来
几个比较常用的技巧
切换设备显示模式:可以自由切换为手机/PC端页面,常用于验证不同尺寸下页面的显示
颜色取样器:在元素选择模式下,选择某个元素,点击右侧点样式栏,点击color属性,会弹出颜色选择器,此时鼠标会变成画笔,可以选择页面上的颜色,选择器会显示对应颜色代码
...
MySQL事务隔离级别
每天多学一点:深入探究MySQL事务隔离及其实现
事务的特性
并不是所有数据库引擎都支持事务,例如 MyISAM 就不支持事务因此,大多数 MySQL 的引擎都是使用 InnoDB
原子性(Atomicity):一个事务里的操作,要么全都成功执行,要么全都不不执行如果事务执行途中发生错误,会回滚到事务开始前的状态,事务中已经执行的改动全部被撤销
一致性(Consistency):执行事务操作前后,数据满足完整性约束,数据库保持一致性
持久性(Durability):事务操作结束后,对数据的修改是永久性的,即使系统故障也不会丢失
隔离性(Isolation):数据库允许多个并发事务同时对数据的读写,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致
InnoDB 引擎通过以下几个方案来确保事务的四个特性:
持久性是通过 redo log (重做日志)来保证的
原子性是通过 undo log (回滚日志)来保证的
隔离性是通过 MVCC (多版本并发控制)与锁机制来保证的
一致性则是通过持久性+原子性+隔离性来保证的
关于并发事务引发的一系列问题的思考
由于同一时刻 M ...
数据包历险记
每天多学一点:一个数据包从发出到被接收一路究竟是怎么过来的
从“当键入网址后,到网页显示,其间究竟发生了什么” 开始说起
总的来说,大致可以分为以下几个步骤:
浏览器解析 URL,生成 HTTP 报文
通过 DNS 查询真实的 IP 地址
使用 TCP/IP 协议栈对数据包进行切割、打包、封装
利用 MAC 地址确定收发两点的终始点
通过网卡讲数据包从数字信号转换为电信号,通过网线传输到交换机/路由器
通过路由器将数据包转发到公网下一个节点
通过层层转发,数据包到达服务器
服务器开始对数据包进行解包,取出数据,生成响应
接下来,对每个步骤进行详细的拆解,拿着放大镜,一起好好剖析数据包一路上的所见所闻
应用层
HTTP
第一步,浏览器解析用户输入的 URL,生成 HTTP 请求报文:
第二步,生成的 HTTP 消息需要委托操作系统发送给服务器,发送之前,需要根据服务器域名,查询出对应的 IP 地址,这时候,需要用到 DNS 服务器来完成 HOST -> IP 的转换
DNS 域名解析的工作过程:
传输层 & 网络层
协议栈
通过 DNS 获取到 IP ...
MQ消息中间件学习笔记
MQ消息中间件学习笔记
三个问题
消息队列适合什么场景?
消息队列有哪些主流产品、各自的优缺点?
消息队列背后的设计思想(整体核心模型、数据存储考量、数据获取方案对比、消费者消费模型)
消息队列适合场景
异步处理数据:快递员与收货用户
系统应用解耦:公用资源库与上游应用
业务流量削峰:电商秒杀
适用于消息不需要实时处理、一份数据多处使用(不同消费方消费速度不同)的场景
*主流消息中间件及对比
ActiveMQ: 基于 Java 语言开发的一个开源的消息代理。支持多个客户机、服务器、计算机集群等。
RabbitMQ:实现了高级消息队列协议(AMQP)。用 Erlang 编写构建在开放电信平台框架上。所有主要的编程语言均有与代理接口通讯的客户端库。支持多种消息传递协议、传递确认等特性。
Kafka: 由 Scala 写成。一个分布式的、分区的、多复本的日志提交服务。它通过一种独一无二的设计提供了一个消息系统的功能。
RocketMQ: 一个分布式消息和流媒体平台,具有低延迟、强一致、高性能和可靠性、万亿级容量和灵活的可扩展性。
Pulsar:下一代云原生分布式消息流平台,集消息 ...
浅谈XSS和SQL注入攻击的例子、原理和防范方法
XSS和SQL注入攻击的例子、原理和防范方法
网络安全是一个永恒的话题,随着互联网的发展,各种网络攻击也层出不穷,给网站和用户带来了巨大的风险和损失。文章将介绍两种常见的网络攻击方式:XSS攻击和SQL注入攻击,它们分别利用了Web应用程序对用户输入数据的验证不足,从而达到窃取信息、篡改页面、执行恶意代码等目的。文章将通过实例分析这两种攻击的原理和危害,并给出一些有效的防范方法,帮助读者提高Web应用程序的安全性。
目录
XSS和SQL注入攻击的例子、原理和防范方法
目录
摘要
什么是XSS和SQL注入攻击?
XSS和SQL注入攻击的例子
XSS攻击的例子
SQL注入攻击的例子
XSS攻击的原理
SQL注入攻击的原理
XSS和SQL注入攻击的防范
XSS攻击的防范
SQL注入攻击的防范
总结
摘要
文章介绍了XSS和SQL注入攻击的例子、原理和防范方法。XSS攻击是利用Web应用程序对用户输入数据的验证不足,向页面中注入恶意的脚本代码,从而影响客户端浏览器的安全性。SQL注入攻击是利用Web应用程序对用户输入数据的验证不足,向SQL语句中注入恶意的命令,从而影响服 ...