当前位置:  编程技术>综合
本页文章导读:
    ▪内核模块编程---符号导出(EXPORT_SYMBOL()) (3)      1、现在有两个内核模块函数分别为: EXPORT_SYMBOL()作用是,导出本模块函数给“其他模块函数使用” (1)、calculate.c内核模块 #include <linux/init.h>             &nbs.........
    ▪delphi仿IE浏览器标签页效果演示      看到有同学提问, 自己试炼了一把, 只为实现标签页效果, 未作细化和完善工作. 路过的同学多多指教 -------------------------------------------------------------- a.html <!DOCTYPE html PUBLIC "-//W3C//DTD XH.........
    ▪Grails中为静态资源设置过滤器      今天做了个上传文件功能的雏形,发现上传后的文件(URI)不受Grails的过滤器控制,用户不登陆也可以访问到这些资源,这自然就不安全咯。 开始还以为是uri匹配的不对,后来查阅文档才明.........

[1]内核模块编程---符号导出(EXPORT_SYMBOL()) (3)
    来源: 互联网  发布时间: 2013-11-10

1、现在有两个内核模块函数分别为:

EXPORT_SYMBOL()作用是,导出本模块函数给“其他模块函数使用”

(1)、calculate.c内核模块

#include <linux/init.h>                                
#include <linux/module.h>                              
MODULE_LICENSE("GPL");                                                                
int add_integar(int a,int b)                                
{                                
return a+b;                             
}                               
int sub_integar(int a,int b)                                
{                                
return a-b;                             
}                            
static int __init sym_init()
{
    return 0;
}
static void __exit sym_exit()
{


}
module_init(sym_init);
module_exit(sym_exit);
/* EXPORT_SYMBOL(add_integar); */
/* EXPORT_SYMBOL(sub_integar); */

(2)、hello.c内核模块

#include <linux/module.h>
#include <linux/init.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("David Xie");
MODULE_DESCRIPTION("Hello World Module");
MODULE_ALIAS("a simplest module");
extern int add_integar(int a,int b); 
extern int sub_integar(int a,int b);
static int __init hello_init()
{
    int res = add_integar(1,2);   // “ hello.c内核模块” 引用 “calculate.c内核模块”
    return 0;
}
static void __exit hello_exit()
{
    int res = sub_integar(2,1);  //
}
module_init(hello_init);
module_exit(hello_exit);

说明:使用cat /proc/kallsyms | grep add_integar 查看导出文件

kallsyms文件中“记录所有输出到系统中的函数”,供其他模块调用

2、Makefile 文件如下

ifneq ($(KERNELRELEASE),)
obj-m := hello.o calculate.o
else
KDIR := /lib/modules/2.6.18-53.el5/build
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers

endif

作者:quannii 发表于2013-1-9 0:34:14 原文链接
阅读:48 评论:0 查看评论

    
[2]delphi仿IE浏览器标签页效果演示
    来源: 互联网  发布时间: 2013-11-10

看到有同学提问, 自己试炼了一把, 只为实现标签页效果, 未作细化和完善工作.


路过的同学多多指教

--------------------------------------------------------------

a.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<label>btn
<input id="aa" type="button" onclick="location='http://www.google.com'" name="Submit" value="提交" />
</label>
<a id="bb" href=/blog_article/"http_/www.baidu.com">ahref</a>/index.html
<br />
<label>btn
<input id="aa" type="button" onclick="" name="Submit" value="提交" />
</label>
<a href=/blog_article/"http_/so.com" target="_blank">so</a>
</body>
</html>

单元文件

unit Unit11;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, OleCtrls, SHDocVw, StdCtrls, ComCtrls, ExtCtrls;

type
  TForm11 = class(TForm)
    pgc1: TPageControl;
    procedure FormCreate(Sender: TObject);
  private
    function NewWindow(const URL : string = '') : TWebBrowser;
    procedure MyBeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
      var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
      var Cancel: WordBool);
    procedure MyNewWindow2(ASender: TObject; var ppDisp: IDispatch;
      var Cancel: WordBool);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}
function TForm11.NewWindow(const URL : string = '') : TWebBrowser;
var
  aTab : TTabSheet;
