写博客或者笔记的时候,会经常要将图片上传至腾讯云对象存储COS上面,需要用QQ登录腾讯云再手动上传,稍显麻烦。 看了下腾讯云开放API,对接很简单。

首先创建一个子账号,然后在访问管理-访问密钥-API密钥管理里面创建一对新密钥SecretId/SecretKey。复制保存下来。

COS有很多语言实现的SDK,Python版本的地址:https://cloud.tencent.com/document/product/436/12269

首先pip安装:

1
pip install -U cos-python-sdk-v5
阅读全文 »

PyQt5工具可以快速实现简单的界面开发,包括界面设计、布局管理以及业务逻辑实现(信号与槽)。 简单说就是使用PyQt5工具可以快速画一个控件摆放整齐、界面整洁有序、布局合理的界面。

阅读全文 »

JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和JConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具, 每一种工具都有其自身的特点, 用户可以根据你需要检测的应用或者程序片段的状况,适当的选择相应的工具进行检测, 先通过一个表格形式简要介绍下这几个命令的作用和使用方法。

命令 作用
jps JVM进程ID查询工具
jstat JVM统计信息监测工具
jstack 查看某个Java进程内的线程堆栈信息
jmap jmap导出堆内存,然后使用jhat来进行分析
jhat jmap导出堆内存,然后使用jhat来进行分析
hprof hprof能够展现CPU使用率,统计堆内存使用情况
阅读全文 »

VisualVM是功能最强大的运行监控和故障处理工具之一,曾经很长一段时间是Oracle官方主力发展的虚拟机故障处理工具。 它除了常规的运行监视、故障处理外,还提供性能分析(Profiling)。VisualVM不需要被监视程序基于特殊Agent去运行, 因此它的通用性极强,对应用程序实际性能影响很小,使得它能直接应用在生产环境中。

从JDK9开始,不再打包到JDK中,需要单独下载。

阅读全文 »

JHSDB是一款基于服务性代理实现的进程外调试工具。可以在一个独立的JVM进程里分析其他HotSpot虚拟机内部数据。 或者从HotSpot虚拟机进程内存中dump出来的转储快照里还原它的运行状态细节。

该工具从JDK9的时候开始提供,随JDK一起发布,无需另外下载。

阅读全文 »

JConsole是一款基于JMX的可视化监控和管理工具,它主要功能是通过JMX的MBean对系统进行信息收集和参数动态调整。 JMX是一种开放性的技术,不仅可以用于虚拟机本身管理,还可以运行于虚拟机上的软件中,很多中间件都通过JMX实现监控管理。

阅读全文 »

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 按照《Java虚拟机规范(第2版)》的规定,Java虚拟机所管理的内存将包括以下几个运行时数据区域。

来个图更加直观点,如下图所示:

阅读全文 »

在JDK1.8 Hotspot移除了永久代用元空间(Metaspace)取而代之, 这时候字符串常量池还在堆, 运行时常量池还在方法区, 只不过方法区的实现从永久代变成了元空间(Metaspace) ,元空间使用的是直接内存,跟JVM内存无关。

字符串常量池中同时存在字符串常量和字符串引用。直接赋值和new String("xxx")构造函数都可能导致常量池中生成字符串常量; 而intern()方法会尝试将堆中对象的引用放入常量池。

字符串的创建和使用几种典型常见。

阅读全文 »

REST API都是要对外提供服务的,那么文档是必须的。Swagger是一个简单但功能强大的API表达工具。 它具有地球上最大的API工具生态系统,数以千计的开发人员,使用几乎所有的现代编程语言, 都在支持和使用Swagger。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。

2.X版本已经发布,Swagger变得更加强大。值得感激的是,Swagger的源码100%开源在github

使用Swagger不纯粹是为了生成一个漂亮的API文档,也不纯粹是为了自动生成多种语言的代码框架, 重要的是,通过遵循它的标准, 可以使REST API分组清晰、定义标准。

通过Swagger生成API 文档有两种方式:

  1. 通过代码注解来生成。好处:随时保持接口和文档的同步。坏处:代码入侵
  2. 使用Swagger Editor 编写API文档的Yaml/Json定义。

虽然第一种方式最方便,不用编写swagger配置文件,但是对代码污染太严重了。所以在项目里面我选择第二种方式, 另外我也不实用Swagger UI来展示API文档,页面太花哨了。 这里我选择swagger2markup将其转换为AsciiDoc或MarkDown格式。

阅读全文 »