聚合文章列表
11 浏览

你们想要的徽章终于制作完了

编程相关的形形色色的贴纸已经贴满了我的桌面、笔记本、电脑桌。而编程相关的玩偶和公仔也已经慢慢变成了我女儿的玩具。前不久给我女儿定制了一个笑脸小镜子,由于运费问题又顺带制作了几个Angular和CodeIgniter徽章。很多人看后表示很喜欢,希望多印些编程语言和工具的Logo。既然要印制和销售,那自然就是商业行为了。于是我一个月前开始收集和咨询关于商标的license问题,https://github.com/justjavac/logo-trademark-licenses期间不免挫折。比如Bootstrap维护者直截了当#12:Youcannot,noprintingofourlogoonproductslikethat.而对于Atom我其实本来也没有报多大希望,毕竟是GitHub公司开发的#13:Hithere,Sorryforthedisappointment!Pleaseletusknowifyouhaveanyothe

jQuery 2017-11-30 发布
16 浏览

kafka原理和实践(一)原理:10分钟入门

系列目录kafka原理和实践(一)原理:10分钟入门kafka原理和实践(二)spring-kafka简单实践kafka原理和实践(三)spring-kafka生产者源码kafka原理和实践(四)spring-kafka消费者源码kafka原理和实践(五)spring-kafka配置详解kafka原理和实践(六)总结升华=========正文分割线===============关于kafka原理网上文章很多,但能真正快速入门的几乎没有(要不就是原文翻译官网...实在枯燥无味之极),本章尽量采用图文的方式,提纲挈领的阐述原理。一、kafka拓扑图大家都知道kafka是依赖zookeeper集群的,一般最少也要三台服务器来实现HA。拓扑图如下,分三层:1.Producers:消息生产者,push消息给Brokers.发送时根据不同topic选择不同分区(在Broker上)。2.Brokers:注册在zookeeper节点上。3.Consumers:消息消费者,从brokers上根据订阅的to

消息系统 2017-11-30 发布
11 浏览

分布式消息队列 RocketMQ 源码分析 —— Message 发送与接收

������关注微信公众号:【芋道源码】有福利:RocketMQ/MyCAT/Sharding-JDBC所有源码分析文章列表RocketMQ/MyCAT/Sharding-JDBC中文注释源码GitHub地址您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。新的源码解析文章实时收到通知。每周更新一篇左右。认真的源码交流微信群。1、概述Producer发送消息。主要是同步发送消息源码,涉及到异步/Oneway发送消息,事务消息会跳过。Broker接收消息。(存储消息在《RocketMQ源码分析——Message存储》解析)2、Producer发送消息DefaultMQProducer#send(Message)1:@Override2:publicSendResultsend(Messagemsg)throwsMQClientEx

消息系统 2017-11-30 发布
AD 友情赞助
13 浏览

迷思

还差一个月,2017就要sayboodbye了。这一年的我,成长有限,这一点从我博客的更新频度上也不难发现。一个33岁的小屁孩儿,似乎有那么点儿资格迷茫,也有理由颓废了。失去了25岁时的棱角,就连写出的文字,都无法再自信的使用叹号了。不过,内心仍抱有理想,依然对美好的事物心存向往。只是,多了诸多现实带过我的约束。前两周,工作的原因,飞了一趟资本主义的天堂–美国。虽然不至于像什么山炮进城,但很多方面还是在自己内心里激起了涟漪:原来调整时差真的如此痛苦,原来热水和中餐对我来说真的那么重要,原来有信仰的人不都是存在明显缺陷的。。。哪怕是短暂的在一个全新的环境下生活,都很容易让一个人暴露出人格上的缺陷,或自大,或自卑。每个人可能都无法看透自我,但总能看穿他人,所以从别人的身上,找到自我鄙视的那一面,也是一种有深意的修行。我不知道是什么神秘力量让自己有勇气写一些文字来剖析自己,也许这种错觉也是一种自以为是吧。信仰你一旦离开了中国,你就不再是大多数。当我坐在一家美国的中餐馆,看到邻桌坐着的几个外国人,还没来得及细细打量,脑中

程序员 2017-11-30 发布
14 浏览

成为Java顶尖程序员,先过了下面问题!

