当前位置:  编程技术>软件工程/软件设计
本页文章导读:
    ▪NLP中文信息处理---正向最大匹配法分词      弄了几天正向最大匹配法分词,终于弄完了吧。Python写的。Python确实是一门好语言,写起来很简单、顺手。 一、关于正向最大匹配法分词 中文分词(Chinese Word Segmentation)指的是将一个汉字序列.........
    ▪Azkaban源码阅读之AzkabanApplication       Azkaban是一个Hadoop批处理调度器,可以通过访问其前台展示页面来进行部署、运行job等操作。 //IndexServlet.java @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) thro.........
    ▪处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一      在做机房收费系统时,遇到这样一个问题:登陆系统时,在B层的登陆函数UserLogin_BLL()中调用了D层的两个函数—判断用户是否存在IsUserExist_DA(),验证密码是否正确CheckPassWord_DA()。在D层的这两个方法.........

[1]NLP中文信息处理---正向最大匹配法分词
    来源: 互联网  发布时间: 2013-10-30

弄了几天正向最大匹配法分词,终于弄完了吧。Python写的。Python确实是一门好语言,写起来很简单、顺手。

一、关于正向最大匹配法分词

中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。

正向最大匹配法:

例子: 将句子 ’ 今天来了许多新同事 ’ 分词。  设最大词长为5

今天来了许
今天来了
今天来
今天  ====》 得到一个词 – 今天
来了许多新
来了许多
来了许
来了
来   ====》 得到一个词 – 来
了许多新同
了许多新
了许多
了许
了   ====》 得到一个词 – 了
许多新同事
许多新同
许多新
许多 ====》得到一个词 – 许多
新同事
新同
新   ====》得到一个词 – 新
同事 ====》得到一个词 – 同事


最后正向最大匹配的结果是:/今天/来/了/许多/新/同事/


二、正向最大匹配分词算法



三、语料库的处理与算法的输入


语料库的处理流程:


输入:人民日报语料库199801.txt

输出:dict.txt词表文件


分词算法:

输入:将dict.txt处理后得到的list集,以及最大词长;待分词的句子

输出:分词后的句子


作者:xn4545945 发表于2013-3-26 10:55:08 原文链接
阅读:0 评论:0 查看评论

    
[2]Azkaban源码阅读之AzkabanApplication
    来源: 互联网  发布时间: 2013-10-30

Azkaban是一个Hadoop批处理调度器,可以通过访问其前台展示页面来进行部署、运行job等操作。


//IndexServlet.java
 
   @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        /* set runtime properties from request and response */
        super.setRuntimeProperties(req, resp);

        AzkabanApplication app = getApplication();
        String action = getParam(req, "action");
        if ("loadjobs".equals(action)) {
        	resp.setContentType("application/json");
        	String folder = getParam(req, "folder");
        	resp.getWriter().print(getJSONJobsForFolder(app.getAllFlows(), folder));
        	resp.getWriter().flush();
        	return;
        }
        else if("unschedule".equals(action)) {
            String jobid = getParam(req, "job");
            app.getScheduleManager().removeScheduledJob(jobid);
        } else if("cancel".equals(action)) {
            cancelJob(app, req);
        } else if("schedule".equals(action)) {
            String redirect = scheduleJobs(app, req, resp);
            if (!redirect.isEmpty()) {
            	resp.sendRedirect(redirect);
            	return;
            }
        } else {
            throw new ServletException("Unknown action: " + action);
        }
        resp.sendRedirect(req.getContextPath());
    }

看文件名就可以看出了这个是整个系统运行的源头,一切从这里开始. . . . . . .


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


