python 实现 map的分词原理
Map 的作用,即数据的映射,用于把一组键值对映射成另一组新的键值对。白话就是对数据按照一定的格式进行归整。举个例子,有一遍文章,需要对文章中出现过的相同的单词进行归类,期望结果如下:将map的输出作为reduce的输入的过程就是shuffle了,这个是mapreduce优化的重点地方。
12{"1", "are" : 1}{"1", "are" : 1}
123456#encodeing=utf-8import sysfor line in sys.stdin: ss = line.strip().split(' ') for word in ss: print '\t'.join([word.strip(), '1'])
测试数据: THE_MAN_OF_PROPERTY.txt,这里存一篇网上随机找的一篇英文长篇文章。
执行命令,并打印结果: ...
spring boot 添加默认根路径跳转
同一组数据分组需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 public static void main(String[] args) { List<User> users = Arrays.asList( new User(1, "liu big big", "123456789"), new User(2, "liu big big", "987654321"), new User(3, "su xiao xiao", "55555555& ...
关于Reactor模型
核心思想:分治
看了一些 Reactor 相关的文章和资料,列举的一些 Reactor 模型的优点,包括极客时间的文章也有讲过在架构中的Reactor中的优点和缺点。但是如果不使用 Reactor 模型的一般方式是什么样子的?会有什么问题?
思想:分而治之+事件驱动1)分而治之一个连接里完整的网络处理过程一般分为accept、read、decode、process、encode、send这几步。Reactor模式将每个步骤映射为一个Task,服务端线程执行的最小逻辑单元不再是一次完整的网络请求,而是Task,且采用非阻塞方式执行。
2)事件驱动每个Task对应特定网络事件。当Task准备就绪时,Reactor收到对应的网络事件通知,并将Task分发给绑定了对应网络事件的Handler执行。
3)几个角色reactor:负责绑定管理事件和处理接口;selector:负责监听响应事件,将事件分发给绑定了该事件的Handler处理;Handler:事件处理器,绑定了某类事件,负责执行对应事件的Task对事件进行处理;Acceptor:Handler的一种,绑定了connect事件。当客户 ...
springboot打war包
spring boot 在内置了 tomcat,但是会使用到外置 tomcat 的情况。在使用外置 tomcat 时需要让 spring boot 的打包方式打成 war 包。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<build> <finalName>fund</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> < ...
spring boot 中使用 hibernate validate 校验
spring boot 中使用 Hibernate validate 进行入参字段校验,一般用于web 接口入参校验,用起来非常方便。
spring boot 的配置123456789101112131415161718192021222324252627282930313233343536373839404142import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.Valid ...
idea 自定义注释
日常开发当中,开发规范要求每个开发人员做到要必要的代码上加上注释。借助IDE可以快速的生成这些注释。
1.文件头部注释次创建新文件时会自动添加到文件头Perferences---Editor--->File and Code Templates--->Includes即是,不过这里设值类似Eclipse用 ${ }
12345/** * * @author ${USER} * @since ${DATE}. */
看效果
2.方法注释
创建 Template Group
创建 Live Template
创建 Template Groupidea 做的相当不错的,可以根据自定义注释名称来生成自己设定的注释Perferences---Editor--->Live Templates点 + 创建 Template Group 输入自己的 Template
创建 Live Template再点 + 创建 Live Temp 剩下的不用看也明白了,这里做一个模板:Abb reviation 是自定义快捷语,在代码中输入自定义名称 ...
idea 设置编译版本无效问题解决
idea 编译总是1.5处理使用 idea 时会碰到在 Project Structure 中设置了编译版本为 1.8 时,重新编译过后查看,还是1.5的问题,怎么都改不过来。这是因为 maven 的 compiler 工具的问题,两种解决方式。
1.指定 comipler 的编译版本
12345678910111213<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> < ...
解决 Cannot determine embedded database driver class for database type NONE
刚搭的新项目一启动就报错,一直就知种起不来。各种搜索以后总结两种解决方式。先看错误:
1234567Description:Cannot determine embedded database driver class for database type NONEAction:If you want an embedded database please put a supported one on the classpath. If you have database settings to be loaded from a particular profile you may need to active it (no profiles are currently active).
处理方式一:排除两个默认配置
1@SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})
结论:没用
处理方式二: 可行 ...
springboot注解 @ConfigurationProperties和@EnableConfigurationProperties的区别
区别@EnableConfigurationProperties测试发现 @ConfigurationProperties 与 @EnableConfigurationProperties 关系特别大。
@EnableConfigurationProperties 文档中解释:当@EnableConfigurationProperties注解应用到你的@Configuration时,任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。
测试发现:1.使用 @EnableConfigurationProperties 进行注册
1234567891011121314151617181920212223242526272829@ConfigurationProperties(prefix = "service.properties")public class HelloServiceProperties { ...
CommandLineRunner 指定启动顺序
这个实际是可以用来当用启动时加载某些程序,相当于以前的 static{ } 这种块。这种方式优雅的多。
12345678910@Component@Order(value=1)public class Runner1 implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("执行顺序 -> 1"); }}
12345678910@Component@Order(value=2)public class Runner2 implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.out.println("执行顺序 ...