自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

海纳百川

一分耕耘一分收获

  • 博客(197)
  • 收藏
  • 关注

原创 Python学习之路——索引

博客列表Python学习之路——计算机基础知识Python学习之路——编程基础知识Python学习之路——入门知识Python学习之路——字符串Python学习之路——运算符Python学习之路——条件控制语句Python学习之路——列表(list)Python学习之路——元组(tuple)Python学习之路——字典(dict)Python学习之路——集合(set)Python学习之路——函数Python学习之路——高阶函数Python学习之路——面向对象入门Python学习

2019-11-07 15:44:20 280

原创 博客迁移通告

当前博客已迁移至 https://wlynxg.github.io/blog/

2023-07-31 14:22:15 164

原创 Go 的三种指针

在 Go 语言中,存在着三种指针:类型安全指针、unsafe.Pointer 和 uintptr。在日常开发中,经常使用的就是类型安全指针。但是在一些特殊场景下,需要用到其他两种指针才能实现需求。三种指针间可以进行相互转换,其转换关系为:fill:#333;color:#333;color:#333;fill:none;}类型安全指针uintptr。

2022-11-20 00:21:28 939 1

原创 gRPC 提供接口文档

在 RESULTful 接口服务中,我们可以使用 swagger 来展示当前服务接口列表,但是当我们的项目是使用的 gRPC 提供接口服务时,就没法使用 swagger 来做接口展示服务了。为了解决这个问题,本文将介绍加的方式来在线提供 gRPC 文档。

2022-11-09 22:56:28 1210

原创 gRPC 入门使用教程

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。

2022-10-28 19:36:30 5121 1

原创 服务热重载实现思路

服务热重载实现思路热重启(平滑重启、热修复)是指在不中断已有请求的状态下对服务进行重启。例如 nginx 在不断开连接的情况下重新加载新配置,微服务在不断业务的情况下完成热升级,这些都是热重启的一些应用。在 Linux 服务器上实现热重启主要有以下两种方式:覆盖模式和管理者模式。覆盖模式该模式下,父进程会 fork 出子进程,将自身占有的文件资源交给子进程,子进程创建完成后通知父进程退出并开始接收新的连接,父进程收到通知后就不再接收新的连接,将当前连接处理完成后父进程就会退出,子进程此时就代替了

2022-03-22 12:40:48 3602

原创 Go 检查结构体是否实现接口

Go 检查结构体是否实现接口编译时检查var _ MyInterface = new(MyStruct)运行时检查var _ MyInterface = (*MyStruct)(nil)

2022-03-22 12:34:41 595

原创 Windows 个人版实现多用户远程登陆

Windows 个人版实现多用户远程登陆在个人 Windows 版本中是不提供像Windows Server的多用户同时访问主机的功能。 不过我们可以通过 hook Windows 提供远程服务的 C:\Windows\System32\termsrv.dll 库文件、修改相关注册表并提供依赖程序的方式可以使个人版本的Windows 提供多人同时访问主机的功能。实现环境:Windows版本:Windows 10 Education 20H2硬件平台:x64termsrv.dll版本:10.0.1

2022-02-11 08:59:31 1603

原创 RemoteApp 实现分析

RemoteApp 实现分析以下所说步骤都是基于 Windows 10 Education English 版本,不同 Windows 版本的操作可能会有一定差异!一、原理分析Remote APP 是 Windows 的 RDP 功能原生支持的。通过配置服务端注册表相关配置项以及客户端 RDP 配置文件则可以实现发布应用发布。当客户端与服务端建立远程连接时,客户端的remoteapplicationprogram:s可以传递别名或者绝对路径。别名当客户端传递别名时,服务端会去Appli

2022-01-07 14:53:26 4781 1

原创 监测 Windows 应用行为

