One or more PGP signatures could not be verified

One or more PGP signatures could not be verified gpg -recv-key <KEYID> https://bbs.archlinux.org/viewtopic.php?id=191954 Two PGP Keyrings for Package Management in Arch Linux http://allanmcrae.com/2015/01/two-pgp-keyrings-for-package-management-in-arch-linux/embed/#?secret=zQHTu5bbvd

2011-10-16 · 1 min · 23 words · -

Android OpenVPN-TAP 模式/策略路由

‘Android OpenVPN-TAP 模式/策略路由’ http://blog.csdn.net/dog250/article/details/42046269 在Android的OpenVPN Service的FAQ上,关于TAP模式有三问三答,最后回答的建议是: Support TAP via emulation。这也是我自己前几个月实现过的。要问为何Android自己不能提供对TAPmode的支持,似乎不关VPNService作者本人的事,其建议是: If you really want to see tap-style tunnels supported in OpenVPN Connect, we would encourage you tocontact the Google Android team and ask that the VpnService API be extended to allow this. Without such changes to the VpnService API, it is not possible for non-root apps such as OpenVPN Connect to support tap-style tunnels. 这似乎是个圈,但是我们仔细想一下就会发现这个圈原来是这样: 1.Android平台在一个公共的层下面拥有多个完全不同的底层实现,包括Linux内核; 2.开放Android的root权限意味着用户可以触摸到任意的底层; 3.所有的公共集合,包括API以及功能必须不能基于底层来构建,root权限不能对所有普通用户开放; 4.必须有一个公共的层,用户的需求基于这个公共的层来实现 5.这个层就是Android平台。 ...

2011-10-16 · 2 min · 382 words · -

Java Bean

Java Bean 一、 javabean 是什么? Bean的中文含义是"豆子",顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 最初,JavaBean的目的是为了将可以重复使用的软件代码打包标准。特别是用与帮助厂家开发在IDE下使用的java软件部件。这些包括如Grid控件,用户可以将该部件拖放到开发环境中。从此,JavaBean就可以扩展为一个java web 应用的标准部件,并且JavaBean部件框架已经扩展为企业版的 Bean (EJB) 。 专业点解释是: JavaBean定义了一组规则 JavaBean就是遵循此规则的平常的Java对象 满足这三个条件: 1.执行java.io.Serializable 接口 2.提供无参数的构造器 3.提供getter 和 setter方法访问它的属性. 简单地说,JavaBean是用Java语言描述的软件组件模型,其实际上是一个类。这些类遵循一个接口格式,以便于使函数命名、底层行为以及继承或实现的行为,可以把类看作标准的JavaBean组件进行构造和应用。 JavaBean一般分为可视化组件和非可视化组件两种。可视化组件可以是简单的GUI元素,如按钮或文本框,也可以是复杂的,如报表组件;非可视化组件没有GUI表现形式,用于封装业务逻辑、数据库操作等。其最大的优点在于可以实现代码的可重用性。JavaBean又同时具有以下特性。 易于维护、使用、编写。 可实现代码的重用性。 可移植性强,但仅限于Java工作平台。 便于传输,不限于本地还是网络。 可以以其他部件的模式进行工作。 对于有过其他语言编程经验的读者,可以将其看作类似微软的ActiveX的编程组件。但是区别在于JavaBean是跨平台的,而ActiveX组件则仅局限于Windows系统。总之,JavaBean比较适合于那些需要跨平台的、并具有可视化操作和定制特性的软件组件。 JavaBean组件与EJB (Enterprise JavaBean,企业级JavaBean) 组件完全不同。EJB 是J2EE的核心,是一个用来创建分布式应用、服务器端以及基于Java应用的功能强大的组件模型。JavaBean组件主要用于存储状态信息,而EJB组件可以存储业务逻辑。 2 使用JavaBean的原因 程序中往往有重复使用的段落,JavaBean就是为了能够重复使用而设计的程序段落,而且这些段落并不只服务于某一个程序,而且每个JavaBean都具有特定功能,当需要这个功能的时候就可以调用相应的JavaBean。从这个意义上来讲,JavaBean大大简化了程序的设计过程,也方便了其他程序的重复使用。 JavaBean传统应用于可视化领域,如AWT (窗口工具集) 下的应用。而现在,JavaBean更多地应用于非可视化领域,同时,JavaBean在服务器端的应用也表现出强大的优势。非可视化的JavaBean可以很好地实现业务逻辑、控制逻辑和显示页面的分离,现在多用于后台处理,使得系统具有更好的健壮性和灵活性。JSP + JavaBean和JSP + JavaBean + Servlet成为当前开发Web应用的主流模式。 3 JavaBean的开发 在程序设计的过程中,JavaBean不是独立的。为了能够更好地封装事务逻辑、数据库操作而便于实现业务逻辑和前台程序的分离,操作的过程往往是先开发需要的JavaBean,再在适当的时候进行调用。但一个完整有效的JavaBean必然会包含一个属性,伴随若干个get/set (只读/只写) 函数的变量来设计和运行的。JavaBean作为一个特殊的类,具有自己独有的特性。应该注意以下3个方面。 JavaBean类必须有一个没有参数的构造函数。 JavaBean类所有的属性最好定义为私有的。 JavaBean类中定义函数setXxx() 和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。 二、JavaBean和企业Bean的区别 http://www.hudong.com/wiki/Enterprise%20JavaBean JavaBean 和 Server Bean (通常称为 Enterprise JavaBean (EJB)) 有一些基本相同之处。它们都是用一组特性创建,以执行其特定任务的对??获得其它特性的能力。这使得 bean 的行为根据特定任务和所在环境的不同而有所不同。 ...

