聚合文章列表
23 浏览

手把手教你写“旋转的圆盘”

基本思路1.搭建基本的wheel2.让第二层(大黄色的圆盘)的旋转起来3.往第二层(大黄色)中添加12个按钮,3.1(谈谈awakeFromNib,和init?(coderaDecoder:NSCoder)的顺序和区别)3.2锚点的设置,和point的实际用法3.3选择按钮经典3部曲4.将大图剪切成小图,讲讲CGImageCreateWithImageInRect这个方法的使用,还有像素比,以及image.size到底是啥,还有为毛线[UIScreenmainScreen].scale5.重写btn方法,更改内部image的尺寸6.给btn一个选中的image的照片(还是按照4那样切图)7.重写setHightLighit方法(但是没写明白)8.UIControlEvents.TouchDown和UIControlEvents.TouchUpInside的区别9.为装盘添加2个方法,开始和结束10.CADisplayLink和NSTimer的区别和使用情景10.避免多个定时器同时工作,会出什么问题?11.细节,(大黄圆盘)交互yes

程序员 1900-01-01 发布
24 浏览

Redkale 1.8.8 发布,Java 分布式微服务

Redkale是一个全新,完全颠覆传统思维的Java分布式服务架构,不到1M的jar可以代替传统几十M的第三方。包含TCP/UDP、HTTP、RPC、依赖注入、序列化与反序列化、数据库操作、WebSocket等功能。一方面模块高度整合,极大的简化业务开发代码,一方面暴露大量底层,方便二次框架开发。Java并不臃肿,臃肿的是你自己的设计思维!本次版本更新内容:1、【优化】ObjectPool实现Consumer接口,且将offer设为过期,建议使用accept方法2、【优新增】Convert增加AtomicInteger、Optional的序列化和反序列化3、【新增】增加WebSocket在onOpen和createUserid方法里返回无效用户信息前也可以发送信息4、【新增】Utility增加joining、min、max方法5、【修复】修复部分带有@restconvert方法生成RestServlet时出现的BUG下载地址:https://repo1.maven.org/maven2/or

软件架构 2017-12-25 发布
26 浏览

微服务中的事件、流程和长时间运行业务

本文是讨论微服务和领域事件架构下一些需要长时间运行服务的设计问题,这些长时间运行的服务任务是因为有人工流程介入导致,比如请假需要所在部门和人事部门等两个部门领导批准,那么请假这个服务就可能需要一两天时间才能完成,因为需要两个部门领导都在电脑前且点按了批准按钮,这个请假服务流程才结束。本文关键点:1.围绕微服务架构的讨论促进了EDA事件驱动架构思想的发展,EDA能有效地解耦服务。领域事件概念属于EDA一种。2.领域事件非常适合分散的数据管理,能够根据写模型产生用于读取的数据模型(CQRS读写分离)或解决业务上很多交叉耦合问题。但是,您不应该执行复杂的点对点事件链。可以使用“命令”这个概念来协调其他服务能够进一步减少耦合。3.集中管理的ESB不适合微服务架构。微服务中推荐智能端点和哑管模型。但是,不要因为害怕引入中央控制而放弃服务的协调:重要的业务能力需要一个总控点。4.过去,BPM和工作流引擎在战略方向上有问题,所以市场上出现许多可怕的所谓“零代码”的可视化流程开发工具却吓跑了开发者。现在出现了轻量级且易于使用的流程框架了

软件架构 2017-12-25 发布
AD 友情赞助
26 浏览

使用Ruby on Rails开启Docker微服务之旅

我们谈论关于架构的话题,总离不开微服务,而微服务又会引向容器和Docker。它们都是能简化庞大而复杂应用的构建过程。本周希云和大家分享,如何在GiantSwarm上运行Docker化的RubyonRails应用。对于微服务,没有一个像apt-get这样的工具,不禁让人问:“我怎样安装这个新东西?”答案是:“你安装不了微服务。”更具体来说是,“你不可能一下子就用上它。”“一个系统的架构是最难改变的”,“微服务”这个新事物也不是一颗银弹,即使在今天也没有人能轻易就重构一个复杂的系统,尤其是对于像用了Rails框架构造出来的庞大系统。Docker承诺的一个特性是:“减少开发、测试和生产环境之间的差异”,然而,在生产环境运行Docker并不简单,所以我们将研究GiantSwarm这样的工具是如何简化这个部署过程的。刚开始,我会把一个简单的应用Docker化,这个应用是一个NoSQL数据库ArangoDb的ODM。你能在Github上找到这个应用,如果你要自己尝试这个例子,你的机器上需要装好Docker,Ruby2版本以上,

