领域建模之道

宏观架构方式:

在做业务架构的时候,往往有两种大类的方式:第一种自顶向下,第二种自底向上。

自顶向下

这种情况往往是架构师明确知道当前问题,直面问题去寻求一种解决方式。这种架构方式往往是在软件生命周期的中期,问题爆发期。对架构师的核心要求是:

  1. 定义清楚问题和目标, 甚至去做一些升维思考, 明确问题背后的问题。
  2. 尤其是明确目标和手段,有时候手段并不是目标。
  3. 分解问题,由轻及重, 由远及近。

继续阅读领域建模之道

计算机技术点

1、Docker ai  大数据 分布式 事务 高并发系统 

2、区块链

3、自然语言处理、图像识别、语音识别

4、原子计数atomic

5、ClassLoader

6、分布式缓存Redis;

7、消息系统 activeMq rocketMq zeromq

8、rpm : hfs Dubbo dubbox

9、定时任务:quartz

10、多线程,并发、线程间通讯、exchange

11、分布式计算, hadoop

12、spring boot 注解,Spring cloud 

13、zookeeper

14、NLP

15、python

16、幂等问题

17、memcache

18、mongodb base

19、canal otter datax

20、ThreadLocal 实现原理

21、kafka消息存储机制不了

22、mycat

23、mysql引擎

24、jvm

25、css bfs

26、微服务的restful。

27、netty

28、机器学习框架:sklearn

29、STS

30、Solr 、Shiro、SpringDataJPA 

31、RDMA ps-lite MXNet 基于内存计算的并⾏行处理系统研究与开发。

浏览器身份的User-Agent演变

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36

Mozilla/5.0 (Linux; U; Android 4.1.2; zh-tw; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0)

故事还得从头说起,最初的主角叫NCSA Mosaic,简称Mosaic(马赛克),是1992年末位于伊利诺伊大学厄巴纳-香槟分校的国家超级计算机应用中心(National Center for Supercomputing Applications,简称NCSA)开发,并于1993年发布的一款浏览器。它自称“NCSA_Mosaic/2.0(Windows 3.1)”,Mosaic可以同时展示文字和图片,从此浏览器变得有趣多了。

继续阅读浏览器身份的User-Agent演变

Iaas/Paas/Saas的区别

本文以做饭吃饭这件事情为例,浅显易懂地讲述了Iaas、Paas与Saas的区别。

最近云计算“Saas”概念很火,老板找到你。老板:小汪啊,最近人家说互联网进了下半场,要做产业互联网,做saas服务,我们这也算saas服务了吧,也算是站上了行业风口吧?你擦了擦头上的汗。小汪:老板,要不我给您解释解释saas和他的兄弟们是啥意思吧。老板:速速道来。

继续阅读Iaas/Paas/Saas的区别

PHP+MYSQL实现全文检索

如何使用PHP实现全文检索功能?
很多人可能马上可以想出几种方案,比如:文件检索法、采用SQL的like语句等方法,但这些方法效率都相当的低。
这里介绍一种比较高效的PHP全文检索实现方法,这就是采用MYSQL的FULLTEXT字段类型。但是MYSQL的FULLTEXT字段对中文的支持不是很好,本文也一并介绍如何通过PHP+MYSQL实现中文全文检索功能。
首先需要用到一个PHP中文分词扩展模块——SCWS,关于这个模块的安装和使用大家可以到www.ftphp.com/scws去查找相关内容(如有问题请留言)。
然后再看看mysql的fulltext字段类型的相关信息:
MySQL3.23.23之后的版本开始支持全文索引和搜索。全文索引在 MySQL 中是一个 FULLTEXT 类型索引。
FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE INDEX 在 CHAR、VARCHAR 或 TEXT 列上创建。对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。

MYSQL全文搜索通过 MATCH() 函数完成。
下面举一简单例子:
1、新建数据表:
CREATE TABLE fulltext_sample(copy TEXT,FULLTEXT(copy)) TYPE=MyISAM;
这里的copy就是一个fulltext类型的字段,如果建表的时候没有添加全文检索字段,也可以通过alert来添加,如:
ALTER TABLE fulltext_sample ADD FULLTEXT(copy)
2、插入数据:
INSERT INTO fulltext_sample VALUES
(‘It appears good from here’),
(‘The here and the past’),
(‘Why are we hear’),
(‘An all-out alert’),
(‘All you need is love’),
(‘A good alert’);
3、数据检索:
SELECT * FROM fulltext_sample WHERE MATCH(copy) AGAINST(‘love’);
上面就是mysql的全文检索功能,注意:在全文索引上进行搜索是不区分大小写的。

下面再看如何实现中文全文检索。
fulltext字段是以词语为单位,词语之间需要用空格隔开,而汉语的句子中各个词语之间并不会用空格隔开,因此我们需要对中文进行分词,这也就是为什么上面需要强词用到中文分词扩展模块。
但是尽管对中文进行分词,MYSQL还是不能通过MATCH来实现中文的全文检索,这需要通过一定的方法来进行转换,一个比较简单实用的方法是采用下面这个函数(当然还有更好的),它将中文进行了urlencode转换。
function q_encode($str)
{
 $data = array_filter(explode(” “,$str));
 $data = array_flip(array_flip($data));
 foreach ($data as $ss) {
  if (strlen($ss)>1 ) 
   $data_code .= str_replace(“%”,””,urlencode($ss)) . ” “;
 }
 $data_code = trim($data_code);
 return $data_code;
}
将转换过后的内容保存至事先定义好的fulltext字段。同样,在查询的时候也需要将查询的关键词进行同样方法的转换。

浅谈Docker隔离性和安全性

相信很多开发者都默认Docker这样的容器是一种沙盒(sandbox)应用,也就是说他们可以用root权限在Docker中运行随便什么应用,而Docker有安全机制能保护宿主系统。比如,有些人觉得Docker容器里面的进程跟虚拟机里面的进程一样安全;还有的人随便找个源就下载没有验证过的Docker镜像,看都不看内容就在宿主机器上尝试、学习和研究;还有一些提供PaaS服务的公司竟然允许用户向多租户系统中提交自己定制的Docker镜像。请注意,上述行为均是不安全的。
继续阅读浅谈Docker隔离性和安全性

CentOS6.7 Xen安装部署和基本测试

目录:
   1. Xen的简介
   1.1  Xen的大体结构
   1.2 Xen对VM的称呼
   1.3 Xen对CPU和内存的虚拟化过程
   1.4 Xen对IO设备的虚拟化过程
   1.5 Linux Kernel对Xen的支持
   1.6 Xen版本发布简史
   1.7 Xen的工具栈
   1.8 XenStore
   1.9  虚拟化中的四种网络模型
   1.10 Xen的安全问题导读
   2. Xen的安装及配置文件说明
   2.1.1  在CentOS6.6上运行Xen的条件
   2.1.2  Xen的配置
   2.2.1  Xen 启动DomU的配置文件说明
   2.2.1.1  如何创建一个Xen PV模式的VM 【注:HVM模式的VM创建参见试验部分】
   3. 使用libvirt实现Xen虚拟机的图形管理
   4. PV DomU的根文件系统可以以多种不同的方式安置

继续阅读CentOS6.7 Xen安装部署和基本测试