国外大神总结的10个Java编程技巧!

这是国外一个国外大神20多年的经验总结出来的……
“任何可能出错的事情,***都会出错。大神”
这就是总结人们为什么喜欢进行“防错性程序设计”的原因。偏执的编程习惯有时很有意义,有时则不够清晰也不够聪明,技巧也许当你想到这样写的国外人的时候还会觉得有点怪异。下面是大神我列出的的个人感觉最有用而又偏执的 10 项 Java 编程技巧。请看:
1. 把字符串常量放在前面
通过把字符串常量放在比较函数equals()比较项的总结左侧来防止偶然的 NullPointerException 从来都不是一个坏主意,就像这样:

这是编程毫无疑问的,把一种表达式转换成另一种更好的技巧表达式,并不会失去什么。国外只要我们的大神Options是真实存在的(Java 8中 Optional是WordPress模板对可以为空的对象进行的封装),不是总结吗?讨论一下…
2. 不要相信早期的JDK APIs
Java刚出现的时候,编程一定是编程件很痛苦的事。那时的技巧API仍然不够成熟,你可能曾经遇到过这样一段代码:

看起来很奇怪对吗?也许吧,但是看看这个Javadoc:
“如果抽象路径名表示的不是一个目录,那么这个方法返回null。否则返回一个字符串数组,其中每个字符串表示当前目录下的一个文件或目录。”
是的,***再加上判空检查,以确保正确:

糟糕!前者违反了 Java 编码中 10 个微妙的***实践的规则#5和#6。因此一定要记得判 null检查!
3. 不要相信“-1”
我知道这很偏执,Javadoc中关于 String.indexOf() 的早期描述是香港云服务器这样的:
“字符在字符序列中***次出现的位置将作为结果[被返回],如果字符不存在则返回-1。”
所以,-1 就可以理所当然被拿来用,对吗?我说不对,看看这个:

