jvm垃圾回收机制 垃圾回收器图中展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,则说明它们可以搭配使用。虚拟机所处的区域则表示它是属于新生代还是老年代收集器。新生代收集器:Serial、ParNew、Parallel Scavenge老年代收集器:CMS、Serial Old、Parallel Old整堆收集器: G1Serial/Serial Old最基本,最悠久的收集器,单线程进行垃圾收集工作,在进行垃圾收集时会 stop the world,即停止...
java的Set集合 HashSet:/*** Constructs a new, empty set; the backing <tt>HashMap</tt> instance has* the specified initial capacity and default load factor (0.75).** @paraminitialCapacitythe initial capacity of the hash table* @throw...
java的Map集合 对于Map的遍历,建议使用entrySet迭代器方式,在进行大量级数据时,效率会高很多。Hashtable:线程安全,其使用在操作方法上添加synchronized关键字的方法实现,效率较差,key和value不允许为null,推荐使用ConcurrentHashMap替代使用。HashMap:线程不安全,其底层实现是数组加单向链表的方式实现,当链表数据过多(默认8个)且数组大小也超过规定值时(默认64个),会转换为红黑树,如果链表长度达到一定长度,而数组大小没有达到,...
java的List集合 LinkedList:底层由链表实现,因此查询慢,插入删除快。LinkedList比ArrayList更加占用内存,因为LinkedList每个节点要存储前后两个节点的引用,影响较小,一般不做选择参考。ArrayList:底层由数组实现,因此查询快,插入删除较慢。扩容机制:正常情况下会扩容1.5倍(有最小扩容数 DEFAULT_CAPACITY = 10,当1.5倍后小于10时,扩容为10),特殊情况下(新扩展数组大小已经达到了最大值)则只取最大值。...
mybatis中在执行添加修改后获取该记录的id <selectKey resultType="int" order="AFTER" keyProperty="id"> select last_insert_id()</selectKey>
sql常用函数 单行函数字符函数: length 获取参数值的字节个数 select length("john") concat 拼接字符串 select concat( last_name,"_",first_name ) as 姓名 form employees upper , lower 将参数值变大写,小写 select ...
读书笔记--《Flutter实战》 读书笔记–《flutter实战》欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的
android开发学习积累(五) 实现TextView的文字竖式显示 通过重写TextView的onDraw方法,通过调用Canvas的rotate()和translate(),将控件在画布上旋转90度,然后x往外移动,若不移动,会显示不出来,因为旋转后,文字位置其实是在画布外的...
读书笔记 --《大话数据结构》 大话数据结构数据结构绪论数据结构逻辑结构指数据对象中数据元素之间的相互关系逻辑结构分为以下四种:集合结构: 集合机构中的数据元素除了同属于一个集合外,它们之间没有其他关系。线性结构: 线性结构中的数据元素之间是一对一的关系。树形结构: 树形结构中的数据元素之间存在一种一对多的层次关系。图形结构: 图形结构的数据元素是多对多的关系。物理结构物理结构是指数据的逻辑结构在计算...
APK瘦身简单实用的几步 删除无用代码以及无用资源删除未使用到xml和图片:Android Studio -> Menu -> Refactor -> Remove Unused Resources选择 Refactor 一键删除选择 Perview 预览未使用到的资源删除未使用到代码:使用Android Studio的Lint,步骤:点击菜单栏 Analyze -> R...
为什么说链表在插入和删除上效率要高于数组 链表和数组是两种截然不同的内存组织方式,正因如此,它们插入、删除、随机访问的时间复杂度正好相反。数组使用的是连续的内存空间,可以利用空间局部性原理,借助CPU cache进行预读,所以访问效率更高。而链表不是连续存储,无法进行缓存,随机访问效率也较低。数组的缺点是大小固定,一经声明就要占用整块连续的内存空间。如果声明的数组过大,系统可能没有足够的连续内存空间用于分配,就会导致“内存不足(...
读书笔记 --《Effective-Java》 Effective Java代码编写原则避免创建不必要的对象(通过重用同一对象,来避免创建多个对象)一些对象的创建比其他对象的创建要昂贵得多。 如果要重复使用这样一个「昂贵的对象」,建议将其缓存起来以便重复使用。 不幸的是,当创建这样一个对象时并不总是很直观明显的。 假设你想写一个方法来确定一个字符串是否是一个有效的罗马数字。 以下是使用正则表达式完成此操作时最简单方法...
android开发学习积累(四) 电话号码:国际号码区号选择控件:CountryCodePicker电话格式验证(国际号码):libphonenumber颜色渐变:<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"> ...
读书笔记 --《 java核心技术卷一》 Java核心技术卷 1第一部分(java基本介绍)java特性简单性面向对象分布式健壮性安全性体系结构中立编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码, 只要有 Java 运行时系统, 这些编译后的代码可以在许多处理器上运行。Java 编译器通过生成 与特定的计算机体系结构无关的字节码指令来实现这一特性。 精心设计的字节码不仅 可以很...
RecyclerView细节功能实现记录 监控滑动 mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {...
解析网页(jsoup) jsoup 可以用来解析各种网页,从而提取我们所需要的内容,使用简单便捷。学习网站:https://www.open-open.com/jsoup/attributes-text-html.htm注意点:使用Elements.select的类选择器时,若class名称带空格,可以用.代替空格进行获取。//网页代码<div class="review list">...
java内存回收,关于引用 java内存回收,目前普遍采用的是可达性算法,而非计数算法,即只有当对象对于GC root,也就是对象树可达时,即存在你甭到达该对象的引用路径存在时,该对象才不会被回收,也就是说,只有存在于GC root上的对象引用了你的对象时,你的对象才不会被归类为垃圾对象,当你的对象引用了GC root上的对象,而GC root上的对象未引用你的对象时,这种情况下,GC root不存在能到达你对象的路径,所以...
android开发学习积累(三) Notification自定义布局RemoteViews Notification要实现自定义布局,就必须使用RemoteViews,而RemoteViews并不支持所有控件,所以在设置布局时,布局文件内的控件类型必须做好挑选,例如ConstraintLayout,RemoteViews就不支持,如果布局使用了ConstraintLayout,就会报错:android.app.Rem...
new String() 当执行 String a = new String(“sss") 时,若字符串常量池内无该内容(”sss“),则该操作new了两个对象,一个在常量池中,一个在堆中若字符串常量池内存在该内容(”sss“),则该操作new了一个对象,存在堆中,栈中的 a指向堆中的对象,堆中的对象指向常量池中已存在的"sss"...
Logger日志框架解析 Logger简介:一款Android日志框架,简洁,可扩展性强,但是相对的,功能也要少上很多,但因为代码构成优秀,可以很轻松的在其之上扩展自己的日志功能。Logger分层:Logger:对外开放,实际使用时,我们只要通过该类就能实现其日志格式设置,日志打印输出等,但实际上使用了代理模式,该类并不实现各个打印方法,内部调用了Printer的实现类来实现各个方法。Printer...