- Netty如何解决粘包以及半包问题,以及目前最常用的LengthFieldBasedFrameDecoder
编写美好前程
#JAVA网络netty
粘包(StickyPackets)和半包(HalfPackets)粘包(StickyPackets)和半包(HalfPackets)是在网络通信中常见的两种问题,特别是在基于流的传输协议(如TCP)中。这些问题主要是由于数据的传输特性导致的,涉及到数据的组合和拆分。粘包(StickyPackets):现象:多个发送端的小数据包在传输过程中被组合成一个大的数据包,接收端可能一次性接收到了多个消息。原
- netty的LengthFieldBasedFrameDecoder
兔子先生°
网络编程java
length从起始位置开始,length长度值不包含length字段的长度0x00024523length值为2字节lengthFieldOffset=0起始位置开始lengthFieldLength=2length占用字节数lengthAdjustment=0initialBytesToStrip=0跳过字节数(从起始位置开始)前:0x00024523后:0x00024523length从起始位
- LengthFieldBasedFrameDecoder 详解
40岁资深老架构师尼恩
java
LengthFieldBasedFrameDecoder详解疯狂创客圈Java分布式聊天室【亿级流量】实战系列之-31【博客园总入口】文章目录LengthFieldBasedFrameDecoder详解写在前面1.1.1.解码器:FrameDecoder1.1.1.难点:自定义长度帧解码器写在最后疯狂创客圈亿级流量高并发IM学习实战写在前面大家好,我是作者尼恩。目前和几个小伙伴一起,组织了一个高并
- Netty接收超长TCP数据时 使用按行分隔Decoder无法正确解码的问题解决
百事可乐_
tcp/ip网络网络协议
使用Netty实现的tcp服务端,由于tcp是流式传输的,故需要选用一个解码器对流式消息进行解码和包分隔,以防收到不正确的包。例如LineBasedFrameDecoder,LengthFieldBasedFrameDecoder,DelimiterBasedFrameDecoder等常用解码器。需求是收到的消息最长长度限制在50M内,且没有固定的消息头,每次接收消息又不一定在结尾存在固定的换行符
- Netty专栏 (七)——— LengthFieldBasedFrameDecoder - 参数说明
thinking_fioa
NettyNettyNettyTCP粘包黏包自定义长度解码器参数举例说明
LengthFieldBasedFrameDecoder-参数说明@author鲁伟林网上诸多博客对于LengthFieldBasedFrameDecode解码器的使用,翻译和解释过于死板,难于理解,特别是其构造函数的6个参数的解释,过于字面化解释。该博客尽量保证通俗易懂,帮组读者理解和使用。读者可以选择读英文文档。工作量:1.详细讲解LengthFieldBasedFrameDecode中6个参
- netty: LengthFieldBasedFrameDecoder的用法示例
amadeus_liu2
Nettyjava开发语言
一、服务器端启动类:packagecn.edu.tju;importio.netty.bootstrap.ServerBootstrap;importio.netty.buffer.ByteBuf;importio.netty.buffer.Unpooled;importio.netty.channel.*;importio.netty.channel.nio.NioEventLoopGroup;
- Netty实现通信框架
高如风
nettyjava算法数据结构
一、LengthFieldBasedFrameDecoder的参数解释1、LengthFieldBasedFrameDecoder的构造方法参数看下最多参数的构造方法/***Createsanewinstance.**@parambyteOrder*the{@linkByteOrder}ofthelengthfield*@parammaxFrameLength*themaximumlengthof
- Netty进阶-黏包半包
Filwaod
nettynetty黏包半包
黏包半包1.粘包与半包1.1粘包现象1.3现象分析1.4解决方案方法1,短链接方法2,固定长度方法3,固定分隔符方法4,预设长度LengthFieldBasedFrameDecoder1.粘包与半包1.1粘包现象服务端代码@Slf4jpublicclassHelloWorldServer{publicstaticvoidmain(String[]args){NioEventLoopGroupbos
- LengthFieldBasedFrameDecoder(自定义长度帧解码器)
小土豆1994
https://www.cnblogs.com/crazymakercircle/p/10294745.htmlhttps://blog.csdn.net/mcpang/article/details/38613857
- 剖析LengthFieldBasedFrameDecoder
Cool_Pomelo
剖析LengthFieldBasedFrameDecoder下面这个测试用例是Netty自带的:@TestpublicvoidtestDiscardTooLongFrame1(){ByteBufbuf=Unpooled.buffer();buf.writeInt(32);for(inti=0;ibuf.writeByte('a');EmbeddedChannelchannel=newEmbedde
- netty之粘包拆包ByteToMessageDecoder
better_hui
nettynetty
目录拆包粘包处理的方式netty的处理方式netty实现编码解码1、cumulator.cumulate()拼接数据包2、callDecode()解析数据包总结LengthFieldBasedFrameDecoder拆包粘包粘包产生的原因:两个包小于缓存区的大小,传送数据会将两个包都放在缓冲区中一起发送,就会产生粘包的问题。半包产生的原因:当某一个包的大于缓冲区的大小,会被发送多次,每次就收到的就
- Netty学习笔记五-LengthFieldBasedFrameDecoder源码分析
无聪帅
上一节中提到了对象反序列化解析器ObjectDecoder,ObjectDecoder是继承自LengthFieldBasedFrameDecoder,LengthFieldBasedFrameDecoder是Netty通用的拆包器LengthFieldBasedFrameDecoder用法LengthFieldBasedFrameDecoder源码解释中是这么说的:通过长度域lengthFiel
- [Netty源码] 编码和解码相关问题 (十二)
959y
IOnetty源码解析nettyjavanetty
文章目录1.编码和解码的介绍2.相关继承3.解码器分析3.1ByteToMessageDecoder基类3.2FixedLengthFrameDecoder3.3LineBasedFrameDecoder3.4DelimiterBasedFrameDecoder3.5LengthFieldBasedFrameDecoder4.编码器分析4.1解码过程分析4.2writeAndFlush方法分析4.
- Netty整合MessagePack、LengthFieldBasedFrameDecoder解决粘包/拆包问题
程就人生
Java语言序列化的目的主要有两个,网络传输和对象持久化;评价一款序列化框架的优劣,主要从以下几个方面考察:1.对语言的支持;2.序列化后的码流大小;3.序列化后的性能;Java自带的序列化类java.io.Serializable,不能够跨语言,而且序列化后码流太大,性能相对比较低。有一款高效的二进制序列化框架,它就是MessagePack,它像JSON一样支持不同语言之间的数据交换;如果所做项
- 解码器LengthFieldBasedFrameDecoder
书唐瑞
Netty
解码器LengthFieldBasedFrameDecoder,从名字上可以猜测出来,它是基于长度的解码器.Netty从TCP缓冲区中读取字节,把这些字节交给LengthFieldBasedFrameDecoder进行解码,解码的操作是根据设定的规则,根据规则,从字节中解码出来有意义的数据,然后把数据再交给后续的Handler处理.接下来看下,它是如何根据规则解码的.如上图,从网络中读取到的数据是
- LengthFieldBasedFrameDecoder
Pillar_Zhong
综述Adecoderthatsplitsthereceived{@linkByteBuf}sdynamicallybythevalueofthelengthfieldinthemessage.Itisparticularlyusefulwhenyoudecodeabinarymessagewhichhasanintegerheaderfieldthatrepresentsthelengthofth
- Netty——LengthFieldBasedFrameDecoder+自定义协议解决TCP粘包、拆包
小波同学
一、TCP粘包和拆包基本介绍TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是接收端就难于分辨出完整的数据包了,因为面向流的通信是无消息保护边界的。由于TCP无
- Netty源码笔记(三)LengthFieldBasedFrameDecoder
李亚林1990
在RPC通信中,对于接收到的二进制字节流,我们必须要能确定每一条消息的边界,然后进行反序列化解析成相应的消息对象,去进行相应的业务处理。常用的确定消息边界的方式有两种:1、长度前缀法。就是在每一条消息的前面固定几个字节来表示当前这条消息的长度,以此来界定一条完整的消息;2、字符分隔法。在一串二进制流中,每两条消息之间、每个字段之间以特殊的字符分隔开,来确定每条消息每个字段。Netty实现了一些列开
- Netty框架进阶篇 - 解决TCP粘包和拆包问题以及集成MessagePack序列化框架实战
wzljiayou
网络编程netty网络协议网络通信TCP粘包和半包MessagePack
文章目录TCP粘包/拆包分析什么是TCP粘包/拆包粘包/拆包产生原因Nagle算法以太网的MTU(最大传输单元)限制TCP的MSS(最大报文段)限制解决粘包/拆包问题Netty粘包/拆包解决方案消息定长增加分隔符自定义长度LengthFieldBasedFrameDecoder参数分析LengthFieldBasedFrameDecoder图解参数使用集成MessagePack序列化框架实战(基于
- Netty应用之粘包半包问题
温JZ
Netty后端java
文章目录1.粘包现象演示2.半包现象演示3.粘包半包现象分析3.1粘包3.2半包4.粘包半包解决方案4.1短连接4.2定长解码器4.3行解码器4.4LengthFieldBasedFrameDecoder4.5LengthFieldBasedFrameDecoder演示参考黑马程序员1.粘包现象演示我们通过一段代码演示一个这个粘包现象,首先我们来看服务端voidstart(){NioEventLo
- Netty通用TCP黏包解决方案--LengthFieldBasedFrameDecoder
L千年老妖
前言TCP以流的方式进行数据传输,上层应用协议为了对消息进行区分,往往采用如下4种方式。消息长度固定:累计读取到固定长度为LENGTH之后就认为读取到了一个完整的消息。然后将计数器复位,重新开始读下一个数据报文。回车换行符作为消息结束符:在文本协议中应用比较广泛。将特殊的分隔符作为消息的结束标志,回车换行符就是一种特殊的结束分隔符。通过在消息头中定义长度字段来标示消息的总长度。netty中针对这四
- 深入netty之三更为复杂的数据协议的decode
小七赛文
前面,我们讲述了一个带有包尾的数据协议包的解码过程,这种协议就已经被LengthFieldBasedFrameDecoder类能解决的数据协议复杂得多。其协议如下所示:带包尾的数据协议包但还有更复杂的,我们遇到的,就是在上述协议的基础上,再增加三种不同于上述协议的协议,如下所示:数据协议示例带包尾的数据协议,我们已经通过CashboxDataLengthFieldBasedFrameDecoder
- 深入netty之二自定义LengthFieldBasedFrameDecoder类
小七赛文
前面说到,LengthFieldBasedFrameDecoder类是我们最常用的一个粘包拆包工具,能帮我们解决95%以上的粘包拆包问题。LengthFieldBasedFrameDecoder类能够解决的最复杂的数据包结构类似如下:数据包协议示例1从上图可以看出,这种协议类似“包头1+包体长度+包头2+包体”这种结构。这种协议结构已经很复杂了,但现实往往不尽如人意,比如有如下形式的数据协议:数据
- Netty源码分析——拆包器之LengthFieldBasedFrameDecoder
小波同学
基于Netty源代码版本:netty-all-4.1.33.Final前言什么是粘包、拆包粘包、拆包是Socket编程中最常遇见的一个问题,本文来研究一下Netty是如何解决粘包、拆包的,首先我们从什么是粘包、拆包开始说起:TCP是个"流"协议,所谓流,就是没有界限的一串数据,TCP底层并不了解上层业务的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上:一个完整的包可能会被TCP
- 通信框架netty5.0教程三:TCP粘包/拆包问题
旋zi
nionettyjava
熟悉TCP编程的读者可能都知道,无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。如果不考虑TCP粘包的问题,就可能导致读取数据的错误。本文将讲解如何使用Netty5.0解决TCP粘包/拆包问题。netty5.0中有一个非常方便的传输解析器:LengthFieldBasedFrameDecoder。下面是LengthFieldBasedFrameDecod
- 自顶向下深入分析Netty(八)-- LengthFieldBasedFrameDecoder
Fashion-liu
Netty深入分析
(本文是上一节的节选,已读可略过)Netty中,基于长度字段的消息帧解码器LengthFieldBasedFrameDecoder可根据数据包中的长度字段动态的解码出消息帧。一个推荐的二进制传输协议可设计为如下格式:+----------+------+----------+------+|头部长度|头部|数据长度|数据|+----------+------+----------+------+这
- LengthFieldBasedFrameDecoder解码器
书唐瑞
LengthFieldBasedFrameDecoder是一个基于长度解码器,它是Netty提供的4个解码器中使用最广泛的一个解码器,RocketMQ中就是基于这个解码器进行解码消息的.接下来分析下它是如何解码消息的.在它的类中主要有4个属性:privatefinalintlengthFieldOffset;privatefinalintlengthFieldLength;privatefinal
- Netty读书笔记5: 使用LengthFieldBasedFrameDecoder解码器自定义协议
maskwang520
在之前的文章中,介绍了DelimiterBasedFrameDecoder(基于特殊符号的编码器)和FixedLengthFrameDecoder定长编码器)的用法.这篇文章主要是介绍使用LengthFieldBasedFrameDecoder解码器自定义协议.通常,协议的格式如下:image.png通常来说,使用ByteToMessageDocoder这个编码器,我们要分别解析出Header,l
- LengthFieldBasedFrameDecoder/LengthFieldPrepender
h_sn999
java
大多数的协议(私有或者公有),协议头中会携带长度字段,用于标识消息体或者整包消息的长度,例如SMPP、HTTP协议等。由于基于长度解码需求的通用性,Netty提供了LengthFieldBasedFrameDecoder/LengthFieldPrepender,自动屏蔽TCP底层的拆包和粘包问题,只需要传入正确的参数,即可轻松解决“读半包“问题。发送方使用LengthFieldPrepender
- Netty权威指南 第2版学习笔记7——MessagePack编解码及LengthFieldBasedFrameDecoder
谢厂节_编程圈
Java-Netty专栏
MessagePack是一个高效的二进制序列化框架,像JSON一样支持不同语言间的数据交换,速度更快,序列化之后的码流更小MessagePack特点编解码高效,性能高序列化后的码流小支持跨语言其支持的语言有:Java、Python、Ruby、Haskell、C#、OCaml、Lua、Go、C、C++等。官网地址:http://msgpack.org/Git地址:https://github.com
- 关于旗正规则引擎规则中的上传和下载问题
何必如此
文件下载压缩jsp文件上传
文件的上传下载都是数据流的输入输出,大致流程都是一样的。
一、文件打包下载
1.文件写入压缩包
string mainPath="D:\upload\"; 下载路径
string tmpfileName=jar.zip; &n
- 【Spark九十九】Spark Streaming的batch interval时间内的数据流转源码分析
bit1129
Stream
以如下代码为例(SocketInputDStream):
Spark Streaming从Socket读取数据的代码是在SocketReceiver的receive方法中,撇开异常情况不谈(Receiver有重连机制,restart方法,默认情况下在Receiver挂了之后,间隔两秒钟重新建立Socket连接),读取到的数据通过调用store(textRead)方法进行存储。数据
- spark master web ui 端口8080被占用解决方法
daizj
8080端口占用sparkmaster web ui
spark master web ui 默认端口为8080,当系统有其它程序也在使用该接口时,启动master时也不会报错,spark自己会改用其它端口,自动端口号加1,但为了可以控制到指定的端口,我们可以自行设置,修改方法:
1、cd SPARK_HOME/sbin
2、vi start-master.sh
3、定位到下面部分
- oracle_执行计划_谓词信息和数据获取
周凡杨
oracle执行计划
oracle_执行计划_谓词信息和数据获取(上)
一:简要说明
在查看执行计划的信息中,经常会看到两个谓词filter和access,它们的区别是什么,理解了这两个词对我们解读Oracle的执行计划信息会有所帮助。
简单说,执行计划如果显示是access,就表示这个谓词条件的值将会影响数据的访问路径(表还是索引),而filter表示谓词条件的值并不会影响数据访问路径,只起到
- spring中datasource配置
g21121
dataSource
datasource配置有很多种,我介绍的一种是采用c3p0的,它的百科地址是:
http://baike.baidu.com/view/920062.htm
<!-- spring加载资源文件 -->
<bean name="propertiesConfig"
class="org.springframework.b
- web报表工具FineReport使用中遇到的常见报错及解决办法(三)
老A不折腾
finereportFAQ报表软件
这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。
出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。
1、repeated column width is largerthan paper width:
这个看这段话应该是很好理解的。比如做的模板页面宽度只能放
- mysql 用户管理
墙头上一根草
linuxmysqluser
1.新建用户 //登录MYSQL@>mysql -u root -p@>密码//创建用户mysql> insert into mysql.user(Host,User,Password) values(‘localhost’,'jeecn’,password(‘jeecn’));//刷新系统权限表mysql>flush privileges;这样就创建了一个名为:
- 关于使用Spring导致c3p0数据库死锁问题
aijuans
springSpring 入门Spring 实例Spring3Spring 教程
这个问题我实在是为整个 springsource 的员工蒙羞
如果大家使用 spring 控制事务,使用 Open Session In View 模式,
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.
- 百度词库联想
annan211
百度
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>RunJS</title&g
- int数据与byte之间的相互转换实现代码
百合不是茶
位移int转bytebyte转int基本数据类型的实现
在BMP文件和文件压缩时需要用到的int与byte转换,现将理解的贴出来;
主要是要理解;位移等概念 http://baihe747.iteye.com/blog/2078029
int转byte;
byte转int;
/**
* 字节转成int,int转成字节
* @author Administrator
*
- 简单模拟实现数据库连接池
bijian1013
javathreadjava多线程简单模拟实现数据库连接池
简单模拟实现数据库连接池
实例1:
package com.bijian.thread;
public class DB {
//private static final int MAX_COUNT = 10;
private static final DB instance = new DB();
private int count = 0;
private i
- 一种基于Weblogic容器的鉴权设计
bijian1013
javaweblogic
服务器对请求的鉴权可以在请求头中加Authorization之类的key,将用户名、密码保存到此key对应的value中,当然对于用户名、密码这种高机密的信息,应该对其进行加砂加密等,最简单的方法如下:
String vuser_id = "weblogic";
String vuse
- 【RPC框架Hessian二】Hessian 对象序列化和反序列化
bit1129
hessian
任何一个对象从一个JVM传输到另一个JVM,都要经过序列化为二进制数据(或者字符串等其他格式,比如JSON),然后在反序列化为Java对象,这最后都是通过二进制的数据在不同的JVM之间传输(一般是通过Socket和二进制的数据传输),本文定义一个比较符合工作中。
1. 定义三个POJO
Person类
package com.tom.hes
- 【Hadoop十四】Hadoop提供的脚本的功能
bit1129
hadoop
1. hadoop-daemon.sh
1.1 启动HDFS
./hadoop-daemon.sh start namenode
./hadoop-daemon.sh start datanode
通过这种逐步启动的方式,比start-all.sh方式少了一个SecondaryNameNode进程,这不影响Hadoop的使用,其实在 Hadoop2.0中,SecondaryNa
- 中国互联网走在“灰度”上
ronin47
管理 灰度
中国互联网走在“灰度”上(转)
文/孕峰
第一次听说灰度这个词,是任正非说新型管理者所需要的素质。第二次听说是来自马化腾。似乎其他人包括马云也用不同的语言说过类似的意思。
灰度这个词所包含的意义和视野是广远的。要理解这个词,可能同样要用“灰度”的心态。灰度的反面,是规规矩矩,清清楚楚,泾渭分明,严谨条理,是决不妥协,不转弯,认死理。黑白分明不是灰度,像彩虹那样
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
bylijinnan
java
public class PrintMatrixClockwisely {
/**
* Q51.输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
例如:如果输入如下矩阵:
1 2 3 4
5 6 7 8
9
- mongoDB 用户管理
开窍的石头
mongoDB用户管理
1:添加用户
第一次设置用户需要进入admin数据库下设置超级用户(use admin)
db.addUsr({user:'useName',pwd:'111111',roles:[readWrite,dbAdmin]});
第一个参数用户的名字
第二个参数
- [游戏与生活]玩暗黑破坏神3的一些问题
comsci
生活
暗黑破坏神3是有史以来最让人激动的游戏。。。。但是有几个问题需要我们注意
玩这个游戏的时间,每天不要超过一个小时,且每次玩游戏最好在白天
结束游戏之后,最好在太阳下面来晒一下身上的暗黑气息,让自己恢复人的生气
&nb
- java 二维数组如何存入数据库
cuiyadll
java
using System;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
namespace WindowsFormsApplication1
{
- 本地事务和全局事务Local Transaction and Global Transaction(JTA)
darrenzhu
javaspringlocalglobaltransaction
Configuring Spring and JTA without full Java EE
http://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/
Spring doc -Transaction Management
http://docs.spring.io/spri
- Linux命令之alias - 设置命令的别名,让 Linux 命令更简练
dcj3sjt126com
linuxalias
用途说明
设置命令的别名。在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问 题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题【1】。常用别名来简化ssh登录【见示例三】,使长命令变短,使常 用的长命令行变短,强制执行命令时询问等。
常用参数
格式:alias
格式:ali
- yii2 restful web服务[格式响应]
dcj3sjt126com
PHPyii2
响应格式
当处理一个 RESTful API 请求时, 一个应用程序通常需要如下步骤 来处理响应格式:
确定可能影响响应格式的各种因素, 例如媒介类型, 语言, 版本, 等等。 这个过程也被称为 content negotiation。
资源对象转换为数组, 如在 Resources 部分中所描述的。 通过 [[yii\rest\Serializer]]
- MongoDB索引调优(2)——[十]
eksliang
mongodbMongoDB索引优化
转载请出自出处:http://eksliang.iteye.com/blog/2178555 一、概述
上一篇文档中也说明了,MongoDB的索引几乎与关系型数据库的索引一模一样,优化关系型数据库的技巧通用适合MongoDB,所有这里只讲MongoDB需要注意的地方 二、索引内嵌文档
可以在嵌套文档的键上建立索引,方式与正常
- 当滑动到顶部和底部时,实现Item的分离效果的ListView
gundumw100
android
拉动ListView,Item之间的间距会变大,释放后恢复原样;
package cn.tangdada.tangbang.widget;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import andr
- 程序员用HTML5制作的爱心树表白动画
ini
JavaScriptjqueryWebhtml5css
体验效果:http://keleyi.com/keleyi/phtml/html5/31.htmHTML代码如下:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta charset="UTF-8" >
<ti
- 预装windows 8 系统GPT模式的ThinkPad T440改装64位 windows 7旗舰版
kakajw
ThinkPad预装改装windows 7windows 8
该教程具有普遍参考性,特别适用于联想的机器,其他品牌机器的处理过程也大同小异。
该教程是个人多次尝试和总结的结果,实用性强,推荐给需要的人!
缘由
小弟最近入手笔记本ThinkPad T440,但是特别不能习惯笔记本出厂预装的Windows 8系统,而且厂商自作聪明地预装了一堆没用的应用软件,消耗不少的系统资源(本本的内存为4G,系统启动完成时,物理内存占用比
- Nginx学习笔记
mcj8089
nginx
一、安装nginx 1、在nginx官方网站下载一个包,下载地址是:
http://nginx.org/download/nginx-1.4.2.tar.gz
2、WinSCP(ftp上传工
- mongodb 聚合查询每天论坛链接点击次数
qiaolevip
每天进步一点点学习永无止境mongodb纵观千象
/* 18 */
{
"_id" : ObjectId("5596414cbe4d73a327e50274"),
"msgType" : "text",
"sendTime" : ISODate("2015-07-03T08:01:16.000Z"
- java术语(PO/POJO/VO/BO/DAO/DTO)
Luob.
DAOPOJODTOpoVO BO
PO(persistant object) 持久对象
在o/r 映射的时候出现的概念,如果没有o/r映射,就没有这个概念存在了.通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合.PO中应该不包含任何对数据库的操作.
VO(value object) 值对象
通
- 算法复杂度
Wuaner
Algorithm
Time Complexity & Big-O:
http://stackoverflow.com/questions/487258/plain-english-explanation-of-big-o
http://bigocheatsheet.com/
http://www.sitepoint.com/time-complexity-algorithms/