欢迎来到【白狐软件菜谱源码】【子路老师spring源码】【时间戳日记源码】yyy源码之家-皮皮网网站!!!

皮皮网

【白狐软件菜谱源码】【子路老师spring源码】【时间戳日记源码】yyy源码之家-皮皮网 扫描左侧二维码访问本站手机端

【白狐软件菜谱源码】【子路老师spring源码】【时间戳日记源码】yyy源码之家

2024-12-23 02:01:05 来源:{typename type="name"/} 分类:{typename type="name"/}

1.linux的认识
2.mt管理器
3.Java学习资源
4.基于openstack网络模式的vlan分析
5.低代码真的会威胁程序员吗?

yyy源码之家

linux的认识

       ä½ ä»Žæ¥åªç”¨è¿‡Windows,从来没接触过UNIX,只知道把一个文件拽来拽去,只知道硬盘就是C: D: E:却从来没有研究过分区表,也许会用VC编个程序,很习惯它的集成环境....有一天,不管什么原因了,也许是看报纸上那些把内存和硬盘都分不清楚的记者的吹嘘,或者是老板要求你用它作个项目,或者是同学们都有了你没有觉得很土,或者你听说找工作有这个的经验就有更大希望....不管怎样,你想在自己的机器上安装一个Linux。OK,这个文章就是给你写的,因为从现在开始,你会有成堆的问题你会觉得从前在windows那里得来的有关计算机的经验好像完全用不上。你会觉得“Linux怎么这样麻烦”。你会有种从来没有开过汽车但是得把汽车拆开修理一样觉得无处下手。为什么要学Linux。其实你不必学习Linux,如果你就是想使用计算机让它使你的工作,比如打字,排版,统计数据等更有效率,Linux不行。Windows,或者我推荐windows XP是你最好的选择,它对中文的支持很好,非常稳定,上面有无数应用程序,而且如果你自己承担风险,还可以使用盗版,免费。Linux将会给你造成很多麻烦,安装时会造成系统数据丢失,无法驱动网卡/声卡/显示卡/显示器,无法配置中文,图形界面速度慢,等等。从前在windows上很容易做到的比如修改显示频率或者安装新的网卡驱动在Linux下都变得好像要你自己重新上一次大一计算机原理课那么讨厌。呵呵,那Linux有什么好处呢?你会问。其实Linux没什么好处,从使用角度,它唯一的好处是它是我们自己的,而windows再好,是Microsoft的。“又能怎么样?”你也许又问。区别是,Linux可以让你来研究它,通过使用Linux你可以获得更深一步对计算机的了解 -- 而不只是一个全自动的盒子。计算机是一个很神奇的东西,你也许对那些写出windows的程序员很崇拜(我是的),或者对那些能发明更好的算法更安全的操作系统的hacker(对不起,远程攻击系统的不是hacker)很崇拜,那么你应当知道,坐在一个windows的机器前面整天就会用鼠标拖拽也许能给你一个很好的打字员的薪水,但是永远无法让你进入真正计算机的世界 -- 成为一个自由思想的Hacker,或者说,你只能永远是个windows的用户 -- 也没什么不好,很多领导还不会计算机呢 -- 而不可能有机会自己写一个windows。一个不太妙的结果是,当世界上充满了windows的奴隶时,我们就得花更大的价钱从Microsoft那里获得这样的技术,某些社会里,我们管这个叫做剥削。讲这么多,无非是说,萝卜不能两头切,至少现在是这样。要想什么别人都给你做好,系统安装一路回车,硬件配置点两下鼠标,对不起,请用windows xp。如果你准备好了这一切,那么接着看吧。

       OK,你的第一个问题是:什么是Linux,它和UNIX有什么区别?问这个问题的原因呢,多半是你还在大一的时候一次去实验室,看到高年纪学生在一个特大屏幕的机器上作题,你羡慕的看着他,问:“这是什么计算机啊,这么高级?”而他不无骄傲的说,“这是UNIX”。后来你懂的多了,知道那是SUN工作站,上面运行着Solaris,就是UNIX。现在你又听说Linux也是UNIX,是怎么回事呢?

       short answer:去看书,街上很多Linux的书第一章就是讲他们的历史和亲属关系的。

       long answer: UNIX是一个还是年前由几个研究生在实验室里开始后来一个大公司把它商业化了的一个操作系统。一来二去,它成长并且占领了市场。当时它只是运行在只有大学才买得起一两台的昂贵机器上。后来机器多了,公司多了,懂得人也多了,就分家了,而“UNIX”这个名字由于法律关系,谁也不能说自己的操作系统是“UNIX”而只能说是“UNIX兼容”系统了。所以现在“UNIX”系统是不存在的,存在的只是一个遥远的传说。那么现在那些Solaris,AIX,IRIS都是什么呢?那些都是各公司在他们硬件平提上作的商业UNIX,这些系统都遵循一个叫POSIX的古怪标准,对了,这个标准呢,是后来UNIX太多太乱,大家编程接口甚至命令都不一样了所以没办法座下来商量的一个协议。

       é‚£ä¹ˆLinux是什么呢?Linux是基于PC(其它平台也有的支持)的UNIX兼容系统,在跟UNIX的关系上,它不比任何其它UNIX兼容系统远。所以如果你有“Solaris才是正统UNIX,Linux只是兼容”的想法,对不起你错了,起码你得把支持AIX的人打败才行,他们还认为AIX才是正统UNIX呢。所以用Linux你可以学到有关UNIX的知识,这些知识绝大部分在其它商业UNIX上可以用得上。当然,其核心思想绝对是相同的。那么在三年前只有你的读博士的辅导员才有机会在实验室那台宝贝SUN上学的知识,你现在在PC机上就可以实践了,这难道不是很妙的一件事情么?

       ç¬¬äºŒä¸ªé—®é¢˜ï¼šæˆ‘想装一个Linux,最新的是哪个版本,我听说过xxxlinux,yyylinux,还有国内某个公司鼎力推出的zzzlinux,到底哪个更好呢?首先你需要明白,Linux不是windows,它不是一个由一家商业公司维护的软件,只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司 都可以按照自己的想法,比如加一点功能,加中文支持,作一个Linux出来。这些 Linux虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区别是用一种Linux 发布 (不同的Linux我们叫做不同的发布)也许硬件很好配置,各种软件也好安装,用另外一种也许速度快,再一种也许支持中文比较好。总之没有白吃的午餐,在windows下想当然的东西在linux下也许需要你熬夜才能得到。所以从一开始选择distribution就必须非常小心,否则因为自己刚好随某个杂志得到一个Linux发布就以为所有的都一样就开始安装,等硬盘数据毁了,或者网络哭天跄地也配不出来的时候,就晚了。不是开玩笑,我知道windows下安装驱动程序就是鼠标点几下,可是在Linux下,为了驱动一个网卡,折腾一夜是不希奇的 -- 当然,我觉得这是值得的。所以,面对那么多Linux distribution,你应当选择哪个呢?比较著名的Linux distribution有:RedHat:最新版本6.2,7.0beta。由于RedHat公司已经上市,获得了很多商业的支持,所以它在硬件软件兼容性上很好。实际上它已经是Linux的工业标准。想象一下如果你是一个比如Oracle这样厂商的老板,你需要为

       Linux开发一个版本,而不同的Linux dist需要单独开发维护,为成本考虑你 自然会只认准一个Linux。Slackware(7.1)。很早就有的Linux,有很多老的忠实用户,但现在越来越不行了。SuSe Linux,德国人做的,在欧洲很流行,有一些驱动上的优势。另外还有Debian,CorelLinux等dist,不一一介绍了。和Linux 一样,Windows系列是完全的多任务操作系统。它们支持同样的用户接口、网络和安全性。但是,Linux和Windows的真正区别在于,Linux 事实上是Unix的一种版本,而且来自Unix的贡献非常巨大。是什么使得Unix如此重要?不仅在于对多用户机器来说,Unix是最流行的操作系统,而且在于它是免费软件的基础。在Internet上,大量免费软件都是针对Unix系统编写的。由于有众多的Unix厂商,所以Unix也有许多实现方法。没有一个单独的组织负责Unix的分发。现在,存在一股巨大的力量推动Unix社团以开放系统的形式走向标准化。另一方面Windows系列是专用系统,由开发操作系统的公司控制接口和设计。在这个意义上这种公司利润很高,因为它对程序设计和用户接口设计建立了严格的标准,和那些开放系统社团完全不一样。一些组织正在试图完成标准化Unix程序设计接口的任务。特别要指出的是,Linux完全兼容POSIX.1标准。

        安全问题对于IT管理员来说是需要长期关注的。主管们需要一套框架来对操作系统的安全性进行合理的评估,包括:基本安全、网络安全和协议,应用协议、发布与操作、确信度、可信计算、开放标准。在本文中,我们将按照这七个类别比较微软Windows和Linux的安全性。最终的定性结论是:目前为止,Linux提供了相对于Windows更好的安全性能,只有一个方面例外(确信度)。

        无论按照什么标准对Windows和Linux进行评估,都存在一定的问题:每个操作系统都不止一个版本。微软的操作系统有Windows、 Windows NT、 Windows 、 Windows Server和Windows CE,而Linux的发行版由于内核(基于2.2、2.4、2.6)的不同和软件包的不同也有较大的差异。我们本文所使用的操作系统,都是目前的技术而不是那些"古老"的解决方案。

        用户需要记住:Linux和Windows在设计上就存在哲学性的区别。Windows操作系统倾向于将更多的功能集成到操作系统内部,并将程序与内核相结合;而Linux不同于Windows,它的内核空间与用户空间有明显的界限。根据设计架构的不同,两者都可以使操作系统更加安全。

       Linux和Windows安全性的基本改变

        对于用户来说,Linux和Windows的不断更新引发了两者之间的竞争。用户可以有自己喜欢的系统,同时也在关注竞争的发展。微软的主动性似乎更高一些――这是由于业界"冷嘲热讽"的"激励"与Linux的不断发展。微软将在下几个月对Windows安全进行改观,届时微软会发布Windows XP的WindowsXP Service Pack 2。这一服务包增强了Windows的安全性,关闭了原先默认开放的许多服务,也提供了新的补丁管理工具,例如:为了避免受到过多无用的信息,警告服务和信使服务都被关闭。大多数情况下,关闭这些特性对于增强系统安全性是有好处的,不过很难在安全性与软件的功能性、灵活性之间作出折衷。

        最显著的表现是:微软更加关注改进可用性的同时增强系统的安全性。比如:年许多针对微软的漏洞攻击程序都使用可执行文件作为电子邮件的附件(例如MyDoom)。Service Pack2包括一个附件执行服务,为Outlook/Exchange、 Windows Messenger和Internet Explorer提供了统一的环境。这样就能降低用户运行可执行文件时感染病毒或者蠕虫的威胁性。另外,禁止数据页的可执行性也会限制潜在的缓冲区溢出的威胁。不过,微软在WindowsXP Service Pack 2中并没有修改Windows有问题的架构以及安全传输的部分,而是将这部分重担交给了用户。

        微软的重点显然是支持应用程序的安全性。WindowsXP Service Pack 2中增强的许多方面都是以Outlook/Exchange和Internet Explorer作为对象的。例如:Internet Explorer中有一个智能的MIME类型检查,会对目标的内容类型进行检查,用户可以获悉该内容中是否存在潜在的有害程序。不过这一软件是不是能将病毒与同事的电子数据表区分开来呢?

        WindowsXP Service Pack 2的另一个新特性是能够卸载浏览器的多余插件,这需要终端用户检查并判断需要卸载哪些插件。Outlook/Exchange可以预览电子邮件消息,因此用户可以在打开之前就将电子邮件删除。另一个应用安全的增强,防火墙在网络协议栈之前启动。对于软件开发者来说,远方过程调用中权限的改变,使得安全性差的代码难以工作正常。

        WindowsXP Service Pack 2也为Windows用户提供了许多华丽的新特性,但是问题仍然存在:这些特性会不会对管理员甚至是终端用户造成负担?是不是在增加了Windows操作系统代码安全性的同时让系统变得更加复杂?

       Linux 与 Windows 的不同

        虽然有一些类似之处,但Windows和Linux的工作方式还是存在一些根本的区别。这些区别只有在您对两者都很熟悉以后才能体会到,但它们却是 Linux 思想的核心。

       Linux 的应用目标是网络而不是打印

        Windows最初出现的时候,这个世界还是一个纸张的世界。Windows的伟大成就之一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows 的后期发展。

       åŒæ ·ï¼ŒLinux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文本为基础。

       å¯¹é‚£äº›ç†Ÿæ‚‰å›¾å½¢çŽ¯å¢ƒçš„人来说,Linux服务器初看可能比较原始。但是Linux开发更多关注的是它的内在功能而不是表面上的东西。即使是在纯文本的环境中,Linux同样拥有非常先进的网络、脚本和安全能力。执行一些任务所需的某些表面上看起来比较奇怪的步骤是令人费解的,除非您认识到 Linux 是期望在网络上与其他 Linux系统协同执行这些任务。Linux的自动执行能力也很强,只需要设计批处理文件就可以让系统自动完成非常详细的任务。Linux 的这种能力来自于其基于文本的本质。

       å¯é€‰çš„ GUI

       Linux有图形组件。Linux支持高端的图形适配器和显示器,完全胜任图形相关的工作。现在,许多数字效果艺术家在Linux工作站上来进行他们的设计工作,而以前这些工作需要使用IRIX系统来完成。但是,图形环境并没有集成到 Linux 中,而是运行于系统之上的单独一层。这意味着您可以只运行 GUI,或者在需要时才运行 GUI。如果您的系统主要任务是提供Web应用,那么您可以停掉图形界面,而将其所用的内存和CPU资源用于您的服务。如果您需要在 GUI 环境下做一些工作,可以再打开它,工作完成后再将其关闭。

       Linux 有图形化的管理工具,以及日常办公的工具,比如电子邮件、网络浏览器和文档处理工具等。不过,在 Linux 中,图形化的管理工具通常是控制台 (命令行) 工具的扩展。也就是说,用图形化工具能完成的所有工作,用控制台命令同样可以完成。同样,使用图形化工具并不妨碍您对配置文件进行手工修改。其实际意义可能并不是特别显而易见,但是,如果在图形化管理工具中所做的任何工作都可以以命令行的方式完成,这就表示那些工作也可以由一个脚本来实现。脚本化的命令可以成为自动执行的任务。Linux 同时支持这两种方式,并不要求您只用文本或者只用 GUI。您可以根据您的需要选择最好的方法。

       Linux 中的配置文件是人类可读的文本文件,这与过去的 Windows 中的 INI 文件类似,但与 Windows 的注册表机制在思路上有本质的区别。每一个应用程序都有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的配置文件都存放于一个目录树 (/etc) 下的单个地方,所以看起来它们在逻辑上是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件的备份、检查和编辑工作。

       æ–‡ä»¶åæ‰©å±•

       Linux不使用文件名扩展来识别文件的类型。相反,Linux根据文件的头内容来识别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来说没有任何作用。不过,有一些应用程序,比如 Web 服务器,可能使用命名约定来识别文件类型,但这只是特定的应用程序的要求而不是 Linux 系统本身的要求。

       Linux通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防止许多脚本病毒。

       é‡æ–°å¼•å¯¼æ˜¯æœ€åŽçš„手段

       å¦‚果您使用Windows已经很长时间了,您可能已经习惯出于各种原因(从软件安装到纠正服务故障)而重新引导系统。在Linux思想中您的这一习惯需要改变。Linux在本质上更遵循“牛顿运动定律”。一旦开始运行,它将保持运行状态,直到受到外来因素的影响,比如硬件的故障。实际上,Linux系统的设计使得应用程序不会导致内核的崩溃,因此不必经常重新引导(与Windows系统的设计相对而言)。所以除了Linux内核之外,其他软件的安装、启动、停止和重新配置都不用重新引导系统。

       å¦‚果您确实重新引导了 Linux 系统,问题很可能得不到解决,而且还会使问题更加恶化。学习并掌握 Linux 服务和运行级别是成功解决问题的关键。学习 Linux 最困难的就是克服重新引导系统的习惯。

