190521-JDK之List遍历删除的几种使用姿势

在实际的业务开发中,容器的遍历可以说是非常非常常见的场景了,遍历删除呢,用的机会也不会少,但你真的会用么

阅读更多

190515-老哥你真的知道ArrayList#sublist的正确用法么

我们有这么一个场景,给你一个列表,可以动态的新增,但是最终要求列表升序,要求长度小于20,可以怎么做?

这个还不简单,几行代码就可以了

1
2
3
4
5
6
7
8
public List<Integer> trimList(List<Integer> list, int add) {
list.add(add);
list.sort(null);
if (list.size() > 20) {
list = list.subList(0, 20);
}
return list;
}

阅读更多

190514-查看java进程jvm参数

java应用启动之后,有办法查看jvm参数么?

可以通过jps -v来实现

1
jsp -lv

如阿里的java进程输出如下

1
2
28996 com.aliyun.tianji.cloudmonitor.Application -Djava.compiler=none -XX:-UseGCOverheadLimit -XX:NewRatio=1 -XX:SurvivorRatio=8 -XX:+UseSerialGC -Djava.io.tmpdir=../../tmp -Xms16m -Xmx32m -Djava.library.path=../lib:../../lib -Dwrapper.key=drcJnFxDcXCZH8of -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=28989 -Dwrapper.version=3.5.27 -Dwrapper.native_library=wrapper -Dwrapper.arch=x86 -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1
2358 sun.tools.jps.Jps -Denv.class.path=.:/usr/java/jdk1.8.0_131/lib/dt.jar:/usr/java/jdk1.8.0_131/lib/tools.jar:/usr/java/jdk1.8.0_131/jre/lib -Dapplication.home=/usr/java/jdk1.8.0_131 -Xms8m

阅读更多

190513-Centos时间校准

centos系统时间校准

1
ntpdate cn.pool.ntp.org

阅读更多

190509-InfluxDb之时间戳显示为日期格式

直接使用influx-cli查询数据时,时间戳格式不太友好,记录下显示日期的方式

连接时添加参数

1
influx -precision rfc3339

连接后设置参数

1
2
3
4
5
# 进入控制台
influx

# 设置参数
precision rfc3339

阅读更多

190506-InfluxDB之配置修改

influxdb安装完毕之后,一般来讲,有些配置有必要改一下的,比如默认的端口号,默认的数据存储位置,本篇将介绍下常用配置的修改姿势

阅读更多

190505-InfluxDB之权限管理

influxdb安装完毕之后,默认属于裸奔状态,为了安全起见,当然是需要加上权限管理,下面介绍下如何设置权限

阅读更多

190429-Python之获取本机ip地址

环境区分,一种常见的case就是根据ip地址段进行界定,通过给开发环境,测试环境和生成环境映射到不同的ip地址段机器,因此也就有了获取ip地址的需求

阅读更多

190424-Python之16进制与10进制转换

最近正好用到了16进制和十进制之间的互转,发现python相比于java而言,有更优雅的实现方式,下面记录一二

16进制转10进制

1
2
s = '0x12da'
ans = int(s, 16)

10进制转16进制

1
ans = hex(120)

阅读更多

190419-Centos 安装chrome headless并测试

1. 安装命令

1
sudo curl https://intoli.com/install-google-chrome.sh | bash

阅读更多

190416-Python之Webscoket模拟客户端简单使用

记录下,如何使用python,实现简单的测试websocket接口

阅读更多

190412-FastJson序列化对象中非字符串类型key输出非标准格式json串问题记录

采用fastjson作为项目的json序列化和反序列化工具,遇到一个蛋疼至极的问题, 如Map,key为int,则输出的字符串中,key没有被双引号括起来,导致前端解析失败

阅读更多

190403-HashMap的key典型错误使用姿势

记录一个非常低级的错误导致的java应用一直fullgc的问题;根本原因就是HashMap的key使用姿势不对

阅读更多

190401-SpringBoot远程debug设置

记录下SpringBoot jar启动方式,开启远程debug的命令

1
java -server -Xms512m -Xmx512m -XX:AutoBoxCacheMax=20480 -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=9999,suspend=n -jar web.jar

阅读更多

190326-MySql查询时间戳日期互转

mysql内部提供了时间戳和日期互转的函数方便直接使用

  • from_unixtime(time_stamp) : 将时间戳转换为日期
  • unix_timestamp(date) : 将指定的日期或者日期字符串转换为时间戳

阅读更多

190319-Python之URL解析姿势

记录下python3+中,如何解析url,获取想要的信息过程, 首先看下url的构造,基本结构如下

IMAGE

我们主要借助的是 urlparse 来实现参数解析

阅读更多

190318-Python之异常堆栈信息打印

使用python的logging模块进行日志打印,发现堆栈信息总会被吃掉,导致分析问题缺少必要的上下文,搜索一番才发现,原来是使用姿势不对

阅读更多

190317-Quick-Fix 通过反射执行任意类目标方法的实现全程实录(下篇)

前面两篇反射,分别介绍了如何封装参数和定位方法,对于最终的反射调用,还缺少的是目标类的确定和方法执行;本篇博文将目标集中在这最后一块

链上上两篇文章地址

阅读更多

190315-Quick-Fix 通过反射执行任意类目标方法的实现全程实录(中篇)

全程实录上篇,主要介绍了如何解析传入的String参数为我们目标方法的参数类型和对象,其中主要讲述的是基本类型、Class类型、泛型以及普通的POJO类型转换;我们这一篇,目的则放在如何找到需要执行的类和方法,这里需要借助前面的参数解析结果来确定目标方法

阅读更多

190311-Quick-Fix 通过反射执行任意类目标方法的实现全程实录(上篇)

反射可以说是java中非常强大的一个特性了,而我们的quick-fix整个项目,也都是基于反射的基础实现任意目标方法的调用执行,对于fix项目而已,核心在于以下几点

  • 如何将外部请求定位我们需要执行的类、方法
  • 如何将外部参数转换为目标方法的可执行参数
  • 如何执行目标方法

简单来讲,就是封装参数为目标类型,定位目标,然后执行

阅读更多

渲染
渲染