- 2024.2.6 模拟实现 RabbitMQ —— 数据库操作
茂大师
模拟实现RabbitMQ数据库
目录引言选择数据库环境配置设计数据库表实现流程封装数据库操作针对DataBaseManager单元测试引言硬盘保存分为两个部分数据库:交换机(Exchange)、队列(Queue)、绑定(Binding)文件:消息(Message)选择数据库MySQL数据库是比较重量的数据库!此处为了使用更方便,简化环境,采取的数据库是更轻量的SQLite数据库原因:一个完整的SQLite数据库,只有一个单独的可
- 《消息队列MyMQ》——参考RabbitMQ实现
ILLENIUM..
rabbitmq分布式
目录一、什么是消息队列?二、需求分析1)核心概念2)核心API3)交换机类型4)持久化5)网络通信编辑6)消息应答三、模块划分四、创建核心类1.ExChange2.MSGQueue3.Binding4.Message五.数据库设计1.配置sqlite引⼊pom.xml依赖配置数据源application.yml2.实现创建表和数据库基本操作3.实现DataBaseManager4.测试DataBa
- oracle是什么数据库管理系统,数据库管理系统
DetonationCP
数据库管理系统(DatabaseManagementSystem,DBMS),有时也被称为数据库管理器(DatabaseManager)[编辑]什么是数据库管理系统数据库管理系统(DatabaseManagementSystem,DBMS)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中的数据
- 从零手搓一个【消息队列】创建核心类, 数据库设计与实现
灵魂相契的树
消息队列项目消息队列SQLiteRabbitMQMyBatis
文章目录一、创建核心类1,交换机2,交换机类型3,队列4,绑定5,交换机转发&绑定规则6,消息7,消息属性二、数据库设计1,使用SQLite2,使用MyBatis2.1,创建Interface2.2,创建xml文件三、硬盘管理--数据库1,创建DataBaseManager类2,init()初始化数据库3,insertDefaultData()插入默认数据4,createTable()创建数据表5
- 根据源码,模拟实现 RabbitMQ - 通过 SQLite + MyBatis 设计数据库(2)
陈亦康
RabbitMQ数据库sqlitemybatisrabbitmq
目录一、数据库设计1.1、数据库选择1.2、环境配置1.3、建库建表接口实现1.4、封装数据库操作1.5、针对DataBaseManager进行单元测试一、数据库设计1.1、数据库选择MySQL是我们最熟悉的数据库,但是这里我们选择使用SQLite,原因如下:SQLite比MySQL更轻量:一个完整的SQLite数据库,只有一个单独的可执行文件(不到1M).SQLite操作简便:SQLite只是一
- 消息队列(3) -封装数据库的操作
Mriacles
MQ消息队列数据库oraclejvm
前言上一篇博客我们写了,关于交换机,队列,绑定,写入数据库的一些建库建表的操作这一篇博客中,我们将建库建表操作,封装一下实现层一个类来供上层服务的调用,并在写完该类之后,测试代码是否完整实现封装在写完上述的接口类与xml后,我们想要创建一个类,来调用接口类中的各种方法,并对数据库完成一些操作创建DataBaseManager类在这个类中,我们需要完成对数据库的建库建表操作,并封装一些关于表的增删查
- 模拟实现消息队列项目(系列3) -- 服务器模块(硬盘管理)
哈士奇的奥利奥
消息队列项目服务器javaspringbootmybatisrabbitmq
目录前言1.创建项目2.创建核心类2.1Exchange2.2MSQueue2.3Binding2.4Message3.数据库设计3.1SQLite配置3.2Mapper层代码实现3.2.1创建表操作3.2.2交换机队列绑定的增加和删除3.3实现DataBaseManager3.4DataBaseManager单元测试4.消息存储设计4.1创建MessageFileManager类4.2Messa
- 消息队列 - 数据库操作
Mriacles
MQ消息队列数据库python开发语言
这里写自定义目录标题前言数据表的插入删除操作关于实现接口类的几个注意实现实现封装创建DataBaseManager类另一种获取Bean对象的方式对数据库进行单元测试前言上一篇博客,我们将消息队列的实体类创建完毕了,并且还写了一些关于数据库的操作,接下来我们继续进行关于数据库的操作数据表的插入删除操作上一篇博客,写了建立三个表的操作,建立了表之后,我们应该将对应的插入,查询,查找操作也同样添加进去步
- 【Unity+MySQL】实现简单的注册登录系统
STARBLOCKSHADOW
Unity笔记数据库unitymysql注册登录
目录1安装Unity引擎和Navicat软件2安装MySQL8.0数据库2.1下载msi文件2.2安装MySQLServer8.02.3配置环境变量2.4安装MySQL服务2.5开启MySQL服务2.6修改root密码3Navicat中新建数据库3.1连接3.2新建数据库3.2新建用户表4Unity中实现交互功能4.1Unity中使用UI搭建注册登录界面4.2DatabaseManager脚本实现
- ios Sqlite 学习
maoege
#FMDB学习ios的应该都用过FMDB,那么FMDB是如何优化我们的数据库操作的勒,手动实践下sqlite封装首先我建了一个DatabaseManager的类来管理数据库```if(sqlite3_open(_path.UTF8String,&_db)!=SQLITE_OK){NSLog(@"打开数据库失败");return;}```打开数据库的代码,```sqlite3_open(,)```第
- fmd
赤色松林
1.table.h#import#import"DatabaseManager.h"@interfaceDataTableManager:NSObject@property(nonatomic,copy,readonly)NSString*pk;+(NSRecursiveLock*)recursiveLock;/***初始化DB**/+(instancetype)dataTable;/***动态创
- Ruby使用GDBM操作DBM数据存储方法实例详解
DBM简介dbm(databasemanager)是使用本地文件来存储数据的数据库,基于Key-Value对数据进行存储、读取,且有些dbm的实现(berkeleydb)还支持BTree索引。dbm效率相对较高,甚至在某些情况下比关系型数据库系统的速度还更高,因为几乎所有dbm都支持比BTree效率要高的hash索引方式。有多种dbm实现:标准dbm、ndbm(newdbm)、gdbm(GNUDB
- laravel核心构架——DB Facade
szuaudi
laravelphplaravel
laravel核心构架——DBFacade结论使用原理DB类:Facade类DatabaseManager类MySqlConnection类laravel中文文档中数据库查询构造器中介绍了使用DB的静态接口的方式进行数据库查询,文档中的示例使用了DB::table("...");DB::raw("...");等,那么DBFacade除此之外还有哪些接口呢?结论为了节约时间,先说结果:DBFaced
- pg_restore恢复odoo数据库
radzhang
ODOOPostgresql
因为数据库有十几个G了,通过odoo的database/manager恢复数据库总是觉得卡住,其实odoo的databasemanager也是通过执行pgdump和pg_restore来备份和恢复数据库的。支持并行恢复,使用-j选项可以控制并行恢复的线程数。多个恢复线程可以并行处理,每个线程处理一张表。该模式可以显著提高恢复速度。在使用pg_restore执行恢复动作之前,请先创建目标数据库:cr
- 集成ShareSDK分享当前屏幕图片的方法
恋雨_lc
ios开发
最近在做一个关于跑步的软件,集成了ShareSDK分享的平台,下面直接上代码(写的不好的地方,希望各位指出,谢谢):-(void)btnShare{//downloadURLNSString*strURL=[NSStringstringWithFormat:@"http://dev.kumoway.com/healthrun"];DatabaseManager*dm=[[DatabaseManag
- Java使用Oracle遇到的最大游标超出问题及其解决方法
暗夜螃蟹
大家如果遇到这样的问题,不要一味的去加大游标,那样不能真正解决问题;一般情况会出现在FOR循环中不断的拿连接;没有及时关闭,或者写了关闭其实没有真正得到关闭的效果;这个问题也想了很久最后想出了一个解决方案并实行成功那就是:在FOR循环中做一个判断,当游标到达100的时候关闭并重新打开一个新的连接;部分代码及思路://得到新的连接;Connectionconn2=DataBaseManager.co
- Android ORM框架介绍之greenDao封装(二)
张行之
android提升
AndroidORM框架介绍之greenDao封装(二)数据库操作增删改查操作重复太高,所以需要进行抽取,通过DataBaseManager统一管理。packagewww.weshared.greendao;importandroid.content.Context;importandroid.database.Cursor;importandroid.support.annotation.Non
- Oracle学习笔记二——DBMS
weixin_34293246
数据库管理系统数据库管理系统(DatabaseManagementSystem,DBMS),有时也被称为数据库管理器(DatabaseManager)什么是数据库管理系统数据库管理系统(DatabaseManagementSystem,DBMS)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过dbms访问数据库中
- devexpress的gridcontrol控件用法搜集
西出阳关的故人
从blog.org的我的原博客中迁入发表时间:2006-9-139:15:45publicMyForm(){..._riCityTypeLookUpEdit=newDevExpress.XtraEditors.Repository.RepositoryItemLookUpEdit();DataSetds=DatabaseManager.PrepareDataSet(this);//Датасетс
- 存储系统的分类
cadem
存储
之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,希望以后有时间,加更多更详细的介绍。1.存储引擎1.1HashTable1.1.1dbm(databasemanager)https://en.wikipedia.org/wiki/DbmThedbm
- GaussDB T分布式集群部署以及升级指南
candon123
GaussDBTHuaWei
本文用四节点部署GaussDBT1.0.1分布式集群,部署完成后再将其升级到1.0.2版本(直接安装1.0.2版本,在安装过程中会遇到segmentfault报错,目前尚未解决)。前期操作系统准备工作参考之前的几篇文章。1、部署分布式集群1.1节点信息各节点信息如下表所示:1.2集群参数文件根据实际情况修改集群参数,或者通过databasemanager工具生成,内容如下:[root@onasdb
- 挖了个坑。。。
alexlee002
新年开始,掉到自个挖的坑里头了。。。去年年底开始计划重新整理一下目前项目中的一些底层公共库,比如modelmapping,databasemanager,networkmanager等,本来以为这是一个工作量很小的活儿,稍微做些代码整理优化就可以,结果坑大了。设计目标:ModelMappingJSON-Modelmapping:YYModel√DB-Modelmapping,支持activerec
- ios Sqlite 学习
maoege
FMDB学习ios的应该都用过FMDB,那么FMDB是如何优化我们的数据库操作的勒,手动实践下sqlite封装首先我建了一个DatabaseManager的类来管理数据库if(sqlite3_open(_path.UTF8String,&_db)!=SQLITE_OK){NSLog(@"打开数据库失败");return;}打开数据库的代码,sqlite3_open(,)第一个参数传入数据库的路径,
- 数据库增删改查操作
__missing
前言laravel对操作数据库提供了原生sql、查询构建器和EloquentORM三种方式。今天我们来看看这三种方式的运行原理。原生sql原生sql和查询构建器都依赖静态依赖代理DB(也就是DatabaseManager)关于这个可以参考Facade,现在我们就以DB::select('select*fromuserwherename=?',['test']),这个为例看看DB是如何运行的。在调用
- DB2重要概念(一)
l-jobs
DB2
DB2是IBM推出的第二个关系型数据库,所以称为db2。实例和数据库的关系实例也叫DatabaseManager。数据库是指数据的物理存储。实例和数据库的关系:实例开启才能访问数据库。实例是一组进程和一组共享内存。不同实例间相互独立。实例提供了一个可标识的数据库服务器的环境。同一台机器可以同时创建和运行多个实例,每个实例都有自己的内存空间,并具有单独的权限控制。实例的作用一般来说,在一台机器上运行
- 【转】存储系统的分类
zhanghongbin01
分布式系统
存储系统的分类之前收集了一些存储产品,最近又重新整理了一下,对他们进行了简单的分类。每个对存储的分类可能不仅相同,我的分类完全按照自己的喜好来分,如和您的分类不同,仅供参考。只是做了搜集和分类,少量产品加了写介绍,希望以后有时间,加更多更详细的介绍。1.存储引擎1.1HashTable1.1.1dbm(databasemanager)https://en.wikipedia.org/wiki/Db
- iOS -- SQLite 实现 收藏功能
huangyongf
iOS--SQLite实现收藏功能
iOS--SQLite实现收藏功能1.首先导入libsqlite3.0.dylib,libz.dylib两个类库;2.封装一个NSObject类型的工具类(DataBaseManager)去管理(即写sql语句)在这个类里首先导入一个头文件和你建好的model类(实现收藏本质是存model类)在model类的.h文件中声明需要收藏的字符串在DataBaseManager.h文件中,声明方法:+(v
- Qt的SQL操作,DELETE,SELECT
select
#include <QObject>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QString>
class DatabaseManager : public QObject
{
public:
- hsql使用架构包启动数据库
sql
一、通常我们平时启动就是直接通过hsql.jar来进行启动
java -cp hsqldb.jar org.hsqldb.util.DatabaseManagerSwing java -cp hsqldb.jar org.hsqldb.util.DatabaseManager
二、DB中建立的存储过程联系到程序,则:
1.一般如果在数据库中我们使用Trigger来调用Procedu
- AutoFac初探
auto
.net 4.0使用的DLL
#region RegisterType注册
var builder = new ContainerBuilder();
builder.RegisterType<DatabaseManager>();
builder.RegisterTyp
- ASM系列六 利用TreeApi 添加和移除类成员
lijingyao8206
jvm动态代理ASM字节码技术TreeAPI
同生成的做法一样,添加和移除类成员只要去修改fields和methods中的元素即可。这里我们拿一个简单的类做例子,下面这个Task类,我们来移除isNeedRemove方法,并且添加一个int 类型的addedField属性。
package asm.core;
/**
* Created by yunshen.ljy on 2015/6/
- Springmvc-权限设计
bee1314
springWebjsp
万丈高楼平地起。
权限管理对于管理系统而言已经是标配中的标配了吧,对于我等俗人更是不能免俗。同时就目前的项目状况而言,我们还不需要那么高大上的开源的解决方案,如Spring Security,Shiro。小伙伴一致决定我们还是从基本的功能迭代起来吧。
目标:
1.实现权限的管理(CRUD)
2.实现部门管理 (CRUD)
3.实现人员的管理 (CRUD)
4.实现部门和权限
- 算法竞赛入门经典(第二版)第2章习题
CrazyMizzz
c算法
2.4.1 输出技巧
#include <stdio.h>
int
main()
{
int i, n;
scanf("%d", &n);
for (i = 1; i <= n; i++)
printf("%d\n", i);
return 0;
}
习题2-2 水仙花数(daffodil
- struts2中jsp自动跳转到Action
麦田的设计者
jspwebxmlstruts2自动跳转
1、在struts2的开发中,经常需要用户点击网页后就直接跳转到一个Action,执行Action里面的方法,利用mvc分层思想执行相应操作在界面上得到动态数据。毕竟用户不可能在地址栏里输入一个Action(不是专业人士)
2、<jsp:forward page="xxx.action" /> ,这个标签可以实现跳转,page的路径是相对地址,不同与jsp和j
- php 操作webservice实例
IT独行者
PHPwebservice
首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11 php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;
OK 现在我们来体验webservice
//server端 serve
- Windows下使用Vagrant安装linux系统
_wy_
windowsvagrant
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/
- 更改linux的文件拥有者及用户组(chown和chgrp)
无量
clinuxchgrpchown
本文(转)
http://blog.163.com/yanenshun@126/blog/static/128388169201203011157308/
http://ydlmlh.iteye.com/blog/1435157
一、基本使用:
使用chown命令可以修改文件或目录所属的用户:
命令
- linux下抓包工具
矮蛋蛋
linux
原文地址:
http://blog.chinaunix.net/uid-23670869-id-2610683.html
tcpdump -nn -vv -X udp port 8888
上面命令是抓取udp包、端口为8888
netstat -tln 命令是用来查看linux的端口使用情况
13 . 列出所有的网络连接
lsof -i
14. 列出所有tcp 网络连接信息
l
- 我觉得mybatis是垃圾!:“每一个用mybatis的男纸,你伤不起”
alafqq
mybatis
最近看了
每一个用mybatis的男纸,你伤不起
原文地址 :http://www.iteye.com/topic/1073938
发表一下个人看法。欢迎大神拍砖;
个人一直使用的是Ibatis框架,公司对其进行过小小的改良;
最近换了公司,要使用新的框架。听说mybatis不错;就对其进行了部分的研究;
发现多了一个mapper层;个人感觉就是个dao;
- 解决java数据交换之谜
百合不是茶
数据交换
交换两个数字的方法有以下三种 ,其中第一种最常用
/*
输出最小的一个数
*/
public class jiaohuan1 {
public static void main(String[] args) {
int a =4;
int b = 3;
if(a<b){
// 第一种交换方式
int tmep =
- 渐变显示
bijian1013
JavaScript
<style type="text/css">
#wxf {
FILTER: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#ffffff, EndColorStr=#97FF98);
height: 25px;
}
</style>
- 探索JUnit4扩展:断言语法assertThat
bijian1013
java单元测试assertThat
一.概述
JUnit 设计的目的就是有效地抓住编程人员写代码的意图,然后快速检查他们的代码是否与他们的意图相匹配。 JUnit 发展至今,版本不停的翻新,但是所有版本都一致致力于解决一个问题,那就是如何发现编程人员的代码意图,并且如何使得编程人员更加容易地表达他们的代码意图。JUnit 4.4 也是为了如何能够
- 【Gson三】Gson解析{"data":{"IM":["MSN","QQ","Gtalk"]}}
bit1129
gson
如何把如下简单的JSON字符串反序列化为Java的POJO对象?
{"data":{"IM":["MSN","QQ","Gtalk"]}}
下面的POJO类Model无法完成正确的解析:
import com.google.gson.Gson;
- 【Kafka九】Kafka High Level API vs. Low Level API
bit1129
kafka
1. Kafka提供了两种Consumer API
High Level Consumer API
Low Level Consumer API(Kafka诡异的称之为Simple Consumer API,实际上非常复杂)
在选用哪种Consumer API时,首先要弄清楚这两种API的工作原理,能做什么不能做什么,能做的话怎么做的以及用的时候,有哪些可能的问题
- 在nginx中集成lua脚本:添加自定义Http头,封IP等
ronin47
nginx lua
Lua是一个可以嵌入到Nginx配置文件中的动态脚本语言,从而可以在Nginx请求处理的任何阶段执行各种Lua代码。刚开始我们只是用Lua 把请求路由到后端服务器,但是它对我们架构的作用超出了我们的预期。下面就讲讲我们所做的工作。 强制搜索引擎只索引mixlr.com
Google把子域名当作完全独立的网站,我们不希望爬虫抓取子域名的页面,降低我们的Page rank。
location /{
- java-归并排序
bylijinnan
java
import java.util.Arrays;
public class MergeSort {
public static void main(String[] args) {
int[] a={20,1,3,8,5,9,4,25};
mergeSort(a,0,a.length-1);
System.out.println(Arrays.to
- Netty源码学习-CompositeChannelBuffer
bylijinnan
javanetty
CompositeChannelBuffer体现了Netty的“Transparent Zero Copy”
查看API(
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/buffer/package-summary.html#package_description)
可以看到,所谓“Transparent Zero Copy”是通
- Android中给Activity添加返回键
hotsunshine
Activity
// this need android:minSdkVersion="11"
getActionBar().setDisplayHomeAsUpEnabled(true);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- 静态页面传参
ctrain
静态
$(document).ready(function () {
var request = {
QueryString :
function (val) {
var uri = window.location.search;
var re = new RegExp("" + val + "=([^&?]*)", &
- Windows中查找某个目录下的所有文件中包含某个字符串的命令
daizj
windows查找某个目录下的所有文件包含某个字符串
findstr可以完成这个工作。
[html]
view plain
copy
>findstr /s /i "string" *.*
上面的命令表示,当前目录以及当前目录的所有子目录下的所有文件中查找"string&qu
- 改善程序代码质量的一些技巧
dcj3sjt126com
编程PHP重构
有很多理由都能说明为什么我们应该写出清晰、可读性好的程序。最重要的一点,程序你只写一次,但以后会无数次的阅读。当你第二天回头来看你的代码 时,你就要开始阅读它了。当你把代码拿给其他人看时,他必须阅读你的代码。因此,在编写时多花一点时间,你会在阅读它时节省大量的时间。让我们看一些基本的编程技巧: 尽量保持方法简短 尽管很多人都遵
- SharedPreferences对数据的存储
dcj3sjt126com
SharedPreferences简介: &nbs
- linux复习笔记之bash shell (2) bash基础
eksliang
bashbash shell
转载请出自出处:
http://eksliang.iteye.com/blog/2104329
1.影响显示结果的语系变量(locale)
1.1locale这个命令就是查看当前系统支持多少种语系,命令使用如下:
[root@localhost shell]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
- Android零碎知识总结
gqdy365
android
1、CopyOnWriteArrayList add(E) 和remove(int index)都是对新的数组进行修改和新增。所以在多线程操作时不会出现java.util.ConcurrentModificationException错误。
所以最后得出结论:CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。发生修改时候做copy,新老版本分离,保证读的高
- HoverTree.Model.ArticleSelect类的作用
hvt
Web.netC#hovertreeasp.net
ArticleSelect类在命名空间HoverTree.Model中可以认为是文章查询条件类,用于存放查询文章时的条件,例如HvtId就是文章的id。HvtIsShow就是文章的显示属性,当为-1是,该条件不产生作用,当为0时,查询不公开显示的文章,当为1时查询公开显示的文章。HvtIsHome则为是否在首页显示。HoverTree系统源码完全开放,开发环境为Visual Studio 2013
- PHP 判断是否使用代理 PHP Proxy Detector
天梯梦
proxy
1. php 类
I found this class looking for something else actually but I remembered I needed some while ago something similar and I never found one. I'm sure it will help a lot of developers who try to
- apache的math库中的回归——regression(翻译)
lvdccyb
Mathapache
这个Math库,虽然不向weka那样专业的ML库,但是用户友好,易用。
多元线性回归,协方差和相关性(皮尔逊和斯皮尔曼),分布测试(假设检验,t,卡方,G),统计。
数学库中还包含,Cholesky,LU,SVD,QR,特征根分解,真不错。
基本覆盖了:线代,统计,矩阵,
最优化理论
曲线拟合
常微分方程
遗传算法(GA),
还有3维的运算。。。
- 基础数据结构和算法十三:Undirected Graphs (2)
sunwinner
Algorithm
Design pattern for graph processing.
Since we consider a large number of graph-processing algorithms, our initial design goal is to decouple our implementations from the graph representation
- 云计算平台最重要的五项技术
sumapp
云计算云平台智城云
云计算平台最重要的五项技术
1、云服务器
云服务器提供简单高效,处理能力可弹性伸缩的计算服务,支持国内领先的云计算技术和大规模分布存储技术,使您的系统更稳定、数据更安全、传输更快速、部署更灵活。
特性
机型丰富
通过高性能服务器虚拟化为云服务器,提供丰富配置类型虚拟机,极大简化数据存储、数据库搭建、web服务器搭建等工作;
仅需要几分钟,根据CP
- 《京东技术解密》有奖试读获奖名单公布
ITeye管理员
活动
ITeye携手博文视点举办的12月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
12月试读活动回顾:
http://webmaster.iteye.com/blog/2164754
本次技术图书试读活动获奖名单及相应作品如下:
一等奖(两名)
Microhardest:http://microhardest.ite