Dat

基于java的中文分词工具ANSJ

淺唱寂寞╮ 提交于 2021-02-18 16:00:13
ANSJ 这是一个基于n-Gram+CRF+HMM的中文分词的java实现. 分词速度达到每秒钟大约200万字左右(mac air下测试),准确率能达到96%以上 目前实现了.中文分词. 中文姓名识别 . 用户自定义词典,关键字提取,自动摘要,关键字标记等功能 可以应用到自然语言处理等方面,适用于对分词效果要求高的各种项目. 分词的目的是创建一个高稳定可用的中文分词工具,可以利用到各种需要文字处理的场景中下面简单介绍一下Ansj中文分词的主要算法及特点. 数据结构 高度优化Trie树 在用户自定义词典以及各种类似于Map的场景中,大量使用的一个工具,众所周知,Trie具有高速的文本扫描能力,和较低的内存占用率,是最好的AC机之一,弦外之音,在我的认知范围内,貌似没有之一.相比其它结构在性能和构造上做到了很好的平衡,但是在java中,大量构建map尤其是hashmap,是一个非常昂贵的操作,通过对于一个map放入大量的key也注定其在自动拆箱装箱,以及解决冲突,大量hash匹配上做了过多的小消耗,虽然多数人认为,这种消耗属于纳秒级别的,但是对于动不动就上GB的文本来说,这个消耗是不可忽略的,所以作者在这里使用了首字母hash次字二分的方式来避免过多的消耗内存,也正应为有了这个机制.可以保证Ansj加载更多的用户自定义词典,有人问我具体的数字.大约500万词,1Gde 内存

Java笔试题

痴心易碎 提交于 2021-02-17 22:52:31
精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑话我们这些未出校门的孩纸们,但是IT公司就喜欢考这些基础的东西,所以为了能进大公司就~~~当复习期末考吧。花了不少时间整理,在整理过程中也学到了很多东西,请大家认真对待每一题~~~ 下面都是我自己的答案非官方,仅供参考,如果有疑问或错误请一定要提出来,大家一起进步啦~~~ 1. 下面哪些是Thread类的方法() A start() B run() C exit() D getPriority() 答案:ABD 解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。 2. 下面关于java.lang.Exception类的说法正确的是() A 继承自Throwable B Serialable CD 不记得,反正不正确 答案:A 解析:Java异常的基类为java.lang.Throwable,java.lang.Error和java.lang.Exception继承 Throwable

将 Bash 脚本改成 Bat 脚本 转载

耗尽温柔 提交于 2021-02-15 10:47:53
https://gmt-china.org/blog/bash2bat/ 社区提供的 GMT 绘图脚本多是基于 Linux 下的 bash 脚本,有相当一部分用户并不熟悉 bash,因此有必要介绍如何将 bash 脚本改成 Windows 下可用的 bat 脚本。 简单来说,将 bash 脚本改成 bat 脚本需要注意以下几点: 注释符号: # => rem 设置变量: PS=MAP.PS => set PS=MAP.PS 引用变量: $PS => %PS% 删除文件: rm gmt.* => del gmt.* 使用编辑器搜索替换功能可以很方便地实现转换。 比如搜索 # 并全部替换为 rem ,搜索 $PS 、 $R 、 $J 分别替换为 %PS% 、 %R% 、 %J% 。 当然还有一些比较复杂的语句就需要你对 bat 脚本语言比较熟悉。 比如 bash 下的嵌套命令可以将一条命令的结果作为变量使用: T1=$(gmt grdinfo world6m.grd -T1000) gmt makecpt -Crainbow $T1 > 1.cpt    而在 bat 下可以用如下两种方法来实现: rem 方法1 for /f %%i in ('gmt grdinfo world6m.grd -T1000') do set T1=%%i gmt makecpt -Crainbow

基于FPGA的RGB图像转灰度图像算法实现

筅森魡賤 提交于 2021-02-12 04:20:54
一、前言   最近学习牟新刚编著《基于FPGA的数字图像处理原理及应用》的第六章直方图操作,由于需要将捕获的图像转换为灰度图像,因此在之前代码的基础上加入了RGB图像转灰度图像的算法实现。                                                                              2020-02-29 10:38:40 二、RGB图像转灰度图像算法原理   将彩色图像转换为灰度图像的方法有两种,一个是令RGB三个分量的数值相等。输出后便可以得到灰度图像,另一种是转换为YCbCr格式,将Y分量提取出来,YCbCr格式中的Y分量表示的是图 像的亮度和浓度, 所以只输出Y分量,得到图像就是灰度图像 。   YCbCr是通过有序的三元组来表示的,三元由Y(Luminance)、Cb(Chrominace-Blue)和Cr(Chrominace-Red)组成,其中Y表示颜色的明亮度和浓度,而Cb和Cr则分别表示颜色的蓝色浓度 偏移量和红色浓度偏移量。人的肉眼对由YCbCr色彩空间编码的视频中Y分量更敏感,而Cb和Cr的微小变换不会引起视觉上的不同。根据该原理,通过对Cb和Cr进行子采样来减小图像的数据量。使得 图像对存储需求和传输带宽的要求大大降低,从而达到完成图像压缩的同时,也保证了视觉上几乎没有损失的效果

