NuGet的使用、部署、搭建私有服务
前言什么是NuGet?Nuget是一个.NET平台下的开源的项目,它是VisualStudio的扩展。在使用VisualStudio开发基于.NETFramework的应用时,Nuget能把在项目中添加、移除和更新引用的工作变得更加快捷方便。为什么要使用NuGet如果我们项目开发不需要引用任何第三方库包或者我们自己的公共库包,那么使用NuGet毫无作用,但是实际情况恰恰相反,任何项目都需要记录日志,最好的情况是我们有一个公共的日志模块,任何老项目或新项目我们可以引用它,就无需再做开发。在新项目上来说这大大降低了工作量和开发量,因此我们需要一个库包管理机制来管理我们私有库包和我们需要使用的第三方库包。NuGet的优点拿AsyncModule.NetMQ.dll举例,AsyncModule.NetMQ.dll依赖NetMQ.dll,而NetMQ.dll又依赖AsyncIO.dll。目前我们需要数据库连接的地方我们需要引用AsyncModule.NetMQ.dll,我们可能会把它手工烤到我们需要的项目中,但是由于AsyncModule.N
基于Docker搭建分布式消息队列Kafka
获取镜像zookeeper镜像:zookeeper:3.4.9kafka镜像:wurstmeister/kafka:0.10.2.0kafka-manager镜像:kafka-manager:latest建立Zookeeper容器这里我们用最简单的方式创建一个独立的Zookeeper节点,如果要考虑zookeeper的高可用,可以将其做成一个集群,最好是能有多台机器。dockerrun--namesome-zookeeper\--restartalways\-p2181:2181\-dzookeeper默认的,容器内配置文件在,/conf/zoo.cfg,数据和日志目录默认在/data和/datalog,需要的话可以将上述目录映射到宿主机的可靠文件目录下。详情参考Zookeeper官方镜像建立kafka节点这里同样只做一个简单的单点kafkadockerrun--namekafka\-p9092:9092\-eKAFKA_ADVERTISED_HOST_NAME=kafka01\-eKAFKA_
2017年薪酬最高的15门编程语言,GO夺冠
原文:15HighestPayingProgrammingLanguagesin2017作者:PeterKim翻译:Diwei译者注:你从事的工作是基于哪一门编程语言?你的薪酬是多少?在所有编程语言中排名多少呢?作者在本文列举出了2017年薪酬最高的15门编程语言,看看你的语言排名多少吧!以下为译文。科技一直在经济领域和社会领域占据着主导地位,数百万人因此寻找到了自己的第一份职业,有的人甚至跨领域重新进行学习,就是为了从事计算机科学、编程和其他与技术相关的工作。尽管如此,企业还是在寻找高技能的程序员,有的企业为了找到合适的员工还会提高薪酬。由于科技还会继续扩展到新的平台和行业,因此为了将赚钱潜力最大化,同时也为了确保在技术领域的未来还能够占有一席之地,选择学习哪一门编程语言是非常重要的。但不管怎么样,经验还是很重要的。科技领域有大量的资源可以使用,同时还提供了专门的分类标准,以找到你当前最适合的职业。虽然去年我曾经也讲过这个话题,但是薪酬最高的编程语言在2017年已经发生了变化,下面所列举的编程语言
从虾米音乐“穷逼VIP”事件说起,程序员对代码注释应该怎么看?
原贴地址:https://www.v2ex.com/t/407653?p=111月20日,虾米音乐App前员工八座在知乎更新评论,“对不住各位,本人就是那位始作俑者程序员。今后我老老实实写代码,正正经经写注释”。他说,在自以为是的“吐槽”中丧失了对客户的敬畏,对所有虾米用户,以及互联网用户表示道歉。另外,该程序员表示,因为家庭原因,他早一月前就已经离职,对于此次发生的事件,他自己也没有想到。知乎链接:https://www.zhihu.com/question/68347364/answer/262277195其实类似的纷争并不少,比如在美国:微软已全面取消使用“黑名单”“白名单”两个词。“黑名单”(blacklist)现已替换为“阻止列表(blocklist)”“白名单”(whitelist)已替换为“允许列表”(allowlist)或“核准清单”(approvedlist)替换理由:Asacorporatepolicy,theterm“black
给程序员的几条建议,精彩配图
1.想清楚,再动手写代码刚入行的新手,为了展示自己的能力,拿到需求迫不及待地就开始上手写代码,大忌!2.不交流,就会头破血流不爱说话和沟通,需求都理解错误了,最后做出来才发现,只能加班返工。3.文档没人看,但还是要写文档的作用大部分时候不是用来沟通的,是用来做记录的,大部分需求还是通过口头沟通,但是不写文档做记录,后续就容易扯皮。4.一定要写注释时间久了,你会连自己的代码都看不懂。5.别指望需求会稳定产品需求是根据商业需求不断调整的,改需求是再正常不过的事,别抱怨。6.业务高于技术如果技术不为公司商业做服务,那将毫无价值,公司赚钱才是硬道理。7.不要心存侥幸你隐约感觉会出bug的地方,就一定会出bug。
Java程序员们最常犯的10个错误
1.将数组转化为列表将数组转化为一个列表时,程序员们经常这样做:List
后台架构设计―数据存储层
数据存储重要性:数据是企业最重要的财产;数据可靠性是企业的命根,一定要保证。单机存储原理:存储引擎:存储系统的发动机,它决定存储系统的功能和性能;引擎类型:哈希存储引擎、B树存储引擎、LSM存储引擎哈希存储引擎:基于哈希表结构:数组+链表;支持Create\Update\Delete\随机ReadB树存储引擎:基于BTree实现,支持单条记录的CURD,支持顺序查找。RDBMS使用较多。LSM树存储引擎:对数据的修改增量保存在内存,达到一定条件再批量更新到磁盘;优势在于批量写入;劣势在于读取需合并磁盘和内存;避免内存数据丢失:修改操作写入到CommitLog日志。数据模型:文件:以目录树组织,如linux,mac,windows;关系型:每个关系是一个表格,多行组成,每行多列;键值(Key-Value):Memcached,Tokey,Redis;列存储型:Casadra,Hbase;图形数据库:Neo4J,InfoGrid,InfiniteGraph文档型:MongoDB,CouchDB事务与并发控制:事务4个
微服务来了,配置怎么办?
本文来自微信号EAWorld,文中从配置与程序的关系,动静态配置结合模型及方案方案来讲解配置管理的能力。前些年没提微服务架构的时候,大家也都会做配置管理相关的事情,比如我接触过的很多项目都做有配置,做得有好有坏。大多是手工作坊,修改配置、重启服务……好像也能凑合。其实不论有没有微服务,把配置管理好的手段和方法都差不多,只是微服务架构重分布式的特点凸显了这个问题的重要性,再不管好配置,还想继续凑合就行不通了。本文目的是跟大家一起梳理配置管理的一些思路和方法,一起打好微服务架构的基础。目录:一、什么是配置二、配置与程序的关系三、配置管理的四个维度四、静态配置管理五、动态配置管理六、总结回顾一、什么是配置配置是独立于程序的变量①,配置通常有各种形态,有配置文件、数据库表、系统环境变量、进程启动参数等。一般我们会把配置按程序启动为分界线,分为两类:运行前的配置运行前的配置,通常是指与环境相关的一些配置,比如数据源、邮件服务器地址,不同的环境有不同的值。还有一类比如安全控制类的,例如weblogi
如何为您的微服务选择混合和多模型数据库
【51CTO.com快译】近十年来,大规模分布式系统得到了爆炸式增长,已经产生了一股可以说是对整个软件业开先河式的,数据库界的创意旋风。市场上也涌现了大量的颇具竞争力的数据库平台。在本文中,我们将探讨如何为您的应用去选择合适的数据库模型(是的,完全可以选择不止一个!)。我们也会讨论到这些数据模型的选择将如何帮助您去确定数据层面的各种技术。一、云架构,NoSQL和微服务在软件开发人员开始创建Web架构的应用时,那些在历史上一直主导着我们多年的关系型数据库架构,已经开始表现出“压力山大”了。特别是在我们开发那些被频繁使用的社交应用,和将越来越多的设备连接到物联网(IOT)的时候,客户端大量地读取和写入数据导致了数据层面的扩展需求。而与此同时,为了满足这些高扩展性的需求,新的数据库类型随之出现。在许多情况下,这些新的数据库是“非结构化查询语言(NoSQL)”或“非关系型”的数据模型解决方案。它们并非显性的关系模型,如文档、键-值、面向整列的、甚至是图表数据库。通常,这些数据库牺牲了一些在传统关系型数据库上为我们所熟悉的特性,如:强一致性、A
王东:微服务下的APM全链路监控
什么是APM?APM(ApplicationPerformanceManagement)即应用性能管理,属于IT运维管理(ITOM)范畴。主要是针对企业关键业务的IT应用性能和用户体验的监测、优化,提高企业IT应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本(TCO)。APM的发展历程Gartner对APM的定义(2014)2014年Gartner对APM的5个定义:Gartner对APM的定义(2016)2016年重新定义,将原来的五部分合成三部分。服务开发架构的发展历程一开始的应用开发是从Main-frame一直到2010年以前比较热的SOA架构,到14年比较热的Microsorvices架构,从14年开始基于容器化的Microsorvices。服务开发框架复杂度越来越高。微服务带来的挑战
MySQL · 最佳实践 · SQL Server三种常见备份
写文章登录MySQL·最佳实践·SQLServer三种常见备份阿里云云栖社区已认证的机构135minutesago摘要本期月报是SQLServer数据库备份技术系列文章的开篇,介绍三种常见的SQLServer备份方法的工作方式、使用T-SQL语句和使用SSMSIDE创建备份集三个层面,介绍SQLServer的三种常见备份的工作原理和使用方法。三种常见的备份包括:数据库完全备份(FullBackup)数据库日志备份(TransactionLogBackup)数据库差异备份(DifferentialBackup)备份的重要性在开始分享之前,我们首先来看看数据库备份的重要性。进入DT时代,数据的价值越发体现,数据已经成为每个公司赖以生存的生命线,数据的重要性不言而喻,而公司绝大多数核心数据都存放在数据库里。数据库本身的灾难恢复(DR)能力是数据安全的最后一道防线,也是数据库从业者对数据安全底线的坚守。数据库中数据潜在的安全风险包括:硬件故障、恶意入侵、用户误操作、数据库损坏和自然灾
BetterScroll:可能是目前最好用的移动端滚动插件
BetterScroll是一款重点解决移动端各种滚动场景需求的开源插件(GitHub地址),有下列功能支持滚动列表,下拉刷新,上拉刷新,轮播图,slider等功能。为了满足这些功能,better-scroll通过使用惯性滚动、边界回弹、滚动条淡入淡出来确保滚动的流畅。同时还支持很多API和事件,具体支持的事件可以查看官网讲的非常详细。由于它基于原生JavaScript实现,不依赖任何框架,所以既可以原生JavaScript引用,也可以与目前前端MVVM框架结合使用,比如,其官网上的示例就是与Vue的结合。如何使用:再讲如何使用的之前,我们先来了解一下他的滚动原理:在浏览器中的滚动中,当内容的高度高于外边容器的高度的时候也就出现了滚动条,我们可以通过使用滚动条来看到超出的部分.better-scroll的原理正是基于这里,内容部分的宽度/高度必须大于外部宽度/高度。所以在使用的时候外部容器的需要设置固定宽度,还有一个问题需要设置overflow:hidden,这是因为为了隐藏超出部分。然后就是什么时候对b
每日一博 | springboot+vue 的前后端分离与合并方案
springboot和vue结合的方案网络上的主要有以下两种:1.【不推荐】在html中直接使用script标签引入vue和一些常用的组件,这种方式和以前传统的开发是一样的,只是可以很爽的使用vue的双向数据绑定,这种方式只适合于普通的全栈开发。2.【推荐】使用vue官方的脚手架创建单独的前端工程项目,做到和后端完全独立开发和部署,后端单独部署一个纯restful的服务,而前端直接采用nginx来部署,这种称为完全的前后端分离架构开发模式,但是在分离中有很多api权限的问题需要解决,包括部署后的vuerouter路由需要在nginx中配置rewrite规则。这种前后端完全分离的架构也是目前互联网公司所采用的,后端服务器不再需要处理静态资源,也能减少后端服务器一些压力。一、为什么做前后端分离开发合并在传统行业中很多是以项目思想来主导的,而不是产品,一个项目会卖给很多的客户,并且部署到客户本地的机房里。在一些传统行业里面,部署实施人员的技术无法和互联网公司的运维团队相比,由于各种不定的环境也无法做到自动构建,容器化部署等。因此在这种情
AntV - G2 — 数据驱动的高交互可视化图形语法
G2是一套基于可视化编码的图形语法,以数据驱动,具有高度的易用性和扩展性,用户无需关注各种繁琐的实现细节,一条语句即可构建出各种各样的可交互的统计图表。同时,G2也是AntV最重要的组成,始于《TheGrammarofGraphics》一书描述的视觉编码语法系统(这也是G2项目命名的由来)。特性简单、易用:从数据出发,仅需几行代码就可以轻松获得想要的图表展示效果完备的可视化编码:以数据驱动,提供了从数据到图形的完整映射强大的扩展能力:任何图表,都可以基于图形语法灵活绘制,满足你无限的创意示例柱状图完整代码:
5个JavaScript编码规范-包括AirBnB, GitHub 和 Google
无论你是刚刚学习JavaScript,还是准备到大公司去前端面试,这5个JavaScript编码规范都可以帮助你写出更干净的代码。什么是编码规范?编码规范就是指导如何编写和组织代码的一系列标准。通过阅读这些编码规范,你可以知道各个公司的前端开发人员是如何编写代码的。我们为什么需要编码规范?一个主要原因是:每个人都以不同的方式编写代码。我可能喜欢以某种方式做某件事,而且你可能喜欢以不同的方式去做。如果我们每个人都只在我们自己的代码上工作,这样并没有什么问题。但是,如果你有一个10个,100个甚至1000个开发人员的团队,都在同一个代码库上工作,会发生什么呢?事情变得非常糟糕。编码规范可以使新开发人员快速掌握代码,然后编写出其他开发人员可以快速轻松理解的代码!AirbnbJavaScriptStyleGuide一份最合理的JavasScript编码规范。Airbnb的这份编码规范是互联网上最受欢迎的JavaScript编码规范之一。它几乎涵盖了JavaScript的各个方面。阅读地址:htt
上下轮播封装
上下轮播封装//html 12321fhuhfkdhfjkdhfjhsfs 22321地方就圣诞快乐会飞的回复你没积分 32321法可适当肥肉头皮那地方突然特个 42321沃尔特Yui离开家会骂你发②YTJHNBV 52321WERTYUIBGNBVCXHYUKVFDRSTYHGBVCdghfgd的复合弓方法不给个 62321个货车给大家了电饭锅和公交卡让他热点图集 72321沃尔听话就不可能的够花就美女出模具厂的是大法官发都发 82321是电饭锅很快就好v程序有同感的非常规你
Node学习——开篇
Node学习——开篇前言:自从下决心转学前端以来,我的专业课java基本荒废了,所以对于后台开发的逻辑也已基本忘干净了。但是作为一名准前端程序猿,我认为还是有必要了解后端开发的,虽不必深入学习,但是能够了解项目从前端到后端的整个流程,实现简单的业务逻辑(增删改查)应该对我们大有裨益。NodeJS应该说是前端开发人员涉及后端开发的最佳选择,因为使用的是前端很熟悉的Javascript语言。一、什么是Node.jsNode.js是一个基于V8引擎的服务器端Javascript运行环境。Javascript(简称JS,下同)从此有了开发后段应用程序的能力。因为使用的是JS语言,所以一发布以来就受到了广大前端开发人员的喜爱。很多前端开发人员开始涉足后端开发,使用Node.js重构前端工具。Node.js通过非阻塞I/O流、事件驱动机制展现了它超强的高并发能力。此外,Node使用的是高性能的V8引擎,提供了很多不同用途的API,采用全新的编译技术,实现了一个高性能的服务器。二、Node.js环境安装Node.js的环境安装十分简单,去官网
JavaScript学习笔记(十)——高阶函数之map,reduce,filter,sort
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意!如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/学习。高阶函数概念:函数可以接受另一个函数作为参数的函数称作高阶函数。简单例子:functionadd(x,y,f){returnf(x)+f(y);}x=-5;y=6;varf=Math.abs;console.log(add(x,y,f));//返回结果是11mapArray的map()方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。functionsqrt(x){//数组元素开平方根returnMath.sqrt(x);}vararr=[4,9,16,25,36];console.log(arr.map(sqrt));//结果为[2,3,4,5,6]由于map()方法定义在JavaScript的Array中,我们调用Array的map
最新的实用JS和CSS库分享
在每个月,我们都会为大家分享一些最新、有趣的前端库,希望它们中的一些会对你的项目有所帮助。当然,如果你也发现了一些有趣、实用的库,框架或是工具,也欢迎留言与大家一同分享。1.Currencycurrency.js是一个用于处理货币值的轻量级JavaScript库,它解决了JS中的浮点问题,你无须担心Decimal这类精准的数据类型,就可以直接进行基本的算数运算。同时,它也适合不同类型的数据输入,例如字符串、数字和货币对象。项目地址:https://github.com/scurker/currency.js2.Lass你可以使用Lass搭建基于Node.js的脚手架工具。它易于安装,你只需要在终端上运行npminstall-glass即可,并且它还提供了丰富的功能,如使用ava进行单元测试,利用prettier自动格式化代码,自动gitinit,自动Markdown语法转化以及使用Remark进行代码检查等。项目地址:https://github.com/lass
DevExpress v17.2—WinForms篇(二)
DevExpress首推团队升级培训套包,最高可省10万元!查看详情>>>用户界面套包DevExpressv17.2终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。开篇介绍了DevExpressWinFormsv17.2DataGridControl、DiagramControl、Editors等的新功能,快来下载试用新版本!DiagramControl思维导图布局新的MindMap自动布局算法用于创建围绕中心思想或主题排列的非线性层次图。新的滚动模式DevExpressDiagram附带一个新的滚动模式,启用此模式后,仅当如表内容不完全可见(不管当前页面大小)时才显示滚动条。增强绑定操作DevExpressDiagram的绑定机制已被更新为以下新功能:图表和数据源之间的双向同步:您可以使用事件自定义同步。绑定到分层数据:容器现在用来表示多层次的层次结构。增强SVGDevExpressDiagramv17.2附带了一个新的SVG渲染引擎,并扩展支持各种SVG元素。另外,您现在可以覆