2011-10-16 · 1 min · 103 words · -

Java EE

Java EE Java EE,Java2平台企业版 (Java 2 Platform Enterprise Edition) ,是Sun公司为企业级应用推出的标准平台。Java平台共分为三个主要版本Java EE、Java SE和Java ME。 Sun公司在1998年发表JDK1.2版本的时候,使用了新名称Java 2 Platform,即"Java2平台",修改后的JDK称为Java 2 Platform Software Developing Kit,即J2SDK。并分为标准版 (Standard Edition,J2SE) ,企业版 (Enterprise Edition,J2EE) ,微型版 (MicroEdition,J2ME) 。J2EE便由此诞生。 2005年6月,JavaOne大会召开,SUN公司发布Java SE 6。此时,Java的各种版本已经更名并取消其中的数字"2": J2EE更名为Java EE, J2SE更名为Java SE,J2ME更名为Java ME。 随着Java技术的发展,Java EE平台得到了迅速的发展,成为Java语言中最活跃的体系之一。现如今,Java EE不仅仅是指一种标准平台,它更多的表达着一种软件架构和设计思想。 Java EE是一系列技术标准所组成的平台,包括: JDBC - Java数据库联接 (Java Database Connectivity) JSP - Java服务器页面 (Java Server Pages) JSF - Java Server Faces JSTL - Java服务器页面标准标签库 (Java Server Pages Standard Tag Library) WS - Web Services ...

2011-10-16 · 1 min · 186 words · -

Servlet

