自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

成长的足迹

见证个人成长,分享技术经验

  • 博客(419)
  • 资源 (2)
  • 收藏
  • 关注

原创 GitHub Copilot概述

从一个代码补全的AI编程助手开始,演变为目前的AI辅助编程代理,由Github联合OpenAI提供,背后是Microsoft。GitHub Copilot以OpenAI的Codex模型为基础,能够辅助多种编程语言的代码开发。与常见的AI服务一样,GitHub Copilot也提供了一个独立的AI问答服务。通过Web浏览器打开GitHub的网站github.com,可以看到无处不在的“程序猿”,点击即可访问Copilot Chat。

2026-06-09 17:22:36 333

原创 零信任架构及IAM概述

IAM是零信任架构控制面的核心,负责“谁可以访问什么”,包括用户认证、访问授权、身份治理与风险行为评估,是后续数据面中网关、代理和服务微隔离Service Mesh等的前提基础。其中,位于PDP的策略引擎PE是ZTA的大脑,根据输入信息评估请求,做出allow/deny的策略决定,并通过策略管理器PA下发给PEP。所谓的零信任是建立在持续验证、持续评估和持续监控基础上的永不信任。IAM包括身份认证和访问控制,以确认的身份为核心,进行持续的权限验证,以及最小的授权访问和上下文感知的授权访问。

2026-05-21 17:15:00 416

原创 OpenID Connect的认证与授权详解

OAuth 2.0是一种授权机制,用户通过授权服务器给第三方应用授权,以访问自己的资源(位于资源服务器)。相对于OAuth 1.0,OAuth 2.0简化了对客户端的验证,只保留了获取Authorization Code和Access Token的请求过程。OpenID Connect是OAuth 2.0的一个扩展,结合OAuth 2.0的授权提供了用户的认证。

2026-05-19 17:19:34 339

原创 JWT详解

JWT (Json Web Token)是符合RFC 7519标准的、能够以URL安全的方式交换压缩的JSON对象。相对于使用XML格式的SAML,JWT使用JSON格式,数据压缩效率更高。相对于SWT只能使用对称加密的签名,JWT使用公钥/私钥和X.509证书更安全。JWT主要用于认证,使得服务端能够直接验证用户身份而无需存储会话数据,是无状态应用的理想选择。

2026-05-11 17:15:00 322

原创 Kiro CLI调用MCP servers

Model Context Protocol (MCP)是一个开源标准,让AI应用(如Kiro CLI)能够访问外部系统的数据或工具。MCP servers大致可以分为本地MCP servers和远程MCP servers。本地MCP servers需要首先在本地安装,然后注册。远程MCP servers直接注册。

2026-04-30 23:15:00 291

原创 自动化Pipeline中的Kiro CLI详解

Kiro chat提供了一种称为“Headless mode”的运行模式。这是一种无交互方式运行Kiro CLI,可以在自动化Pipeline和脚本中运行Kiro CLI以实现自动化的code review,troubleshoot等。

2026-04-30 17:21:35 420

原创 Kiro Agent的Hooks详解

Agent Hooks

2026-04-29 17:22:04 330

原创 Kiro Agent的Skills详解

该文件包含必要的元数据,如name, description等,以及一些具体instructions,以指导AI Agent实现具体的任务。Skills可以为AI Agent提供真正执行具体任务所需的过程知识和context,AI Agent可以根据需要随时加载Skills,从而拥有相关的领域知识、可稳定重复的工作流程等。相对于MCP,Skills是一种轻量级的、标准化的AI Agent扩展包,定义具体的领域知识和流程以扩展AI Agent的功能。

2026-04-28 17:35:31 399

原创 Kiro的定制Agent详解

默认情况下使用kiro_default,想获取更多关于Kiro的帮助信息可以切换到kiro_help,做项目需求、规划、设计和实现时使用kiro_planner。当然,我们也可以根据项目开发的实际情况创建自己的Agents,通过一组配置为项目定制Kiro的行为,避免重复的访问授权和冗余的Context设置。

2026-04-27 20:00:00 723

原创 Kiro的Steering文件详解

1. 定义基础性的公共Steeringproduct.md定义产品的实现目标、目标用户、关键特性和业务目标。tech.md说明选择的软件框架、类库、开发工具和技术条件,规范后续的开发实现。说明文件结构、命名规范、导入模式和架构,确保后续生成的代码规范一致。给AI coding Agents使用的README文件,包括build/test的常见命令、代码风格指导、测试指导和安全性考虑等。2. 定义项目相关的具体Steering。

