Leetcode(一)两数之和
两数之和暴力双层循环 两两相加 等于目标值 返回 即可
12345678910111213141516171819class Solution { public int[] twoSum(int[] nums, int target) { for(int i=0;i<nums.length;i++){ for(int j=0;j<nums.length;j++){ if(nums[i]+nums[j]==target && i!=j){ int[] a={ i,j}; return a; } } } return null; }}
map1234567891011 ...
pytorch线性回归
线性回归线性回归是对n维输入的加权,外加偏差使用平方损失来衡量预测值和真是值得差异线性回归有显示解线性回归可以看做是单层神经网络
从0开始
构造数据 根据带有噪声的线性模型构造一个人造数据集,我们使用线性模型参数 w=[2,-3.4]T、b=4.2 和噪声项€生成数据集及其标签 y=Xw+b+€123456789101112def synthetic_data(w,b,num_examples): """生成y=Xw+b+噪声。""" #均值为0 方差为1的随机数 行数列数 X=torch.normal(0,1,(num_examples,len(w))) #X*w y=torch.matmul(X,w)+b y+=torch.normal(0,0.01,y.shape) #将y变成列向量 return X,y.reshape((-1,1))true_w=torch.tensor([2,-3.1])true_b=4.2features,labels= ...
pytorch线性代数的基本操作
线性代数的基本操作
标量由只有一个元素的张量表示1234import torchx=torch.tensor([3.0])y=torch.tensor([2.0])x+y,x*y,x/y,x**y
向量视为标量值的组成 通过张量的索引来访问任一元素123456x=torch.arange(4)x,x[3]#张量的长度len(x)#张量的形状x.shape
对称矩阵 A=AT123B=torch.tensor([[1,2,3],[2,0,5],[3,5,5]])#B.T代表B的转秩B,B==B.T
给定具有相同形状的任何两个张量,任何按元素二元运算的结果都将是相同形状的张量1234A=torch.arange(20,dtype=torch.float32).reshape(5,4)# 代表对A的克隆B=A.clone()B,A+B
两个矩阵的按元素乘法称为哈达玛积,每个元素相乘1A*B
标量与向量的+ /*123a=2X=torch.arange(24).reshape(2,3,4)a+X,a*X
计算其元素的和12x=torch.arange(4,dty ...
pytorch数据的基本操作
基础使用
引入torch1import torch
表示一个数值组成的数组1x=torch.arange(12)
通过shape属性来访问x的形状和元素总数1234#x的形状x.shape#元素总数x.numel()
要改变一个张量的形状而不改变元素的数量和元素值,我们可以调用reshape函数 传入行 列 比如讲x改为3行4列1x.reshape(3,4)
使用全0、全1、其他常量或者从特定分布中随机采样的数字12345#使用全0创建 2个 3 行4列 的数组 其实是三维torch.zeros((2,3,4))#使用全1创建 2个 3 行4列 的数组 其实是三维torch.ones((2,3,4))
通过提供包含数值的python列表(或嵌套列表) 来为所需张量中的每个元素赋予确定值1torch.tensor([[[1,2,3],[7,8,9]]])
常见的标准算术运算符 + - / /* // 都被升级为按元素运算12345x=torch.tensor([1,2,3])y=torch.tensor([1,2,3])x+y,x-y, ...
Netty-RPC
RPC基本介绍
RPC(Remote Procedure Call)— 远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程
两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样
RPC调用流程图在RPC 中, Client叫服务消费者,Server 叫服务提供者
PRC调用流程说明
服务消费方(client)以本地调用方式调用服务
client stub 接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体
client stub 将消息进行编码并发送到服务端
server stub 收到消息后进行解码
server stub 根据解码结果调用本地的服务
本地服务执行并将结果返回给 server stub
server stub 将返回导入结果进行编码并发送至消费方
client stub 接收到消息并进行解码
服务消费方(client)得到结果
案例代码https://gitee.com/jhj159/netty-learn/tree/master/src/main/ ...
Tcp粘包和拆包
TCP 粘包和拆包基本介绍
TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的
由于TCP无消息保护边界, 需要在接收端处理消息边界问题,也就是我们所说的粘包、拆包问题,假设客户端分别发送了两个数据包D1和D2给服务端,由于服务端一次读取到字节数是不确定的,故可能存在以下四种情况:
服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包
服务端一次接受到了两个数据包,D1和D2粘合在一起,称之为TCP粘包
服务端分两次读取到了数据包,第一次读取到了完整的D1包和D2包的部分内容,第二次读取到了D2包的剩余内容,这称之为TCP拆包
服务端分两次读取到了数据包,第一次读取到了D1包的部分内容D1_1,第二次读取到了D1包的剩余部分内容D1_2和完整的D2包。
TCP 粘 ...
Netty编解码器和handler的调用机制
基本说明
netty的组件设计:Netty的主要组件有Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe等
ChannelHandler充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被业务逻辑处理。当要给客户端发送响应时,也可以从ChannelInboundHandler冲刷数据。业务逻辑通常写在一个或者多个ChannelInboundHandler中。ChannelOutboundHandler原理一样,只不过它是用来处理出站数据的
ChannelPipeline提供了ChannelHandler链的容器。以客户端应用程序为例,如果事件的运动方向是从客户端到服务端的,那么我们称这些事件为出站的,即客户端发送给服务端的数据会通过pipeline中的一系列ChannelOutboundHandler,并被这些Handler处理,反之则称为入站的
编码解码器
当Net ...
Netty-编码和解码
编码和解码的基本介绍
编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码
codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据
Netty 本身的编码解码的机制和问题分析
Netty 自身提供了一些 codec(编解码器)
Netty 提供的编码器• StringEncoder,对字符串数据进行编码• ObjectEncoder,对 Java 对象进行编码• …
Netty 提供的解码器• StringDecoder, 对字符串数据进行解码• ObjectDecoder,对 Java 对象进行解码• … 4) Netty 本身自带的 ObjectDecoder 和 ObjectEncoder 可以用来实现 POJO 对象或各种业务对象的编码和解码,底层使用的仍是 Java 序列化技术 , 而Java 序列化技术本身效率就不高,存在如下问题• 无法跨语言• 序列化后的体积太大,是二进制编码的 ...
Netty 通过WebSocket编程实现服务器和客户端长连接
思路利用WebSocketServerProtocolHandler 进行实现 其原理是利用101状态码讲http协议转换为websocket协议
服务端1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283package com.jhj.netty.websocket;import com.jhj.netty.heartbeat.MyServerHandler;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelPipeline;import io.netty.channel. ...
Netty 心跳机制
服务端1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768package com.jhj.netty.heartbeat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import io.netty.channel.ChannelPipeline;import io.netty.channel.EventLoopGroup;import io.netty.channel.nio.NioEventLoopGroup;import io.netty.channel.socket.SocketChannel;import io.netty.channel.socket.nio.NioServerS ...