上篇博文已经介绍了如何通过 继承 Function
,然后使用python
来扩展 pytorch
, 本文主要介绍如何通过 cffi
来扩展 pytorch
。
官网给出了一个 MyAdd
的 Demo
github地址,本文通过 这个 Demo
来搞定如何 通过 cffi
来扩展 pytorch
。
自定义 OP
pytorch
自定义 op
的基本步骤总结如下。
一、C部分 :
new_op.h
: CPU
forward(), backward()
接口声明
new_op_cu.h
: GPU
forward(), backward()
接口声明
new_op.c
: 实现 forward(), backward()
CPU
代码
new_op.cu
: 实现 forward(), backward()
GPU
代码
二、编译上面写的 C/CUDA 代码
三、python部分:
用 Function
包装 C OP
用 Module
包装 Function
下面,来看一下 官方的 Demo
看Script 部分
Script
部分的文件结构如下:
src/
: 放着 C 代码
functions/
: Function
包装
modules/
: Module
包装
build
: 编译 C
源码的 代码
C/CUDA 代码
#include
int my_lib_add_forward(THFloatTensor *input1, THFloatTensor *input2,
THFloatTensor *output)
{
if (!THFloatTensor_isSameSizeAs(input1, input2))
return 0 ;
THFloatTensor_resizeAs(output, input1);
THFloatTensor_cadd(output, input1, 1.0 , input2);
return 1 ;
}
int my_lib_add_backward(THFloatTensor *grad_output, THFloatTensor *grad_input)
{
THFloatTensor_resizeAs(grad_input, grad_output);
THFloatTensor_fill(grad_input, 1 );
return 1 ;
}
编译用代码
import os
import torch
from torch.utils.ffi import create_extension
this_file = os.path.dirname(__file__)
sources = ['src/my_lib.c' ]
headers = ['src/my_lib.h' ]
defines = []
with_cuda = False
if torch.cuda.is_available():
print('Including CUDA code.' )
sources += ['src/my_lib_cuda.c' ]
headers += ['src/my_lib_cuda.h' ]
defines += [('WITH_CUDA' , None )]
with_cuda = True
ffi = create_extension(
'_ext.my_lib' ,
headers=headers,
sources=sources,
define_macros=defines,
relative_to=__file__,
with_cuda=with_cuda
)
if __name__ == '__main__' :
ffi.build()
Function Wrapper
import torch
from torch.autograd import Function
from _ext import my_lib
from torch.autograd import Variable
class MyAddFunction (Function) :
@staticmethod
def forward (ctx, input1, input2) :
output = input1.new()
if not input1.is_cuda:
my_lib.my_lib_add_forward(input1, input2, output)
else :
my_lib.my_lib_add_forward_cuda(input1, input2, output)
return output
@staticmethod
def backward (ctx, grad_output) :
t_grad_output = grad_output.data
t_grad_input = t_grad_output.new().resize_as_(t_grad_output).zero_()
grad_input = Variable(t_grad_input, requires_grad=grad_output.requires_grad, volatile=grad_output.volatile)
if not grad_output.is_cuda:
my_lib.my_lib_add_backward(grad_output.data, t_grad_input)
else :
my_lib.my_lib_add_backward_cuda(grad_output.data, t_grad_input)
return grad_input, grad_input
Module Wrapper
class MyAddModule (Module) :
def forward (self, input1, input2) :
return MyAddFunction.apply(input1, input2)
你可能感兴趣的:(pytorch,pytorch学习笔记)
[实践应用] 深度学习之优化器
YuanDaima2048
深度学习 工具使用 pytorch 深度学习 人工智能 机器学习 python 优化器
文章总览:YuanDaiMa2048博客文章总览深度学习之优化器1.随机梯度下降(SGD)2.动量优化(Momentum)3.自适应梯度(Adagrad)4.自适应矩估计(Adam)5.RMSprop总结其他介绍在深度学习中,优化器用于更新模型的参数,以最小化损失函数。常见的优化函数有很多种,下面是几种主流的优化器及其特点、原理和PyTorch实现:1.随机梯度下降(SGD)原理:随机梯度下降通过
个人学习笔记7-6:动手学深度学习pytorch版-李沐
浪子L
深度学习 深度学习 笔记 计算机视觉 python 人工智能 神经网络 pytorch
#人工智能##深度学习##语义分割##计算机视觉##神经网络#计算机视觉13.11全卷积网络全卷积网络(fullyconvolutionalnetwork,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换。引入l转置卷积(transposedconvolution)实现的,输出的类别预测与输入图像在像素级别上具有一一对应关系:通道维的输出即该位置对应像素的类别预测。13.11.1构造模型下
【安装环境】配置MMTracking环境
xuanyu22
安装环境 机器学习 神经网络 深度学习 python
版本v0.14.0安装torchnumpy的版本不能太高,否则后面安装时会发生冲突。先安装numpy,因为pytorch的安装会自动配置高版本numpy。condainstallnumpy=1.21.5mmtracking支持的torch版本有限,需要找到合适的condainstallpytorch==1.11.0torchvision==0.12.0cudatoolkit=10.2-cpytor
Python(PyTorch)和MATLAB及Rust和C++结构相似度指数测量导图
亚图跨际
Python 交叉知识 算法 量化检查图像压缩质量 低分辨率多光谱 峰值信噪比 端到端优化图像压缩 手术机器人 三维实景实时可微分渲染 重建三维可视化
要点量化检查图像压缩质量低分辨率多光谱和高分辨率图像实现超分辨率分析图像质量图像索引/多尺度结构相似度指数和光谱角映射器及视觉信息保真度多种指标峰值信噪比和结构相似度指数测量结构相似性图像分类PNG和JPEG图像相似性近似算法图像压缩,视频压缩、端到端优化图像压缩、神经图像压缩、GPU变速图像压缩手术机器人深度估计算法重建三维可视化推理图像超分辨率算法模型三维实景实时可微分渲染算法MATLAB结构
【深度学习】训练过程中一个OOM的问题,太难查了
weixin_40293999
深度学习 深度学习 人工智能
现象:各位大佬又遇到过ubuntu的这个问题么?现象是在训练过程中,ssh上不去了,能ping通,没死机,但是ubunutu的pc侧的显示器,鼠标啥都不好用了。只能重启。问题原因:OOM了95G,尼玛!!!!pytorch爆内存了,然后journald假死了,在journald被watchdog干掉之后,系统就崩溃了。这种规模的爆内存一般,即使被oomkill了,也要卡半天的,确实会这样,能不能配
Pyorch中 nn.Conv1d 与 nn.Linear 的区别
迪三
# NN_Layer 神经网络
即一维卷积层和全联接层的区别nn.Conv1d和nn.Linear都是PyTorch中的层,它们用于不同的目的,主要区别在于它们处理输入数据的方式和执行的操作类型。nn.Conv1d通过应用滑动过滤器来捕捉序列数据中的局部模式,适用于处理具有时间或序列结构的数据。nn.Linear通过将每个输入与每个输出相连接,捕捉全局关系,适用于将输入数据作为整体处理的任务。1.维度与输入nn.Conv1d(一
图片中的上采样,下采样和通道融合(up-sample, down-sample, channel confusion)
迪三
# 图像处理_PyTorch 计算机视觉 深度学习 人工智能
前言以conv2d为例(即图片),Pytorch中输入的数据格式为tensor,格式为:[N,C,W,H,W]第一维N.代表图片个数,类似一个batch里面有N张图片第二维C.代表通道数,在模型中输入如果为彩色,常用RGB三色图,那么就是3维,即C=3。如果是黑白的,即灰度图,那么只有一个通道,即C=1第三维H.代表图片的高度,H的数量是图片像素的列数第四维W.代表图片的宽度,W的数量是图片像素的
深度学习:怎么看pth文件的参数
奥利给少年
深度学习 人工智能
.pth文件是PyTorch模型的权重文件,它通常包含了训练好的模型的参数。要查看或使用这个文件,你可以按照以下步骤操作:1.确保你有模型的定义你需要有创建这个.pth文件时所用的模型的代码。这意味着你需要有模型的类定义和架构。2.加载模型权重使用PyTorch的load_state_dict方法来加载权重。这里是如何操作的:importtorchimporttorch.nnasnn#定义模型结构
每天五分钟玩转深度学习PyTorch:模型参数优化器torch.optim
幻风_huanfeng
深度学习框架pytorch 深度学习 pytorch 人工智能 神经网络 机器学习 优化算法
本文重点在机器学习或者深度学习中,我们需要通过修改参数使得损失函数最小化(或最大化),优化算法就是一种调整模型参数更新的策略。在pytorch中定义了优化器optim,我们可以使用它调用封装好的优化算法,然后传递给它神经网络模型参数,就可以对模型进行优化。本文是学习第6步(优化器),参考链接pytorch的学习路线随机梯度下降算法在深度学习和机器学习中,梯度下降算法是最常用的参数更新方法,它的公式
【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程
牙牙要健康
深度学习 onnx onnxruntime 深度学习 python 人工智能
【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平台搭建依赖环境onnxruntime调用onnx模型ONNXRuntime推理核
天下苦英伟达久矣!PyTorch官方免CUDA加速推理,Triton时代要来?
诗者才子酒中仙
物联网 / 互联网 / 人工智能 / 其他 pytorch 人工智能 python
在做大语言模型(LLM)的训练、微调和推理时,使用英伟达的GPU和CUDA是常见的做法。在更大的机器学习编程与计算范畴,同样严重依赖CUDA,使用它加速的机器学习模型可以实现更大的性能提升。虽然CUDA在加速计算领域占据主导地位,并成为英伟达重要的护城河之一。但其他一些工作的出现正在向CUDA发起挑战,比如OpenAI推出的Triton,它在可用性、内存开销、AI编译器堆栈构建等方面具有一定的优势
pytorch安装(windows)
m0_62244898
windows 人工智能
(1)下载pycharmPyCharm:thePythonIDEforProfessionalDevelopersbyJetBrains(2)下载anacondaAnaconda|TheWorld'sMostPopularDataSciencePlatform(3)创建一个新环境:torchcondacreate-ntorch-y(4)进入新环境condaactivatetorch(5)加入清华源
深度学习入门篇:PyTorch实现手写数字识别
AI_Guru人工智能
深度学习 pytorch 人工智能
深度学习作为机器学习的一个分支,近年来在图像识别、自然语言处理等领域取得了显著的成就。在众多的深度学习框架中,PyTorch以其动态计算图、易用性强和灵活度高等特点,受到了广泛的喜爱。本篇文章将带领大家使用PyTorch框架,实现一个手写数字识别的基础模型。手写数字识别简介手写数字识别是计算机视觉领域的一个经典问题,目的是让计算机能够识别并理解手写数字图像。这个问题通常作为深度学习入门的练习,因为
【ShuQiHere】小白也能懂的 TensorFlow 和 PyTorch GPU 配置教程
ShuQiHere
tensorflow pytorch 人工智能
【ShuQiHere】在深度学习中,GPU的使用对于加速模型训练至关重要。然而,对于许多刚刚入门的小白来说,如何在TensorFlow和PyTorch中指定使用GPU进行训练可能会感到困惑。在本文中,我将详细介绍如何在这两个主流的深度学习框架中指定使用GPU进行训练,并确保每一个步骤都简单易懂,跟着我的步骤来,你也能轻松上手!1.安装所需库首先,确保你已经安装了TensorFlow或PyTorch
解决ModuleNotFoundError: No module named ‘torch的方法
梅菊林
各种问题解决方案 开发语言
ModuleNotFoundError:Nomodulenamed‘torch’错误是Python在尝试导入名为torch的模块时找不到该模块而抛出的异常。torch是PyTorch深度学习框架的核心库,如果你的Python环境中没有安装这个库,尝试导入时就会遇到这个错误。文章目录报错问题报错原因解决方法报错问题当你尝试在Python脚本或交互式环境中执行以下命令时:importtorch如果Py
Python中item()和items()的用处
~|Bernard|
深度学习疑点总结 python pytorch 深度学习
item()区别一:在pytorch训练时,一般用到.item()。比如loss.item()。我们可以做个简单测试代码看看它的区别:importtorchx=torch.randn(2,2)print(x)print(x[1,1])print(x[1,1].item())运行结果:tensor([[-2.0743,0.1675],[0.7016,-0.6779]])tensor(-0.6779)
GPU版pytorch安装
普通攻击往后拉
python tips 神经网络基础模型关键点
由于经常重装系统,导致电脑的环境需要经常重新配置,其中尤其是cudatorch比较难以安装,因此记录一下安装GPU版本torch的过程。1)安装CUDAtoolkit这个可以看做是N卡所有cuda计算的基础,一般都会随驱动的更新自动安装,但是不全,仍然需要安装toolkit,并不需要先看已有版本是哪个,反正下载完后会自动覆盖原有的cuda。下载网站两个:国内网站:只能下载最新的toolkit,但是
轻松升级:Ollama + OpenWebUI 安装与配置【AIStarter】
ai_xiaogui
AI作画 AI软件 人工智能 AI写作 AIStarter
Ollama是一个开源项目,用于构建和训练大规模语言模型,而OpenWebUI则提供了一个方便的前端界面来管理和监控这些模型。本文将指导你如何更新这两个工具,并顺利完成配置。准备工作确保你的系统已安装Git和Python环境。安装必要的依赖库,如TensorFlow或PyTorch等。更新步骤克隆项目:使用Git命令行工具克隆最新的Ollama和OpenWebUI仓库到本地。更新代码:确保你正在使
conda环境管理
Johnson0722
python python conda 环境管理
Anaconda使用软件包管理系统Conda进行包管理,为用户对不同版本、不同功能的工具包的环境进行配置和管理提供便利。来看一看使用conda来进行环境管理的基本命令创建环境创建一个名为test的python环境,指定python版本是3.7.3,并在test环境中安装pytorchcondacreate--nametestpython=3.7.3pytorch查看系统中的所有环境用户安装的不同环
R-Drop pytorch实现
warpin
深度学习 深度学习 pytorch
Pytorch实现了R-Drop,可以用于训练分类模型。#-*-coding:utf-8-*-"""Description:AnimplementationofR-Drop(https://arxiv.org/pdf/2106.14448.pdf).Authors:lihpCreateDate:2021/8/24"""fromtorchimportnnfromtorch.nnimportfunct
Transformer模型:WordEmbedding实现
Galaxy.404
Transformer transformer 深度学习 人工智能 embedding
前言最近在学Transformer,学了理论的部分之后就开始学代码的实现,这里是跟着b站的up主的视频记的笔记,视频链接:19、Transformer模型Encoder原理精讲及其PyTorch逐行实现_哔哩哔哩_bilibili正文首先导入所需要的包:importtorchimportnumpyasnpimporttorch.nnasnnimporttorch.nn.functionalasF关
如何使用Pytorch-Metric-Learning?
鱼儿也有烦恼
PyTorch pytorch
文章目录如何使用Pytorch-Metric-Learning?1.Pytorch-Metric-Learning库9个模块的功能1.1Sampler模块1.2Miner模块1.3Loss模块1.4Reducer模块1.5Distance模块1.6Regularizer模块1.7Trainer模块1.8Tester模块1.9Utils模块2.如何使用PyTorchMetricLearning库中的
每天五分钟玩转深度学习框架PyTorch:获取神经网络模型的参数
幻风_huanfeng
深度学习框架pytorch 深度学习 pytorch 神经网络 人工智能 模型参数 python
本文重点当我们定义好神经网络之后,这个网络是由多个网络层构成的,每层都有参数,我们如何才能获取到这些参数呢?我们将再下面介绍几个方法来获取神经网络的模型参数,此文我们是为了学习第6步(优化器)。获取所有参数Parametersfromtorchimportnnnet=nn.Sequential(nn.Linear(4,2),nn.Linear(2,2))print(list(net.paramet
一维数组 list 呢 ,怎么转换成 (批次 句子长度 特征值 )三维向量 python pytorch lstm 编程 人工智能
zhangfeng1133
python pytorch 人工智能 数据挖掘
一、介绍对于一维数组,如果你想将其转换成适合深度学习模型(如LSTM)输入的格式,你需要考虑将其扩展为三维张量。这通常涉及到批次大小(batchsize)、序列长度(sequencelength)和特征数量(numberoffeatures)的维度。以下是如何将一维数组转换为这种格式的步骤:###1.确定维度-**批次大小(BatchSize)**:这是你一次处理的样本数量。-**序列长度(Seq
每天五分钟玩转深度学习框架PyTorch:将nn的神经网络层连接起来
幻风_huanfeng
深度学习框架pytorch 深度学习 pytorch 神经网络 人工智能 机器学习 python
本文重点前面我们学习pytorch中已经封装好的神经网络层,有全连接层,激活层,卷积层等等,我们可以直接使用。如代码所示我们直接使用了两个nn.Linear(),这两个linear之间并没有组合在一起,所以forward的之后,分别调用了,在实际使用中我们常常将几个神经层组合在一起,这样不仅操作方便,而且代码清晰。这里介绍一下Sequential()和ModuleList(),它们可以将多个神经网
项目实训十四
qq_51946537
项目实训 python
将pytorch模型封装成接口由于前面对于模型的构建、训练、评估都以完成,接下来要做的就是将按照项目要求,将模型封装成接口,供后端直接调用。我需要做的是后端直接调用系统命令pythonprase.py-img图片便可以直接得到解析结果。由于前面的测试模型的正确率都是批量处理过的图片,而现在前端只会传过来要解析的图片或者图片路径,而且图片也是未经处理过的,显然直接输入不会得到好的结果,并且性能也会比
pytorch矩阵乘法
weixin_45694975
pytorch 深度学习 神经网络
一、torch.bmminput1shape:(batch_size,seq1_len,emb_dim)input2shape:(batch_size,emb_dim,seq2_len)outputshape:(batch_size,seq1_len,seq2_len)注意:torch.bmm只适合三维tensor做矩阵运算特别地,torch.bmm支持tenso广播运算input1shape:(
pytorch矩阵乘法总结
chenxi yan
PyTorch 学习 pytorch 矩阵 深度学习
1.element-wise(*)按元素相乘,支持广播,等价于torch.mul()a=torch.tensor([[1,2],[3,4]])b=torch.tensor([[2,3],[4,5]])c=a*b#等价于torch.mul(a,b)#tensor([[2,6],#[12,20]])a*torch.tensor([1,2])#广播,等价于torch.mul(a,torch.tensor
推荐开源项目:PyTorch-Metric-Learning
潘惟妍
推荐开源项目:PyTorch-Metric-Learningpytorch-metric-learningTheeasiestwaytousedeepmetriclearninginyourapplication.Modular,flexible,andextensible.WritteninPyTorch.项目地址:https://gitcode.com/gh_mirrors/py/pytorc
pytroch2.4 提示到不到fbgemm.dll
bziyue
python pytorch
#python/pytorch/问题记录```>>>importtorchTraceback(mostrecentcalllast):File"",line1,inFile"C:\Users\95416\AppData\Local\Programs\Python\Python312\Lib\site-packages\torch\__init__.py",line148,inraiseerrOSE
js动画html标签(持续更新中)
843977358
html js 动画 media opacity
1.jQuery 效果 - animate() 方法 改变 "div" 元素的高度: $(".btn1").click(function(){ $("#box").animate({height:"300px
springMVC学习笔记
caoyong
springMVC
1、搭建开发环境
a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar
b>、在web.xml中配置前端控制器
<servlet>
&nbs
POI中设置Excel单元格格式
107x
poi style 列宽 合并单元格 自动换行
引用:http://apps.hi.baidu.com/share/detail/17249059
POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
先获取工作薄对象:
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
HSSFCellStyle setBorder = wb.
jquery 获取A href 触发js方法的this参数 无效的情况
一炮送你回车库
jquery
html如下:
<td class=\"bord-r-n bord-l-n c-333\">
<a class=\"table-icon edit\" onclick=\"editTrValues(this);\">修改</a>
</td>"
j
md5
3213213333332132
MD5
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MDFive {
public static void main(String[] args) {
String md5Str = "cq
完全卸载干净Oracle11g
sophia天雪
orale数据库 卸载干净 清理注册表
完全卸载干净Oracle11g
A、存在OUI卸载工具的情况下:
第一步:停用所有Oracle相关的已启动的服务;
第二步:找到OUI卸载工具:在“开始”菜单中找到“oracle_OraDb11g_home”文件夹中
&
apache 的access.log 日志文件太大如何解决
darkranger
apache
CustomLog logs/access.log common 此写法导致日志数据一致自增变大。
直接注释上面的语法
#CustomLog logs/access.log common
增加:
CustomLog "|bin/rotatelogs.exe -l logs/access-%Y-%m-d.log 
Hadoop单机模式环境搭建关键步骤
aijuans
分布式
Hadoop环境需要sshd服务一直开启,故,在服务器上需要按照ssh服务,以Ubuntu Linux为例,按照ssh服务如下:
sudo apt-get install ssh
sudo apt-get install rsync
编辑HADOOP_HOME/conf/hadoop-env.sh文件,将JAVA_HOME设置为Java
PL/SQL DEVELOPER 使用的一些技巧
atongyeye
java sql
1 记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。 但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。 位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password
2 特殊Copy
在SQL Window
PHP:在对象上动态添加一个新的方法
bardo
方法 动态添加 闭包
有关在一个对象上动态添加方法,如果你来自Ruby语言或您熟悉这门语言,你已经知道它是什么...... Ruby提供给你一种方式来获得一个instancied对象,并给这个对象添加一个额外的方法。
好!不说Ruby了,让我们来谈谈PHP
PHP未提供一个“标准的方式”做这样的事情,这也是没有核心的一部分...
但无论如何,它并没有说我们不能做这样
ThreadLocal与线程安全
bijian1013
java java多线程 threadLocal
首先来看一下线程安全问题产生的两个前提条件:
1.数据共享,多个线程访问同样的数据。
2.共享数据是可变的,多个线程对访问的共享数据作出了修改。
实例:
定义一个共享数据:
public static int a = 0;
Tomcat 架包冲突解决
征客丶
tomcat Web
环境:
Tomcat 7.0.6
win7 x64
错误表象:【我的冲突的架包是:catalina.jar 与 tomcat-catalina-7.0.61.jar 冲突,不知道其他架包冲突时是不是也报这个错误】
严重: End event threw exception
java.lang.NoSuchMethodException: org.apache.catalina.dep
【Scala三】分析Spark源代码总结的Scala语法一
bit1129
scala
Scala语法 1. classOf运算符
Scala中的classOf[T]是一个class对象,等价于Java的T.class,比如classOf[TextInputFormat]等价于TextInputFormat.class
2. 方法默认值
defaultMinPartitions就是一个默认值,类似C++的方法默认值
java 线程池管理机制
BlueSkator
java线程池 管理机制
编辑
Add
Tools
jdk线程池
一、引言
第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。
关于hql中使用本地sql函数的问题(问-答)
BreakingBad
HQL 存储函数
转自于:http://www.iteye.com/problems/23775
问:
我在开发过程中,使用hql进行查询(mysql5)使用到了mysql自带的函数find_in_set()这个函数作为匹配字符串的来讲效率非常好,但是我直接把它写在hql语句里面(from ForumMemberInfo fm,ForumArea fa where find_in_set(fm.userId,f
读《研磨设计模式》-代码笔记-迭代器模式-Iterator
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.util.Arrays;
import java.util.List;
/**
* Iterator模式提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象内部表示
*
* 个人觉得,为了不暴露该
常用SQL
chenjunt3
oracle sql C++ c C#
--NC建库
CREATE TABLESPACE NNC_DATA01 DATAFILE 'E:\oracle\product\10.2.0\oradata\orcl\nnc_data01.dbf' SIZE 500M AUTOEXTEND ON NEXT 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 256K ;
CREATE TABLESPA
数学是科学技术的语言
comsci
工作 活动 领域模型
从小学到大学都在学习数学,从小学开始了解数字的概念和背诵九九表到大学学习复变函数和离散数学,看起来好像掌握了这些数学知识,但是在工作中却很少真正用到这些知识,为什么?
最近在研究一种开源软件-CARROT2的源代码的时候,又一次感觉到数学在计算机技术中的不可动摇的基础作用,CARROT2是一种用于自动语言分类(聚类)的工具性软件,用JAVA语言编写,它
Linux系统手动安装rzsz 软件包
daizj
linux sz rz
1、下载软件 rzsz-3.34.tar.gz。登录linux,用命令
wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz下载。
2、解压 tar zxvf rzsz-3.34.tar.gz
3、安装 cd rzsz-3.34 ; make posix 。注意:这个软件安装与常规的GNU软件不
读源码之:ArrayBlockingQueue
dieslrae
java
ArrayBlockingQueue是concurrent包提供的一个线程安全的队列,由一个数组来保存队列元素.通过
takeIndex和
putIndex来分别记录出队列和入队列的下标,以保证在出队列时
不进行元素移动.
//在出队列或者入队列的时候对takeIndex或者putIndex进行累加,如果已经到了数组末尾就又从0开始,保证数
C语言学习九枚举的定义和应用
dcj3sjt126com
c
枚举的定义
# include <stdio.h>
enum WeekDay
{
MonDay, TuesDay, WednesDay, ThursDay, FriDay, SaturDay, SunDay
};
int main(void)
{
//int day; //day定义成int类型不合适
enum WeekDay day = Wedne
Vagrant 三种网络配置详解
dcj3sjt126com
vagrant
Forwarded port
Private network
Public network
Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。
端口映射(Forwarded port),顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:
c
16.性能优化-完结
frank1234
性能优化
性能调优是一个宏大的工程,需要从宏观架构(比如拆分,冗余,读写分离,集群,缓存等), 软件设计(比如多线程并行化,选择合适的数据结构), 数据库设计层面(合理的表设计,汇总表,索引,分区,拆分,冗余等) 以及微观(软件的配置,SQL语句的编写,操作系统配置等)根据软件的应用场景做综合的考虑和权衡,并经验实际测试验证才能达到最优。
性能水很深, 笔者经验尚浅 ,赶脚也就了解了点皮毛而已,我觉得
Word Search
hcx2013
search
Given a 2D board and a word, find if the word exists in the grid.
The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or ve
Spring4新特性——Web开发的增强
jinnianshilongnian
spring spring mvc spring4
Spring4新特性——泛型限定式依赖注入
Spring4新特性——核心容器的其他改进
Spring4新特性——Web开发的增强
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
Spring4新特性——Groovy Bean定义DSL
Spring4新特性——更好的Java泛型操作API
Spring4新
CentOS安装配置tengine并设置开机启动
liuxingguome
centos
yum install gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
Ubuntu上可以这样安装
sudo aptitude install libdmalloc-dev libcurl4-opens
第14章 工具函数(上)
onestopweb
函数
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
Xelsius 2008 and SAP BW at a glance
blueoxygen
BO Xelsius
Xelsius提供了丰富多样的数据连接方式,其中为SAP BW专属提供的是BICS。那么Xelsius的各种连接的优缺点比较以及Xelsius是如何直接连接到BEx Query的呢? 以下Wiki文章应该提供了全面的概览。
http://wiki.sdn.sap.com/wiki/display/BOBJ/Xcelsius+2008+and+SAP+NetWeaver+BW+Co
oracle表空间相关
tongsh6
oracle
在oracle数据库中,一个用户对应一个表空间,当表空间不足时,可以采用增加表空间的数据文件容量,也可以增加数据文件,方法有如下几种:
1.给表空间增加数据文件
ALTER TABLESPACE "表空间的名字" ADD DATAFILE
'表空间的数据文件路径' SIZE 50M;
&nb
.Net framework4.0安装失败
yangjuanjava
.net windows
上午的.net framework 4.0,各种失败,查了好多答案,各种不靠谱,最后终于找到答案了
和Windows Update有关系,给目录名重命名一下再次安装,即安装成功了!
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=17113
方法:
1.运行cmd,输入net stop WuAuServ
2.点击开