begin
  aTab := TTabSheet.Create(pgc1);
  aTab.PageControl := pgc1;
  aTab.Caption := 'tab' + IntToStr(pgc1.PageCount);
  pgc1.ActivePage := aTab;
  aTab.Align := alClient;

  result := TWebBrowser.Create(self);
  aTab.InsertControl(result);
  result.Align := alClient;
  result.OnBeforeNavigate2 := MyBeforeNavigate2;
  result.OnNewWindow2 := MyNewWindow2;
  if URL <> '' then
    result.Navigate(url);
end;

procedure TForm11.FormCreate(Sender: TObject);
begin
  NewWindow(ExtractFilePath(Application.ExeName)+'a.html');
end;

procedure TForm11.MyNewWindow2(ASender: TObject; var ppDisp: IDispatch;
  var Cancel: WordBool);
begin
  //新链接事件处理
  ppDisp := NewWindow().DefaultInterface;
end;

procedure TForm11.MyBeforeNavigate2(ASender: TObject; const pDisp: IDispatch;
  var URL, Flags, TargetFrameName, PostData, Headers: OleVariant;
  var Cancel: WordBool);
begin
  //Todo 事务处理
end;

end.


界面文件

object Form11: TForm11
  Left = 0
  Top = 0
  Caption = 'Form11'
  ClientHeight = 461
  ClientWidth = 769
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object pgc1: TPageControl
    Left = 0
    Top = 0
    Width = 769
    Height = 461
    Align = alClient
    TabOrder = 0
    ExplicitTop = 56
    ExplicitHeight = 405
  end
end






作者:simonhehe 发表于2013-1-9 1:12:30 原文链接
阅读:0 评论:0 查看评论

    
[3]Grails中为静态资源设置过滤器
    来源:    发布时间: 2013-11-10
今天做了个上传文件功能的雏形,发现上传后的文件(URI)不受Grails的过滤器控制,用户不登陆也可以访问到这些资源,这自然就不安全咯。

开始还以为是uri匹配的不对,后来查阅文档才明白,Grails的过滤器只对controller有效,对静态资源无能为力(包括网站的各种图标)
引用
Static resources aren't served by a controller, so Grails filters (which are wrappers for Spring controller interceptors) won't fire for requests for them.


解决办法,回归原本
1. 在src/java或src/groovy下创建一个过滤器,可以让它什么都不做
package myoa

import javax.servlet.*

class StaticFilter implements Filter {
    @Override
    void init(FilterConfig filterConfig) {
        println('StaticFilter init')
    }

    @Override
    void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
        println('StaticFilter doFilter')
    }

    @Override
    void destroy() {
        println('StaticFilter destroy')
    }
}

2. 创建配置文件
grails install-templates
编辑之
src/templates/war/web.xml
   <filter>
        <filter-name>staticFilters</filter-name>
        <filter-class>myoa.StaticFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>staticFilters</filter-name>
        <url-pattern>/file-store/*</url-pattern>
    </filter-mapping>

这样就做好了一个最简单的静态资源过滤器,uri在file-store文件夹的所有资源将被禁止访问。

3. 再进一步,可以完善这个doFilter功能,其实这就是Grails的过滤器的本质。 这里倒是有了个小心得,越本质的东西,看起来复杂,理解起来容易(好比是Servlet);封装过的东西,用起来简单,理解起来困难(好比是Grails)。所以要两者兼顾,先实用主义,把东西先做出来,然后慢慢体会最本质的东西,好歹现在都是open source的,看源码比看文档来得更透彻。
void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chain) {
        println('StaticFilter doFilter')

        HttpServletRequest request = (HttpServletRequest) servletRequest
        HttpServletResponse response = (HttpServletResponse) servletResponse
        HttpSession session = request.getSession(false) //若存在会话则返回该会话,否则返回NULL

        if (session?.getAttribute('loginUser')) {
            chain.doFilter(servletRequest, servletResponse);//放行。让其走到下个链或目标资源中
        } else {
            println('please login')
            response.sendRedirect(request.getContextPath() + "/user/login")
        }
    }

已有 0 人发表留言,猛击->>这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—




    
最新技术文章:
▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3