Servlet servlet的由来 自从计算机软件开发进入网络时代,就开始涉及到通讯问题。在客户/服务器 (C/S) 时期,每个软件都有自己的客户端和服务器端软件。并且客户端和服务器端之间的通讯协议差别也很大。后来随着互联网的发展,基于浏览器/服务器(B/S)的应用逐渐成为主流,通讯协议也统一到HTTP协议。但是,在HTTP协议之上,如何处理来自客户端的请求信息,以及如何对请求进行回应,则经历了很长时间也没有统一下来。目前,对于这个问题的解决方案主要有两种,一个是CGI,另一个是Servlet。 servlet是在服务器上运行的小程序。这个词是在Java applet的环境中创造的,Java applet是一种当作单独文件跟网页一起发送的小程序,它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口 (CGI(Common Gateway Interface)) 应用程序完成的。然而,在服务器上运行Java,这种程序可使用Java编程语言实现。在通信量大的服务器上,servlet的优点在于它们的执行速度更快于CGI程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。 Servlet最初是在1995年由James Gosling 提出的,因为使用该技术需要复杂的Web服务器支持,所以当时并没有得到重视,也就放弃了。后来随着Web应用复杂度的提升,并要求提供更高的并发处理能力,Servlet被重新捡起,并在Java平台上得到实现,现在提起Servlet,指的都是Java Servlet。Java Servlet要求必须运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,在实际运行的时候Java Servlet与Web服务器会融为一体,如同一个程序一样运行在同一个Java虚拟机 (JVM) 当中。与CGI不同的是,Servlet对每个请求都是单独启动一个线程,而不是进程。这种处理方式大幅度地降低了系统里的进程数量,提高了系统的并发处理能力。另外因为Java Servlet是运行在虚拟机之上的,也就解决了跨平台问题。 在Servlet出现之后,随着使用范围的扩大,人们发现了它的一个很大的一个弊端。那就是为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术产生了Java Server Pages (JSP) 。 Servlet和JSP两者分工协作,Servlet侧重于解决运算和业务逻辑问题,JSP则侧重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。 Servlet与Web容器之间的关系 Java是一种动态加载和运行的语言。也就是说当应用程序持有一个类的地址 (CLASSPATH) 和名称 (包名和类名) 的情况下,可以在程序运行期间任何时候加载这个类,并创建和使用该类的对象。Servlet就是基于这个机制与Web容器融合在一起的。目前已知的所有支持Java Servlet的Web容器都是采用Java开发的。当Web容器接收到来自客户端的请求信息之后,会根据URL中的Web元件地址信息到Servlet队列中查找对应的Servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,并创建对象。也就是说,Servlet对象是在第一次被使用的时候才创建的,并且一旦创建就会被反复使用,不再创建新的对象。所有创建出的Servlet对象会在Web服务器停止运行的时候统一进行垃圾回收。 为了解决客户端请求地址与 Servlet之间对应关系问题,Web容器需要一个用来描述这种对应关系的文件,一般是web.xml文件。如果一个Web应用程序中存在很多个Servlet,那么web.xml会变得非常庞大。在Servlet 3.0规范推出之后,允许在Servlet代码中使用声明式语法(annotation)来代替web.xml中的描述信息,这才让web.xml瘦身下来. Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求 (Web浏览器或其他HTTP客户程序) 与服务器响应 (HTTP服务器上的数据库或应用程序) 的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。 Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为: 客户端发送请求至服务器端; 服务器将请求信息发送至Servlet ; Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求; 服务器将响应返回给客户端; Servlet看起来像是通常的Java程序。Servlet导入特定的属于Java ServletAPI的包。因为是对象字节码,可动态地从网络加载,可以说Servlet对Server就如同Applet对Client一样,但是,由于Servlet运行于Server中,它们并不需要一个图形用户界面。从这个角度讲,Servlet也被称为FacelessObject。 一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过"请求-响应"编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。 目前最新版本为3.0草案命名: Server + Applet =Servlet 意为服务器端的小程序 Servlet生命周期 装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet。 Server创建一个Servlet的实例 Server调用Servlet的init()方法 一个客户端的请求到达Server Server创建一个请求对象 Server创建一个响应对象 Server激活Servlet的service()方法,传递请求和响应对象作为参数 service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息 service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法。 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次(只有一个对象),当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。 ...

2011-10-16 · 3 min · 481 words · -

md5, sha256

md5, sha256 # linux md5sum [OPTION]... [FILE]... md5sum foo.tar sha256sum foo.tar sha1sum foo.tar # windows certutil -hashfile foo.tar MD5 certutil -hashfile foo.tar SHA1 certutil -hashfile foo.tar SHA256 # macos md5 foo.tar MD5: 一种单向Hash函数/单向散列函数 Message Digest Algorithm MD5 (中文名为消息摘要算法第五版) 为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321 (R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992) 。 描述 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。MD5 全称是报文摘要算法 (Message-Digest Algorithm 5) ,此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位 (十六进制长度就是32位) 的"指纹" (或称"报文摘要") ,不同的文件产生相同的报文摘要的可能性是非常非常之小的。 在linux或Unix上,md5sum是用来计算和校验文件报文摘要的工具程序。一般来说,安装了Linux后,就会有md5sum这个工具,直接在命令行终端直接运行。 选项: -b 或 -binary :把输入文件作为二进制文件看待。 -t 或 -text :把输入的文件作为文本文件看待 (默认) 。 -c 或 -check :用来从文件中读取md5信息检查文件的一致性。(不细说了参见info) -status :这个选项和check一起使用,在check的时候,不输出,而是根据返回值表示检查结果。 -w 或 -warn :在check的时候,检查输入的md5信息又没有非法的行,如果有则输出相应信息。 [举例] ...

2011-10-14 · 2 min · 217 words · -

windows basic, win basic

