Java
文章平均质量分 72
程序员蛋蛋
专注Java技术干货分享,输出高质量原创JAVA系列文章,帮助程序员一起成长。回复 【资源】免费获取最有价值的资源,你懂的
展开
-
玩转线程池
多线程的异步执行方式,虽然能够最大限度发挥多核计算机的计算能力,但是如果不加控制,反而会对系统造成负担。线程本身也要占用内存空间,大量的线程会占用内存资源并且可能会导致Out of Memory。即便没有这样的情况,大量的线程回收也会给GC带来很大的压力。为了避免重复的创建线程,线程池的出现可以让线程进行复用。通俗点讲,当有工作来,就会向线程池拿一个线程,当工作完成后,并不是直接关闭线程,而是将这...原创 2019-11-11 09:24:39 · 175 阅读 · 0 评论 -
ThreadLocal源码分析
ThreadLocal类提供了线程局部 (thread-local) 变量。这些变量与普通变量不同,每个线程都可以通过其 get 或 set方法来访问自己的独立初始化的变量副本。ThreadLocal 实例是private static 类型,它们希望将状态与某一个线程(例如,用户 ID 或事务 ID)相关联。-------ThreadLocal类注释首先看一下ThreadLocal的部...原创 2019-11-05 13:58:50 · 211 阅读 · 0 评论 -
线程封闭之ThreadLocal和栈封闭
线程封闭当访问共享数据时,通常是要使用同步。如果要避免使用同步,就是不提供共享数据。如果仅在单线程中访问数据,就不需要同步,这种技术就叫做线程封闭,它是实现线程安全最简单的方式之一。当某个对象封闭在一个线程当中时将自动实现线程安全性,即使被封闭的对象本身它并不是安全的,实现线程主要有三种方式。...原创 2019-11-03 13:42:24 · 522 阅读 · 0 评论 -
CPU缓存与内存屏障解析
CPU缓存CPU缓存是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度比内存快得多。高速缓存主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度比内存快得多,这样会使CPU花费很长时间等待数据或者将数据写入内存,当CPU调用大量数据时,可以先从缓存中调用,从而加快读取速度。CPU多级缓存在CPU缓存出现不久,随着系统越来越复杂,高速缓存和主内存之间的...原创 2019-10-31 14:31:24 · 646 阅读 · 0 评论 -
秒懂JDK,JRE,JVM区别与联系
JDKJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。...原创 2018-12-09 21:04:00 · 302 阅读 · 0 评论 -
面向对象五大基本原则详解
面向对象五大基本原则单一职责原则计算器实例加法类AddJiSuanQi减法类SubJiSuanQi开放封闭原则(OCP)开放封闭原则示例(书店售书)类图代码实现第一个办法:第二个办法:第三个办法:代码实现归纳变化:扩展接口再扩展实现:代码实现里氏替换原则(LSP)问题描述产生原因解决办法实例接口隔离原则问题描述问题由来解决问题实例没有实现接口隔离的代码如此实现的话显然是有问题的,为什么一个类里面会...原创 2018-12-06 17:27:36 · 9129 阅读 · 0 评论 -
Java equals方法详解
Object中的equals()object中的的equals方法用于比较两个对象是否相等,该方法源码如下:public boolean equals(Object obj) { return (this == obj); }对象均有内存地址和和其具体内容,而object中的equals方法是比较的两个对象内存地址是否相同,即obj1.equals(obj2)为tr...原创 2018-12-13 19:36:12 · 3807 阅读 · 0 评论 -
理解final关键字
final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。一.final关键字基本用法1.修饰变量凡是对成员变量或者局部变量(在方法中的或者代码块中的变量称为本地变量)声明为final的都叫作final变量。final变量经常和stat...原创 2018-08-07 22:24:12 · 93937 阅读 · 10 评论 -
多态的理解
多态:事物运行过程中存在不同的状态多态存在的条件:必须具有继承关系,子类要重写父类的方法,父类引用子类的对象例如一个父类Animal ,子类 Cat通过输出结果可以很充分的体现了多态的三个前提1.必须有继承关系Cat继承Animal2.必须重写父类方法子类Cat重写了父类的eat,rn,sleep方法3.父类引用子类对象在测试类中,父类Animal ...原创 2018-08-09 19:47:42 · 480 阅读 · 0 评论 -
Linux服务器搭建(二)
Linux安裝好后就要开始搭建web环境了搭建web环境需要jdk,mysql,tomcat这三个软件这三个软件下载地址:链接:https://pan.baidu.com/s/1twEJsEVzqA_JhHJrvXtuKQ 密码:63kw软件建议安装在 cd /usr/local目录下mkdir jdk1.8mkdir tomcatmkdir mysql创好的文件夹...原创 2018-08-04 22:13:15 · 259 阅读 · 0 评论 -
Linux服务器搭建(一)
服务器搭建,首先要安装LinuxVMware虚拟机和centos镜像文件是必不可少的VMware下载地址如下链接:https://pan.baidu.com/s/1mOqS7W24pvJF8tDiO7CN1w 密码:77ybcentos下载地址:https://www.linuxidc.com/Linux/2016-08/133846.htm下载后,傻瓜式下一步即可安装成功,如...原创 2018-08-03 23:04:25 · 399 阅读 · 0 评论 -
位移运算符
位移运算,首先要理解进制转换,以十进制,二进制转换为例正整数和负整数二进制转换也不相同正整数:正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。2:其二进制就是00000010正整数二进制转成十进制:0*2^0+1*2^1=2负整数:负数二进制表示负数是通过补码作为负数二进制表示而补码等于原码在保持符号位不变的情况下其余位0和1互换得到反...原创 2018-07-26 14:22:00 · 1836 阅读 · 0 评论