核心思想:面向对象编程,继承,高兼容(代码移植性强),开源,避免重复造轮子(使用mybatis,spring,redis等技术只需要将jar包依赖添加到项目中即可,jar包内就是技术核心代码,而这些框架都是专业技术团队开发出来的,这为大多数项目开发省去很多精力,拿来即用)。

    Java的起源和发展细节就不介绍了,Java是高级开发语言,类似C++,语法和C++ 有很多类似之处,但是做了些优化,主要是在编码写程序上的优化,避免内存泄露,避免指针复杂错用等,Java中不可以直接操作指针,被隐藏。

Java程序从编写到运行

    A 编写出正确的Java代码 .java文件 -->  B 通过工具编译成class文件 .class文件 --> C 运行在系统中的jvm虚拟机加载class文件 --> D jvm读取class文件中的main方法开始一个系统进程 --> E  完成 Java程序开始运行  。

    在D过程中有一个过程 --> jvm虚拟机加载class文件后,将.class翻译成机器码(偏底层的系统指令) 因系统而异,同一个class文件,在window环境 翻译出的机器码与Linux环境翻译出的机器码是不同的: 代码移植性强的根本(jvm虚拟机)

    在IDE工具实际使用中,如Eclipse和Idea ,编写java代码运行通常是编写好java代码后,右键run可以运行,看似步骤简单,实际上述5步都做了,A我们自己编写程序,B->E 由IDE工具帮我们做了,这也是IDE的意义。

    作为程序员应该对此清楚,因为在代码编写到运行,可能会有bug,那么bug出自哪里? 可能是代码本身逻辑有问题,但不排除是A->E 步骤中除了什么差错(就分析程序问题全面性而言,大多数问题通常确实在代码运行阶段的逻辑出错)。

Java 中的成员 : jvm虚拟机,jre,jdk

  jvm虚拟机

    Java代码的加载器、编译器、引擎    负载加载(读取).class文件

    上文中有提到虚拟机,将class文件翻译成系统能识别的机器码,因此jvm是Java程序的必要环节,也说明不同的系统,jvm虚拟机版本是不同的。

    jvm虚拟机由C语言和汇编语言编写构成,  是Java程序运行的根本,Java程序运行首先需要运行jvm.

    网络解释: JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。

  jre (Java Runtime Environment) 

    Java程序运行环境,其中包含了jvm虚拟机。Java程序需要运行时需要的环境,既jre.

  jdk (Java Development Kit)

    Java 语言的软件开发工具包 (SDK) Java软件开发环境,程序员编写Java程序时需要的工具。 与jre的区别  包含jre,多了一些编译工具,比如将.java 文件编译成 .class文件

    