windows basic, win basic cmd ## 删除 目录 remove-item dir0 -recurse -force copy C:\Users\desktop\foo.txt D:\backup\ /y # force overwrite copy /b/v/y C:\Users\desktop\foo.txt D:\backup\ # cmd-连续执行多条命令 copy C:\Users\desktop\foo.txt D:\backup\ && D:\backup\foo.exe # 查看证书 certmgr.msc # 查看 windows 的版本 winver ISO https://isofiles.bd581e55.workers.dev/ win10 应用开机启动, 启动项 打开运行 win + r, 输入 shell:startup, 将该应用的快捷方式从文件位置复制并粘贴到 “启动” 文件夹中。 msdn i tell u https://www.itellu.com/2021/06/22/win11-v2021-v1/ windows iso 打开页面: https://www.microsoft.com/zh-cn/software-download/windows10 点击 立即下载工具 运行 MediaCreationTool21H1.exe 选择 “为另一台电脑创建安装介质” uupdump https://uupdump.net/ ...

2011-10-14 · 3 min · 639 words · -

java timer

java timer Timer和TimerTask Timer是jdk中提供的一个定时器工具,使用的时候会在主线程之外起一个单独的线程执行指定的计划任务,可以指定执行一次或者反复执行多次。 TimerTask是一个实现了Runnable接口的抽象类,代表一个可以被Timer执行的任务。 一个Timer调度的例子 import java.util.Timer; import java.util.TimerTask; public class TestTimer { public static void main(String args[]){ System.out.println("About to schedule task."); new Reminder(3); System.out.println("Task scheduled."); } public static class Reminder{ Timer timer; public Reminder(int sec){ timer = new Timer(); timer.schedule(new TimerTask(){ public void run(){ System.out.println("Time's up!"); timer.cancel(); } }, sec*1000); } } } 运行之后,在console会首先看到: ...

2011-10-13 · 2 min · 359 words · -

cgroup, namespace

cgroup, namespace cgroup 的主要作用:管理资源的分配、限制; namespace 的主要作用:封装抽象,限制,隔离,使命名空间内的进程看起来拥有他们自己的全局资源; Chroot Chroot 可以将进程及其子进程与操作系统的其余部分隔离开来。但是,对于 root process ,却可以任意退出 chroot。 现代化容器技术带来的优势 轻量级,基于 Linux 内核所提供的 cgroup 和 namespace 能力,创建容器的成本很低; 一定的隔离性; 标准化,通过使用容器镜像的方式进行应用程序的打包和分发,可以屏蔽掉因为环境不一致带来的诸多问题; DevOps 支撑 (可以在不同环境,如开发、测试和生产等环境之间轻松迁移应用,同时还可保留应用的全部功能); cgroup Linux control groups cgroup 是 Linux 内核的一个功能,用来限制、控制与分离一个进程组的资源 (如CPU、内存、磁盘输入输出等)。它是由 Google 的两位工程师进行开发的,自 2018 年 1 月正式发布的 Linux 内核 v2.6.24 开始提供此能力。 cgroup 主要限制的资源是: CPU 内存 网络 磁盘 I/O cgroup 的组成 cgroup 代表“控制组”,并且不会使用大写。cgroup 是一种分层组织进程的机制, 沿层次结构以受控的方式分配系统资源。我们通常使用单数形式用于指定整个特征,也用作限定符如 “cgroup controller” 。 cgroup 主要有两个组成部分: core - 负责分层组织过程; controller - 通常负责沿层次结构分配特定类型的系统资源。每个 cgroup 都有一个 cgroup.controllers 文件,其中列出了所有可供 cgroup 启用的控制器。当在 cgroup.subtree_control 中指定多个控制器时,要么全部成功,要么全部失败。在同一个控制器上指定多项操作,那么只有最后一个生效。每个 cgroup 的控制器销毁是异步的,在引用时同样也有着延迟引用的问题; ...

2011-10-13 · 1 min · 87 words · -

naming convention, Camel Casing, CamelCase, Pascal Case, kebab case, Snake case

