`
tcspecial
  • 浏览: 896205 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
  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接口

    博客分类:
  • 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 必须字段 ...
Global site tag (gtag.js) - Google Analytics