TomorrowLi's Blog


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

java有关线程的几种区别

发表于 2021-07-18 | 分类于 javaEE
字数统计: 416 | 阅读时长 ≈ 1

Vector和ArrayList的区别

(1)Vector原来的方法的名称比较长,ArrayList的方法名比较短
(2)Vector是线程安全的(同步)加的同步锁,效率低
ArrayList是线程不安全的(不同步),没有加锁,效率高

StringBuilder和StringBuffer的区别

(1)StringBuilder 一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。线程不安全的(不同步),没有加锁,效率高

(2)StringBuffer线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 线程安全的(同步)加的同步锁,效率低

数组(Array)和集合(List)的区别

(1)数组的长度固定,集合的长度可变
(2)数组既可以存储基本数据类型数据,也可以存储引用数据类型
集合只能存储引用数据类型

HashMap 和 HashTable的区别

(1)HashMap是线程不安全的,是不同的,没有加同步锁,效率高
(2)HashTable是线程安全的,是同步的,加了同步锁,效率比较低
(3)HashMap是可以存储null值null键的。
(4)HashTable是不可以存储null值null键的,是唯一一个与文件操作的集合。

javaEE之Set集合和List集合的区别

发表于 2021-07-18 | 分类于 javaEE
字数统计: 131 | 阅读时长 ≈ 1

Collection :单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是 java.util.List和java.util.Set。

java.util.List<ArrayList,LinkedList,Vector>

特点:    
1. 是一个有序集合,存储和遍历的顺序是一样的
2. 可以存储重复元素
3. 可以用普通for循环遍历

java.util.Set<HashSet,TreeSet,LinkedHashSet>

特点:    
1. 是一个无序集合
2. 不可以存储重复元素
3. 不可以用普通for循环遍历

image

javaEE之Integer的自动装箱和自动拆箱

发表于 2021-07-18 | 分类于 javaEE
字数统计: 246 | 阅读时长 ≈ 1

1、自动装箱

Integer i1=100;
Integer i2=100;
System.out.println(i1==i2);//true

Integer i1=200;
Integer i2=200;
System.out.println(i1==i2);//false
/*自动装箱调用的是valueOf()方法,执行valueOf()方法会先判断i的值。
因为在Integer的缓存中放入了常见的int值-128-127;提高执行效率
如果需要自动装箱的值在缓存的范围内,会从常量池中拿出数据,不需要new对象。所以比较相等。
否则会调用Integer的构造方法进行自动装箱,会new对象,我们知道new出的是地址值肯定不一样*/
public static Integer valueOf(int i) {
    if (i >= IntegerCache.low && i <= IntegerCache.high)
        return IntegerCache.cache[i + (-IntegerCache.low)];
    return new Integer(i);
}

static final int low = -128;
static final int high= 127;

2、自动拆箱

Integer i1=200;
int i2=200;
System.out.println(i1==i2);//true

/*自动拆箱调用的是intValue()方法会直接返回value的值,
在比较是i1转换为int类型的数据进行比较*/
public int intValue() {
    return value;
}
private final int value;

javaEE之重载和覆盖重写的区别

发表于 2021-07-18 | 分类于 javaEE
字数统计: 598 | 阅读时长 ≈ 3

重载

在使用重载时只能通过不同的参数样式(Overload)

1、参数的个数不同

public static void get(int a){

}
public static void get(int a, int b){

}

2、参数的类型不同

public static void get(int a){

}
public static void get(double a){

}

3、参数的顺序不同

public static void get(int a,double b){

}
public static void get(double a,int b){

}

4、与参数的返回值类型无关

public static void get(int a){

}
public static int get(int a){

}

重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准。

覆盖重写(Override)

如果子类父类中出现重名的成员方法,这时的访问是一种特殊情况,叫做方法重写 (Override)。

1、覆盖重写必须存在父与子类的继承关系中

class Fu { 
    public void show() { 
         System.out.println("Fu show");         
     }     
 } 
