
概念
不止码农~~~~
(本人很懒~~~没有留下什么。。。)不做搬运工。。
展开
-
Git相关命令:
分支:创建分支:git branch <分支名> //这两个很少用,基本都是用下面的一步完成的命令。git branch -v 查看分支切换分支:git checkout <分支名>- 一步完成:git checkout -b <分支名>合并分支:先切换到主干 git checkout maste...原创 2019-08-08 10:38:15 · 167 阅读 · 0 评论 -
垃圾回收算法(4种)垃圾回收的方式有哪些
垃圾回收算法(4种)GC算法是内存回收的方法论,垃圾收集器就是算法落地实现。引用计数复制算法标记-清除标记-整理对垃圾回收期的理解:目前为止没有完美的收集器出现,更没有万能的收集器,只有针对具体应用最合适的收集器,进行分代收集。垃圾回收的方式有哪些?黄色的线表示GC线程。1.Serial(串行垃圾回收器)它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线...原创 2019-08-16 10:57:31 · 4530 阅读 · 0 评论 -
JVM垃圾回收的时候如何确定垃圾?什么是GC Roots?Java中可以作为GC Roots的对象?
1.什么是垃圾?简单的说就是内存中已经不再被使用到的空间就是垃圾。2.要进行垃圾回收,如何判断一个对象是否可以被回收?1.引用计数法判断(已经被淘汰):简单地说,就是给对象添加一个引用计数器,**每当有一个地方引用它,计数器值加1,每当有一个引用失效时,计数器减1。**任何时刻,计数器值为0时,这个对象就是不可能在被使用的,那么这个对象就是可回收对象。2.枚举根节点做可达性分析(根搜索路...原创 2019-08-12 10:13:33 · 586 阅读 · 0 评论 -
Java类加载全过程
类加载机制-JVM把class文件加载到内存,并对数据进行校验、解析、和初始化,最终形成JVM可以直接使用的Java类型的过程。详细过程:加载------》验证------》准备------》解析------》初始化------》使用------》卸载1.加载将class文件字节码内容加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个代表这个类的java.lan...原创 2019-08-11 23:39:43 · 226 阅读 · 0 评论 -
JMM内存模型
JMM是Java内存模型,主要目标是定义程序中变量的访问规则,如图所示。所有的共享变量都存储在主内存中。每个线程有自己的工作内存,工作内存中保存的是主内存中变量的副本,线程对变量的读、写等操作必须在自己的工作内存中进行。而不能直接操作主内存的变量。在多线程进行数据交互时,例如线程A给一个共享变量赋值,由线程B来读取这个值,线程A必须在自己的工作内存中修改完后,将这个值写会到主...原创 2019-08-11 23:24:09 · 171 阅读 · 0 评论 -
JVM内存模型五个部分介绍
JVM内存模型:主要指运行时的数据区,包括五个部分。栈(Stack):也叫方法栈,是线程私有的,线程在执行每个方法时,都会创建一个栈阵,用来存储局部变量表,操作栈、动态链接,方法出口等信息,调用方法时执行入栈,方法返回时执行出栈。本地方法栈:与栈类似,也是用来保存线程执行方法时的信息,不同的是,执行JAVA方法时,使用栈,执行native方法时,使用本地方法栈。程序计数栈:保存当前线...原创 2019-08-11 19:53:16 · 1375 阅读 · 0 评论 -
OOM
Java中OOM:- java.lang.StackOverflowError:直接上代码说明public class test { public static void main(String[] args) { stackOverflow(); } private static void stackOverflow() { stac...原创 2019-08-15 00:45:19 · 215 阅读 · 0 评论 -
强引用、软引用、弱引用、虚引用分别是什么?
整体架构如图:强引用(默认支持模式):当内存不足时,JVM开始垃圾回收,**对于强引用的对象,就算是出现了OOM(out of memory(就是内存用完了))也不会对该对象进行回收,**死都不收。强引用就是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾回收器不会碰这种对象。例如:public class StrongRefDemo { publ...原创 2019-08-13 19:21:01 · 749 阅读 · 0 评论 -
消息队列,消息队列在项目中的使用,消息队列的弊端
背景:在分布式系统中是如何处理高并发的。由于在高并发的环境下,来不及同步处理用户发送的请求,则会导致请求发生阻塞。比如说,大量的insert,update之类的请求同时到达数据库MYSQL,直接导致无数的行锁、表锁,甚至会导致请求堆积很多。从而出发too many connections 错误。使用消息队列中【异步通信】可以解决 。消息队列的同步和异步:并行:排队:在高并发的情况下,很...原创 2019-08-09 09:13:36 · 490 阅读 · 0 评论 -
JVM系统默认值和调优
JVM的参数类型:** 1. 标配参数:**java -version、java -help、java -showversion.** 2.X参数(了解):**-Xint、解释执行。-Xcomp、第一次使用就编译成本地代码。-Xmixed。混合模式。** 3.XX参数:jps -l(查进程号)。jinfo -flag 具体参数 java进程编号(查看配置)**- Bool...原创 2019-08-13 13:21:25 · 233 阅读 · 0 评论 -
JVM垃圾回收机制,GC发生在JVM哪部分,有几种GC,它们的算法是什么?
GC发生在JVM的哪部分:发生在堆(heap)中.GC是什么?分代收集算法。次数上频繁收集-------》在Young区。Minor GC次数上较少收集-------》在Old区。Full GC基本不动Perm区GC4大算法:1.引用计数法 (已经被淘汰):2.复制算法(Copying):**发生在年轻代中:**年轻代中使用的是Minor GC,这种GC算法采用的是复制算法(...原创 2019-08-08 11:54:40 · 2564 阅读 · 0 评论 -
MySQL什么时候适合建索引,什么时候不适合建索引
索引是什么?MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。你可以理解为“排好序的快速查找的数据结构”。一般来说索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储在磁盘上。优势类似大学图书馆建数目索引,提高数据检索的效率,降低数据库的IO成本。通过索引列对数据进行排序,降低数据排序的成本...原创 2019-08-08 11:33:57 · 2060 阅读 · 0 评论 -
Redis持久化的类型?他们有什么区别?
Redis提供了2个不同形式的持久化方式:RDB(Redis DataBase):在指定的时间间隔内,将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot块照,它恢复时是将快照文件直接读到内存里。(备份是如何执行的?:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是...原创 2019-08-08 11:03:13 · 276 阅读 · 0 评论 -
美团点评、小米、菜鸟等等目前遇到的面试题(更新中)
美团面试题:1.为什么要用SOA?有什么好处?面向服务编程,是一种思想,一种方法论,一种分布式的服务架构,SOA是⼀种软件架构,它⽤于构建由⼀组松耦合,⿊盒组件组成的商业应⽤。每个组件代表 一个独立服务。优点:服务之间松耦合、组织和使用来自不同拥有者的服务能力。统一的方式去发布、发现、交互和调用服务、而不需要知道底层技术细节。、可组合的、可全局访问的功能。用途:SOA解决多服务凌乱问题,...原创 2019-09-14 20:39:29 · 1053 阅读 · 0 评论