2026-04-24 18:04:40 602

原创 Kiro CLI的context详解

resources": [在建立Kiro CLI chat会话时,Agent的resources设置将被加载到会话的context。

2026-04-23 23:15:00 903

原创 Kiro CLI的chat及settings简介

Global的Kiro CLI settings保存在~/.kiro/settings/cli.json文件中。Workspace的Kiro CLI settings保存在当前工作空间的.kiro/settings/cli.json文件中。Session的Kiro CLI settings仅在当前的Kiro chat对话中有效,没有持久化保存。通常,在终端执行上述命令,设置的Kiro CLI settings保存在~/.kiro/settings/cli.json文件中。

2026-04-23 18:45:00 575

原创 Kiro CLI的Windows安装及认证

Windows下Kiro CLI的安装与认证

2026-04-21 18:15:00 293

原创 Amazon Q Developer与Kiro

Amazon Q Developer与Kiro的简介

2026-04-20 16:32:09 155

原创 Google Maven Replacer Plugin插件详解

在Maven项目的构建过程中,对于Maven标准预定义变量,或者<properties>中定义的变量,都可以被实际的值替换。但是,如果要在构建的过程中替换文件中的任何指定字符串(这里成为tokens),就需要使用Google为Maven提供的replacer插件。Google的replacer插件原名为maven-replacer-plugin,2012年以后,为了遵循Mave...

2019-12-28 00:02:39 6459 1

原创 Apache Maven Resources Plugin插件详解

Apache Maven Resources Plugin是Apache Maven团队提供的官方核心插件,能够将Maven项目中的各种资源文件复制到指定的输出目录中。1. 在Maven项目中的资源可以分为两类main资源,指位于src/main/resources路径下的资源文件 test资源,指位于src/test/resources路径下的资源文件2.Apache Maven ...

2019-12-20 23:04:14 11315 2

原创 Java运行时的shutdown hook

Hook作为一种回调方式,广泛应用于软件中。从Java 1.3开始,JVM的Runtime也提供了hook的机制,即shutdown hook。提供给出shutdown hook,在退出JVM的时候,能够执行shutdown hook中定义的必要操作。1. Runtime的Shutdown Hook的特性可以注册多个hook,每个都是一个独立的线程 如果有多个Hook,Hook线程之...

2019-11-24 22:14:00 1991

原创 CPython的命令行与python文件的执行

在Windows系统中,下载并安装了Python解析器后,就可以运行Python文件了。可以使用任何编辑器,编写并保存Python文件。Python运行时提供了多种执行Python文件的方法。1. 编写并保存Python文件myfoo.py如下(没有入口__main__函数):def hello(): print("Xiangbin HAN")打开cmd,cd到文件所在目...

2019-10-24 23:30:26 1811

原创 Java 7的javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake异常分析

Java7通过httpsURLConnection建立HTTPS连接,异常如下:javax.net.ssl.SSLHandshakeException: Caused by: Remote host closed connection during handshake Caused by: SSL peer shut down incorrectly解决方案似乎是明显的,客户端需要提高版本...

2019-09-24 17:29:53 7185

原创 Docker容器启动时的第一个进程的设置总结

实际生产中,Docker容器创建(或启动)时,默认即启动必要的服务进程,这种用法非常常见。容器中默认即启动的服务往往作为容器的第一个进程启动。如docker run命令创建Tomcat容器时即启动容器中的Tomcat服务。Docker提供了有多种方式实现该特性。1.执行一个带参数的命令创建容器时,如果希望默认即执行一个带参数的命令mycommand myparam,利用Dockerfile...

2019-08-01 00:06:11 6041

原创 SELinux检查与Apache HTTP服务器的文件访问典型错配案例及解决

在CentOS 7.5配置Apache HTTP服务器后,看到如下错误:Permission denied查看Apache HTTP服务器的错误日志/var/log/httpd/error_log如下:[Wed May 06 23:00:54 2019] [error] [client 127.0.0.1] (13) Permission denied: access to /www...

2019-07-16 00:14:49 865

原创 SELinux检查与Nginx的反向代理的典型错配案例及解决

在CentOS 7.5配置并启动Nginx后,却总是看到如下异常Permission denied查看Nginx的错误日志如下:[root@mylocal ~]# grep Permission /var/log/nginx/error.log2019/05/30 03:51:21 [crit] 4331#0: *6 " connect() to 127.0.0.1:8080/re...

2019-07-08 23:12:49 2372