监测 Windows 应用行为当我们安装、运行 Windows程序时,程序可能会包含创建文件夹、修改注册表等一系列行为。但是大部分应用程序的这些行为对于使用者来说都是不可见的。当我们需要监控一个应用程序干了哪些事情,就可以使用工具: Wise Installation System。该应用程序通过拍摄快照、对比快照的方式可以来展示程序的行为。安装:选择SetupCapture:勾选设置:对当前主机内容拍摄快照:执行需要观测的程序:执行操作后再观测当前主机状态:完成后就可以在

2022-01-07 14:52:46 2191

原创 Gitlab 数据迁移

Gitlab 数据迁移对 gitlab 数据进行迁移之前要保证两个gitlab服务器的版本一直,否则可能会迁移失败查看 gitlab 服务器版本:cat /opt/gitlab/embedded/service/gitlab-rails/VERSION原始仓库1. 代码仓库数据// 1. gitlab 仓库的数据都在这个目录下,存储的方式是按照 Project ID 的hash值进行保存的cd /var/opt/gitlab/git-data/repositoriestree -L

2021-12-23 15:20:06 1155 2

原创 D-Bus 学习

D-Bus 学习一、背景知识D-Bus是一种高级的进程间通信机制(interprocess communication,IPC),它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在 Linux 桌面环境为进程提供通信,同时能将 Linux 桌面环境和 Linux 内核事件作为消息传递到进程。D-Bus(其中D原先是代表桌面“Desktop” 的意思),即:用于桌面操作系统的通信总线。现在逐渐被引入到嵌入式系统中,不过名字还是保留原先的叫法而已。D-Bus的

2021-10-12 15:56:08 940

原创 Docker 配置 PostgreSQL13 的主从环境

Docker 配置 PostgreSQL13 的主从环境前言PostgreSQL 数据库支持多种复制解决方案,以构建高可用性,可伸缩,容错的应用程序,其中之一是预写日志(WAL)传送。该解决方案允许使用基于文件的日志传送或流复制,或者在可能的情况下,将两种方法结合使用来实现备用服务器。默认情况下,流复制是异步的,其中在将事务提交到主服务器后将数据写入备用服务器。这意味着在主服务器中提交事务与更改在备用服务器中变得可见之间存在很小的延迟。这种方法的一个缺点是,如果主服务器崩溃,则可能无法复制任何未提交

2021-09-29 14:28:15 1617

原创 Go 静态编译机制

Go 静态编译机制一、Go 的可移植性众所周知,Go 具有良好的跨平台可移植性,Go 还提供了交叉编译的功能,运行我们在一个平台上编译出另外一个平台可执行的二进制代码。在Go 1.7及以后版本中,我们可以通过下面命令查看Go支持OS和平台列表:$ go tool dist listaix/ppc64android/386android/amd64android/armandroid/arm64darwin/amd64darwin/arm64dragonfly/amd64freebs

2021-09-15 11:31:49 4540

原创 Go 编译优化

Go 编译优化前言减小编译后的二进制的体积,能够加快程序的发布和安装过程。接下来我们将通过 go 编译选项和第三方工具学习如何减少编译后二进制的体积。一、添加编译选项Go 编译器默认编译出来的程序会带有符号表和调试信息,一般来说 release 版本可以去除调试信息以减小二进制体积:go build -ldflags="-s -w" -o main main.go参数详解:-s: 忽略符号表和调试信息;-w: 忽略DWARFv3调试信息,使用该选项后将无法使用 gdb 进行调试。二

2021-09-14 17:16:22 1741

原创 Docker 绕过了 firewalld 的问题

Docker 绕过了 firewalld 的问题前言我们的 firewalld 上没有开放该端口,但是在使用 Docker 的端口映射后我们就能够通过外网访问到该端口。原因默认情况下当Docker启动容器映射端口时,会直接在iptables添加规则开启添加端口。而 firewalld 实际上也是在iptables写入规则。因此 firewalld和docker属于是同级的应用,但是firewalld不会去检测 docker 写入的规则,就会导致 docker 可以开启firewalld没有允许的端口

2021-09-10 15:02:46 3133 1

原创 Docker 四种网络模型

