母神小栈

一个程序媛的日常


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Spring注解

发表于 2017-08-11 | 分类于 javaweb | | 阅读次数

###注解介绍
注解有两个作用:标注和注入

  • 标注:类路径下自动扫描,减少在xml中配置bean,例如@Component,@Service
  • 注入:自动装配,需要类的地方直接加注解就可以引入该类;例如:@Autowired
  • 在spring中开启注解:\指定扫描路径
  • spring生成的注解有默认名字,为类名的首字母小写形式,如果要指定自定义的需要类似@Service(“xxx”)来指定
  • Spring中的bean,默认是singleton,即生成的对象是全局单例的,如果要改,需要@scope(“prototype”)指明,scope可以选择:singleton、prototype、request、session、global session;
  • 可以用ApplicationContext.getBean(“zoo”),来获取Zoo.java类

###常见注解分类
Spring中有如下几种分类:

  1. Spring原生:Required、Autowired、value、Qualifier、Component及其扩展的Repository、Service、Controller
  2. JSR-250:Resource、PostConstruct、Predestroy
  3. JSR-330:inject、Named、Qualifier
  4. JPA注解:PersistentContext、PersistenceUnit
  5. Springmvc注解:RequstBody、RequastParam、ResponseBody,ResponseParam,Pathvariable,ModelAttribute;
  6. springBoot注解:SpringBootApplication

###常用注解

  1. Component:标注组件,与持久层的Repository、业务层的Service、控制层的Controller功能一样,加上注解可以让Spring找到相应的类,在对组件不好分类的时候,用Component注解来标识;
  2. Autowired:是Spring的注解,自动注入类,需要Spring去配置文件中找(或者上下文找标注过的类)相应的Bean,如果找不到会报错,可以用@Autowired(required=false)来设置找不到不报错,返回null
  3. Resource:与Autowired功能相似,默认通过name来匹配,是J2EE的注解,可以指定按照type来匹配@Resource(type=xxx.class)

###Springmvc注解

  1. ResponseBody:使用在方法上,返回json格式的数据,直接输入到Http response body中;
  2. RequestBody:使用在参数前,标注对象,Spring完成对象-协议之间的转化,解析post data body,然后绑定到相应的bean上;支持application/json或者application/xml协议格式;与ResponseBody一样,是由HandlerAdapter配置的HttpMessageConverter在对象和协议之间转化的;
  3. RequstParam:获取参数,对于简单类型的绑定,对应的content-type为application/x-www-form-urlencoded,即form表单提交的数据;
  4. PathVariable:接收路径参数
    5.RestController:是Controller和Response两个注解的组合;
  5. ModelAttribute:渲染model,model可以看做是一个map,改注解的作用是用来传递和保存数据,可以使用在方法上和参数上;
    • 使用在方法上,则这个方法在@RequestMapping方法调用之前,在model中填充属性,例如填充下拉列表,用来在request的model里put(“小写开头的类名”,类名),该model就是标注方法的返回值;
    • 使用在参数上,数据绑定,将相应名称的值绑定到注解的参数bean上,绑定源查找顺序:SessionAttribute注解、ModelAttribute注解、new一个新的实例;
  6. HttpEntity,除了能获得request和response之外,能访问请求和响应头,使用getHeaders和getBody()

###参考

Spring常用注解标签详解
Spring常用注解汇总

mysql

发表于 2017-07-26 | | 阅读次数

常用json库

发表于 2017-07-26 | 分类于 javaweb | | 阅读次数

json是一种轻量级的数据交换格式,基于两种数据结构:Object(name/value pair),Array(list);json具有平台无关性,完全独立于语言/系统的文本格式;
相比于xml比较轻量级,易于机器解析和生成;可以进行压缩;

常用的json库

  • Jackson:Spring默认的json序列化工具,开源;https://github.com/FasterXML/jackson
  • Gson:内部反射类型进行序列化,Google出品:https://github.com/google/gson
  • Fastjson:接口友好,阿里巴巴出品,速度比较快,:https://github.com/alibaba/fastjson
阅读全文 »

http理解

发表于 2017-07-26 | | 阅读次数

http报文包括:request报文和response报文;每个request和respose构成一次事务;每个报文由三部分构成:起始行start line,首部header和主体data body。

