聚合文章列表
14 浏览

使 WPF 支持触摸板的横向滚动

微软终于开始学苹果一样好好做触摸板了(就是键盘空格键下面那一大块)。然而鉴于以前没有好好做,以至于WPF程序甚至都没有对触摸板的横向滚动提供支持(竖向滚动是直接使用了MouseWheel,汗……)。但有些功能真希望能够支持横向滚动!本文将介绍让触摸板支持横向滚动的方法,本质上也是用MouseWheel,但却支持了横向。本文同时编写了中文和英文两个版本。ThisarticleiswritteninbothEnglishandChinese.▲精确式触摸板我们需要从Windows的窗口消息中获取WM_MOUSEHWHEEL消息。对,就是鼠标滚轮消息!以前我们只取了纵向数据,现在我们要取横向数据。首先,我们需要能够监听得到消息才行。重写Window的OnSourceInitialized方法可以开始监听消息;如果代码没办法写到Window中,可以通过Window.GetWindow(DependencyObject)获取到窗口实例后监听它的SourceI

.Net 2017-11-23 发布
21 浏览

Spring AMQP + Rabbit 配置多数据源消息队列

SpringAMQP+Rabbit配置多数据源消息队列一般在稍微大一点的项目中,需要配置多个数据库数据源,最简单的方式是用Spring来实现,只需要继承AbstractRoutingDataSource类,实现determineCurrentLookupKey方法,再配合使用ThreadLocal就可以实现。但是如何实现MQ的多数据源呢?假设有部署在不同服务器上的两个消息队列,或者是同一服务器,不同vhost的消息队列,在一个项目中,我如何自由地选择从哪个队列收发消息呢?下面说说用SpringAMQP+Rabbit的实现过程及踩过的坑。最开始的单数据源的实现很简单,网上有好多博文可以参考,官网也有介绍。主要就是创建一个xml的配置文件,添加各种必要的配置,声明connection-factory、rabbitListenerContainerFactory、rabbitTemplate、queue、exchange、binding等等。然后用RabbitTemplate来发消息,用@

消息系统 2017-11-23 发布
16 浏览

日志: 分布式系统的核心

最近这段时间一直在研究消息队列、文件系统、数据库等,慢慢的发现他们都有一个核心组件:日志.有时也叫write-aheadlogs、commitlogs或者事物logs,通常指在应用所有的修改之前先写入日志,一般会将重放日志、撤销日志都写进去。我们经常听到很多名词,NoSQL数据库、KV存储、Hadoop、raft、paxos以及版本控制等等,这些中间件或者协议本质上都或多或少依赖于日志,可以发现日志一直都在分布式系统中扮演者非常重要的角色。什么是日志?日志就是按照时间顺序追加的、完全有序的记录序列,其实就是一种特殊的文件格式,文件是一个字节数组,而这里日志是一个记录数据,只是相对于文件来说,这里每条记录都是按照时间的相对顺序排列的,可以说日志是最简单的一种存储模型,读取一般都是从左到右,例如消息队列,一般是线性写入log文件,消费者顺序从offset开始读取。由于日志本身固有的特性,记录从左向右开始顺序插入,也就意味着左边的记录相较于右边的记录“更老”,也就是说我们可以不用依赖于系统时钟,这个特性对于分布式系统来说

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

程序员提高代码可读性的5个方法,确保一个月后仍能读懂代码!

