折腾Linux - 2.Shell的进程 承接上文 上一篇中,我们实现了内网穿透,这样我们就可以直接使用SSH连接到内网的服务器。 一旦可以用SSH连接进入设备,我们就可以掌控设备了(当然还需要root的密码)。 但是我们关闭了终端之后,连接似乎就断了。这是怎么回事呢? 本篇博客将深入到Linux,分析问题,最终解决这个问题。 为什么关闭终端,frp也会自动关闭? 首先我们要先了解一下shell something easy abo 2020-11-27 Linux Linux 运维 Ubuntu
折腾Linux - 1.内网穿透 写在前面 本文只是记录自己在学习和做项目过程中,折腾的一些东西,并非专业,本人也是linux入门的小白,因为任务驱动,而产生了兴趣,遂开始整活。 而且将其记录下来,以后忘记怎么弄了,还可以找出来回顾温习一下。 如有错误或者我理解不深的地方,希望看管们指出来 :D 本小白今年9月也开始了烟酒生(雾)的生活,确实烟酒生和自己想象中的有些出入,有好也有坏。但我们实验室里竟然让我发现了个宝贝,那就是实验 2020-11-16 Linux Linux 运维 Ubuntu
JVM 笔记 - 16 垃圾回收相关概念 System.gc() 的理解 在默认情况下,通过 System.gc() 或者 Runtime.getRuntime().gc() 的调用,会显式触发Full GC,同时对老年嗲和新生代进行回收,尝试释放被丢弃对象占用的内存 然而 System.gc() 调用附带一个免责申明,无法保证对垃圾收集器的调用 JVM实现者可以通过 System.gc() 调用来决定JVM的GC行为。而一般情况下, 2020-08-29 JVM JVM 笔记
JVM 笔记 - 15 垃圾回收相关算法 标记阶段:引用计数算法 垃圾标记阶段:对象存活判断 在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段 那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就 2020-08-24 JVM JVM 笔记
JVM 笔记 - 14 垃圾回收概述 垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生 关于垃圾收集有三个经典问题: 哪些内存需要回收? 什么时候回收? 如何回收? 垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为了现代语言的标配,即使经过了如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场 2020-08-22 JVM JVM 笔记
用PY查找固定代码所在的文件 缘由 今天给我们项目组的某一个项目集成友盟+的统计。由于该项目之前集成过firebase,然后因为一些原因,firebase被弃用了,相关sdk都删掉了,原来的统计事件都给注释掉了(还好我当时机制,没有删掉,而是给注释上了,否则这次相当于重新找统计的点,更麻烦)。 由于C#文件巨多,一个一个找那怕是要累死我。突然我一想,之前自己学过一点爬虫,写了几个小demo,尤其是正则表达式让我印象深刻。所以 2020-08-19 脚本工具 脚本工具
JVM 笔记 - 13 StringTable String的基本特性 String:字符串,使用一对""引起来表示 String声明为final的,不可被继承 String实现了Serializable接口:表示字符串是支持序列化的;也实现了Comparable接口:表示String可以比较大小 String在 jdk8 及以前内部定义了 final char[ ] value 用于存储字符串数据,jdk9 时改为了 2020-08-15 JVM JVM 笔记
JVM 笔记 - 12 执行引擎 执行引擎概述 执行引擎是Java虚拟机核心的组成部分之一 “虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的。而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地指定指令集和执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式 JVM的主要任务是负责装载字节码到其内部,但字节码并不 2020-08-12 JVM JVM 笔记
JVM 笔记 - 11 直接内存 直接内存概述 直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域 直接内存是在Java堆外的、直接向系统申请的内存空间 来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存 通常,访问直接内存的速度会优于Java堆。即读写性能高 因此处于性能考虑, 读写频繁地场合可能会考虑使用直接内存 Java的NIO库允许Java程序直接使用直 2020-08-12 JVM JVM 笔记
JVM 笔记 - 10 对象的实例化内存布局与访问定位 对象的实例化 过程: 加载类元信息 为对象分配内存 处理并发问题 属性的默认初始化(零值初始化) 设置对象头的信息 属性的显式初始化、代码块中初始化、构造器中初始化 对象的内存布局 对象的访问定位 句柄访问 指针访问(HotSpot采用) 2020-08-10 JVM JVM 笔记