java service

来源:互联网 发布:根据网络安全法的规定 编辑:程序博客网 时间:2024/06/05 06:54

http://blog.csdn.net/allinornothing/article/details/46505245

//看到这个文章不错,各位想转服务器的可以看看

http://www.cnblogs.com/jycboy/p/6227193.html

http://blog.csdn.net/ld0807/article/details/61915006?v=6

http://geek.csdn.net/news/detail/209207

https://my.oschina.net/u/3518116/blog/1142626

http://blog.csdn.net/feng2qing/article/details/60968548

//Spring框架 环境配置

http://blog.csdn.net/Love_Beauty/article/details/53611422

http://blog.csdn.net/dreamcatchergo/article/details/8108467

http://www.roncoo.com/article/detail/129525


*java的一些配置,首先Eclipse下载,tomcat下载并安装集成到eclipse,但是由于我是新手两天才搞出来,还是看到了一个博客才联想到的,主要是路径要对,安装这些都好说,所有的都要求细心,,部署静态网页的话放在webapps/root下面,链接路径要显示后缀。eclipse集成tomcat要在tomcat9.0下而不是其他目录下,配置好之后在我公司的局域网下可以使用但是一到外网就不行了,后来问了服务器开发人员说是没有静态IP*




1:设计理念区别
抽象类:被继承体现的是:”is a”的关系。在抽象类中定义的一般是共性功能
接口:被实现体现的是:”like a”的关系。在接口中定义的一般是扩展功能


2.接口中的所有方法均为抽象方法,抽象类中包含非抽象方法和抽象方法。如果一个类实现了接口,那么该子类必须实现父接口的所有方法。如果一个类继承了抽象类,那么该子类必须实现抽象类的所有抽象方法。

/**匿名内部类**/

3.只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现

最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口


4.

  • 为什么会有泛型呢?
  • 通过案例引入
  • 早期的Object类型可以接收任意的对象类型,但是在实际的使用中,会有类型转换的问题。也就存在这隐患,所以Java提供了泛型来解决这个安全问题。
    • 泛型类
    • 把泛型定义在类上
    • 格式:public class类名<泛型类型1,…>
    • 注意:泛型类型必须是引用类型
    • 泛型方法
    • 把泛型定义在方法上
    • 格式:public <泛型类型>返回类型 方法名(泛型类型.)
    • 泛型接口
    • 把泛型定义在接口上
    • 格式:public interface接口名<泛型类型1…>

5.数据结构/java数据结构

(1):线性结构:数据结构中的元素存在一对一的相互关系

(2):树形结构:数据结构中的元素存在一对多的相互关系

(3):图形结构:数据结构中的元素存在多对多的相互关系

线性表是最简单、最基本、也是最常用的一种线性结构。线性表是具有相同数据类型n(n>=0)个数据元素的有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) ,其中n为表长, n=0 时称为空表。 它有两种存储方法:顺序存储和链式存储,它的主要基本操作是插入、删除和检索等。

java

  • Collection接口概述
  • Collection 层次结构中的根接口。Collection表示一组对象,这些对象也称为collection的元素。一些collection允许有重复的元素,而另一些则不允许。一些collection是有序的,而另一些则是无序的。
  • Iterator接口概述
  • collection进行迭代的迭代器
  • 依赖于集合而存在






    • Vector类概述
    • 底层数据结构是数组,查询快,增删慢
    • 线程安全,效率低
    • Vector类特有功能
    • public void addElement(E obj)
    • public E elementAt(int index)
    • public Enumeration elements()
    • Vector案例
    • 存储字符串并遍历
    • 存储自定义对象并遍历
    ArrayList类概述
  • 底层数据结构是数组,查询快,增删慢
  • 线程不安全,效率高
  • ArrayList案例
  • 存储字符串并遍历
  • 存储自定义对象并遍历
  • LinkedList类概述
  • 底层数据结构是链表,查询慢,增删快
  • 线程不安全,效率高
  • LinkedList类特有功能
  • public void addFirst(E e)addLast(E e)
  • public E getFirst()getLast()
  • public E removeFirst()public E removeLast()
  • LinkedList案例
  • 存储字符串并遍历
  • 存储自定义对象并遍历
  • HashSet类概述
  • 不保证 set的迭代顺序
  • 特别是它不保证该顺序恒久不变。
  • HashSet如何保证元素唯一性
  • 底层数据结构是哈希表(元素是链表的数组)
  • 哈希表依赖于哈希值存储
  • 添加功能底层依赖两个方法:
    • int hashCode()
    • boolean equals(Object obj)
  • LinkedHashSet类概述
  • 元素有序唯一
  • 由链表保证元素有序
  • 由哈希表保证元素唯一
  • TreeSet类概述
  • 使用元素的自然顺序对元素进行排序
  • 或者根据创建 set时提供的Comparator进行排序
  • 具体取决于使用的构造方法。 
  • TreeSet是如何保证元素的排序和唯一性的
  • 底层数据结构是红黑树(红黑树是一种自平衡的二叉树)
  • Collection
  • List
    • ArrayList
    • Vector
    • LinkedList
  • Set
    • HashSet
    • TreeSet
  • Map接口概述
  • 将键映射到值的对象
  • 一个映射不能包含重复的键
  • 每个键最多只能映射到一个值
  • Map接口和Collection接口的不同
  • Map是双列的,Collection是单列的
  • Map的键唯一,Collection的子体系Set是唯一的
  • Map集合的数据结构值针对键有效,跟值无关

   Collection集合的数据结构是针对元素有效

  • HashMap