mt管理器

       MT管理器文件操作初级教程

       进入MT选择一个文件长按,弹出一个菜单

       复制:复制选中文件到另一窗口

       移动:移动选中文件到另一窗口

       删除:删除选中文件

       重命名:重命名选中文件

       打开:选择一个方式打开选中文件

       链接到:创建选中文件的软链接到另一目录

       权限:修改选中文件的权限

       压缩:压缩选中文件为zip格式

       属性:查看选中文件属性

       这些都很简单,没什么好讲的,主要说下创建链接的作用,举个例子,如果有个大文件需要放在手机内存文件夹(比如/data)内,白狐软件菜谱源码而你手机内存不多,这时很希望把那个文件放到sd卡,这时链接功能就派上用场了,首先将那个文件放到sd卡的一个目录,另一窗口进入/data,选中sd卡中的那个文件长按弹出菜单,选择“链接到“,创建成功后在/data目录就会看到一个同名文件,而且右边会有一个>,那个就是创建的链接,这时访问那个链接文件的数据就跟访问sd卡的文件数据一样,而那个文件实际是在sd卡内,并不会占用/data文件夹的内存

       这里要注意的是,不能将链接创建到sd卡等目录,而/data ,/system目录这些一般都可以创建,子路老师spring源码删除链接文件(文件右边有>标志的)不会对原文件产生影响

       手机上网用UC,就是比你快!

       倒序浏览 共有条回复

       2# 花样丶骚年 -2- ::

       MT在同个窗口复制移动文件

       长按文件后弹出的菜单中有一个不容易发现的功能(知道.7更新内容的友友就清楚这功能了)

       MT的复制移动功能都是从一个窗口直接复制到另一个窗口,这个是沿袭JAVA版的操作风格,但某些情况下不太方便,知道了这功能就解决这麻烦了

       首先跟以前一样(长按文件弹出菜单),(长按复制/移动后会弹出提示),然后进入(另一个目录,长按文件列表的第一项即“..”的那个,就完成粘贴了),但根目录没有“..”,还有个办法,长按文件弹出菜单,再长按打开,就可以完成相同功能,这个根据个人喜好选择

       如果是移动文件只能粘贴一次,复制文件可以粘贴多次,相同办法长按删除后就可以清空记录

       3# 花样丶骚年 -2- ::

       文件操作中级教程

       多选功能算是操作文件时最经常使用的功能了,为此MT特地将“选择“放在下部最中间位置,按下后即进去多选模式,下部的时间戳日记源码按钮也会随之改变,全选,反选就不说了,都知道什么意思,MT还有个原创的连选功能,类似于在电脑上按住shirt后选择文件,试试就知道怎么用了

       MT支持许多种批量文件批量操作,包括批量对文件进行复制、移动、删除、重命名、创建链接、修改权限、压缩、查看属性

       多选模式下查看属性可以统计选中文件/文件夹/链接(包括子目录下的文件)的数目和总大小

       多选模式下重命名编辑框内文件名为(P)(S),且下面附有说明:

       (P):文件名前缀

       (S):文件名后缀

       (Z):序数,从0开始

       (O):序数,从1开始→_→注意是大写字母O

       文件名abc.txt中,abc为前缀,.txt为后缀

       如果想批量给选中文件改后缀为.bak,则输入(P).bak,所有选中的云电脑源码大全xxx.xxx文件都将被重命名为xxx.bak,是不是很方便?(Z)和(O)则可以将文件按顺序编号,比如(O).(P)(S),则文件都将被重命名为1.xxx.xxx,2.yyy.yyy…,每个文件名前面都会按顺序加上编号,有不懂的动手试试就知道了

       批量重命名、创建链接时,有时会因为文件名重复而失败,这个也不用担心,执行完成后MT会把失败名单列出来

       添加书签功能

       打开MT点击右下角的图标就弹出书签的窗口,这个跟很多软件不一样,比如RE书签的单独一个界面,我最开始的设计理念就是尽可能的只用一个界面,每个功能都再这个界面上弹出一个窗口,点击窗口外部就消失(除了个别功能怕误点了),现在主界面的大部分功能都按这个想法设计了,大家应该也看到了

       添加书签的方法有两个,一是点击菜单,再点击右上角的加号按钮,就可以将当前目录保存进书签。

       二是消费金融分期源码长按一个文件,同样点击加号按钮,即可将当前选中的文件/文件夹存进书签

       点击书签如果是文件夹则进入该文件夹内,如果是文件则进入改文件所在目录并定位该文件

       长按书签将弹出删除的对话框,一般默认会有根目录和sd卡目录的书签,这个无法删除

       再说下主页的功能,点击菜单后右上角还有一个小房子按钮,点击将设置当然目录为主页,下次打开将直接进入该目录,左右窗口都可以单独设置,如果想将主页改为上次退出时的路径,可以在设置中选择

       如何查看软件内的xml源码

       打开软件内部,点击.xml后缀文件,在点击左软件,出现查看源码,点击确定。

       修改软件名称

       打开软件内部,点击.arsc后缀的文件,在点击"搜索字符串",输入软件原名称,点击确定,找到后修改为你想的名称,在点击左软件保存。OK

       求采纳为满意回答。

