jps
jmap -histo [pid] > pp.txt //快照
关于 endorsed :可以的简单理解为 -Djava.endorsed.dirs 指定的目录面放置的jar文件,将有覆盖系统API的功能。但是能够覆盖的类是有限制的,其中不包括java.lang包中的类(出于安全的考虑)。
因为java是采用双亲委派机制进行加载class类的。而jdk提供的类只能由类加载器Bootstrap进行加载。如果你想要在应用程序中替换掉jdk中的某个类是无法做到的,所以java提供了endorsed来达到你想要替换到系统中的类。
本实例通过修改ArrayList来试验:
新建maven工程,在工程中新建java.util.ArrayList
复制jdk中ArrayList源码到自己创建的ArrayList,并修改构造方法如下:
|
|
看到Test类调用了我们修改的ArrayList,说明我们成功覆盖了jdk的类
但我们只调用一次new ArrayList(),为什么日志输出了这么多次呢?
我们在运行参数中在加入-XX:+TraceClassLoading看类加载过程可知,虚拟机启动时,有一些类调用了ArrayList默认构造器
上面我们使用了修改运行参数的方法,下面我们再试验第二种方法,把jar包copy到$JAVA_HOME/jre/lib/endorsed下,结果和上面一样。
但是copy到$JAVA_HOME/lib/endorsed下,结果是没有覆盖成功。这是为什么呢?如图,java-home应该为实际运行环境的目录。
经查看项目jdk配置
classpath指定的是jre,所以,把jar包copy到$JAVA_HOME/jre/lib/endorsed下才能成功也就说的通了。
####
项目里边生成了不同类型的文件:
.json
后缀的 JSON
配置文件.wxml
后缀的 WXML
模板文件.wxss
后缀的 WXSS
样式文件.js
后缀的 JS
脚本逻辑文件小程序目录结构
小程序中各个json文件的用途:
当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等。
我们简单说一下这个配置各个项的含义:
pages
字段 —— 用于描述当前小程序所有页面路径,这是为了让微信客户端知道当前你的小程序页面定义在哪个目录。window
字段 —— 定义小程序所有页面的顶部背景颜色,文字颜色定义等。从事过网页编程的人知道,网页编程采用的是 HTML + CSS + JS 这样的组合,其中 HTML
是用来描述当前这个页面的结构,CSS
用来描述页面的样子,JS
通常是用来处理这个页面和用户的交互。
WXSS
具有 CSS
大部分的特性,小程序在 WXSS
也做了一些扩充和修改。
CSS
样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS
在底层支持新的尺寸单位 rpx
,开发者可以免去换算的烦恼,只要交给小程序底层来换算即可,由于换算采用的浮点数运算,所以运算结果会和预期结果有一点点偏差。app.json
, page.json
的概念相同,你可以写一个 app.wxss
作为全局样式,会作用于当前小程序的所有页面,局部页面样式 page.wxss
仅对当前页面生效。WXSS
仅支持部分 CSS
选择器更详细的文档可以参考 WXSS
小程序包含一个描述整体程序的 app
和多个描述各自页面的 page
。
一个小程序主体部分由三个文件组成,必须放在项目的根目录:app.js,app.json,app.wxss。
一个小程序页面由四个文件组成,分别是js,wxml,json,wxss。
注意:为了方便开发者减少配置项,描述页面的四个文件必须具有相同的路径与文件名。
角色:
1.LOOKING:竞选
2.OBSERVING:观察
3.FOLLOWING:跟随者
4.LEADER:领导者
投票信息:
1.logicalclock(electionEpoch):本地选举周期,每次投票都会自增
2.epoch(peerEpoch):选举周期,每次选举最终确定完leader结束选举流程时会自增(真正zxid的前32位)
3.zxid:数据ID,每次数据变动都会自增(真正zxid的后32位,zxid一共64位)
4.sid:该投票信息所属的serverId
5.leader:提议的leader(被提议的server的serverId,即sid)
没有leader时
投票比较规则:
1.epoch大的胜出,否则进行步骤2
2.zxid大的胜出,否则进行步骤3
3.sid大的胜出
Xxx-spring-boot-starter
引如自动装配模块,一般是个空工程
Xxx-spring-boot-autoconfigure
核心代码中的类文件:
1、XxxAutoConfiguration 自动配置类
2、XxxProperties 属性文件加载类,通过@EnableConfigurationProperties({XxxProperties.class})注入到spring容器中,使得在XxxAutoConfiguration中可以直接注入使用配置属性
|
|
在Xxx-spring-boot-autoconfigure模块下src/main/resources新建文件夹META-INF,然后新建一个spring.factories文件
|
|
在我们的autoconfiguration的模块中添加如下jar包依赖
|
|
Pinpoint是用于用Java / PHP编写的大规模分布式系统的APM(应用程序性能管理)工具。受Dapper的启发,Pinpoint提供了一种解决方案,可通过跟踪跨分布式应用程序的事务来帮助分析系统的整体结构以及其中的组件如何互连。
你一定要检查精确定位,如果你想
从https://github.com/naver/pinpoint/releases 下载
修改 hbase-site.xml 为
|
|
执行 bin/start-hbase.sh
启动 hbase
执行 ./hbase shell hbase-create.hbase 文件创建表等
修改 pinpoint-web.war 包配置文件(默认)
|
|
将 war 包放到 tomcat 中启动
修改 pinpoint-collector.war 包配置文件(默认)
|
|
可以将 pinpoint-web 和 pinpoint-collector 放到一个 tomcat 中启动
解压 pinpoint-agent.tar.gz,修改 pinpoint.config 中的 profiler.collector.ip 改为部署 collector 的机器ip
|
|
如果是通过 tomcat 启动,则需要修改 bin/catalina.sh 文件
|
|