naming convention, Camel Casing, CamelCase, Pascal Case, kebab case, Snake case 在英语中,依靠单词的大小写拼写复合词的做法,叫做"骆驼拼写法" (CamelCase) 。比如,backColor这个复合词,color的第一个字母采用大写。 这种拼写法在正规的英语中是不允许的,但是在编程语言和商业活动中却大量使用。比如,sony 公司的畅销游戏机 PlayStation,play和station 两个词的词首字母都是大写的。 它之所以被叫做"骆驼拼写法",是因为大小写的区分使得复合词呈现"块状" (bump) ,看上去就像骆驼的驼峰 (hump) 。 “骆驼拼写法"又分为两种。 第一个词的首字母小写,后面每个词的首字母大写,叫做"小骆驼拼写法” (lowerCamelCase) ; 第一个词的首字母,以及后面每个词的首字母都大写,叫做"大骆驼拼写法" (UpperCamelCase) ,又称"帕斯卡拼写法" (PascalCase) 。 PascalCase:帕斯卡命名法,每个单词首字母大写,又名大驼峰命名法。 camelCase:驼峰命名法,第一个单词首字母小写,后面的每个单词首字母大写,又名小驼峰命名法。 kebab-case:短横线隔开命名法,每个单词首字母小写。 https://www.huoxiaoqiang.com/experience/jingyan/3618.html http://www.cnblogs.com/lm002003/archive/2011/08/13/2137606.html Snake case, snake_case Snake case (stylized as snake_case) is the naming convention in which each space is replaced with an underscore (_) character, and words are written in lowercase. It is a commonly used naming convention in computing, for example for variable and subroutine names, and for filenames.

2011-10-12 · 1 min · 85 words · -

maven-resources-plugin

maven-resources-plugin Apache Maven Resources Plugin是Apache Maven团队提供的官方核心插件,能够将Maven项目中的各种资源文件复制到指定的输出目录中。 在Maven项目中的资源可以分为两类 main资源,指位于src/main/resources路径下的资源文件 test资源,指位于src/test/resources路径下的资源文件 2. Apache Maven Resources Plugin提供的Goals resources:resources 将main资源文件复制到输出目录,默认已经加入到Maven的process-resources生命周期阶段。 <project><build><resources>指定要复制的main资源文件,默认位于src/main/resources路径 <project><build><outputDirectory>指定main资源的输出目录,默认位于target/classes/路径 2) resources:testResources 将test资源文件复制到输出目录,默认已经加入到Maven的process-test-resources生命周期阶段。 <project><build><testResources>指定要复制的test资源文件,默认位于src/test/resources路径 <project><build><testOutputDirectory>指定test资源的输出目录,默认位于target/test-classes/路径 3) resources:copy-resources 对于非main资源或非test资源,又没有在pom.xml的<build><resources>...</build></resources>配置的资源,在构建过程中不会输出到项目的target/classes/目录下。 ———————————————— 版权声明:本文为CSDN博主「易生一世」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/taiyangdao/article/details/103636330 java-使用maven将版本号输出到文本 https://www.itranslater.com/qa/details/2582583740010595328 https://blog.csdn.net/u011781521/article/details/79052725 src/main/resources/version.txt ${project.version} <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>print-version-file</id> <phase>validate</phase> <goals> <goal>resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <directory>${basedir}/src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin> mvn clean validate

2011-10-09 · 1 min · 61 words · -

java.io.tmpdir