原创 Linux资源的SELinux context详解

Linux操作系统中的每个资源(如进程、文件描述符、文件、网络等),也被称为SELinux对象,都拥有一个特别的security label,也被称为SELinux label,或SELinux context,以表示该对象能够执行的permissions和operations。这是一个标识符,从Linux系统的细节中抽象出,只聚焦于系统资源的安全属性。通过使用SELinux context,就可...

2019-06-30 23:45:55 6372 1

原创 SELinux的运行模式与安全策略详解

1. SELinux在Linux系统中的运行状态可以划分为如下3种运行模式(run modes)enforcing默认模式,SELinux会根据安全策略对到达的访问请求进行检查。permissiveSELinux假装在进行安全策略的检查,甚至会将access denial写入日志文件,但实际不会拒绝任何访问请求。这种模式适合开发调试阶段。disabled强烈不建议这种模式。...

2019-06-26 23:43:33 2465

原创 RHEL/CentOS 7中的SELinux概述

Security Enhanced Linux (SELinux)是一个访问控制服务,基于安全策略加强对系统资源的访问控制。在系统安全的基础上,解决“May <subject> do <action> to <object>”的访问控制问题。SELinux是一个Linux内核的扩展模块,通过LSM(Linux Security Module)框架在链接时被加...

2019-06-21 00:05:22 1308

原创 RHEL/CentOS 7中的iptables.service与firewalld.service概述

在RHEL/CentOS 7中,曾经的iptables.service/ip6tables.service已经被firewalld.service所替代。但两者在本质上是一致的,都是通过iptables工具操作Linux kernel的netfilter,实现对IP数据包的过滤。两者只是在实现上有如下不同:iptables/ip6tables的配置默认存储到/etc/sysconfig/ipt...

2019-06-17 22:36:37 3824 1

原创 RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解

在RHEL/CentOS 6及以前的版本中,网络功能是通过一系列网络相关的脚本文件实现,如/etc/init.d/network文件,及如下/sbin/if*文件等。[root@myserver ~]# ll /sbin/if*-rwxr-xr-x. 1 root root 3056 Apr 11 2018 /sbin/ifcfg-rwxr-xr-x. 1 root root 820...

2019-06-13 21:39:37 16061

原创 Docker daemon及容器实例的DNS配置详解

Linux系统中,DNS解析器是一组C库的进程,用以访问DNS服务器。DNS解析器通过/etc/resolv.conf配置文件给出要访问的DNS服务器,配置文件修改后立刻生效,但系统重启后/etc/resolv.conf配置文件的内容回滚到初始状态。1. Docker daemon的DNS配置Docker daemon的配置有两种方式,一种是通过/etc/docker/daemon.jso...

2019-06-05 23:48:08 15882 2

原创 RHEL/CentOS 7中通过systemd service持久化网络命名空间

对于Linux系统中创建的定制的网络命名空间,目前没有理想的方法使其持久化,即能够在Linux系统启动时应用定制的网络命名空间的配置。本文创建了一个systemd service,通过在Linux系统启动时执行其ExecStart脚本,从而实现了每次Linux系统启动时对定制的网络命名空间的配置。创建一个systemd service的过程如下:1. 定义一个可执行的脚本文件,用以配置网络...

2019-06-04 23:44:11 1097

原创 RHEL/CentOS 7的systemd target及其中的multi-user.target

在RHEL/CentOS 6中,使用SysV init和Upstart,通过预定义一组Runlevels(从0到6)表示不同的执行模式。[root@myhost app]# ll /etc/rc.d/total 4drwxr-xr-x. 2 root root 148 May 28 05:40 init.d-rwxr-xr-x. 1 root root 503 May 27 11:29...

2019-06-03 23:18:35 14335

原创 RHEL/CentOS 7的systemd及其systemctl命令概述

systemd是Linux的系统服务管理器,也是默认的初始化系统,并且向后兼容SysV初始化系统的init脚本,能够在启动Linux系统的时候并发启动系统服务。systemd的配置文件/etc/systemd/system.conf。systemd提出了units的概念,一个unit代表着一种systemd管理的系统资源。每个unit都是通过unit配置文件定义的。一个unit的类型是由其un...

2019-05-31 00:23:12 2366 1

原创 RHEL/CentOS 7中Nginx的systemd service

在线安装预构建的Nginx,默认会创建Nginx的systemd服务,对应的服务文件是/usr/lib/systemd/system/nginx.service。文件内容如下:[Unit]Description=The NGINX HTTP and reverse proxy serverAfter=syslog.target network.target remote-fs.targe...

