Mark

秒懂JVM的三大参数类型,就靠这十个小实验了

雨燕双飞 提交于 2020-09-26 17:34:40
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者 | 悟空哥 来源 | 悟空聊架构(ID:PassJava666) 转载请联系授权(微信ID:PassJava) ❝ 你好,我是 悟空哥 , 「7年项目开发经验,全栈工程师,开发组长,超喜欢图解编程底层原理」 。 手写了2个小程序 , Java刷题小程序,PMP刷题小程序 ,已发布到我的公众号菜单。 ❞ 本实验的目的是讲解 JVM 的三大参数类型。在 JVM调优 中用到的最多的 XX 参数,而如何去查看和设置 JVM 的 XX 参数也是调优的基本功,本节以实验的方式讲解 JVM 参数的查看和设置。希望大家能有所启发。 标配参数 常见标配参数 -version,获取JDK版本 -help,获取帮助 -showverision,获取JDK版本和帮助 动手实验 1 - 查看标配参数 实验步骤: 查看Java JDK 版本 java -version 实验 1-1 可以看到Java JDK 版本为1.8.0_131 查看 Java 帮助文档 java -help 实验 1-2 查看版本和帮助文档 java -showversion 实验 1-3 X 参数 X 参数简介 我们常用的 javac 大家都知道是把java代码编译成 class

JAVA期末大作业 中国跳棋

落爺英雄遲暮 提交于 2020-09-25 03:26:02
  PS:这学期期末成绩差不多出完了,接下来会陆续把这学期课程中的代码陆续扔到这里来以便后人****,同时自己也留个纪念。   本学期选了java选修,期末大作业面向GitHub编程写了个中国跳棋。代码中还有写小bug,不过懒得调了...   update: github      1.游戏介绍    中国跳棋,简称跳棋,是一种可以让二至六人一起玩的棋,棋盘为六角星形状,棋子一般分为六种颜色,每种颜色有 10 或 15 枚棋子(或弹珠),每一位玩家占一个角,执一种颜色的棋子,如果玩的人数较,也能每人执两种颜色的棋子玩。 游戏规则如下: 先将一种颜色的棋子按规则全部放在一个角上,各人循顺时针或逆时针方向轮流走子,每次只能动一枚棋子,全部棋子先到达对角那一边的为赢家。棋子有两种走法: 1) 一枚棋子移动到相邻六格其中一格。 2)“ 搭桥 ”: 自己的棋子 (A) 同一条直线上还有一枚棋子 (B), 不限属于哪一方 , 大家之间没有任何棋子阻隔。如果 B 的另一方也没有棋子阻隔, A 就可以跳到 B 的相反方向,而且和两枚棋子原来的距离一样。跳跃可以一直进行下去,直到没有前进的路径为止。如果有循环情况,可在任意一处停下。 2.项目介绍      1 )本跳棋 project 支持两人、四人、六人跳棋对战     2 )具有计时功能,可显示当前时间,同时也可判断当前玩家是否超时     3

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

旧城冷巷雨未停 提交于 2020-08-20 06:52:05
关于JVM垃圾收集器的面试题 1、简述Java垃圾回收机制 2、GC是什么?为什么要GC 3、垃圾回收的优点和原理。并考虑2种回收机制 4、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 5、Java 中都有哪些引用类型? 6、怎么判断对象是否可以被回收? 7、在Java中,对象什么时候可以被垃圾回收 8、JVM中的永久代中会发生垃圾回收吗 9、说一下 JVM 有哪些垃圾回收算法? 10、说一下 JVM 有哪些垃圾回收器? 11、详细介绍一下 CMS 垃圾回收器? 12、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别? 13、简述分代垃圾回收器是怎么工作的? 1、简述Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。 2、GC是什么?为什么要GC GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存 回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动

利用蒙特卡罗法,国外老哥成功制造出100%投篮命中的篮板

