- 博客(31)
- 收藏
- 关注
原创 【Java多线程】线程池
之前都是把线程创建后,使用完就销毁,性能差思路:提前创建多个线程,放入线程池,使用时直接获取,使用完放回池子;避免频繁创建销毁使用线程池:ExecutorService 和 ExecutorsExecutorService:真正的线程池接口,常见子类: ThreadPoolExecutor (1) void execute(Runnable command): 执行任务/命令,没有返回值,用于执行Runnable (2) <T> Future<...
2021-11-15 22:52:22 285
原创 【Java多线程】线程协作
生产者消费者模式(问题)数据缓存区存放“产品”,如果缓存区没有“产品”,生产者将产品放入缓存,假如有的话,则停止生产等待消费者取走;反之,缓存区没有“产品”,消费者则停止消费并等待;(生产者和消费者共享同一个资源)线程通信基于Object类的方法,都只能在同步方法或同步代码块中使用,否则会抛出IllegalMonitorStateException异常:wait() 表示线程一直等待,并释放锁,直到其他线程通知;wait(long timeout) 指定等待的毫秒数notify.
2021-11-15 22:26:32 447
原创 【Java多线程】锁
死锁当使用static确定共享且只有一份资源,并且嵌套在同一个锁中,此时等待1秒后,仍然没有释放锁,然后申请获取另外一个的锁,此时产生死锁;// 死锁:多个线程相互用着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { Makeup g1 = new Makeup(0, "猪猪"); Makeup g2 = new Makeup(1, "彤彤"..
2021-11-15 16:12:57 268
原创 【Java多线程】同步方法
使用synchronized方法和 synchronized块synchronized方法原理:首先,每个对象对应都有一把锁。当声明了synchronized方法,此时每个synchronized方法都必须获得锁才能执行,否则就会线程阻塞;方法一旦执行,就独占锁,直到方法返回才释放锁,后面被阻塞的线程才能获得这个锁,继续执行;同步块synchronized(Obj){}原理:Obj称之为同步监视器, 同步方法无需指定同步监视器,因为指定是this(对象本身)同步监视器的执行过程:(假设多..
2021-11-14 22:48:53 255
原创 【JAVA多线程】线程状态
线程状态Java线程状态New 尚未启动的线程 处于此状态Runable 在java虚拟机中执行的线程 处于此状态Blocked 被阻塞等待监视器锁定的线程 处于此状态Waited 正在等待另一个线程执行特定动作的线程 处于此状态Timed_waiting 正在等待另一个线程执行动作到达指定等待时间的线程 处于此状态Terminated 已退出的线程 处于此状态线程停止方法最好不要用stop() ,destroy():/** * * ...
2021-11-14 16:40:51 212
原创 【JAVA多线程】实现多线程方法
继承Thread类 子类继承Thread类具备多线程能力 启动线程:子类对象.start() 不建议使用:避免OOP单继承局限性实现Runnable接口 实现接口Runnable具有多线程能力 启动线程:传入目标对象+Thread对象.start() 推荐使用:避免单继承局限性,灵活方便,方便同一个对象被多个线程使用实现Callable接口 实现callable接口,...
2021-11-09 21:12:30 264
原创 【设计模式】代理模式
静态代理 和 动态代理静态代理1.抽象角色:一般会使用接口或者抽象类类解决// 租房public interface Rent { public void rent();}2.真实角色:被代理的角色// 真实对象:房东 --> 需要完成租房的工作public class Host implements Rent{ @Override public void rent() { System.out.println("房东要出租房子"
2021-11-06 20:24:55 73
原创 【设计模式】桥接模式
个人感觉就是定义一个主类充当桥,把多个子类组合(连接)起来,形成一个复杂的类。以不同类型电脑为例:台式电脑,笔记本电脑,平板电脑那不同品牌就有不同品牌的产品,这里的先定义一个品牌接口用于扩展子类的方法,然后品牌进行实现:// 品牌public interface Brand { void info();}// 联想品牌public class Lenovo implements Brand{ @Override public void info...
2021-11-03 10:36:03 60
原创 【设计模式】适配器模式
结构性模式的一种,用于实现松耦合,主要是可以:将一个类的接口 转换成 用户希望的另一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。可以分为两种:类适配器,对象适配器角色有:目标接口(用户想要的接口/抽象类)、需要适配的类(被适配的类)、适配器(把原接口转成目标对象)抽象成usb转接网线口的场景对于,类适配器首先是 只有网线和usb口,没有网线口,有一个上网的请求,需要对网线进行适配。此时,先对转接口进行抽象定义方法,然后在adapter中通过继承被适配器的方法
2021-11-02 22:18:26 84
原创 【设计模式】原型模式
原型模式比较简单,主要是对深克隆方法进行改写假设有一个类** 1.实现接口 cloneable* 2.重写一个方法* */// Videopublic class Video implements Cloneable{ private String name; private Date createTime; @Override protected Object clone() throws CloneNotSupportedException {/
2021-11-02 17:10:51 378
原创 【设计模式】建造者模式
跟上两篇的类型一样,属于创建型模式,主要是可以将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示。首先帮助理解的例子:建房子先定义抽象类Builder,定义抽象的流程,以及返回产品// 抽象的建造者:流程public abstract class Builder { abstract void buildA(); // 铺地基 abstract void buildB(); // 钢筋工程 abstract void buildC(); // 铺
2021-11-02 14:50:00 91
原创 【设计模式】工厂模式
分类:简单工厂模式,工厂方法模式,抽象工厂模式作用: 实现创建者和调用者分离本质:实例化对象不适用new 用工厂方法代替,将调用者和实现类解耦首先是简单工厂模式(静态工厂模式)// 工厂类 接口public interface Car { void name();}// 实现类 public class Wuling implements Car { @Override public void name(){ System.out.pri
2021-11-02 09:58:52 59
原创 【设计模式】单例模式
只要是单例模式,就要构造器私有使用饿汉式单例会有浪费空间的可能// 饿汉式单例public class Hungry { // 这里没用到,每次单例实例化 可能会浪费空间 private byte[] data = new byte[1024*1024]; private Hungry(){ } private final static Hungry HUNGRY = new Hungry(); public static Hungry
2021-11-01 11:02:33 68
原创 2021.9.30 广州科大讯飞(讯飞启明)一面
java基础(1)如何在多个循环中跳到指定循环? 用break标签变量spring(2)springboot springmvc的区别(3)spring如何拦截url ?(具体问法有点忘了,回答也直接背了一遍spring工作流程)mybatis(4)“$”和“#”的作用mysql(5)索引的认识操作系统(6) 死锁...
2021-10-07 10:13:16 144
原创 RabbitMQ 在windows下部署踩坑
前面三步网上大同小异,可以直接用第一步:下载并安装erlang第二步:配置erl环境变量第三步:下载安装rabbitmq第四步:(有坑)(1)首先打开命令行 cmd,这里需要用管理员运行cmd;(2)命令行输入rabbitmq-plugins enable rabbitmq_management安装插件(3)命令行检验是否安装成功 输入 rabbitmqctl status 这里是我个人电脑是用了中文用户名所以会出现以下错误:Stack trace: ** (Argum..
2021-09-18 16:26:37 109
原创 2021.7.22 腾讯电话面试(突然被捞,应该是秋招)
无语... 突然被通知电话面试,前两天忙死了,完全没准备,直接面试了。不过感觉CSIG事业群怪怪的,没问我项目,没问我基础,都是场景题... 完全没收获...(可能是因为这个事业群的技术栈是python,然后我一开头说自己用java比较多)提醒:CSIG事业群后台开发最好还是要有python开发经验的,我只在简历上有一句“熟练使用python语言数据预处理”(我研究生是深度学习方向的)1. 问我怎么用python处理文本数据2. linux的内容(查进程命令是什么呀?ps -ef ) ..
2021-07-22 20:24:14 651
原创 2021唯品会JAVA后台开发暑假实习(一面)
Java基础(1)JVM内存模型(还问了负GC?没听懂是什么... )(2)int和Integer的区别
2021-06-15 20:40:05 1371 3
原创 torch_geometric CPU版本错误 总结
假如你想安装 torch_geometric CPU版本,然后出现这个警告:RuntimeError: Detected that PyTorch and torch_sparse were compiled with different CUDA versions. PyTorch has CUDA version 10.1 and torch_sparse has CUDA version 0.0. Please reinstall the torch_sparse that matches you
2020-11-10 10:27:20 1131 1
原创 【机器翻译】| Encoder-Decoder
out为每个时序单元的输出,形状为(seq_len, batch_size, num_hiddens),state包含最后一个时间步的隐藏状态和记忆细胞,形状为(num_layers, batch_size, num_hiddens)Encoder需要的是state(作为语义编码),Decoder需要的是output(生成每个时间步的单词)需要一个Dense层,把 H...
2020-03-29 15:54:50 547
原创 【自然语言处理】| LSTM 长短期记忆 long short-term memory
LSTM长短期记忆long short-term memory:遗忘门:控制上一时间步的记忆细胞 输入门:控制当前时间步的输入输出门:控制从记忆细胞到隐藏状态记忆细胞:⼀种特殊的隐藏状态的信息的流动...
2020-03-24 19:47:46 494
原创 【自然语言处理】| 门控循环神经⽹络 GRU
RNN存在的问题:梯度较容易出现衰减或爆炸(BPTT),裁剪梯度只能缓解梯度爆炸,无法缓解梯度消失的问题。进而提出,⻔控循环神经⽹络:捕捉时间序列中时间步距离较⼤的依赖关系推导公式 :• 重置⻔有助于捕捉时间序列⾥短期的依赖关系;• 更新⻔有助于捕捉时间序列⾥⻓期的依赖关系。...
2020-03-12 14:00:15 209
原创 【自然语言处理】循环神经网络 | RNN
循环神经网络基于循环神经网络实现语言模型:我们的目的是基于当前的输入与过去的输入序列,预测序列的下一个字符。循环神经网络引入一个隐藏变量 H,用 H_t 表示 H 在时间步 t 的值。H_t 计算基于 X_t 和 H_t−1,可以认为H_t记录了到当前字符为止的序列信息,利用H_t对序列的下一个字符进行预测。循环神经网络的构造假设是时间步t的小批量输入,是该时间步的隐藏变量,则:...
2020-03-11 22:35:50 354
原创 语言模型 language model
时序数据的采样在训练中我们需要每次随机读取小批量样本和标签。与之前章节的实验数据不同的是,时序数据的一个样本通常包含连续的字符。假设时间步数为5,样本序列为5个字符,即“想”“要”“有”“直”“升”。该样本的标签序列为这些字符分别在训练集中的下一个字符,即“要”“有”“直”“升”“机”,即X=“想要有直升”,Y=“要有直升机”。现在我们考虑序列“想要有直升机,想要和你飞到宇宙去”,如果时间...
2020-03-11 08:49:21 326
原创 【卷积神经网络】| ResNet
残差网络(ResNet)深度学习的问题:深度CNN网络达到一定深度后再一味地增加层数并不能带来进一步地分类性能提高,反而会招致网络收敛变得更慢,准确率也变得更差。残差块(Residual Block)恒等映射:左边:f(x)=x右边:f(x)-x=0 (易于捕捉恒等映射的细微波动)在残差块中,输⼊可通过跨层的数据线路更快 地向前传播。ResNet模型1. 卷积 co...
2020-03-07 23:22:10 346
原创 批量归一化
批量归一化(Batch Normalization)对输入的标准化(浅层模型)处理后的任意一个特征在数据集中所有样本上的均值为0、标准差为1。标准化处理输入数据使各个特征的分布相近。批量归一化(深度模型)利用小批量上的均值和标准差,不断调整神经网络中间输出,从而使整个神经网络在各层的中间输出的数值更稳定。(1)全连接层的批量归一化位置:全连接层中的仿射变换和激活函数之间。 ...
2020-03-07 13:52:12 201
原创 【卷积神经网络】| NiN网络 GoogLeNet
⽹络中的⽹络(NiN)LeNet、AlexNet和VGG:先以由卷积层构成的模块充分抽取 空间特征,再以由全连接层构成的模块来输出分类结果。NiN:串联多个由卷积层和“全连接”层构成的小⽹络来构建⼀个深层⽹络。⽤了输出通道数等于标签类别数的NiN块,然后使⽤全局平均池化层对每个通道中所有元素求平均并直接⽤于分类。1×1卷积核作用1.放缩通道数:通过控制卷积核的数量达到通道数的放缩...
2020-03-06 22:06:59 396
原创 【卷积神经网络】| AlexNet 、 VGG
研究背景LeNet: 在大的真实数据集上的表现并不尽如⼈意。1.神经网络计算复杂。2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。机器学习的特征提取:手工定义的特征提取函数。神经网络的特征提取:通过学习得到数据的多级表征(边缘--> 花纹,轮廓---> 物品),并逐级表⽰越来越抽象的概念或模式。开启了深度卷积神经网络时代——AlexNet:首次证明学习...
2020-03-06 14:44:36 247
原创 【卷积神经网络】 | LeNet
使用全连接层的局限性:图像在同一列邻近的像素在这个向量中可能相距较远。它们构成的模式可能难以被模型识别。 对于大尺寸的输入图像,使用全连接层容易导致模型过大。使用卷积层的优势:卷积层保留输入形状。 卷积层通过滑动窗口将同一卷积核与不同位置的输入重复计算,从而避免参数尺寸过大。LeNet卷积层块里的基本单位是卷积层后接平均池化层:卷积层用来识别图像里的空间模式,如线条和...
2020-03-05 00:16:01 269
原创 【卷积神经网络】| 学习回顾
名词解释:二维互相关运算:二维互相关(cross-correlation)运算的输入是一个二维输入数组和一个二维核(kernel)数组,输出也是一个二维数组,其中核数组通常称为卷积核或过滤器(filter)。卷积核的尺寸通常小于输入数组,卷积核在输入数组上滑动,在每个位置上,卷积核与该位置处的输入子数组按元素相乘并求和,得到输出数组中相应位置的元素。卷积运算:将核数组上下翻转、左右翻转...
2020-03-04 16:47:51 226
原创 【线性回归】【Softmax】 | 学习回顾
首先这次学习的机会是boyuai的一次公益AI学习活动,在此对平台的感谢,也希望疫情可以赶快结束,武汉加油,中国加油!线性回归
2020-02-14 17:45:57 199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人