好的代码的可读性表现在让人快速理解、轻松维护、容易扩展。如果用通俗的一句话来说,就是别人在阅读代码过程中飙脏话的频率是衡量你代码质量的唯一标准。如何提高代码的可读性呢?下面给程序员小伙伴们分享5个技巧:0、代码清晰表达意图一个比较优秀的开发者,在阅读代码通常不拘泥于编程语言,而是代码所要表达的实质。所以,他会去搞清楚一件事,代码的目的是什么,同时会忽略它是如何做的。打个比方,小学生阅读文章都会关注词语本身,而高中生则会去注意语法和文章传达的思想。我们要遵守的原则是,代码能够让人快速看懂,可以一个月后能快速读懂代码,这是最低的要求啦!1、排版规范程序员的代码排版可是基本功,比如缩进和命名要规范统一,一行不要写太宽,一个函数不要写太长,这些都是最基本的。至少你要确保代码让人读起来有种赏心悦目的感觉!2、注释清晰通常而言,注释应先于代码存在,而不是编写完代码之后去补注释。注释应该是说明代码的意图,代码注释贵在精不在多。它就像是一个作家在阐述自己写作时的想法一样。3、解释给别人听检验代码可读

程序员 2017-11-23 发布
15 浏览

一张图看懂程序猿:过去都是泪点,现在都是笑点

阅读本文,请自带Rap~作为一个老程序员给我一分钟带你了解全宇宙第一神秘的群体:程序员过去我主要工作写代码,找漏洞,补漏洞和需求方、安全部门,扯皮,扯皮,扯皮自从遇到一个叫“泰睿”的人之后生活和工作都发生彻底变化了作为一个开发者常用工具和必备技能变了最讨厌的话和最常YY的事也改变了跟安全人员本质矛盾和对自我定位都发生变化了1常用工具变了有了“泰睿”之后,用“嘴”和安全人员扯皮的时间大幅减少!2.必备技能换了使用“泰睿”后,用来找安全问题和修复Bug时间大幅减少!3.最讨厌的一句话改了使用“泰睿”前,最讨厌的一句话。“程序又出现安全bug了”。使用“泰睿”后,最讨厌的一句话,“产品需求又发生变化了”。4.最常YY的事儿转移了使用“泰睿”前,最常YY的事儿,就是“编码间,bug灰飞烟灭”;使用“泰睿”后,最常YY的事儿

程序员 2017-11-23 发布
16 浏览

Andrej Karpathy发文谈神经网络后,引发的对硬件,软件和学件的思考

雷锋网按:近日,TeslaAI总监AndrejKarpathy发表了一篇关于“Software2.0”的文章,该文章引发了对未来神经网络的编程方式的更深入探讨,本文就是其中之一。在Software2.0的基础上,本文作者UriYerushalmi还借用了南京大学周志华教授在2016年提出的“学件”(Learnware)的概念,并更详细地讲述了他眼中的“学件”和软件的区别。他山之石,可以攻玉,本着传递更多信息的想法,雷锋网特此编译该文章,供读者讨论。本文作者UriYerushalmi为AI社区Dopamind的创始人,2008年于以色列Bar-llanUniversity获得计算机和神经科学博士学位。以下是雷锋网编译的文章全文:本周,我阅读了AndrejKarpathy的“Software2.0”,他分析了新软件“Software2.0”与旧软件“Software1.0”之间的区别。我和Karpathy有一个非常类似的结论,我们来看看这种新型软件的兴起如何影响软件行业和市场。软件vs学件以下是旧软件和Kar

程序员 2017-11-23 发布
AD 友情赞助
15 浏览

第一次当面试官

原文http://www.cnblogs.com/banli/archive/2013/05/13/3076926.html今天第一面试别人,感觉还行,大概80分钟的样子结束了我的第一次,其实还是蛮长。应该有80*60/12多雷。以前都是别人面试我,这次终于也当了一次面试官。这次才真正体会到,其实面试官有时候可能比求职者,要付出更多时间来准备面试。面试官要根据简历的情况,来准备面试题目,要在短短的几十分钟内,还是需要面试官根据面试情况来调整面试题目等,以最短的时间获得准确的信息,了解一个人,其实很多时候还是看感觉的。前几天看了下@左耳朵耗子博客上的关于面试的几篇文章,收获到很多干货。其实面试的目标是想获得下面三件事情:(1)这个程序员的是否够聪明?(2)这个程序员能否把事情搞定?(3)这个程序员能和我的团队在一起工作吗?我的处女面试大概分下面几个步骤:开场我是XX的工程师,很高兴由我来和你聊聊技术,聊聊项目等,其实我也是第一次面试别人,可能我比你还紧张,所以也不用太紧张太严肃。Ok

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

