java虚拟机的内存分配和垃圾回收
1.为什么会有JAVA虚拟机?java源程序.java文件经过javac编译成.class文件,.class文件将由java虚拟机,解释成机器码(不同平台的机器码不同),利用机器码操作硬件和操作系统
2.什么是JAVA虚拟机?java虚拟机是执行.class(字节码)文件的虚拟(机)程序进程,ps:我自己把它理解成window系统的一个进程,这个进程其实就相当于一个虚拟机(java虚拟机)
3.为什么我们要学习JAVA虚拟机日常的的开发中,我们只关注于写java代码,而并没有关心java虚拟机的相关操作,而未了进一步提升自己,对Java语言的深入理解,并对未来的如果出现内存溢出等问题奠定基础,还有个目的是为了面试(^o^)/
4.JAVA虚拟机的体系结构
图中画区域的是所有线程所共享的(方法区,堆,执行引擎,本地接口)
方法区方法区(Method Area):方法区是各个线程共享的区域,用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。
关于方法区不太理解的,我稍后写些例子。。。。
...
Python实现从文件中读取文件名,并创建文件
代码123456789101112131415"""根据文件内容,创建文件"""def newFile(file): with open(file, "r", encoding="utf-8") as f1: for line in f1: print("==================") # 新建文件的文件名,最后一行的\n去掉 newName = line[:-1] print(newName) with open(newName, "w", encoding="utf-8") as f2: f2.write("#"+line)newFile("D:\\WebstormProjects\\react\\sgg\\README.md& ...
Python实现替换博客文章名中的日期到文件中
问题分析事情是这样的
我原来的博客的日期是在文件名中的,而新的模板中的日期是放到了md文件文件头中
我这几百篇博客当然不能手动修改了,于是小编就利用了一个python中的文件操作和re模块写了一个脚本实现了这个替换功能
代码如下123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153'''#!/usr/bin/env py ...
ElasticSearch安装与介绍
Elastic Stack简介如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、 Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
全系的Elastic Stack技术栈包括:
ElasticsearchElasticsearch 基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
LogstashLogstash 基于java,是一个开源的用于收集,分析和存储日志的工具。
KibanaKibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。
BeatsBeats是elastic公司开源的一款采集系统监控数据的代理agent,是在 ...
哈希表思路图解和代码实现
哈希表(散列)-Google上机题看一个实际需求,google公司的一个上机题:
有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址..),当输入该员工的id时,要求查找到该员工的 所有信息.
要求: 不使用数据库,尽量节省内存,速度越快越好=>哈希表(散列)
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 15 111 % 15
哈希表就是数组里面存储链表
google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址..),当输入该员工的id时,要求查找到该员工的 所有信息.
要求:不使用数据库,,速度越快越好=>哈希表(散列) 添加时,保证按照id从低到高插入 [课后思考:如果id不是从低到高插入,但要求各条链表仍是从低到高,怎么解决?]
使用链表来实现哈希表, 该链表不带表头[ ...
Kibana入门安装与介绍
Kibana入门Kibana 是一款开源的数据分析和可视化平台,它是 Elastic Stack 成员之一,设计用于和 Elasticsearch 协作。您可以使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作。您可以很方便的利用图表、表格及地图对数据进行多元化的分析和呈现。
官网:https://www.elastic.co/cn/kibana
配置和安装到下载地址,选择对应的版本:https://www.elastic.co/cn/downloads/kibana
下载完成后,将文件拷贝到我们的服务器上,然后解压
12345# 解压tar -zxvf kibana-7.9.1-linux-x86_64.tar.gz# 重命名mv kibana-7.9.1-linux-x86_64 kibana
然后在进入kibana目录,找到config文件夹下的kibana.yml进行配置的修改
1vim /soft/kibana/config/kibana.yml
然后找到下面的内容
12345#对外暴露服务的地址server.host: " ...
Logstash入门简介
Logstash入门简介介绍Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch)
我们回到我们ElasticStack的架构图,可以看到Logstash是充当数据处理的需求的,当我们的数据需要处理的时候,会将它发送到Logstash进行处理,否则直接送到ElasticSearch中
用途Logstash可以处理各种各样的输入,从文档,图表中=,数据库中,然后处理完后,发送到
部署安装Logstash主要是将数据源的数据进行一行一行的处理,同时还直接过滤切割等功能。
首先到官网下载logstash:https://www.elastic.co/cn/downloads/logstash
选择我们需要下载的版本:
下载完成后,使用xftp工具,将其丢入到服务器中
12345678#检查jdk环境,要求jdk1.8+java -version#解压安装包tar -xvf logstash-7.9.1.tar.gz#第一个logstash示例bin/logstash - ...
Beats入门简介
使用Beat收集nginx日志和指标数据
项目需求Nginx是一款非常优秀的web服务器,往往nginx服务会作为项目的访问入口,那么,nginx的性能保障就变得非常重要了,如果nginx的运行出现了问题就会对项目有较大的影响,所以,我们需要对nginx的运行有监控措施,实时掌握nginx的运行情况,那就需要收集nginx的运行指标和分析nginx的运行日志了。
业务流程
说明:
通过Beats采集Nginx的指标数据和日志数据
Beats采集到数据后发送到Elasticsearch中
Kibana读取数据进行分析
用户通过Kibana进行查看分析报表
部署Nginx部署教程可以参考这篇博客:CentOS下如何安装Nginx?
部署完成后,我们就可以启动nginx了
启动完成后,我们通过下面命令,就可以获取到nginx中的内容了
1tail -f /var/log/nginx/access.log
Beats简介通过查看ElasticStack可以发现,Beats主要用于采集数据
官网地址:https://www.elastic.co/cn/beats/
Beats平台其实是一 ...
面试官:String长度有限制吗?是多少?
面试官:String长度有限制吗?是多少?还好我看过GoKu编程2020-11-09 14:58:52
前言话说Java中String是有长度限制的,听到这里很多人不禁要问,String还有长度限制?是的有,而且在JVM编译中还有规范,而且有的家人们在面试的时候也遇到了,本人就遇到过面试的时候问这个的,而且在之前开发的中也真实地遇到过这个String长度限制的场景(将某固定文件转码成Base64的形式用字符串存储,在运行时需要的时候在转回来,当时文件比较大),那这个规范限制到底是怎么样的,咱们话不多说先䁖䁖去。
String首先要知道String的长度限制我们就需要知道String是怎么存储字符串的,String其实是使用的一个char类型的数组来存储字符串中的字符的。
存储String的容器原来是它
那么String既然是数组存储那数组会有长度的限制吗?是的有限制,但是是在有先提条件下的,我们看看String中返回length的方法。
String类中的length方法
由此我们看到返回值类型是int类型,Java中定义数组是可以给数组指定长度的,当然不指定的话默认会根据数组元素 ...
Java和Php比较
这样从几个方面来看:
一、运行机制:
Java代码被编译成字节码后,会在虚拟机里由JIT进行二次编译成为本地码,据传言其执行速度可以和C++相媲美,经过我自己测试,用Java实现一个简单的Memcache协议的缓存服务器,在Java 1.6下运行,和memcache本身相比,同样数据量的存取时间比大概是3:2,虽然有差距,但是比想象的要好很多。Java 1.7在JIT方面做了大量的改进,性能比Java 1.6还要好。 PHP是直接对文本代码进行解释执行,即便有opcode缓存技术,仍然有不可逾越的性能鸿沟。PHP的opcode类似于java的class字节码,仍是解释执行。
二、处理并发:
Java在并发处理上采取单进程多线程的方式,web应用会随着web server的启动而启动,而来自web 浏览器的请求将被分配给线程池内的闲置线程处理,也就是说当有请求到达的时候,进程是准备好的,线程是准备好的,Java要做的仅仅是业务逻辑处理了。 PHP在并发处理上时采取多进程的方式,在web server里没有物理的web应用概念,每个请求都相当于一个独立的应用,而进程也随着请求的 ...