​一、数据结构与算法基础说一下几种常见的排序算法和分别的复杂度。用Java写一个冒泡排序算法描述一下链式存储结构。如何遍历一棵二叉树?倒排一个LinkedList。用Java写一个递归遍历目录下面的所有文件。二、Java基础接口与抽象类的区别?Java中的异常有哪几类?分别怎么使用?常用的集合类有哪些?比如List如何排序?ArrayList和LinkedList内部的实现大致是怎样的?他们之间的区别和优缺点?内存溢出是怎么回事?请举一个例子?==和equals的区别?hashCode方法的作用?NIO是什么?适用于何种场景?HashMap实现原理,如何保证HashMap的线程安全?JVM内存结构,为什么需要GC?NIO模型,select/epoll的区别,多路复用的原理Java中一个字符占多少个字节,扩展再问int,long,double占多少字节创建一个类的实例都有哪些办法?final/finally/finalize的区别?Session/Cookie的区别

程序员 2015-12-16 发布
10 浏览

为什么说万能程序员可能只是个美丽的传说

我曾经不止一次听到软件经理或招聘经理说——好的程序员是万能的!他们说,如果很不幸地,一个项目组长选择了F#作为开发语言,而外面暂时找不到太多懂F#的人,那么完全可以让那些有多年开发经验的程序员来接手,虽然他们不懂F#,但很快就可以上手。他们也可能会说:“我知道他们是做前端的,但现在需要他们开发后端程序。他们都是很好的程序员,这对他们来说小菜一碟。”如果你相信这样的鬼话,那么我可以告诉你,我完全可以去创办一个公司,向爱斯基摩人贩卖冰块,而且很快就会估值过亿。我确信可以做到,只等你们投钱了。有时候我想,要不要在简历里写上”被证实具备技术快速上手能力“这样的话,这样我就可以去任何一家公司了!我们不妨以编程语言为例。我确实使用过多种编程语言,从Scala到C#,再到Java和JavaScript。我可以在几周内掌握具有C语言风格语法的编程语言,其他的则会长一些,总之就是刚学了一门新语言就直接让代码进生产环境。编程语言可以赶鸭子上架,那么业务知识呢?我曾经在多个业务领域工作过,包括健康、电商、教育和电信。那么我是否可以认为自己也可以胜

程序员 2017-11-30 发布
AD 友情赞助
19 浏览

企业借助有效的应用程序重构微服务的3大步骤

当前,DevOps、平台即服务(Platform-as-a-Service)、容器和持续集成及交付(CI/CD)等等一系列的方法让现如今的企业组织得以以前所未有的规模创建和管理他们的模块化系统。尽管重构整体单片App应用程序在不同程度上获得了成功,但是,建立微服务架构可能会是企业组织的一项重大的投资,并且无法立即获得立竿见影的投资回报。在本文中,我们就将为广大读者朋友们介绍关于如何通过逐渐重构您企业的应用程序来实现微服务的成功。同时,我们还将为您介绍如何构建您企业微服务的基础,以改进面向服务的架构,以及如何从易于开发和维护、应用程序组件独立的可扩展性等方面受益。微服务架构是创建松散耦合但却是自主服务的一种新的架构形式。诸如DevOps、平台即服务(PaaS)、容器以及持续集成及交付(CI/CD)方法等新兴的技术趋势让现如今的企业组织得以以前所未有的规模创建和管理如面向服务的架构(SOA)这些模块化系统。尽管重构整体单片App应用程序在不同程度上获得了成功,但有效使用微服务的关键则在于企业组织如何以及为什么应该使用微服务来构建应

软件架构 2017-11-30 发布
20 浏览

当前流行的J2EE WEB应用架构分析

1.架构概述J2EE体系包括javaserverpages(JSP),javaSERVLET,enterprisebean,WEBservice等技术。这些技术的出现给电子商务时代的WEB应用程序的开发提供了一个非常有竞争力的选择。怎样把这些技术组合起来形成一个适应项目需要的稳定架构是项目开发过程中一个非常重要的步骤。完成这个步骤可以形成一个主要里程碑基线。形成这个基线有很多好处:各种因数初步确定为了形成架构基线,架构设计师要对平台(体系)中的技术进行筛选,各种利弊的权衡。往往架构设计师在这个过程中要阅读大量的技术资料,听取项目组成员的建议,考虑领域专家的需求,考虑赞助商成本(包括开发成本和运行维护成本)限额。一旦架构设计经过评审,这些因数初步地就有了在整个项目过程中的对项目起多大作用的定位。定向技术培训一旦架构师设计的架构得到了批准形成了基线,项目开发和运行所采用的技术基本确定下来了。众多的项目经理都会对预备项目组成员的技术功底感到担心;他们需要培训部门提供培训,但就架构师面对的技术海洋,项目经理根本就提不出

软件架构 2017-11-30 发布
27 浏览