java.io.tmpdir 操作系统不同 这个系统属性所表示的目录也不同 On Windows: java.io.tmpdir:[C:DOCUME1joshuaLOCALS1Temp] On Solaris: java.io.tmpdir:[/var/tmp/] On Linux: java.io.tmpdir: [/tmp] On Mac OS X: java.io.tmpdir: [/tmp] The default temporary-file directory is specified by the system property java.io.tmpdir. On UNIX systems the default value of this property is typically "/tmp" or "/var/tmp"; on Microsoft Windows systems it is typically "c:temp". A different value may be given to this system property when the Java virtual machine is invoked, but programmatic changes to this property are not guaranteed to have any effect upon the the temporary directory used by this method. To specify the java.io.tmpdir System property, you can invoke the JVM as follows: java -Djava.io.tmpdir=/path/to/tmpdir ``` ...

2011-10-08 · 1 min · 121 words · -

nohup, shell 的后台运行 &, 和 nohup

nohup, shell 的后台运行 &, 和 nohup # 语法: nohup Command [ Arg … ] [&] # & 后台运行, 但是使用父进程的 stdout 和 stderr ./command0 & # nohup 的意思是 no hup, 忽略所有发送给子命令的 SIGHUP 信号, shell 关闭时 sigup 不会被发到子进程. nohup ./command0 & # 使用 nohup 之后 会看到 nohup: appending output to "nohup.out", command0 的 stdout 和 stderr 都 被重定向到 nohup.out nohup ./command0 > /dev/null 2>&1 & https://www.jianshu.com/p/747e0d5021a2 https://blog.csdn.net/cugxueyu/article/details/2046565 hangup 名称的来由 在 Unix 的早期版本中,每个终端都会通过 modem 和系统通讯。当用户 logout 时,modem 就会挂断 (hang up) 电话。 同理,当 modem 断开连接时,就会给终端发送 hangup 信号来通知其关闭所有子进程。 ...

2011-10-08 · 2 min · 215 words · -

Jenkins basic

Jenkins basic jenkins docker docker network create jenkins docker image pull docker:dind # generate cert su - root mkdir /root/certs && cd /root/certs openssl req -new -newkey rsa:4096 -x509 -sha256 -days 365 -nodes -out MyCertificate.crt -keyout MyKey.key docker run \ --name jenkins-docker \ --rm \ --detach \ --privileged \ --network jenkins \ --network-alias docker \ --env DOCKER_TLS_CERTDIR=/certs \ --volume jenkins-docker-certs:/certs/client \ --volume jenkins-data:/var/jenkins_home \ --publish 2376:2376 \ docker:dind \ --storage-driver overlay2 dockerfile 创建镜像 ...

2011-09-30 · 2 min · 306 words · -

trickle

trickle userspace bandwidth shaper 限速 200k trickle -s -u 200 -d 200 git pull 参数 -s, standalone mode 不依赖 trickled -u, 上传速率 KB/s -d, 下载速率 KB/s https://github.com/mariusae/trickle https://wiki.archlinux.org/title/trickle

2011-09-30 · 1 min · 28 words · -

mvn, maven basic

mvn, maven basic # ubuntu install maven sudo apt install maven # 打印当前在使用的 settings mvn help:effective-settings download https://maven.apache.org/download.cgi setting & mirror maven setting aliyun mkdir ~/.m2 vim ~/.m2/settings.xml https://repo.maven.apache.org/maven2 Maven 参数 -D 传入属性参数 -P 使用pom中指定的配置 -e 显示maven运行出错的信息 -o 离线执行命令,即不去远程仓库更新包 -X 显示maven允许的debug信息 -U 强制去远程参考更新snapshot包 -q for only error 参数> properties 对应一个变量值,pom.xml里面配置的有,那么如果你在命令行中 以 -Dmy.filter.value=1 的格式去配置mvn命令,那么将覆盖你pom中的值。 mvn clean -Ptrip-app,daily package -Dmy.filter.value=1 -Dttidapk.ttids=21xx00 <project> <properties> <my.filter.value>hello</my.filter.value> </properties> </project> https://blog.csdn.net/Maxiao1204/article/details/90510176 command # skip test, 强制更新依赖包 mvn -Dmaven.test.skip=true clean package -U 创建项目 # create common project # mvn archetype:generate 会自动创建项目目录 project0 mvn archetype:generate -DgroupId=com.wiloon.demo -DartifactId=project0 \ -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false # archetypeVersion 指定版本号 mvn archetype:generate -D groupId=com.wiloon.java -D artifactId=javaJpms \ -D archetypeVersion=1.4 -D archetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false # local catalog mvn archetype:generate -DgroupId=com.wiloon.test -DartifactId=mvntest \ -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false -DarchetypeCatalog=local # web project mvn archetype:generate -DgroupId=com.wiloon.mail.web -DartifactId=mailTestWeb \ -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false mvn clean compile -Dmaven.test.skip=true org.apache.maven.plugins:maven-war-plugin:exploded -q mvn clean compile -Dmaven.test.skip=true org.apache.maven.plugins:maven-war-plugin:exploded -U #-U,--update-snapshots Forces a check for missing releases and updated snapshots on mvn clean compile -U # 指定执行某一个类的测试 mvn -Dtest=com.wiloon.Foo test 检测包冲突 mvn dependency:help mvn dependency:analyze mvn dependency:tree mvn dependency:tree -Dverbose upload jar to nexus mvn deploy:deploy-file -Dfile=xxx.pom -DgroupId=com.wiloon -DartifactId=artifactid0 -Dversion=1.0.0 -Dpackaging=pom -DrepositoryId=repo0 -Durl=https://maven.wiloon.com/repository/snapshot/ mvn deploy:deploy-file -Dfile=xxx.jar -DgroupId=com.wiloon -DartifactId=artifactid0 -Dversion=1.0.0 -Dpackaging=jar -DrepositoryId=repo0 -Durl=https://maven.wiloon.net/repository/snapshot/ maven ojdbc6 mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=/home/wiloon/Downloads/ojdbc6.jar commands # maven war plugin mvn clean compile -Dmaven.test.skip=true org.apache.maven.plugins:maven-war-plugin:exploded # maven-assembly-plugin 打包 >wangyue.dev/maven/assembly/plugin #Generates JSW based daemon wrappers. mvn appassembler:generate-daemons # 查看 maven 版本 mvn -v mvn -version mvn install mvn install -Dmaven.test.skip=true #wrapper mvn package appassembler:assemble 查看 mvn 参数 mvn --help # 指定pom文件位置 mvn -f trunk/mvntest/pom.xml install mvn archetype:generate #390 maven-archetype-webapp #387 maven-archetype-quickstart mvn clean install mvn cobertura:cobertura mvn surefire-report:report mvn surefire-report:report-only mvn pmd:pmd mvn eclipse:clean mvn eclipse:eclipse -mvn package: 依据项目生成jar/war文件 mvn dependency:sources mvn dependency:resolve -Dclassifier=javadoc webApp: maven-archetype-webapp -Dmvn install -Dmaven.test.skip=true <del>编译时跳过Test</del> -Dmaven.test.failure.ignore=true <del> Set this to true to ignore a failure during testing. Its use is NOT RECOMMENDED, but quite convenient on occasion.</del> mvn install -rf :MODULENAME mvn clean install mvn –version mvn compile mvn test mvn test-compile mvn package mvn install mvn site mvn clean mvn eclipse:eclipse mvn eclipse:clean # The Surefire report can also generate the report using its standalone goal mvn surefire-report:report # A HTML report should be generated in ${basedir}/target/site/surefire-report.html -maven idea mvn idea:idea mvn idea:clean #maven install jar mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar -Dfile=/home/wiloon/Downloads/ojdbc6.jar os-maven-plugin os-maven-plugin 是设置各种有用属性 (从 OS 中检测的 ${os.name} 和 ${os.arch} 属性) 的 Maven 插件 ...

2011-09-29 · 3 min · 565 words · -

Maven生命周期

Maven生命周期 Maven 生命周期 Maven生命周期已经在另一篇博客中介绍过了(http://www.cnblogs.com/haippy/archive/2012/07/04/2576453.html),这里引用IBM developerworks 的文章再一次讨论Maven 的生命周期。 在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段: validate,验证工程是否正确,所有需要的资源是否可用。 compile,编译项目的源代码。 test-compile,编译项目测试代码。 test,使用已编译的测试代码,测试已编译的源代码。 package,已发布的格式,如jar,将已编译的源代码打包。 integration-test,在集成测试可以运行的环境中处理和发布包。 verify,运行任何检查,验证包是否有效且达到质量标准。 install,把包安装在本地的repository中,可以被其他工程作为依赖来使用 deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。 generate-sources,产生应用需要的任何额外的源代码,如xdoclet。 如果要执行项目编译,那么直接输入: mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系 (dependency) 的,如test依赖test-compile。在执行mvn test时,会先运行mvn test-compile,然后才是mvn test。 Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义。第二,这个模型是一种标准,在不同的项目中,使用Maven的接口是一样的,这样就不用去仔细理解每个项目的构建了,一般情况下,mvn clean install 这样的命令是通用的。我想,一定是吸收了许多项目的经验,Maven才能定义出如此完善的模型。 Maven有三套相互独立的生命周期,请注意这里说的是"三套",而且"相互独立",初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是: Clean Lifecycle 在进行真正的构建之前进行一些清理工作。 Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。 Site Lifecycle 生成项目报告,站点,发布站点。 我再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。 知道了每套生命周期的大概用途和相互关系以后,来逐个详细看一下每套生命周期,Clean和Site相对比较简单,先解释一下。 每套生命周期都由一组阶段(Phase)组成,我们平时在命令行输入的命令总会对应于一个特定的阶段。比如,运行mvn clean ,这个的clean是Clean生命周期的一个阶段。有点绕?要知道有Clean生命周期,也有clean阶段。Clean生命周期一共包含了三个阶段: pre-clean 执行一些需要在clean之前完成的工作 clean 移除所有上一次构建生成的文件 post-clean 执行一些需要在clean之后立刻完成的工作 mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说,mvn clean 等同于 mvn pre-clean clean ,如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。这是Maven很重要的一个规则,可以大大简化命令行的输入。 ...

2011-09-28 · 1 min · 120 words · -

linux user, group, 用户 用户组

linux user, group, 用户 用户组 用户 查看用户 cat /etc/passwd wyue:x:513:513::/home/wyue:/bin/bash 看第三个参数: 500 以上的,就是后来建的用户了。其它则为系统的用户。 创建用户 # create user, 创建目录 /home/user0, 默认 bash sudo useradd -m user0 # 创建用户 user_0, 默认不会创建 home 目录, 默认 bash sudo useradd user_0 # 给 user_0 设置密码 sudo passwd user_0 sudo useradd -m -s /bin/bash user0 # create group and user sudo useradd -m -s /bin/bash -g group0 user0 sudo passwd user0 sudo useradd -m -s /bin/zsh user0 sudo useradd -M -s /bin/false user1 sudo useradd user0 # ubuntu shadow 包提供的工具 # adduser 是一个高级脚本,通常存在于 Debian / Ubuntu 系统 上。 # --system 创建一个系统用户,通常用于运行系统服务(如 Kafka、nginx、mysql 等),不是用于日常登录的普通用户。系统用户的 UID 通常小于 1000。 # --group 同时创建一个与用户名相同的用户组(kafka),并将用户添加进这个组。 # kafka 是一个系统用户,通常用于运行 Kafka 服务。 sudo adduser --system --no-create-home --group kafka options # -m: create home folder, 不加 -m 参数,默认不创建 home # -M: Don't create a home directory # -s: specify shell for user, 默认是 /bin/bash # -s /bin/false - Don't assign a shell (or more accurately, make the shell /bin/false, so the user cannot be logged into) # -r: create system account # -d: home dir # -r - Make a system user # -g <群组>: 指定用户所属的群组; # -G <群组>: 指定用户所属的附加群组 # -c <备注>:加上备注文字。备注文字会保存在 passwd 的备注栏位中; 删除用户 -r, 删除用户 home 目录 userdel -r test 设置密码 sudo passwd user0 输入密码: 一般密码至少要有六个字符,这里输入的密码是看不见的,屏幕没显示 重新输一次密码: ...

2011-09-25 · 9 min · 1830 words · -

javaEE

javaEE 今天的程序员越来越认识到我们需要高性能、安全和可靠的服务器端技术来开发分布式的、事务性的和可移植的应用程序。在信息化的世界里,企业级应用通常需要更高的性能,更少的费用和更少的资源。 在 Java 平台中,使用 Java EE 来开发 Java 企业程序相当容易和高效。Java EE 平台为程序员提供了强大的 API,目的是为了缩短开发周期,降低应用程序复杂度,提高应用程序性能。 Java EE 通过 JCP (Java 执行委员会) 进行开发,JCP 是一个开放的国际组织,其中的成员包括 Oracle、IBM、Apache 等,JCP 负责所有的 Java 技术。其中的专家组会提交 Java EE 相关的 JSR (Java 标准请求) 。JCP 需要确保 Java 标准的稳定和跨平台兼容性。 Java EE 6 平台最主要的目标是为大量的 Java EE 组件提供共同的基础。程序员可以更多地使用 annotation (元数据注释) 来代替 XML 配置文件,更多地使用 POJO 来进行来发,并且应用程序的打包部署过程也更加简单。 Java EE 6 包括了以下新的特性: Profiles 我们知道 Java EE 规范本身相当庞大,如果我们需要开发的应用使用不到这么多的 Java EE 技术,那么完全没有必要引入这么多的 Java EE 技术到我们的应用程序中去。例如,如果要构建一个类似于 SOA 的应用程序,会用到消息,事务,持久化以及 Web Services ,但犯不着需要使用像 JSP 或 JSF 这类的展示层技术。 ...

2011-09-23 · 2 min · 348 words · -

Apache License 2.0

Apache License 2.0 Apache License Apache 协议允许使用了本协议开源的代码不必开源。 用了 Apache 协议的开源代码,必须保留协议文本。你可以修改源码,但必须声明你修改了哪些,并且保留原开源项目中原作者的信息。 用一句话概括 Apache License 就是,你可以用这代码,但是如果开源你必须保留我写的声明;你可以改我的代码,但是如果开源你必须写清楚你改了哪些;你可以加新的协议要求,但不能与我所公布的协议要求产生冲突;你用这代码干什么我不管,但是你不能让我承担任何责任。 kymjs.com/qiniu https://www.kymjs.com/manager/2015/11/21/01/ http://db.apache.org/derby/docs/dev/getstart/

2011-09-22 · 1 min · 17 words · -