AzkabanApplication中是一系列用于整个系统初始化的代码,接下来就来看一下吧~


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


    public AzkabanApplication(List<File> jobDirs, File logDir, File tempDir, boolean enableDevMode) throws IOException {
        this._jobDirs = Utils.nonNull(jobDirs);
        this._logsDir = Utils.nonNull(logDir);
        this._tempDir = Utils.nonNull(tempDir);

        if(!this._logsDir.exists())
            this._logsDir.mkdirs();

        if(!this._tempDir.exists())
            this._tempDir.mkdirs();

        for(File jobDir: _jobDirs) {
            if(!jobDir.exists()) {
                logger.warn("Job directory " + jobDir + " does not exist. Creating.");
                jobDir.mkdirs();
            }
        }

        if(jobDirs.size() < 1)
            throw new IllegalArgumentException("No job directory given.");
        /**
         * 加载默认的属性文件
         * 实际上只用.properties为后缀的文件
         */
        Props defaultProps = PropsUtils.loadPropsInDirs(_jobDirs, ".properties", ".schema");

        /**
         * 主要功能就是加载HADOOP_HOME
         */
        _baseClassLoader = getBaseClassloader();

        String defaultTimezoneID = defaultProps.getString(DEFAULT_TIMEZONE_ID, null);
        if (defaultTimezoneID != null) {
        	DateTimeZone.setDefault(DateTimeZone.forID(defaultTimezoneID));
        	TimeZone.setDefault(TimeZone.getTimeZone(defaultTimezoneID));
        }
        
        /**
         * 由于Azkaban支持锁shezhi,在这里进行锁管理的初始化
         */
        NamedPermitManager permitManager = getNamedPermitManager(defaultProps);
        /**
         * 初始化Azkaban支持的job类型
         */
        JobWrappingFactory factory = new JobWrappingFactory(
                permitManager,
                new ReadWriteLockManager(),
                _logsDir.getAbsolutePath(),
                "java",
                new ImmutableMap.Builder<String, Class<? extends Job>>()
                 .put("java", JavaJob.class)
                 .put("command", ProcessJob.class)
                 .put("javaprocess", JavaProcessJob.class)
                 .put("pig", PigProcessJob.class)
                 .put("propertyPusher", NoopJob.class)
                 .put("python", PythonJob.class)
                 .put("ruby", RubyJob.class)
                 .put("script", ScriptJob.class).build());

        _hdfsUrl = defaultProps.getString("hdfs.instance.url", null);
        _jobManager = new JobManager(factory,
                                     _logsDir.getAbsolutePath(),
                                     defaultProps,
                                     _jobDirs,
                                     _baseClassLoader);

        _mailer = new Mailman(defaultProps.getString("mail.host", "localhost"),
                              defaultProps.getString("mail.user", ""),
                              defaultProps.getString("mail.password", ""));

        String failureEmail = defaultProps.getString("job.failure.email", null);
        String successEmail = defaultProps.getString("job.success.email", null);
        int schedulerThreads = defaultProps.getInt("scheduler.threads", 50);
        _instanceName = defaultProps.getString(INSTANCE_NAME, "");
        
        final File initialJobDir = _jobDirs.get(0);
        File schedule = getScheduleFile(defaultProps, initialJobDir);
        File backup = getBackupFile(defaultProps, initialJobDir);
        File executionsStorageDir = new File(
                defaultProps.getString("azkaban.executions.storage.dir", initialJobDir.getAbsolutePath() + "/executions")
        );
        if (! executionsStorageDir.exists()) executionsStorageDir.mkdirs();
        /**
         * 获得上次启动Azkaban时执行的最大jobId
         */
        long lastExecutionId = getLastExecutionId(executionsStorageDir);
        logger.info(String.format("Using path[%s] for storing executions.", executionsStorageDir));
        logger.info(String.format("Last known execution id was [%s]", lastExecutionId));

        final ExecutableFlowSerializer flowSerializer = new DefaultExecutableFlowSerializer();
        final ExecutableFlowDeserializer flowDeserializer = new DefaultExecutableFlowDeserializer(_jobManager, factory);

        FlowExecutionSerializer flowExecutionSerializer = new FlowExecutionSerializer(flowSerializer);
        FlowExecutionDeserializer flowExecutionDeserializer = new FlowExecutionDeserializer(flowDeserializer);

        /**
         * 初始化管理工作流的缓存,默认将cache大小设置为1000
         * 这里是整个初始化过程中的重点!!!
         */
        _allFlows = new CachingFlowManager(
                new RefreshableFlowManager(
                        _jobManager,
                        flowExecutionSerializer,
                        flowExecutionDeserializer, 
                        executionsStorageDir,
                        lastExecutionId
                ),
                defaultProps.getInt("azkaban.flow.cache.size", 1000)
        );
        _jobManager.setFlowManager(_allFlows);

        _jobExecutorManager = new JobExecutorManager(
				        		_allFlows, 
				        		_jobManager, 
				        		_mailer, 
				        		failureEmail, 
				        		successEmail,
				        		schedulerThreads
				        	);
        
        this._schedulerManager = new ScheduleManager(_jobExecutorManager, new LocalFileScheduleLoader(schedule, backup));

        /* set predefined log url prefix 
        */
        String server_url = defaultProps.getString("server.url", null) ;
        if (server_url != null) {
            if (server_url.endsWith("/"))
            	_jobExecutorManager.setRuntimeProperty(AppCommon.DEFAULT_LOG_URL_PREFIX, server_url + "logs?file=" );
            else 
            	_jobExecutorManager.setRuntimeProperty(AppCommon.DEFAULT_LOG_URL_PREFIX, server_url + "/logs?file=" );
        }

        this._velocityEngine = configureVelocityEngine(enableDevMode);
    }

