多线程应用之批量数据处理

2016年7月24日 没有评论

我们都知道多线程是为了加快数据处理的,但至于怎么用,因为在工作中,我一直很少用,所以对多线程不是很了解。之前处理一个功能时,由于没有经验,导致速度很慢,前一段时间经老大提示,可以用多线程解决,突然发现原来多线程可以这么用可以来处理这一类问题,今天记录一下,作为笔记也作为一个给读者的参考,好了先说一下问题:公司的业务的业务不仅分模块而且是分库分表的,这样就导致一个问题,当我们要查询一个数据时,不能连表查询,不能只通过一个接口获得数据,最容易想到的常规做法就是:


	public List<Data> queryDatas() {
		List<Data> d[......]

Read more

分类: Java 标签:

全文索引服务solr入门四之solr集群搭建与应用

2016年7月10日 没有评论

经过前面几篇文章的努力,我们的solr服务终于跑起来了,可以对外提供服务了,虽然有一点小瑕疵(对中文支持不是很好,但可以通过IK分词来解决,示例可以看老夫之前的这篇文章),但还是存在一个致命的问题:单点!对于现代互联网公司,这个一个不可忍受的缺点,所以本节我们就来解决这个问题,在搭建集群之前,我们先看看要搭建的集群的目标:

goal

从这张图上,我们可以清晰看到我们需要三台zookeeper服务器和四台solr服务器,一共七台服务器(实际上老夫去哪找那么多集群,所以使用伪分布式的方式搭建集群,即在同一台服务器上创建多个实例模拟集群),确定了目标之后,我们就开始搭建我们的集群。

四. zookee[……]

Read more

分类: 全文索引 标签: , , ,

全文索引服务solr入门三之solrJ的应用

2016年6月26日 没有评论

三. 使用solrJ和spring集成

上一篇上上一篇文章中我们先搭建了一个solr服务器和学习了solr服务器后台的使用,这一次我们将直接进入实战:和spring集成,在继承之前我们先看看所需要的solr的jar文件都是那些(spring的那些大家就自己玩吧,我相信都知道的)

1. 所需的jar文件

直接上图片,就是图上的这些图片,当然大家可以自己找maven依赖(jar文件这个最简单了,没有的话一定会报classnotfoundException,加上就好了)

solrJ1
solrJ2

2. spring的配置


<?xml version="1.0" encodin[......]

Read more

分类: 全文索引 标签: , , ,

全文索引服务solr入门二之认识管理后台

2016年6月11日 没有评论

二. 认识solr管理后台

上一篇文章中我们搭建起来的其实就是一个solr管理后台,这节课我们就是来简单认识他,具体的操作当然由大家自己试验了。下面我们先直接选择左侧的默认collection1你会看到下面出来很多东西,其中有几个比较重要:Analyzer、Documents、Query,下面我们认识第一个:Analyzer。

1. 认识Analyzer

查看当前索引库中的字段列表,及分词效果。

analyzer

①. 域、字段列表:所有的域都是定义在schema.xml配置文件中。在solr中域必须是先定义后使用。
如果想修改域的定义及自定义域需要修改schema.xml。
②. 查看域的分词效果[……]

Read more

分类: 全文索引 标签: ,

全文索引服务solr入门一之单机版服务器搭建

2016年5月29日 没有评论

一直对全文索引很感兴趣,但由于工作上一直没用到,所以就没有上心去看,有一次闲着无聊,偶然发现传智播客的公开课上有一节讲这个的,听了一下还不错,于是整理成笔记,供老夫和其他朋友需要的时候参考。
老夫相信看这篇文章的人对solr一定有所了解,不了解的请用Google百度一下,所以虽然是一个系列,但这里老夫只会讲怎么用,争取让看了这个系列文章的人能里面先跑起来,好了,下面直接切入主题。

一. solr的安装与配置

1. solr的运行环境

① . 需要安装jdk,要求jdk的版本为1.7.0以上版本。
② . Tomcat要求7以上版本。
③ . 操作系统:linux、windows都可以。[……]

Read more

分类: 全文索引 标签: ,

DFA算法应用之敏感词过滤

2016年5月2日 没有评论

公司在做一个社区应用,由于我朝特色,众所周知社区应用有一个很重要的就是要进行敏感词的过滤,这块由一个同事负责,听他说,有一个算法叫DFA,可以做这个,个人比较感兴趣,就到网上查了一些资料,有一篇文章写的特别好,老夫的这篇文章就是把其核心的部分(就是怎么应用,老夫一直有一个观点,理论弱于实践,理论懂得再多不会用一点用没有,所以老夫认为应用是核心)摘出来,留作笔记,如果有想了解其原理的,请点击下方的参考资料,好了,既然是应用那么就直接上代码了:


package cn.bridgeli.dfa;

import java.util.HashSet;
import java.util.Itera[......]

Read more

分类: Java 标签: , ,

记一次线上操作bug

2016年4月24日 没有评论

身为程序猿,可以说天天都会遇到bug,今天没为什么记下这次bug呢?说来惭愧,因为这次bug是由于自己不仔细没有仔细检查没有测试就对线上数据下手造成的,一方面是记下这个bug的由来,修复方法和犯下的失误的地方,另一方面也是留下记录警示自己操作线上数据一定要小心再小心,还有就是不要对自己过于自信,测试很重要。
先说一下bug的缘由,19号晚上我们上线了一个新功能,有一个功能模块是另外一个同事负责的,所以对其实现不是很了解,但数据导入有老夫负责,所以数据导入的时候,有一个结束时间没有考虑清楚,只有日期没有时间(产品经理和另一位同事当时也没有给我说),所以数据库里面结束时间变成了默认的“00:00:[……]

Read more

分类: Java 标签:

Spring和websocket整合应用示例(下)

2016年4月4日 没有评论

上篇中,我们已经实现了websocket,但还有一个核心的业务实现类没有实现,这里我们就实现这个业务核心类,因为老夫参与的这个系统使用websocket发送消息,所以其实现就是如何发送消息了。

7. NewsListenerImpl的实现


package cn.bridgeli.websocket;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import cn.bridgeli.DateUtil;
import cn.bridgeli.enumeration.PlatNewsCategoryTy[......]

Read more

分类: Java 标签:

Spring和websocket整合应用示例(上)

2016年4月4日 没有评论

嗯,这次真的仅仅是一个入门教程,因为老夫表示自己也不会。近期老夫参与开发公司的一个CRM系统,系统中有很多消息的推送,由一个同事负责,其用到了websocket技术,老夫比较感兴趣,删繁就简,整理了一个教程,留作自己笔记,因很多原理老夫也是不甚了了,以备将来用到了有资料可查。

1. maven依赖


<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>[......]

Read more

分类: Java 标签:

MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 2 无效

2016年3月20日 4 条评论

今天这篇文章比较简单,写一个老夫近期工作中遇到的一个问题,这个问题困扰了老夫几个月了,虽然借助强大的Google百度了好久,但一直没有彻底解决,一直感觉挺简单一问题,也挺常见的一问题(网上问这个问题的还挺多),怎么就没有一个靠谱点的解决方案呢,刚好上个周呢时间稍有空闲,于是仔细研究了一下,终于找到了问题的根源,然后同事一言点醒梦中人,豁然开朗,一举解决,所以记录一下,先说一下异常:MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 2 无效,详细的堆栈信息如下:


严重: StandardWrapper.Throwable
org.sprin[......]

Read more