软件架构 1900-01-01 发布
40 浏览

容器管理平台的项目实战 ---应用微服务化与CICD

本文来自12月15日有容云Docker微信群分享整理分享嘉宾:惠志朋有容云技术总监前言:为什么要建设容器云?纵观虚拟化技术的发展在历史,虚拟化技术跨越IT架构,实现包括资源、应用、网络、桌面在内的全系统虚拟化的发展阶段。许多金融、保险等行业早已完成从物理机转向虚拟化的转换。使用虚拟化技术一定程度上降低了运维复杂性,提升了资源的使用率,但这种虚拟化技术可视作云计算中IaaS的发展。当前移动多媒体APP和互联金融、大数据等行业的业务面临如下问题期待解决:1、应用系统基础组件多:由于使用的基础软件多为复杂商业软件,功能繁多,真正经常使用的功能一般都有少数。这些基础软件系统架构复杂、安装部署复杂度呈曲线上升2、应用部署与升级复杂:应用系统规模越来越复杂,庞大的部署架构模式使得应用的安装、部署和更新也相对比较复杂,部署训运维成本都成倍增加3、敏捷与高效管理困难:在移动APP和互联网金融等多种行业的激烈市场竞争时,应用业务的需求变化越发频繁,同时也希望研发部门的软件交付周期越来越短,要高效、敏捷开发、Devops、增强应

软件架构 2017-12-25 发布
25 浏览

如何基于MYSQL做实时计算?

但是这样的处理流程可能会越来越多,如果一直作为同步流程,整个接口会变得越来越庞大、并且耗时越来越长、出问题的风险越来越高。所以我会考虑异步处理流程。如果可以改动一下代码,将数据额外写一份儿到队列里,再用flink、storm之类的去消费不就好了么。如下图:但实际上,或许由于架构设计的不规范、或许由于业务场景的繁多,导致在代码中加一遍数据埋点,就如同重构一般的工作量。所以我们需要另一种方式,能实时感知到MYSQL中数据的变化。MYSQL的binlog可以帮我们记录数据的变化,我们还需要一个工具来收集binlog,并转为我们能读懂的数据。阿里有一款叫canal的开源软件正是做这个用的,可以通过修改源码,增加监控、告警、投递队列功能来实现。但现在,阿里云的日志服务为我们集成了这一功能,我们可以用更短的时间、更少的资源来获得更稳定、更放心的服务。如下图:日志服务收集binlog的功能还在内测中,不久之后将与大家见面。比如有这样一个场景,我的MYSQL里有一张订单推送记录表,现在有一个需求,需要将这个表中的数据,按照一定格式再写入一份儿

MySQL 2014-04-30 发布
AD 友情赞助
22 浏览

2017年大数据年终盘点:开源工具、MySQL和Python是最大赢家!

2001年,Gartner给出了大数据的概念,即大数据是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力来适应海量、高增长率和多样化的信息资产。这其中点出了大数据关键的3V特征,即海量、速度和多样性,也很明确的为我们指出了大数据在哪些方面存在挑战。但是,16年过去了,现在大数据发展仍然没有达到边界,还是一个充满想象力的领域。因为数据的存在,让很多新的行业焕发出了无限的价值,社交媒体网站可能就是一个典型的例子。对于企业来说,目前的主要问题就是如何使用收集来的数据创造价值。为此,Dzone社区调查了734个和大数据相关的技术人员,下面我们就来看看有哪些有趣的结论。开源仍然是大趋势开源是整个IT技术的大趋势,在大数据领域也不例外。据Dzone的相关调查,71%的受访者都在使用开源工具进行数据科学的相关工作,只有16%的人在使用商业工具。开源工具在个人开发项目和企业应用程序中得到了快速应用。2016年曝光度最高的开源工具Spark,今年的采用率从去年的31%增长到了45%。而今年曝光率最高的开源工具,TensorFlow绝对算得

