php怎么去掉空格,linux常用命令有哪些?
linux常用命令有哪些?
1. 路径和显示的命令:
cd
pwd
ls
ls -l 可以缩写为ll,该命令是用来查看指定目录下对象的详细属性的。
2. 文件、文件夹相关的操作命令:
·mkdir 创建文件夹。
·rmdir 删除空的文件夹的,基本被淘汰。
·rm
·touch 创建一个空的文件。
基本格式:touch 文件名
示例: touch test.txt
表示在当前目录下创建一个空文件,叫test.txt
touch /opt/test.txt
表示在/opt目录下创建一个空文件,叫test.txt
3·vim 可以缩写为vi,该命令是用来创建或者编辑一个文件的。
基本格式:vi 文件名
注意事项:
·vi只能针对文件来进行操作,如果vi的对象是一个已经存在的文件夹,则最终无法保存所编辑的内容。
·vi中鼠标是没有任何用的,光标的移动是通过上下左右方向键,回车键和PageDown、PageUp等来实现的。
3. 常用的vi子命令有:
:q 退出,适用于没有对文档进行任何修改的情况下。
:q! 强制退出不保存。
:wq 退出并且保存。
:wq!文件名 强制退出,并且将当前内容另存到指定的文件中。
dd 删除光标所在的整行
x 删除光标所在的字符
gg 移动光标到整个文档的最后一行
:N N是正整数,表示将光标移动到指定的行。
4.·编辑模式:在该模式下,所有键盘的输入都是纯粹的字符串,相当于在记事本中输入一样。
5.模式的切换和对应的特征:
命令模式下, 按i或者a或者s都可以切换到编辑模式。
一般来说,编辑模式就是vi界面的左下角出现“--insert--”这样的提示串。
编辑模式下,按ESC键就可以切换到命令模式。
6. 常见问题:linux下文件名和文件夹名能否重复?后缀名是否有用?
·不论是windows还是linux,同一个目录下,是不允许出现同名的对象。
·在linux下,文件的后缀名是没有任何意义的,一般来说,后缀名只是用来起到标识作用,当然,后缀名除了标识作用,一定程度上也考虑了和windows的兼容性。
·cp 用来实现复制粘贴操作。
基本语法格式:
格式1:
cp 源对象 目标对象
表示将源对象复制粘贴为目标对象。
示例:
cp a.txt d.txt
表示将当前目录下的a.txt复制到当前目录下,重命名为d.txt。
·mv 该命令是用来实现剪切粘贴的操作。
该命令的语法格式和cp命令基本一致。
·ln 该命令是用来创建链接对象的。
在linux中,链接分为硬链接和软链接。
默认创建的是硬链接。
-s 该属性表示创建的是软链接。
·文件内容的查看:
常用的命令有:
cat
more
less
head
Tail
常见的退出方式:
·CTRL+C 强制中止当前正在执行的命令。
·ESC
·Q
·QUIT
·EXIT
对象的查找:
find:
基本格式:
find 查找范围 参数 参数值
示例:
find / -name a.txt
表示在根目录下查找名字叫a.txt的对象。
文本内容、字符串的查找:
grep 该命令是支持正则表达式方式,在指定对象中查找符合条件的字符串或者行的。
基本格式:
grep [参数] [正则表达式] 对象
示例:
grep "a" a.txt
表示输出a.txt中所有包含字符a的行。
·ls 查看命令
基本格式:ls [对象]
表示查看对象或者对象下的所有对象的信息。
重要属性:
-l
查看详细属性
权限相关的命令:
在linux系统中,存在用户和用户组的概念。
·useradd 用来添加用户
示例:useradd test1
表示添加一个新的用户,叫test1.
·passwd 用来修改指定用户的密码
示例:passwd test1
通过交互式的方式来修改test1的密码
PS:如果passwd后不跟用户名,则表示修改的是当前登录的用户的密码。
在linux中,用户配置信息都是记录在系统文件/etc/passwd中的。
·userdel 用来删除用户
建议使用属性-r。
·groupadd 添加用户组
·groupdel 删除用户组
权限:
在linux中,用户对于对象的权限有三种:分别为
r 可读
w 可写
x 可执行
chmod 直接修改对象的权限,即直接修改这9个字符。
基本格式:
chmod 权限表达式 对象名 [-R]
·权限表达式,在linux中,权限的表示方式有两种:
·字符:
rwx 可读可写可执行
u 表示所有者
g 表示所属组
o 表示其它人
= 表示赋值
+ 表示加权限
表示减少权限。
例子:chmod u=rw a.txt
表示将a.txt的所有者的权限修改为可读可写。
其他操作:
·history 显示历史输入命令
!N N表示历史命令的编号
该命令表示执行历史命令列表中的第N条命令。
·clear 清理屏幕的输出。
·TAB键 是用来补全路径或者文件名的。
如何才能写出高质量的代码?
作为一名java开发工程师,对于这个问题我算是比较有感触的,所以想说说我对java开发的一些看法,纯属个人意见,不喜轻喷!
什么样的代码算是高质量代码,或者说是高质量代码的特征?在我看来,主要就是在于可读性、易扩展两方面。
首先,我觉得最重要是要可读性高。为什么这么说呢?相信做过开发的朋友都知道,互联网公司的人员流动率还是比较高的,可能出现的情况是领导突然跟你说,你去交接一下某某某同事的工作,而交接的时候一般情况主要是业务流程、功能模块来交接,大概率不会一行一行的代码去读。如果项目正常运转,不出问题、也没有需求变更(大概率需求会变更),那就是你好我好大家好,如果出了问题或者需求变更,还是之前同事的那些模块,那就必须得去啃代码了。这个时候代码的易读性就显得非常重要了。你可以试想一下,通篇没有一句注释、一个方法几百行、if/else满天飞、方法之间参数传递全是map、sql语句各种嵌套子查询、关联查询7-8个表,当你看到这样的代码,估计心里顿时万马奔腾,怒火蹭蹭蹭的往头上涌去。所以我觉得可读性是第一要素。
其次,扩展性要好。这个也很好理解,现在是信息时代,流量为王,为了提高市场占有率,普遍需求变更频繁,2周一次发布都是正常频率。在这种频繁需求变更的情况下,如果代码的扩展性不高,每一次需求都需要大量改动代码,即耗费时间还容易出错,比如漏改某处地方而引起其他功能异常。所以开发过程中要注意代码扩展性,当然也不要去过分设计,让代码晦涩难懂。
高质量代码在开发中的意义?《计算机程序的构造和解释》一书提到代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。如果代码是写给机器看的,那完全可以使用汇编语言或者机器语言(二进制),直接让机器执行。所以代码一定要让人容易理解。高质量代码的好处:
好的代码读起来令人赏心悦目,比如java里的spring、mybatis等框架,读源码时常常不自觉发出惊叹,代码原来还可以这么写!
质量高意味着维护成本低,运行稳定
质量高意味着扩展性强,方便业务开发
如何去写高质量代码?对于做java的来说,我建议去看一下《阿里巴巴Java开发手册》。
手册以 Java 开发者为中心视角,划分为编程规约、异常日志、单元测试、安全规约、MySQL 数据库、工程结构、设计规约七个维度,再根据内容特征,细分成若干二级子目录。根据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。对于规约条目的延伸信息中,“说明”对规约做了适当扩展和解释;“正例”提倡什么样的编码和实现方式;“反例”说明需要提防的雷区,以及真实的错误案例。 摘自《阿里巴巴 Java 开发手册》最后推荐一下阿里巴巴代码规范扫描插件,以IDEA为例,安装如下
使用如下:
为什么网上的数据库教程全都是mysql和oracle?
Oracle
Oracle 能在所有主流平台上运行(包括Windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持,Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展Windows NT的能力,提供高可用性和高伸缩性的簇的解决方案。如果Windows NT不能满足需要,用户可以把数据库移到UNIX中。Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。Oracle获得最高认证级别的ISO标准认证.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录Oracle多层次网络计 算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。
Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。与 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。 Oracle的产品可运行于很宽范围的硬件与操作系统平台上。可以安装在70种以上 不同的大、中、小型机上;可在VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。能与多种通讯网络相连,支持各种协议(TCP/IP、 DECnet、LU6.2等)。提供了多种开发工具,能极大的方便用户进行进一步的开发。Oracle良好的兼容性、可移植性、可连接性和高生产率是 Oracle RDBMS具有良好的开放性。
Oracle价格是比较昂贵的。据说一套正版的Oracle软件早在2006年年底的时候在市场上的价格已经达到了6位数。所以如果你的项目不是那种超级大的项目,还是放弃Oracle吧。
SQL Server
SQL Server 是 Microsoft推出一套产品,它具有使用方便、可伸缩性好、与相关软件集成程度高等优点,逐渐成为Windows平台下进行数据库应用开发较为理想的 选择之一。SQLServer是目前流行的数据库之一,它已广泛应用于金融、保险、电力、行政管理等与数据库有关的行业。而且,由于其易操作性及友好的界 面,赢得了广大用户的青睐,尤其是SQLServer与其它数据库,如Access、FoxPro、Excel等有良好的ODBC接口,可以把上述数据库 转成SQLServer的数据库,因此目前越来越多的读者正在使用SQLServer。
SQL Server由于是微软的产品,又有着如此强大的功能,所以他的影响力是几种数据库系统中比较大,用户也是比较多的。它一般是和同是微软产品的.net平台一起搭配使用。当然其他的各种开发平台,都提供了与它相关的数据库连接方式。因此,开发软件用SQL Server做数据库是一个正确的选择。
MySQL
MySQL不支持事务处理,没有视图,没有存储过程和触发器,没有数据库端的用户自定义函数,不能完全使用标准的SQL语法。
从数据库行家听说的第一件事就是MySQL缺乏transactions,rollbacks, 和subselects的功能。如果你计划使用MySQL写一个关于银行、会计的应用程序,或者计划维护一些随时需要线性递增的不同类的计数器,你将缺乏transactions功能。在现有的发布版本的 MySQL下,请不要有任何的这些想法。(请注意,MySQL的测试版3.23.x系列现在已经支持transactions了)。
在非常必要的情况下,MySQL的局限性可以通过一部分开发者的努力得到克服。在MySQL中你失去的主要功能是subselect语句,而这正是其它的所有数据库都具有的。换而言之,这个失去的功能是一个痛苦。
MySQL没法处理复杂的关联性数据库功能,例如,子查询(subqueries),虽然大多数的子查询都可以改写成join
另一个MySQL没有提供支持的功能是事务处理(transaction)以及事务的提交(commit)/撤销(rollback)。一个事务指的是被当作一个单位来共同执行的一群或一套命令。如果一个事务没法完成,那么整个事务里面没有一个指令是真正执行下去的。对于必须处理线上订单的商业网站来说,MySQL没有支持这项功能,的确让人觉得很失望。但是可以用MaxSQL,一个分开的服务器,它能通过外挂的表格来支持事务功能。
外键(foreignkey)以及参考完整性限制(referentialintegrity)可以让你制定表格中资料间的约束,然后将约束 (constraint)加到你所规定的资料里面。这些MySQL没有的功能表示一个有赖复杂的资料关系的应用程序并不适合使用MySQL。当我们说 MySQL不支持外键时,我们指的就是数据库的参考完整性限制--MySQL并没有支持外键的规则,当然更没有支持连锁删除(cascadingdelete)的功能。简短的说,如果你的工作需要使用复杂的资料关联,那你还是用原来的Access吧。
你在MySQL中也不会找到存储进程(storedprocedure)以及触发器(trigger)。(针对这些功能,在Access提供了相对的事件进程(eventprocedure)。
MySQL+php+apache三者被软件开发者称为“php黄金组合”。
Oracle和MySQL的主要区别
Oracle:客户端和命令窗口,都是由用户决定内容-> conn user_name/password;
MySQL:客户端和命令窗口,都是由数据库决定内容-> use datebase;
都可以创建多数据库多用户,个人倾向于Oracle一个数据库中多个用户的形式,MySQL多个数据库多个用户形式(最好每个数据库对应一个用户)
Oracle是大型数据库而MySQL是中小型数据库,Oracle市场占有率达40%,MySQL只有20%左右,同时MySQL是开源的而Oracle价格非常高。
Oracle支持大并发,大访问量,是OLTP(On-Line Transaction Processing联机事务处理系统)最好的工具。
安装所用的空间差别也是很大的,MySQL安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能。
Oracle也与MySQL操作上的一些区别
组函数用法规则
MySQL中组函数在select语句中可以随意使用,但在Oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错
eg:
select name,count(money) from user;这个放在MySQL中没有问题在Oracle中就有问题了。
自动增长的数据类型处理
MySQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。Oracle没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。
CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE;
其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999
INSERT语句插入这个字段值为:序列号的名称.NEXTVAL
单引号的处理
MySQL里可以用双引号包起字符串,Oracle里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。
翻页的SQL语句的处理
MySQL处理翻页的SQL语句比较简单,用LIMIT开始位置,记录个数;PHP里还可以用SEEK定位到结果集的位置。Oracle处理翻页的SQL语句就比较繁琐了。每个结果集只有一个ROWNUM字段标明它的位置,并且只能用ROWNUM<100,不能用ROWNUM>80。
以下是经过分析后较好的两种Oracle翻页SQL语句(ID是唯一关键字的字段名):
语句一:
SELECT ID, [FIELD_NAME,...] FROM TABLE_NAME WHERE ID IN ( SELECT ID FROM (SELECT ROWNUM AS NUMROW, ID FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
语句二:
SELECT * FROM (( SELECT ROWNUM AS NUMROW, c.* from (SELECT [FIELD_NAME,...] FROM TABLE_NAME WHERE 条件1 ORDER BY 条件2) c) WHERE NUMROW > 80 AND NUMROW < 100 ) ORDER BY 条件3;
长字符串的处理
长字符串的处理Oracle也有它特殊的地方。INSERT和UPDATE时最大可操作的字符串长度小于等于4000个单字节,如果要插入更长的字符串,请考虑字段用CLOB类型,方法借用Oracle里自带的DBMS_LOB程序包。插入修改记录前一定要做进行非空和长度判断,不能为空的字段值和超出长度字段值都应该提出警告,返回上次操作。
日期字段的处理
MySQL日期字段分DATE和TIME两种,Oracle日期字段只有DATE,包含年月日时分秒信息,用当前数据库的系统时间为SYSDATE,精确到秒,或者用字符串转换成日期型函数TO_DATE('2001-08-01','YYYY-MM-DD')年-月-日24小时:分钟:秒的格式YYYY-MM-DD HH24:MI:SS TO_DATE()还有很多种日期格式,可以参看Oracle DOC.
日期型字段转换成字符串函数TO_CHAR('2001-08-01','YYYY-MM-DD HH24:MI:SS')
日期字段的数学运算公式有很大的不同。MySQL找到离当前时间7天用DATE_FIELD_NAME > SUBDATE(NOW(),INTERVAL 7 DAY)Oracle找到离当前时间7天用 DATE_FIELD_NAME >SYSDATE 7;
MySQL中插入当前时间的几个函数是:NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。CURDATE()以'YYYY-MM-DD'的格式返回今天的日期,可以直接存到DATE字段中。CURTIME()以'HH:MM:SS'的格式返回当前的时间,可以直接存到TIME字段中。例:insert into tablename (fieldname) values (now())
而Oracle中当前时间是sysdate
空字符的处理
MySQL的非空字段也有空的内容,Oracle里定义了非空字段就不容许有空的内容。按MySQL的NOT NULL来定义Oracle表结构,导数据的时候会产生错误。因此导数据时要对空字符进行判断,如果为NULL或空字符,需要把它改成一个空格的字符串。
字符串的模糊比较
MySQL里用字段名like%'字符串%',Oracle里也可以用字段名like%'字符串%'但这种方法不能使用索引,速度不快,用字符串比较函数instr(字段名,'字符串')>0会得到更精确的查找结果。
程序和函数里,操作数据库的工作完成后请注意结果集和指针的释放。
主键
MySQL一般使用自动增长类型,在创建表时只要指定表的主键为auto increment,插入记录时,不需要再指定该记录的主键值,MySQL将自动增长;Oracle没有自动增长类型,主键一般使用的序列,插入记录时将序列号的下一个值付给该字段即可;只是ORM框架是只要是native主键生成策略即可。
Oracle实现了ANSIISQL中大部分功能,如,事务的隔离级别、传播特性等而MySQL在这方面还是比较的弱
————————————————
版权声明:本文为CSDN博主「菜鸟正因为菜所以才无敌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_37820901/article/details/123063730
怎样有效的学习cad?
生活中我们常见的建筑工程,在此之前都需要进行CAD制图,设计好图纸之后,进行施工,学习CAD以后可从事的方向也很多,但是很多CAD新手都反映,这太难学了,该怎么办呢?
学习CAD对于老手来说,是最简单的了,老师傅总结出一套技巧,三分钟教你学会,即使你是零基础,也能学会。
一、认识CAD制图
CAD只是一个设计工具,学好CAD并不表示你就会设计了,但学好CAD对设计是有帮助的,就可以更快、更准确地表达自己的设计思想。即使只是学会CAD,也有就业机会,只是选择面比较窄。但是前提要对这个感兴趣,如果不感兴趣最好就不要学了,会很吃力的。
二、牢记常用命令
学习CAD最基础的就是要牢记一些常用的快捷键命令,这样可以提升我们的制图效率,快捷键有很多,但是主要记住部分就行了,其他的了解下。已经把常用的放在表格中了,觉得有用的话可以收藏哦。
三、学会格式转换关于CAD后期还会接触到很多相关的,例如进行格式转换,在某些情况中,需要你将CAD转为PDF、图片,这样便于打开;遇到了CAD文件打不开了,需要将低版本转换为高版本。这些都是问题,因此还要必备一个迅捷CAD转换器,支持批量转换。
四、图层用法
相信很多人都知道PS,它就是由图层组成的,但是大多数人不知道图层是什么意思,形象的给表达来:新的课本封面一般上面都有一层透明纸,这就是像图层,在上面写字,封面上其他的地方不会被覆盖。
0层是默认图层,打开CAD就能画,白色是0层的默认颜色;
“1” 层:中心线红色;“2” 层:阴影线黄色;
“3” 层:标注线 绿色;“4” 层:虚线 浅蓝色;
“5” 层:图框外框线深蓝色;“6” 层:双点划线洋红色;
“7” 层:零件轮廓线白色;“8” 层:螺纹 红色;
“9” 层:图框线绿色;“10”层:图栏文字绿色;
五、勤于练习
理论与实践相结合,即使自己会制图了,也要经常练习,达到熟能生巧,练习不一定仅仅局限于设计图纸,日常可以找一些练习图纸,下面为大家准备几张,看看这些对于你来说,有没有难度。
以上的就是学习CAD的技巧,坚持下去吧。
trim函数?
php提供的,过滤字符串空格。