李志宽 李志宽
2年前
让人头疼的吃鸡外挂,一起来逆向分析一波
前言:最近在浏览某网络论坛,看到一款刺激战场的吃鸡外挂软件下载量很高,出于对游戏外挂样本的敏感及逆向的专注,就从论坛上下载一个样本,并进行对该游戏外挂样本,深度功能分析及还原破解的逆向实践,主要从外挂样本的功能表现,样本的基础属性、样本的实现功能、样本的验证功能破解进行实践。基本属性(分析这些未知的软件切记得在虚拟机环境下进行)启动游戏辅助样本后,从表面上
Wesley13 Wesley13
3年前
java 源码编译
Java语言的“编译期”其实是一段“不确定”的操作过程,因为它可能是指一个前端编译器(叫“编译器的前段”更准确)——把\.java文件转变成\.class文件的过程;也可能是虚拟机的后端运行期编译器(JIT)把字节码转变成机器码的过程;还可能是指静态提前编译器(AOT编译器)直接把\.java文件编译成本地机器码的过程。Javac编译器
good123 good123
3年前
一文看懂JVM内存区域分布与作用
那么我们在开始介绍Java内存区域之前,我们先放一张内存区域的图,方便我们后面介绍的时候可以对照着看。须知,本文是根据JDK8来介绍的。程序计数器首先它是线程私有的,它也称为代码的行号指示器,字节码解释器就是通过改变程序计数器的位置来确定下一行要执行的代码,它不存在OOM。如果线程正在执行一个Java方法,那么它记录的是正在执行虚拟机字节码指令的地址,如果是
九路 九路
4年前
4 Java 如何判定是否存活或者死亡
在堆中存放着几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是要确定这些对象之中哪些还活着,哪些对象已经死去.判断对象是否已经死亡有以下几种算法:引用计数法算法定义:给对象中添加一个引用计数器,当有一个地方引用时,计数器加1,引用失效时,就减1,当对象的引用计数器为0时,对象就是不可再被使用的.特点:JAVA虚拟机中很少使用这
Stella981 Stella981
3年前
Nginx 和Apache 中的虚拟主机的概念
 在部署环境的时候,有时候会引用到虚拟主机的概念,什么是虚拟主机呢,博主之前一直把虚拟主机的概念没搞清楚,导致在部署的时候,一直动不动就404,或者500,或者服务器不通所以,什么是虚拟主机呢?虚拟主机概念大致同虚拟机的概念。如果你有两个不同域名的网站,但是你只有一台服务器,这时候怎么办?其实利用nginx或者apache都可以帮你用一台机器来模
Wesley13 Wesley13
3年前
Java内存区域与内存溢出异常
Java的内存管理是一个老生常谈的问题,虽然Java号称可以自动管理自己的内存,使程序员从内存管理的围墙解放出来,但是一连串的内存泄漏和溢出方面的问题,使得我们不得不去深入了解Java的内存管理机制。本篇文章将从Java的内存区域开始剖析Jvm的内存机制,阐述内存溢出异常产生的原因。运行时数据区域众说周知,Java程序是运行在Java虚拟机
Stella981 Stella981
3年前
SpringBoot 2,用200行代码完成一个一二级分布式缓存
缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库负载。早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快。后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存获取数据,都还是要通过网络访问才能获取,效率相对于早先从内存里获取,还是不够逆天快。如果一个应用,比如传统的企业应用,一次页面显示,要访问数次redis,那效果
Stella981 Stella981
3年前
2020最新Java、spring微服务、高并发、虚拟机大厂高频面试题 ,入职大厂指日可待
写在前面在知乎上看到一条消息,说互联网公司每月对架构师的需求量高达近万人,有点出乎意料。那求职季需求岂不会更多!只要放平心态,调整策略,用心准备,就能抢占先机。那么,对于技术人,尤其是Java人来说,到底需要掌握什么技术才能通过筛选呢?这里列出几个流行的技术:1、JAVA并发编程对于一个Java程序员而言,能否熟练掌
可莉 可莉
3年前
2020最新Java、spring微服务、高并发、虚拟机大厂高频面试题 ,入职大厂指日可待
写在前面在知乎上看到一条消息,说互联网公司每月对架构师的需求量高达近万人,有点出乎意料。那求职季需求岂不会更多!只要放平心态,调整策略,用心准备,就能抢占先机。那么,对于技术人,尤其是Java人来说,到底需要掌握什么技术才能通过筛选呢?这里列出几个流行的技术:1、JAVA并发编程对于一个Java程序员而言,能否熟练掌
Stella981 Stella981
3年前
JVM中锁优化简介
本文将简单介绍HotSpot虚拟机中用到的锁优化技术。自旋锁互斥同步对性能最大的影响是阻塞的实现,挂起线程和恢复线程的操作都需要转入内核态中完成,这些操作给系统的并发性能带来了很大的压力。而在很多应用上,共享数据的锁定状态只会持续很短的一段时间。若实体机上有多个处理器,能让两个以上的线程同时并行执行,我们就可以让后面请求锁的那个线程原地自旋(