java
文章平均质量分 63
一颗暗色星辰
喜欢将一件事琢磨透彻
展开
-
Android线程池源码阅读记录
今天面试被问到线程池如何复用线程的?当场就懵掉了...于是面试完毕就赶紧打开源码看了看,在此记录下:我们都知道线程池的用法,一般就是先new一个ThreadPoolExecutor对象,再调用execute(Runnable runnable)传入我们的Runnable,剩下的交给线程池处理就行了,于是这次我就从ThreadPoolExecutor的execute方法看起:public void execute(Runnable command) { if (command ==原创 2021-12-22 22:48:30 · 1576 阅读 · 0 评论 -
Android序列化
1.定义序列化:将对象的状态信息转换成可存储、传输的字节流,这些字节流可以保存到磁盘上,也可以通过网络进行传输,在以后某个时刻恢复原来的对象2.序列化的方式 Serializable java提供的一个序列化接口,使用方便,序列化后的字节流可以持久存储,但底层通过反射来实现,中间会产生大量对象,效率低 Parcelable Android自己实现的序列化接口,通过将类状态信息分解为基本类型信息在内存中进行存取,效率高,底层通过c++实现,由于android系统各个版本可能实现Pa原创 2021-11-27 14:35:50 · 2550 阅读 · 0 评论 -
序列化问题
1、为什么要进行序列化因为序列化可以将对象的属性保存在文件、数据库、网络流中进行传输,在某一时刻利用这些保存的信息来进行对象的恢复2、序列化有哪几种方式,有什么不同,优劣序列化可以通过Serializable接口和Parcelable接口来实现,其中Serializable是java提供的接口,底层通过反射实现对序列化对象属性的保存,而Parcelable是Android提供的接口,原理是将序列化对象转换成基本数据类型进行保存,适合在内存中使用,如activity间的信息传输,效率比Serial原创 2021-11-21 17:14:28 · 2283 阅读 · 0 评论 -
关于集合的一些总结
1、java中集合有三大类型:分别是Set、Queue、List,都是继承于Collection接口,其中set中元素是无序的,不允许null,List是有序的,允许null。关于Queue有一个ArrayDeque子类,其中封装了栈和队列的相关操作,当使用栈时,可以用push方法和pop方法;当使用队列时,可使用offer方法和pop方法,这些集合中的操作都是线程不安全的,如果想要线程安全,可以使用Collection.SynchronizeXxx进行包装,另外Collection还提供了很多的API,可原创 2021-11-20 20:17:13 · 505 阅读 · 0 评论 -
关于数据类型、位运算、数据结构的一些总结和思考
1、首先要说的是java的8大数据类型:整数类型 byte(1个字节) short(2个字节) int(4个字节) long(8个字节) 字符类型 char(2个字节) 浮点类型 float(4个字节) double(8个字节) 布尔类型 boolean(单个出现4个字节,当作int类型;在boolean数组中被当作byte,占1个字节) String类型具体所占字节,要根据其内容决定,一般英文字母或符号算一个字节,汉字算3个字节(utf-8编码)原创 2021-11-20 14:34:24 · 1116 阅读 · 0 评论 -
简单说说设计模式之代理模式
样例代码public class DaiLi { public DaiLi() { /** * 步骤4:使用代理 * 需要使用哪个就代理哪个 * 使用代理可以满足软件开发的开闭原则,即对功能扩展开放,对修改关闭 */ //DaiLiClass.getInstance().init(new Facade1()); //DaiLiClass.getInstance().init(ne原创 2020-06-13 13:19:08 · 222 阅读 · 0 评论 -
JVM探索
前言JVM就是java虚拟机的意思,为什么要了解它?因为了解它能够对java代码的运行过程有一个清晰的认识,能够帮助你在遇到问题时知道产生问题的根本原因,以及怎样去解决问题。JVM的组成JVM组成大致如图上所示,程序运行的过程大致是JVM先通过classloader将编译过的.class文件加载进内存里,放入不同的地方,如线程共享区的堆主要存放各种类对象,方法区则存放常量、类变量和静态变量...原创 2020-04-18 21:43:57 · 231 阅读 · 0 评论 -
关于构建服务器和后端接口的过程
1.Windows系统下查看是否安装了mysql输入services.msc打开服务窗口,查看是否有mysql服务2.mysql下载安装、配置和使用3.忘记初始密码时:在mysql安装的目录下删除data文件夹以管理员身份运行命令行输入:mysqld --initialize --console回车输入:net start mysql回车输入:mysql -u root -p回车...原创 2019-11-12 23:57:57 · 1143 阅读 · 0 评论 -
Android studio实现简单的计算器
需求分析及概要设计目的 开发一个简单的计算器App,使之能够完成加减乘除混合运算工具及环境 使用java语言,在Android studio平台上进行开发功能设计 "+":实现两数相加 "-&原创 2018-08-16 16:00:20 · 34009 阅读 · 11 评论 -
关于Android studio中出现“远程主机强迫关闭了一个现有的连接”的错误处理
步骤查找哪个程序占用了5037端口: 在命令行输入 netstat -aon|findstr “5037”找到最后一行最后一列的占用端口的PID数值,然后输入tasklist|findstr “PID”可以看到占用5037端口的进程名,然后输入taskkill /f /t /im 进程名即可注:就算占用进程是studio64.exe,同样杀死它!...原创 2018-09-03 15:25:28 · 5495 阅读 · 3 评论 -
eclipse安装配置教程
请点击以下链接:eclipse安装配置教程转载 2018-09-12 21:50:02 · 740 阅读 · 0 评论 -
wait()与sleep()方法区别
探讨wait()方法与sleep()方法的区别前,我们应该先了解线程的生命周期,即线程的几种状态:下面来具体了解下sleep()和wait()方法的区别:1.首先,sleep()方法属于Thread类,针对当前进程的,必须捕获异常,调用此方法后当前进程会停止运行一段时间,但不会释放同步锁及其占有的资源,等到sleep()时间到了之后会进入就绪状态,等待获取CPU重新进入运行状态。2.而wa...原创 2018-11-10 10:52:36 · 1014 阅读 · 0 评论 -
线程池的使用
为什么要使用线程池?答:因为对于并发度很高的应用程序来说,频繁的创建线程将会浪费时间,降低应用程序的效率,所以创建一个线程池,可以实现线程的复用,提高并发任务的处理速度与效率线程池的一些基本概念1、corePoolSize:核心池大小,即拥有的线程数量2、maximumPoolSize:最多线程数量,即能够创建的最大数量的线程3、keepAliveTime:没有任务时线程存在多久会销毁...原创 2018-11-10 11:30:10 · 234 阅读 · 0 评论 -
java疯狂讲义笔记之类加载机制与反射
1.类加载运行一个程序时,就会启动一个JVM进程。而当程序主动使用某个类时,系统就会通过加载、连接、初始化 ,将class文件读入内存,并为之创建一个java.lang.class的对象,这就是类加载。系统中所有的类都是java.lang.Class的实例2.类连接的过程类加载过后会产生一个Class对象,接着将会进入连接阶段,把类的二进制数据合并到JRE中。此过程分为三个阶段:验证、准备...原创 2019-04-01 20:11:40 · 190 阅读 · 0 评论 -
java对象与json对象的相互转换
大家好,近日我用java实现了关于java对象与json对象的简单转换,之前由于不怎么了解json,所以整个过程也相当艰难,今天成功了在这里跟大家分享一下,首先贴出源码:convert.classimport java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import ...原创 2018-08-03 17:16:07 · 2479 阅读 · 0 评论