Jenkins插件学习之active_directory_plugin之DNS查询
jenkins的active directory plugin之DNS查询为什么在jenkins上Active Directory 插件那里的Domain Name只配置个 company.com 就行了呢?
DNS查询,通过udp通信查询到公司的所有的DC(domain controller)地址,然后进行AD域认证。其实是通过一个查询获取到了具体的dns服务器的IP,返回的是好几个ip,这个根据公司配置了几个DC(domain controller)服务器有关系的。
DNS报文格式,不论是请求报文,还是DNS服务器返回的应答报文,都使用统一的格式。
12345678910111213141516DNS format+--+--+--+--+--+--+--+| Header |+--+--+--+--+--+--+--+| Question |+--+--+--+--+--+--+--+| Answer |+--+--+--+--+--+--+--+| Authority |+--+--+--+- ...
Jenkins插件学习之active_directory_plugin之登录慢的问题
jenkins的active directory plugin 插件发现公司的jenkins在第一次登录的时候非常的慢,如果 去掉active directory plugin 插件的认证 第一次打开就很快,所以这里准备通过源码来分析 一些看看是哪里慢, 是哪个方法慢。
废话不多说,直接github上 克隆源码,然后编译调试运行。
123456789fork一个下载代码git clone https://github.com/mamh-java/active-directory-plugin.git编译调试运行代码mvn -DskipTests=true -Djava.util.logging.config.file=logging.properties package hpi:run一般的基于master分支先调试, 或者 需要特定版本的,看你插件的哪个版本号,然后代码仓库下面检出到对应的标签上。
12345678910111213141516主要看这个 public class ActiveDirectoryUnixAuthenticationProvider extends ...
Gerrit源码分析之ls-user-refs命令的实现
今天我们讲讲gerrit 的 ssh 命令的 ls-user-refs命令的实现的实现,采用的代码是gerrit的 stable2.15 分支的,因为我们使用的版本是 2.15.1的。
LsUserRefs 类详解12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970这个命令在 com.google.gerrit.sshd.commands.LsUserRefs 类中,@RequiresCapability(GlobalCapability.ADMINISTRATE_SERVER)@CommandMetaData( name = "ls-user-refs", description = "List refs visible to a specific user", runsAt = MASTER_OR_SLAVE)publ ...
Gerrit学习之JS-Plugin-Development
gerrit 使用 JS 插件gerrit JS 插件Gerrit Code Review 支持用于 JavaScript 插件的 API,以与 Web UI 和服务器进程进行交互。
Plugin loading and initializationJavaScript 是使用标准的 ``` <script src='??'> ``` HTML 标签加载的。
插件应该通过 传递给 Gerrit.install() 的匿名函数中定义它们的代码来保护全局命名空间。
该插件将被传递一个描述其在 Gerrit 注册的对象。
该插件 pluginname.js,可以是独立文件,也可以是jar 中的静态资产作为Web UI 插件。
pluginname.js 包含对 Gerrit.install() 的调用。 每个文件应该只有一个 Gerrit.install() 调用。
Gerrit Web 应用程序导入 pluginname.js。
对于独立插件,入口点文件是位于 gerrit-site/plugins 文件夹中的 pluginname.js 文件,其中 pl ...
Gerrit学习之gerrit源码学习之提交页面
gerrit-3.4.3 的编译
对于 一个 提交 页面, 整个 页面是 在 mainContent 下面的
12345678910<div id="mainContent" class="container"> 对于 一个 提交 页面, 整个 页面是 在 mainContent 下面的 1. <section class="changeInfoSection"> 最上部分的 changeInfo 块。 2. <paper-tabs id="primaryTabs" role="tablist" tabindex="0" dir="null"> files/comments/findings 这个 tab 行 3. <section class="patchInfo"> 4. <paper-tabs id="secondaryTa ...
Gerrit学习之gerrit配置js插件
theme 主题插件,更改颜色主题在 服务器 上的 plugins 子目录 新建一个 theme.js 文件
12345678910111213141516171819202122232425// gerrit https://gerrit.googlesource.com/gerrit/+/master/polygerrit-ui/app/samples/theme-plugin.js// https://gerrit-review.googlesource.com/Documentation/pg-plugin-dev.html// https://groups.google.com/g/repo-discuss/c/tgvmGhfFcgU// https://stackoverflow.com/questions/19307964/customize-gerrit-home-pagelogo-and-colorGerrit.install(plugin => { const styleElement = document.createElement( ...
Gerrit学习之修改编译gerrit源码
gerrit-3.4.3 的编译
下载gerrit源码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980https://gerrit.googlesource.com/gerrit (fetch)git clone https://gerrit.googlesource.com/gerritgit checkout v3.4.3git clone --recurse-submodules https://gerrit.googlesource.com/gerrit -b v3.4.3 gerrit-3.4.3要注意 这个 modules/jgit 路径下面 jgit 的版本。我这里 3.4.3的gerrit 配上 60b81c5a9 这个点的gerrit。https://github.com/mamh-java/jgit.git * 60 ...
JPA学习之JSP对象持久化API总结
JPA 学习笔记
##jpa是什么
12345Java Persistence API:用于对象持久化的 APIJava EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层
JPA和Hibernate的关系12345678910111213JPA 是 hibernate 的一个抽象(就像JDBC和JDBC驱动的关系):JPA 是规范:JPA 本质上就是一种 ORM 规范,不是ORM 框架 —— 因为 JPA 并未提供 ORM 实现,它只是制订了一些规范,提供了一些编程的 API 接口,但具体实现则由 ORM 厂商提供实现Hibernate 是实现:Hibernate 除了作为 ORM 框架之外,它也是一种 JPA 实现从功能上来说, JPA 是 Hibernate 功能的一个子集
jpa的hello world程序首先弄个jpa的helloworld程序
persistence.xml 文件。这个要放到resources目录下面的META-INF目录下面.JPA规范要求在类路径的META-INF目录下面放persistence.xml,文件名称是固定的。
...
Kubernetes学习之kubeadm安装部署k8s集群
kubernets 集群安装部署(kubeadm)安装部署安装前准备
设置每个机器自己的hostname
1hostnamectl set-hostname xxx
关闭seLinux
关闭swap分区
这个安装系统的时候就没有设置交换分区
允许 iptables 检查桥接流量
12345678# 设置加载br_netfilter模块cat <<EOF | sudo tee /etc/modules-load.d/k8s.confoverlaybr_netfilterEOFsudo modprobe overlaysudo modprobe br_netfilter
1234567891011# 开启bridge-nf-call-iptables ,设置所需的 sysctl 参数,参数在重新启动后保持不变 # 参考:https://imroc.cc/post/202105/why-enable-bridge-nf-call-iptables/cat <<EOF | sudo tee /etc/sysctl.d/k8s.confnet.brid ...
MySQL学习之字符集和排序规则
MySQL 中 字符集 和 排序规则字符集MySQL 提供了多种字符集和排序规则选择,其中字符集设置和数据存储以及客户端与 MySQL 实例的交互相关,排序规则和字符串的对比规则相关
(1). 字符集的设置可以在 MySQL 实例、数据库、表、列四个级别
(2). MySQL 设置字符集支持在 InnoDB, MyISAM, Memory 三个存储引擎
(3). 查看当前 MySQL 支持的字符集的方式有两种,一种是通过查看 information_schema.character_sets 系统表,一种是通过命令【 show character set; 】查看。
1234567891011mysql> select * from character_sets;+--------------------+----------------------+---------------------------------+--------+| CHARACTER_SET_NAME | DEFAULT_COLLATE_NAME | DESCRIPTION ...
Ansible自动化运维工具之role介绍
ansible Roleansible role
ansible Role 介绍ansilbe roles是自1.2版本引入的新特性,用于层次性、结构化地组织playbook。
roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。
要使用roles只需要在playbook中使用include指令即可。简单来讲,
roles就是通过分别将变量、文件、任务、模板及处理器放置于单独的目录中,
并可以便捷地include它们的一种机制。角色一般用于基于主机构建服务的场景中,
但也可以是用于构建守护进程等场景中。
简而言之:
ad-hoc 适用于临时命令的执行。
playbook 适用 中小项目。
而大型项目一定使用 roles。
roles 主要依赖于目录命名和摆放。默认 tasks/main.yml 是所有任务的入口。所以使用roles的过程可以理解为:为目录规范化命名的过程。
123456789101112131415$tree.├── playbooks.yml <==执行剧本└── roles &l ...
Hibernate学习之Session
Session概述
session接口是hibernate向应用程序提供的操作数据库的最主要接口,它提供了基本的保存,更新,删除和加载java对象的方法
session具有一个缓存,位于缓存中的对象称为持久化对象,他和数据库中的相关记录对应,session能够在某些时间点按照缓存中对象的变化来执行相关的sql语句,来同步更新数据库,这一过程被称为刷新缓存flush。
站在持久化的角度,hibernate把对象分为4中状态,持久化状态,临时状态,游离状态,删除状态,session特定的方法能使对象从一个状态转换到另外一个状态。
这里我们建立一个HibernateTest测试类。其中放置了Session和Transaction成员变量,这个在开发中不能放置为成员变量,会有并发问题的,这里我们只是测试可以放置一下。我们通过单元测试的 @Before public void init()来初始化我们成员变量,然后通过@After public void destroy() 来关闭。
12345678910111213141516171819202122232425262728293 ...