做程序猿,你想清楚了吗?

来自网络国家越来越重视全民教育程度,现在事实上差不多也快普及大学了,每年几百万的大学生踏入社会,但是每年百分之九十多的大学生毕业后就迷茫了,毕业了自己能做什么呢?我总结的毕业大学生的工作岗位不外乎只有三种,回家工作的(公务员、银行机关等上班)、学计算机搞计算机的(程序员一行)、搞市场销售的。这样看来,大学毕业后能用上专业知识上班的人的可谓寥寥无几。做什么岗位高大上还赚钱呢?很多人冲着这句话义无反顾的纷纷入坑,培训计算机去梦想着去做那些高大上的程序员美梦,我于心不忍,作为一个老程序猿给即将踏入程序员行列的人一些现实的忠告。做程序猿真的越年轻越早越好,计算机行业的最好,很多不是计算机行业的,应聘的时候公司都不要的,因为在学校课程学过然后自己学好的最好,当然自学的也可以,就是尽力在学校的的时候就要学好,不要出来了再学,打脸的太多,毕业后的时间你耗不起,如果你已经二十几岁了还没有学会掌握你想要从事的计算机开发语言,我这里奉劝各位一句,我希望你别做了,做计算机真的需要热爱和长时间的兴趣投入和积累钻研,需要长远的目标规划,不是毕业时的一时冲动,

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

小程序中tabBar的使用

