09 2021 档案
锁的分类
摘要:JUC cpu多核 public class Test1 { public static void main(String[] args) { // 获取cpu核数 // cpu密集型 io密集型 System.out.println(Runtime.getRuntime().availablePr
synchronized锁的内容
摘要:synchronized锁的内容 import java.util.concurrent.TimeUnit; class Test1 { public static void main(String[] args) { Phone phone = new Phone(); new Thread(()
ReentrantLock
摘要:Lock锁 源码 Lock public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long time,
虚假唤醒
摘要:虚假唤醒 class A { public static void main(String[] args) { Data data = new Data(); // +1 new Thread(() -> { for (int i = 0; i < 10; i++) { try { data.inc
Git
摘要:Git 1.起步 建议直接去看官方文档 1.1创建本地用户 $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" 如果使用了 --global 选项,那么该命令
监听器
摘要:接口实现监听器 Student.java package test; public class Student { private String name; public Student(String name) { this.name = name; } // 设置监听器接口 interface
浅拷贝深拷贝1
摘要:浅克隆 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。即对象的浅拷贝会对“主”对象进行拷贝,但不会复制主对象里面的对象。”里面的对象“会在原来的对象和它的副本之间共享。浅拷贝仅仅复制所考虑的对象,而不复制它所引用的对象。 class Score { pr
行为型设计模式
摘要:3.行为型模式 3.1观察者模式 **意图:**定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 **主要解决:**一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 **何时使用:**一个对象(目标对象)的状态发
结构型设计模式
摘要:2.结构型模式 2.1适配器模式 **意图:**将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 **主要解决:**主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。 何时使用: 1、
序列化
摘要:序列化 Serializable activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://sch
BottomNavigation
摘要:BottomNavigation 导航布局navigation.xml <?xml version="1.0" encoding="utf-8"?> <navigation xmlns:android="http://schemas.android.com/apk/res/android" xmln
Paging
摘要:Paging 添加paging和room的依赖 def paging_version = "3.0.1" implementation "androidx.paging:paging-runtime:$paging_version" // alternatively - without Androi
权限
摘要:权限 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" and
Broadcast
摘要:Broadcast 静态注册 在清单文件中静态注册 <!-- 静态注册广播接收者--> <receiver android:name=".CustomReceiver"> <!--设置有序广播的优先级,越大优先级越高--> <intent-filter android:priority="100">
创建型设计模式
摘要:1.创建型模式 1.1单例模式 **意图:**保证一个类仅有一个实例,并提供一个访问它的全局访问点。 **主要解决:**一个全局使用的类频繁地创建与销毁。 **何时使用:**当您想控制实例数目,节省系统资源的时候。 **如何解决:**判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 **关
OOP七大原则
摘要:OOP七大原则 开闭原则 抽象约束、封装变化。对扩展开放,对修改关闭。 通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。 里氏替换原则 子类可以扩展父类的功能,但不能改变父类原有的功能,尽量不要重写父类的方