memcache与redis的区别和联系

redis:支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。

memcache:老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。

ArrayList和hashMap代码解析

**1、ArrayList:**
Arraylist 默认大小是10
ArrayLIst扩容过程:在add的时候会先做判断:如果先加+1的容量大于默认存储大小则要调用grow()方法,grow()方法会扩容到原来大小的1.5倍,然后调用Arrays.copyof()传入旧数据和新容量,该方法的内部调用的是System.arrayCopy()方法创建新数组并且返回。

**2、 hashMap**
默认大小16 当发现容量到达12是会调用resize()方法
首先通过oldtable.length 获取原oldCap
然后计算新的容量 旧容量的两倍
然后new一个容量为新容量的新newTab
然后就是遍历oldtab数据hash到新newTab上
然后返回newTab

java面试知识点

1、static不能修饰局部变量。因为static修饰的变量属于类所有但是如果修饰局部变量则和static意义相反

2、如果子类重写父类方法那么调用的值是子类方法,子类重写父类时不能改变方法体(如只继承但未实现重写则调用父类方法)

3、在Servlet处理请求的方式为 以线程方式

4、当对象为null时被回收

5、switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte。long,string 都不能作用于swtich。 在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型,从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。

6、short s1 = 1; s1 += 1;可以正确编译 +=是java自带运算所以可以自动转换

7、Integer a = new Integer(3);

    Integer b = 3;                  // 将3自动装箱成Integer类型
    int c = 3;
    System.out.println(a == b);     // false 两个引用没有引用同一对象
    System.out.println(a == c);     // true a自动拆箱成int类型再和c比较
    

8、 Integer f1 = 100, f2 = 100, f3 = 150, f4 = 150;

    System.out.println(f1 == f2); //true
    System.out.println(f3 == f4);//false 

简单的说,如果整型字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。

9、栈:存放一个基本数据类型的变量、一个对象的引用、函数调用的现场 栈很小
堆:存放new的对象、和实例化的对象
静态区:如直接书写的100和new的字符串、常量都放在静态区

String str =new String ("hello");
变量 str放在栈 new的应用放在堆 hello放在静态区

10、Math.round(11.5) 四舍五入的原则是在原数上加0.5

11、构造器不可以被继承、不可以被重写、但可以被重载

12、如果equals的判断值等于true那么他们的hashcode必相等 反正相反

13、java在编译时程序会先查看常量池中是否存在以声明的对象如果没有则自动创建一个,如果有那直接引用该对象

String s1 = "AB";
最多创建一个String对象,最少不创建String对象.
如果在方法区中的常量池中存在”AB”,那么s1直接引用,不需要创建String对象,否则先在常量池中创建”AB”,再引用

String s2 = new String("AB");
最多创建两个String对象,至少创建一个String对象,先看常量池中是否有”AB”,如果没有先创建,然后在堆中创建一个String对象,引用常量池中”AB”的地址,再把自己的地址给s2.
new关键字绝对会在堆空间中创建内存区域,所以至少创建一个对象
14、java使用的编码是unicode 所以char存储一个中文是可以的,一个char占两个字节

15、https://www.cnblogs.com/dangzhenjiuhao/p/4585389.html

17、String srt=new String("123"); //是在堆中存放对象
String str1="123";//是在栈中存放对象
== 比较的是引用。

18、throw用于抛出明确的异常适用于方法体内
throws用于抛出不明确的异常适用与方法名上

19、饿汉式单例可以解决线程安全问题 。
// 饿汉式:线程安全
public class Singleton_饿汉式 {

// 懒汉式没有直接实例化他的原因是,如果不需要用到此类,提前实例化它会浪费内存
// 饿汉式通过提前实例化可以解决线程安全性问题,但是可能存在可浪费内存的问题
private static Singleton_饿汉式 singleton = new Singleton_饿汉式();

private Singleton_饿汉式() {}

public static Singleton_饿汉式 getInstance() {
    return singleton;
}

}

public class Singleton_双重校验线程安全 {

private static Singleton_双重校验线程安全 singleton;

private Singleton_双重校验线程安全() {}

// 必须用两个if判断,不然还是会被实例化多次
public static Singleton_双重校验线程安全 getInstance() {
    if (singleton == null) {
        synchronized (Singleton_双重校验线程安全.class) {
            if (singleton == null) {
                singleton = new Singleton_双重校验线程安全();
            }
        }
    }
    return singleton;
}

}

用 接口来写单例模式

