Wesley13 Wesley13
2年前
java多线程的学习
1,进程和线程 1,一个进程和另外一个进程的之间是隔离的。但是对cpu来说都是一样的。一边打游戏,一边看电影。2,两个线程是共享着同一片资源,在同一个进程里面,例如在腾讯视频,同时打开两部电影。3,他们的目的都是充分的利用cpu。4,java虚拟机就是一个进程。5,线程的实现两种方式 Runnable接口,继承Threa
Stella981 Stella981
2年前
SpringBoot,用200行代码完成一个一二级分布式缓存
   缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库复杂。早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快。后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存获取数据,都还是要通过网络访问才能获取,效率相对于早先从内存里获取,还是差了点。如果一个应用,比如传统的企业应用,一次页面显示,要访问数次redis,
Wesley13 Wesley13
2年前
Java字节码详解
也许你写了无数行的代码,也许你能非常溜的使用高级语言,但是你未必了解那些高级语言的执行过程。例如大行其道的Java。Java号称是一门“一次编译到处运行”的语言,但是我们对这句话的理解深度又有多少呢?从我们写的java文件到通过编译器编译成java字节码文件(也就是.class文件),这个过程是java编译过程;而我们的java虚拟机执行的就是字节码文件
Wesley13 Wesley13
2年前
PHP底层的运行机制与原理
PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件模块的软件框架。是一个强大的UI框架。简言之;PHP动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后ZEND虚拟机顺次执行这些指令完成操作。PHP本身是用C实现的,因此最终调用的也是C的函数,实际上
Wesley13 Wesley13
2年前
Java,传奇的一生!
 如果说用“永存、曲折、已死、重生”来形容Java,笔者以为一点也不为过。1991年,JamesGosling带领着名为“GreenTeam”的团队着手研发一种新的语言以及专为下一代数字设备和计算机使用的网络系统。历时4年辛勤工作后,该项目最终修成正果并取名为Java。 Java有着类似于C的语法并有“一次编译,随处运行”的灵便性。透过虚拟机机制
Wesley13 Wesley13
2年前
Java内存区域与内存溢出异常
Java的内存管理是一个老生常谈的问题,虽然Java号称可以自动管理自己的内存,使程序员从内存管理的围墙解放出来,但是一连串的内存泄漏和溢出方面的问题,使得我们不得不去深入了解Java的内存管理机制。本篇文章将从Java的内存区域开始剖析Jvm的内存机制,阐述内存溢出异常产生的原因。运行时数据区域众说周知,Java程序是运行在Java虚拟机
Stella981 Stella981
2年前
JVM调优之经验
在生产系统中,高吞吐和低延迟一直都是JVM调优的最终目标,但这两者恰恰又是相悖的,鱼和熊掌不可兼得,所以在调优之前要清楚舍谁而取谁。一般计算任务和组件服务会偏向高吞吐,而web展示则偏向低延迟才会带来更好的用户体验。本文从性能和经验上来分享一下JVM参数的设置。调优之前可以先用XX:PrintFlagsFinal来查看虚拟机是否默认开启某
Wesley13 Wesley13
2年前
JAVA内存模型与线程以及volatile理解
Java内存模型是围绕在并发过程中如何处理原子性、可见性、有序性来建立的。一、主内存与工作内存  Java内存模型主要目标是在虚拟机中将变量存储到内存和从内存中取出变量。这里的变量包括:实例字段、静态字段、构成数组对象的元素;不包括局部变量和方法参数,因为它们是线程私有的。Java内存模型规定了所有变量都存储在主内存,线程的工作内
Stella981 Stella981
2年前
SpringBoot 2,用200行代码完成一个一二级分布式缓存
缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库负载。早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快。后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存获取数据,都还是要通过网络访问才能获取,效率相对于早先从内存里获取,还是不够逆天快。如果一个应用,比如传统的企业应用,一次页面显示,要访问数次redis,那效果
Stella981 Stella981
2年前
JVM中锁优化简介
本文将简单介绍HotSpot虚拟机中用到的锁优化技术。自旋锁互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。而在很多应用上,共享数据的锁定状态只会持续很短的一段时间。若实体机上有多个处理器,能让两个以上的线程同时并行执行,我们就可以让后面请求锁的那个线程原地自旋(