JVM内存区域
JVM内存区域在传统的C/C++开发中,我们经常通过使用申请内存的方式来创建对象或是存放某些数据,但是这样也带来了一些额外的问题,我们要在何时释放这些内存,怎么才能使得内存的使用最高效,因此,内存管理是一个非常严肃的问题。 比如我们就可以通过C语言malloc函数动态申请内存,并用于存放数据,而在Java中,这种操作实际上是不允许的,Java只支持直接使用基本数据类型和对象类型,至于内存到底如何分配,并不是由我们来处理,而是JVM帮助我们进行控制,这样就帮助我们节省很多内存上的工作,虽然带来了很大的便利,但是,一旦出现内存问题,我们就无法像C/C++那样对所管理的内存进行合理地处理,因为所有的内存操作都是由JVM在进行,只有了解了JVM的内存管理机制,我们才能够在出现内存相关问题时找到解决方案。 内存区域划分既然要管理内存,那么肯定不会是杂乱无章的,JVM对内存的管理采用的是分区治理,不同的内存区域有着各自的职责所在,在虚拟机运行时,内存区域如下划分: 我们可以看到,内存区域一共分为5个区域,其中方法区,堆和直接内存是所有线程共享的区域,随着虚拟机的创建而创建,虚拟机的结束而销毁,而 ...
JVM启动流程(JDK8)
JVM启动流程(JDK8)JVM的启动入口是位于jdk/src/share/bin/java.c的JLI_Launch函数,其定义如下: 12345678910111213intJLI_Launch(int argc, char ** argv, /* main argc, argc */ int jargc, const char** jargv, /* java args */ int appclassc, const char** appclassv, /* app classpath */ const char* fullversion, /* full version defined */ const char* dotversion, /* dot version defined */ const char* pname, /* program name * ...
西电计科微机原理实验四
西电计科微机原理实验四实验要求 流水灯实验:利用8255的A口、B口、C口循环点亮发光二极管。 根据输入控制灯的亮灭 在完成(1)基础上,增加通过读取开关控制流水灯的循环方向和循环方式。 跟上一次实验基本相同,换了个芯片,然后控制的范围从八颗发光二极管变为了十六颗发光二极管 基础版简单实现了功能1和2,全1左移,全0右移 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102COM_ADD EQU 0273H PA_ADD EQU 0270H PB_ADD EQU 0271H PC_ADD EQU 0272H _STACK SEGMENT STACK DW 100 DUP(?) _STACK ENDS _DATA SEGMENT WORD PUB ...
OpenSSL实现单向认证
OpenSSL实现单向认证OpenSSL的安装OpenSSL采用C语言作为开发语言,这使得它具有优秀的跨平台性能,OpenSSL支持: Linux Windows Mac等常见操作系统OpenSSL github地址 win和mac需要单独去下OpenSSL客户端,网上也有很多教程,可以自己去找找看 Linux系统自带OpenSSL库,一般不需要下载安装,我会使用KALI Linux进行本次实验 查看下openssl的版本: 简单通信过程下面以最常见的单向认证为例,简述一下通信过程: 客户端向服务器发送请求 服务器将包含公钥的证书通过明文发送给客户端 客户端通过根证书验证服务器证书是否有效 如果有效,客户端生成一个随机密钥,也叫对称加密密钥,使用服务器的公钥进行加密传输 服务器通过私钥解密客户端传输的对称加密密钥 这时只有服务器和客户端知道这个对称加密密钥,双方可以进行对称加密传输 颁发证书通过vim /usr/lib/ssl/openssl.cnf修改配置文件,这里修改了默认文件夹、私钥名、证书名。 在默认文件夹创建所需的目录和文件1234mkdir -pv s ...
对自己的博客网站进行DOS攻击(脚本小子□_□)
对自己的博客网站进行DOS攻击(脚本小子□_□)先说明一点,别对别人的网站进行ddos/dos攻击(dos攻击一般短时间攻击不下来),这是违法的,很多都有自动报警机制,本篇博客仅用于学习,请勿用于非法用途 安装kaili Linux进入KALI官网,下载iso镜像文件 vmware新建虚拟机,选择自定义 点击下一步 点击下一步选择稍后安装操作系统,点击下一步选择Debian系统,版本根据自己的kali版本来,我这里就选最新的Debian12,点击下一步虚拟机名称和存储位置根据自己情况来,点击下一步处理器配置根据自己电脑的配置来,点击下一步内存也是根据自己的使用情况来,点击下一步点击下一步点击下一步点击下一步点击下一步点击下一步点击下一步点击自定义硬件导入下载好的ISO文件,关闭后点击完成即可 剩下启动后的配置就比较简单了,根据自己情况来即可 安装完成后打开是这样的: 换源+更新 进入root权限1sudo su 输入密码后,换源1sudo vim /etc/apt/sources.list 部分国内源:123456789101112131415161718192021官方源deb ...
西电计科微机原理实验三
西电计科微机原理实验三实验要求 开关Yi为低电平时对应的发光二极管亮,Yi为高电平时对应的发光二极管灭。 当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。 当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。 自主设计控制及显示模式,完成编程调试,演示实验结果。 我没做要求1,当开关Yi不是全为低电平和高电平时,发光二极管Qi按1423的顺序点亮,这里可以按照自己的需求改,可以把剩下的四个也加上去,顺序也可以改,如果你要做要求1,开关Yi为某特定值时跳转Light更好(在实验四中实现类似功能) 代码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283IO244 equ 230h ;244IO273 equ 230h ;273_stack segment stack dw 100 DUP(?)_ ...