线程安全 1.概念 多个线程同时运行同一个实现了Runnable接口的类,程序每次运行结果和单线程运行结果是一样的,其他变量的值和预期的一样,就称之为线程安全的,反之则是不安全的 2.问题演示 如下模拟一个抢票系统: 定义一个Ticket线程类 public class Ticket impleme ...
分类:
编程语言 时间:
2020-07-09 22:24:20
阅读次数:
79
装饰流也称为处理流 1.缓冲流: 1、提升性能 2、任何处理流底层都是节点流 3、释放外层流,内层流自动释放,手动释放则是从里到外层层释放 1.字节缓冲流 1.BufferedInputStream 2.BufferedOutputStream 2.字符缓冲流 1.BufferedReader 2. ...
分类:
编程语言 时间:
2020-07-09 22:12:30
阅读次数:
81
线程死锁 1.死锁 多个线程因竞争资源而造成的一种僵局(互相等待),无外力作用下程序无法推进的情况称之为死锁 如下图:线程P1拥有锁R1,请求锁R2,而线程P2拥有锁R2请求锁R1,彼此都请求不到资源,结束不了方法无法释放对方需要的资源,因此相互等待无法推进,这就是死锁 2.产生的四个必要条件 1. ...
分类:
编程语言 时间:
2020-07-09 22:07:27
阅读次数:
72
二,使用析构函数的有什么用? 一,程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的。 垃圾回收器检查是否存在应用程序不再使用的对象。 如果垃圾回收器认为某个对象符合析构,则调用析构函数(如果有)并回收用来存储此对象的内存。 程序退出时也会调用析构函数。 二,使用析构函数释放资源 通常,与运 ...
类的析构函数所作的工作是释放所占的资源。在C中,无论是哪个struct都用函数指针U替代析构函数。之所以所有的struct都用指针U是基于如下情况:如果将子类指针赋给基类指针,基类指针在释放的时候不必考虑调用哪个函数名的析构函数,只需调用成员函数U即可。成员函数U需要像一般成员函数一样在fun_类名()函数中指定。类的析构函数是由系统调用的,在C中则要显式调用。至于何时调用,要准确判断。
分类:
编程语言 时间:
2020-07-08 19:46:59
阅读次数:
49
import threading # 线程模块 def function(num): pass thread_1 = threading.Thread(target=function, args=(1,)) # 创建线程 thread_1.start() # 启动线程 thread_1.getNam ...
分类:
编程语言 时间:
2020-07-08 15:19:00
阅读次数:
54
一、原生jdbc连接数据库 使用最原始的方法连接数据库,步骤如下: 注册驱动 获得连接对象 获得执行语句的平台对象 执行sql语句 处理结果 释放连接 //1.注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"); //数据库版本是8.0.15 //2.获得连 ...
分类:
数据库 时间:
2020-07-08 13:10:05
阅读次数:
49
1.new、delete、malloc、free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光 ...
分类:
编程语言 时间:
2020-07-07 19:33:55
阅读次数:
246
1.释放内存和资源 (1)因为像bai StreamReader 、SqlConnection等非.net托管的范围,没办du法自己释放资源zhi,所以需要using进行手动资源释放,如果超出了dao花括号的范围,那资源就被释放了 (2)除了用using,也可以用trycatch finally{/ ...
Token bucket 令牌桶限流机制: 在长连接时,当一个http请求来临,我们需要进行GetConn,放入一个令牌进桶中,当我们的连接释放,于是可以释放连接。 我们控制桶的大小即可控制http的流量。 令牌桶算法,最近在学Golang,而对于HTTP的限流,Golang的令牌桶实现更为简洁,G ...
分类:
其他好文 时间:
2020-07-07 09:41:39
阅读次数:
84