Caffe学习系列(十):腾讯ncnn框架
《手把手AI项目》七、MobileNetSSD通过Ncnn前向推理框架在PC端的使用(目标检测 objection detection)
1.ncnn安装
安装依赖
sudo apt-get install -y gfortran
sudo apt-get install -y libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
sudo apt-get install --no-install-recommends libboost-all-dev
sudo apt-get install -y libgflags-dev libgoogle-glog-dev liblmdb-dev libatlas-base-dev
下载ncnn
git clone https://github.com/Tencent/ncnn
cd ncnn
在编译之前,我们希望和示例程序一起编译 需要修改CmakeList.txt文件。去掉下面两段代码前面的#
add_subdirectory(examples)
add_subdirectory(benchmark)
开始编译
mkdir build
cd build
cmake ..
make -j4
make install
编译完成后,在 build 目录下看到会有:
# 示例程序的可执行文件全部在examples内
# ncnn库文件以及头文件全部在install目录下
# tools目录下是一些转化工具
examples install tools
2.YOLOv2测试
下载训练好的yolo模型: https://github.com/eric612/MobileNet-YOLO/tree/master/models/yolov2 这里我们下载: mobilenet_yolo_deploy_iter_80000.caffemodel mobilenet_yolo_deploy.prototxt 使用 caffe2ncnn工具进行转换
tools/caffe/caffe2ncnn mobilenet_yolo_deploy.prototxt mobilenet_yolo_deploy_iter_80000.caffemodel mobilenet_yolo.param mobilenet_yolo.bin
将生成的转换文件复制到 build/examples 目录下,运行以下命令
./yolov2 fish-bike.jpg
3.MobileNet_SSD测试
3.1 Caffemodel转换为新版本
旧版caffe模型和网络文件转换成新版caffe模型和网络文件(ncnn只支持新版)
这个tools在caffe/build/tools中直接就有,具体操作如下
# 此处模型为合并完 Bn 层的模型和权重
# 新模型不用再修改数据层,避免了本文5.1节问题的发生
./caffe/build/tools/upgrade_net_proto_text MobileNetSSD_deploy.prototxt MobileNetSSD_deploy_new.prototxt
./caffe/build/tools/upgrade_net_proto_binary MobileNetSSD_deploy.caffemodel MobileNetSSD_deploy_new.caffemodel
3.2 生成bin和param文件
切换到 /ncnn/build目录下,运行以下命令 .param相当于prototxt网络文件,.bin相当于caffemodel模型文件
./tools/caffe/caffe2ncnn MobileNetSSD_deploy_new.prototxt MobileNetSSD_deploy_new.caffemodel MobileNetSSD_deploy.param MobileNetSSD_deploy.bin
3.3 加密bin和param文件(开发APP使用)
在PC端测试可跳过本小节
去掉可见字符串, 一种常见加密方式,不加密的话自己的网络可能被别人套用
./ncnn/build/tools/ncnn2mem MobileNetSSD_deploy.param MobileNetSSD_deploy.bin MobileNetSSD_deploy.id.h MobileNetSSD.mem.h
3.4 生成bin和param文件
将3.2节生成的bin和param文件复制到 build/examples 目录下
./mobilenetssd 00338.jpg
4. 模型量化
将自己训练的 Mobile Net_SSD 得到的模型与权重进行量化压缩,转换成 8 位存储
4.1 工具下载
git clone https://github.com/BUG1989/caffe-int8-convert-tools.git
在 caffe-int8-convert-tools 目录下新建一个 test 文件夹 test 文件夹下建立 images 与 models 两个文件夹
images 目录下放 验证集 图片 models 目录下放 deploy.prototxt 与 caffemodel
4.2 模型转化
在 caffe-int8-convert-tools 目录下运行以下命令:
python2 caffe-int8-convert-tool-dev.py --proto=test/models/MobileNetSSD_deploy_new.prototxt --model=test/models/MobileNetSSD_deploy_new.caffemodel --mean 127.5 127.5 127.5 --norm=0.007843 --images=test/images/ --output=test/MobileNetSSD.table
生成 MobileNetSSD.table 文件,之后进入test文件夹下
cd test
/home/hitwh/workspace/ncnn/build/tools/caffe/caffe2ncnn /home/hitwh/workspace/caffe-int8-convert-tools/test/models/MobileNetSSD_deploy_new.prototxt /home/hitwh/workspace/caffe-int8-convert-tools/test/models/MobileNetSSD_deploy_new.caffemodel MobileNetSSD-int8.param MobileNetSSD-int8.bin 256 MobileNetSSD.table
生成 MobileNetSSD-int8.bin 与 MobileNetSSD-int8.param,模型由22.2M压缩至5.8M。
4.3 模型测试
将转化后的模型名称改为 mobilenet_ssd_voc_ncnn.param 与 mobilenet_ssd_voc_ncnn.bin 并复制到 ncnn/build/examples 路径下 进行测试
./mobienetssd 00338.jpg
5. 问题及解决办法
5.1 mobilenetssd检测报错
find_blob_index_by_name data_splitncnn_6 failed
find_blob_index_by_name data_splitncnn_5 failed
find_blob_index_by_name data_splitncnn_4 failed
find_blob_index_by_name data_splitncnn_3 failed
find_blob_index_by_name data_splitncnn_2 failed
find_blob_index_by_name data_splitncnn_1 failed
find_blob_index_by_name data_splitncnn_0 failed
段错误 (核心已转储)
将 MobileNetSSD_deploy.prototxt 的数据输入层进行修改
# 修改前
#input: "data"
#input_shape {
# dim: 1
# dim: 3
# dim: 300
# dim: 300
#}
# 修改后
layer {
name: "data"
type: "Input"
top: "data"
input_param { shape: { dim: 1 dim: 3 dim: 300 dim: 300 } }
}
5.2 标签问题
修改 ncnn/examples/mobilessd.cpp 文件
static void draw_objects(const cv::Mat& bgr, const std::vector& objects)
{
static const char* class_names[] = {"background",
"aeroplane", "bicycle", "bird", "boat",
"bottle", "bus", "car", "cat", "chair",
"cow", "diningtable", "dog", "horse",
"motorbike", "person", "pottedplant",
"sheep", "sofa", "train", "tvmonitor"};
修改后再重新编译。
你可能感兴趣的:(Caffe,深度学习)
深度学习笔记之自然语言处理(NLP)
电棍233
深度学习 笔记 自然语言处理
深度学习笔记之自然语言处理(NLP)在行将开学之时,我将开始我的深度学习笔记的自然语言处理部分,这部分内容是在前面基础上开展学习的,且目前我的学习更加倾向于通识。自然语言处理部分将包含《动手学深度学习》这本书的第十四章,自然语言处理预训练和第十五章,自然语言处理应用。并且参考原书提供的jupyternotebook资源。自然语言处理,预训练自然语言处理(NaturalLanguageProcess
从零开始玩转TensorFlow:小明的机器学习故事 1
山海青风
# 机器学习 机器学习 tensorflow 人工智能
1.引言故事简介小明是一个计算机专业的大三学生,近期在学校里接触到了机器学习。他在某次校园活动中发现,活动主办方总是难以准确预测学生的报名人数,导致准备的物料经常不够或浪费。于是,小明萌生了一个想法:能否通过一些历史数据,用机器学习的方式来预测每场活动的参与率?在老师的建议下,他选择了TensorFlow,一个流行且强大的深度学习框架,希望能将这个想法变成现实。2.开始TensorFlow的旅程场
基于深度学习进行呼吸音检测的详细示例
go5463158465
算法 深度学习 深度学习 人工智能
以下是一个基于深度学习进行呼吸音检测的详细示例,我们将使用Python语言以及一些常见的深度学习库(如TensorFlow、Keras)和数据处理库(如numpy、pandas),同时会用到音频处理库librosa。整个流程包括数据加载、预处理、模型构建、训练和评估。步骤1:安装必要的库在开始之前,确保你已经安装了以下库:pipinstalltensorflowlibrosanumpypandas
用deepseek学大模型08-用deepseek解读deepseek
wyg_031113
人工智能 深度学习
DeepSeekR1是一种先进的深度学习模型架构,结合了Transformer、稀疏注意力机制和动态路由等核心技术。以下是对其核心原理、公式推导及模块分析的详细解析:深入浅析DeepSeek-V3的技术架构1.核心架构概览DeepSeekR1的架构基于改进的Transformer,主要模块包括:稀疏多头自注意力(SparseMulti-HeadSelf-Attention)动态前馈网络(Dynam
有哪些好用的AI工具?(你想要的AI工具都在这)
c++
1.常见应用场景1.1.国内通用大模型模型名称简介官网地址DeepSeek深度求索公司研发的高性能开源模型,以低成本、高推理能力著称,支持数学、代码等复杂任务。https://chat.deepseek.com/豆包字节跳动开发的智能语言模型,基于深度学习技术,支持多种自然语言处理任务。https://www.doubao.com/Kimi月之暗面科技推出的长文本处理AI助手,擅长中英文对话、文件
有哪些好用的AI工具?(你想要的AI工具都在这)
c++
1.常见应用场景1.1.国内通用大模型模型名称简介官网地址DeepSeek深度求索公司研发的高性能开源模型,以低成本、高推理能力著称,支持数学、代码等复杂任务。https://chat.deepseek.com/豆包字节跳动开发的智能语言模型,基于深度学习技术,支持多种自然语言处理任务。https://www.doubao.com/Kimi月之暗面科技推出的长文本处理AI助手,擅长中英文对话、文件
【深度学习】预训练和微调概述
CS_木成河
深度学习 深度学习 人工智能 语言模型 预训练 微调
预训练和微调概述1.预训练和微调的介绍1.1预训练(Pretraining)1.2微调(Fine-Tuning)2.预训练和微调的区别预训练和微调是现代深度学习模型训练中的两个关键步骤,它们通常是一个预训练-微调(Pretrain-Finetune)流程的不同阶段。两者相辅相成,共同帮助模型从通用的知识到特定任务的适应。1.预训练和微调的介绍1.1预训练(Pretraining)定义:预训练是指在
【深度学习大模型实例教程:Transformer架构、多模态模型与自监督学习】
生活De°咸鱼
AIGC Java 深度学习 大数据 AIGC
深度学习大模型实例教程:Transformer架构、多模态模型与自监督学习1.深度学习基础概述1.1深度学习的核心概念1.2常见深度学习模型1.3大模型的挑战与解决方案2.数据准备2.1数据处理示例:CIFAR-103.构建深度学习模型4.训练模型5.使用预训练模型(迁移学习)6.Transformer架构6.1Transformer的核心原理6.2Transformer的基本组件6.3Trans
深度学习模型的全面解析:技术进展、应用场景与未来趋势
阿尔法星球
深度学习与神经网络实战 机器学习
1.深度学习模型概述1.1深度学习模型的定义与分类深度学习模型是基于人工神经网络的算法,它们通过模仿人脑的处理机制来学习数据中的复杂模式和特征。这些模型可以根据其结构和应用场景被分为不同的类别,包括但不限于卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LSTM)、生成对抗网络(GAN)和Transformer模型等。1.2深度学习模型的关键特点深度学习模型的关键特点在于其深度,即
深度学习模型:原理、架构与应用
一ge科研小菜菜
工具 深度学习
深度学习(DeepLearning)是机器学习中的一个分支,基于人工神经网络的发展,尤其是多层神经网络的研究,使其在语音识别、图像处理、自然语言处理等领域取得了显著进展。深度学习的核心是通过大量数据的训练,学习到数据的内在结构和模式,并且具备自动从复杂的输入中提取特征的能力。本文将从深度学习的基本原理、常见模型、训练技巧、应用领域及其面临的挑战等方面进行详细探讨,帮助理解深度学习模型如何在现代科技
基于深度学习的焊缝缺陷检测识别系统:YOLOv10 + UI界面 + 数据集
深度学习&目标检测实战项目
深度学习 YOLO ui 目标跟踪 分类 人工智能
1.引言1.1背景介绍焊接是现代工业制造中的重要工艺之一,其质量直接影响产品的安全性、耐用性和可靠性。然而,由于焊接工艺的复杂性,在实际应用中不可避免地会出现焊缝缺陷,如气孔、裂纹、未熔合等。这些缺陷不仅降低了焊接质量,还可能导致严重的安全事故。因此,如何高效、准确地检测焊缝缺陷成为工业领域的重要研究课题。传统的焊缝缺陷检测方法主要依赖于人工经验或简单的图像处理技术。这些方法不仅效率低下,而且受主
基于深度学习的钢材表面缺陷检测系统:UI界面 + R-CNN + 数据集
深度学习&目标检测实战项目
R-CNN检测系统 深度学习 ui r语言 开发语言 计算机视觉 cnn 人工智能
在制造业中,钢材表面缺陷的检测是保证产品质量和生产效率的关键环节。随着工业自动化水平的提高,传统的人工检测已经无法满足快速、精确的检测要求。基于深度学习的钢材表面缺陷检测系统能够通过计算机视觉自动识别钢材表面的缺陷类型和位置,极大地提升了检测的准确性和效率。本文将详细介绍如何基于深度学习、R-CNN算法和自定义数据集构建一个钢材表面缺陷检测系统。内容涵盖从数据准备、R-CNN模型训练到UI界面设计
PyTorch torch.logsumexp 详解:数学原理、应用场景与性能优化(中英双语)
阿正的梦工坊
PyTorch Deep Learning pytorch 人工智能 python
PyTorchtorch.logsumexp详解:数学原理、应用场景与性能优化在深度学习和概率模型中,我们经常需要计算数值稳定的对数概率操作,特别是在处理softmax归一化、对数似然计算、损失函数优化等任务时,直接求和再取对数可能会导致数值溢出。torch.logsumexp正是为了解决这一问题而设计的。在本文中,我们将详细介绍:torch.logsumexp的数学原理它的实际用途为什么它比直接
基于深度学习的入侵检测系统设计与实现
AI天才研究院
AI大模型企业级应用开发实战 DeepSeek R1 & 大数据AI人工智能大模型 计算科学 神经计算 深度学习 神经网络 大数据 人工智能 大型语言模型 AI AGI LLM Java Python 架构设计 Agent RPA
基于深度学习的入侵检测系统设计与实现文章关键词:深度学习,入侵检测,网络安全,神经网络,特征提取,系统设计文章摘要:随着互联网的快速发展和网络攻击技术的不断演进,网络安全形势日益严峻。传统的入侵检测系统(IDS)面临着检测精度低、适应性差等问题,难以有效应对日益复杂的网络攻击。深度学习作为一种强大的机器学习技术,具有强大的特征学习和模式识别能力,为入侵检测技术带来了新的机遇。本文深入探讨了基于深度
初识pytorch
m0_73286250
pytorch 人工智能 python
一、AI发展史二、什么是深度学习深度学习是机器学习的一个子集。为了更好地理解这种关系,我们可以将它们放在人工智能(AI)的大框架中来看。机器学习是实现人工智能的一种途径,深度学习是机器学习的一个子集,也就是说深度学习是实现机器学习的一种方法。与机器学习算法的主要区别如下图所示:三、扩展1.使用场景1)图像识别和处理2)自然语言处理(NLP)3)音频处理4)视频分析5)游戏和仿真6)自动驾驶汽车7)
Java部署机器学习模型:方案二(基于DJL)
iiilloi
机器学习 spring spring boot
DJL(DeepJavaLibrary)是由亚马逊公司开发的一款开源的深度学习框架,它旨在为Java开发人员提供一个简单而强大的API,使得在Java中使用深度学习变得更加容易。DJL有以下几个方面优势:支持多个底层引擎DJL支持多个底层引擎,包括MXNet、TensorFlow和PyTorch等。这使得DJL可以在多个平台上使用,包括Java、Android、iOS和RaspberryPi等。易
深度学习归一化与正则化
鱼儿也有烦恼
深度学习 深度学习
文章目录深度学习归一化与正则化1.归一化(Normalization)2.正则化(Regularization)深度学习归一化与正则化1.归一化(Normalization)定义:归一化是指通过某种算法将输入数据或神经网络层的激活值处理后限制在我们需要的特定范围内。它的目的是为了方便后续的数据处理,并加快程序的收敛速度。归一化的主要作用是统一样本的统计分布。在0到1之间的归一化代表的是概率分布,而
深度学习探索-基础篇-正则化篇
神仙盼盼
深度学习入门篇 深度学习 人工智能
文章目录一、正则化介绍1.1正则化的简介1.2正则化的方法介绍1.3正则化的用途二、正则化的详细介绍2.1L1正则化2.2L2正则化2.2.1L2正则化的工作原理2.2.2如何在训练中应用L2正则化2.2.3L2正则化的效果2.3WeightDecay2.4Dropout一、正则化介绍1.1正则化的简介在深度学习领域中,正则化是一种用于防止过拟合的技术。过拟合是指模型在训练数据上表现良好,但在未见
【深度学习】Unet的基础介绍
牧歌悠悠
深度学习 人工智能 算法 深度学习 人工智能 U-net
U-Net是一种用于图像分割的深度学习模型,特别适合医学影像和其他需要分割细节的任务。如图:Unet论文原文为什么叫U-Net?U-Net的结构像字母“U”,所以得名。它的结构由两个主要部分组成:下采样(编码器):图像逐渐被缩小并且提取特征。上采样(解码器):逐渐恢复图像的尺寸,并通过“跳跃连接”将高分辨率的特征与低分辨率的特征结合,以保持细节。网络结构U-Net通常包括以下几部分:(1)下采样(
AI 驱动的自动化测试:从代码到报告的全面解读
测试者家园
人工智能 软件测试 质量效能 测试策略 自动化测试 测试报告 测试用例
在软件开发的生命周期中,测试一直是确保软件质量的关键环节。然而,随着开发规模的日益庞大,传统的手动测试和简单的自动化脚本已经无法满足高效、快速和高质量的需求。随着人工智能(AI)的兴起,尤其是在深度学习、自然语言处理(NLP)和智能决策算法方面的突破,AI驱动的自动化测试正逐渐成为现代软件开发中的核心组成部分。从自动生成测试用例、智能缺陷预测、到自动化报告生成,AI技术的应用为软件测试带来了革命性
智能汽车安全实战:车联网威胁检测从入门到精通(含CAN总线/OTA/深度学习完整代码实现)
Coderabo
DeepSeek R1模型企业级应用 汽车 安全 深度学习
车联网安全威胁检测实战:从CAN总线到OTA的全链路攻防解析(附完整Python代码)一、车联网安全威胁现状与挑战随着智能网联汽车渗透率突破60%,车端ECU数量超过150个,车载通信接口增加至8种以上,攻击面呈现指数级增长趋势。2023年某知名车企曝出的OTA升级漏洞导致50万辆汽车面临远程控制风险,凸显车联网安全检测的紧迫性。二、车联网安全检测技术框架2.1威胁检测架构设计classVehic
58同城深度学习推理平台:基于Istio的云原生网关实践解析
ITPUB-微风
云原生 深度学习 istio
在当今数字化时代,深度学习技术的快速发展为各行各业带来了革命性的变化。作为国内领先的分类信息网站,58同城一直致力于通过技术创新提升服务质量和用户体验。近期,58同城AILab推出了一项重要的技术革新——基于Istio的云原生网关深度学习推理平台。本文将从技术角度深入解析这一创新实践,探讨其架构设计、应用效果以及未来发展方向。一、深度学习推理平台的重要性深度学习推理平台在58同城的业务中扮演着至关
内容中台重构智能服务:人工智能技术驱动精准决策
清风徐徐de来
其他
内容概要现代企业数字化转型进程中,内容中台与人工智能技术的深度融合正在重构智能服务的基础架构。通过整合自然语言处理、知识图谱构建与深度学习算法三大技术模块,该架构实现了从数据采集到决策输出的全链路智能化。在数据层,系统可对接CRM、ERP等企业软件,通过标准化接口完成多源异构数据的实时清洗与结构化处理,例如某金融科技平台利用动态知识图谱技术,将分散的客户行为数据与市场情报进行语义关联,形成可解释的
给你的数据加上杠杆:文本增强技术的研究进展及应用实践
熵简科技Value Simplex
作者信息:文本出自熵简科技NLP算法团队,团队利用迁移学习、少样本学习、无监督学习等深度学习领域最新的思想和技术,为熵简科技各大业务线提供底层AI技术支持和可落地的解决方案,包括前沿算法的领域内落地以及持续部署的后台支持等。导读:本文摘自熵简科技NLP团队的内部技术沙龙,文章系统性地回顾了自然语言处理领域中的文本增强技术在近几年的发展情况,重点列举和讨论了18年、19年中人们常用的五类文本增强技术
深度学习时间序列预测:LSTM算法构建PM2.5单变量模型及Python实现
代码编织匠人
python 深度学习 lstm
深度学习时间序列预测:LSTM算法构建PM2.5单变量模型及Python实现时间序列预测是指根据历史数据对未来的时间点进行预测,对于一些与时间相关的问题,例如气象、股票市场走势等,时间序列预测具有非常重要的应用价值。本文将介绍如何使用深度学习中的LSTM算法,构建针对空气质量(PM2.5)的时间序列单变量模型,并使用Python进行实现。数据准备首先,我们需要收集历史空气质量(PM2.5)数据,以
利用深度学习进行汇率预测:LSTM与Transformer模型的应用实践
人工智能_SYBH
深度学习 lstm transformer
第一部分:数据收集与准备1.1数据集介绍1.2数据准备第二部分:使用LSTM模型进行汇率预测2.1数据序列化2.2LSTM模型构建2.3模型训练与评估2.4结果可视化第三部分:使用Transformer模型进行汇率预测3.1数据序列化3.2Transformer模型构建3.3模型训练与评估3.4结果可视化结论引言外汇市场是一个充满波动性的金融市场,吸引了众多交易者和投资者。为了做出明智的决策,预测
使用shell脚本运行python程序
GiantGo
# Python python 开发语言
在训练深度学习模型时,为了解放生产力,避免手动调参等,一般写成shell脚本的形式,执行一次shell就可以把所有的python程序给运行完毕。例如,我需要探究batchsize的影响,一般新手入门可能这样做:设置batchsize=8,运行一次main.py程序。设置batchsize=16,运行一次main.py程序。设置batchsize=32,运行一次main.py程序。设置batchsi
FaceSwap——人脸的自动交换或替换
爱研究的小牛
AIGC——图像 AIGC 人工智能 深度学习
一、FaceSwap介绍FaceSwap是一款开源的深度学习应用程序,旨在实现人脸的自动交换或替换。二、FaceSwap的核心功能人脸交换(FaceSwapping):FaceSwap的主要功能是将一张人脸从源图像或视频中提取出来,然后将其应用到目标图像或视频中。该功能适用于静态图片和动态视频处理。人脸自动检测与对齐(FaceDetectionandAlignment):在进行人脸交换之前,Fac
Deepseek整合SpringAI
java技术小馆
java spring cloud
在现代应用开发中,问答系统是一个常见的需求,尤其是在客服、教育和技术支持领域。本文将介绍如何使用SpringBoot、Deepseek和SpringAI构建一个简单的问答系统,并通过Postman调用API接口实现问答功能。通过本文,你将学习如何整合这些技术,快速实现一个高效的问答系统。1.技术栈介绍SpringBoot:用于快速构建Java后端服务。Deepseek:高性能的深度学习推理框架,用
国外7个最佳大语言模型 (LLM) API推荐
程序员后端
大型语言模型(LLM)API将彻底改变我们处理语言的方式。在深度学习和机器学习算法的支持下,LLMAPI提供了前所未有的自然语言理解能力。通过利用这些新的API,开发人员现在可以创建能够以前所未有的方式理解和响应书面文本的应用程序。下面,我们将比较从Bard到ChatGPT、PaLM等市场上顶级LLMAPI。我们还将探讨整合这些LLM的潜在用例,并考虑其对语言处理的影响。什么是大语言模型(LLM)
JAVA中的Enum
周凡杨
java enum 枚举
Enum是计算机编程语言中的一种数据类型---枚举类型。 在实际问题中,有些变量的取值被限定在一个有限的范围内。 例如,一个星期内只有七天 我们通常这样实现上面的定义:
public String monday;
public String tuesday;
public String wensday;
public String thursday
赶集网mysql开发36条军规
Bill_chen
mysql 业务架构设计 mysql调优 mysql性能优化
(一)核心军规 (1)不在数据库做运算 cpu计算务必移至业务层; (2)控制单表数据量 int型不超过1000w,含char则不超过500w; 合理分表; 限制单库表数量在300以内; (3)控制列数量 字段少而精,字段数建议在20以内
Shell test命令
daizj
shell 字符串 test 数字 文件比较
Shell test命令
Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试。 数值测试 参数 说明 -eq 等于则为真 -ne 不等于则为真 -gt 大于则为真 -ge 大于等于则为真 -lt 小于则为真 -le 小于等于则为真
实例演示:
num1=100
num2=100if test $[num1]
XFire框架实现WebService(二)
周凡杨
java webservice
有了XFire框架实现WebService(一),就可以继续开发WebService的简单应用。
Webservice的服务端(WEB工程):
两个java bean类:
Course.java
package cn.com.bean;
public class Course {
private
重绘之画图板
朱辉辉33
画图板
上次博客讲的五子棋重绘比较简单,因为只要在重写系统重绘方法paint()时加入棋盘和棋子的绘制。这次我想说说画图板的重绘。
画图板重绘难在需要重绘的类型很多,比如说里面有矩形,园,直线之类的,所以我们要想办法将里面的图形加入一个队列中,这样在重绘时就
Java的IO流
西蜀石兰
java
刚学Java的IO流时,被各种inputStream流弄的很迷糊,看老罗视频时说想象成插在文件上的一根管道,当初听时觉得自己很明白,可到自己用时,有不知道怎么代码了。。。
每当遇到这种问题时,我习惯性的从头开始理逻辑,会问自己一些很简单的问题,把这些简单的问题想明白了,再看代码时才不会迷糊。
IO流作用是什么?
答:实现对文件的读写,这里的文件是广义的;
Java如何实现程序到文件
No matching PlatformTransactionManager bean found for qualifier 'add' - neither
林鹤霄
java.lang.IllegalStateException: No matching PlatformTransactionManager bean found for qualifier 'add' - neither qualifier match nor bean name match!
网上找了好多的资料没能解决,后来发现:项目中使用的是xml配置的方式配置事务,但是
Row size too large (> 8126). Changing some columns to TEXT or BLOB
aigo
column
原文:http://stackoverflow.com/questions/15585602/change-limit-for-mysql-row-size-too-large
异常信息:
Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAM
JS 格式化时间
alxw4616
JavaScript
/**
* 格式化时间 2013/6/13 by 半仙 alxw4616@msn.com
* 需要 pad 函数
* 接收可用的时间值.
* 返回替换时间占位符后的字符串
*
* 时间占位符:年 Y 月 M 日 D 小时 h 分 m 秒 s 重复次数表示占位数
* 如 YYYY 4占4位 YY 占2位<p></p>
* MM DD hh mm
队列中数据的移除问题
百合不是茶
队列移除
队列的移除一般都是使用的remov();都可以移除的,但是在昨天做线程移除的时候出现了点问题,没有将遍历出来的全部移除, 代码如下;
//
package com.Thread0715.com;
import java.util.ArrayList;
public class Threa
Runnable接口使用实例
bijian1013
java thread Runnable java多线程
Runnable接口
a. 该接口只有一个方法:public void run();
b. 实现该接口的类必须覆盖该run方法
c. 实现了Runnable接口的类并不具有任何天
oracle里的extend详解
bijian1013
oracle 数据库 extend
扩展已知的数组空间,例:
DECLARE
TYPE CourseList IS TABLE OF VARCHAR2(10);
courses CourseList;
BEGIN
-- 初始化数组元素,大小为3
courses := CourseList('Biol 4412 ', 'Psyc 3112 ', 'Anth 3001 ');
--
【httpclient】httpclient发送表单POST请求
bit1129
httpclient
浏览器Form Post请求
浏览器可以通过提交表单的方式向服务器发起POST请求,这种形式的POST请求不同于一般的POST请求
1. 一般的POST请求,将请求数据放置于请求体中,服务器端以二进制流的方式读取数据,HttpServletRequest.getInputStream()。这种方式的请求可以处理任意数据形式的POST请求,比如请求数据是字符串或者是二进制数据
2. Form
【Hive十三】Hive读写Avro格式的数据
bit1129
hive
1. 原始数据
hive> select * from word;
OK
1 MSN
10 QQ
100 Gtalk
1000 Skype
2. 创建avro格式的数据表
hive> CREATE TABLE avro_table(age INT, name STRING)STORE
nginx+lua+redis自动识别封解禁频繁访问IP
ronin47
在站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误时,可利用nginx+lua+redis实现在指定的时间段 内,若单IP的请求量达到指定的数量后对该IP进行封禁,nginx返回403禁止访问。利用redis的expire命令设置封禁IP的过期时间达到在 指定的封禁时间后实行自动解封的目的。
一、安装环境:
CentOS x64 release 6.4(Fin
java-二叉树的遍历-先序、中序、后序(递归和非递归)、层次遍历
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
public class BinTreeTraverse {
//private int[] array={ 1, 2, 3, 4, 5, 6, 7, 8, 9 };
private int[] array={ 10,6,
Spring源码学习-XML 配置方式的IoC容器启动过程分析
bylijinnan
java spring IOC
以FileSystemXmlApplicationContext为例,把Spring IoC容器的初始化流程走一遍:
ApplicationContext context = new FileSystemXmlApplicationContext
("C:/Users/ZARA/workspace/HelloSpring/src/Beans.xml&q
[科研与项目]民营企业请慎重参与军事科技工程
comsci
企业
军事科研工程和项目 并非要用最先进,最时髦的技术,而是要做到“万无一失”
而民营科技企业在搞科技创新工程的时候,往往考虑的是技术的先进性,而对先进技术带来的风险考虑得不够,在今天提倡军民融合发展的大环境下,这种“万无一失”和“时髦性”的矛盾会日益凸显。。。。。。所以请大家在参与任何重大的军事和政府项目之前,对
spring 定时器-两种方式
cuityang
spring quartz 定时器
方式一:
间隔一定时间 运行
<bean id="updateSessionIdTask" class="com.yang.iprms.common.UpdateSessionTask" autowire="byName" />
<bean id="updateSessionIdSchedule
简述一下关于BroadView站点的相关设计
damoqiongqiu
view
终于弄上线了,累趴,戳这里http://www.broadview.com.cn
简述一下相关的技术点
前端:jQuery+BootStrap3.2+HandleBars,全站Ajax(貌似对SEO的影响很大啊!怎么破?),用Grunt对全部JS做了压缩处理,对部分JS和CSS做了合并(模块间存在很多依赖,全部合并比较繁琐,待完善)。
后端:U
运维 PHP问题汇总
dcj3sjt126com
windows2003
1、Dede(织梦)发表文章时,内容自动添加关键字显示空白页
解决方法:
后台>系统>系统基本参数>核心设置>关键字替换(是/否),这里选择“是”。
后台>系统>系统基本参数>其他选项>自动提取关键字,这里选择“是”。
2、解决PHP168超级管理员上传图片提示你的空间不足
网站是用PHP168做的,反映使用管理员在后台无法
mac 下 安装php扩展 - mcrypt
dcj3sjt126com
PHP
MCrypt是一个功能强大的加密算法扩展库,它包括有22种算法,phpMyAdmin依赖这个PHP扩展,具体如下:
下载并解压libmcrypt-2.5.8.tar.gz。
在终端执行如下命令: tar zxvf libmcrypt-2.5.8.tar.gz cd libmcrypt-2.5.8/ ./configure --disable-posix-threads --
MongoDB更新文档 [四]
eksliang
mongodb Mongodb更新文档
MongoDB更新文档
转载请出自出处:http://eksliang.iteye.com/blog/2174104
MongoDB对文档的CURD,前面的博客简单介绍了,但是对文档更新篇幅比较大,所以这里单独拿出来。
语法结构如下:
db.collection.update( criteria, objNew, upsert, multi)
参数含义 参数
Linux下的解压,移除,复制,查看tomcat命令
y806839048
tomcat
重复myeclipse生成webservice有问题删除以前的,干净
1、先切换到:cd usr/local/tomcat5/logs
2、tail -f catalina.out
3、这样运行时就可以实时查看运行日志了
Ctrl+c 是退出tail命令。
有问题不明的先注掉
cp /opt/tomcat-6.0.44/webapps/g
Spring之使用事务缘由(3-XML实现)
ihuning
spring
用事务通知声明式地管理事务
事务管理是一种横切关注点。为了在 Spring 2.x 中启用声明式事务管理,可以通过 tx Schema 中定义的 <tx:advice> 元素声明事务通知,为此必须事先将这个 Schema 定义添加到 <beans> 根元素中去。声明了事务通知后,就需要将它与切入点关联起来。由于事务通知是在 <aop:
GCD使用经验与技巧浅谈
啸笑天
GC
前言
GCD(Grand Central Dispatch)可以说是Mac、iOS开发中的一大“利器”,本文就总结一些有关使用GCD的经验与技巧。
dispatch_once_t必须是全局或static变量
这一条算是“老生常谈”了,但我认为还是有必要强调一次,毕竟非全局或非static的dispatch_once_t变量在使用时会导致非常不好排查的bug,正确的如下: 1
linux(Ubuntu)下常用命令备忘录1
macroli
linux 工作 ubuntu
在使用下面的命令是可以通过--help来获取更多的信息1,查询当前目录文件列表:ls
ls命令默认状态下将按首字母升序列出你当前文件夹下面的所有内容,但这样直接运行所得到的信息也是比较少的,通常它可以结合以下这些参数运行以查询更多的信息:
ls / 显示/.下的所有文件和目录
ls -l 给出文件或者文件夹的详细信息
ls -a 显示所有文件,包括隐藏文
nodejs同步操作mysql
qiaolevip
学习永无止境 每天进步一点点 mysql nodejs
// db-util.js
var mysql = require('mysql');
var pool = mysql.createPool({
connectionLimit : 10,
host: 'localhost',
user: 'root',
password: '',
database: 'test',
port: 3306
});
一起学Hive系列文章
superlxw1234
hive Hive入门
[一起学Hive]系列文章 目录贴,入门Hive,持续更新中。
[一起学Hive]之一—Hive概述,Hive是什么
[一起学Hive]之二—Hive函数大全-完整版
[一起学Hive]之三—Hive中的数据库(Database)和表(Table)
[一起学Hive]之四-Hive的安装配置
[一起学Hive]之五-Hive的视图和分区
[一起学Hive
Spring开发利器:Spring Tool Suite 3.7.0 发布
wiselyman
spring
Spring Tool Suite(简称STS)是基于Eclipse,专门针对Spring开发者提供大量的便捷功能的优秀开发工具。
在3.7.0版本主要做了如下的更新:
将eclipse版本更新至Eclipse Mars 4.5 GA
Spring Boot(JavaEE开发的颠覆者集大成者,推荐大家学习)的配置语言YAML编辑器的支持(包含自动提示,