Docker 四种网络模型一、简介为了满足使 Docker 满足复杂业务场景下的网络需求,我们有必要深入了解 Docker 的网络知识,探索 Docker 的多种网络模型。Docker 的网络模型主要有四种:Bridge 模式:是 Docker 的默认网络模式,可以使用 –net=bridge 指定;Host 模式:使用 –net=host 指定;Container 模式:使用 –net=container: 容器名称或ID 指定;None 模式:使用 –net=none 指定。下面让我

2021-09-10 11:36:59 1328

原创 Docker 系统架构

Docker 系统架构与使用一、整体架构通过下图可以发现,Docker 系统主要包含客户端、服务端和仓库三大部分。Docker 在运行时分为 Docker 引擎(服务端守护进程) 和 客户端工具,我们日常使用各种 docker 命令,其实就是在使用 客户端工具 与 Docker 引擎 进行交互:二、ClientDocker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务器或者守护进程发出请求,服务器或者守护进程将完成所有工作并返回结果。Client 能

2021-09-09 17:34:11 684

原创 Docker 基础使用

Docker 基础使用一、获取镜像docker pull命令可以从镜像仓库上拉取仓库:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[:端口号]。默认地址是 Docker Hub(docker.io);仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 librar

2021-09-08 18:01:08 120

原创 Go 基础文件操作

Go 学习——文件操作一、读取文件1. 按字节读取func main() { // 打开读取的文件 file, err := os.Open("testFile") // return 之前记得关闭文件 defer file.Close() if err != nil { fmt.Println(err) return } // 每次读取的内容缓存 buf := make([]byte, 1024) // 文件的所有内容 var context []byte for {

2021-09-08 15:08:01 891

原创 通过 Go 学习 TDD

通过 Go 学习 TDD一、了解 TDDTDD (Test Driven Development)是敏捷开发中的一项核心实践和技术,也是一种设计方法论。TDD的核心思想是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码。TDD 工作流程先分解任务,分离关注点(后面有演示),用实例化需求,澄清需求细节只关注需求,程序的输入输出,不关心中间过程,写测试用最简单的方式满足当前这个小需求即可重构,提高代码健壮性再次测试,补重用例,修复 Bug提交流程如图所示

2021-09-03 17:57:45 274 1

原创 Git 学习笔记

Git 学习笔记一、入门使用包含操作:git init:初始化 git 仓库git add :添加文件git commit:提交文件# 1. 创建文件夹mkdir democd demo# 2. 初始化 git 仓库git init# 3. 新建文件并提交echo Hello git! >> readmegit add readme# 4. 提交修改git commit -m "创建 readme"Commit Message 规范:为了方便我们

2021-09-03 08:44:44 158

原创 VM 虚拟机三种网络模式

VM 虚拟机三种网络模式VMware 作为一种使用极其广泛的虚拟机软件,它为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式),三种网络模式都各自有各自的特点。Bridged(桥接模式)VMnet0 默认桥接模式。桥接模式下虚拟机通过 VMnet0 虚拟交换机实现与物理机在同一个局域网中。在这种模式下,虚拟机和物理机能够互 ping,物理机能上网虚拟机也能够上网:Host-Only(仅主机模式)VMnet1 默认仅主机

2021-09-01 17:29:20 1358

原创 Linux 常用软件安装(Centos)

Centos 常用软件安装一、Development toolsyum grouplist | more # 查看有那些组安装包可用yum grouplist | grep Development # 搜索和 Development 相关的yum groupinstall -y "Development Tools" # 安装 Development Tools 工具包二、yum-utilsyum -y install yum-utils三、Docker安装使用官方

2021-09-01 13:08:29 854 1

原创 更换 yum 源为阿里源

更换 yum 源为阿里源目标:更换 yum 源为阿里源系统:Centos 7.9步骤1. 备份旧的配置文件cd /etc/yum.repos.d/ # 进入文件夹mv CentOS-Base.repo CentOS-Base.repo_back # 备份原始配置文件2. 下载阿里源的文件wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 若没有 wget 可使用 curlcurl

2021-09-01 11:10:16 2463

原创 Centos minimal 网络配置