class Zi extends Fu { //子类重写了父类的show方法     
     public void show() {     
             System.out.println("Zi show");       
       }     
 }
 public class ExtendsDemo05{ 
        public static void main(String[] args) {  
                Zi z = new Zi();  // 子类中有show方法,只执行重写后的show方法     
                z.show();  // Zi show         
    }      
} 

2、方法名必修相同参数也必修相同

3、访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>(default)>private)

//就是子类的方法的修饰符必须大于父类的修饰
class Fu { 
    public void show() { 
         System.out.println("Fu show");         
     }     
 } 
class Zi extends Fu { //子类重写了父类的show方法     
     protected void show() { //报错    
             System.out.println("Zi show");       
       }     
 }

4、重写的应用

子类可以根据需要,定义特定于自己的行为。既沿袭了父类的功能名称,又根据子类的需要重新实现父类方法,从 而进行扩展增强。比如新的手机增加来电显示头像的功能,代码如下:


public class Phone {
    public void  call(){
        System.out.println("打电话");
    }
    public void messige(){
        System.out.println("发短信");
    }
    public void show(){
        System.out.println("显示号码");
    }
}
//智能手机
public class NewPhone extends Phone {
    public void show(){
        super.show();//调用父类的show()方法
        System.out.println("显示姓名");
        System.out.println("显示头像");
    }

}

注意事项

1.子类方法覆盖父类方法,必须要保证权限大于等于父类权限。

2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。

javaEE 之 static 关键字的说明

发表于 2021-07-18 | 分类于 javaEE
字数统计: 431 | 阅读时长 ≈ 2

1、凡是有static关键字修饰的变量或方法,它是不属于对象的,,而是属于本类的,可以通过【类名.变量名 】或 【类名.方法名】使用

        //无论是成员变量,还是成员方法。如果有了static,都推荐使用类名称进行调用。

        静态变量:类名称.静态变量

        静态方法:类名称.静态方法()

      //创建一个学生类
        public class Student {
            private String name;
            private int age;
            //创建静态变量room
            static String room;
         }
        //创建对象
        Student one=new Student();
        //也可以对象调用static变量对其赋值,但是不推荐使用
        one.room="101教室";
        //一般通过本类来调用,或对其赋值
        Student.room

2、静态方法可以调用可以使用static变量,但是不能使用非静态变量

private int age;
static String room;

public static void max(){
    System.out.println(room);//正确
    //出错,静态方法不能调用非静态变量
    System.out.println(age);
}

3、非静态方法可以使用静态变量,也可使用非静态变量

//原因:因为在内存当中是【先】有的静态内容,【后】有的非静态内容。

//“先人不知道后人,但是后人知道先人。”
private int age;
static String room;

public static void max(){
    System.out.println(room);//正确
    System.out.println(age);//正确
}

4、静态方法中不可使用this关键字

public static void max(){

    System.out.println(this);//会报错
}

//原因:
    this代表当前对象,通过谁调用的方法,谁就是当前对象

    如果没有static关键字,那么必须首先创建对象,然后通过对象才能使用它。

    如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。

javaEE 之 this的使用

发表于 2021-07-18 | 分类于 javaEE
字数统计: 121 | 阅读时长 ≈ 1

1、this代表当前对象的意思(this就是谁调用了类的方法,this就是谁)。

private String name;
private int age;
public void call(String name){
    //student调用call,这里的this就是student
    System.out.println(name+this.name);//name+student.anme

    System.out.println(this);
    //lianxi.Student@4554617c
    //@前面的就是包名.所在类。后面的16进制的地址值
}
//创建了一个对象student
Student student=new Student();
//student对象调用了call方法
//this就是谁调用了类的方法,this就是谁
student.call("张三");

JavaEE 之 &和&& |和||

发表于 2021-07-18
字数统计: 102 | 阅读时长 ≈ 1

1、&和&&区别

结果是一样的,&&具有短路的效果,如果&&前面的值为false时,后面