MySQL 2017-12-25 发布
26 浏览

基于vue2.0 +vuex+ element-ui后台管理系统

此项目是vue2.0+element-ui+node+mongodb构建的后台管理系统,所有的数据都是从服务器实时获取的真实数据,具有真实的注册、登录、数据显示、新增数据、修改数据、删除数据等功能。如果对您对此项目有兴趣,可以点"Star"支持一下谢谢!^_^或者您可以"follow"一下,我会不断开源更多的有趣的项目开发环境windows64、nodejs6.11.0如有问题请直接在Issues中提,或者您发现问题并有非常好的解决方案,欢迎PR技术栈前端技术栈:vue2+vuex+vue-router+webpack2.0+ES6/7+less+element-ui服务端技术栈:nodejs+express+mongodb前序准备运行前准备:1、不需要在本地调试及开发:请访问本项目的服务器地址。2、需要在本地调试及开发:由于此项目是基于nodejs和mongodb的前后端结合项目,你需要进行nodejs和mongodb的相关准备工作。项目运

Vue.js 2017-12-25 发布
25 浏览

vue@2.0源码学习---组件究竟是什么

vue文档告诉我们可以使用Vue.component(tagName,options)注册一个组件Vue.component('my-component',{//选项})毫无疑问这是一个全局API,我们顺着代码最终可以找到Vue.component是这样的Vue.component=function(id,definition){definition.name=definition.name||iddefinition=Vue.extend(definition)this.options[type+'s'][id]=definitionreturndefinition}Vue.component实际上是Vue.extend的封装,Vue.extend如下:Vue.extend=function(extendOptions:Object):Function{extendOptions=extendOptions||{}constSuper=thisco

Vue.js 2017-12-25 发布
AD 友情赞助
17 浏览

vue先hash 模式部署项目,然后开启histroy模式 ,引发的几个问题以及histroy模式的开启方式、优点

vue路由有一个HTML5History模式,这个模式要在路由里面另外开启的,很多人在刚使用路由的时候之前不知道这个模式,所以并没有启用,然后就把项目部署上去了,因为这个模式还是有挺多优点的,最后还是会开启这个模式。然而因为之前使用hash模式再改为histroy模式还是有些问题的,我已经踩过坑了,然后把这几个问题写出来。有需要的朋友可以做一下参考,喜欢的可以点波赞,或者关注一下,希望可以帮到大家。本文首发于我的个人blog:obkoro1.com开启history模式:如果不开启的话,路由默认是hash模式,开启这个模式前端的工作也很简单,如下:mode:'history'//在路由那里配置一下这个最后需要后端的做一些配置配合,这里可以参考一下文档给的栗子。history模式的优点:url变成真正的url,url看上去更好看。http://yoursite.com/#/a/b//hash模式http://yoursite.com/a/b//history模式可以使用vue-router的滚动

Vue.js 2017-12-25 发布
25 浏览

vue 数独

怎么样是不是感觉(完全没有)掌握到精髓。。。恩好吧,虽然我们长得丑但基本功能还是有的,在数据生成这块也是有些值得思考的地方。规则在分析具体代码之前先明确一下数独的规则:数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。思路要实现这个游戏,我的想法是先生成一个完整的符合规则的数组再将其中的一些值隐去。在验证时把填入的值和隐去的值作比较,如果相同就算正确,如果不一样在按规则做一次校验(考虑到可能有多种解法)。实现步骤数据结构实现这个9*9宫格应该大家想的都差不多,用一个二维数组去对应每一格的数据。每个数据中包含一些属性用来表识具体的状态(正确、错误等)具体可在class文件中查看initGridList(){this.gridList=[];//生成大体布局for(leti=0;i

Vue.js 2017-12-25 发布
19 浏览

Vuex 的应用场景

本文在GitHub上的链接昨天被问了一个问题:Vuex的应用场景有什么?什么时候适合使用Vuex,什么时候不适合使用Vuex?在当时,我的答案是一般人会回答的内容:涉及到非父子关系的组件,例如兄弟关系、祖孙关系,甚至更远的关系;他们之间如果有数据交互,那么应该使用Vuex来实现;如果页面复杂度比较低的话,也可以考虑使用global-event-bus来实现;如果只是父子关系的组件数据交互,那么应该考虑使用props进行单向传递;如果涉及到子组件向父组件的数据传递,那么应该考虑使用$emit和$on;讲道理说,这个答案也不算错,当时我也只能回想起这些。但后来,我又想了想,其实还可以更有针对性一些。例如,在以下场景里,我们应当使用Vuex:1、组件会被销毁我们可以假设这样一个场景:假如有这样一个组件,他是弹窗,有一些复选框和输入

Vue.js 2017-12-25 发布
AD 友情赞助
75 浏览

跟着Vue-cli来'学'并'改'Webpack之 打包优化

浏览器:我需要test.js,缓存期限还在,直接从磁盘读取产品经理:发布了吗?你确定?怎么没效果啊?服务器:吃瓜弄清了原理,我们就知道怎么去破坏缓存机制,让浏览器请求到新的文件。清楚缓存技术ctrl+F5强制刷新页面手动强制刷新页面,但是用户不是程序员啊,他们怎么会知道需要强制刷新呢,所以这个方案给用户肯定是不可行的。更改文件修改文件的名字:test.js->test.v2.js修改文件的路径:/static/test.js->/static/v2/test.js加querystring:test.js->test.js?v=qwer我们了解完了如何清楚缓存,再来看看Vue-cli模版中是如何进行配置的CodeSplitting(代码分割)什么是代码分割我们直接生成一个Vue-cli的新项目,安装依赖后直接运行npmrunbuild命令,并打开/dist/js文件目录发现有3个js文件,这就是webpack将代码进行了分割。为什么要进行代码分割分离业务代码和第三方库(vendor)按需加载(利

Vue.js 2017-12-25 发布
23 浏览

vue的一个分页组件

文件page.vue为一个pc端的分页组件,基础的分页功能都有,基本的思路是,页面是用数据来展示的,那就直接操作相关数据来改变视图GettingstartedimportPagefrom'./page.vue'从目录引入该文件,在父组件注册使用total:总页码currentIndex:当前页码listLen:页面ui要显示几个列表页getPage:page组件把每个事件的页码发送给父组件,用来向后台发送相关请求来展示内容aboutpage.vuehtml部分首页<<上一列表页

Vue.js 2017-12-25 发布
12 浏览

前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例

一、前端MVC概要1.1、库与框架的区别框架是一个软件的半成品,在全局范围内给了大的约束。库是工具,在单点上给我们提供功能。框架是依赖库的。Vue是框架而jQuery则是库。1.2、AMD与CMD在传统的非模块化JavaScript开发中有许多问题:命名冲突、文件依赖、跨环境共享模块、性能优化、职责单一、模块的版本管理、jQuery等前端库层出不穷,前端代码日益膨胀AMD规范及其代表:RequireJS异步模块定义(AsynchronousModuleDefinition),它是依赖前置(因为依赖必须一开始就写好)会先尽早地执行(依赖)模块,相当于所有的require都被提前了CMD规范及其代表:SeaJS(CommonModuleDefinition)模块定义规范一个模块就是一个文件;它推崇依赖就近想什么时候require就什么时候加载,实现了懒加载,延迟执行(aslazyaspossible)1.2、前端MVC概要MVC的核心理念是:你应该把管理数据的代码(Model)、业务逻辑的代

Vue.js 2017-12-25 发布
19 浏览

大白话Vue源码系列(04):生成render函数

阅读目录优化AST生成render函数小结本来以为Vue的编译器模块比较好欺负,结果发现并没有那么简单。每一种语法指令都要考虑到,处理起来相当复杂。上篇已经生成了AST,本篇依然对Vue源码做简化处理,探究Vue是如果根据AST生成所需要的render函数的。优化AST优化AST的目的是优化整体性能,避免不必要计算。比如那些不存在数据绑定的节点,即纯静态的(purelystatic)在更新视图时根本不需要改变,因此在数据批处理,页面重渲染时可直接跳过它们。Vue通过遍历AST找出内容为纯静态的节点并将其标记为static:functionoptimize(root){//--第一步标记AST所有静态节点--markStatic(root)//--第二步标记AST所有父节点(即子树根节点)--markStaticRoots(root,false)}首先标记所有静态节点:functionmarkStatic(node){//标记if(node.type

Vue.js 2017-12-25 发布
17 浏览

iOS本地解压ZIP文件 加载HTML文件

项目需求是本地下载.zip的HTTP链接,解压后保存在沙盒,然后用Webview展示HTML,找了下第三方解压缩的库,都是用C写的,选用了ZipArchive,集成过程网上一堆教程,本人就不复述了。下载的zip包和解压过的文件要存放沙盒里,必须要保持其唯一性,所以文件名用下载链接转MD5命名,下载完成删除zip包,下次下载只需检查是否有该链接的MD5命名的文件夹是否存在文件即可,上代码。-(void)downloadZip{NSString*zipUrl=@"http://h5.orunapp.com/game/ljsp.zip?t=123";NSURL*url=[NSURLURLWithString:zipUrl];NSString*md5=[selfmd5:zipUrl];//将下载链接转为md5后面当做文件夹的名字NSArray*pathes=NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUs

HTML 2017-12-25 发布
24 浏览

一个有质感的CSS3按钮需要用到阴影、内阴影、线性渐变

我们要做的这个CSS3按钮的有以下几个点按钮的深色边框紧邻按钮上边框有一条亮条且都有圆角边框下部有少许阴影实际上这个按钮的背景色从上到下有一个渐变,不是很明显,但看起来确实舒服按钮讲解在这里我用的是a链接,在css里面,对这个a只写了去除下划线,其他的我们放另一个名为btn的css类里面在.btn里面设置了让这个a变为display:inline-block;,然后给其设置固定的宽度width:60px;和高度height:30px;以及文字颜色color:#FFF;居中text-align:center;和行高垂直居中line-height:30px;设置了边框颜色和圆角、、、、、、、重点、、、、、、、、为了让这个按钮更有质感,这里用的background是线性渐变,background-image:linear-gradient(#00B3F1,#00A3EF);由浅到深在.btn的css里写的阴影那一段代码里面写了两个阴影,用逗号隔开,第一个阴影是我们这个按钮边框下边的一点点阴影,用阴影的时候建议使用rgba来写,rgba的

CSS 2017-12-25 发布
17 浏览

一起来聊聊table组件的固定列

现有Web页面上,table一般用于统计数据、列表书记等信息的展示。但是当table包含大量的信息需要列出展示时,往往对table添加滚动条来展示更多的数据。突然想到要研究下table组件也是因为最近碰到table数据大量展示的问题,寻觅了一些比较好的解决办法,就目前来说,个人已知最好的应该就是ant-design中的Table表格。它通过对表格前后列进行固定,中间滚动的交互方式可以很好的满足个人需求,这种交互对于大量表格数据和关键信息的展示非常友好,下面我们就来聊聊包含大量数据和列数的表格展示优化。表格功能首先需要对表格的大致功能有一个大概的了解。Ant-design上对表格的使用说明如下:当有大量结构化的数据需要展现时;当需要对数据进行排序、搜索、分页、自定义操作等复杂行为时。表格设计表格一般包括表头、表尾,内容对应具体的行列,每一个数据占据一个单元格,如下图所示。根据HTML中表格的标签属性,我们对表格进行拆分:

CSS 2017-12-25 发布
20 浏览

用CSS来计数

在CSS中,有两个很好用的伪元素,分别是::before和::after。也许你在看别人的代码时,会看到:before和:after,那是为了兼容早期的浏览器。W3C为了将伪类和伪元素加以区分,在伪元素前面加了两个冒号。1.伪元素::before用来将内容插入到元素的前面::after用来将内容插入到元素的后面::before和::after中有一个content()属性用来生成内容。.item::before{content:'Hello';}.item::after{content:"world"}item

运行效果如下:需要注意的是,大部分浏览器将这两个伪元素默认以行内元素显示,有了这两个伪元素可以减少对标签的使用。2.CSS计数器CSS有一个计数功能,就像使用变量一样,它有以下4个属性:counter-reset创建或重置计数器;需要注意的是:当第一次使用counter-reset时,表示创建

CSS 2017-12-25 发布
AD 友情赞助