Java开发中常用的技术思想、框架、工具  

  设计原则

  开闭原则:对修改关闭,对扩展开放

  里氏替换原则:任何父类出现的地方,子类都可以替代.(多态&&继承)

  依赖倒置原则:依赖抽象,不依赖具体

  单一职责原则:一个类或者模块应该专注做一件事(设计清晰)

  接口隔离原则:一个接口最好是只有一个抽象方法,针对不同功能应该使用不同的接口来抽取,这样在具体实现上,可以选择接口实现方法,而不用被动实现不需要的方法

  迪米特法则(最少知道原则):对于对象的使用,只需要知道方法调用和参数,而不用知道内部具体实现,松耦合.

  组合复用原则:对于已有功能,优先使用已有类对象组合复用,而不是继承某个类使用父类功能.

  Java api分模块常见的有:

  常量

  关键字

  集合(数据结构,集合)

  线程

  io(输入输出流)

  反射

  思想  

  面向对象

    Java中任何事物都可以看做对象,任何事物从对象角度出发,解决问题从对象角度出发。 同时java中对于已开发对象,复杂工具类,复杂实现,可以生成jar包,以后需要直接导入jar包即可使用已设计对象,避免重复造轮子.

  抽象

    软件问题具体开发具体分析,但在设计上是面向抽象开发的,在spring框架就很明显,依赖抽象,不依赖具体,达到解耦效果.  java中的抽象类,接口都能体现抽象细想

  继承

    Java中对象可以被继承,将可以使用被继承对象所有公共属性,公共方法。继承者为子类,被继承者为父类,在Java中一切对象的顶级超类是Object

  多态

    多态是同一个行为具有多个不同表现形式或形态的能力。

    多态就是同一个接口,使用不同的实例而执行不同操作。 具体涉及到java中接口的知识。

  多线程 

    一个线程处理一个事物,多个线程在同事间内执行各自的事物,互不影响。

  高并发

    在有限的硬件资源情况下,短时间内大量线程启动运行并处理事物。

  长连接

    在与可通信端频繁通信交换数据时需要用到的技术,如数据库连接一般是长连接;特点:连接数较少,通讯频繁。 想对的短连接:连接数多,同一连接短时间内连续通讯较少。

  nio

    非阻塞io,解决网络数据传输阻塞问题,当两端通信有连接时,不一定马上接收数据(另一端处理数据可能缓慢、网络延时、系统异常等等),这样会引起线程等待发送数据造成的阻塞,nio提供缓冲区,有数据的时候通过通道将通信数据写入缓冲区,没有数据则先执行别的线程,避免阻塞。

  框架

  spring

    SpringFrameWork,春天。核心是控制反转IoC(Inversion of Control  也称依赖注入)和面向切面编程AOP(Aspect Oriented Programming)java中非常流行的技术框架与框架设计思想。 秉承高内聚,低耦合的思想。没有侵略性,对所有别的技术框架能够很好的兼容。(面向接口编程,依赖抽象,不依赖具体,面向切面编程,解耦)

  springmvc

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块(摘自百度)。web框架,前端控制层访问框架。

  mybatis

    轻量级持久层框架,持久层开发较高效框架,在迭代开发、网络项目中使用较多。

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。(摘自百度)

  hibernate

    Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。(摘自百度)

  springboot

    springboot是以spring为基础的多技术集成的高效快速项目开发框架,核心还是spring,但是集成封装好了很多其他技术(如redis、mybatis等),免去了项目开发中一些重复繁琐的过程

  springcloud

    springcloud是分布式架构技术,springcloud建立在springboot的基础上,主要是在分布式环境下,将springboot项目集中管理的的分布式开发架构。

  netty

    nio技术具体实现框架。

  工具

  eclipse

    使用java、C 等语言来开发项目的工具。

  idea

    使用java、C 等语言来开发项目的工具,和eclipse一样是比较好用的项目开发工具,甚至比eclipse功能更多更强大,不过需要付费。

  maven

    项目开发jar资源依赖管理工具,项目打包工具,使项目开发更高效。

  tomcat

    web项目运行容器,现在springboot框架内用集成tomcat,使用springboot开发可以不需要额外配置tomcat。

本文不定期更新。

package test;

import java.util.Scanner;

public class JungleTest {
@SuppressWarnings("resource")
public static void main(String[] args) {
char[] question = { 0x8bf7, 0x95ee, 0x4f60, 0x662f, 0x0070, 0x0069, 0x0067, 0x5417, 0x003f, 0x000d, 0x000a,
0x56de, 0x7b54, 0x0022, 0x662f, 0x0022, 0x6216, 0x8005, 0x0022, 0x4e0d, 0x662f, 0x0022, 0x002e };
char[] answer = { 0x0059, 0x006f, 0x0075, 0x0020, 0x0061, 0x0072, 0x0065, 0x0020, 0x006e, 0x006f, 0x0020,
0x0072, 0x0075, 0x006c, 0x0065, 0x0073, 0x002c, 0x006d, 0x0061, 0x0079, 0x0062, 0x0065, 0x0020, 0x0079,
0x006f, 0x0075, 0x0020, 0x0063, 0x0061, 0x006e, 0x0020, 0x0062, 0x0065, 0x0020, 0x0061, 0x0020, 0x0067,
0x006f, 0x006f, 0x0064, 0x0020, 0x7a0b, 0x5e8f, 0x733f, 0x0021 };
Scanner scanner = new Scanner(System.in);
while (true) {
System.err.println(question);
char[] charArray = scanner.nextLine().trim().toCharArray(); if (charArray.length < 1) {
System.err.println("输入为空,请重新输入");
continue;
}
int flag = 0;
System.out.println(0+charArray[0]);
for (char c1 : charArray) {
flag += c1;
}
if (!(0x92 == flag && charArray[0] == 0x6a)
&& charArray[0] != 0x6eda
&& charArray[0] != 0x35
&& charArray[0] != 0x54ed) {
if (0x662f == flag && charArray.length == 1) {
System.out.println("You are brave man!\r\nSystem exit");
System.exit(0);
} else {
if (0xb43c == flag && charArray.length == 2 && 0x4e0d == charArray[0]) {
System.out.println(answer);
} else {
System.err.println("输入错误");
}
} } else {
System.out.println("ok exit!");
System.exit(0);
}
}
} // Integer.toHexString(7); jc }

Java简单介绍及Java生态的更多相关文章

