- TROS DataFlow - USB Camera & mipi Sensor - rtsp
WuChao_JMUer
地平线RDKX3系列板卡RDKX3ROS2
TROSDataFlow-USBCamera&mipiSensor-rtsp使用TROS的功能,通过USB或者mipi摄像头得到MJPEG数据,推理YOLOv5节点,得到目标检测结果,通过ros_rtsp将nv12数据变成标准的H264/H265码流推出。DataFlow示意图mipiUSBH264/H265推流展示编译ros_rtsp_server系统版本2.1.0,sudoaptupdate有
- 视频处理学习笔记1:YUYV422、NV12和h264
hongel110
视频处理学习笔记音视频YUYV422NV12ffmpeg
最近因为工作关系在恶补视频相关知识点,在此做一记录便于日后复习。以下均是个人学习经验总结,可能存在错误和坑,欢迎大佬指教。工作中用到的是YUYV422存储格式。存储的就是裸流YUYV422格式文件。YUYV422是两个像素点共用一个UV分量,每个像素点2byte,两个像素点也就是Y00U00Y01V00,4byte,也就是Y、U、V每个分量各1byte。存储结构大致如下:Y00U00Y01V00Y
- OpenGL如何渲染NV12数据
Summer、苏
OpenGL
OpenGL如何渲染NV12数据引言参考资料创建纹理shader脚本如何readpixel回yuvByte流引言其实自己也是个GL小白,刚入门没多久。最近接手一个项目,由于种种原因吧,对接同学提供给我的是YUV(NV12)格式的byte流数据。之前在GL渲染时只渲染过RGB或者RGBA的数据,还真没渲染过NV12格式的。好在有前人已经整理过相关资料了,这里只是整理记录一下,并纠正下前人的笔误。本篇
- OpenGL ES 渲染 NV21、NV12 格式图像有哪些“姿势”?
字节流动
OpenGLES3.0OpenGLES音视频图形渲染Androidc++
使用2个纹理实现NV21格式图像渲染前文提到渲染NV21格式图像需要使用2个纹理,分别用于保存Yplane和UVplane的数据,然后在片段着色器中分别对2个纹理进行采样,转换成RGB数据。OpenGLES渲染NV21或NV12格式图像需要用到GL_LUMINANCE和GL_LUMINANCE_ALPHA格式的纹理,其中GL_LUMINANCE纹理用来加载NV21YPlane的数据,GL_LUMI
- RV1103与FPGA通过MIPI CSI-2实现视频传输,实现网络推流
anhuihbo
RV1103FPGAMIPIfpga开发RV1103MIPIMIPICSI-2VLC
RV1103与FPGA通过MIPICSI-2实现视频传输,实现网络推流。一:图像格式支持图像格式如下:[0]:'NV16'(Y/CbCr4:2:2)Size:Stepwise64x64-2304x1296withstep8/8[1]:'NV61'(Y/CrCb4:2:2)Size:Stepwise64x64-2304x1296withstep8/8[2]:'NV12'(Y/CbCr4:2:0)Si
- YUV,NV21,NV12白话式说明
烟萝
图像处理
想象一下,你在涂画画,要分别处理画中的亮度(即明暗)和颜色。YUV就是这样一个方法,它把画面上的明暗(Y)和颜色信息(UV)分开来处理。在YUV里:Y代表亮度(黑白画面)U和V代表色彩信息(给画面上色)为什么要这样分开呢?因为我们的眼睛对明暗变化比颜色变化更敏感。所以,在处理视频或图片时,如果我们对色彩的细节处理得稍微粗糙一点,大多数人也不容易察觉,这样就可以减少文件的大小,让它更容易存储和传输。
- 工作小计- RGB相关算子实现
Zip-List
cuda工作杂记c++c++cudaRGB
项目中的模型一直都是直接操作NV12的yuv格式数据,这次的模型只支持RGB格式的输入,正好来自己实现对应的算子。这里记录一下对应算子的实现过程,主要涉及到NV12到RGB的变换,RGB的crop/resize操作,对于数据的Norm/ToFloat操作,调整Layout等等。cu文件是要nvcc来进行编译的,但是其头文件可以供外部的cpp文件调用,另外这里的核函数并没有涉及到stream的考虑,
- nv12图像转RGB888的几种公式
CJourneys
IMAGE图像处理
NV12是一种YUV420格式,常用于视频编码和处理。在NV12格式中,像素数据按照特定的排列方式进行存储。具体来说,NV12格式将亮度(Y)分量存储在一个平面中,而色度(UV)分量交错存储在另一个平面中。下面是NV12图像排列的简要说明和示意图:亮度平面(Yplane):亮度数据以连续的方式存储在一个平面中,每个像素对应一个亮度值。色度平面(UVplane):色度数据以交错的方式存储在另一个平面
- ios采集摄像头数据
andy_tu
IOS摄像头采集YUV420数据2016年11月18日10:35:07阅读数:708这里简单说下IOS摄像头采集YUV420数据。步骤:1.初始采集数据需要的对象2.设置采集回调的代理并开始3.在回调中获取到采集的数据(注意:这里采集到的数据格式NV12并不是YUV420格式数据)4.将NV12转成我们需要的YUV420代码如下://摄像头采集capturSession=[[AVCaptureSe
- jetson nano tx2 调用csi摄像头(解决摄像头蓝屏问题)
放羊Wa
nanonanocsi
./darknetdetectordemocfg/coco.datacfg/yolov3-tiny.cfgyolov3-tiny.weights"nvarguscamerasrc!video/x-raw(memory:NVMM),width=1280,height=720,format=NV12,framerate=30/1!nvvidconvflip-method=2!video/x-raw,w
- jetson-nano新手入门:csi摄像头使用测试
寥落星辰smz
jestonnano机器学习
使用RaspberryPiCameraModulev2官方摄像头,便宜的csi摄像头可能无法使用。看树莓派是否安装好,我们可以看一下:这表明树莓派已经安装好。输入这个指令:$gst-launch-1.0nvarguscamerasrc!'video/x-raw(memory:NVMM),width=3820,height=2464,framerate=21/1,format=NV12'!nvvid
- QML用openGL渲染NV12
这是一个正经昵称
Qt问题记录qmlopengles
前言把之前写在windows的播放器移植到了我的安卓手机,就碰到了QOpenGLWidget需要替换的问题。知乎、CSDN一搜就有渲染YUV420P的代码,git也有。没打招呼不放链接了。用的是fbo的那个。主要记录下参数和问题。一、QOpenGLTexture改动NV12的UV数据是在一起的,所以texture只要创建两个,一个Y,一个UV。格式套用RGB,RED放Y,GREEN和BLUE放UV
- yuv图像拼接
qw_stone
FFmpeg
原因:有人问过说yuv如何拼接,当时只是说对应内存进行拷贝,没有充分考虑数据的类型,故在此编写测试程序进行验证概况:不同的数据源,找到对应的yuv数据,然后进行对应拷贝。测试源数据:YUV420P(又分为YU12和YV12),plane平面模式,y,u,v分量分别存放不同平面。首先是所有Y值,然后是所有V值,最后是所有U值.YUV420SP(NV12和NV21),two-plane平面模式,y和u
- 【音视频开发(四)】---RGB转YUV 颜色空间转换
jzen
音视频开发音视频opencv人工智能
Android的MediaCodec编码,默认要求输入是原始视频图像格式,一般为YUV420,例如NV12,NV21。但算法库输出默认的颜色为RGB或者BGR,需要进行转化。而如果使用循环单纯用CPU转换是比较慢的,这里使用OpenCV来进行转换,OpenCV虽然也是用了CPU,但是他内部做了并行计算的优化是比较快的,例如NEON/SSE等。头文件:#include"Flow.h"#include
- RGB转YUV420,支持NV12(420p)和NV21(420sp)
浪小满
笔记程序代码算法数据结构c++
最近项目是用到了RGB格式转YUV420格式,写了一个接口:enumNV_Mode{NV_NONE=0,NV12_MODE=1,NV21_MODE=2};structRGB2YUV420Info{unsignedchar*pYUV420;unsignedchar*pRGB;NV_ModeeMode;intwidth;intheight;RGB2YUV420Info(){pYUV420=nullpt
- dxva2+ffmpeg硬件解码(Windows)重要笔记3
周星星的星
ffmpeg音视频dxva2硬件解码
参考了csdn上Win32Project1_ffmpeg_dxva2这个例子,很不错,直接就可以运行。但是,有几个问题:1、窗口无法正常缩放,缩放后,图像大小并没有一起缩放2、H265的编码格式,显示下面有一块绿色。3、无法从显卡获取YUV420P数据或者NV12数据3、找了很久网上也没有相关代码实现从显卡获取数据到内存(有些方法相当慢,基本无法使用!)4、新遇到问题(2019.11),如果编码端
- 使用OpenCV将图像转换为NV12格式并加载NV12数据
telllong
C++探究OpenCV图片合成c++opencv
摘要:在新项目中,需要为上层应用开放几个接口,但又不想让上层应用过多依赖OpenCV。本文将详细介绍如何使用C++和OpenCV,通过加载图片并转换为NV12格式,实现对图像数据的处理,以及如何加载NV12数据并显示。这些步骤对于在相机等设备中处理YUV数据并与OpenCV进行无缝集成非常有用。用处新项目需要开放接口给上层应用使用,而相机直接输出的是YUV数据。为了减少上层应用对OpenCV的依赖
- YUV图像数据格式
weixin_42505877
视频处理音视频yuvc语言
1.YUV,分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;而“U”和“V”表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV格式主要有YUV444,YUV422,YUV420,YV12,NV12,NV21。需要强调的是如何根据其采样格式来从码流中还原每个像素点的YUV值,因为只有正确地还原了每个像素点的YU
- YUV图像格式转换方法实践
I am 006!
LinuxC++算法系列人工智能c++图像处理
一I420转NV121.I420格式(1)I420是每四个Y共用一组UV,如果一帧I420图像宽带是width,高度是height,1个像素占1个字节,那么共有width✖height个Y,U和V都是width✖height/4个,因此一帧I420图像占用字节数是width✖height✖3/2。(2)I420是先存完所有Y后,在接着存完U,最后存V。2.NV12格式(1)NV12是每四个Y共用一
- 如何实现Android视音频数据对接到GB28181平台(SmartGBD)
音视频牛哥
SmartGBDGB28181接入AndroidGB28181GB28181平台GB28181推送SmartGBD大牛直播SDK
为什么要开发Android平台GB28181?在做Android平台GB28181接入模块之前,我们在RTMP推送播放、RTSP轻量级服务、转发、播放这块,已经有很多年的经验,这意味着,我们不需要重复造轮子,已有屏幕、摄像头或编码前(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型)或编码后(H.264/HEVC)数据,只需要实现GB28181的
- Android NV12转NV21
大白要努力!
android
NV12与NV21的区别主要在于UV(色度)通道的排列顺序:NV12:YYYYYYYYUVUVNV21:YYYYYYYYVUVU换句话说,NV12的U和V是交替排列的,而NV21则相反。要将NV12转换为NV21,您只需交换U和V的值。以下是一个简单的Java代码片段,演示如何执行此操作:publicstaticvoidconvertNV12toNV21(byte[]nv12,byte[]nv21
- yuv图解(YUV444,YUV422,YUV420,YV12,NV12,NV21)
<( ̄︶ ̄)小小程序员
Linux驱动开发学习
参考文章图解YUVYUV是什么YUV(444,422,420)AndYUV(Packed,Planar,Semi-Planar)知识点YUV是用一个称为Y(相当于灰度)的亮度分量和两个色度分量表示,分别称为U(蓝色投影)和V(红色投影)。YUV也可以称为YCbCr,U:Cb,V:Cr。Y表示亮度分量:如果只显示Y的话,图像看起来会是一张黑白照。YUV4:2:2采样方式表示:水平方向Y分量与UV分量
- NDK中使用mediacodec解码h264
王二の黄金时代
h264android多媒体ndkandroidffmpeg
《Ndk中使用Mediacode解码》《androidmediacodec编码demo(java)》《NDK中使用mediacodec编码h264》《Androidnative层使用opengl渲染YUV420p和NV12》《android使用NativeWindow渲染RGB视频》《opengl叠加显示文字》《androidstudio编译freeType》《最原始的yuv图像叠加文字的实现--
- ffmpeg抠图
、、、、南山小雨、、、、
ffmpegADffmpegcolorkeychromakey抠图透明
1.不用png,用AVFrame2.合流3.图片抠图透明(1.)mp4扣yuv图,(2)用1.把一张yuv标记为透明然后av_hwframe_transfer_data到GPU(3)用抠图算法函数对yuv进行处理(4)qsv的h264_qsv只支持nv12和qsv,但qsv本身并不限制像素格式,比如在qsv里可以用vpp_qsv=format输出各种像素格式。因此以上第二种方法可能可行。av_hw
- 图像处理算法大全(基于libyuv或IPP)----RGB32(ARGB)转成yuv420,RGB24,nv12,yuv422集合
周星星的星
图像处理算法ffmpeg录屏软件libyuvdxgi
《周星星教你学ffmpeg》技巧libyuv源码:staticvoidRGB32_2_YUV420(BYTE*pRGBAPtr,BYTE*pYUYVPtr,intwidth,intheight){#ifdefLIBYUVuint8_t*yplane=pYUYVPtr;uint8_t*uplane=pYUYVPtr+width*height;uint8_t*vplane=pYUYVPtr+(widt
- yuv数据(nv12和nv21)和RGB数据之间转换的c++代码
smart*dog
c++uvopencv计算机视觉
一、首先了解下nv12和nv21的数据排布nv21YYYYYYYYYYYYYYYYVUVUVUVUnv21YYYYYYYYYYYYYYYYUVUVUVUV主要就是UV的顺序不同,交互一下UV的位置就可以互换NV12和NV21.二、bgr(rgb)转nv21(nv12)一般手机等移动端的数据流格式都是yuv格式,而神经网络的输入一般都是rgb格式,所以需要进行转换,这里给出c++的代码示例。cv::
- Android中摄像头获取的YUV数据转Opencv的Mat
从程序猿到程序员
androidopencv
背景在onPreviewFrame方法中获取的byte[]data数据为420sp格式,排列顺序为width*height个Y(亮度信息,就是我们常见的灰度图像),后面是UV(颜色信息),4个Y共享一个U和V,故byte数组的总大小是width*height*2/3。420sp通常是如下形式(UV交替属于NV12)(或者VU交替属于NV21):[[YYYYYYYYYYYY或YYYYUVUVVUVU
- iOS 视频直播开发笔记(六)
Geek.Fan
C++入门及项目实战宝典
在视频直播中,为了提高视频编码效率,可以对数据进行适当的转换,再送编码器,iOS对NV12的数据编码效率最高,以下是YUV420P互转NV12,NV21的简单算法。1.YUV420P转NV12voidYUV420PtoNV12(unsignedchar*Src,unsignedchar*Dst,intWidth,intHeight){unsignedchar*SrcU=Src+Width*Heig
- Android平台GB28181设备接入侧(编码前|编码后|RTSP|RTMP)支持功能浅析
音视频牛哥
GB28181接入流媒体RTSP2GB28181GB28181AndroidRTSP转GB28181非国标实现GB28181GB28181对接
在之前,我有写过Android平台GB28181设备接入模块的好多blog,包括参数设置、功能支持与扩展等,以数据接入为例,支持的数据类型涉及编码前、编码后或直接流数据(RTSP或RTMP流)。可用于如智能监控、智慧零售、智慧教育、远程办公、生产运输、智慧交通、车载或执法记录仪等场景。编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型)
- Android平台GB28181设备接入端对接编码前后音视频源类型浅析
音视频牛哥
GB28181接入流媒体gb28181gb28181平台GB/T28181对接GB28181AndroidAndroidGB28181
前言今天主要对Android平台GB28181设备接入模块支持的接入数据类型,做个简单的汇总:编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型),其中,Android平台前后摄像头数据,或者屏幕数据,或者Unity拿到的数据,均属编码前数据;编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据);拉取RTSP或R
- jvm调优总结(从基本概念 到 深度优化)
oloz
javajvmjdk虚拟机应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
- 【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
- HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java更新swingJTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
- servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
- FineReport的公式编辑框的语法简介
老A不折腾
finereport公式总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
- linux mysql 数据库乱码的解决办法
墙头上一根草
linuxmysql数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
- 我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
- mysql 基准测试之sysbench
annan211
基准测试mysql基准测试MySQL测试sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
- sql的复杂查询使用案列与技巧
百合不是茶
oraclesql函数数据分页合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
- 深入学习Thread类
bijian1013
javathread多线程java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
- JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
javafastjsonnet.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
- 【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
- 【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
- nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
- java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtilsBeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
- [金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
- vi区段删除
Cwind
linuxvi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
- 清除tomcat缓存的方法总结
dashuaifu
tomcat缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
- 不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Webless
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
- [入门]更上一层楼
dcj3sjt126com
PHPyii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
- Apache HttpClient使用详解
eksliang
httpclienthttp协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
- zxing二维码扫描功能
gundumw100
androidzxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
- 纯HTML+CSS带说明的黄色导航菜单
ini
htmlWebhtml5csshovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
- fastjson初始化对性能的影响
kane_xie
fastjson序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
- 基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
- js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
- java 计时器应用
tangqi609567707
javatimer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
- erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s