python有六种常见的数据结构: Number (数字) String (字符串) List (列表) Tuple (元组) Dictionary (字典) Set (集合) 根据数据结构特性划分: 一、Number(数值) Python3支持int、float、bool、complex(复数)几种类型的数值 intfloatboolconplex 11.0True/False1+j 数值类型的基本操作 A=3,B=2 加法 C=A+B #5 减法 C=B-A #1 乘法C=A*B #6 除法C=A/B #1.5 取余C=A%B #1 取整C=A//B #1 a = 3 b = 2 print(a+b) print(a-b) print(a*b) print(a/b) print(a//b) print(a%b) 二、String(字符串) 字符串是字符的有序序列,它可以使用+、*运算,他是不可变的数据类型 使用单引号、双引号和三引号可以声明 "r"字符串变为原始字符串 "\"为转义字符 2.1 声明字符串 # 声明字符串 var1 = 'hello' var2 = "hello".... 有更新! python知识总结--常用数据结构 python
一、嵌套类 1.1 内部类 1.1.1 概念 内部类是定义在一个类中的类,内部类有以下特点 内部类的方法可以访问该类定义所在的作用域中的数据,包括私有数据 内部类可以对同一个包中的其他类隐藏起来 示例,下述代码中创建了一个类,里面有一个内部类,在内部类定义了一个定时器,定时输出当前时间,在TimerPrint内部类中,我们可以访问到TalkingClock的数据(包括静态变量、静态方法、普通变量、普通方法) class TalkingClock{ private int interval; private boolean beep; public static String NAME = "龙"; public TalkingClock(int interval, boolean beep){ this.interval = interval; this.beep = beep; } public void start(){ ActionListener actionListener = new TimerPrint(); Timer t = new Timer(interval,ac.... 有更新! Java基础--内部类和lambda表达式 Java基础
一、悲观锁和乐观锁 多线程访问共享资源时,会对共享资源有增删改查的操作; 悲观锁在线程操作共享资源期间,枷锁成功就会禁止其他线程操作共享资源; 乐观锁不限制各个线程对共享资源的操作,但是当线程要更新共享资源时,会先判断该资源有没有被其他线程修改,如果共享资源没有被其他线程更新,则更新共享资源,如果被其他资源更新,则根据自己的需求另作处理; 悲观锁适合写操作较多的场景,加锁可以保证数据正确性,java的synchronized和Lock都是悲观锁实现 乐观锁适合读操作较多的场景,不加锁可以提升性能,java的原子操作类就是基于乐观锁实现 二、自旋锁和非自旋锁 2.1 自旋锁 多线程获取共享资源时,若资源被其他线程占用,该线程就会等待获取锁资源,但是线程不会放弃已经拿到的CPU时间片,通过自旋等待共享资源被释放 2.2 非自旋锁 非自旋锁再等待其他线程施放锁的时候,会让出CPU时间片,使线程进入休眠,所释放后,才会重新获取CPU时间片 三、无锁、偏向锁、轻量级锁和重量级锁 偏向锁通过对比Mark Word处理加锁问题,避免执行CAS操作,轻量级锁通过CAS操作和自旋来解决加锁问题,避免线程.... 有更新! Java基础--常见的几种锁 Java基础
一、线程的状态 创建(NEW) 创建但是未调用start方法 可运行(RUNNABLE) 可能正在运行,也可能正在等待CPU时间片 阻塞(BLOCKED) 等待获取一个锁 等待(WAITING) 处于这种状态的线程不会被分配CPU执行时间,它们要等待被显式地唤醒 超时等待(TIMED_WAITING) 处于这种状态的线程不会被分配CPU执行时间,无须无限期等待被其他线程显示地唤醒,在达到一定时间后它们会自动唤醒 终止(TERMINATED) 线程运行结束 1.1 新建(NEW) 创建后尚未启动。 1.2 可运行(RUNNABLE) 可能正在运行,也可能正在等待 CPU 时间片。 包含了操作系统线程状态中的 Running 和 Ready。 1.3 阻塞(BLOCKED) 等待获取一个排它锁,如果其他线程释放了锁就会结束此状态 1.4 无限期等待(WAITING) 等待其它线程显式地唤醒,否则不会被分配 CPU 时间片 进入等待方法退出等待方法 Object.wait()Object.nofity或Object.nofityAll Thread.join()被调用的线程执行完毕 Lock.... 有更新! Java基础--多线程 Java基础
一、概述 集合框架主要包括Map和Collection,Collecton用于存储对象,而Map则通过键值对(两个对象)存储对象 二、Collection 2.1 Set TreeSet 基于红黑树实现,支持有序操作 HashSet 基于哈希表实现,查询速度快,但是数据无序 LinkedHashSet 查询效率与hashset一致,但是内部基于双向链表实现 2.2 List ArrayList 基于数组实现,查询快,增删慢 Vector 实现与ArrayList一致,但是线程安全 LinkedList 基于双向链表实现,查询慢,增删快。还可用于栈、队列、双向队列 2.3 Queue LinkedList 实现双向队列 PriorotyQueue 基于堆结构实现,可以用他来实现优先队列 三、Map TreeMap 基于红黑树实现 HashMap 基于哈希表实现 HashTable 与HashMap类似,但是线程安全 LinkedHashMap 使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序 参考Java中的Map - 问尤龙の时光 (wenyoulong.co.... 有更新! Java基础--集合框架 Java基础