  1. java复习1 java简单介绍

    在学校的时候.学JAVA学的模棱两可,半知半解.工作以后给我带来了非常大的困扰,所以我须要在学一遍.如今就開始吧... . java[1]是一种能够撰写跨平台应用软件的面向对象的程序设计语言,是由Su ...

  2. 算法笔记_071:SPFA算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...

  3. -1-0 Java 简介 java是什么 java简单介绍

    Java是一门纯粹的面向对象的高级的平台无关的编程语言 官网介绍: 了解 Java 技术  https://www.java.com/zh_CN/about/ 推荐词条: https://zh.wik ...

  4. 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范

    1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...

  5. Brief introduction to Java String Split 【简单介绍下Java String Split】

    Split is a common function in Java. It split a full string to an array based on delimeter. For examp ...

  6. 算法笔记_070:BellmanFord算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为BellmanFord算法? BellmanFord算法功能:给定一个加权连通图,选取一个顶点,称为起点,求取起点到其它所有顶 ...

  7. 算法笔记_068:Dijkstra算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 使用Dijkstra算法得到最短距离示例 2.2 具体编码   1 问题描述 何为Dijkstra算法? Dijkstra算法功能:给出加权连通图中一个顶点, ...

  8. 算法笔记_069:Floyd算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 使用Floyd算法得到最短距离示例 2.2 具体编码   1 问题描述 何为Floyd算法? Floyd算法功能:给定一个加权连通图,求取从每一个顶点到其它所 ...

  9. Java异常处理介绍(Java知识的重点内容)

    Java 异常处理 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你 ...

随机推荐

  1. autotrace执行计划中,统计信息详解

    全表扫描是怎么扫描的? oracle最小的存储单位是block 物理上连续的block组成了extent(也就是说一个区中的所有块在物理上是连续的) 很多个extent组成了segment(一个seg ...

  2. 设置HttponlyCookie解决mshtml编程无法获取验证码图片流

    最近给客户做的项目有一个新需求,客户需要在打开的IE浏览器中做自动登录,登录的页面上有神兽验证码.解决验证码的方案是找第三方平台打码.这样就有一个问题,如何把正确的验证码传给第三方打码平台. 大家都知 ...

  3. JavaScript变量与数据类型详解

    变量 变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念.变量可以通过变量名访问. 变量的作用就是用于存储值. 语法: 声明变量时,总是以关键字var打头.任何情况下都应该这样做.然后给变 ...

  4. HBase之RPC调用流程简介

    首先分析hbase中对于master协议的调用: 在ConnectionImplementation的方法getKeepAliveMasterService被调用时,会通过MasterServiceS ...

  5. js数组之sort排序的用法

    sort排序 转载自:https://blog.csdn.net/idomyway/article/details/80544509 js中用方法sort()为数组排序.sort()方法有一个可选参数 ...

  6. 11张PPT介绍Paxos协议

    之前翻译了<The Part-Time Parliament>一文,论文非常经常,强烈推荐读一读原文.翻译完论文后,希望自己能用简单的描述来整理自己的理解,所以花了一些时间通过PPT的形式 ...

  7. Android内存优化之内存缓存

    前言: 上面两篇博客已经讲了图片的基本知识和图片的加载方法及优化,所有的这些优化都是为了避免应用出现OOM这个问题.一个好的应用程序不仅要健壮不能出错还要方便用户使用,对于用户来说你的应用不仅要美观还 ...

  8. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  9. ElasticSearch实战:Linux日志对接Kibana

    本文由云+社区发表 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTFul web接口.ElasticSearch是用Java开发 ...

  10. Zookeeper Client简介

    直接使用zk的api实现业务功能比较繁琐.因为要处理session loss,session expire等异常,在发生这些异常后进行重连.又因为ZK的watcher是一次性的,如果要基于wather ...