谁知道呢。也许在某个特定场合下他们将会需要另一种 编码值,如果不区分大小写的话,otherString 就会被包含进去…此时或许可以返回 -2呢?谁知道呢。
毕竟,我们有非常多关于NULL——价值亿万美金的错误的讨论。为什么不开始讨论 -1呢,某种意义上来说 -1 是 null 在int类型下的另一种形式。
4. 避免意外的赋值
是的。即使***秀的程序员也可能犯这种错误(当然,不包括我。看#7)。
(假设这是JavaScript,我们暂且偏执地认为是这种语言)

再说一遍。如果你的b2b供应网表达式中有常量,将它放在等式左边。这样当你打算再添加一个 = 时,不容易出错。
5. 检查null和长度
不管什么时候你有一个集合、数组或者其他的,确保它存在并且不为空。

你不知道这些数组来自哪儿,也许是早期的JDK API呢?
6. 所有的方法都用 final 声明
你可以告诉我任何你想要的开闭原则,不过那都是胡说八道。我不相信你(可以正确继承我的类),也不相信我自己(不会意外地继承我的类)。因此除了接口(专门用于继承)都应该是严格的 final。

是的,写成final。如果这样做对你来说没有意义,你也可以通过修改或重写字节码来改变类和方法,或者发送功能请求。作为Java技术栈公众号小编,我敢肯定的告诉你重写类/方法并不是一个好主意。
7. 所有的变量和参数都用 final 声明
就像我说的。我不相信自己不会无意间重写了某个值。这么说来,我的确一点都不相信自己。因为:

这也是为什么所有的变量和参数都用final声明的原因。

好吧,我承认,这一条我自己也不常用,虽然我应该用。我希望Java能像Scala语言一样,人们在所有地方都直接用 val 来表示变量,甚至都不考虑易变性,除非明确需要的时候他们才用 var 来声明变量,但是这样的机会特别少。
8. 重载的时候不要相信泛型
是的,这是会发生的。你觉得你写了一个超好的API,它真的是既酷炫又直观;接着就出现了一群用户,他们只是把一切类型生搬硬套进 Object 中 直到那该死的编译器停止工作,然后他们突然链接到了错误的方法,认为这一切都是你的错(事情总是这样)。
思考一下这个:

因为,你知道的…你的用户们,他们就像这样

相信我,我看过的多了,还有这样的

所以说偏执是有好处的。
9. 总是在switch语句里加上default
Switch…作为最滑稽的表达式之一,我不知道是该心存敬畏还是默默哭泣。不管怎样,我们既然无法摆脱 switch ,在必要的时候我们***能够正确使用它,例如:

因为在当 value=3 被引入到软件中的时候,default 就能发挥作用,使其正常运行!别和我提 enum 类型,因为这对 enums 也一样适用。
10. 用大括号隔开 switch 的每一个 case 块
事实上,switch是最坑爹的语句,任何喝醉了或是赌输了的人都可以在某种语言中使用它。看看下面这个例子:

在switch语句中,为所有的case都只定义了一个作用域。事实上,这些case不是真正意义上的语句,他们更像是标签,而switch就是指向这些标签的goto语句。事实上,你甚至可以把case语句和 惊人的FORTRAN77项声明 类比,对于FORTRAN,它的神秘已经超越了它的功能。
这意味着变量final int j 可以被任何case访问,不论我们是否有break。看起来并不是很直观。我们可以通过添加简单的花括号为每一个case创建一个新的嵌套的作用域,当然不要忘了在每个 case 的语句块***加 break。
结论
编程时的强迫症有时候看起来会很奇怪,会使得代码往往比必需的还要冗长。你可能会想,“啊,这种情况永远不会发生!”,但是正如我所说的,在经历了20年左右的编程生涯后,你不会想要再去修正那些只是因为编程语言的古老和固有缺陷而导致的愚蠢而不必要的bug了。因为你知道…..
现在,轮到你了!
原文链接: http://www.javacodegeeks.com/2015/08/top-10-useful-yet-paranoid-java-programming-techniques.html
本文地址:http://www.bzve.cn/html/56e66399280.html
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
相关文章
以黑轴茶轴玩游戏,娱乐与高效并存(打造专属游戏神器,畅爽享受游戏乐趣)
同样的先下载PHP源码包,键入“cd /usr/local/src”回车并执行“sudo wget http://cn2.php.net/distributions/php-5.3.8.tar.gz”下载PHP源码包。解压后进入php目录中,“cd php-5.3.8”回车,并执行“sudo ./configure --prefix=/usr/local/server/php --with-config-file-path=/usr/local/server/php --enable-mbstring --enable-ftp --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-pear --enable-sockets --with-freetype-dir=/usr --enable-gd-native-ttf --with-zlib --with-libxml-dir=/usr --with-xmlrpc --enable-zip --enable-fpm --enable-fpm --enable-xml --enable-sockets --with-gd --with-zlib --with-iconv --enable-zip --with-freetype-dir=/usr/lib/ --enable-soap --enable-pcntl --enable-cli”回车。出现下图就可以继续进行下一步。再接着键入“sudo make && make install”。等待操作完成之后,复制启动脚本。输入“sudo cp ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm”回车,接着再执行“sudo chmod +x /etc/init.d/php-fpm”。修改PHP-FPM配置文件,依次执行“cd /usr/local/server/php/etc”、“mv php-fpm.conf.default php-fpm.conf”、“vi php-fpm.conf”编辑配置文件。去掉25行前的分号。修改第131和132行的user和group为当前用户(安装系统时设置的帐户名)。去掉161、166、171、176行前面的分号,如下图。保存并退出。PHP-FPM启动及退出分别使用命令“/etc/init.d/php-fpm start”与“/etc/init.d/php-fpm stop”。
Kernel 4.2.3已经发布了,关于这个新版本有些什么新变化,这里不用说了,假如你是Ubuntu 用户,想升级到 Kernel 4.2.3 还是非常方便的,因为Ubuntu 提供了 DEB 安装包,减少了自行编译内核出现错误,当然也不是完全不会出错了,升级内核都有风险,所以谨慎操作。安装方法,直接命令行安装,打开终端。32位用户安装命令:下载安装包:安装内核:sudo dpkg -i linux-headers-4.2*.deb linux-image-4.2*.deb 假如觉得有问题或不好,卸载新版本内核命令:sudo apt-get remove linux-header-4.2* linux-image-4.2* 以上就是本文的全部内容,希望大家可以喜欢,可以帮助到大家。64位用户安装命令:下载安装包: 安装内核:sudo dpkg -i linux-headers-4.2*.deb linux-image-4.2*.deb 卸载内核:sudo apt-get remove linux-headers-4.2* linux-image-4.2
一.以文件名查找: 1. find 命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 3、find命令选项 -name 2. locate 命令 locate filename 发现包含字符串“filename”的文件名。这比find命令更容易。但是基于数据库(通常在夜间重建),所以你无法找到刚刚存到文件系统的文件。为了强制立即更新数据库,作为超级用户可以使用:updatedb& (中间没有空格) 3. which命令 which executeable_name 二.以文件内容查找 1. grep -n 字符串名字 /filepath/filename 查看文件内容的特殊方法 1. 假如你只想看文件的前5行,可以使用head命令,如: head -5 /etc/passwd 2. 假如你想查看文件的后10行,可以使用tail命令,如: tail -20 /etc/passwd tail -f /var/log/messages 参数-f使tail不停地去读最新的内容,这样有实时监视的效果 tail -f /var/log/messages 按Ctrl+C后,直接从脚本退出到提示符下了
电脑服务错误1068的解决方法(如何修复电脑服务错误1068以恢复正常运行)
我们经常需要将本地的文件上传到远程的Ubuntu 14.04服务器上,或者把远程Ubuntu 14.04服务器上的文件下载到本地,这就需要用到vsftpd来搭建FTP服务,现在介绍一下如何在Ubuntu 14.04上安装和配置vsftpd软件名称:winscp中文版 v5.1.8 绿色免费版(sftp客户端)软件大小:2.8MB更新时间:2013-12-051、更新源列表打开终端窗口,输入sudo apt-get update-->回车-->输入当前登录用户的管理员密码-->回车,就可以了。假如不运行该命令,直接安装vsftpd,会出现有几个软件包无法下载,您可以运行apt-get update------的错误提示,导致无法安装。2、安装vsftpd打开终端窗口,输入sudo apt-get install vsftpd-->回车-->安装完成。3、判断vsftpd是否安装成功打开终端窗口,输入sudo service vsftpd restart重启vsftpd服务-->回车-->vsftpd处于运行状态,说明安装成功。4、新建/home/uftp目录作为用户主目录打开终端窗口,输入sudo mkdir /home/uftp-->回车-->输入sudo ls /home-->回车-->有一个uftp目录,目录新建成功。5、新建用户uftp并设置密码打开终端窗口,输入sudo useradd -d /home/uftp -s /bin/bash uftp-->回车-->用户新建成功-->输入sudo passwd uftp设置uftp用户的密码-->回车-->输入两次密码-->回车-->密码设置成功。6、使用gedit修改配置文件/etc/vsftpd.conf打开终端窗口,输入sudo gedit /etc/vsftpd.conf-->回车-->打开了vsftpd.conf文件,向文件中添加userlist_deny=NOuserlist_enable=YES userlist_file=/etc/allowed_users和seccomp_sandbox=NO-->使文件中的local_enable=YES-->保存。7、使用gedit新建/etc/allowed_users文件打开终端窗口,输入sudo gedit /etc/allowed_users-->回车-->输入uftp-->保存, 文件创建成功。8、使用gedit查看/etc/ftpusers文件中的内容打开终端窗口,输入sudo gedit /etc/ftpusers-->回车-->打开这个文件后,看一看有没有uftp这个用户名,假如没有,就直接退出。假如有就删除uftp,因为这个文件中记录的是不能访问FTP服务器的用户清单。9、使用winscp登录FTP服务器下载安装WinSCP,运行WinSCP-->输入IP、用户名、密码-->保存-->勾选保存密码-->确定-->登录-->登录成功。注意事项:习惯使用vi编辑器修改配置文件的也可以使用vi,不一定要使用gedit。相关推荐: ubuntu14.04怎么建立wifi热点? ubuntu14.04打开个几个应用窗口最小化后怎么切换呢? Ubuntu14.04 远程连接Win7 报错:无法连接到RDP服务器
以前一直使用window,今天安装了一个ubuntu系统(假如有同学也想装,建议装英文版的),因为以前ubuntu系统用的不多,所以安装软件就是一个问题。就以安装chrome来说吧:1、在Google chrome上面下载Chrome浏览器。选择正确的版本,比如选择【32 bit .deb (适用于 Debian/Ubuntu)】。2、Ctrl+Alt+T 打开终端,进入你刚刚下载好的Chrome包存放的文件夹(我是直接下载到默认位置的):复制代码代码如下:$ sudo dpkg -i google-chrome-stable_current_amd64.deb有很多同学看到类似以下的错误提示会束手无策,不用担心,原因是因为依赖包的问题,我们安装一下这个依赖包就好了:4、出现以上错误,安装依赖包来解决:复制代码代码如下:$ google-chrome注意:安装软件之前确保你已经做过更新和升级假如没有更新到最新请参考以下更新:复制代码代码如下:$ sudo apt-get update$ sudo apt-get upgrade
图解演示环境版本:本机系统: WIN7虚拟机:VMware Workstation 8 (英文版)安装目标:Ubuntu Desktop 12.04 LTS (请点击这里)先下载好iso镜像文件详细过程图解:0. 初始画面,点击“Create a New Virtual Machine”(左上Ubuntu为本人已有开发环境机,请忽略)1. 点击“Custom(自定义)”2. 无需选择,直接Next(上面是选Workstation版本的兼容性的,这里默认为当前版本8.0,之前版本的不同在于Limitations(局限),如内存更少,不支持HD Audio等)3. 选择“I will install the operating system later”这里无严格要求的同学,是可以选择第二项“Installer disc image file (ios)”的,之后会VMware会自动得知你的iso是Linux(Ubuntu),只要求你输入Full name,和用户名密码等简单的用户设定,但是这是一个Easy install,如VMware原文所说“When the New Virtual Wizard detects an operating system that supports Easy Install, the wizard prompts you for information about the guest operating system. After the virtual machine is created, the guest operating system installation is automated and VMware Tools is installed.” 我觉得是因为这个OS的自动安装,不完全,导致一些核心命令无法使用、无反应等一些问题。所以有更高要求的同学,不能选这项,需要完全、自定义的安装。4. 在Version下选择“Ubuntu”,注:64位Ubuntu需要选下面那个“Ubuntu 64-bit”5. 设置虚拟机名称(即每次启动VMware左上方显示的名字),之后选择你想的在WIN7里的安装路径(默认在C盘,很不方便)。6. Number of processors(处理器个数)选择为2我是i7处理器,配置较好无压力的,感觉双核比单核好一些(假如没用VMware不会这么设计,但是对于更多的,没必要),下面那个应该没必要选,有非常懂的同学,请留言赐教。7. 内存大小选择,使用自动推荐的1G内存(本机内存8G)。同学们在虚拟机里,应该不会跑什么惊天地泣鬼神的大程序,内存大不等于快,而是更多的数据放在内存里而非硬盘里,对于内存消耗大的程序、系统会变快。去年做本科毕设的时候,调整过虚拟机的内存从1G为2G,结果竟然变慢了,应该是外面WIN7被占用了的问题。8. Network Type网络类型选择,本次选择默认的“NAT”注:这里有一点本人经历的非常重要需要说明,使用“NAT”的话,需要外面的WIN7使用一根线连接上网,才能在Ubuntu里上网(如同Ubuntu是你的真正OS的感觉,不需要手工配置任何IP信息),不能默认使用无线连接。这点对有些笔记本同学可能会造成麻烦。当然不是说不能通过手动配置IP相关解决,但是为了避免每次都配置的麻烦,请直接使用“bridged”桥接手动配置。9. 默认即可,直接“Next”10. 默认即可,直接“Next”第三项为直接划分硬盘给该虚拟机使用,意思应为绕过WIN7的那个文件夹管理,直接给虚拟机只用一块硬盘空间,有高级需要的同学可以选择。所以,注:默认的那个可以轻松实现copy,move,当你想拷给另外一个人,或者换机器的时候。11. 磁盘选择,默认即可,直接“Next”12. 选择“Store virtual disk as a single file”上面那个方框,是说现在就立即分20G给这个虚拟机,假如不够,还是会一点一点随着你的使用增加(跟不选一样)。假如同时没有很多个虚拟机装在WIN7上,或者硬盘空间太大又不放东西,可选。13. 虚拟机文件的存放地址,选个D盘的位置就行了。14. 点击“Finish”,完成了虚拟机的配置工作这里点击“Customize Hardware”的话,有机会对前面不满意的虚拟机硬件设置(处理器个数,内存大小等)重新设置,所以前面不满意的同学,不用点cancel重来,实际上在以后的使用过程,也是可以随时改变虚拟机的配置的,这点不用担心。15. 完成后,可以看到左上角多出了“Ubuntu 12.04”,先别急着Power on,还没装ubuntu呢。。。点击“Edit virtual machine settings”16. 在弹出的settings里,点击“CD/DVD(IDE)”,然后在右侧点击“Use ISO image file”,再选择你开始下载好的Ubuntu 12.04的iso镜像文件的路径然后点“OK”。17. 启动虚拟机,即点击step 15里的“Power on this virtual machine”,之后Ubuntu 12.04开始了安装,先选择语言,然后点击“Install Ubuntu”18. 假如选择“Download updates while installing”为安装过程直接安装最近的更新,假如选择“Install this third-party software”为安装第三方软件19. 选择“Something else”,将要对虚拟机的20G硬盘做手动分区20. 点击“New Partation Table”(新建分区表)21. 在弹出的对话框里,选择“Contunie”22. 选中新出现的“free space”(空闲空间),点击“Add”23. 注意下图中的“Primary”,“Beginning”, “Ext4 ...”均为默认,不需要修改;数字为大小,以MB为单位(注:不用追求1024凑整,硬盘实际上是凑不整的。。。),这里选择10000=10G;最后的“Mount point(挂载点)”下拉列表中,选中“/”,完成该步,点“OK”注意:“/ ” 建议大小在5GB以上。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)非常注意:本人上次弄了个6G,结果进去下libraries,一下就满了,那叫一个悲剧!所以,同学们千万别抱着“5G以上”来想,ubuntu应该自己就占了4、5G,不想悲剧的同学至少8G以上吧,20G确实不大,但是假如打算长期的同学,应该不会使用虚拟机了,20G跑程序,绰绰有余,等喜欢了熟悉了,再来个真的吧。24. 再次选中“free space”(同step 22图中),点击“Add”;注意下图中“Logical”,“Beginning”均为默认,大小选择1000(1G);在Use as的下拉列表中选择“swap area”,注:最后的下拉列表为灰色,意为swap area不用选择挂载点;完成该步,点“OK”注意:“swap area” 即交换分区,建议大小是物理内存的1~2倍。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)不需要太大,1G足以。25. 再次选中“free space”(同step 22图中),点击“Add”;注意下图中“Logical”,“Beginning”, “Ext4 ...”均为默认;注:大小选择也为默认,即所有的剩余空间;最后的“Mount point”下拉列表中,选中“/home”;完成该步,点“OK”注意:“/home” 存放普通用户的数据,是普通用户的宿主目录,建议大小为剩下的空间。(根据关于“Ubuntu手动分区”的多个相关文章一致得来)注:三个分区的顺序不要变,因为/home在最后便于默认选择“剩余的空间”,避免手工分配。26. 至此,所有分区工作已经完成,如下图所示。注:假如不满意可以点击“Revert(还原)”来重新分区,直到满意和准确无误为止。假如感到满意,点击“Install Now”注:上图为悲剧图,6G的/是不够的,这个图没有更新,仅供参考,不比看数字。27. 选择你所在的时区,自动调整时间,夏令时什么的手动调不方便,之后都点击“Continue”以继续28. 键盘选择US,一般国内买的电脑都是这样的,可根据情况自己选择29. Ubuntu的个人设置,根据自己需要填写用户名密码等30. 最后安装完成,点击“Restart Now”重启Ubuntu即可31. 停止在如下画面,按“回车”即可至此,全部安装过程完毕,我们可以进入到Ubuntu 12.04的桌面工作了。一定要注意:由于未使用自动安装,所以现在我们的虚拟机不含有VM Tools,导致无法全屏虚拟机等等问题,需要安装VM tools,详情请搜索即可。
热门文章
- 1一加手机搭配魔声耳机的绝佳音乐体验(探索一加手机与魔声耳机的无缝连接,享受高品质音乐)
- 2按照《Ubuntu 9.04的3D桌面特效安装图解》该文的方法成功地开启3D桌面效果。也先来看看效果图。图1:Ubuntu 9.10的3D球体特效安装命令见图2。图2见图3打开进行相关设置。图3下面一起来欣赏下Ubuntu 9.10下3D桌面特效。图4:Ubuntu 9.10的3D圆柱特效(图片大,打开稍慢,请耐心等待,点击上图查看大图)图5:还是Ubuntu 9.10的3D圆柱特效(图片大,打开稍慢,请耐心等待,点击上图查看大图)
- 3下载最新libdrm 2.4.9 (打了patch,不需要在xorg设置DRI了)编译:驱动还原:sudo apt-get install libdrm2 --reinstallsudo apt-get install xserver-xorg-video-intel --reinstallP.S./etc/X11/xorg.conf的section Device里,最好有一项Driver intel,但不一定需要的。(假如3d用不了,就把Driver intel加到那个section)假如glxgears提示DRI问题,就在xorg.conf的最后,加入:Section DRIMode 0666EndSection为了防止Ubuntu更新时,更换了驱动,強烈建议在synaptic锁定xserver-xorg-video-intel和libdrm2的版本!
- 4好吧,研究了半天终于搞定,和之前的14.04版本安装不一样,因为那种安装方法在此系统下不行,这我就分享一下了。软件名称:搜狗输入法 for Linux 2.0.0.0066 中文官方安装版 64位软件大小:17.8MB更新时间:2015-10-191、首先下载linux版本的某狗安装包吧! 2、我们在结果中点击官方的那个地址进入并下载与你系统位数一致的输入法,我这里是32位的ubuntu,我就下载32位的了!3、下载好后,我们来安装一个工具输入命令: sudo apt-get install gdebi,后按enter执行4、然后,终端会叫你按(Y/N)来决定是否真的安装,我们输入Y,然后按回车键继续。5、安装完成后,我们别关闭终端在终端中继续输入: cd 下载的某狗文件所在目录,我这里就输入:cd 下载,因为我下载的某狗在下载目录。6、进入到你某狗所在的目录后输入:sudo gdebi so 然后按tab键补全搜狗的文件名称按,按enter执行后,等待某狗安装完成。假如期间提示“您是否想要安装这个软件包(Y/N)”,那么你输入“Y”然后按回车键就可以了7、安装完成后,我们点击系统屏幕右上角的那个齿轮图标,然后点击“注销”,注销一下系统,假如无法注销,那么重启一下也可以的。注销完成后,重新进入系统。按“Ctrl+Shift”键切唤出某狗输入法,这样我们就能够使用它了。
- 5探索HKC液晶显示器的优势与特点(品质卓越,尽显细节之美)
- 6密码保护策略的重要性(定期更改密码的必要性)
- 7刚接触Ubuntu的朋友,有时候忘记自己设置登录密码了,不知道怎么重新设置,今天就教大家如何通过Recovery Mode来重新设置Ubuntu的帐户密码。1、我们在给电脑开机的时候,会进入开机引导的一个GRUB界面,GRUB loading, please wait,运行的这里需要按下ESC键来进入启动菜单。2、按下ESC键进入菜单后,就可以选择对Recovery Mode。3、当引导进入到Recovery Menu时,选root Drop to root shell prompt。4、这时自动以root用户登录,passwd命令重设密码,假如我的账号是xxxxxx,那么要重新设置的密码命令则是:$passwd xxxxx相关推荐:Ubuntu 下忘记用户名和登录密码的解决方法
- 8打开上网客户端、新立得,这些涉及到系统的都要输入密码,对于我们大多数人来说,用Linux无非是做桌面应用,对安全性没必要搞得跟服务器一些。解决办法一: 在启动时进入安全模式,这时是用root登录的,执行: chmod 740 /etc/sudoers 然后打开/etc/sudoers这个文件,把最后一行: %admin ALL=(ALL) 保存退出。 执行: reboot your ubuntu.OK! 解决方法二:Ubuntu默认不能直接用root帐户登录,必须从第一个创建的用户(既安装时创建的那个用户)通过su或sudo来获得root权限。在Ubuntu中对系统进行操作很多时候都要使用这个命令,由此可见对于新来说很有必要来认识这个命令。这或许不太方便,但这样增加了安全性,避免用户由于误操作而损坏系统。sudo补充:通常我们并不以root身份登录,但是当我们执行某些命令 (command)时需要用到root权限,我们通常都是用sudo command来执行command。由于使用Ubuntu,所以经常都都用sudo,而使用sudo时,又得输入密码,所以我就寻找sudo不输入密码的方法。前阵子google了一下,很容容易找到一个方法,但是对其不够理解,今天,仔细研究了一下/etc/sudoers这个文件,对于如何实现自己的需求就非常清楚了。网上说看到的资料往往写得不清楚,所以我根据自己的需求好好整理了一下。 假设我的用户名为jay(属于 admin组),使sudo不用密码的方法如下。 1. 假如想把admin组的用户都sudo不用密码那么可以将这一行换为:%admin ALL=(ALL) NOPASSWD: NOPASSWD ALL即可。 注意:我自己的一个配置没生效,找原因还找了阵子,写到这里吧。 我添加jay ALL = NOPASSWD: ALL这样一行;但是,jay执行sudo时还是需要输入密码,这是为什么? 原来是,我这一行在%admin ALL=(ALL) ALL组策略之前前,后面的组配置覆盖了前面的配置,而jay属于admin组,所以需要密码。 这时,只需要将%admin行用#注释掉即可。OK!然后立马就生效了,可能执行sudo时系统都会去读取/etc/sudoers的,所以立即就生效了。 另外,附带公司某服务器的一个/etc/sudoers配置: 复制代码代码如下: 通过修改/etc/sudoers 上面说的并不准确,要注意以下几点。 编辑/etc/sudoers文件使用“超级用户终端”,而不能使用普通的终端。“超级用户终端”启动通过右键“编辑菜单”命令添加。 编辑完之后使用wq!而不是wq退出
- 9三星N9008V(颠覆你对手机的认知,让你畅享极致体验)
- 10电脑显示输入PIN错误的解决办法(避免电脑显示输入PIN错误的关键措施及修复方法)
- 11Chromium 是 Google 的chrome浏览器背后的引擎,其目的是为了创建一个安全、稳定和快速的通用浏览器。在Ubuntu上使用APT安装Chromium有3种方法:复制代码代码如下:apt-get install chromium (接着按2下Tab键,会看到以下结果)然后我们可以大略确定就是包chromium-browser(包chromium是个飞行游戏)。复制代码代码如下:apt-cache depends chromium-browser复制代码代码如下:sudo apt-get install chromium-browser chromium-browser-l10n复制代码代码如下:sudo apt-get autoremove --purge chromium-browser chromium-browser-l10n复制代码代码如下:apt-get --helpman apt-getinfo apt-get
- 12先安装cupsys,再安装打印机管理程式,及打印机驱动程式 sudo apt-get install cupsys gnome-cups-manager cupsys-driver-gimpprint 运行打印机管理程式,添加新的打印机 gnome-cups-manager #也可直接运行gnome-cups-add 来增加新的打印机 先择新增,再选网络打印机(Network Printer),再选TCP/Socket,HP JetDirect,Raw connection项 Host处输入打印机IP:172.24.75.202,Port默认:9100,之后下一步 选择打印机厂商,这里选HP,在列表框中再选择打印机型号:LaserJet P1505 驱动选择:expert,再下一步就安装好了,可以打印测试页 另:http://localhost:631可进入WEB方式管理打印机,默认不能管理,可以设置/etc/cups/cups.conf 呵呵,想不到安装打印机就这么简单。
全站热门
刚接触Ubuntu的朋友,有时候忘记自己设置登录密码了,不知道怎么重新设置,今天就教大家如何通过Recovery Mode来重新设置Ubuntu的帐户密码。1、我们在给电脑开机的时候,会进入开机引导的一个GRUB界面,GRUB loading, please wait,运行的这里需要按下ESC键来进入启动菜单。2、按下ESC键进入菜单后,就可以选择对Recovery Mode。3、当引导进入到Recovery Menu时,选root Drop to root shell prompt。4、这时自动以root用户登录,passwd命令重设密码,假如我的账号是xxxxxx,那么要重新设置的密码命令则是:$passwd xxxxx相关推荐:Ubuntu 下忘记用户名和登录密码的解决方法
大家都为在UBUNTU中使用聊天工具而烦燥吗?大家还为找QQ而在网上不停的找方案吗?什么lumaqq啊,EVAQQ啊!假如让你感觉 装LUMAQQ感觉不方便怎么办?假如用apt-get install eva成功安装上EVA却用不了怎么办,而且EVA又不怎么稳定怎么办?现在Gaim搞定,大家都知道GAIM中有很聊天工具可以一起使用集合。同时在一个界面上使用,方便吧!但是MSN是直接可以用的(系统装好后),而QQ需要装一个叫openq的插件,下载地址:http://textwiki.org/wiki/OpenQ。假如没有这个东西的话你怎么也上不了QQ,总会跳出来说明 你的QQ密码有误,所以这个东西是必需要要用的哦!本人下载的是一个文件。而不是DEB包,所以右键归档成OpenQ.tar.gz接着安装就OK安装方法:[root@localhost xxx]# tar zxvf openq.tar.gz[root@localhost xxx]# cd openq[beinan@localhost openq-0.3.2]#./configure --libdir=/usr/lib[beinan@localhost openq-0.3.2]# make[beinan@localhost openq-0.3.2]# make install安装好后OpenQ,我们查看一下 /usr/lib/gaim 目录中,会有两个libqq两个相关的文件;[root@localhost openq-0.3.2]# ls -lh /usr/lib/gaim/libqq*-rwxr-xr-x 1 root root 675 8月 31 11:08 /usr/lib/gaim/libqq.la-rwxr-xr-x 1 root root 8.7M 8月 31 11:08 /usr/lib/gaim/libqq.so到这儿就OK啦!
1. 安装JDK ubuntu 11.04系统自带的Java环境是openjdk,最好使用sunjdk(具体原因不明,网上教程基本都是这样的),因此先去官方网站( http://www.oracle.com/technetwork/java/javase/downloads/index.html)下载“ Java SE 6 Update 26 ”的JDK安装包:Linux x86 - Self Extracting Installer (81.20 MB) jdk-6u26-linux-i586.bin1.1. 下载好后开始安装JDK,在终端里输入:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:[Desktop Entry]Name=EclipseComment=Eclipse IDEExec=/opt/eclipse/eclipseIcon=/opt/eclipse/icon.xpmTerminal=falseType=ApplicationCategories=Application;Development;2.2 eclipse安装结束。
热门文章
- 1MacBookAir(轻薄便携,高性能表现,适用于多种场景)
- 2Ubuntu 14.04中加入了开启本地菜单的选项,允许用户将全局菜单移动到各个窗口中。前面为大家介绍了如何禁用Ubuntu 13.10全局菜单,而在14.04中只需更改设置即可完成。打开系统设置中外观选项,在外观选项窗口切换到行为标签,选择显示窗口菜单方式,选择“在窗口标题栏”后关闭该窗口,现在你可以看到菜单已由全局菜单移动到窗口标题栏中。
- 3关于iptables有价值的信息很多,但是大多都描述的很复杂。假如你想做些基本的配置,下面的 How To 很适合你。 # iptables -L 列出您当前iptables中在规则。假如您是刚刚建立您的服务器,那么可能此时还没有任何规则,而且您应该看到如下: Chain INPUT (policy ACCEPT) Chain FORWARD (policy ACCEPT) Chain OUTPUT (policy ACCEPT) ◆ 允许建立会话 我们可以允许建立会话来接受流量: # iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ◆ 在指定端口上允许入站流量 阻断所有流量您也可以启动系统,但是您可能正在通过SSH工作,所有在您阻断其他流量前有必要允许SSH流量。 为了在22端口号(默认的SSH端口)上的允许流量入站,您可以告诉iptables允许您的网卡接受所有的目的端口为22的TCP流量。 # iptables -A INPUT -p tcp -I eth0 --dport ssh -j ACCEPT 特别的,这将向表中追加(-A)INPUT规则,允许目的端口号为SSH的所有流量进入接口(-i) eth0,以便iptables完成跳转(-j)或动作:ACCEPT 让我们核对下这些规则:(这里仅显示了少数行,您应该看到更多) # iptables -L 现在,让我们允许所有的web流量 # iptables -A INPUT -p tcp -I eth0 --dport 80 -j ACCEPT 检查我们现有的规则 # iptables -L 我们已经指定SSH和web端口为允许通过的TCP流量,但是因为我们还没阻断任何流量,所以到目前为止所有的流量仍然可以进入。 ◆ 阻断流量 一旦一条规则对一个包进行了匹配,其他规则不再对这个包有效。因为我们的规则首先允许SSH和WEB流量,所以只要我们阻断所有流量的规则紧跟其後,我们依然能接受我们感兴趣的流量。大家要做的仅仅是把阻断所有流量的规则放在最後,所以我们需要再次用到它。 # iptables -A INPUT -j DROP 因为我们刚才没有指定一个接口或一个协议,所以除了web和ssh流量外其他任何流量都会被阻断。 ◆ 编辑 iptables 到目前为止我们设置过程中唯一的问题是回环端口(loopbakc)也被阻断了。我们本可以通过指定 -I eth0 来仅仅丢弃eth0上的数据包,但我们也可以为回环端口(loopback)添加一条规则。假如我们追加这条规则,这将太晚了----因为所有的流量已经 被丢弃。我们必须插入这条跪着到第4行。 # iptables -I INPUT 4 -I lo -j ACCEPT 最後2行看起来几乎一样,因此我们可以让iptables列的更详细些。 # iptables -L -v ◆ 日志记录 在上面的例子中,所有的流量都不会被记录。假如您愿意在syslog中记录被丢弃的包, 下面将是最快捷的方式: # iptables -I INPUT 5 -m limit --limit 5/min -j LOG --log-prefix iptables denied: --log-level 7 看 提示 段获得更多关于logging的ideas. ◆ 保存 iptables 假如您现在要重新启动机器的话,您的iptables配置将会消失。为了不用每次重新启动时敲入这些命令,您可以保存你的配置,让它在系统启动时自动启动。你可以通过iptables-save 和iptables-restore命令来保存配置。 保存您的防火墙股则到一个文件 # iptables-save >/etc/iptables.up.rules 接着修改 /etc/network/interfaces 脚本自动应用这些规则(末行是添加的) auto eth0 你也可以准备一组规则冰并自动应用它 auto eth0 ◆ 提示 下面的步骤复习了怎样建立你的防火墙规则,并假定它们相对固定(而且对于大多数人来说它们也应该是)。但是假如你要做许多研究工作,你也许想要你的 iptables在你每次重启时保存一次。你可以在 /etc/network/interfaces 里添加像下面的一行: pre-up iptables-restore < /etc/iptables.up.rules post-down iptables-save >/etc/iptables.up.rules 此行将保存规则用于下次启动时使用。 假如你超出了这个指南来编辑iptables,你可能想利用iptables-save和iptables-restore来编辑和测试你的规则。你可以通过使用你喜爱的文本编辑器(此处为gedit)来打开这些规则文件来完成编辑。 # iptables-save >/etc/iptables.test.rules 你会得到一个如下类似的文件(下面是紧接上的例子文件): # Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006 注意到这些都是减去iptables命令的iptables语句。随意编辑这些命令、完成後保存它们。然後简单的测试下: # iptables-restore < /etc/iptables.test.rules 测试完毕後,假如你还没添加iptables-save命令 到 /etc/network/interfaces 里面,记得不要丢失了你的更改: # iptables-save >/etc/iptables.up.rules ◆ 更详细的日志 # Generated by iptables-save v1.3.1 on Sun Apr 23 05:32:09 2006 请注意 一个名为 LOGNDROP的链在文件顶部。而且,INPUT链底部标准的DROP被替换成了LOGNDROP,同时添加了协议描述so it makes sense looking at the log。最後我们在LOGNDROP链尾部丢弃了这些流量。下面的行告诉我们发生了什么: * --limit 设置记录相同规则到syslog中的次数 ◆ 禁用防火墙 假如您要临时禁用防火墙,您可以通过下面的命令清空所偶的规则: # iptables -F ◆ 轻松配置通过 GUI 新手可以利用 Firetarter(一个gui工具)---仓库中的可用软件(新立德或apt-get 获得)来配置她或他的iptables规则,而需要命令行知识。请查看指南,尽管…… 配置很简单,但是对于高级用户来说可能远远不能满足。然而它对于大多数的家庭用户来说是足够的…… 。(我)建议您使用firestarter在策略表中将出站配置为 “限制”,而将您需要的连接类型(如用于http的80、https的443,msn chat的1683等等)加入白名单。您也可以通过它查看进出您计算机的活动连接…… 。防火墙会一直保持下去一旦通过向导配置完毕。拨号用户必须在向导中指定它在拨号时自动启动。 firestarter主页: http://www.fs-security.com/ (再次, 仓库源中可用, 不需要编译) 指南: http://www.fs-security.com/docs/tutorial.php 个人笔记:不幸运的是,它没有阻断(或询问用户)特定应用/程序的选项……。因此,我的理解是一旦启用了80端口(例如,用于访问网页),那么任何程序都可以通过80端口连接任何服务器、做任何它想做的事……
- 4OpenVPN是一个用于创建虚拟专用网络加密通道的软件包,允许创建的VPN使用公开密钥、数字证书、或者用户名/密码来进行身份验证。OpenVPN能在Solaris、Linux、OpenBSD、FreeBSD、NetBSD、Mac OS X与Windows 2000/XP/Vista/7以及Android和iOS上运行,并包含了许多安全性的功能。配置OpenVPN 2.0的第一步是建立一个PKI(public key infrastructure 公钥基础设施)。PKI包括:服务端和每个客户端都有一个证书(也称做公钥)和私钥首先,我们必须安装OpenVPN软件。在Ubuntu 15.04和其它带有‘apt’包管理器的Unix系统中,可以通过如下命令安装:复制代码代码如下:注意: 所有接下来的命令要以超级用户权限执行,如在使用sudo -i命令后执行,或者你可以使用sudo -E作为接下来所有命令的前缀。开始之前,我们需要拷贝“easy-rsa”到openvpn文件夹。然后进入到该目录复制代码代码如下:第三,我们需要加载环境变量,这些变量已经在前面一步中编辑好了。生成密钥的最后一步准备工作是清空旧的证书和密钥,以及生成新密钥的序列号和索引文件。可以通过以下命令完成。复制代码代码如下:在对话中,我们可以看到默认的变量,这些变量是我们先前在“vars”中指定的。我们可以检查一下,如有必要进行编辑,然后按回车几次。对话如下Generating a 2048 bit RSA private key复制代码代码如下:该命令的对话如下:Generating a 2048 bit RSA private key复制代码代码如下:该命令的输出样例如下Generating DH parameters, 2048 bit long safe prime, generator 2复制代码代码如下:现在,生成完毕,我们可以移动所有生成的文件到最后的位置中。最后,我们来创建OpenVPN配置文件。让我们从样例中拷贝过来吧:然后编辑我们需要指定密钥的自定义路径一切就绪。在重启OpenVPN后,服务器端配置就完成了。Unix的客户端配置复制代码代码如下:加载环境变量然后创建客户端密钥我们将看到一个与先前关于服务器密钥生成部分的章节描述一样的对话,填入客户端的实际信息。假如需要密码保护密钥,你需要运行另外一个命令,命令如下在此种情况下,在建立VPN连接时,会提示你输入密码。现在,我们需要将以下文件从服务器拷贝到客户端/etc/openvpn/keys/文件夹。服务器文件列表:ca.crt,复制代码代码如下:在此之后,我们需要重启OpenVPN以接受新配置。好了,客户端配置完成。安卓客户端配置复制代码代码如下:所有这些文件我们必须移动我们设备的SD卡上。然后,我们需要安装一个OpenVPN Connect 应用。接下来,配置过程很是简单:打开 OpenVPN 并选择“Import”选项虽然OpenVPN初始配置花费不少时间,但是简易的客户端配置为我们弥补了时间上的损失,也提供了从任何设备连接的能力。此外,OpenVPN提供了一个很高的安全等级,以及从不同地方连接的能力,包括位于NAT后面的客户端。因此,OpenVPN可以同时在家和企业中使用。
- 5探索魔甲人一体机的全能之道(揭秘魔甲人一体机的独特功能与设计)
- 6其实跨版本升级 Ubuntu 是相当简单的,你只需要输入一个命令而已。但是,假如你改了某些配置文件就有可能导致升级失败。之前笔者的系统是一路跨版本升上来的。就是因为改了一些配 置文件导致升级到 Ubuntu 8.04 失败。在终端中输入:sudo update-manager -dc 下载软件到升级完成大概用了50分钟左右 可以看到内核的版本为 Linux 2.6.26-5-generic,GNOME的版本为 2.23.6 网络管理器算得上是 Ubuntu 8.10 Alpha 4 中最明显的一个变化吧。Network Manager 0.7.x的引入在很大程度上增强了Ubuntu 8.10的网络功能,下面是其中一些0.7中新增的特性:管理系统全局连接的功能(不需要登入也可连接网络)支持连接至3G网络(GSM/CDMA)。支持管理多个活动连接。支持管理PPP/PPPoE的连接。支持使用静态IP配置管理连接。支持管理设备的路由功能。 关机的对话框变成似乎没有以前好看了。不过可喜的是,笔者从 Ubuntu 8.04 升级到 Ubuntu 8.10 后,以前不能挂起,不能休眠的问题在 Ubuntu 8.10 Alpha 4 中得到了解决。也许很多朋友都像我这样遇到过不能正常挂起或休眠的情况吧。在文件浏览器中添加了一个“Compact View (紧凑视图)”。在有大量文件的目录下寻找你想要的文件更方便了。 Tabs 的引入一定程度上改善用户浏览文件的体验,你可以很自如地在不同的标签之间进行切换。可以看到在菜单栏上多了一个 “Tabs”的选项。 对着你要打开的文件夹点右键选择“Open In New Tab”便可以在新的标签中打开你所选的文件夹。总的来说这次从 Ubuntu 8.04 升级到 Ubuntu 8.10 还是比较成功的。几乎所有以前安装的软件都能在 Ubuntu 8.10 上正常使用,3D 特效也开启并正常使用。见下图: Ubuntu 8.10 Intrepid Ibex Alpha 版本可能给大家留下的最深的印象就是那个备受争议的“咖啡色的NewHuman”主题。在用户可以直接看到的更新并不多,但系统底层上的改进却很多。笔者 在升级后感觉到系统在启动和影响都要比以前要快一点了,而且还解决了不能正常挂起、不能正常休眠这两个遗留了很久的问题。
- 7电脑密码错误锁定的解决方法(忘记密码或被盗的情况下,如何解除电脑锁定)
- 8电脑开机显示错误1802的原因及解决方法(深入探究电脑开机错误1802的根源,提供有效的解决方案)
- 9联想小新700系统安装教程(详细指导,让您轻松安装联想小新700系统)
- 101. 下载Sublime Text 2在官网下载对应系统位数的版本,从压缩包中提取出源代码,解压后文件夹中的sublime_text双击即可直接运行。2. 建立快捷链接将整个文件夹Sublime拷贝到 /opt 目录下,然后打开终端输入以下命令为sublime_text建立链接:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:复制代码代码如下:import urllib2,os;pf=Package Control.sublime-package;ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),wb).write(urllib2.urlopen(http://sublime.wbond.net/+pf.replace( ,%20)).read())重启Sublime Text 2,假如在Perferences->package settings中看到package control这一项,则安装成功。6. 使用Package Control安装插件按下Ctrl+Shift+P调出命令面板,输入install 调出 Install Package 选项并回车,然后在列表中选中要安装的插件。