不执行;&无论前面的值是true还是false,后面的表达式继续执行

2、|和||区别

结果是一样的,||具有短路的效果,如果||前面的值为true时,后面

不执行;|无论前面的值是true还是false,后面的表达式继续执行

用Google插件看各大视频网的VIP视频

发表于 2021-07-18 | 分类于 google插件
字数统计: 30 | 阅读时长 ≈ 1

首先你必须科学上网

1、你可以用蓝灯

2、可以看这个链接 点击 出自这里

推荐五款常用的Google插件

发表于 2021-07-18 | 分类于 google插件
字数统计: 345 | 阅读时长 ≈ 1

首先你要学会科学上网

1、AdBlock

最受欢迎的Chrome扩展,拥有超过4000万用户!屏蔽整个互联网上的广告。真他妈的实用,我强烈推荐

image

2、Infinity新标签页

Infinity新标签页,基于Chrome的云应用服务,让你更优雅、轻松地使用Chrome。

image

3、Imagus

鼠标指针悬停在链接或缩略图上时直接在当前页面的弹出视图上显示这些图片、HTML5 视频/音频和内容专辑

image

4、Tampermonkey(油猴)

Tampermonkey 是一款免费的浏览器插件,也是一款最为流行的用户脚本管理器。Tampermonkey是第一个可以用来让 Chrome 支持更多 UserScript 的 Chrome 插件扩展。一直号有“Chrome第二应用商店的”它可以加入更多的 Chrome 本身不支持的用户脚本功能它适用于基于 Blink 和 WebKit 的浏览器,像是 Chrome, Opera Next, Safari 和 Firefox 。

image

5、Chrono下载管理器

Chrono下载管理器是Chrome浏览器下第一款(也是唯一一款)功能全面的下载管理工具。Chrono接管你在Chrome中的所有下载,你的所有下载管理工作都在浏览器中完成,而不需要安装另外的程序。Chrono与Chrome浏览器紧密地整合在一起,添加了对浏览器菜单、工具栏和快捷键的支持。

image

爬取美女图片并按照文件进行存储

发表于 2021-07-18 | 分类于 爬虫
字数统计: 168 | 阅读时长 ≈ 1

欢迎来到python!学习。

代码演示:

import re
import requests
from bs4 import BeautifulSoup
def fand_email(url,counts):
    data=requests.get(url)
    content=data.text
    pattern = r'[0-9a-zA-Z._]+@[0-9a-zA-Z._]+\.[0-9a-zA-Z._]+'
    p = re.compile(pattern)
    m = p.findall(content)
    with open('emal.txt','a+') as f:
        for i in m:
            f.write(i+'\n')
            print(i)
            counts= counts+1
return counts
def main():
    counts=0
    numbers=0
    for i in range(1,32):
        url='http://tieba.baidu.com/p/2314539885?pn=%s'% i
        number=fand_email(url,counts)
        numbers=numbers+number
    print(numbers)
if __name__ == '__main__':
    main()

文件 text.py

import requests
from bs4 import BeautifulSoup


def fand_load_image(url):
    wb_date = requests.get(url)
    #wb_date.encoding = 'gbk'
    soup = BeautifulSoup(wb_date.text, 'lxml')
    print(soup)
    images = soup.select('div.image-item-inner > a')
    print(images)
    #image=images[0].get('href')
    #print(image)

url='https://www.toutiao.com/a6520385683419300359/'
fand_load_image(url)

结果展示

image

<i class="fa fa-angle-left"></i>1…345<i class="fa fa-angle-right"></i>

44 日志
14 分类
38 标签
RSS
GitHub E-Mail ZhiHu
推荐阅读
  • 静觅
  • 廖雪峰python教程
  • stormzhang
  • Howiezhao
  • PyZh
  • Python最佳实践指南
  • 敖丙
  • Top K
© 2024 TomorrowLi
本站访客数:
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.3
博客全站共23.3k字