java细节知识点

1.String字符转换为日期?

用法: SimpleDateFormat sdf =   new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " );

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006  10:57AM

2.IOC控制反转,用哪些注解?

@Autowired 默认按类型装配,

@Resource默认按名称装配,当找不到与名称匹配的bean才会按类型装配。

3.Spring用哪些东西?

  01. 核心容器 :核心容器提供 Spring框架的基本功能。 核心容器的主要组件是  BeanFactory,它是工厂模式的实现。BeanFactory 使用 控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

 02. Spring 上下文 : Spring上下文是一个配置文件,向 Spring框架提供上下文信息。 Spring上下文包括企业服务,例如 JNDIEJB、电子邮件、国际化、校验和调度功能。

 03. Spring AOP :通过配置管理特性, Spring AOP模块直接将面向方面的编程功能集成到了 Spring框架中。所以,可以很容易地使 Spring框架管理的任何对象支持 AOPSpring AOP模块为基于 Spring的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB组件,就可以将声明性事务管理集成到应用程序中。

 04. Spring DAO JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向JDBC 的异常遵从通用的DAO 异常层次结构。

05. Spring ORM Spring框架插入了若干个 ORM框架,从而提供了 ORM的对象关系工具,其中包括 JDOHibernateiBatis SQL Map。所有这些都遵从 Spring的通用事务和 DAO异常层次结构。

06. Spring Web 模块 : Web上下文模块建立在应用程序上下文模块之上,为基于 Web的应用程序提供了上下文。所以, Spring框架支持与 Jakarta Struts的集成。 Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

07. Spring MVC 框架 : MVC框架是一个全功能的构建 Web应用程序的 MVC实现。通过策略接口, MVC框架变成为高度可配置的, MVC容纳了大量视图技术,其中包括 JSPVelocityTilesiTextPOI

4.Stringbuffer    StringBuilder    String?

String是固定不变的,而StringBufferStringBuilder可以改变它们的值。

StringBufferStringBuilder唯一的区别是StringBuilder是非同步的而StringBuffer是同步的。当系统需要运行单线程时,使用StringBuilder比较好。StringBuilderStringBuffer更有效用。

选择原则:

如果你的文本(字符串)不会改变就用String类因为String对象是不可变的。

如果你的文本(字符串)可以改变并且在单线程中访问,使用StringBuilder

如果你的文本(字符串)可以改变并且在多线程中访问,使用StringBuffer

5.List有哪些 ?

List接口一共有三个实现类,分别是ArrayListVectorLinkedListList用于存放多个元素,能够维护元素的次序,并且允许元素的重复。

6.怎么定义String数组?

1.String[] str={"AAA","BBB","CCC"};

2.String str[]={"AAA","BBB","CCC"};

7.httpshttp的区别?

1https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3httphttps使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443

4http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

8.solr引擎怎么用?

 http://www.importnew.com/12607.html

9.AJAX定义的类型哪些?

类型:String

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP MIME 信息来智能判断,比如XML MIME 类型就被识别为XML。在1.4 中,JSON就会生成一个 JavaScript对象,而 script则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。可用值:

•"xml": 返回 XML文档,可用 jQuery处理。

•"html": 返回纯文本 HTML信息;包含的 script标签会在插入 dom时执行。

•"script": 返回纯文本 JavaScript代码。不会自动缓存结果。除非设置了 "cache"参数。注意:在远程请求时(不在同一个域下),所有POST 请求都将转为GET 请求。(因为将使用DOM script标签来加载)

•"json": 返回 JSON数据 。

•"jsonp": JSONP 格式。使用 JSONP形式调用函数时,如 "myurl?callback=?" jQuery将自动替换 ?为正确的函数名,以执行回调函数。

•"text": 返回纯文本字符串

10.jQuery哪些属性?

 http://www.w3school.com.cn/jquery/jquery_ref_attributes.asp

11.String boot怎么用?

首先谈谈我对spring boot 的认知:

String boot 作为一款spring家族的框架,是一个新的中小型项目的宠儿。是一个基于spring的轻量级框架。它继承了tomcatmysqlhibernate等工具,在启动时很无脑,在controller里写一个main方法启动即可。下来在数据层可以很无脑的使用hibernate的框架去实现。并不用什么数据。讲真还是蛮吊的,反正就是说,实现了代码的大大减少。

. 下来说下实现吧:

1.首先使用这个玩意,推荐使用jdk版本是1.8,不过我这里用的是1.7目前也没什么问题。下来的话,这个项目是基于maven管理的,需要一些maven依赖,很无脑。

这是从官方生成的项目的pom文件 底下mysql的那个是我自己加的,因为我在使用的时候,报找不到com.jdbc.mysql.Driver驱动,于是我就自己加入了这个包。