“爆款”游戏吃鸡是如何诞生的?聊聊游戏服务器的架构演进

近日的游戏圈只有一个主题——「吃鸡」。长期被MOBA多人在线战术竞技游戏,如《英雄联盟》、《王者荣耀》游戏把持的国内游戏市场在“吃鸡”的刺激下出现了松动。作为技术人让我们一起看看目前游戏服务器的演化进程。本文阅读预计需要10分钟,主要技术点如下:游戏服务器特征。短连接游戏服务器架构。长连接游戏服务器架构。分区分服服务器架构。MMOARPG服务器架构。房间服务器架构。游戏服务器特征游戏服务器端,是一个会长期运行的程序,并且它还要服务于多个不定时,不定点的网络请求,所以这类软件的特点是要非常关注稳定性和性能。这类程序如果需要多个协作来提高承载能力,则还要关注部署和扩容的便利性;同时,还需要考虑如何实现某种程度的容灾需求。由于多进程协同工作,也带来了开发的复杂度,这也是需要关注的问题。功能约束,是架构设计的决定性因素。基于游戏领域的功能特征,服务器端系统有以下几个特殊的需求:对于游戏数据和玩家数据的存储。对玩家数据进行数据广播和同步。把一部分游戏逻辑在服务器上运算,做好验证,防止外挂。针对以上的需求特征,在服务器端,我

软件架构 2017-11-30 发布
AD 友情赞助
13 浏览

基于Keepalived+Haproxy+Varnish+LNMP企业级架构实现

1.2安装服务我们需要在相应的机器上安装我们的服务:1)haproxy-server-master&haproxy-server-backup上:yuminstallhaproxy-yyuminstallkeepalived-y2)varnish上:varnish服务器请用CentOS7来做。yuminstallvarnish-y3)rs01&rs02上:安装配置LNMP。详情见——Nginx详解以及LNMP的搭建http://www.linuxidc.com/Linux/2017-11/148576.htm1.3关闭防火墙及selinuxiptables-F&&setenforing本步骤完成。二、配置Haproxy我们需要把两个机器的Haproxy都设置好。我们去修改一下Haproxy的配置文件——/etc/haproxy/haproxy.cfgglobal段和default段都是设置好的,我们就不需要修改,下面是我们需要修改的部分:1)frontend段f

软件架构 2017-11-30 发布
14 浏览

实现基于Keepalived+Haproxy+Varnish+LNMP企业级架构

一:环境介绍1、操作系统Web网站基于CentOS7搭建的LNMP的电子商务网站,负载均衡器基于CentOS6的Keepalived+Haproxy的架构,缓存服务器是基于CentOS7的Varnish搭建的缓存服务。2、服务安装lnmp:mariadb-server-5.5.52-1.el7.x86_64nginx-1.10.2-1.el7.x86_64php-fpm-5.4.16-42.el7.x86_64php-mysql-5.4.16-42.el7.x86_64keepalived+haproxy:keepalived-1.2.13-5.el6_6.x86_64haproxy-1.5.18-1.el6.x86_64Varnish:varnish-4.0.4-3.el7.x86_643.实验环境关闭selinux,关闭iptables,时间同步二:原理及拓扑图1、浏览器缓存第一种:首先会判断浏览器是否会有缓存,如果有缓存会判断是否过期,如果没有过期就会返回一个200的

软件架构 2017-11-30 发布
16 浏览

实现基于LNMP的电子商务网站

主题LNMP实验思路:首先LNMP是基于fastCGI的方式搭建的,用户访问网站静态页面nginx解析,动态页面转发给php程序解析,程序数据存放在数据库中。所以首先要在nginx配置文件中支持php程序转发功能,把nginx程序的运行者更改为nobody缩小权限,然后把小米程序的所有者更改为nobody,防止黑客劫持,最后记得在php的配置文件中把程序的运行者更改为nobody,默认的是Apache运行,否则php无法对小米程序进行解析。第一步:准备安装包yuminstallmariadb-servernginxphp-mysqlphp-fpm第二步:解压官方小米安装包unzip-d/data/web/xiaomi.zip第三步:下载小米商城源码,解压缩到/data/web目录,修改权限为nobodycd/data/web/chownnobody.nobody.-R--更改为nginx可以管理的nobody用户第四步:修改nginx配置文件--运行者改为nobody,不要是

软件架构 2017-11-30 发布
AD 友情赞助
16 浏览

如何从 MongoDB 迁移到 MySQL

