zoukankan      html  css  js  c++  java
  • 第四期知识点

    1.线程与进程之间的关系

    什么是进程(Process):普通的解释就是,进程是程序的一次执行,而什么是线程(Thread),线程可以理解为进程中的执行的一段程序片段。在一个多任务环境中下面的概念可以帮助我们理解两者间的差别: 进程间是独立的,这表现在内存空间,上下文环境;线程运行在进程空间内。 一般来讲(不使用特殊技术)进程是无法突破进程边界存取其他进程内的存储空间;而线程由于处于进程空间内,所以同一进程所产生的线程共享同一内存空间。 同一进程中的两段代码不能够同时执行,除非引入线程。 线程是属于进程的,当进程退出时该进程所产生的线程都会被强制退出并清除。 线程占用的资源要少于进程所占用的资源。 进程和线程都可以有优先级。 在线程系统中进程也是一个线程。可以将进程理解为一个程序的第一个线程

    2.HashMap的性能参数

    HashMap():构建一个初始容量为 16,负载因子为 0.75 的 HashMap。

    HashMap(int initialCapacity):构建一个初始容量为 initialCapacity,负载因子为 0.75 的 HashMap

    负载因子衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费

    对于java8对于hashmap的改进

    如果某个桶中的记录过 大的话(当前是TREEIFY_THRESHOLD = 8),HashMap会动态的使用一个专门的treemap实现来替换掉它。这样做的结果会更好,是O(logn),而不是糟糕的O(n)

    3.java类加载机制

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析、初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制

    装载:查找和导入Class文件

    链接:把类的二进制数据合并到JRE中

    校验:检查载入Class文件数据的正确性

    准备:给类的静态变量分配存储空间

    解析:将符号引用转成直接引用

    初始化:对类的静态变量,静态代码块执行初始化操作

    双亲委派模式

    JDK1.2开始,java虚拟机规范推荐开发者使用双亲委派模式,其加载过程如下:

    (1).如果一个类加载器收到了类加载请求,它首先不会自己去尝试加载这个类,而是把类加载请求委派给父类加载器去完成。

    (2).每一层的类加载器都把类加载请求委派给父类加载器,直到所有的类加载请求都应该传递给顶层的启动类加载器。

    (3).如果顶层的启动类加载器无法完成加载请求,子类加载器尝试去加载,如果连最初发起类加载请求的类加载器也无法完成加载请求时,将会抛出ClassNotFoundException,而不再调用其子类加载器去进行类加载。

    双亲委派 模式的类加载机制的优点是java类它的类加载器一起具备了一种带优先级的层次关系,越是基础的类,越是被上层的类加载器进行加载,保证了java程序的稳定运行

    4.HTTP POST 和GET的区别和联系

    1.GET提交,请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,多个参数用&连接;如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0 %E5%A5%BD

    POST提交:把提交的数据放置在是HTTP包的包体中

    因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变

    2.GET提交时,传输数据就会受到URL长度的 限制,POST:由于不是通过URL传值,理论上数据不受 限

    3.安全性:POST的安全性要比GET的安全性高,通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存, (2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

    5.MYSQL5.7版本的新特性

    1.增加计算列

    MySQL5.7之前的版本,想要实现计算列的功能

    如定义c3为计算列: 
    create table t(id auto_increment not null, c1 int, c2 int, c3 int as (t1 + t2), primary key(id));

    这样,insert或者update c1和c2之后,c3的值会自动变化

    2.引入JSON列类型

    MySQL5.7之前的版本中,如果要使用JSON类型,只能在varchar或者text等字符类型的列中存储JSON类型的字符串,并通过程序解析使用JSON字符串。 
    MySQL5.7版本中,增加了JSON列类型以及JSON相关处理函数,如json_type(), json_object(), json_merge等。

    JSON列类型包括JSON数组和JSON对象两种

     

    6.Mysql数据库的操作

    两表查询:

    Select A.Aid,B.text from A left join B on A.Bid = B.Bid;

    例如:select xxx,xxx from xxx left join xxx on A.id = B.id group by xxx.

    嵌套查询:

    一个查询语句(select-from-where)查询语句块可以嵌套在另外一个查询块的where子句中,称为嵌套查询。其中外层查询也称为父查询,主查询。内层查询也称子查询,从查询

    简单子查询

    select name,age from person where age > 

    (

        select age from person

        where name = '孙权'

    )

    In嵌套查询

    in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。返回满足in列表中的满足条件的记录

    select name from person where countryid in 

    (

        select countryid from country

        where countryname = '魏国'

    )

     

    补充:如何创建索引

    对于索引来说,如果当我们创建数据库的时候,如果设置了主键,则mysql会自动给主键建立索引。

    同时我们也可以使用命令创建索引:create index t_user_user_id on t_user(user_id)

    以上两种就是我们创建索引的方式

    7.Static块以及代码块的执行顺序

    class A{
    public A(){
    System.out.println("Hello A");
    }
    {
    System.out.println("block A");
    }
    static{
    System.out.println("static A");
    }
    }


    public class B extends A{

    public B(){
    System.out.println("Hello B");
    }
    {
    System.out.println("Block B");
    }
    static{
    System.out.println("static B");
    }
    public static void main(String[] args) {
    B d = new B();
    }

    }

     

    输出:

    static A
    static B
    block A
    Hello A
    Block B
    Hello B

    思考一下:静态代码块> 普通代码块 > 构造代码块

  • 相关阅读:
    ajax请求发送json数据
    jQuery与Prototype冲突解决办法
    cookie设置HttpOnly、Secure属性
    web.config,system.web中加<machineKey
    登陆页面粒子效果
    cmd命令登陆oracle
    oracle 千万级数据表增加索引
    springboot报错:expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
    数据库备份
    unixbench性能测试跑分工具
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6517577.html
Copyright © 2011-2022 走看看