发表于: 2017-12-05 21:58:56
1 734
一;总结任务一
按照官网的要求;大大小小需要掌握10个技能点…………………………按照我自己不太成熟的路线来说吧
-----------------------------------1;我学到的第一个技能点就是sql语句--------------------------------------
SQL 是用于访问和处理数据库的标准的计算机语言;而java是抽象的,就是把现实抽象出来放到java代码世界,根据关系形成一张张的表格,表格又是存在于数据库里的;
1.1数据库的知识点
关系型数据库:简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
非关系型数据库:简单理解为关系型的简化版; 也就是表中的键和值的对应关系,不需要经过SQL层的解析,所以性能非常高;比如
redis的key-value数据库………………具体点说以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需
要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。这种方式可以根据需要去添加自己需
要的字段,获取用户的不同信息,不需要像关系型数据库中,要对多表进行关联查询。仅需要根据key取出相应的value就可以完
成查询。
再简单说一下优缺点;
关系型; 二维表结构是贴近逻辑世界的概念,关系模型相对网状、层次等其他模型容易理解;通用的SQL语言操作关系型数据库方便
等;缺点也很明显, 高并发读写需求;对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈;海量数据的高效率读写,海量数据的
表中查询效率低;同时基于web的结构的数据库也是最难进行横向扩展的,简单理解就是由于表结构的固定导致扩展困难等等
非关系;大致三种key value以及面向文档还有可扩展的分布式等等,主要解决了高并发,快速查询,以及扩展性等缺点也和明显,由
于约束少不能提供像SQL里类似于if…where这种条件查询,不具有完整性;只适合存储一些较为简单的数据,对于复杂查询的数
据,SQL数据库更占优势.
1.2继续说sql语法,其实也很简单就是对应常用的crud实现机制;至于其他的语法语句就不再赘述了,增删改查是基础………..以mysql为例…………
1.3然后是关于数据库的另一个知识点就是sql语句的分类
DML(data manipulation language)是数据操纵语言:select from/insert into/delete from/table这4条命令是用来对
数据库里的数据进行操作的语言。
DDL(data definition language)是数据定义语言: create / drop /alter等;主要是用在定义或改变表的结构,数据类型,表之间的链接和约束等初始化工作上,大多在建立表时使用
DCL(DataControlLanguage)是数据库控制语言:是用来设置或更改数据库用户或角色权限的语句,如 grant,deny,revoke等;这个用的不多
1.4数据库的图形化界面navicat功能强大,使用方便…..
小结; 技能1之sql………
学会sql语句语法,为以后的增删改查做准备………同时初步接触建表以及索引等初级知识,为以后业务的建表以及执行效率做基础;中
间用到的图形化界面navicat for mysql也算是一种技能;很实用也很好用………建表的可视化,数据字段的可改,以及sql语句的快
速查询等;除此之外还有学习当中接触到的各种环境变量的配置等,对于电脑的使用熟练度有所提升………………………
----------------------------------2;我学到的第二个技能,是关于java的基础知识--------------------------------
2.1 JDK
Java Development ToolKit(Java开发工具包)。JDK是整个JAVA的核心,包括了Java运行环境,一堆Java工具(javac/java/jdb等)和Java基础的类库Java API
简单了解最主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了属于自己的JDK,如IBM公司据说运行效
率就比SUN的JDK高的多。不过必须把基础的Sun JDK掌握好。
JDK有以下三种版本:J2SE标准版,是我们通常用的一个版本;J2EE企业版,开发J2EE应用程序;J2ME(micro edtion)主要用于
移动设备、嵌入式设备上的java应用程序.
2.2 jre
Java Runtime Enviromental(java运行时环境);也就是JAVA平台,所有的Java程序都要在JRE下才能运行,包括JVM和JAVA核
心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。
2.3 jvm
Java Virtual Mechinal(JAVA虚拟机)。JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各
种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM 的主要工作是解
释自己的指令集(即字节码)并映射到本地的 CPU 指令集或 OS 的系统调用。Java语言是跨平台运行的,其实就是不同的操作系
统,使用不同的JVM映射规则,让其与操作系统无关,完成了跨平台性。JVM 对上层的 Java 源文件是不关心的,它关注的只是由
源文件生成的类文件( class file )。类文件的组成包括 JVM 指令集,符号表以及一些补助信息。
小结;技能2之java………….
这个技能点不是很难,主要是理解java的运行机制,以及跨平台的原因;简单来说就是JDK(调用JAVA API)开发JAVA程序,然后通过
JDK中的编译程序(javac)将java文件编译成JAVA字节码(.class),然后在JRE上运行这些JAVA字节码,JVM解析这些字节码映
射到CPU指令集或OS的系统调用。
简单说一下指令集;存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行,也就是用来
处理电脑系统的各种文件媒体当资源的一些指令;OS是操作系统Operating System.
--------------------------------3;我学到的第三个技能点是,关于maven的相关知识-------------------------------
3.1 maven的出现
在开发中,为了保证编译通过,需要用到各种各样的jar包,有时候编译通过了,运行的时候,仍然是ClassNotFoundException
同时Java项目的目录结构没有一个统一的标准,配置文件无序等,项目怎么才能统一规范,清晰明了,方便团队之间的合作?
那就要用到Maven,简单来说一个项目管理的利器
3.2 构建结构说说代码以及pom文件
代码结构就这样很简单直观
简单解释一下; main目录下是项目的主要代码,test目录下存放测试相关的代码;编译输出后的代码会放在target目录下;
src/main/java下存放Java代码src/main/resources下存放配置文件;Web项目会有webapp目录,webapp下存放Web应用相关代
码;pom.xml是Maven项目的配置文件
Pom文件值得说一说
<modelVersion>4.0.0</modelVersion>
<groupId>comNaNteng.Demo</groupId>
<artifactId>Demo_template</artifactId>
<version>1.0-SNAPSHOT</version>
Maven中重要的一点是,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标
modelVersion;指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0
groupId;公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,商业是
"com",用于非营利性组织的是"org";第二部分公司名,如"baidu"、"ptteng";第三部分是项目名........
artifactId;可以认为是Maven构建的项目名,比如你的项目中有子项目,就可以使用"项目名-子项目名"的命名方式
version;版本号SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本;release是发布上线的,稳定的版本
packing;项目打包的类型,可以使jar、war、rar、ear、pom;
dependencies和dependency前者包含后者,Maven的一个重要作用就是统一管理jar包,项目中不可避免的,会依赖很多其他的
jar包,在Maven中,这些依赖就被称为dependency
3.3 mvn的相关命令
我个人很喜欢在命令行使用这几个命令,看起来很酷炫…………尤其是clean和pacakage………再简单说几个;compile,install,deploy
mvn compile,编译类文件
mvn install,包含mvn compile,mvn package,然后上传到本地仓库
mvn deploy,包含mvn install,然后,上传到私服
还有一些跳过测试等等,不再赘述,记不住就查.
小结;技能3之maven………………
这个技能点,实际上初期刚接触并没有什么感觉……什么项目结构好处,jar包依赖处理,统统没感觉,或许是当初项目简单到只是仅仅
用了一个jar……只有一个包一个类……….到后期随着jar包越用越多,再去找jar包,再去导包就已经很繁琐而且效率低下了;同时另一
方面,随着项目越来越大….各种包各种类,这个时候也需要一个统一的规范,来约定一切.
即:实现了两个功能, 统一开发规范与工具;统一管理jar包
----------------------------4;我学到的第四个技能,是关于jdbc的也是java痛苦的开始-----------------------------------
说几句题外话,当初什么都不了解的时候,就想学java…然后接触到mysql就以为是java语法…感觉好简单……7天日报,玩了一个月来上海分院……准备开始大干特干…..结果先是不会自主学习,后来是思考方式以及学习路线出问题,一路copy代码……不到半个月就把任务一跑完了………….回头发现什么都不懂…………这个是想重新学,又学不下去……墨迹到国庆假期之后………真正沉下心学一学,先是恶补三天语法,勉强有了学习大段代码的能力;就这样循序渐进从零慢慢学,确实水平很低,很菜;不管怎么说,总算把整个任务过了一遍……………嗯,回到主题jdbc
4.1 jdbc
简单理解JDBC是用于在Java语言编程中与数据库连接的API,是一种规范的接口,而且可以连接到数据库,创建SQL语句,在数据库中执行SQL查询,查看和修改结果记录;并且有访问底层数据库的能力,这也就使得Java可以编写除了Java应用程序以外的可执行文件,用jdbc驱动程序来访问数据库,并且储存数据。
4.2 最基础的底层操作数据库机制
JDBC架构由JDBC接口以及jdbc驱动程序接口组成,前者提供Java应用程序到JDBC管理器连接;后者提供JDBC管理器到数据库驱动程序的连接;JDBC这个接口会提供接口和类 :管理数据库驱动程序列表的类DriverManager,处理与数据库服务器的接口Driver,用于联系数据库的所有方法的接口Connection,创建对象将SQL语句提交到数据库的接口Statement,保存从数据库检索数据的接口ResultSet以及处理数据库应用程序中发生的任何错误的类SQLException
小结,技能之jdbc……………
这个技能点就不展开讲了,涉及内容太多,也是以后代码的基础;这是操作数据库最基础最直接的体现,必须理解好运用好,明天再撸
一遍jdbc的代码............
简单说一下主要流程;
项目的第一个jar包: mysql-jdbc
Class.forName驱动的初始化:Driver Manager
建立与数据库的连接:connection
创建Statement :执行SQL语句
关闭连接:连接是有限资源,养成好习惯(try-with-resource)
--------------------------------------------分割线------------------------------------------------------
二;说个小动作,分布式发布到服务器;这里有几个小问题,简单说一下;
1;打jar包,里面有main函数,记得pom文件加配置….
2;然后上传到服务器,启动的时候记得加&&&&&&&&,保证jar后台运行,不被ctrl+c打断
3;然后是配置文件仍然要注意……….servicePort必须加上,在本地不必…..
4;最后的是启动的ip地址,要指定;了解外网ip与私网ip的关系
5;基本的坑都填好了;简单总结一下,就是pom文件加mainClass打成jar包,上传到服务器运行加&&&&&&&&&&,保持后台运行;然后
是service里的文件要指定端口;指定ip;然后就可以正常联通访问了;
明日计划的事情:
1;完成任务一二三的总结
2;实践一部分内容,把之前的代码试着重构一下
3;完善小课堂
遇到的问题及解决方法:
主要是总结以及小课堂,涉及新知识不多,问题暂无……………
收获:
1;总结任务中的技能,明确要掌握的知识点,发现有些技能依然是是而非,并没有真正理解掌握,还需要补补补补补………
2;完成了小课堂部分内容.
3;总结起来感觉还是顺畅了不少……….
Ps:
关系模型中常用的概念:
关系:一张二维表,每个关系都具有一个关系名,就是通常说的表名
元组:二维表中的一行,在数据库中经常被称为记录
属性:二维表中的一列,在数据库中经常被称为字段
域:属性的取值范围,也就是数据库中某一列的取值限制
关键字:一组可以唯一标识元组的属性,数据库中常称为主键
关系模式:指对关系的描述;关系名(属性1……2……n………)在数据库中成为表结构
http://blog.csdn.net/robinjwong/article/details/18502195
评论