这部分将系统所需的各个部分,各个属性都进行了初始化的操作。


注: 本文是由本人原创,如需引用请注明出处:     http://blog.csdn.net/zhang__bing/article/details/8721834

作者:zhang__bing 发表于2013-3-26 15:25:41 原文链接
阅读:14 评论:0 查看评论

    
[3]处理问题:变量名‘@UserName’已声明。变量名在插叙批次或存储过程内部必须唯一
    来源: 互联网  发布时间: 2013-10-30

在做机房收费系统时,遇到这样一个问题:登陆系统时,在B层的登陆函数UserLogin_BLL()中调用了D层的两个函数—判断用户是否存在IsUserExist_DA(),验证密码是否正确CheckPassWord_DA()。在D层的这两个方法中的sql语句及设置参数分别是:

(1)

'sql语句
  Dim sql As String = "SELECT COUNT(*) FROM T_UserInfo WHERE UserName=@UserName"  

'设置参数

Dim parameter As SqlParameter = New SqlParameter("@UserName", enUser.UserName)    


 

(2)

'sql语句 
Dim sql As String = "SELECT UserName,PassWord FROM T_UserInfo WHERE UserName=@UserName AND PassWord=@PassWord"

 '设置参数
  Dim parameters() As SqlParameter =
           {
                New SqlParameter("@UserName", enUser.UserName),
                New SqlParameter("@PassWord", enUser.PassWord)
           }


 


 

 (注意:两个sql语句中都有@UserName这个参数)

 

执行B层的UserLogin_BLL()函数时,就需要执行D层的IsUserExist()和CheckPassWord()两个函数,对吧!!

那么此时问题就出现了:报如下错:

 

问题在于:

在多次执行SqlCommand的时候,第一次执行没有错..第二次就会出现变量名在批查询或存储过程内部必须唯一,

这是因为以前的参数还存在事务中。所以在执行第二次时,变量无法辨别,我们只需SqlCommand执行完毕后,添加如下语句即可:cmd.Parameters.Clear();就可以了,也就是在同一事务中若要多次执行带有相同参数名的SQL语句,必须在第一次执行后清理参数.

 

如下代码:(此代码是我的sqlhelper中的一个函数)

 

