正文
什么是数据
无论是学生还是初学者,或者是有经验的中级和高级开发,都要有自信和克服困难的毅力。从大学毕业到现在,接触了很多的Java项目,发现如果接触到的项目越多,自己大脑里积累的各种知识经验就越丰富。学习技术不能妄自菲薄,也不能狂妄自大,要脚踏实地,一步一个脚印地走下去。比如Java exception异常,对于各种项目中的出错信息,要一眼就能辨别真伪,究其根源。当接到一个项目的需求,大脑里一定要有自己实现功能点的思路,就是怎么做,如何做,当项目收尾的时候还要想想为什么要这么做,这也是一种沉淀积累。高手在民间,清心寡欲才能学好技术。
做项目的过程分为:需求分析,项目设计,编码,测试,运维。中级开发该做的事,就是实现功能,做需求,改bug。建表,实体设计,controller,service,dao,一步一步来,以数据处理为核心。
对于“数据”这个关键词,要有自己的理解。数据是什么,在开发中是如何对待数据的。其实数据在面向对象的编程中是类对象,在面向过程编程中是叫结构体的术语,都是描述数据的一种计算机编程概念。数据分为简单数据和复杂数据,简单数据就是各种编程语言中的基本类型数据,而复杂数据是基本类型数据的组合,即复杂数据是由基本类型数据组成的。
说到数据,什么是数据类型。数据类型是描述数据的一种方式,对于Java来说,基本的数据类型有byte/boolean short/char int/float long/double 八种数据类型。定义数据类型是为了什么,因为数据有大小,计算机内存容量有限。对于各种类型的数据,定义了不同的处理方式api。分类检索,空间复用,这是计算机架构师每天都要想的事。现在普及的计算机是32位的和64位的,代表着处理数据的能力。
数据建模,就是物理世界网络化,虚拟化,通过计算机的方式来描述的现实世界所经历的事情。这也叫项目设计,一般是这样做实体表抽取的。比如“去超市购物,使用购物车购买商品,在收银台给购买的商品生成订单,结账离开”,这就是需求。看到这句话的时候,就要使用想象力,思考问题。看看这个业务逻辑涉及到哪些实体表,表里需要确定什么属性字段。对于这句需求,可以使用 主 谓 宾 定 状 补,把句子中的实词和虚词区分开,做分析,抽取句子中的实体名词形成各个实体表。虚词一般都是要剔除掉,实词就是实体表。动词 宾语名词就是方法名,描述的是做什么。最后一步建立表实体与表实体之间的关联关系。关系型数据库,主键,外键,字段的确立等,这些都是建表的一些常识,说专业点就是建表三大范式。
用户表是基础表,是所有表的父表。主从表,左右表,左关联,右关联,这些编程术语很重要。每次看到一个需求,首先做的是把数据拿出来。写sql查询,组装好基础数据是编程的第一步。数据库数据映射到后台数据再渲染到前端数据。读写数据,数据入库出库,数据采集和数据存储,都是围绕着数据为中心的,开发从此开始。
数据结构和算法
写代码的时候大脑想的总是数据结构和算法。大学学习C语言的时候,在书上看到的,有位编程大师说的就是,编程就等于数据结构加算法。C语言只有数组这个数据结构。有人说不是啊?不是还有链表,不是还有栈,不是还有队列吗?其实这只是表象,底层都是以数组的形式组织设计的。C语言在编程的时候只会使用到数组,就像弱类型语言JavaScript一样,都只用数组。
那什么是算法呢?又了解什么是api吗?关键字呢?接口呢?每种程序设计语言各有千秋,都有自己的数据结构,很多原型api都是由一大堆工程师开发出来的。关键字是程序设计大师苦心经营的一些使用频率较高的标签,代表着不停的含义。接口有很多种称谓,可以说是方法,也可以说是函数。记住一点,就是不要重复造轮子。造轮子太难,要尊敬工程师,不能践踏他的人格。
对于Java这门语言来说,总结出这几点核心的编码思想。数据结构一般是有list,set,map,String,StringBuilder,算法其实就是考怎么使用if条件判断语句。对于数据量过大的情况,该怎么办?肯定要遍历循环才能找到数据,这里就会有用到for循环语句while循环语句。了解递归吗?能使用递归去想想循环遍历是怎么实现的吗?当找到数据的时候,怎么停止怎么返回数据呢?计算机编程就是内存寻址操作,使用变量来接收值代表值的一个标志。在内存变量会编译成一堆二进制的内存地址,指向在该地址所属的值存储区。
数组是所有数据结构的基础。计算机的硬件内存条里面分配的就是运行内存。在Java中,Java虚拟机封装了很多东西,有垃圾回收器,有可以跑字节码文件的。它在很多机器上面都增加了一层组件,对于不同的操作系统有不同的JVM,相同的Java源代码编译成字节码文件之后就可以跑在虚拟机上面。一次编译到处运行。开发工程师很辛苦,前人栽树,后人乘凉。一个人的力量有限,协同合作才能共赢。计算机里的栈内存是自动分配回收的,效率很高,但是内存小。栈内存存放的是一些基本类型的数据。堆内存heap里存放的是复杂数据类型(引用数据类型)。数组是以元素为单位,元素以字节(元素第一个字节为存储数据的地址)为单位,一个字节等于8比特位(10000100),这些比特位就是数据在硬件中的最终表现形式。
编程是需要很大的想象力。无论是作为哪个行业的工程师,想象力能使成为真正的工程师。刚开始的时候,不断的练习,不断的测试,不断的记忆。当开始思考的时候,说明在成长,当开始使用想象力的使用,说明写下的东西是的,无所谓好坏,都可以创造一定的价值。学习数学的学生喜欢练习,学习物理的学生喜欢想象力,学习机械的学生喜欢测试,学习计算机的学生喜欢记忆,学习软件工程的学生喜欢想问题,学习自动化的学生喜欢设计,而信管的学生喜欢管理。
算法设计需要消耗大量的脑细胞。每次写一个算法,有的时候需要趟很久。测试算法太累,调试算法太烦。写代码多了的时候,需要不断的总结规律。最近发现对象object也是一种数据结构,它的表现形式就像是map一样,在内存中都是以key-value的形式存在。每次写算法的时候都要想想是使用什么数据结构更好地装载数据,然后再使用什么if条件判断语句判断数据的流向。碰到集合一定要使用遍历,不遍历集合怎么会拿到数据呢,怎么去处理数据呢?当然数据量大的时候,就需要使用很多数学的知识计算,使用很多的设计思维提高性能。
计算机思维,欧洲人的思维,美国人的思维,亚洲人的思维,中国人的思维,想问题一样吗?学习编程,思维的养成,只在中国能行吗?
函数式编程
“函数式编程”这个概念是从一本书上看到的,其实也是那本书的名字。翻完了整本书,还是不是很理解这个概念。可以说一个概念那就是组件式编程,组件(component)和函数(function),这只是的一点理解。
什么叫做函数?在数学书中的函数和计算机编程中的函数那是不一样的,但是都有相同点,既传递一个参数值进去的时候得到的是惟一的一个输出值。数学也是一门语言,它是处理很多复杂问题的工具。计算机编程就是解决项目复杂度。这里涉及到一些基本的面向对象的概念,封装继承和多态。在写代码的时候,有些比较老道的经验就是代码一旦长了的时候就需要封装。封装是为了简化,各个抽取出来的函数称之为组件。当要调用的时候传递一些必须的参数值得到相应的返回值,这个处理过程一般不用看到就是封装。继承是空间复用。把重复使用的空间抽取成一个公共的模块,相互引用,有内存空间复用和代码空间复用两种方式。多态是接口名称复用,一般把相似的接口名称抽取成为一个通用接口,实现的时候提供不同的自定义代码块实现过程即可。
在写数据库sql查询代码的时候,一般都是把查询语句写成语句。为了增加代码的可读性,可以把语句写成函数式的。SQL语句的每一个关键字都可以看做成为一个函数,函数是由函数名称和函数形参组成,还有就是函数体用来处理数据使用的。
函数式编程,组件化编程。做项目像盖房子,也像造飞机。一个人是不能完成这个艰巨的任务的,轮子可以买,还必须买。服务与被服务,取长补短,优势互补。
对前端开发的一点理解
接触前端是在大学刚毕业进入的一家公司,是在建设银行做后台开发工程师。全栈工程师是对开发工程师的最高要求,随着各种js框架的开源,前后端分离成了常态。那个时候在建设银行刚开始做开发,不会画页面,也不会写后台代码。之后就慢慢地知道怎么写前端页面,其实前端js框架的各个组件都已经提供在项目中,程序员之后拿来用就可以。使用js框架前端画页面是不需要写代码的,要做的就是使用该框架画出的一些原型普通页面为模板,拷贝复制到自己自定义的页面,在这之上填充解析数据渲染页面。那学习前端要不要敲代码呢?那肯定要,而且要天天练习。只有碰到问题多了,解决问题的方式熟练了,才有自信去坐更高级的位置。
在北京做了一个月多月的后端开发,只是做一些bug修复工作。之后接到一个需求是画登录页面,一点也不简单。前端页面的设计,开发工程师需要图片资源。学习前端开发需要学HTML,css,JavaScript,这些是基础知识,之后需要学习一些组件化的框架如Vue等。
怎么画前端页面?HTML的dom元素,有很多属性,type,class,name,id,width,hight,border,padding,margin,font-size,color,backgroud,float,dispaly,line-height等。根据编码习惯,一般是这样画页面。可以把li当做Java里的list,div当做set,td当做map,font当做String,span当做StringBuilder,img当做tree,form当做class, input当做filed。编程开发是数据结构加算法设计,前端页面是不需要算法设计。根本没有什么条件判断,画页面就是看怎么使用HTML基础dom元素装载数据。画好页面之后,需要对代码进行优化,把很多相似的属性抽取出来就形成了css。通过引入JavaScript脚本,可以动态的获取数据渲染数据或者是做一些数据特效。
前后端分离,模块开发,分工明确,效率更高。
后端开发工程师需要了解的数据库知识
作为以为Java开发工程师,写数据的查询SQL是必备的技能。在我们的日常生活中,是否统计过读数据和写数据的频率。以我的开发经验来说,查询数据的操作语言是多于写数据的。有的信息系统,数据只初始化一次,甚至是服务一辈子。
我接触过很多的web开发系统,都是为了管理数据而生存的。要产生数据,才能管理数据。数据从何而来,人造能行吗,可以,但是要相信他。在现在,还是未来,采集数据的方式是多种多样的。服务器是提供数据服务的,而客户端是获取数据服务的。反过来说,客户端是获取数据(做数据采集),而服务端是提供数据(做数据存储)。现代社会,什么都是数字化的,请小心你的手机。
客户端和服务端相互作用,相互依存,数据在两者之间流转。客户端是服务端,服务端也是客户端,只因为数据而生存。我们只要明白一点,数据分布多种多样,能量没了所有都没了。
做程序开发,程序员需要对需求进行深入的理解。每次遇到一个新的系统,需要在最短的时间内熟悉系统到底是做什么的,在有限的原型或者是测试页面中找到应有的答案。接下要做的就是熟悉源码,记住,不要重复造轮子。使用公司现有的配件做相应的生产,你是工人,即使是工程师,也不能心由相生。
做需求,理解需求是重要的第一步。看原型,知道需要完成什么效果。熟悉需求文档,确定后台接口需要涉及到的数据库,数据库表,查询sql(怎么查询产生相应的数据)。
对于一个原生的项目,建表是第一步。怎么建表,主从表,左右表,主键外键的确立,各种表字段的确立,表之间的关联关系(一对多,多对多,一对一)。数据量大的话,要考虑是否使用分布式存储,索引库的建立。
后台工程师写查询SQL是做开发的第一步,写存储过程plsql那更难。难的东西性能都更好,因为简单。计算机科学底层的东西组件相当简单,但是使用起来却十分艰难。你见过现在科学家使用CPU指令进行编程的吗?好像很少,但是你能放弃他吗?写SQL查询一般是需要确立业务逻辑需要管理的业务表,首先熟悉各张表的字段逻辑,关联关系。确定那张表是主表,哪张表是从表。我写代码的规则是,主表关联从表,调用基础api,where过滤,group by分组。难一点是case when的使用,因为这是sql语句内在的算法(相当于Java的if)。SQL有数据结构吗?有的是,只不过不提供给你调用。子查询是相当于新建了张表。当基础api不够的时候,提供了一个新的存储过程库plsql。这就是语言,要熟练的使用他,适用他,掌握他,可以为你提供很多的好处。
数据库是一本书,也是一座图书馆,很大,盖起来都难。
后台前端工程师
后端开发接触前端开发的程序员,可以成为全栈工程师。前端也可以写后台,学习的知识技能要更多。后台工程师的分量更重,前端更轻。JavaScript是动态弱类型语言,没有强制的类型检查,错误校验之类的。现在比较智能的IDE工具支持JavaScript 的编写,不能很好地进行调试编译。Java后台工程师使用Java进行数据的处理,开发工具对静态强类型语言的要求更严格,会减少编码出错的可能性。
现在开发一个项目,需要有客户端,后台数据处理端,数据持久化端。一般后台服务器负责数据处理和持久化,前端只是对数据服务的不同形式展示。前后端分离的开发模式现在在企业存在比较普遍。
Java的后台框架很多,JavaScript的前端框架现在也很多。学习语言开发,肯定要学习语言的基础,在企业级的开发中使用的大多是成型的开发框架。开发框架也是企业开发出来的产品,要生成利润,使用开源框架或者是公司定制框架都是存在的。
刚毕业的时候,接触过前端开发框架,编写前端页面。开发效果很好,总算是看到页面效果了。后台有很多的代码业务逻辑需要处理,数据的处理过程没那么简单。后来开源的前端框架 ext, easyui, bootstrap, layui, vue, 使用最多的现在是 vue。
后台前端工程师,Java后台转前端很少,一般是不会忘记后台开发。工具的使用和代码的调试,程序异常报错的处理经验,要靠开发去日积月累。
分布式集群与多线程高并发
后台数据的处理语言有很多,Java是对前端采集的数据的一种比较常见的开发语言。互联网移动客户端的用户量特别大,大量的数据处理需求应运而生。可移动嵌入式设备的表现形式很多,如PC端,手机移动端,智能手表,Google 眼镜等。Server2client 的互联网开发模式比较常见,有一种新的数据服务模式 end2end 。端到端的数据服务模式也应该要回归到一个最终的服务器。编程就是处理数据,数据像书籍一样,很重要,要入库编辑处理。
分布式集群的解决方案可以处理大量的数据累积。多线程高并发会增大单机的服务器压力。每台服务器压力测试会有一个压力阀值。当一台服务器的cup处理压力太大的时候,需要做分布式处理。为了提高数据的处理效率,需要做集群。主机和从机的设置,集群节点压力值的算法测试编写。当一台主机出现故障的时候,需要有合适的从机替换升级为主机,再进行新一轮的主机和从机的挑选。每个集群的主机为处理数据的主要服务器。很多市面上的管理集群节点的框架从2017年陆续出现,国产的 dubbo zookeeper, 国外的像 springcloud 。
处理多线程高并发的方式很多。时间和空间的考量,以时间换空间,或者是以空间换时间。同步锁和分布式锁的应用,要综合考虑性能的问题。同步锁 synchronized 的使用会使得线程排队阻塞,损失时间性能。用户体验响应超时是不好的选择。分布式锁就像去火车张排队买票一样,把每一个购票者当做一个用户线程,占有一定的内存空间。排队购票是必须的选择。每个火车站的窗口的开设,每个购票窗口处理票务业务处理,到底一座城市需要有几个火车站,每个火车站需要开设几个购票窗口。算法的设计就是处理类似的计算问题,要计算很多因素,人流量是最大的统计数据处理情况。
小程序的流行,因为简单而设计。简洁即是美。小程序开发周期较短,数据流量平台要经过微信的支持。每次到一个新的城市,首先是要询问地铁的购票乘车小程序,用得多了就会下载相应的APP。
可移动嵌入式设备
可移动嵌入式设备是数据客户端的一种表现形式。软件的代码编写之后是运行在服务器之上,服务器的数据为客户端提供服务的模式为服务器客户端模式,server2client 架构。服务器可以是大型的机器,也可以是小型机,主要看数据处理量和用户量的大小。一台计算机其实就是一台简单的服务器,计算机的存在是使用中央系统处理器处理数据之后存放在数据存储零件中,如寄存器,运行内存,磁盘等。
只要一台机器有CPU芯片,能够接收数据,处理数据,传输数据,是比较智能的可移动嵌入式设备。如果一台机器能够安装操作系统,那这个机器设备具有的功能就像一台手提电脑一样多,具体成型之后会是什么表现形式,要看设计师的构想。
可移动嵌入式设备是数据终端。客户端主要的作用就是显示数据,像现在的移动智能手机安装操作系统如 Android 或者是 iOS,能够做很多的数据采集工作。智能手表很少有做数据采集的操作接口,很多扫描仪终端其实也是可移动数据终端。数据终端操作灵活便捷,可移动性强,适合随身携带或者是在各种操作车间进行工作。
计算机PC(个人电脑端)也是数据终端,但是屏幕比较大。存在即是合理的。工作人员上下班,都需要用到电脑。电脑是办公的必备工具,使得工作效率和生活效率都得到很大提高。机器的作用让生活方便快捷。
硬件和软件的存在与组合,使得一个产品的价值得到很大的升值推广空间。硬件很硬,软件很灵活。应用程序运行在机器上面,就这个过程就是十分伟大的操作。机械组件和编程语言编写的组件都是十分类似的概念。组装一台机器,开发一个项目,时间可长可短,看空间大小。
大数据
写程序软件处理用户量和数据量。用户量一大,并发量线程安问题就会出现。软件一开始是使用C/S的应用架构模式。客户端和服务器端通过互联网相互访问。Windows的客户端软件通过C 编写出来,不同的操作系统支持的客户端软件编写语言不一样。B/S架构模式现在很受到大众的欢迎,一台计算机的应用可携带内存空间有限,安装操作系统之后,推荐安装适用的工具软件。
数据量多,处理起来的方案也很多。分布式的编程思想在编程界的应用十分广泛。Java的大数据应用开发框架开源的有Hadoop。实际的开发经验中没有使用经验,框架是分布式文件系统框架。分布式地管理文件,存储文件。
处理数据之后的任务是分析数据。数据分析,对数据的敏感性,统计分析。分析数据之后得出的结果对上层的领导做决策有很大的参考帮助。
大数据的处理方式在开发中无处不在。分层开发,依赖注入。高内聚,低耦合。客户端层占用内存较大的资源文件的处理,文件管理系统的上传和下载,图片资源的分布式管理存储系统。Java前端使用HTML标签结构化数据,采集之后不是直接传送到后台。JavaScript接收数据,经过处理之后传递到后台的处理语言进行数据处理。JavaScript并不是高效的数据处理语言,重量比较轻,对应的存储数据库也没有很多。事件响应机制,对客户端的快速响应是它存在的特点。
Ngix负载均衡,择优选择那一台服务器提供服务。网关路由,分布式集群,微服务框架不断出现。分布式锁,分布式组件储存结构。分布式事务也是一种处理的解决思路,实现的产品还有待开发。分布式文件系统,索引的使用,大量数据的处理一直在摸索中前进。互联网公司的处理大数据经验更丰富,公布出来经过大量时间测试会上线。
Excel导入的开发经验
2020年开始接触Java Excel导入的开发工作。在一家建筑机器人的公司离职后,来到广州找的是一家工厂,开始接触导入的开发工作。之前也没有什么使用开发经验,只是在教学视频中看到过有些老师使用开源的Excel POI进行数据的导入存储。
说到导入工作,没有开发经验的工程师有的觉得简单有的觉得难。导入是把Excel中的数据导入到数据库中。Excel导入校验是开发过程中第一个模块,只有校验成功之后的数据才是正确可信,才能入库保存。数据采集与存储,现在有很多的问题都是通过表单之类的提示要求用于提供数据采集的权限。软件的盈利模式有很多的尝试。首先是要弄懂管理程序员的公司,然后才开始做项目,之后是产品,升级到品牌就是相当不容易。数据的采集操作如果是通过单条表单式的校验成功之后提交,效率是十分低下。批处理操作就是为了提升工作效率形成的一种工作理念。
数据Excel导入数据量有大有小,问题就是会有多有少。数据和线程又是两回事,数据是用户很看重的存储单元。线程是用户,处理数据,使用数据。数据量大了就要进行分布式存储,数据量小对一个系统的开发需求又有点鸡肋。分布式存储的概念在程序开发的大量数据处理机制里面一直在尝试和运用。分布式存储,多线程高并发,可移动式嵌入式设备,这些概念是现在和将来都很重要的。用户量和数据量是企业的挣钱方式,同时也是相当头疼的难题。
导入校验的任务是把一些错误校验信息存放在某个地方。导入不成功的处理机制像处理事务一样,要么成功,要么失败。读文件和写文件的效率是十分低下,把磁盘中的文件加载到内存中,通过中央系统处理器处理之后要持久化到磁盘中,这个过程消耗的时间太多。时间响应的指标对用户的体验影响十分大。缓存机制和分布式锁机制,市面上有很多的集成产品。Java的开发框架Redis,分布式批处理框架SpringBatch,都可以考虑。锁的使用是避免多线程高并发的时候多线程同时操作同一个数据区的时候的一种处理方案。异步操作使得线程操作很灵活,同步操作使得线程操作数据很安全。时间和空间,使用锁机制会消耗时间,多使用动态内存开线程窗口会消耗空间。组件的使用,封装简化,提供操作接口。Reuse space and more efficiency。
分布式集群和多线程高并发,集群的操作处理数据的方式在后台服务器端存在很多的解决方案。SpringCloud和 dubbo, 是服务层的分布式解决方案。分布式事务处理机制是在银行看到的一种概念,在业务逻辑程的分布式数据处理方式,具体的实现方式开源框架没有怎么接触。
分布式的概念在程序开发的每一层都是有相应的处理方案。数据量大了,处理数据的效率要做相应的提升,数据分开存放,线程处理同步之后就不会有太大的性能问题。这是软件处理数据的一种思想。硬件的问题,比如数据传输,带宽,CPU等等都会有影响。
怎么写算法
处理数据的代码块可以称作为算法接口。互联网社会的数据流量特别大,每天计算机服务器都要处理大量的数据。数据流入流出,服务器节点对数据的读写操作,高温散热器的运行,都是在为了在跑的的数据。
算法就是在处理数据而编写。封装方法接口,提供调用接口的出参入参。现在很多的远程接口服务调用,通过相应的协议建立连接,传递参数,获取相应的数据。Maven中央仓库的建立,Java jdk api 的 基础jar包,都是基础工程师封装好的应用程序接口。现在这些开源的api接口可供每个工程师阅读,开源让Java这种编程语言推广地更快。
作为Java开发有6年的时间,算法的编写在工作中使用的越来越多。在处理特殊的数据,组装数据,提供给前端,很多时候是要开发工程师编写代码进行处理。算法可以封装成为函数接口,提供出参入参,像零件组件一样,在这个项目中的某个小地方发光发热。封装是为了简化代码,抽取接口,把重复度高的代码抽取出来。空间复用,代码复用。其实继承也是代码的抽取,但是是一对多的关系。封装是组合的关系,把重构好的接口注入到其它接口的某个地方。代码行数不宜过多,也不宜过少,20~50行上下。以此代码段为单元编写代码,有种概念叫做函数式编程。
算法编写,定义函数接口名称,见名知意,出参入参是必须要提供。读数据,处理数据,写数据,这是springbatch 对 Excel文件批量处理的系统之上的一种数据处理开发模式。数据结构和条件if判断,基础api的调用,封装,简化,精简代码。性能的考量需要后续测试之后,再做相应的优化。
进入到一家软件公司之后要做什么
大学毕业那年才去公司应聘,不知道学校公司外面的公司是什么样子。大学一年级也参加过笔试面试,就是紧张。学生做什么事情都是紧张的,在2016年大学毕业之后第一年去上海找工作,参加第一次面试也是紧张。后面就不会,第二次,第三次,靠的就是运气和实力。
在广州第一次参加工作,充满激情,什么装备都换掉。做为Java程序员,入门级别的程序员,一个星期之后就分配开发任务。刚进开发项目组,在工位上面呆呆的坐着5天。第二个星期接到项目排期,也不知道是什么概念。熟悉公司的各种规章制度,经理叫你干什么就跟着。学习过市面上一些Java培训班的项目开发视频,接到任务之后那种焦虑感,相当有压力。在地铁上下班的路上,也有一个小时的车程,从天河平云广场到番禺市桥,一直在想,ibatis框架,pjf框架,数据库使用的是什么倒是没有怎么关注。对于在工作中要做什么,虽然没有经验,要开始分析,思考。
银行的代码有难度,应届开发入项目组,涉及到很多的安全性的规章制度,千万要当心红线。
碰到一个大专生,他来项目组已近4个月,他说之前只是写了几句简单的SQL。大学生不能太心急,都是由有过几年经验的开发分配你当天要做的事情。
在学校没有找到工作,来到广州之后,在招聘网站上面投简历,面试,总算找到一个工作机会。Java初级程序员,刚开始工作是没有头绪的,后面会发生什么,要靠自己的态度,悟性,和努力。在建设银行的那个项目组,维护的是一个旧的项目,前端使用的js框架是行内的开发框架。当自己把那个web页面画出来的时候,成就感就会马上填满你的内心。现在开发分为前端开发和后端开发,前端开发开发页面,效果立马就可以看到。在大学学习计算机编程语言的时候,练习编写代码,永远都是泛泛的黑屏演算结果。学习计算机技术就是这么无聊,但是要坚持下去。
在第一家公司离职之后,经过两年多的软件公司的开发经历。当你每次进入到一家公司之后,首先要做的就是熟悉公司的技术框架,业务知识倒是其次。源码的阅读,公司项目原型的熟悉,要知道新的公司到底是在做什么业务系统。需求下来之后都是在迭代开发,很少有从零开始的项目。每个公司都有它自己的技术,程序员要做的事情是在新公司技术的基础之上做相应的开发,不要重复造轮子。