- 博客(6)
- 收藏
- 关注
原创 Java泛型---个人总结
目的:在创建对象或调用方法的时候才明确具体的类型。本质:参数化类型,即操作的数据类型被指定为一个参数。优点:1,不再需要强制转换,代码更加简洁。2,在编译期间没有警告,在运行期就不会出现ClassCastException异常,程序更加健壮。使用方式:1,泛型方法。2,泛型类1,泛型方法该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。规则:所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明.
2021-04-22 13:53:27
145
原创 MySql数据库索引失效场景
数据表的列上建立了索引,查询条件也是索引列。1,列于列对比select * from user where u_id = id;该情况会全表扫描,不会走索引。如果索引列是可空的,那么很可能是不会给其建立索引的,索引值是少于表的count(*)的值的,所以会扫描全表。这也是为什么在设计数据表时,应避免null值的出现。2,NOT条件select * from user where name is not null;select * from user where id <&.
2021-04-07 22:49:30
256
原创 java实现<生产者-消费者>的两种方式
1,两种方式简单介绍:1.1 使用Synchronized关键字Synchronized + wait() + notifyAll()注意点:判断条件用while循环,如果用if会出现虚假唤醒。1.2使用Lock接口ReentrantLock + Condition + await() + singsignalAll()注意点:Lock lock = new ReentrantLock(); //注意Lock 的实现类Condition condition = lock
2021-01-27 22:28:40
139
原创 JVM知识总结
JVM知识总结1,Java内存区域:1.1 程序计数器:1,当前线程所执行字节码的行号指示器。2,字节码解释器工作时通过改变程序计数器的值来选取下一条需要执行的字节码指令。3,每个线程都有一个独立的程序计数器,保证线程切换后能回到正确的执行位置。4,各个线程之间的程序计数器互不影响,独立存储在线程私有内存中。1.2 虚拟机栈1,线程私有,生命周期与线程相同。2,为虚拟机执行Java方法(也就是字节码)服务。3,方法执行时,虚拟机栈中同步创建一个栈帧,用于存储局部变量表,操作数栈,
2021-01-22 15:23:24
147
原创 JUC
JUC:java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks并发编程根本原因:充分利用CPU的资源java代码获取CPU核数:public static void main(String[] args) { System.out.println(Runtime.getRuntime().availableProcessors()); }1,线程6种状态:public e
2021-01-21 01:00:03
152
原创 Linux部署Java Web环境(JDK+Tomcat)
一,安装JDK1 下载JDKlinux版本源码包JDK Download2 执行命令,新建JDK安装目录mkdir /usr/java3 解压JDK源码包到该文件夹下tar xzf jdk-8u221-linux-x64.tar.gz -C /usr/java4 修改profile文件,添加环境变量vim /etc/profile按 i 进入至编辑模式export JAVA_HOME=/usr/java/jdk1.8.0_221export CLASSPATH=$JAVA_HOME
2021-01-15 02:16:52
177
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人