LinkedHashMap

  • TreeMap





Java Thread 线程

Java中的多线程是一种抢占机制而不是分时机制。抢占机制指的是有多个线程处于可运行状态,但是只允许一个线程在运行,他们通过竞争的方式抢占CPU。


System.out.println(e),这个方法打印出异常,并且输出在哪里出现的异常,不过它和另外一个e.printStackTrace()方法不同。后者也是打印出异常,但是它还将显示出更深的调用信息。

先敲“/”在敲两个**,然后回车,快速注释


java  中关于set()和fet()方法的理解和使用

我们先来看看set和get这两个词的表面意思,set是设置的意思,而get是获取的意思,顾名思义,这两个方法是对数据进行设置和获取用的。而且,在类中使用set和get方法时,都是set和get后面跟上一些特定的词来形成特定意思的方法名,比如setage()和getage(),表示设置年龄和获取年龄。

然后我们来了解一下java面向对象编程中的封闭性和安全性。封闭性即对类中的域变量进行封闭操作,即用private来修饰他们,如此一来其他类则不能对改变量访问。这样我们就将这些变量封闭在了类内部,这样就提高了数据的安全性,当我们想要操作这些域变量怎么办呢?我们可以通过两种方法,第一种即通过public方式的构造器(或称构造函数),对象一实例化就对该变量赋值。第二种就是通过上面提到的set和get()方法,这里我举一个特定的例子,我定义一个person类,该类中有name,age这两个私有域变量,然后我定义setname()、getname()、setage()、getage()这四个方法,通过这四个方法来实现对name和age的操作。这样一来,我不用直接对person类中的域变量操作,而是通过set和get方法间接地操作这些变量,这样就能提高域变量的安全性,同时又保证了域变量的封装型。

最后说说set和get方法的使用场景,一般来说set和get方法都是对私有域变量进行操作的,所以大多数都是使用在包含特定属性的类实体中。

现在你明白set和get方法了吧,其实这两个方法只是类中的set和get方法的总称。

在今后的开发过程中,只要你细心体会,结合java中的一些宏观的知识。set和get方法还是容易理解的,或许你还会领会一些其他的JAVA中的重要理论知识


java 中的import机制(指定import和import*的区别)

java 中有两种包的导入机制,总结如下

单类型导入(single-type-import),例如import java.io.File;

按需类型导入(type-import-on-demand),例如 import java.io.*;

单类型导入比较好理解,仅仅导入一个public 类或者接口。

对于按需类型导入,有人误解为导入一个包下的所有类,其实不然,看名字就知道,他只会按需导入,也就是说它并非导入整个包,而仅仅导入当前类需要使用的类。

既然如此是不是就可以放心的使用按需类型导入呢?非也,非也。

因为单类型导入和按需类型导入对类文件的定位算法是不一样的。java编译器会从启动目录(bootstrap),扩展目录(extension)和用户类路径下去定位需要导入的类,而这些目录仅仅是给出了类的顶层目录。编译器的类文件定位方法大致可以理解为如下公式:

顶层路径名\包名\文件名.class =绝对路径

对于单类型导入很简单,因为包名和文件名都已经确定,所以可以一次性查找定位。对于按需类导入则比就复杂,编译器会把包名和文件名进入排列组合

然后对所有的可能性进行类文件查找定位.

例如:

package com;

import java.io.*;

import java.util.*;

当你的类文件中用到了File类,那么可能出现File类的地方如下

File                      \\  File类属于无名包,就是说File类没有package语句,编译器会首先搜索无名包

com.File             \\  File类属于当前包

java.lang.File     \\  编译器会自动导入java.lang包

java.io.File

java.util.File

需要注意的地方就是,编译器找到java.io.File类之后并不会停止下一步的寻找,而要把所有的可能性都查找完以确定是否有类导入冲突。假设此时的顶层路径有三个,那么编译器就会进行3*5=15次查找。

注意:如果在查找完成后,编译器发现了两个同名的类,那么就会报错。要删除你不用的那个类,然后再编译。

了解以上原理之后,我们可以得出这样的结论:按需类型导入是绝对不会降低Java代码的执行效率的,但会影响到Java代码的编译速度。

查看JDK的源代码就知道SUN的软件工程师一般不会使用按需类型导入。因为使用单类型导入至少有以下两点好处:

1。提高编译速度。

2。避免命名冲突。(例如:当你import java.awt.*;import java.util.*后,使用List的时候编译器将会出编译错误)

当然,使用单类型导入会使用你的import语句看起来很长。

在Java诞生初期,垃圾回收是Java最大的亮点之一,因为服务器端的编程需要有效的防止内存泄露问题,然而时过境迁,如今Java的垃圾回收机制已经成为被诟病的东西。移动智能终端用户通常觉得iOS的系统比Android系统有更好的用户体验,其中一个深层次的原因就在于android系统中垃圾回收的不可预知性。

jvm回收

http://geek.csdn.net/news/detail/236894


java多线程

https://mp.weixin.qq.com/s?__biz=MzI4Njc5NjM1NQ==&mid=2247483698&idx=1&sn=2cc8da03472d6c2a796312bf04680058&chksm=ebd63e1edca1b7084fdbb118570445aab00ad7a079c261c6c5d5088a6cefb4cb2748cc2474b4&scene=0#rd

0 0
原创粉丝点击