机器人手眼标定

和自甴很熟 提交于 2021-02-11 16:03:47
机器人和摄像机的手眼标定问题分为两类构型: eye-to-hand,摄像机固定,与机器人基坐标系相对位置不变。 eye-in-hand,摄像机安装在机器人末端,随着机器人一起移动。 所谓手眼系统,就是人眼睛看到一个东西的时候要让手去抓取,就需要大脑知道眼睛和手的坐标关系。如果把大脑比作B,把眼睛比作A,把手比作C,如果A和B的关系知道,B和C的关系知道,那么C和A的关系就知道了,也就是手和眼的坐标关系也就知道了。 相机知道的是像素坐标,机械手是空间坐标系,所以手眼标定就是得到像素坐标系和空间机械手坐标系的坐标转化关系。 在实际控制中,相机检测到目标在图像中的像素位置后,通过标定好的坐标转换矩阵将相机的像素坐标变换到机械手的空间坐标系中,然后根据机械手坐标系计算出各个电机该如何运动,从而控制机械手到达指定位置。这个过程中涉及到了图像标定,图像处理,运动学正逆解,手眼标定等。 常用的标定方法有:九点标定 九点标定: 九点标定直接建立相机和机械手之间的坐标变换关系。 让机械手的末端去走这就9个点得到在机器人坐标系中的坐标,同时还要用相机识别9个点得到像素坐标。这样就得到了9组对应的坐标。 由下面的式子可知至少需要3个点才能求出标定的矩阵。 (1)、标定,Halcon中进行9点标定的算子 % 前面求出图像坐标 area_center(SortedRegions,Area,Row

ICLR2020 | 深度自适应Transformer

人盡茶涼 提交于 2021-02-08 14:57:35
作者 | kaiyuan 整理 | NewBeeNLP 一篇来自ICLR2020,facebook人工智能实验室的论文,关于改进Transformer推理速度的。 论文地址: https://arxiv.org/abs/1910.10073 写在前面 大模型在困难任务上表现非常好,而小模型也可以在比较简单的任务上表现出色。但是目前大模型在应用简单任务时的运算量同复杂任务一样,这就导致了不必要的资源浪费,此外还会导致推理速度变慢。对此,提出了一种 depth-adaptive transformer ,可以在推理阶段针对不同的token自动选择在合适的层进行停止并输出,在不损失模型效果的同时大大提高推理速度。 Anytime Prediction 传统的transformer decoder,所有的token都需要经过N个block,且最后的分类器是唯一的。但是一些简单的任务并不需要推理如此多步,可能在第 层模型已经得出结果了,再往上走并没有意义,于是可以选择在第 层就输出,这称为 「动态计算(Dynamic Computation)」 , 并且,每一层的分类器 可以选择不同或者相同。接下去就是怎么去实现上面的想法,即对于每个输入token,如何自动确定其在哪一层退出?文中提出了两种策略: Aligned training 对齐训练会同时优化所有分类器,并假设当前状态之前的所有状态

传奇病毒劫持流量手法分析

隐身守侯 提交于 2021-02-08 13:22:07
技术点 通过TDI过滤、DNS劫持、HTTP(s)注入、HOSTS重定向等技术手法篡改用户系统网络数据包,将正常网页访问劫持引流至指定私服网站,并利用安全软件云查杀数据包屏蔽、关机回调重写等手段实现对抗查杀。 技术细节 A、注册TDI回调函数,过滤收发包 病毒驱动加载后,对TDI_SEND和TDI_SET_EVENT_HANDLER进行了处理,前者主要是负责网络数据的发包,后者则是负责对接收到网络数据进行处理,对这两个地方进行过滤处理之后,带来的效果就是访问A域名,实际打开的却是B网站。 在TDI_SEND中,通过检测360与其云端的通讯时的关键字段“x-360-ver:”,中断云查询,从而造成云查杀的失效。在TDI_SET_EVENT_HANDLER中,收到符合规则的请求响应数据后,病毒直接修改数据包,嵌入相应的HTML框架代码进行劫持 B、设置IE代理,劫持HTTP访问 设置IE代理的目的,猜测是为了在病毒驱动被杀软清理后,依旧能够长期劫持网站访问所用。IE的代理配置信息由云端实时下发。 C、创建关机回调,劫持DNS和自更新 下载劫持的DNS配置信息,然后在关机回调中设置电脑的DNS,从而完成DNS的修改劫持 D、 创建映像加载回调,拦截其它病毒运行 在映像加载回调中,为了确保被感染的电脑能够被自己成功劫持,当检测到当前加载的是驱动程序时,还会对比签名是否为黑名单中的签名

BMW EDI项目连接测试问题及解决思路

╄→гoц情女王★ 提交于 2021-02-03 21:22:09
宝马(BMW)是全球汽车市场的豪华品牌之一,百年来,宝马汽车由最初的飞机引擎生产厂发展成为以高级轿车为主导,并生产享誉全球的飞机引擎、越野车和摩托车的企业集团,名列世界汽车公司前列。BMW集团拥有BMW、MINI和Rolls-Royce(劳斯莱斯)三个品牌。这些品牌涵盖了从小型汽车到顶级豪华轿车多个高端汽车消费市场,使BMW集团成为世界上唯一一家专注于豪华汽车和摩托车的制造商。 知行软件作为业内领先的EDI解决方案及EDI产品提供商,已帮助国内诸多供应商成功对接BMW EDI系统。此前的项目中,知行软件根据客户自身的信息化现状,分别提供中间数据库、Excel、自定义文件格式等解决方案以供选择。 无论是何种解决方案,想要进行供应商与BMW之间的EDI传输,需要先建立与BMW的EDI连接通道,即进行连接测试。这是EDI传输的第一步,也是最重要的一步。那么在以往与BMW对接的EDI项目中,BMW对供应商都有什么连接方面的要求?以往的项目连接测试过程中都出现过哪些问题,以及解决思路是什么?这篇文章将逐一解答您的疑惑。 BMW对于连接测试的要求 1.传输协议:OFTP、SFTP。 支持OFTP2.0 /SFTP传输协议且通过ODETTE认证的EDI系统,如,知行EDI系统。 对接BMW:需要配置BMW的SSID和SFID,如果您使用的是知行EDI系统

C语言文件读写操作总结

百般思念 提交于 2021-02-02 05:01:59
参考:http://blog.csdn.net/strongwangjiawei/article/details/7786085/ 一.非标准文件的读写 不带缓冲的 1.文件的打开和关闭 open()函数的作用是打开文件,其调用格式为: int open(char *filename, int access); 该函数表示按access的要求打开名为filename的文件,返回值为文件描述字,其中access有两部分内容: 基本模式和修饰符, 两者用" "("或")方式连接。修饰符可以有多个, 但基本模式只能有一个。 access的规定 基本模式 含义 修饰符 含义 O_RDONLY 只读 O_APPEND 文件指针指向末尾 O_WRONLY 只写 O_CREAT 文件不存在时创建文件, 属性按基本模式属性 O_RDWR 读写 O_BINARY 打开一个二进制文件 O_TEXT 打开一个文字文件 open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 close()函数的作用是关闭由open()函数打开的文件, 其调用格式为: int close(int handle); 该函数关闭文件描述字handle相连的文件。 2.读写函数 int read(int handle, void *buf, int count); read()函数从handle

记一次 Linux 被入侵,服务器变“矿机”全过程

余生颓废 提交于 2021-01-30 09:34:14
周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了。 不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包。 我放下酸菜馅的包子,SSH 连了一下,被拒绝了,问了下默认的 22 端口被封了。 让运维的同事把端口改了一下,立马连上去,顺便看了一下登录名 :root,还有不足 8 位的小白密码,心里一凉:被黑了! 查找线索 服务器系统 CentOS 6.X,部署了 Nginx,Tomcat,Redis 等应用,上来先把数据库全备份到本地,然后 Top 命令看了一下,有 2 个 99% 的同名进程还在运行,叫 gpg-agentd。 Google 了一下 GPG,结果是: GPG 提供的 gpg-agent 提供了对 SSH 协议的支持,这个功能可以大大简化密钥的管理工作。 看起来像是一个很正经的程序嘛,但仔细再看看服务器上的进程后面还跟着一个字母 d,伪装的很好,让人想起来 Windows 上各种看起来像 svchost.exe 的病毒。 继续排查: ps eho command -p 23374netstat -pan | grep 23374 查看 pid:23374 进程启动路径和网络状况,也就是来到了图 1 的目录,到此已经找到了黑客留下的二进制可执行文件。 接下来还有 2 个问题在等着我