Java学习资源

       Java Commons

       Java tutorial

       WebService常用第三方webservice

       IDEEclipse

       Eclipse GUI Plugin

       Eclipse根据java代码生成UML图

       Tomcat

       Hudson

       Jenkins

       Atlassian Bamboo

       TeamCity

       JUnit

       DbUnit

       JMockit

       TestNG

       ReportNG

       SLF4J

       Log4j

       Logback

       Log4E代码评审

       guava

       jga

       Java Class Dependency Analyzer

       OW2Forge

       Rock

       apache

       Apache Commons

       sandbox中的项目无法直接通过maven进行依赖,必须通过svn下载源码,部署到本地maven仓库中。例如对于sandbox中的classscan项目:

       # 项目地址:commons.apache.org/sand...

       svn checkout mons/sandbox/classscan classscan

       cd classscan

       当install带有parent的maven项目时,如果没有把parent一并install,其它项目引用时会出现

       mvn install--Failed to read artifact descriptor for org.apache.maven.plugins:maven-source-plugin:jar:2.1.2

       cd parent (classscan/parent)

       mvn clean package install -DskipTests

       cd ../api (classscan/api)

       mvn clean package install -DskipTests

       cd ../bcel (classscan/bcel)

       mvn clean package install -DskipTests

       在pom.xml中添加依赖

       org.apache.commons.classscan bcel 0.2-SNAPSHOT org.apache.commons.classscan api 0.2-SNAPSHOT

       Eclipse中Update Project,选择Force Update of Snapshots/Releases

       Apache HttpComponents

       Maven and M2Eclipse

       maven快速下载某个jar包依赖的所有jar

       经常碰到这种事情:在一些非maven工程中(由于某种原因这种工程还是手工添加依赖的),需要用到某个新的类库(假设这个类库发布在maven库中),而这个类库又间接依赖很多其他类库,如果依赖路径非常复杂的话,一个个检查手动下载是很麻烦的事。下面给出一个便捷的办法,创建一个新目录里面建一个maven pom文件, 添加需要依赖的类库:

       4.0.0 com.dep.download dep-download 1.0-SNAPSHOT com.xx.xxx yy-yyy x.y.z

       在这个目录下运行命令,所有跟这个类库相关的直接和间接依赖的jar包都会下载到 ./target/dependency/下

       杂项

       间接依赖的jar包能否直接使用

       如果工程依赖A.jar,并用maven设置好依赖,同时A.jar会依赖B.jar,所以maven在下载A.jar的同时会下载B.jar,这时如果项目发现需要使用B.jar中的一些内容,在maven中不必从新设置依赖,可以在工程中直接使用。

       把某个本地jar包安装到本地仓库中

       mvn install:install-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0”

       -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar”

       把某个本地jar包部署到某个远程仓库中

       mvn deploy:deploy-file -DgroupId=“edu.jiangxin” -DartifactId=”gcu” -Dversion=“1.0.0”

       -Dpackaging=”jar” -Dfile=“D:\CS\J2EE\lib\edu.jiangxin.gcu-1.0.0.jar” -Durl= yourlocalrepository:...

       -DrepositoryId=internal

       bintray

        bintray.com/

       Ant

       Eclipse Color Themes

       MyEclipse

       EclEmma

       eCobertura

       JavaNCSS

       Clover(收费)

       CAP (code analysis plugin)

       Visual Performance Analyzer

       VisualVM

       JD(Java Decompiler)

       注:不支持命令行使用,因而很难批量编译。

       jad

       注:jad支持命令行方式使用,最新版本为1.5.8g,支持的class版本过低。经常出现问题:The class file version is .0 (only .3, .0 and .0 are supported)。还有一个工具uuDeJava,也是基于jad,所以估计也难以避免这个问题。

       jdec

       JODED

       J Java Decompiler

       注:收费软件,没有试用过

       ProGuard

       FindBugs

       PMD

       Metric

       Jdepend

       SourceHelper

       Structure

       inFusion

       SourceMonitor

       Simian

       CheckStyle

       CCTE

       J-Technologies一家(收费)

       FORTIFY SCA(收费)

       coverity(收费)

       klocwork(收费)

       GProf

       Dot and Graphviz

       sikuli

       exe4j

       JBoss

       GlassFish

       Virgo

       Jetty

       cpDetector

       EZMorph

       Apache Shiro

       Struts

       Spring

       Hibernate

       iBATIS/MyBatis

       appfuse

       TopLink

       json

       neethi

       XML

       SAXON

       jsoup

       HTML Parser

       Java port of Mozilla charset detector(jchardet)

       JMX

       jsch

       * yFiles

       The yFiles diagramming software components are extensive class libraries that enable you to add high-quality diagramming functionality to your own software applications

       OpenLDAP

       Protobuf

       zip4j

       JFlex

       JavaCC

       sablecc

       Xtext

       antlr

       cglib

       javassist

       jclasslib

       ical4j

       分词规则引擎

       Drools

       jBPM

       OpenAS2

       Java Native Access (JNA)

       mpi

       Java

       eBus

       JACOBA

       Apache POI - the Java API for Microsoft Documents

       iText(AGPL)

       aspose

       MVEL(Drools)

       OGNL(Struts)

       SPEL(Spring)

       JSP EL

       freemarker

       Velocity

       Aurora