作者:hanxuemin12345 发表于2013-3-26 19:08:58 原文链接
阅读:25 评论:0 查看评论

    
最新技术文章:
▪主-主数据库系统架构    ▪java.lang.UnsupportedClassVersionError: Bad version number i...    ▪eclipse项目出现红色叉叉解决方案
▪Play!framework 项目部署到Tomcat    ▪dedecms如何做中英文网站?    ▪Spring Batch Framework– introduction chapter(上)
▪第三章 AOP 基于@AspectJ的AOP    ▪基于插件的服务集成方式    ▪Online Coding开发模式 (通过在线配置实现一个表...
▪观察者模式(Observer)    ▪工厂模式 - 程序实现(java)    ▪几种web并行化编程实现
▪机器学习理论与实战(二)决策树    ▪Hibernate(四)——全面解析一对多关联映射    ▪我所理解的设计模式(C++实现)——解释器模...
▪利用规则引擎打造轻量级的面向服务编程模式...    ▪google blink的设计计划: Out-of-Progress iframes    ▪FS SIP呼叫的消息线程和状态机线程
▪XML FREESWITCH APPLICATION 实现    ▪Drupal 实战    ▪Blink: Chromium的新渲染引擎
▪(十四)桥接模式详解(都市异能版)    ▪你不知道的Eclipse用法:使用Allocation tracker跟...    ▪Linux内核-进程
▪你不知道的Eclipse用法:使用Metrics 测量复杂度    ▪IT行业为什么没有进度    ▪Exchange Server 2010/2013三种不同的故障转移
▪第二章 IoC Spring自动扫描和管理Bean    ▪CMMI简介    ▪目标检测(Object Detection)原理与实现(六)
▪值班总结(1)——探讨sql语句的执行机制    ▪第二章 IoC Annotation注入    ▪CentOS 6.4下安装Vagrant
▪Java NIO框架Netty1简单发送接受    ▪漫画研发之八:会吃的孩子有奶吃    ▪比较ASP和ASP.NET
▪SPRING中的CONTEXTLOADERLISTENER    ▪在Nginx下对网站进行密码保护    ▪Hibernate从入门到精通(五)一对一单向关联映...
▪.NET领域驱动设计—初尝(三:穿过迷雾走向光...    ▪linux下的块设备驱动(一)    ▪Modem项目工作总结
▪工作流--JBPM简介及开发环境搭建    ▪工作流--JBPM核心服务及表结构    ▪Eclipse:使用JDepend 进行依赖项检查
▪windows下用putty上传文件到远程Linux方法    ▪iBatis和Hibernate的5点区别    ▪基于学习的Indexing算法
▪设计模式11---设计模式之中介者模式(Mediator...    ▪带你走进EJB--JMS编程模型    ▪从抽象谈起(二):观察者模式与回调
▪设计模式09---设计模式之生成器模式(Builder)也...    ▪svn_resin_持续优化中    ▪Bitmap recycle方法与制作Bitmap的内存缓存
▪Hibernate从入门到精通(四)基本映射    ▪设计模式10---设计模式之原型模式(Prototype)    ▪Dreamer 3.0 支持json、xml、文件上传
▪Eclipse:使用PMD预先检测错误    ▪Jspx.net Framework 5.1 发布    ▪从抽象谈起(一):工厂模式与策略模式
▪Eclipse:使用CheckStyle实施编码标准    ▪【论文阅读】《Chain Replication for Supporting High T...    ▪Struts2 Path_路径问题
▪spring 配置文件详解    ▪Struts2第一个工程helloStruts极其基本配置    ▪Python学习入门基础教程(learning Python)--2 Python简...
▪maven springmvc环境配置    ▪基于SCRUM的金融软件开发项目    ▪software quality assurance 常见问题收录
▪Redis集群明细文档    ▪Dreamer 框架 比Struts2 更加灵活    ▪Maven POM入门
▪git 分支篇-----不断更新中    ▪Oracle非主键自增长    ▪php设计模式——UML类图
▪Matlab,Visio等生成的图片的字体嵌入问题解决...    ▪用Darwin和live555实现的直播框架    ▪学习ORM框架—hibernate(二):由hibernate接口谈...
▪(十)装饰器模式详解(与IO不解的情缘)    ▪无锁编程:最简单例子    ▪【虚拟化实战】网络设计之四Teaming
▪OSGi:生命周期层    ▪Javascript/Jquery——简单定时器    ▪java代码 发送GET、POST请求
▪Entity Framework底层操作封装(3)    ▪HttpClient 发送GET、POST请求    ▪使用spring框架,应用启动时,加载数据
▪Linux下Apache网站目录读写权限的设置    ▪单键模式的C++描述    ▪学习ORM框架—hibernate(一):初识hibernate
 


站内导航:


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

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

浙ICP备11055608号-3