2019-05-27 23:28:01 1654

原创 RHEL/CentOS 7的kernel tunables及其sysctl命令概述

众所周知,Linux kernel是单体的设计(非微内核的设计),但是在编译时加入了大量可选的、附加的模块modules。这样,在启动Linux kernel时,就可以通过kmod动态选择加载不同的模块(modules),而且模块还可以设置不同的参数。1. Linux kernel通过tunables设置Linux系统的启动行为,对应/proc/sys路径下的虚拟文件系统。根据Linux ...

2019-05-26 21:12:29 4024

原创 RHEL/CentOS 7的FirewallD及其firewall-cmd命令概述

FirewallD是RHEL/CentOS 7+的一个防火墙服务的守护进程,对应系统的firewalld.service。其与iproute2软件包的iptables/ip6tables的关系如下,实质上都是通过iptables模块配置内核的netfilter模块:在RHEL/CentOS 7中,iptables.service/ip6tables.service已经被firewalld....

2019-05-14 23:10:35 2915

原创 Docker容器实例通过非默认的网络命名空间访问外部网络

Docker为所有容器实例建立了独立的网络命名空间中,并通过docker0桥接到宿主机的默认网络命名空间。如果容器实例要通过宿主机上的一个定制网络命名空间oam,而非宿主机的默认网络命名空间,访问外部网络,示意图如下所示。对于上述图示,Docker宿主机上的配置比较复杂,大致可以归纳为如下几步。1.创建并配置虚拟网卡veth0/veth1的IPs;2.配置默认网络命名空间...

2019-05-06 00:32:16 778

原创 NAT及跨网络命名空间的网络地址转换

NAT (Network Address Translation)即网络地址转换,最初的目的是在路由器上,修改IP报文头中的源地址(source address)或目标地址(destination address),以转发报文。通过NAT,实现了私有子网中与公共网络的连接,也间接延续了IPv4的生命,推迟了IPv6的到来。1. NAT可以分为如下几类1) Source NAT (SNAT)...

2019-05-01 00:00:20 1306

原创 虚拟网络设备及其在Linux网络命名空间中的应用

Linux的网络命名空间用以隔离Linux主机上的不同的网络环境。但是有时候,我们又需要从一个网络命名空间中访问另一个网络命名空间中的网络,这就需要用到虚拟网络设备。虚拟网络设备(Virtual Network Device)是一种抽象的网络设备,类似网络管道,用以在不同的网络命名空间之间建立传输隧道,也可以用以创建网桥以连接到多个其他网络命名空间。虚拟网络设备在Linux中的实现就是veth...

2019-04-29 23:43:31 736

原创 Linux内核的网络命名空间的概念及常用命令

命名空间(namespace)的概念已经非常常见了,通常用以区分不同范畴内的各种资源。在Linux内核中,命名空间用以隔离多种Linux内核的资源,如进程、进程间通信、网络、挂载路径等。通过Linux命名空间,能够把Linux有限的内核资源(进程号、通信资源、网络资源等)合理分配给各个用户的进程,而不互相干扰。Linux的网络命名空间(network namespace)用以在一个Linux主...

2019-04-29 23:29:23 2159

原创 基于iptables的Docker网络隔离与通信详解

Docker提供了bridge, host, overlay等多种网络。同一个Docker宿主机上同时存在多个不同类型的网络。位于不同网络中的容器,彼此之间是无法通信的。Docker容器的跨网络隔离与通信,是借助了iptables的机制。我们知道,iptables的filter表中默认划分为IPNUT, FORWARD和OUTPUT共3个链,详情请参考 iptables及其过滤规则。Docke...

2019-03-27 17:26:04 21288 8

原创 iptables及其过滤规则

1. iptables是Linux内核的一个模块,用以管理对网络设备(网卡)的访问,如路由过滤、端口转发、NAT等,root用户可以通过iptables配置操作系统的路由表。在当前的主流Linux发布系统中,都默认安装了iptables。为了适应IPv6,事实上iptables用以管理IPv4数据包的过滤和地址转换,ip6tables用以管理IPv6数据包的过滤和地址转换。后文将其统一称为ip...

2019-03-19 00:01:07 5523

A PPT template

A PPT template

2025-08-15

logisim 3.9.0

logisim 3.9.0

2025-08-15

digital-7 (mono italic).ttf

A file of ttf

2021-07-22

空空如也

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

TA关注的人

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