上篇博文已经介绍了如何通过 继承 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学习笔记)
Spring AI与机器学习:智能应用开发新范式
tmjpz04412
人工智能 spring 机器学习
SpringAI与机器学习的整合SpringAI是一个基于Spring生态的AI开发框架,旨在简化智能应用的开发流程。通过SpringAI,开发者可以快速集成机器学习模型,构建高效的智能应用。SpringAI支持多种机器学习库和框架,如TensorFlow、PyTorch和Scikit-learn,提供统一的API接口。SpringAI的核心优势在于其模块化设计和自动化配置。开发者无需关心复杂的依
从零开始构建深度学习环境:基于Pytorch、CUDA与cuDNN的虚拟环境搭建与实践(适合初学者)
荣华富贵8
程序员的知识储备2 程序员的知识储备3 深度学习 pytorch 人工智能
摘要:深度学习正在引领人工智能技术的革新,而对于初学者来说,正确搭建深度学习环境是迈向AI研究与应用的第一步。本文将为读者提供一套详尽的教程,指导如何在本地环境中搭建Pytorch、CUDA与cuDNN,以及如何利用Anaconda和PyCharm进行高效开发。内容涵盖从环境配置、常见错误修正,到基础的深度学习模型构建及训练。我们旨在为深度学习零基础的入门者提供一个全面且易于理解的“保姆级”教程,
使用 PyTorch 和 Pandas 进行 Kaggle 房价预测
Clang's Blog
AI pytorch pandas 人工智能
文章目录1、环境设置2、数据下载3、数据预处理4、模型构建5、训练和验证6、训练模型并生成预测结果7、完整代码在本篇博文中,我们将探索如何使用PyTorch和Pandas库,构建一个用于Kaggle房价预测的模型。我们将详细讨论数据加载、预处理、模型构建、训练、验证及最终预测的全过程。1、环境设置我们首先需要导入所需的库,包括用于数据处理的pandas和numpy,以及用于深度学习的torch。i
PyTorch 使用指南
PyTorch是一个功能强大且灵活的Python开源机器学习库,以其动态计算图和直观的Pythonic接口而闻名。本指南将带您了解PyTorch的基础操作,包括张量创建、自动求导,以及如何构建、训练和优化神经网络模型。我们还将深入探讨其在图像分类(以CIFAR-10为例)和自然语言处理(以灾难推文分类为例)等特定领域的应用,并概述其在图像分割和强化学习等其他领域的应用。PyTorch使用指南1.P
PyTorch武侠演义 第一卷:初入江湖 第7章:矿洞中的计算禁制
空中湖
pytorch武侠演绎 pytorch 人工智能 python
第一卷:初入江湖第7章:矿洞中的计算禁制矿洞深处罗盘残件在接近矿洞时突然发热,指针疯狂旋转。"就是这里,"欧阳长老抚摸着洞壁上的计算图刻痕,“TensorFlow帮用静态图封印了矿脉。”林小码看到:幽蓝矿脉构成巨大的计算图结构水晶矿簇随呼吸节奏明灭(CUDA核心)矿道中流淌着数据光流(内存带宽)"小心!"大师突然拉回林小码。他刚才踩中的矿砖下陷,触发岩壁上的机关——数十道计算图锁链从四面八方射来!
数字人克隆中SyncTalk算法介绍与部署过程
优秘智能UMI
人工智能 ubuntu
SyncTalk算法介绍SyncTalk合成同步的头部说话视频,采用三平面哈希表示来保持主体身份。它可以生成同步的嘴唇动作、面部表情和稳定的头部姿势,并恢复头发细节以创建高分辨率视频。部署在Linux中部署该项目,在Ubuntu18.04、Pytorch1.12.1和CUDA11.3上测试。gitclonehttps://github.com/ZiqiaoPeng/SyncTalk.gitcdSy
风格迁移(Style Transfer)
1.什么是风格迁移(StyleTransfer):简单介绍风格迁移的概念,指的是将一张图像的内容与另一张图像的艺术风格结合起来,从而生成一个新的图像。例如,将一张风景图像的内容与一幅著名艺术作品(如梵高的《星夜》)的风格结合。应用场景:风格迁移常用于图像生成、艺术创作和增强现实等领域。目标:本文将讲解如何使用PyTorch和VGG19模型实现风格迁移,并展示其核心代码。2.风格迁移的原理在这一部分
标签助手:基于LabelImg和YOLOv5的图像半自动标注工具
伏容一Julia
标签助手:基于LabelImg和YOLOv5的图像半自动标注工具项目基础介绍标签助手(labelGo-Yolov5AutoLabelImg)是一个图形化的半自动图像注解工具,它结合了广受欢迎的图像标注工具LabelImg的力量与先进的目标检测框架YOLOv5。这个开源项目旨在简化数据集的标注过程,利用现有YOLOv5PyTorch模型实现快速的半自动化标注,极大地提高了标注效率。项目主要采用Pyt
【MMCV】MMCV安装与踩坑
Elendill
Pyhton pytorch python mmcv
确认MMCV版本首先确认项目所需MMCV的版本是多少mmcv2.0版本的代码相比较于=2.0.0安装方法新创建一个conda环境安装pytorch:condainstallpytorchtorchvisiontorchaudiopytorch-cuda=11.8-cpytorch-cnvidia安装mim,这是openmm官方推出的用于安装他们旗下mm系列产品的安装器:pipinstall-Uop
基于Jetson Nano与PyTorch的无人机实时目标跟踪系统搭建指南
引言:边缘计算赋能智能监控在AIoT时代,将深度学习模型部署到嵌入式设备已成为行业刚需。本文将手把手指导读者在NVIDIAJetsonNano(4GB版本)开发板上,构建基于YOLOv5+SORT算法的实时目标跟踪系统,集成无人机控制与地面站监控界面,最终打造低功耗智能监控设备。通过本项目,读者将掌握:嵌入式端模型优化与部署技巧;多目标跟踪算法工程化实现;无人机-地面站协同控制架构;边缘计算场景下
【语义分割专栏】4:deeplab系列实战篇(附上完整可运行的代码pytorch)
fouen
语义分割 pytorch 人工智能 python 计算机视觉 深度学习
文章目录前言Deeplab系列全流程代码模型搭建(model)backbone的搭建Deeplabv1Deeplabv2Deeplabv3Deeplabv3+数据处理(dataloader)评价指标(metric)训练流程(train)模型测试(test)效果图结语前言Deeplab系列原理篇讲解:【语义分割专栏】4:deeplab系列原理篇_deeplab系列详解-CSDN博客代码地址,下载可复
pytorch学习笔记-自定义卷积
墨染枫
深度学习 pytorch 学习 笔记
未完结的草稿———!大概是准备整合一下常见的层,整合完感觉就可以进行搭建了(还没进行到这一步所以不太确定版)(ps我将在完结这一篇的时候删除上面的小字and二编一下整篇文章的结构,如果看到了这部分文字也是很有缘分了/doge这一部分感觉也没啥好说的==也就是reshape部分值得注意一下?剩下的感觉就是了解一下用法就可以importtorchimporttorch.nnasnnimporttorc
PyTorch武侠演义 第一卷:初入江湖 第5章:玉如意的秘密
第一卷:初入江湖第5章:玉如意的秘密百年秘辛藏经阁最深处,大师掀开尘封的《门派大事记》,指向一幅泛黄的画卷:“看,这就是百年前的优化器长老——欧阳调参。”画中人手持玉如意,面前悬浮着九个水晶球。林小码凑近细看,发现如意上刻着「lr=0.001」。“当年TensorFlow帮为何要盗损失玉佩?”大师叹息:“因为这块玉佩,正是控制玉如意能量的钥匙…”突然,书架后传来机关转动的咔嗒声。一道暗门缓缓打开,
使用PyTorch实现目标检测与跟踪
认真写代码i
pytorch 目标检测 人工智能 Python
目标检测与跟踪是计算机视觉领域中的重要任务,它可以帮助我们在图像或视频中准确地定位和跟踪特定物体。PyTorch是一个流行的深度学习框架,提供了强大的工具和库,可以用于目标检测与跟踪的实现。本文将详细介绍如何使用PyTorch实现目标检测与跟踪,并提供相应的源代码。安装PyTorch和相关依赖首先,我们需要安装PyTorch和其他必要的依赖项。你可以通过以下命令使用pip安装PyTorch:pip
Pytorch 自定义损失函数
DeniuHe
Pytorch
自定义HingeLossclassMyHingeLoss(torch.nn.Module):#不要忘记继承Moduledef__init__(self):super(MyHingeLoss,self).__init__()defforward(self,output,target):"""output和target都是1-D张量,换句话说,每个样例的返回是一个标量."""hinge_loss=1-
Pytorch实现目标检测
importosimportrandomimportpandasaspdimportnumpyasnpimportcv2fromsklearn.model_selectionimporttrain_test_splitimporttorchfromtorch.utils.dataimportDataset,DataLoaderimporttorch.nnasnnimporttorch.nn.fun
解决TensorBoard报错“log_dir is not a directory“的完整指南
SEVEN是7
tensorflow python 深度学习
在使用PyTorch的TensorBoard进行训练可视化时,许多开发者会遇到FailedPreconditionError:./文件名isnotadirectory的错误。本文将深入分析这个问题的根源,并提供完整的解决方案,特别是针对中文路径这一常见但容易被忽视的问题。问题一(目录确实存在的情况下):路径中包含中文解决:更改文件名为正确的命名格式(注意:连模型的文件名也不要用中文,确保绝对路径全
Pytorch混合精度训练最佳实践
贝塔西塔
工程经验 pytorch 人工智能 深度学习 混合精度 模型加速
混合精度训练(MixedPrecisionTraining)是一种通过结合单精度(FP32)和半精度(FP16/FP8)计算来加速训练、减少显存占用的技术。它在保持模型精度的同时,通常能带来2-3倍的训练速度提升,并减少约50%的显存使用,是平衡训练效率与数值稳定性的核心技术,尤其在大模型训练中不可或缺。以下从GradScaler底层逻辑、避坑技巧(含NaN解决方案)、PyTorchLightni
Pytorch自定义优化器最佳实践
在PyTorch中,自定义优化器需要遵循特定的规范以兼容PyTorch的训练流程。下面从核心方法、closure的作用,到Ranger优化器的实现,逐步展开说明。一、PyTorch自定义优化器的必要方法自定义优化器必须继承torch.optim.Optimizer,并实现以下核心方法:init(self,params,defaults)作用:初始化优化器,定义超参数(如学习率、动量等),并为参数组
PytorchLightning最佳实践基础篇
贝塔西塔
工程经验 pytorch Lightning 深度学习 编程框架
PyTorchLightning(简称PL)是一个建立在PyTorch之上的高层框架,核心目标是剥离工程代码与研究逻辑,让研究者专注于模型设计和实验思路,而非训练循环、分布式配置、日志管理等重复性工程工作。本文从基础到进阶,全面介绍其功能、核心组件、封装逻辑及最佳实践。一、PyTorchLightning核心价值原生PyTorch训练代码中,大量精力被消耗在:手动编写训练/验证循环(epoch、b
Linux指令&&ros学习&&python深度学习&&bug学习笔记
起个别名
Linux ROS Python
##这个文件是关于ros、linux指令,pytorch、python、onnx和相关problem的一些笔记###ROS&&linux**find:在当前路径或指定的路径下递归地搜索文件或目录,并可以根据不同的条件进行过滤和匹配。**```find-name*.pyfind/home/dai/bev_lane_det-main-namemodelsfind/home/dai/bev_lane_d
零基础完整版入门经典深度学习时间序列预测项目实战+最新前沿时间序列预测模型代码讲解学习整理(附完整可运行代码)
OverOnEarth
时间序列预测项目实战 深度学习 学习 人工智能
专栏内容本专栏主要整理了作者在时间序列预测领域内的一些学习思路与代码整理,帮助大家在初进入此领域时,可以快速掌握代码进行实战操作,对代码的操作再结合论文阅读肯定是上升更快嘛,作者也愿意和大家一起讨论进步,下面的内容会逐步更新,作者主页的资源列也会放出一些可下载的资源供大家参考学习噢。一、LSTM时间序列预测完整代码示例学习分析(pytorch框架)精选试读文章二、LSTM多变量输入实现多步预测完整
第十四章:AI的数据“集装箱”:彻底搞懂Tensor的Batch与维度
爱分享的飘哥
AI新纪元:120日觉醒计划 Tensor PyTorch BatchSize 数据处理 AI基础 深度学习 教程
AI数据集中箱前言:为什么AI从不“零售”,总是“批发”?1:Batch(批次)——GPU的“灵魂伴侣”1.1单个处理vs.批量处理:CPU与GPU的思维差异1.2DataLoader:PyTorch的“自动化装箱员”2:维度的语言——破译[B,L,D]的含义2.1[L,D]:一个句子的“二维画像”2.2[B,L,D]:一批句子的“三维魔方”2.3用代码直观感受维度的增加3:追踪Tensor的“变
PyTorch中实现早停机制(EarlyStopping)附代码
自信的小螺丝钉
AI知识 pytorch python 人工智能 AI 深度学习
1.核心目的当模型在验证集上的性能不再提升时,提前终止训练防止过拟合,节省计算资源2.实现方法监控验证集指标(如损失、准确率),设置耐心值(Patience)3.代码:classEarlyStopping:def__init__(self,patience=10,delta=0):"""EarlystoppingArgs:patience:int,numberofepochstowaitbefor
【已解决】YOLO11模型转wts时报错:PytorchStreamReader failed reading zip archive
lxmyzzs
bug 人工智能 python 计算机视觉 目标检测 神经网络 深度学习
问题:在把训练好的新YOLO11s模型转wts文件时报错,具体信息如下图(PytorchStreamReaderfailedreadingziparchive:failedfindingcentraldirectory)解决:新老版本pytorch之间的兼容问题,改动一下生成wts文件即可。代码帖在下面。importsys#noqa:F401importargparseimportosimport
Pytorch实现细节解析:Transformer模型的Encoder与Decoder逐行代码讲解
lazycatlove
pytorch transformer 人工智能
文章目录摘要一、Transformer1.1为什么要使用attention1.2Transformer的优点二、Transformer模型Encoder和Decoder原理讲解与其Pytorch逐行实现2.1wordembedding2.2单词索引构成源句子和目标句子2.3构建positionembedding2.4构造encoder的self-attentionmask2.5构造intra-at
Transformer Masked loss原理精讲及其PyTorch逐行实现
MaskedLoss的核心原理是:在计算损失函数时,只考虑真实有意义的词元(token),而忽略掉为了数据对齐而填充的无意义的填充词元(paddingtoken)。这是重要的技术,可以确保模型专注于学习有意义的任务,并得到一个正确的性能评估。1.原理精讲为什么需要MaskedLoss?在训练神经网络时,我们通常会用一个批次(batch)的数据进行训练,而不是一次只用一个样本。对于自然语言处理任务,
Transformer模型Decoder原理精讲及其PyTorch逐行实现
老鱼说AI
transformer pytorch 深度学习 人工智能 学习 python
原理:Decoder的核心是一个自回归(Auto-regressive)的生成器。它的任务是在给定源序列的编码表示(encoder_outputs)和已生成的目标序列部分(y_1,...,y_{t-1})的条件下,预测出下一个词y_t的概率分布。一个标准的DecoderLayer包含三个核心子层:1.带掩码的多头自注意力(MaskedMulti-HeadSelf-Attention):用于处理已生
2025暑期—07YOLO-YOLOV11
宇称不守恒4.0
人工智能 图像处理 YOLO 深度学习 人工智能
安装的环境包括YoloV11,torch2.32.4Clip1.0D2LOpenCV4.12等安装1Conda环境安装YOLOcondacreate--prefix=D:/YOLO11/yolo11_envpython=3.10condaactivateD:\YOLO11\yolo11_envPytorch网站确定condainstallpytorch==2.3.0torchvision==0.1
PyTorch中的词嵌入层(nn.Embedding)详解与实践指南
慕婉0307
自然语言处理 pytorch embedding 人工智能
一、词嵌入(WordEmbedding)简介词嵌入是自然语言处理(NLP)中的一项核心技术,它将离散的词语映射到连续的向量空间中。通过词嵌入,语义相似的词语在向量空间中的位置也会相近。为什么需要词嵌入?解决维度灾难:传统one-hot编码维度等于词汇表大小,而词嵌入维度可自定义捕捉语义关系:通过向量空间中的距离反映词语间的语义关系迁移学习:预训练的词嵌入可以在不同任务间共享二、PyTorch中的n
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.点击开