Centos minimal 网络配置一、下载 && 安装版本选择:Centos 7.9 minimal下载地址:Index of /centos/7.9.2009/isos/x86_64/ (aliyun.com)安装:这里自己选择 VM 进行安装(安装过程这里就不赘述了)二、Centos 网络配置相关文件1. /etc/resolv.conf它是 DNS 客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,同时还包含了主机的域名搜索顺序。该文件是由域名解析器(res

2021-09-01 10:18:36 802

原创 SSH 免密登录

SSH 免密登录前言目标:Win10 免密登录 CentosPs:在配置 ssh 免密登录前首先要保证客户机和服务器之间能够互相 ping,并且开放客户机和服务器的 22 端口(也可以设置端口转发),先尝试一下使用 ssh 是否能够登录,再来配置 ssh 免密登录。Windows打开 cmd,输入 ssh-keygen配置好信息,系统会自动为我们生成公钥和私钥。文件位于 C: \Users\(User)\.ssh目录下,后续我们需要将id_rsa.pub文件上传至上传至服务器。Linux同

2021-09-01 10:16:02 183

原创 Java Web 学习:ServletContext 类

Java Web 学习:ServletContext 类一、简介ServletContext 是一个接口,它代表的是一个 web 应用的环境(上下文)对象,ServletContext对象内部封装是该 web 应用的信息,一个web应用只有一个 ServletContext 对象。ServletContext 对象是一个域对象。域对象是指可以像 Map 一样存取数据的对象,这里的“域”指的是存储数据的操作范围。ServletContext 与 Map 的比较:对象存储数据取出数据

2021-07-10 23:29:42 158

原创 Python 构建 Web 服务器:3.0

Python 构建 Web 服务器:3.0一、简介在上一章中我们已经成功让 Web 服务器能够持续运行和同时支持多用户连接。但是迄今为止我们的 Web 服务器对于所有的路由都只能返回一句 “Hello World”。作为一个合格的 Web 服务器,我们需要能够支持解析路由的功能。那么本节,我们就将实现解析路由并返回文本资源的功能。二、解析路由随意用浏览器抓包一个 HTTP 报文首部进行观察:GET / HTTP/1.1Host: www.baidu.comUser-Agent: Mozill

2021-07-10 15:05:11 471 1

原创 Java Web学习:ServletConfig 类

Java Web学习:ServletConfig 类一、简介当 servlet 程序配置了初始化参数后,web 容器在创建 servlet 实例对象时,会自动将这些初始化参数封装到 ServletConfig 对象中。在调用 servlet 程序的 init 方法时,我们可以获取到 ServletConfig 对象,此时就可以得到当前 servlet 的初始化参数信息。二、配置 servlet 初始参数servlet 程序的初始参数在 web.xml 文件中,使用 init-param 标签进行

2021-07-09 22:06:47 109

原创 Java Web学习:HttpServlet

Java Web学习:HttpServlet一、简介HttpServlet是GenericServlet的子类,又是在GenericServlet的基础上做了增强;一般在实际开发中,都是通过继承 HttpServlet 类的方式去实现 Servlet 程序;在 HttpServlet 类中分别提供 doDelete(),doGet(),doOptions(),doPost(),,doPut() 和 doTrace() 这些方法来对对应的 HTTP 方法进行服务;HttpServl

2021-07-09 21:29:09 139

原创 Python 构建 Web 服务器 2.0

Python 构建 Web 服务器 2.01. 简介在上一节中,我们使用 socket 构建了一个可以被浏览器访问的 Web 服务器。但是我们构建的 Web 服务器客户端连接一次后就结束程序了,并且这个 Web 服务器同时只允许一个客户端进行连接。本节会对上一次的 Web 服务器进行优化,使其能够持续运行并且能够支持多用户同时连接!2. 持续运行在实际开发中,Web 服务器是 24 小时持续运行的,想要实现这个效果我们可以使用 while 循环达到。我们将与客户端建立连接部分的代码放入 whil

2021-07-09 10:48:24 108

原创 Java Web学习:Servlet 入门

Java Web学习——Servlet 入门一、Servlet 简介Servlet 是 JavaEE 规范之一,同时它也是 JavaWeb三大组件(Servlet 程序、Filter 过滤器、Listener 监听器)之一。Servlet 是在服务器上运行的小程序,它是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。二、创建 Se

2021-07-08 23:21:47 131 1

原创 Python 构建 Web 服务器 1.0

Python 构建 Web 服务器 1.0一、Web服务器简介当我们在访问网站时,实际上就是向对应网站的Web服务器发出了请求,Web服务器监听到请求后就会向我们返回相对于的资源。Web服务器实际上就是一个接收网络请求,处理网络请求的应用程序。市面上常见的Web服务器有:Apache、 Nginx 、IIS 等。作为一个 Web 开发人员,理解 Web 服务器的工作流程对于我们而言是有好处的,正所谓 “知己知彼,百战不殆” 。在接下来的教程中我们将使用 Python 语言构建一个简易的 Web

2021-07-08 15:15:51 138 2

原创 Java Web学习:Tomcat

Java学习之路——Tomcat一、简介Tomcat是一款Apache下面的开源的Servlet容器,实现了对Servlet和JSP规范的支持。另外 Tomcat 本身内含了一个 HTTP 服务器,所以也可以被当作一个 Web 服务器来使用。但是Tomcat作为一个Web服务器,它对静态资源的处理能力要比Apache或者Nginx这类的Web服务器差很多,所以我们经常将Apache和Tomcat(或者是Nginx和Tomcat)组合使用,Apache来充当Web服务器处理静态资源的请求,Tomcat

2021-07-08 11:00:28 247

原创 Centos7下部署Flask应用

Centos7下部署Flask应用一、安装 Python3yum install python3 -y# 验证Python安装是否完成python3 -Vpip3 -V# 更新pippip3 install --upgrade pip二、安装uWSGI安装依赖:yum install python3-devel如果出现下面的错误:Transaction check error: file /etc/rpm/macros.python from install of pyt

2021-07-06 16:09:33 1086 1

原创 php MD5值比较绕过

php MD5值比较绕过关于 md5() 函数在 php 程序中,md5($string,bool): 得到一个字符串散列值。其中第二个参数默认为false,表示该函数返回值是32个字符的十六进制数。若指定为true,则表示函数返回的是16字节的二进制格式(这样通过浏览器解析会出现乱码)。== 绕过示例:if($_POST['a'] != $_POST['b']&& md5($_POST['a']) == md5($_POST['b'])) { echo $flag;}

2021-05-31 23:48:09 4638 3

原创 php 数组溢出

php 数组溢出题目if($array[++$c]=1){ if($array[]=1){ echo "nonono"; } else{ require_once 'flag.php'; echo $flag; }}解析本题重点在此行:$array[]=1此语句正常赋值时,返回结果一定是为 1 的,要想跳出这个判断语句,必须让它赋值出问题。查阅资料后发现:作为PHP最重要的数据类型HashTable其key值是有一定的范围的,如果设置的key值过大就会出现溢出的问

2021-05-31 22:44:13 944 4

原创 解决 hexo init 失败问题

解决 hexo init 失败问题问题描述准备使用 hexo 搭建个人博客,执行 hexo init 后失败,错误内容为:A:\桌面\hexo>hexo init try-hard.cnINFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.giterror: RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054fatal:

2021-05-28 00:36:51 8568 20

原创 GitHub 克隆加速

GitHUb 克隆加速现在 GitHub 在国内处于半墙状态,能否链接上全凭人品。想要快速下载,那么不妨尝试一下下面这个方法!我们可以使用 GitHub 的镜像网站 —— github.com.cnpmjs.org 进行克隆。将原本的链接中的 github.com 替换为 github.com.cnpmjs.org 即可使下载速度快速提高!示例例如我们要克隆 sqlmap 的仓库:原始链接:https://github.com/sqlmapproject/sqlmap.git使用原始链接进行

2021-05-28 00:25:43 1628

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除