遇到一个问题,搞清楚是什么(What)?为什么(Why)?怎么做(How)?,知其然知其所以然,不知不觉,量变到质变,熟能生出百巧来…
Analyses of Memory Leak
测试工具:LeakCanary
|
|
内存泄漏的主要问题可以分为以下几种类型:
- 静态变量引起的内存泄漏
- 非静态内部类引起的内存泄漏
资源未关闭引起的内存泄漏
Development of BMI
需求
计算BMI指数,给出结果及建议,支持网络检索
技术要点
1、基于ConstraintLayout可视化设计UI界面
2、SeekBar、FloatingActionButton、WebView控件的使用
3、注意合理使用float数据类型
4、逻辑控制,支持数据联动和动态显示隐藏效果
5、长文本字符串的定义显示及相关注意事项
Things about JVM Memory
原文出处: 占小狼
前言
对于C语言开发的程序员来说,在内存管理方面,必须负责每一个对象的生命周期,从有到无。
对于Java程序员你来说,在虚拟机内存管理的帮助下,不需要为每个new对象都匹配free操作,内存泄露和内存溢出等问题也不太容易出现,不过也正是因为把内存管理交给了虚拟机,一旦运行中的程序出现了内存泄露问题,给排查过程造成很大困难。所以只有理解了Java虚拟机的运行机制,才能够运筹帷幄于各种代码。本文以HotSpot为例说说虚拟机的那些事。
JAVA虚拟机把管理的内存划分为几个不同的数据区。
The Summary of Java I/O
出处:LBD’s Blog
Java中I/O操作主要是指使用Java进行输入,输出操作. Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。
数据流是一串连续不断的数据的集合,就象水管里的水流,在水管的一端一点一点地供水,而在水管的另一端看到的是一股连续不断的水流。数据写入程序可以是一段、一段地向数据流管道中写入数据,这些数据段会按先后顺序形成一个长的数据流。对数据读取程序来说,看不到数据流在写入时的分段情况,每次可以读取其中的任意长度的数据,但只能先读取前面的数据后,再读取后面的数据(不能随机读取)。不管写入时是将数据分多次写入,还是作为一个整体一次写入,读取时的效果都是完全一样的。
简而言之:数据流是一组有序,有起点和终点的字节的数据序列。包括输入流和输出流。
当程序需要读取数据的时候,就会建立一个通向数据源的连接,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会建立一个通向目的地的连接。
数据流分类:
流序列中的数据既可以是未经加工的原始二进制数据,也可以是经一定编码处理后符合某种格式规定的特定数据。因此Java中的流分为两种: 1) 字节流:数据流中最小的数据单元是字节 2) 字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。
The Way of Solving Charset Problem in Java.
出处:树上月
出现乱码的原因各式各样但根本原因就是编码转换过程中的格式不一样,所以我们只需要了解了java在运行过程中是如何来完成编码和解码的,乱码也许就真不是什么问题了。
在前面三篇博客中LZ说明了各种编码的来由、编码规则,尤其是Unicode编码更是重点阐述。接着两篇是说明java内部是如何来完成编码解码工作的,分三种情况(IO、servlet/JSP、数据库)来阐述编码转换过程。最后就是java产生乱码的重灾区了:javaWeb,在这几篇博客中LZ介绍了URL编码,服务器端是如何来完成了解码工作的,JSP在转换过程中编码情况,URL产生乱码情况总结。
JAVA中文乱码解决之道(一)—–认识字符集
JAVA中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
JAVA中文乱码解决之道(三)—–编码详情:伟大的创想—Unicode编码
java中文乱码解决之道(四)—–java编码转换过程
java中文乱码解决之道(五)—–java是如何编码解码的
Java中文乱码解决之道(六)—–javaWeb中的编码解码
java中文乱码解决之道(七)—–JSP页面编码过程
java中文乱码解决之道(八)—–解决URL中文乱码问题