常见请求类型

  • get:获得/查询某个资源,应该是安全和幂等的;
  • head:获取报文head,与get方法一样,但是不返回报文主体,通常用于确认url的有效性或者确认资源更新的日期时间;
  • post:向服务器传输数据,通常用来支持html的表单;
  • put:写入文档,类似于insert;
  • delete:删除资源
  • options:询问支持的方法
阅读全文 »

maven

发表于 2017-07-26 | 分类于 javaweb | | 阅读次数

maven是一个项目管理和综合工具,在多个开发团队合作时,maven可以设置按标准在非常短的时间内完成配置工作。

生命周期

maven有三套生命周期:clean lifecycle, default lifecycle,site lifecycle;

  • clean lifecycle: pre-clean -> clean -> post-clean

  • default lifecycle:pre-resource -> compile -> test-compile -> test -> package -> install -> deploy

  • site lifecycle:pre-site -> site -> post-site -> site-deploy

注:执行生命周期中某一阶段,会默认执行其之前的所有阶段

阅读全文 »

LSHForest判断文档相似度

发表于 2017-07-25 | 分类于 文档相似度 | | 阅读次数

LSH Forest: Locality Sensitive Hashing forest,局部敏感哈希森林, 是最近邻搜索方法的代替,排序实现二进制搜索和32位定长数组和散列,使用hash家族的随机投影方法近似余弦距离。
随机投影树,对所有的数据进行划分,将每次搜索与计算的点的数目减小到一个可接受的范围,然后建立多个随机投影树构成随机投影森林,将森林的综合结果作为最终的结果。

阅读全文 »

gensim similarity计算文档相似度

发表于 2017-07-25 | 分类于 文档相似度 | | 阅读次数

使用gensim包的models,corpora,similarities,对文档进行相似度计算,结果比较其他lda、doc2vec方法稳定。

主要步骤

  • 1.建立语料库,os.walk方法遍历文件夹中的文件
  • 2.使用分词工具(jieba)进行分词、停用词过滤
  • 3.使用corpora.Dictionary()生成字典,该方法把所有单词取一个set,并对set中每一个单词分配一个id号的map
  • 4.dictionary.doc2bow()方法把文档用稀疏向量表示。
  • 5.similarities.Similarity()方法计算相似度
  • 6.构造训练数据和测试数据
  • 7.similarity[test_corpus]返回相似度最高的similarity.num_best 个文档。
    具体参考示例:git地址
阅读全文 »

doc2vec计算文档相似度

发表于 2017-07-25 | 分类于 文档相似度 | | 阅读次数

doc2vec是基于word2vec的,word2vec对于计算两个词语的相似度效率比较好,修改了word2vec中的cbow和skip-gram模型,paragraph vector直接得到doc向量。

使用过程

  • 1.读取文件,os.walk()遍历文件夹
  • 2.构建语料库,分词,过滤停用词。用gensim.models.doc2vec.TaggedDocument() 为文档打tag
  • 3.创建model
阅读全文 »

幂等

发表于 2017-07-24 | 分类于 架构 | | 阅读次数

apache camel Idempotent

Apache camel

基于规则路由和处理的引擎,提供企业集成的java对象的实现,通过应用程序接口或DSL(domain-specific languages)来配置路由和处理规则,从一个from源头得到数据,通过process处理,再发到一个to目的地;

  • CamelContext
  • RouteBuilder
  • configure(){from().process(Processor).to();}
  • from to 称为endPoint控制端点
  • Tools for Apache Camel”可以图形化Apache Camel的规则编排过程。
  • Enterprise Integration Patterns:企业集成模式
  • endpoint都是通过URI格式进行描述的
阅读全文 »

缓存

发表于 2017-07-24 | 分类于 架构 | | 阅读次数

缓存设计

缓存设计考虑点:

  1. 存储的数据结构
  2. 缓存容量大小
  3. 缓存有效期
  4. 容量不够时的清理策略
  5. 缓存设计相关指标(命中率、命中次数、miss率等)

缓存设计过程:

  1. 全局的hash表,Key-Value键值对
  2. 提供get/put等方法来操作缓存
  3. 规定最大容量
  4. 记录缓存访问时间,决定缓存是否失效
  5. 容量不够时LRU/FIFO/LFU来做清理
  6. 每次get方法做结果统计
阅读全文 »
12
母神

母神

12 日志
3 分类
18 标签
© 2017 母神
由 Hexo 强力驱动
主题 - NexT.Pisces