最近的一个多月时间其实都在做数据库的迁移工作,我目前在开发的项目其实在上古时代是使用MySQL作为主要数据库的,后来由于一些业务上的原因从MySQL迁移到了MongoDB,使用了几个月的时间后,由于数据库服务非常不稳定,再加上无人看管,同时MongoDB本身就是无Schema的数据库,最后导致数据库的脏数据问题非常严重。目前团队的成员没有较为丰富的Rails开发经验,所以还是希望使用ActiveRecord加上Migration的方式对数据进行一些强限制,保证数据库中数据的合法。文中会介绍作者在迁移数据库的过程中遇到的一些问题,并为各位读者提供需要停机迁移数据库的可行方案,如果需要不停机迁移数据库还是需要别的方案来解决,在这里提供的方案用于百万数据量的MongoDB,预计的停机时间在两小时左右,如果数据量在千万级别以上,过长的停机时间可能是无法接受的,应该设计不停机的迁移方案;无论如何,作者希望这篇文章能够给想要做数据库迁移的开发者带来一些思路,少走一些坑。从关系到文档虽然这篇文章的重点是

MySQL 2017-11-30 发布
15 浏览

MySQL主从架构的实现

正文一主一从1.1环境准备:CentOS系统服务器2台、一台用户做MySQL主服务器,一台用于做MySQL从服务器,配置好yum源、防火墙关闭、各节点时钟服务同步、各节点之间可以通过主机名互相通信。1.2准备步骤:1)iptables-F&&setenforce清空防火墙策略,关闭selinux2)拿两台服务器都使用yum方式安装Mysql服务,要求版本一致3)分别启动两台服务器mysql服务,确保服务正常架构图:1.3实现步骤:1.3.1配置master主服务器对master进行配置,包括打开二进制日志,指定唯一的servrID。例如,在配置文件加入如下值server-id=1//配置server-id,让主服务器有唯一ID号log-bin=mysql-bin//打开Mysql日志,日志格式为二进制skip-name-resolve//关闭名称解析,(非必须)1.3.2创建复制帐号在Master的数据库中建立一个备份帐户:每个slave使用标准的

MySQL 2017-11-30 发布
18 浏览

【JavaScript从入门到精通】第十九课

第十九课-JS运动中级前面的学习已经让我们掌握了很多运动相关的知识,也构造出了自己的运动框架,当然,它离真正的完成版运动框架还有很远的距离。链式运动框架在我们讲解链式运动框架时,我们需要讲解一下什么是回调函数。在我们之前的一个运动函数startMove中,如果我们再添加一个参数,而且该参数是一个函数,我们希望在运动结束后调用这个函数——这就是所谓的回调函数。functionstartMove(obj,attr,iTarget,fnEnd){clearInterval(obj.timer);obj.timer=setInterval(function(){varcur=0;if(attr=='opacity'){cur=Math.round(parseFloat(getStyle(obj,attr))*100);}else{cur=parseInt(getStyle(obj,attr));}varspeed=(iTarget-cur)/6;speed=speed>0?

JavaScript 2017-11-30 发布
13 浏览

JavaScript学习笔记(十三)——生成器(generator)

在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意!如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/学习。generator(生成器)是ES6标准引入的新的数据类型。一个generator看上去像一个函数,但可以返回多次。我们先看一下函数的概念:一个函数是一段完整的代码,调用一个函数就是传入参数,然后返回结果。functionfoo(x){returnx+x;}varr=foo(1);//调用foo函数在函数执行过程中,如果没有遇到return语句,控制权无法交回被调用的代码。(函数末尾如果没有return,就是隐含的returnundefined;)generator定义function*foo(x){yieldx+1;yieldx+2;returnx+3;}generator与函数的区别generator由function*定义(注意多出的*号),并且,除了retu

JavaScript 2017-11-30 发布
22 浏览

【JavaScript从入门到精通】第二十课

第二十课JS事件基础从今天开始,我们开始详细讲解JS的事件。之前我们已经讲过许多事件,而我们今天要讲的主要是事件对象。之前我们学习的onclick事件用于得知一个元素是否被点击,但如果我们想知道一些更详细的信息,例如点击位置,点击键是左键还是右键,就需要用到event对象。又例如我们希望检测用户键盘按的到底是左键还是右键来完成相应的功能,也需要用到event对象。event对象和事件冒泡event对象的作用是帮助我们获取一些事件的信息,例如鼠标位置,键盘按键。这里我们用一个小例子来说明event对象是怎么运作的。现在我们试图实现一个效果:无论点击页面的什么地方,都可以弹窗。聪明的同学可能已经猜到,我们可以直接给body添加onclick事件来实现这一点:无标题文档