// 接口
public interface MySingleton {

void method();

}
// 实现类
public enum Singleton implements MySingleton {

INSTANCE {
    @Override
    public void method() {
        System.out.println("我是枚举的单例模式");
    }
};

public static MySingleton getInstance() {
    return Singleton.INSTANCE;
}

}
​20、String str = new String("123"); 创建了几个对象?

两个:当常量池里面不存在 “123” 的时候,会在堆、常量池里面都创建一个字符串对象

一个:当常量池里面已经存在了 “123” 的时候,仅仅在堆上面创建

21、hashMap如何判断值重复?1,首先使用hashcode比较如果hashcode不重复则值不重复 2,如果hashcode重复则用equals比较 如果hashcode和equals都相同则值重复

22、基本数据类型的大小
整数:
byte 1 字节
short 2 字节
int 4 字节
long 8 字节
浮点数:
float 32 字节
double 64 字节
布尔类型:
boolean 4 字节
字符类型:
char 2 字节

23.collection是一个集合接口,他是集合的顶级元素,为集合对象提供了基本操作方法
collections是一个集合元素的工具类,提供了对集合元素进行查找、排序、以及线程安全等操作

24、list 、set、map之间的区别?

请输入图片描述请输入图片描述

25、hashset底层是由hashmap实现
hashset的key保存在hashmap的key上
hashmap的value统一是

26、AOP简单来说就是把那些与业务无关,却与系统业务模块共同调用的代码逻辑封装起来,减少了代码的重复,降低了代码的耦合度,有利于未来代码的可操作性和可维护性。
优点/引入的目的是什么:
1、脱开,或者降低类之间的耦合 2、提倡面向接口编程,实施依赖倒换原则 3、提高系统的可插入,可修改,可测试特性。
IOC传统的java开发模式,当我们需要一个对象时需要使用new或者getInstance等方法直接或间接的调用构造方法来获得对象,而下spring中spring使用工厂模式,为我们创建对象,不用我们自己创建,直接调用spring提供的对象就可以了。
AOP的一些应用场景?
权限 Authentication
缓存 Caching
调试 Debugging  
日志记录 logging
事务 Transactions

27、递归调用可以导致栈溢出 不断创建对象可以导致堆溢出

28、wait()是ONject的方法 会释放锁 sleep()是Thread的方法不会释放锁

29、悲观锁:认为每次数据更新都会造成问题 再语句后加 for update (类似排他锁 再修改前先尝试数据加锁 如果加锁成功则说明数据可修改,反之说明数据正在被修改)
乐观锁:认为每次数据更新都不会造成问题 可使用数据加版本号 解决 version (类似CAS无锁)

30、java代码编译过程:
首先java源代码--->通过jdk的javac编译--->.class文件--->在通过jvm(java虚拟机)--->编译成机器可执行的二进制机器码

Jetbrains系列产品2019.3.3最新激活方法

            **本文是转载过来的 主要是帮助大家查找**

大家熟知Jetbrains的话应该知道:他们家的所有产品升级到2018.2.1及以上版本后,先前可用的注册服务器都失效了,无法激活升级到最新版本体验最新黑科技。

这次要送的这份礼就是: Jetbrains全系列产品2019.3.3及以下版本(理论上适用于目前所有新老版本)最新注册服务器(License Server)的破解,可使用它来激活你手头上的Jetbrains IDE,具体支持产品和版本见下文的列表。

传送门:
[百度云下载]
https://pan.baidu.com/s/1FrpavOrzkzLDYShndnqRZQ (baidu pan),提取码(password):2c4t。
[OneDrive]
https://1drv.ms/u/s!Atf-z4aXHKwch0Mm0fjaaNlEQey4?e=jGlzYb (download link),
需扶墙。
sha1sum: 8bed1acf58aae21b5b0cee99edf36ea5904f8158
具体使用方法已写在压缩包的 README.pdf / README.txt内。
(要个毛的readme,直接把jetbrains-agent-latest.zip拖进IDE就行了)
本站下载的包中都是带有important.txt的,缺失这个文件会不定时有弹框出现,请注意看弹框内容。

在以下IDE版本测试可成功激活(v3.0.3):

IntelliJ IDEA 2019.3.3及以下
AppCode 2019.3.5及以下
CLion 2019.3.4及以下
DataGrip 2019.3.3及以下
GoLand 2019.3.3及以下
PhpStorm 2019.3.3及以下
PyCharm 2019.3.3及以下
Rider 2019.3.4及以下
RubyMine 2019.3.3及以下
WebStorm 2019.3.3及以下


本文作者: Neo Peng
本文链接: https://zhile.io/2018/08/17/jetbrains-license-server-crack.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议。转载请注明出处!