🛸~~ |

n1ce2cv

园龄:5年2个月粉丝:4关注:1

10 2021 档案

ThreadPool线程池
摘要:线程池 3大方法,7大参数,4大拒绝策略 降低资源消耗 提高响应速度 方便管理 线程复用,控制最大并发数,管理线程 最大线程定义 CPU密集型:几核cpu就设置为几,通过代码去获取Runtime().getRuntime().availableProcessors() IO密集型:判断程序中十分耗费
53
0
0
BlockingQueue阻塞队列
摘要:BlockingQueue 实现类 Collection->Queue->BlockingQueue 使用场景:多线程并发处理,线程池 Queue源码 public interface Queue<E> extends Collection<E> { boolean add(E e); boolea
53
0
0
ReadWriteLock读写锁
摘要:ReadWriteLock读写锁 ReadWriteLock只允许一个线程修改,但是get()方法只读,不修改数据,实际上允许多个线程同时调用,使用ReadWriteLock可以解决这个问题 适合读多写少的场景 源码 public interface ReadWriteLock { Lock rea
130
0
0
Semaphore信号量
摘要:Semaphore 公共资源有限时用户控制流量 构造函数,默认非公平锁 public Semaphore(int permits) { sync = new NonfairSync(permits); } public Semaphore(int permits, boolean fair) { s
31
0
0
Callable、Future和FutureTask
摘要:Callable Runnable没有返回值:public abstract void run();,Callable可以有返回值:V call() throws Exception; 可以抛出异常 方法不同,run()/call() 源码 public interface Callable<V>
41
0
0
CountDownLatch和CyclicBarrier
摘要:CountDownLatch减法计数器 CountDownLatch 允许一个或多个线程等待一些特定的操作完成,而这些操作是在其它的线程中进行的 CountDownLatch 构造函数中有一个 count 参数,表示有多少个线程需要被等待。其他线程调用countDown()方法,每调用一次 coun
76
0
0
集合类不安全
摘要:集合类不安全 ConcurrentModificationException并发修改异常 解决办法 写入时复制 使用工具类Collections List不安全 import java.util.*; import java.util.concurrent.CopyOnWriteArrayList;
30
0
0
Junit5
摘要:JUnit5 安卓build.gradle https://github.com/mannodermaus/android-junit5 Unit 3 或 JUnit4 的向后兼容性 JUnit4 已经存在了很长时间,并且用 JUnit4 编写了许多测试。JUnitJupiter 也需要支持这些测试
110
0
0
二叉树遍历的递归算法
摘要:二叉树遍历 递归算法 BinaryTree.h // // Created by Administrator on 2021/10/25. // #ifndef TEST_BINARYTREE_H #define TEST_BINARYTREE_H #include <iostream> using
72
0
0
基于BIO的Socket通信
摘要:基于BIO的Socket通信 告知对方命令发送完毕 关闭socket:socket.close() 关闭流:socket.shutdownOutput(),ocket.shutdownInput() 约定终结符 指定数据长度 单工通信 通过约定终结符的方式关闭连接 通过关闭流的方式告诉对方发送完毕
108
0
0
枚举类型
摘要:枚举 基本使用 比较 使用enum定义的枚举类是一种引用类型引用类型比较,要使用equals()方法,如果使用==比较,它比较的是两个引用类型的变量是否是同一个对象。因此,引用类型比较,要始终使用equals()方法,但enum类型可以例外。这是因为enum类型的每个常量在JVM中只有一个唯一实例,
87
0
0
串口开发
摘要:串口开发 编译so文件和项目配置 google串口api下载https://github.com/cepr/android-serialport-api 修改android-serialport-api-master\android-serialport-api-master\android-ser
434
0
0
存储结构和文件操作
摘要:文件操作 内部存储 外置SD卡 内置SD卡:/storage/emulated/0,其中又分为私有目录(Android/)和公共目录 apk res/raw下的和assert下的,这些数据只能读取,不能写入。单个文件大小不能超过1M。 res/raw不可以有目录结构,而assets则可以有目录结构。
533
0
0
IO流
摘要:Stream 字节流操作的基本单元为字节;字符流操作的基本单元为Unicode码元。 字节流默认不使用缓冲区;字符流使用缓冲区。 字节流通常用于处理二进制数据,实际上它可以处理任意类型的数据,但它不支持直接写入或读取Unicode码元;字符流通常处理文本数据,它支持写入及读取Unicode码元。 !
34
0
0
主机与安卓模拟器建立连接
摘要:主机与安卓模拟器建立连接 1.服务器和客户端都在主机上或都在模拟器上 客户端都使用127.0.0.1 new Socket("127.0.0.1", 9999); 2.主机:服务器,模拟器:客户端 客户端使用10.0.2.2,主机回环接口的特殊别名(即主机上的 127.0.0.1) new Sock
627
0
0
Socket
摘要:网络编程 查询ip import java.net.InetAddress; import java.net.UnknownHostException; public class MyInetAddress { public static void main(String[] args) { try
42
0
0
Notification
摘要:Notification <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="sendNotification" android:text="发送通知"/>
131
0
0
Service
摘要:Service Service既不是一个线程,Service通常运行在当成宿主进程的主线程中,所以在Service中进行一些耗时操作就需要在Service内部开启线程去操作,否则会引发ANR异常。 也不是一个单独的进程。除非在清单文件中声明时指定进程名,否则Service所在进程就是applicat
543
0
0
RecyclerView刷新方式
摘要:RecyclerView刷新方式 刷新全部item notifyDataSetChanged() student.setValue(new Student("二狗")); studentList.add(student.getValue()); myRecyclerViewAdapter.notif
544
0
0
点击右上角即可分享
微信分享提示
深色
回顶
收起