同样的,在这里我也附上关于Spring boot 快速开始的地址 http://projects.spring.io/spring-boot/#quick-start这是一个官方的地址。

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>

    <groupId>com.meizu.example</groupId>

    <artifactId>SpringBoot_Demo</artifactId>

    <version>0.0.1-SNAPSHOT</version>

    <packaging>jar</packaging>

    <name>SpringBoot_Demo</name>

    <description>Demo project for Spring Boot</description>

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>1.4.2.RELEASE</version>

        <relativePath/> <!-- lookup parent from repository -->

    </parent>

    <properties>

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

        <java.version>1.7</java.version>

    </properties>

    <dependencies>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-data-jpa</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-data-jpa</artifactId>

        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->

        <!--自行加入 -->

        <dependency>

            <groupId>mysql</groupId>

            <artifactId>mysql-connector-java</artifactId>

            <version>5.1.38</version>

        </dependency>

    </dependencies>

    <build>

        <plugins>

            <plugin>

                <groupId>org.springframework.boot</groupId>

                <artifactId>spring-boot-maven-plugin</artifactId>

            </plugin>

        </plugins>

    </build>

</project>

2.下来就要看看如何启动

在从官网快速开始的项目里,会有这样的一个controller

package com.meizu.example;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

@SpringBootApplication

public class SpringBootDemoApplication {

    @RequestMapping("/")

    String home() {

        return "Hello World123!";

    }

    @RequestMapping("/a")

    String homea() {

        return "this is a !";

    }

    public static void main(String[] args) {

        SpringApplication.run(SpringBootDemoApplication.class, args);

    }

}

重点是这个@SpringBootApplication。这个注解有什么作用呢?

a. 提供静态方法,用于开发独立运行的应用

b.嵌入容器配置,tomcat或者jetty

c.外部配置支持,从命令行,属性文件读取配置

d.spring context 的初始化

其实这个文件是默认有的,你想添加什么内容自行添加即可。

这时候你运行这个main方法即可。。。这时候就相当于你启动了tomcat容器(默认tomcatjetty的我还没研究,过会就去看看)。

这时候访问以下:

12.前端框架的怎么用,原理?

13.FreeMarker模板引擎,list有什么作用,等等,怎么判断为空!等?

<#list 获取的list对象as item>

$

</#list>

iditem这种类型bean的属性.

如判断user是否为空,则:

<#if user??>

//不为空操作

<#else>

</#if>

14.事物怎么用?

我们把对事务的控制放在系统的service层(分为controller层、service层、DAO层)来处理,下面是我的spring配置文件


15.集合字符串怎么拼接?

String类的方法:

利用运算符"+"

②public String concat(String str)进行字符串的拼接操作

StringBuffer的方法:

①public StringBuffer append(String str)str添加到当前字符串缓冲区的字符序列的末尾

②public StringBuffer insert(int offset,String str)在当前字符串缓冲区的字符序列的下标

索引offset插入str。如果offset等于旧长度,则str添加在字符串缓冲区的尾部

16.对称加密与非对称加密的区别?

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。

非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那 么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

17.GIT怎么下载代码,上传代码?

1、新建项目文件夹helloword

2cd hellword进入项目文件夹

3git init初始化仓库

4git remote add helloword <项目地址>添加关联

5git pull hellowrd(仓库名) master(分支名)下载代码到本地.

6.泛型?

泛型的好处

Java 语言中引入泛型是一个较大的功能增强。不仅语言、类型系统和编译器有了较大的变化,以支持泛型,而且类库也进行了大翻修,所以许多重要的类,比如集合框架,都已经成为泛型化的了。

这带来了很多好处:

1,类型安全。 泛型的主要目标是提高 Java程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。

2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。

3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。

Java语言引入泛型的好处是安全简单。泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

泛型在使用中还有一些规则和限制:

1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。

2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。

3、泛型的类型参数可以有多个。

4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上成为有界类型

5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName(Java.lang.String);

型还有接口、方法等等,内容很多,需要花费一番功夫才能理解掌握并熟练应用。在此给出我曾经了解泛型时候写出的两个例子(根据看的印象写的),实现同样的功能,一个使用了泛型,一个没有使用,通过对比,可以很快学会泛型的应用,学会这个基本上学会了泛型70%的内容

7.线程?

8.SQL隔离机制
 
对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:  
    •   脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段. 之后, 若 T2 回滚, T1读取的内容就是临时且无效的.  
    •   不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段. 之后, T1再次读取同一个字段, 值就不同了.  
    •   幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再次读取同一个表, 就会多出几行.  
    数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题.   
 一个事务与其他事务隔离的程度称为隔离级别. 数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度, 隔离级别越高, 数据一致性就越好, 但并发性越弱  
    数据库提供了4中隔离级别:  
    隔离级别    描述  
    READ UNCOMMITTED(读未提交数据)    允许事务读取未被其他事务提交的变更,脏读、不可重复读和幻读的问题都会出现  
    READ COMMITED(读已提交数据)   只允许事务读取已经被其他事务提交的变更,可以避免脏读,但不可重复读和幻读问题仍然会出现  
    REPEATABLE READ(可重复读)   确保事务可以多次从一个字段中读取相同的值,在这个事务持续期间,禁止其他事务对这个字段进行更新,可以避免脏读和不可重复读,但幻读的问题依然存在  
    SERIALIZABLE(串行化)   确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,所有并发问题都可以避免,但性能十分低  
    Oracle 支持的 2 种事务隔离级别:READ COMMITED, SERIALIZABLE. Oracle 默认的事务隔离级别为: READ COMMITED   
    Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ  repeatable read

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值