- 浏览: 912564 次
- 性别:
- 来自: 深圳
最新评论
-
tcspecial:
陈宇飞 写道reset()为什么不可以用了,版本低了,还是头文 ...
QTreeView 使用自定义Model -
陈宇飞:
reset()为什么不可以用了,版本低了,还是头文件呢
QTreeView 使用自定义Model -
gamesliang:
海康SDK截图 -
tadpole_java:
环形缓冲区类(C++源码)绝对可用.....转到你网易的微博上 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象) -
tcspecial:
tadpole_java 写道经常看看您的帖子,把它当成教科书 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象)
文章列表
mac自从升级至Sierra系统后,gdb调试程序后出错:
During startup program terminated with signal SIG113, Real-time event 113
网上方案:升级gdb,修改gdb配置:
brew upgrade gdb
cat "set startup-with-shell off" > ~/.gdbinit
该方案只适合v12.10.2及以下版本,v10.12.6依然无法工作。
上述错误是由于mac的安全保护策略所致,阻止gdb调试程序。网上提出可使用lldb调试, ...
IEEE浮点数标准定义了两种基本的格式:以4个字节表示单精度格式和8个字节表示双精度。
一. 存储规则
float:
1位符号数 8位指数 23位有效数
0/1 bias:127
double:
1位符号数 11位指数 52位有效数
0/1 bias:1023
1.1 8.25存储分析
(8.25)10 = (1000.01)2
划分三部分:
1. 符号位: 0 0正数,1负数
2. 指数位: 10000010 科学记数法表示:(1000.01)2 = 1.00001*2^3,指数为:1 ...
一. 比较
document.cookie = "a=b; max-age=3600; path=/;";
Set-Cookie: a=b; max-age=3600; path=/;
第一种是在客户端通过js设置,随请求传递至服务端,php可通过$_COOKIE获取。
第二种是在服务端设置,通过在http头部添加多个Set-Cookie字段实现。
二. 语言实现
Cookie secondName = new Cookie( "second", "val-2" );
secondName. ...
Thrift通常以独立服务存在,也支持HTTP协议,以servlet方式在Tomcat中运行。
一. 服务端Servlet
实现比较简单,只需实现TExtensibleServlet,并在getProcessor()中填充实现类。
/**
* Thrift servlet
*/
@WebServlet(name="thrifttest",value="/thrifttest")
public class ThriftService extends TExtensibleServlet {
private static f ...
Thrift 是apache开源的rpc框架,支持多种语言绑定。相对protobuf,提供server,序列化等一站式解决方案。
一. 下载
http://thrift.apache.org/download
二. 编写IDL
namespace java org.sun.service
service SimpleThriftService
{
string getStr( 1:string src, 2:string dst );
i32 getInt( 1:i32 val );
map<i32,i32> get ...
Spring MVC中存在大量的注解,@RequestMapping可方便实现路由跳转,下面我们看看注解是怎么实现的。
一. 定义注释
import java.lang.annotation.*;
/**
* Annotation Interface class
* @author sunling3
*
*/
@Retention(RetentionPolicy.RUNTIME) // 注释运行时依然存在
@Target(ElementType.METHOD) // 注释用于方法
public @interface HelloAnno ...
Linux下的rm命令太可怕了,一不小心 rm -rf / 那就悲剧了,请慎用rm -rf。
如果一不小心删除重要文件,后续不对该路径文件操作,可以通过相关命令找回被删文件。
原理主要是删除的文件并没有实际上从硬盘上抹去,只是inode索引删除了相关的信息(单链表节点删除实现),因此只要找到刚删除文件的block上,就可以恢复已经删除的文件。
一. 查看分区
df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 412849 ...
流量劫持比较复杂,一般来说运营商,路由器厂商,黑客都可能是流量劫持操作者。基于国内大部分网站以http明文协议为主,这无疑给劫持者提供了土壤。
本文演示了家庭路由器流量劫持实现,公共WIFI连接授权实现有点差异,它是用iptables重定向至webserver,有兴趣的同学可参考nodogsplash实现源码。
一. 原理图
原理:
1. 嗅探用户http get请求流量。
2. 伪造http 200包(插入广告代码)。
两种场景:
1. 路由器侧
在路由器侧通过旁路的方式(libpcap)嗅探流量,并将伪造响应先于真实响应前发送给用户,后到的真 ...
apache的插件以动态库方式存在,通过配置动态加载;nginx插件则需要编译至nginx可执行程序中,openresty也是如此,直接将lua解释器嵌入至nginx,使其具备解析lua脚本能力。nginx 内置插件目录在 src/http/modules 下。
编写nginx插件过程比较麻复杂,需要对nginx源码及数据结构有一定的了解。nginx实现了字符串,定时器,容器(HashTable,Queue,红黑树),内存池,日志,网络处理,线程等常用函数,学习价值非常高。
本文是来自淘宝Tengine文档,根据自己理解做了一些注释。
一. hello world模块
#inc ...
Lua 提供了强大的API用于与C间的交互,两者值间的传递通过虚拟堆栈来实现。
一. 实现Lua解释器
/**
* Lua 解释器
*/
int main( int argc, char **argv )
{
// 初始化解释器
lua_State *pl = luaL_newstate();
// 加载基础库,包括io,os, ...
Lua 是巴西研究小组开发的一个灵活小巧的脚本语言,整个编译后的静态库才400多K,便于嵌入应用程序中,扩展程序功能。常用于游戏开发中,nginx的openresty项目也让lua更加流行。
Lua语法与python比较类似,支持自动垃圾回收,面向对象编程。
一. 扩展lua接口
lua没有提供sleep()和msleep()实现,我们可以提供动态库给lua调用,代码如下:
#include <unistd.h>
#include "lua.h"
#include "lualib.h"
#include " ...
Java反射机制指的是程序在运行时能够获取自身的信息;它能动态截获或改写程序的行为。
1. 单例模式漏洞
/**
* 懒汉式单例模式
*/
public class Singleton {
private static Singleton instance = null;
private Singleton() {
}
public static synchronized Singleton getInstance() {
if( instance == null ){
instance = new Singleton();
...
windows下wireshark抓包经常会出现"TCP segment of a reassembled PDU"提示:
可通过wireshark的 Edit --> Preferences --> Protocols/TCP --> Allow subdissector to reassemble TCP streams 取消勾选该选项可消除提示:
网上大部分转载文章都在争论显示TCP segment of a reassembled PDU的ACK序号是一样的,所以显示提示,其实与ACK没啥关系。
问题的关键 ...
通常webapi实现通过http get/post请求,返回文本型的json,xml等字符串。本文以Tomcat8为web服务器,借助protobuf框架,响应二进制数据。
由于protobuf协议能跨语言,我们可以用java servlet实现服务端,C/C++实现客户端,达到各模块解耦目的。双方需设置ContentType为application/x-protobuf。
1. 准备proto文件
package qwd.kettas;
// 请求结构
message CTestReq
{
optional uint32 ShopId = ...
protobuf 是谷歌出品一款高性能序列化框架,优点序列化后报文数据小,支持多种多种编程语言(c/c++,java,php,python等主流语言),缺点二进制不可读这倒不重要。
一. 安装
下载源码编译
二. 开发流程
2.1 准备helloworld.proto文件
package com;
message helloworld{
required int32 id = 1;
required string str = 2;
optional int32 age = 3;
}
Required 必须字段
...