php怎么设置符集,就是自己写不出来?
能看懂代码,就是自己写不出来,很可能这只是你认为的“懂了”,并不是真正的懂了。
01. 细节能懂,但是整体不懂每个编程语言的语法是有限的,如果是常用语法的话更是没多少了,一个项目中,随便拿出几行代码你可能知道是什么意思,但是并不能说:你能看懂每一行代码,就能看懂整个项目。你可能还需要知道:
项目是做什么用的?项目用到了哪些框架和组件?代码是如何分层的?
项目分成了几个模块?每个模块的作用是什么?模块和模块之间是如何配合工作的?
细节上,至少要了解方法的作用?哪些地方可能调了这个方法?如果修改方法的逻辑,是否会对项目其他功能造成影响?
如果是业务相关的项目,对数据结构的了解,也是非常有必要的。
02. 代码能懂,但是业务不懂如果是业务相关的项目,脱离了业务去看代码是不切实际的。
业务流程是怎么样的?系统在整个业务流程中处于什么位置?上下游系统都有哪些?是如何交互的?
业务模块都有哪些?流程是怎么样子的?如果有前端页面的话,需要按照前端--后端--数据库这个完整的流程去学习。
代码上有些看起来不合理的地方,也需要结合业务场景来看;反过来也一样,代码看起来写的很好,但是业务流程不一定对。
03. 看的懂,写不出来怎么办很多外行人,甚至程序员新手,会认为写代码最重要的是“写”,其实想比写重要的多,所以如果你写不出来代码的话,先反思一下自己是不是拿到需求之后就直接动手写代码了?
个人认为,在正式敲代码之前,你还需要:
新功能还是对老功能的修改?
如果是新功能的话,你需要从项目整体考虑这个功能;
如果是老功能完善的话,需要对这个功能有充分的了解,本次修改涉及哪些代码?对原有流程有哪些改变和影响?
新增一个方法前,先确认有没有现成的方法可以复用?修改一个方法之前,先确认会不会对其他功能造成影响?
如果代码分了多层,需要确认在哪一层进行修改,不要破坏项目原有的结构;
甚至变量、方法起名,你也需要遵守代码规范,看看项目其他的变量、方法起名是遵照的什么规范。
总之,要想写出好代码,不仅要了解细节也要了解整体,不仅要了解技术也要了解业务,写之前要多想,设计要充分。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。web前端初学者如何系统学习JavaScript?
JavaScript给初学者的印象总是那么的“杂而乱”,相信很多初学者都在找轻松学习JavaScript的途径。在这里给大家总结一些学习JavaScript的经验,希望能给后来的学习者探索出一条“轻松学习Js之路”。
JavaScript给人那种感觉的原因多半是因为它如下的特点:
A:本身知识很抽象、晦涩难懂,如:闭包、内置对象、DOM。
B:本身内容很多,如函数库、对象库就一大堆。
C:混合多种编程思想。它里面不但牵涉面向过程编程思想,又有面向对象编程思想,同时,它的面向对象还和别的编程语言(如:C++,JAVA,PHP)不大一样。就好像又是新的一样,让你对曾经学的面向对象产生了怀疑......
D:辛苦学习后又看似和实际应用脱节。通常学了很久的JavaScript基础之后,变量、函数、对象你也都略知一二,但一到公司开发项目的时候,却又难以下手。因为公司在开发实际项目的时候通常都是直接用它的衍生库,如:jquery,angular,boostrap,amaze,layui,ueditor等,而这些库又多如牛毛,同时还有自己的难点。让你都不知道该学哪个好,甚至都怀疑自己学的是不是JavaScript了,好像有多个版本的JavaScript一样,总是学不完......
那么,如何系统学习JavaScript呢?
一、入门1:熟悉DIV+CSS布局
使用DIV+CSS布局标准网页,可以使前端XHTML代码更少、结构更清晰,这有利于轻松用JavaScript操作DOM
比如,要展示一个3行3列的列表,如果用传统的表格布局,现在要你用JavaScript动态生成这个列表,那么就需要一个循环嵌套
如果采用li结构加CSS浮动布局,一次循环就好了。当然,WEB标准化不是一定不能使用表格,我的意思是结构清晰的XHTML更易于把JavaScript效果或功能整合到项目中。
2:掌握几种开发测试工具
作为一个开发人员,熟悉测试工具是必须的,这有助于提高你发现问题和解决问题的效率,对于特别大的项目更是如此。JavaScript学我推荐用Hbuilder
3.熟悉JavaScript每一个方法的作用
这一要求听起来似乎有点不太实际,我想这个要求对于像C#、JAVA这些大型语言来说确实是,因为这些语言类库实在太庞大了,相信没有人可以全面记住它,而且也是没有必要全部记住,比如用JAVA做网页与手机开发所关注的类库是不一样的。
而JavaScript则不是,它的内置方法函数真的不多,先全面熟悉一下,开发起来也将得心应手,而大部分方法都是JavaSCript框架中用其基本的函数实现的。
比如trim()这个很多语言都有的去行头行尾空格的方法,就是在jQuery中实现的。
再比如,如果你是从其它比较强大的语言转过来玩JavaScript,你又可能认为JavaScript应该有MD5加密的方法,当然这也是没有的,但有人用JavaScript实现了这样的方法,即JavaScript MD5。说到底JavaScript内置方法少的可怜,但很多牛人写了一些新方法增加JavaScript功能,比如prototype框架主要是对JavaScript基础函数进行原型扩展的。
4.了解DOM编程
了解DOM编程算是学习JavaScript过程必须掌握,且比较重要的课程,因为JavaScript除了编写一些纯数据处理的逻辑外,更多的是在动态更改XHTML的结构和内容,以达到界面动态更新的目的,而这些工作都要依赖DOM编程。jQuery框架在这方面封装的相当好,提供了丰富的DOM操作方法,可以让你轻松找到页面任何地方的一个DOM节点(XHTML标签),然后进行相关操作(增、删、改、查)。对于有过用其它语言操作XML文档经验的朋友,相信这一块很快上手。
5.接触并使用AJAX
Ajax的优点就是异步交互
AJAX对于用户以及服务器来说都是有好处的,对于用户,提供更好的用户体验,最典型的一个应用场景:注册页面的用户名可用性预检测,传统的可能会遇到这样的问题:用户填写了一堆资料后提交表单,结果被服务器告知这个用户被注册了,要用户重新填写资料注册,这对于大型多用户网站那是很致命的,因为用户输10个用户名可能有一半已被使用了。对于服务器来说,减少网页流量,因为AJAX后,一般是按需加载数据的,不会因为局部更新而重新加载整个页面。比如一个网页占三屏高,我们可以默认只加载第一屏的内容,当用户拉动滚动条往下的时候,再加载二三屏的内容。另外像WEB在线地图应用也是AJAX使用的典范。
二、提高1. 深入理解JavaScript this关键字
JavaScript this的作用与指向跟很多真正面向对象的开发语言是有很大差别的,它不始终指向当前对象,是会变化的。如果不注意这个问题,就有可能遇到看似没错的代码报错或不执行等问题。
2.学习JavaScript OOP编程
OOP是个好东西,它使程序员思考问题更有组织性,代码的组织也更清晰。JavaScript 也可以OOP,但与一些传统的OOP语言同样存在较大差别,所以要真正用熟JavaScript OOP也是需要下点功夫的。
3.了解闭包
JavaScript闭包也是被谈得比较多的一个话题,闭包使JavaScript变量作用域变得复杂起来,但这一特性又使这门语言变的更灵活了。
4.学习规范开发
团队精神相信大家是听过不少了,就职一个公司做开发,当然离不开团队,团队要想合作愉快,每个成员的编码必需符合一定规范,这也是每个公司对程序员的基本要求。关于规范通常指变量命名、文件组织、注释规范等,这方面知识与其它语言的规范是有相通性的。
5.找本算法的书读一读
我认为学会并使用一门语言并不是什么难事,难的应该是用语言这基本的语法与语句去解决一些复杂的问题。要解决一些复杂的问题,可能会用上一些算法,有些算法实现可能是一个团队在做的,比如中科院中文分词的具体实现,另外像游戏常用自动寻径A*算法等。也许你认为你不可能在JavaScript开发上遇到这么复杂的问题,其实这还要看你在做什么项目,如果你是在开发大型网页游戏,通常面临更多具有挑战性的难题,如果你有读过一些算法书籍,了解一些常见问题的解决方法,在开发过程中自然会如虎添翼。另外,熟悉算法显然对于你日后接触其它开发语言也是有帮助的。
三、习惯1. 兼容、BUG问题做好笔记
CSS与JavaScript浏览器兼容问题最好做好笔记,因为这些问题,或者说BUG是比较诡异的,这些问题浏览器不会提示你错在哪里,IDE也不会提示你,特别是CSS兼容问题,这就会导致你在开发过程碰到这样的问题会卡老半天得不到解决。即使之前解决过同类问题,以后可能又会碰上,结果之前没有做好笔记加强记忆,注定你要再受罪一次,因为这些兼容问题不是一两个,临时记忆效果是不明显的。以我经验,很多问题是在IE6下发生的,现在IE6连微软自己都希望加速它灭亡,这对于前端开发的我们来说当然是一个好消息。
2.阅读优秀的代码,比如jQuery
阅读优秀代码绝对也是自我提高的好方法,这不仅可以了解优秀代码的组织规范,更可以了解一些功能的实现思路。比如jQuery就是一个非常值的学习的JavaScript框架。当然了,要阅读这样专业的JavaScript框架,JavaScript基础要扎实,不然看的过程中会遇到太多疑问,甚至对自己的信心也是一种打击。
注意1. 在JavaScript入门之前避免直接使用JavaScript框架做开发
如果你没有任何JavaScript基础,请不要直接使用JavaScript框架做开发,我认为这可能会误导你对一门语言的认识,比如你直接使用了jQuery用点连起来的语句写法,你是否会认为这是JavaScript语法的一种呢?再比如你使了prototype你不要把框架扩展后的基类方法认为是JavaScript内置的。我认为JavaScript框架是用来提高效率的,它绝对不是JavaScript入门应该学习的。
2.网上找的很多例子可能不是跨浏览器兼容的
有很多JavaScript效果源码是N年前某网友写的,N年前是IE的天下,于是一些前端懒得解决脚本跨浏览器兼容问题,使写出来的脚本只适用于IE。当你得到这样的一段代码,请不要说垃圾,也不要为此发牢骚,因为这些代码并不是没有一点价值的,如果你了解JavaScript跨浏览器兼容问题,相信你可以很轻松通过少需修改使代码有更好的兼容性。
学程序闭门造车肯定不是行的,多多逛逛论坛,如果时间允许的话可以加几个群多交流技术问题,每天做好便签笔记,经常把之前写的代码和现在写的代码比较一下你会很开心(发现自己再提高)!
程序员是怎么记住许许多多的语法的?
首先介绍一下,我是一名计算机非相关专业的大学毕业生,在毕业之后通过培训机构进入了程序员这条道路。
在刚进入工作的时候,由于相关知识的匮乏,基础也不扎实,导致面试屡屡碰壁,后来进入了一家做网站的公司,依稀记得当时一个月的薪资是1800元。工作当中主要是通过织梦去做企业站,面对各种各样的标签,不仅理解不了,更是记不住,这时我就将常用的标签记到记事本上,正所谓好记性不如烂笔头,日子久了,用的多了,就知道这个标签是表达什么作用了。
客户会提出不同的页面需求,实现不同的交互效果,这部分是要用到jquery,我们当时学习的时候也就一个周的时候,其实也就听了个稀里糊涂,那要怎么办呢?我就每天在工作之余跑到百度知道,去提问各种自己遇到的问题,等待大家的解答,更重要的是,我去搜索相关的问题去给别人解答,我不会的我就去百度查资料,时间一长,我收到了别人帮助我的知识,同时我也帮助到了别人,对我自身技术的提升是个很重要的过程。
本身我是做php的,自己写后台,自己写接口,自己对接口,还要调试各种前端问题,梳理效果图。要面对各种各样的功能点,我习惯在处理完一个问题之后,整理成相关的demo,这样我在下次使用的时候可以提升工作效率,比如微信、支付宝三方登录,又或者如何实现无页面刷新上传图片等等常见功能。
常用到的数据是mysql,从配置数据库到数据库的增删改查,优化数据格式,缩短查询时间,处理数据高并发,每次都是在失败中总结经验,遇到问题很正常,重要的是掌握处理问题的方法。
对于我们程序员来说,处于互联网这个日新月异的时代,每天都在面对不同的技术,之前是PC的时代,现在已经成为移动端的天下。
前后端分离、VUE、ANGULAR、小程序、响应式、APP开发、H5页面等等这些移动端的前端知识,我们需要去了解需要去掌握,对于后台来说,仅仅逻辑上的算法功能的实现就已经让人头大,还要时刻保持学习的头脑,总的来说是非常辛苦的。
都说兴趣是学习最好的老师,我是把写代码当成去解一道数学方程式,在出结果的那一刻,心里就是满满的收获感。曾经我写一个抽奖功能,大致功能就是在52张牌抽三张,看是同花、是顺子、是豹子的概率,并且可以手动指定中哪一张牌,我写了一天,应该有上千行代码,最终实现了这个功能,那时一天的疲惫感都没有了。
总结一下,记住语法的几点:
记到记事本,这里我也给大家推荐我正在用的一款笔记叫做"有道云笔记"。只有理论知识,光说不练假把式,只有在项目当中常常用到的语法,这种你才会记得更牢,将常用的语法记下来,时不时的去复习复习,正所谓好记性不如烂笔头。去看别人的代码,有些语法在你的项目当中可能用不到,那么你也就不清楚这个函数的语法使用,读别人的代码对自己能力的提升有很大的帮助,因为每个人的逻辑思维不一样,代码格式也不一样,如果你能没有困扰的明白别人的意思,那么恭喜你,你的能力有提高一级。专用语言的特点?
1.c语言
是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到c语言,始于编写程序软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。
优点:简洁紧凑,灵活方便,运算符丰富,数据类型丰富,c是结构式语言,语法限制不太严格,程序设计自由度大,生成目标代码质量高,程序执行效率高。
缺点:没有面向对象编程功能(OOPs),运行时类型检查是不可用,C不能够在一个范围内再次使用相同的变量名,构造函数和析构函数不可用,必须通过方法或者以其他方式来手动实现变量的析构和构造。
2.c++
是在c语言的基础上开发的一种面向对象编程语言,应用广泛。它的主要特点表现在两个方面:一是尽量兼容c,二是支持面向对象的方法。它操持了c简洁,高效的接近汇编语言等特点,对c的类型系统进行了改革的扩充。
应用领域:游戏,科学计算,网络软件,分布式应用,操作系统,设备驱动程序,移动设备,嵌入式系统,教育与科研,部分行业应用,其他应用。
3.c#
是微软对这一问题的解决方案。C#是一种最新的、面向对象的编程语言。
主要特点:简单,现代,面向对象的,类型安全,相互兼容性,可伸缩性和可升级性。
主要领域:web应用,客户端应用,分布式计算,人工智能,各类游戏。
4.visual 语言
一种直译式程序设计语言。名称字面为意思“初学者的全方位符式指令代码”,设计给初学者使用的编程语言,在完成编写后不须经由编译及链接等手续,经过解释器即可运行,但如果需要单独运行时仍然需要将其创建成可执行文件。
特点:(1)面向对象和可视化的程序设计。
(2)事件驱动的运行机制。
(3)结构化的程序设计语言。
(4)多种数据库访问能力。
(5)提供了功能完备的应用程序集成开发环境。
(6)方便使用的联机帮助功能。
5.perl 语言
是一种解释型的脚本语言。Perl语言由Larry wall干1986年开发成功。当初的目的主要是在Unix环境下,用于处理面向系统任务而设计的脚本编程语言。Perl对文件和字符有很强的处理、变换能力,它特别适用于有关系统管理、数据库和网络互联以及WWW程序设计等任务,这样使得Perl称为系统维护管理者和CGI编制者的首选工具语言。
特点:
1. Perl的解释程序是开放源码的免费软件,使用Perl不必担心费用。
2. Perl能在绝大多数操作系统运行,可以方便地向不同操作系统迁移。
3. Perl 是一种能完成任务的语言。从一开始,Perl 就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。
6.java
是一门面向对象编程语言,不仅吸收了c++语言的各种优点,还摒弃了c++里难以理解的多继承,指针等概念,因此java语言具有功能强大和简单易用两个特征。java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
特点:简单性,面向对象,分布性,编译和解释性,稳健性,安全性,可移植性,高能性,多线索性,动态性。
应用:android应用,在金融业应用的服务器程序,网站,嵌入式领域,大数据技术,高频交易的空间,科学领域。
7.Objective-C
通常写作ObjC或OC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。
特点:1、动态运行环境,适合UI编程
在Objective-C中,如下语法并非单纯的函数调用,而是向某对象发送消息。
2、方便与C/C++混合使用
Objective-C中的C扩展部分,使用符号@开头。比如@class、@interface、@"Hello,World"。而它的消息发送语法则是使用中括号而不是圆括号。
3、运行速度相对较快
Objective-C编译后是机器原生指令,运行时环境也小而紧凑。它采用引用计数的内存管理方式,并引入ARC。ARC比GC更容易引起编程错误,但却比GC快。而在性能很重要的场合,Objective-C也很容易直接调用C/C++代码。相对于其他使用虚拟机、采用GC以及间接调用C/C++的移动平台,速度优势非常明显。
应用:ios操作系统,ios应用程序,mac os x操作系统,mac osx上的应用程序。
8.PHP
是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到htmL(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
特点:
1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比,
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
3. PHP支持几乎所有流行的数据库以及操作系统。
4. 最重要的是PHP可以用C、C++进行程序的扩展!
9.python
是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
Python是纯粹的自由软件, 源代码和解释器CPython遵循 GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
特点:简单,易学,速度快,免费、开发,高层语言,可移植性,解释性,面向对象,可扩展性。
应用:
系统编程,图形处理,数学处理,文本处理,数据库编程,网络编程,多媒体应用,pymo引擎,黑客编程。
10.Ruby
是一种简单快捷的面向对象(面向对象程序设计)脚本语言,在20世纪90年代由日本人松本行弘(Yukihiro Matsumoto)开发,遵守GPL协议和Ruby License。它的灵感与特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp 语言。
优点
语法简单,普通的面向对象功能(类,方法调用等),特殊的面向对象功能(Mixin,特殊方法等,操作符重载,错误处理功能迭代器和闭包,垃圾回收,动态载入,可移植性高。
为什么部分程序员喜欢在loop写?
我学的是PHP语言,虽然跟C++语言不是一个量级的,但是,很多语法是通用的,这个问题就是其中之一。所以,我来回答一下吧。
我在PHP开发时,也经常用到循环语句,比如:for循环语句,就可能会用到 ++i 或 i++。学过编程的应该都知道,++i和i++都是表示递增的,就是说,每循环一次,就加1。表面上看,这2个表达式是一个意思,但是,在正式使用时,还是有一定的区别。
使用i++,在执行循环语句时,会先执行循环语句里的内容,然后再会给 i 递增加1;使用++i,在执行循环语句时,会先给 i 递增加1,然后才会执行循环语句里的内容。到底是使用 i++ 还是使用 ++i,还是要看具体情况而定。
如果觉得对你有帮助,欢迎【转发】和【点赞】。
如有不同意见,欢迎发表【评论】。同时,欢迎【关注】我,观看更多精彩内容。