知晓程序员,专注微信小程序开发的程序员!今天说说tabBar的使用,先看看官方说法:如果小程序是一个多tab应用(客户端窗口的底部或顶部有tab栏可以切换页面),可以通过tabBar配置项指定tab栏的表现,以及tab切换时显示的对应页面。备注:当设置position为top时,将不会显示icontabBar中的list是一个数组,只能配置最少2个、最多5个tab,tab按数组的顺序排序。(tabBar图例讲解)今天在做投一个小程序时,也用到了tabBar,先看一下示例:为什么没有自己实现tabBar?因为自己实现的tabBar,没有官方的常驻底部的效果好,官方的组件也有限制:不能完全满足自定义需求。比如不支持iconfont图标,也不能展示其他样式风格。不废话,来看代码吧,代码需要在app.json中进行配置,如下:"tabBar":{"color":"#7f8389","selectedColor":"#00a8f3","borderStyle":"bla

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

iOS程序员眼中的首次使用产品体验

一.前言首先想说一下为什么写这篇文章:《启示录》这本书曾提到:如果开发的产品没有市场价值,那么无论开发团队多么优秀也无济于事。那么同样的,在我们程序员费尽周折抓取各种数据,尝试不同的技术方案只为了让冷启动快0.1秒的同时,可能在产品层面稍微一个小技巧就能让用户感觉这1秒过得更快,那我们程序员进行代码层级的优化之前是不是最好思考一下产品层面的优化呢?有数据统计,App安装前三天,平均流失77%的日活跃用户。因为新用户是没有耐心的,他不知道你的产品能否给他们带来便利,提高效率,产生价值,带着这种怀疑的态度使用App过程中,可能一丁点的的不爽、彷徨就导致用户卸载了App。就好比相亲,如果外在的皮囊在第一时间让对方感到不适,那么无论你的内在的灵魂多么有趣也是无济于事(除非你是个会吹牛逼的程序员??)。换个角度来讲,可能整个App的产品设计很棒,代码设计和优化也做到了极致,但是因为用户第一次使用感觉使用起来太复杂,跟预期相差太远,就导致用户还没体验到核心模块就卸载了App。你只有一次机会给别人留下好印象,同样的,近年来手机、电

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

那些 22 岁毕业做程序员的“普通”人,他们 50 岁左右时的人生轨迹是怎样的?

本人今年35了,已经干了14年程序员,是14年不是13年,因为我是专科毕业。一直就是普普通通的程序员,特别纯的码农,从没做过管理岗位,并且很可能以后也是如此。现在已经上有老下有小。曾经在某著名互联网公司(现在有些过气)工作过很多年,现在在一家创业公司,也有很多年了。之所以一直在一线写代码,我想根本原因可能是性格问题,我是一个特别内向的人,与世无争,不喜欢跟人打交道,不会聊天,有社交恐惧症,就喜欢对着电脑写代码,朋友评价我是「生活在自己的世界里」。另外,常年坐着写代码让我得了职业病,颈椎和腰椎都不太好。当然我也自认为是有些优点的:首先我对自己的逻辑能力还比较有自信,我也喜欢学习,编程完全是自学的,现在虽然一把年纪了,还是喜欢学习新技术,每天上下班地铁都会看书,特别喜欢把学到的东西用在工作中。踏实,不是迫不得已很少跳槽,14年总共就干过三家公司。有些完美主义,先不说编程能力如何,首先是态度端正,对自己写的代码认真负责,我最看不上的就是那种一味图省事,写面条式代码的人,这种人

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

我就问一句,你们对程序员到底有什么误解?!

第二,强制的程度不同。教育却不是,老师不会说只允许你背我教过的唐诗,不能背其他的。而洗脑是不1.图书馆+考试今天考完试有点不舒服,下午复习的时候有点不在状态,可能今天想的,最多的就是觉得自己太年轻,太2.做标记不太明显,以至于忽略了那些题的存在,本来是很简单的问题,随便背背就可以。3.自己前期准备不足,玩的比较多,所以最后整的慌慌张张,以至于没有那么仔细的去想一些问题。心情。可能是因为考试的原因,考完之后心情异常的低落,无论怎么都无法自拔,突然很想家很想家,很想父母,想朋友,没有6关心,没有依靠,突然很害怕一个人,当你习惯了有人的陪伴,就真的有点不容易再去重新适应一个人的生活。没事,我还是那个坚强的自己,许多东西需要自己去扛,去成长,有些东西,有回忆就足够了。2016.07.161.服务员+看书感悟。1.去酒店当临时工,是婚宴。当看到新娘穿上婚纱同新新郎一同走进婚姻的殿堂时,真心的感觉到结婚不是一件小事,那句‘一个女生最美丽的时刻就是穿上婚纱的那一刻’一点也没错(虽然结婚的不是我)。能够放心的把自己的一辈子交托给别人,能够走到最

程序员 2017-11-26 发布
AD 友情赞助
10 浏览

我的男朋友是名程序员,而非程序猿

自创图片我的男朋友是一名程序员。就是大家所理解的那种天天敲键盘的那种码农。对于所谓的程序猿,民间流传着这样一种说法,钱多、话少、死得早!还有就是致命的普遍低情商。当然,我觉得这是对于程序员的一种偏见,除了在工作时别人是无法融入他们的自我的小世界,而且在思考问题的时候任何人都不能打扰之外,其他的也没什么特别不好的地方。他们的工作性质就是每天对着一群我们不理解的代码进行研究。同事嘛,只能说大部分是男同胞们。如果你问他公司有没有漂亮的女同事啊,他会说:“没注意到,有那个时间还不如多敲几行代码呢。”程序员是一个烧脑的职业,如果给他放假让他出去嗨,他会选择宁愿在家多睡一会,让眼睛和大脑好好休息一下。我有次去面试,面试官问:“有男朋友吗?”“有啊。”“做得什么职业。”“程序员,就是那种敲代码的”“哦”当我把对话内容告诉他时,他很不开心的样子说在他们行业内部人员看来,程序猿是一种骂人的说法,就好像说“设计师”是“美工”一样。于是,他就从公司的职位名称中特意找出来了对他的介绍。

程序员 2017-11-26 发布
13 浏览

[译]64-ia-32架构优化手册(10)

2.6.Intel®超线程技术通过在一个物理处理器内或一个物理处理器封装内的每个处理器核内提供多个逻辑处理器,Intel®超线程技术(HT技术)使得软件可以利用任务级或线程级并行性。在其在IntelXeon处理器的第一次实现中,超线程技术使单个物理寄存器(或一个处理器核)看起来有两个或多个逻辑处理器。基于KnightsLanding微架构的IntelXeonPhi处理器在每个处理器核中支持4个逻辑处理器;实现在KnightsLanding微架构的超线程技术的细节,参考第16章。大多数Intel架构处理器家族支持在每个处理器核中,或在早期实现中一个物理处理器里,两个逻辑处理器的超线程技术。本节的剩余部分描述超线程技术早期实现的特性。大部分描述也适用于后期支持两个逻辑处理器的超线程技术实现。本章的微架构部分提供了各个微架构额外的细节以及对超线程技术的改进。两个逻辑处理器每个都有一整组架构寄存器,同时共享单个物理处理器的资源。通过维护两个处理器的架构状态,一个支持HT技术的处理器对软件,包括操作系统以及应用程序代码,看来就像两个处理器。

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

[译] Twitter 架构如何支持上亿用户

谈到设计Twitter,我们首先要问一个本质问题:设计Twitter的基本方法论是什么?其实是我们计算机设计最基本的方法:分治法(DivideandConquer)。什么是分治法呢?就是把问题不断的拆解,拆解到你可以解决为止,它的艺术在于,从哪个维度来拆解非常考验我们能力。如果要求一周开发出Twitter,你会怎么做?你的架构是什么样的呢?相信你一定不会给出复杂的架构。前端是各种各样的业务逻辑,后端是MySQL数据库,这样就够了。因为这已经解决了当时的问题,满足了一周开发出来的要求。但随着Twitter的成长,我们会遇到各种各样新的挑战:MySQL难扩展。为什么难扩展?因为它把同样的一个数据分成各种关系存在里面,每次取的时候,都要通过Join来进行复杂的操作,这个Join当数据被切分的时候存在更多的服务器上,会变得越来越复杂,所以很难扩展。小变化也要全部部署。任何变化都需要部署到所有机器上,因为服务不断升级,就变成了每天不断部署,变成了dailydeployment。所以每次

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

mysql实现高可用架构之MHA

mysql实现高可用架构之MHA一、简介MHA(MasterHA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automatingmasterfailover功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过于其它从节点获取额外信息来避免一致性方面的问题。MHA还提供了master节点的在线切换功能,即按需切换master/slave节点。MHA是由日本人yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的MySQL高可用方案。MHA能够在30秒内实现故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品TMHA,目前已支持一主一从。二、MHA服务2.1服务角色MHA服务有两种角色,MHAManager(管理节点)和MHANode(数据节点):MHAManager:通常单独部署在一台独立机器上管理多个m

MySQL 2017-11-23 发布
20 浏览

MySQL索引浅谈

MySQL索引浅谈业界资讯来源:点融黑帮发布:2017-11-23浏览:25摘要:本文关于MySQL的讲述是基于MySQL标准版本,不能覆盖分支版本(比如MariaDB,Percona,XtraDB)中的特性,关于索引的所有讲述如果没有在特指的情况下都是基于InnoDB存储引擎的,文中所用的“优化”一词,更多的是一个参考,而非绝对,所有和优化相关的操作都离不开大量的数据样本,对应的性能指标定义,和无数次的调优方案尝试,调整。本文将“优化”定义为工作负载相同的情况下响应时间的降低。笔者认为MySQL性能优化主要包含3个方面,从微观到宏观依次为:SQL优化:当然其中必然包含索引的优化,表设计优化,SQL拆分,查询缓存优化等问题;服务器参数优化:比如各种全局缓存的微调(连接数配置,InnoDB缓冲池相关配置等),每个连接需要的各种缓存微调,IO参数调整(比如日志缓冲刷盘方式),并发配置等;服务器架构优化:比如主从复制,垂直拆分,水平拆分,甚至业务上增加缓存层等都能直接减轻数据库压力,从而降低响应时间。当然还有服务器硬件方面地调

MySQL 2017-11-23 发布
18 浏览

分区表的索引

分区表的索引在分区表上创建的索引分为:分区对齐索引(AlignedIndex)和非对齐索引。对齐索引是指索引结构的分区和基础表的分区相同,这意味着,在表的一个分区上创建的索引,索引结构也在同一个分区中。索引结构在每个分区中都是独立存储和维护的,如果索引结构和表结构在同一个分区(也就是在同一个文件组上),那么索引是与基础表对齐的索引。创建对齐索引,并不意味着必须使用相同名称的分区scheme,只要分区schem使用的分区边界和每个分区存储的文件组相同,这两个分区schem是等价的,使用等价的分区scheme创建的索引和基础表是对齐的。索引对齐能够提升查询性能,能够实现分区的隔离和分区的切换(switch)操作,分区的隔离能够避免分区列上的竞争,从而有效避免死锁;通过分区的切换和数据表的截断(TRUNCATETABLE)这一操作组合,使得在删除海量数据表上的一个分区时,能够瞬间完成,而分区对齐的好处不止如此,建议创建对齐索引。在分区表上创建索引,如果没有使用ON子句指定文件组,那么,默认创建的索引是分区索引,分区scheme和基础表相同,

SQL Server 2017-11-23 发布
16 浏览

MSSQL • 最佳实践 • SQL Server三种常见备份

摘要本期月报是SQLServer数据库备份技术系列文章的开篇,介绍三种常见的SQLServer备份方法的工作方式、使用T-SQL语句和使用SSMSIDE创建备份集三个层面,介绍SQLServer的三种常见备份的工作原理和使用方法。三种常见的备份包括:数据库完全备份(FullBackup)数据库日志备份(TransactionLogBackup)数据库差异备份(DifferentialBackup)备份的重要性在开始分享之前,我们首先来看看数据库备份的重要性。进入DT时代,数据的价值越发体现,数据已经成为每个公司赖以生存的生命线,数据的重要性不言而喻,而公司绝大多数核心数据都存放在数据库里。数据库本身的灾难恢复(DR)能力是数据安全的最后一道防线,也是数据库从业者对数据安全底线的坚守。数据库中数据潜在的安全风险包括:硬件故障、恶意入侵、用户误操作、数据库损坏和自然灾害导致的数据损失等。在关系型数据库SQLServer中,数据库备份是灾难恢复的能力有力保证。FullBackupFullBackup(完全

SQL Server 2017-11-23 发布
15 浏览

iOS-webApp开发Js交互

国内越来越多的移动端开发趋向于webApp的形式去开发了,那在webApp开发中经常要做一些Js交互的操作。官方的Js交互操作:UIWebView:[webViewstringByEvaluatingJavaScriptFromString:@""];WKWebView:[webViewevaluateJavaScript:@""completionHandler:^(id_Nullable,NSError*_Nullableerror){}];在这里就不说这两种Js交互了,要说的是第三的Js交互WebViewJavascriptBridge,它使Js交互使用变得更加简单,不过本人在使用cocoapod到工程里面使用的时候,在WKWebView发生崩溃,最后以导入文件的方式去使用就没有事了。WKWebView*web=[[WKWebViewalloc]initWithFrame:CGRectMake(0,20,self.view.bounds.size.width,self.view.bounds

JavaScript 2017-11-01 发布
AD 友情赞助