基于openstack网络模式的vlan分析

       OpenStack概念

       OpenStack是一个美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权,并且是一个自由软件和开放源代码项目。、

       OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过家企业及位开发者,这些机构与个人都将OpenStack作为基础设施即服务(简称IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。

openstack neutron中定义了四种网络模式:

       # tenant_network_type = local

       # tenant_network_type = vlan

       # Example: tenant_network_type = gre

       # Example: tenant_network_type = vxlan

       本文主要以vlan为例,并结合local来详细的分析下openstack的网络模式。

1. local模式

       此模式主要用来做测试,只能做单节点的部署(all-in-one),这是因为此网络模式下流量并不能通过真实的物理网卡流出,即neutron的integration bridge并没有与真实的物理网卡做mapping,只能保证同一主机上的vm是连通的,具体参见RDO和neutron的配置文件。

(1)RDO配置文件(answer.conf)

       主要看下面红色的配置项,默认为空。

       复制代码

           

       代码如下:

       CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS

       openswitch默认的网桥的映射到哪,即br-int映射到哪。 正式由于br-int没有映射到任何bridge或interface,所以只能br-int上的虚拟机之间是连通的。

       复制代码

           

       代码如下:

       CONFIG_NEUTRON_OVS_BRIDGE_IFACES

       流量最后从哪块物理网卡流出配置项

       复制代码

           

       代码如下:

       # Type of network to allocate for tenant networks (eg. vlan, local,

           # gre)

           CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=local

           # A comma separated list of VLAN ranges for the Neutron openvswitch

           # plugin (eg. physnet1:1:,physnet2,physnet3::)

           CONFIG_NEUTRON_OVS_VLAN_RANGES=

           # A comma separated list of bridge mappings for the Neutron

           # openvswitch plugin (eg. physnet1:br-eth1,physnet2:br-eth2,physnet3

           # :br-eth3)

           CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=

           # A comma separated list of colon-separated OVS bridge:interface

           # pairs. The interface will be added to the associated bridge.

           CONFIG_NEUTRON_OVS_BRIDGE_IFACES=

       (2)neutron配置文件(/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini)

       复制代码

           

       代码如下:

       [ovs]

           # (StrOpt) Type of network to allocate for tenant networks. The

           # default value 'local' is useful only for single-box testing and

           # provides no connectivity between hosts. You MUST either change this

           # to 'vlan' and configure network_vlan_ranges below or change this to

           # 'gre' or 'vxlan' and configure tunnel_id_ranges below in order for

           # tenant networks to provide connectivity between hosts. Set to 'none'

           # to disable creation of tenant networks.

           #

           tenant_network_type = local

       RDO会根据answer.conf中local的配置将neutron中open vswitch配置文件中配置为local

2. vlan模式

       大家对vlan可能比较熟悉,就不再赘述,直接看RDO和neutron的配置文件。

(1)RDO配置文件

       复制代码

           

       代码如下:

       # Type of network to allocate for tenant networks (eg. vlan, local,

           # gre)

           CONFIG_NEUTRON_OVS_TENANT_NETWORK_TYPE=vlan //指定网络模式为vlan

           # A comma separated list of VLAN ranges for the Neutron openvswitch

           # plugin (eg. physnet1:1:,physnet2,physnet3::)

           CONFIG_NEUTRON_OVS_VLAN_RANGES=physnet1:: //设置vlan ID value为~

           # A comma separated list of bridge mappings for the Neutron

           # openvswitch plugin (eg. physnet1:br-eth1,physnet2:br-eth2,physnet3

           # :br-eth3)

           CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1 //设置将br-int映射到桥br-eth1(会自动创建phy-br-eth1和int-br-eth1来连接br-int和br-eth1)

           # A comma separated list of colon-separated OVS bridge:interface

           # pairs. The interface will be added to the associated bridge.

       CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-eth1:eth1 //设置eth0桥接到br-eth1上,即最后的网络流量从eth1流出 (会自动执行ovs-vsctl add br-eth1 eth1)

       此配置描述的网桥与网桥之间,网桥与网卡之间的映射和连接关系具体可结合 《图1 vlan模式下计算节点的网络设备拓扑结构图》和 《图2 vlan模式下网络节点的网络设备拓扑结构图 》来理解。

       思考:很多同学可能会碰到一场景:物理机只有一块网卡,或有两块网卡但只有一块网卡连接有网线

       此时,可以做如下配置

(2)单网卡:

       CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth0 //设置将br-int映射到桥br-eth

       复制代码

           

       代码如下:

       # A comma separated list of colon-separated OVS bridge:interface

           # pairs. The interface will be added to the associated bridge

           CONFIG_NEUTRON_OVS_BRIDGE_IFACES= //配置为空

       这个配置的含义是将br-int映射到br-eth0,但是br-eth0并没有与真正的物理网卡绑定,这就需要你事先在所有的计算节点(或网络节点)上事先创建好br-eth0桥,并将eth0添加到br-eth0上,然后在br-eth0上配置好ip,那么RDO在安装的时候,只要建立好br-int与br-eth0之间的连接,整个网络就通了。

       此时如果网络节点也是单网卡的话,可能就不能使用float ip的功能了。

       (3)双网卡,单网线

       复制代码

           

       代码如下:

       CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-eth1 //设置将br-int映射到桥br-eth1

           /pp# A comma separated list of colon-separated OVS bridge:interface

           /pp# pairs. The interface will be added to the associated bridge.

           /ppCONFIG_NEUTRON_OVS_BRIDGE_IFACES=eth1 //配置为空

       还是默认都配置到eth1上,然后通过iptables将eth1的流量forward到eth0(没有试验过,不确定是否可行)

3. vlan网络模式详解

           图1 vlan模式下计算节点的网络设备拓扑结构图

       首先来分析下vlan网络模式下,计算节点上虚拟网络设备的拓扑结构。

(1)qbrXXX 等设备

       前面已经讲过,主要是因为不能再tap设备vnet0上配置network ACL rules而增加的

(2)qvbXXX/qvoXXX等设备

       这是一对veth pair devices,用来连接bridge device和switch,从名字猜测下:q-quantum, v-veth, b-bridge, o-open vswitch(quantum年代的遗留)。

(3) int-br-eth1和phy-br-eth1

       这也是一对veth pair devices,用来连接br-int和br-eth1, 另外,vlan ID的转化也是在这执行的,比如从int-br-eth1进来的packets,其vlan id=会被转化成1,同理,从phy-br-eth1出去的packets,其vlan id会从1转化成

(4)br-eth1和eth1

       packets要想进入physical network最后还得到真正的物理网卡eth1,所以add eth1 to br-eth1上,整个链路才完全打通

           图2 vlan模式下网络节点的网络设备拓扑结构图

       网络节点与计算节点相比,就是多了external network,L3 agent和dhcp agent。

(1)network namespace

       每个L3 router对应一个private network,但是怎么保证每个private的ip address可以overlapping而又不相互影响呢,这就利用了linux kernel的network namespace

       (2)qr-YYY和qg-VVV等设备 (q-quantum, r-router, g-gateway)

       qr-YYY获得了一个internal的ip,qg-VVV是一个external的ip,通过iptables rules进行NAT映射。

       思考:phy-br-ex和int-br-ex是干啥的?

       坚持"所有packets必须经过物理的线路才能通"的思想,虽然 qr-YYY和qg-VVV之间建立的NAT的映射,归根到底还得通过一条物理链路,那么phy-br-ex和int-br-ex就建立了这条物理链路。

低代码真的会威胁程序员吗?

       ChatGPT是一个非常强大的语言模型,但它并不是万能的,在生成代码的场景下还需要人工编程和检查,所以一定程度上ChatGPT的使用是需要依赖程序员的护航,才能确保完成应用。说替代程序员的,着实是过度解读了。

       ChatGPT的爆火,让我想起,同样会提高程序员开发效率的低代码平台,它的出现也同样被人类污名化,职业威胁程序员。

       é€šè¿‡ä½Žä»£ç å¹³å°ï¼Œåªéœ€è¦é€šè¿‡æ‹–拽的方式,或者是编辑几行基础代码,就能快速的开发出各类应用系统。最关键的是低代码改变了传统开发对专业技能的要求,现在只要掌握一些基础的代码知识,甚至不需要任何基础,就可以进行应用系统的开发!作为国内主流的JNPF低代码平台服务商,JNPF低代码平台负责人认为:低代码的本质是解放开发者的双手,让他们从重复的代码工作中解放出来,低代码在这个过程中扮演的是“辅助者”角色,而并非“替代者”。因为永远有一些容易被忽略的边缘性技术问题,需要程序员去解决,这是低代码不能替代的。

       è€Œä¸”低代码并不意味着完全就抛弃代码,相反在平台无法满足一些复杂的业务场景时,就需要代码的辅助,当然这个过程的代码量要可控,否则就违背了低代码开发的本质。

       è€Œåƒå¸‚场上一些无代码平台,确实做到了看不见任何代码,但是当平台需要去应对复杂业务逻辑系统的开发时,便会显得力不从心,JNPF保留了这种灵活的开发机制,当需要更深层次的处理业务逻辑时,如果平台开发不能完全匹配,就需要程序员通过代码开发实现相关能力与服务。

       è€Œè¿™ç§äºŒæ¬¡å¼€å‘的需求已经超过了应用创建者的能力范围,这就需要专业的程序员基于平台去开发。

       æ‰€ä»¥ï¼Œä¸Žå…¶æ— æ·±ç©¶ä½Žä»£ç æ˜¯å¦ä¼šè®©ç¨‹åºå‘˜å¤±ä¸šï¼Œä¸å¦‚去想如何通过低代码技术的加持,让程序员变得更有含金量,让低代码成为程序员工作的润滑剂。

       æœ€åŽï¼Œæ™®é€šäººå¦‚何不被OpenAI 取代。

       åœ¨æŸäº›æ–¹é¢å¼ºäºŽæ™®é€šäººçš„,特别是对于重复性智力劳动,如重复性写套话、写代码、画图,那么怎么不被取代?还是需要多学习、多主动思考、多实践、看更多书,做更多有挑战的事情,在认知上避免被取代的关键是不断学习和提高自己的能力,并努力适应新的环境和挑战。