- 博客(21)
- 资源 (4)
- 收藏
- 关注
翻译 jvm三大垃圾收集算法
1.标记/清除算法【最基础】2.复制算法3.标记/整理算法jvm采用`分代收集算法`对不同区域采用不同的回收算法。新生代采用复制算法新生代中因为对象都是“用完就死”,【深入理解JVM虚拟机上说98%的对象,不知道是不是这么多,总之就是存活率很低】,适用于复制算法【复制算法比较适合用于存活率低的内存区域】。它优化了标记/清除算法的效率和内存碎片问题,且JVM不以5:5分配内存【由于存活...
2019-07-11 11:48:13
478
翻译 jvm实例存活算法
1.引用计数算法早期判断对象是否存活大多都是以这种算法,这种算法判断很简单,简单来说就是给对象添加一个引用计数器,每当对象被引用一次就加1,引用失效时就减1。当为0的时候就判断对象不会再被引用。优点:实现简单效率高,被广泛使用与如python何游戏脚本语言上。缺点:难以解决循环引用的问题,就是假如两个对象互相引用已经不会再被其它其它引用,导致一直不会为0就无法进行回收。2.可达性分析算法...
2019-07-11 11:47:03
203
翻译 JVM垃圾回收简介
我们知道程序计数器、虚拟机栈、本地方法栈,由线程而生,随线程而灭,其中栈中的栈帧随着方法的进入顺序的执行的入栈和出栈的操作,一个栈帧需要分配多少内存取决于具体的虚拟机实现并且在编译期间即确定下来【忽略JIT编译器做的优化,基本当成编译期间可知】,当方法或线程执行完毕后,内存就随着回收,因此无需关心。而Java堆、方法区则不一样。方法区存放着类加载信息,但是一个接口中多个实现类需要的内存可能不太...
2019-07-11 11:46:36
172
翻译 JVM五大内存区域介绍
1、程序计数器 程序计数器是一块很小的内存空间,它是线程私有的,可以认作为当前线程的行号指示器。那么计数器记录虚拟机字节码指令的地址。如果为native【底层方法】,那么计数器为空。这块内存区域是虚拟机规范中唯一没有OutOfMemoryError的区域。2、Java栈(虚拟机栈)栈描述的是Java方法执行的内存模型。每个方法被执行的时候都会创建一个栈帧用于存储...
2019-07-11 11:40:21
10635
原创 Beanutils.copyProperties( ) 复制失败
使用工具类Beanutils.copyProperties( ) 进行属性复制功能失败原因:两个雷属性名称相同,但是类型不一致导致复制失败,int 不能复制到long属性值
2019-02-01 16:56:42
5196
原创 Session通过转byte数组存入redis中
由于目前redis仅支持五大类型数据,经测试发现将session存入redis中读取时会报错不支持此数据类型,但是写入是不报错的。(背景)本人用shiro做单点登录,session写入redis中,子应用从redis中读取在校验权限。(现象)网上很多资料都是直接将session转为byte如:public static byte[] sessionToByte(Session se...
2018-10-24 13:47:31
1406
原创 MQTT断链重连后重复接收到最后一条消息
MQTT推送消息订阅端重复接收问题。(背景)订阅端断开的时候,发布端联系多次推送消息。(现象)订阅端启动时,接收到最后一条推送消息有两次;即使Qos设置为2;依然是两次。经排查是因为MqttMessage的Retained设置为了true;该值很多文章上只说了是 消息保留机制,若设置为true,mqtt服务器会保留每次发布的消息;较少提到 若订阅某主题的客户端重启,则会把...
2018-10-16 09:57:13
9474
原创 MQTT服务器使用apache apollo的坑(断链重连后无法接受到消息)
最近使用MQTT做实时推送,最开始使用的服务器是Apache-apollo-window;正常业务是可以走通的,但是当我设置setCleanSession(false);然后断开订阅的客户端;发现无法接受到前面的信息;后面推送的也接受不到(设置为true的时候可以接受到,但是之前推送的消息只接收到最新的一条);经测试重启apollo后是可以接受到之前所有未接受的消息;故本人推测是因为断链重连后...
2018-10-15 10:24:38
5730
原创 外部网络可访问服务器,服务器访问不了外部网络
外部网络可访问服务器,服务器访问不了外部网络;前阵子遇到一个问题请求短信的接口,短信发不出去,在开发环境是可行的。逐排查服务器网络,发现服务器无法访问外部网络,外部网络可以访问服务器的。经排查发现是DNS解析异常了。因电信ip固定,若使用8.8.8.8DNS则偶尔会出现这个问题。于是使用所在地的DNS...
2018-06-27 18:00:42
4155
翻译 onmouseenter与onmouseover区别
两事件都是鼠标移至节点上执行;但是onmouseover移至节点上,停止在移动,依旧在节点上时还是会执行,也就是说会执行多次;而onmouseenter仅是进入节点时执行一次。...
2018-06-12 16:24:42
2533
翻译 支付宝回调验证失败问题
支付宝支付成功后异步回调。本人使用的是RSA2签名;验签失败主要有两点:1,一定是用支付宝公钥,而不是应用公钥;2,第二点方法一定是rsaCheckV1,而不是rsaCheckV2;boolean verify_result = AlipaySignature.rsaCheckV1(result, AlipayConfig.ALIPAY_PUBLIC_KEY, AlipayConfig.ALIPA...
2018-06-12 16:21:57
8028
原创 MAVEN打包第三方依赖包加载问题
通过我们使用第三方依赖包时,为了避免其版本迭代问题,我们常规使用本地的包;但通常会出现加载本地jar无法打入项目里面;我使用的本地方式是这样子的: <dependency> <groupId>com.alipay</groupId> <artifactId>alipay-sdk-java20180104135026<...
2018-06-05 15:30:50
4294
原创 nginx反向代理请求域名,跨域问题
在使用nginx做方向代理,监听A域名发起的请求转向B域名,由于只是做了简答的代理,导致项目反向代理后,项目发起的请求域名是代理后发起的域名,从而导致跨域问题,如下:server { listen 80; server_name *.a.cn; client_max_body_size 200m; location / { proxy_pass http://b.com; #指定反向...
2018-05-11 15:36:49
2670
原创 nginx配置静态html
server { listen 80; server_name www.xxxxcom; client_max_body_size 200m; location / { root /usr/local/app/workSpace; #html访问路径 index index.html; }}注意静态文件须与nginx同一个服务器。...
2018-05-11 09:39:15
37086
原创 小程序获取陀螺仪数值
小程序拍照,通过会有角度偏移,这个时候小程序可通过加速度api可获取到陀螺仪的x,y,z轴数值。wx.onAccelerometerChange(CALLBACK)返回的x,y,z数值是sin计算等到的数值,其数值绝对值不超过1....
2018-05-10 23:11:01
10390
2
原创 nginx监听多域名的80端口
nginx监听多个域名的80端口有多种形式,以下简单介绍两种:1、在监听里面使用$host判断域名值,如:if ($host != 'www.test.com') { rewrite ^/(.*)$ http://www.test.com/$1 permanent; }2、第二种则是使用server_name 不同域名进行监听,如:server { listen ...
2018-05-10 23:04:02
12095
3
原创 分布式权限控制、session共享实例
本人在分布式中通过redis共享session的方式实现权限控制,即sessionId放到redis中,userId放于session中,可实现权限控制。session共享实例@ConditionalOnProperty(prefix = "rkele", name = "spring-session-open", havingValue = "true")public class Spring...
2018-05-03 08:57:35
1383
翻译 img 自适应屏幕
img 自适应屏幕:width:100%;display: inline-block;background-image: url(img/xxx.jpg);自适应background-repeat:no-repeat; background-size:100% 100%;-moz-background-size:100% 100%;
2018-04-24 14:08:37
5390
原创 关于ServerSocket使用小结
监听启动一线程,serverRunning=truepublic void run() { ServerSocket server = null; try { //服务端开启 server = new ServerSocket(“8000”); //不断等待客户端连接 while(serverRunning) { //有客户端连接,此时等待客户端 ...
2018-04-16 12:39:45
536
原创 java程序启动项目初始化的方法
一、启动监听ApplicationListenerspring mvc 启动监听,实现ApplicationListener<ContextRefreshedEvent>接口,然后重载 onApplicationEvent(ContextRefreshedEvent arg0);在spring配置文件中添加对应的bean即可!public class startBeanPost...
2018-04-16 12:01:08
2138
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人