自作多情 提交于 2020-08-20 06:42:30
   NBA 的大结局可能是什么?是时候将一位油管博主的创作纳入其中了。    在一个名为 “Stuff Made Here” 的频道,名叫 Shane Wighton 的国外老哥展示了这样一块神奇篮板—— 无论球砸到篮板的哪个位置,都能被反弹进入篮筐 。 看看这个演示效果:      (来源:YouTube)   或许很多人会认为,和全球数以万计的因新冠疫情被困家中的工程师一样,Wighton 只不过是又做出了一个无聊的产物。   要打造一块百发百中的篮板绝非易事。   因为每次投篮的角度不一样,球撞击篮板的运动轨迹就会发生变化,加上重力的影响, 在 Shane Wighton 创造出来的篮筐之前,我们很难想象一个百发百中的篮板会是什么样。   那么,这位工程师又是如何实现的?      (来源:YouTube)   现在我们所看到的篮球框,本身就已经是经过工程学设计的产品,只有击中特定的区域才会进篮,因此成为篮球运动员的核心竞争力,如果要将其设计成能够百发百中, 意味着只要将球抛向并击中篮板,这个篮筐就可以将球“引导”到筐中。      (来源: YouTube)   根据 Shane Wighton 在视频中的介绍,他首先考虑的就是要摒弃这种不能“引导”篮球的平板设计。因为平板的设计意味着篮球只有打在特定的位置才能进篮筐。      图丨iPad 在 Shane

面试官:你对JVM垃圾收集器了解吗?13连问你是否抗的住!

≡放荡痞女 提交于 2020-08-20 04:32:58
关于JVM垃圾收集器的面试题 1、简述Java垃圾回收机制 2、GC是什么?为什么要GC 3、垃圾回收的优点和原理。并考虑2种回收机制 4、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收? 5、Java 中都有哪些引用类型? 6、怎么判断对象是否可以被回收? 7、在Java中,对象什么时候可以被垃圾回收 8、JVM中的永久代中会发生垃圾回收吗 9、说一下 JVM 有哪些垃圾回收算法? 10、说一下 JVM 有哪些垃圾回收器? 11、详细介绍一下 CMS 垃圾回收器? 12、新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别? 13、简述分代垃圾回收器是怎么工作的? 1、简述Java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。 2、GC是什么?为什么要GC GC 是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存 回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动监测对象是否超过作用域从而达到自动

给定的字符数组中找到第一个只出现了一次的字符

一笑奈何 提交于 2020-08-20 02:58:44
1 public class Question4 { 2 public static void main(String[] args) { 3 // 声明一段字符串存入字符串数组中(好像8满足) 4 char [] str={'a','d','g','f','e','z','8','9','a','d','f','g','z','c','v','b','a','f','e' }; 5 // 输出字符数组 6 System.out.println("字符数组值为:" ); 7 for ( int i=0;i<str.length;i++ ){ 8 System.out.print(str[i]+"," ); 9 } 10 11 // 声明一个mark标记是否 有相同的字符 12 boolean mark; 13 // 第一重遍历字符串 14 for ( int i=0;i<str.length;i++ ){ 15 mark= false ; // 标记复位 16 // 第二层比较是否存在相同,从i+1开始遍历 17 for ( int j=i+1;j<str.length;j++ ){ 18 // 判断是否后面是否有相同字符,有就标记 19 // System.out.printf("%c,%c\n",str[i],str[j]); 20 if (str[i]== str[j]){

99 道 Java 多线程面试题,看完我跪了!

老子叫甜甜 提交于 2020-08-19 23:56:45
今天给大家更新的是一篇关于多线程面试的文章,是根据时下热门的面试内容给大家进行总结的,如有雷同,请多见谅。 本篇文章属于干货内容!请各位读者朋友一定要坚持读到最后,完整阅读本文后相信你对多线程会有不一样感悟,下次面试和面试官也能杠一杠相关内容了。 1.什么是进程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程。 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。 2.什么是线程? 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 3.线程的实现方式? 1.继承Thread类 2.实现Runnable接口 3.使用Callable和Future 4.Thread 类中的start() 和 run() 方法有什么区别? 1.start()方法来启动线程,真正实现了多线程运行。这时无需等待run方法体代码执行完毕,可以直接继续执行下面的代码;通过调用Thread类的start()方法来启动一个线程, 这时此线程是处于就绪状态, 并没有运行。然后通过此Thread类调用方法run(

MongoDB设计方法及技巧

自作多情 提交于 2020-08-19 22:08:33
MongoDB是一种流行的数据库,可以在不受任何表格schema模式的约束下工作。数据以类似JSON的格式存储,并且可以包含不同类型的数据结构。例如,在同一集合collection 中,我们可以拥有以下两个文档document: { id: '4', name: 'Mark', age: '21', addresses : [ { street: '123 Church St', city: 'Miami', cc: 'USA' }, { street: '123 Mary Av', city: 'Los Angeles', cc: 'USA' } ] } { id: '15', name: 'Robin', department: 'New Business', example: 'robin@example.com' } 为了能够充分利用MongoDB的优势,您必须了解并遵循一些基本的数据库设计原则。在讲解设计方法之前,我们必须首先了解MongoDB存储数据的结构。 一、 数据如何存储在MongoDB中 与传统的RDBMS关系型数据库不同,MongoDB并没有表Table,行row和列column的概念。它将数据存储在集合collections,文档documents和字段fields中。下图说明了与RDBMS类比的结构之间的关系: 二、 数据库设计技巧和窍门 2.1.

浅析hashCode

匆匆过客 提交于 2020-08-19 16:43:55
写此文的起因是看到一个面试题:默认hashCode()返回的值是什么?GC后hashCode会改变吗? 在以前的认知里,默认hashCode()的返回值是java对象的内存地址没错。然而这又是一个经不起推敲的结论。 首先把一个对象作为key存入hashmap,如果hashCode返回内存地址,那么GC后地址必然改变,那么用这个对象就取不到值了,这显然是不合理的。 不知为何这样的谬误会存在脑子里这么久,从来没有怀疑过它。 既然想到这里,就再简单剖析一下hashCode原理吧。 1、预备知识 1.1 safepoint GC相关。VM线程触发GC时,需要先 stop-the-world ,说人话就是设置一个safepoint。工作线程会时不时检查safepoint状态,一旦发现safepoint被设置就将自己挂起。VM线程发现工作线程都挂起以后就执行GC,完事后再唤醒工作线程。 用现实情况举例就是:leader在群里发了一条"一会儿开会"的消息(safepoint),每个成员时不时查看消息,看到消息第一时间放下手中工作前往会议室(线程挂起),然而有个人沉浸编码无法自拔,十分钟后才看到信息,结果导致会议延迟(GC期间程序暂停时间过长) 至于底层具体如何实现,呃,我没看懂,感兴趣的同学自行了解 https://www.jianshu.com/p/c79c5e02ebe6 1.2 Mark

python设置搜索路径,以及外层文件调用时路径变动问题

流过昼夜 提交于 2020-08-19 16:37:48
通过sys.path设置路径 import sys sys.path.append("待加入的搜索路径") 修改python环境变量 编辑 ~/.profile 文件: export PYTHONPATH= $PYTHONPATH:搜索路径 临时修改方法: 直接在命令行中输入: export PYTHONPATH=$PYTHONPATH:搜索路径 添加.pth 文件 用“which python”找到并进入python的路径: cd /..../python3.7/site-packages/ 如果使用的是anaconda,路径为: cd /.../anaconda3/lib/python3.7/site-packages$ 在该目录下新建一个以.pth为后缀的文件,文件名任意,文件中每一行是一个路径 在pycharm中设置搜索路径(只在pycharm中有效) 有两种方法: 1).右击要加入的路径文件夹,选择“Mark Directory as ”,再选择“source root” 2).在edit configurations 中点击“environment variables”,输入: name: PYTHONPYTH Values: “待加入的路径” 要注意,最外层调用文件的相对路径是否会变动,若是变动,则存在找不到模块包的可能 建议使用 path = os.path