开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

SpringCloud(第 021 篇)Zuul 的过滤器 ZuulFilter 的使用

1、我们在学 Spring 的时候,就有过滤器和拦截器的使用,而 Zuul 同样也有过滤器的使用,本章节我们指在如何简单使用 ZuulFilter。
HMILYYLIMH 发布于 3小时前 阅读 10

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

jQuery Validate验证框架详解

一、导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="<%=path%>/validate/jquery.validate.min.js"></script> 注:<%=request.getContextPath() %>返回web项目的根路径。 二、默认校验规则 (1)、required:true               必输字段 (2)、remote:"remote-valid.jsp"   使用ajax方法调用remote-valid.jsp验证输入值 (3)、email:true                  必须输入正确格式的电子邮件 (4)、url:true                    必须输入正确格式的网址 (5)、date:true                   必须输入正确格式的日期,日期校验ie6出错,慎用 (6)、dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)、number:true                 必须输入合法的数字(负数,小数) (8)、digits:true                 必须输入整数 (9)、creditcard:true             必须输入合法的信用卡号 (10)、equalTo:"#password"        输入值必须和#password相同 (11)、accep...
爱敲代码的程序员 发布于 4小时前 阅读 16

从源码角度对比Yarn下的App对任务失败的控制

在Yarn/MRV2/Spark里都有任务失败再重试的设置,Yarn作为资源管理框架,而MRV2/Spark作为计算框架,它们的失败重试有什么不同? 有哪些参数来控制失败重试? Spark on Yarn的时候参数又有什么影响? ## Yarn的AM失败重试 Yarn作为资源管理框架,由RM负责AM(ApplicationMaster),具体的任务是由AM自己负责,所以Yarn对于一个Job的重试是在AM层级上的,其参数为 `yarn.resourcemanager.am.max-attempts` 或 `yarn.resourcemanager.am.max-retries`,默认值为2,即如果一个Job的AM死掉了,RM会重新分配container重启AM一次,而对于container的挂掉,则由具体的AppMaster实现来管理,该参数判断代码如下: ```java // RMAppImpl.java public RMAppState transition(RMAppImpl app, RMAppEvent event) { int numberOfFailure = app.getNumFailedAppAttempts(); // other code... if (numberOfFailure >= app.maxAppAttempts) { app.isNumAttemptsBeyondThreshold = true; } app.rememberTargetTransitionsAndStoreState(event, new AttemptFailedFinalStateSavedTransition(), RMAppState.FAILED, RMAppState.FAILED); } ``` > 注意:如果一个Job失败了,可不一定会触发这个重试...
问津已非少年 发布于 5小时前 阅读 14

从 UNIX 到 GitHub:十个关于自由和开源软件历史的重要事件

本文记录了自由和开源历史上的一些重要时刻,也称得上是 FOSS 历史上的大事件。从 UNIX 的全盛时期,到 GNU 和 Linux 的诞生,再到 GitHub 将开源“民主化”,以及在它们之间的一切。
编辑部的故事 发布于 5小时前 阅读 55

为什么允许任何人完全私有化PSI的代码?

PSI是一款基于SaaS模式(Software as a Service软件即服务)的企业管理软件。PSI以商贸企业的核心业务:采购、销售、库存(进销存)为切入点,最终目标是行业化的ERP解决方案。 PSI官网:https://gitee.com/crm8000/PSI PSI一直坚持:允许任何人完全私有化PSI的代码。这里的完全私有化包括但不限于:直接销售获利;去掉代码里面关于PSI的任何标志,包括版权标志;用PSI的代码去申请专利。只要是能想到的商业行为,都许可。 这是为什么呢? 1、PSI本身在不断地开发中,私有化的代码在将来合并升级方面,将会有巨大的工作量。现实是一旦私有化,基本上也就不太可能合并新代码了。 2、PSI经过不断发展,形成了依托开源中国和码云的一个社区。私有化代码的公司,就需要以单个公司的资源与整个开源社区抗衡,其难度之大可想而知。 3、这也是PSI本身的品牌策略,通过许可他人全面的权利,并帮助别人赚钱,会帮助PSI形成良好的口碑。 4、任何一个公司的市场能力都是有限的,特别是在管理软件市场,大量的个性化需求导致需要众多的公司去服务。所以即使不允许私有化,也不会给PSI本身带来巨大的好处。反而倒不如完全开放,和大家一起开拓市场。 在实际的社区运营中,除了允许完全私有...
PSI 发布于 11小时前 阅读 125 评论 2 点赞 1

为什么你需要将代码迁移到ASP.NET Core 2.0?

随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代。开发者们可以选择使用命令行、个人喜好的文本编辑器、Visual Studio 2017 15.3 和 Visual Studio Code 来开发自己的 .NET Core 2.0 项目。同时,微软 .NET 开发工具组也宣布了 ASP.NET Core 2.0 的发布,并且此版本与 .NET Core 2.0、Visual Studio 2017 15.3 和新的 Razor Pages 页面优化范例兼容。相信目前技术社区中开发人员讨论最多的问题就是:是否应该将代码迁移到 ASP.NET Core 2.0? ” 答案是肯定的。 下面就让我们看看将代码迁移到 ASP.NET Core 2.0 有哪些好处?   性能 性能提升是 ASP.NET Core 2.0 带来的最显著的改变。 随着 ASP.NET Core 2.0 中新技术和语言增强的出现,代码在编译时会自动进行优化。 这项改变能够带来的好处就是,个人不再需要更改代码。编译器会在使用新的语言增强功能进行重新编译时,对代码进行优化。 TechEmpower 发现在超过 230 个使用 Web 框架基准的框架中,ASP.NET Core 在性能上都取得了巨大的进步。   新的编码范例 ASP.NET Core 新版本的发布,引入了一种新的编码范例。新的编码范例使得基于页面的设计和编码比 Model-View-Controller 结构更加简单和容易。使用 ...
葡萄城控件技术团队 发布于 14小时前 阅读 252

java多线程——并发测试

并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
wier 发布于 14小时前 阅读 338 点赞 2

Java9新特性——module模块系统

官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm 这玩意就是一个列表,具体的技术细节需要根据官方文档挖一挖。 modular-模块系统 --- java9的模块化,从一个独立的开源项目而来,名为Jigsaw。 项目官网:http://openjdk.java.net/projects/jigsaw/ ### 为什么要使用模块化 java开发者都知道,使用java开发应用程序都会遇到一个问题,Jar hell,他就像windows里的dll hell。 比如我们启动一个不算大的应用,但一来了很多的jar,如下图: ![输入图片说明](https://static.oschina.net/uploads/img/201709/26094041_w0RP.png "在这里输入图片标题") 摘自:Mark Reinhold的演讲 https://www.youtube.com/watch?v=l1s7R85GF1A 这是很常见的。虽然你可以使用 "java -Djava.ext.dirs=lib xxx" 让命令行小一些,但不可否认,他的classpath就是那么长。顺便说一句,java9中不允许使用extdirs了。 另一方面,jdk本身有很多的api: ![输入图片说明](https://static.oschina.net/uploads/img/201709/26094131_JZAh.png "在这里输入图片标题") 对于一些小设备,它太庞大了。 ### helloworld...
polly 发布于 14小时前 阅读 707 评论 7 点赞 3 打赏 1

spring boot / cloud (十八) 使用docker快速搭建本地环境

# spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越来越多. 然而要顺利的安装好这些中间件也是一个比较费时费力的工作. 俗话说"工欲善其事,必先利其器",这篇文章,就跟大家一起分享一下使用docker在本地环境或者测试环境快速搭建我们常用的一些中间件容器的方法, (这里没有提及生产环境,并不是说生产环境不能使用docker,只是说要在生产环境上使用,请务必根据自身的实际情况,做好充分的评估) ## **docker安装** **docker支持多种操作系统,本文的内容则是基于centos7操作系统的** docker的文档写的很清晰,大家可以在 https://docs.docker.com/engine/installation/linux/docker-ce/centos/ 站点中按照文档的步骤一步一步的安装docker , 假如一切正常 , 大家在命令行输入version , 会得到如下结果 : ``` bash $ sudo docker version # 结果输出 : Client: Version: 17.09.0-ce-rc2 API version: 1.32 Go version: go1.8.3 Git commit: 363a3e7 Built: Thu Sep 14 01:54:43 2017 OS/Arch: linux/amd64 Server: Version: 17.09.0-ce-rc2 API version...
wangkang80 发布于 15小时前 阅读 185 点赞 1

《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同。常见的类型有组件类、活动类、基于React+redux的业务项目、RN项目、Node.js项目等等。如果想要对每个项目进行一些规范的约束比如Git提交规范、Javascript规范简直难于登天。所有的这些,只因为缺少一个好用的工程化工具。从项目创建、开发、构建、代码规范检查到最终项目上线,通过CLI可以提升效率,同时保障开发规范的实施。
cpselvis 发布于 1天前 阅读 81

Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

> 我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请求经常会超时,而之后的调用就没有问题了。下面我们就来说说造成这个问题的原因,以及如何解决的方法。 ## 问题原因 造成第一次服务调用出现失败的原因主要是Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的,而是在调用的时候才会去创建相应的Client,所以第一次调用的耗时不仅仅包含发送HTTP请求的时间,还包含了创建RibbonClient的时间,这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,很容易就会出现上面所描述的显现。 从日志中我们也能知道这一点细节,在第一次发起调用的时候我们可以从日志中看到如下信息: ``` 2017-09-25 08:29:54,201 INFO [main] com.netflix.loadbalancer.DynamicServerListLoadBalancer - DynamicServerListLoadBalancer for client hello-service initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=hello-service,current list of Servers=[192.168.99.176:9901],Load balancer stats=Zone...
程序猿DD 发布于 1天前 阅读 98

zookeeper集群搭建

zookeeper集群搭建,状态查看,分布式协调
Anuge 发布于 1天前 阅读 239

常见但不多用的模式--工厂方法模式

工厂方法模式
xpbob 发布于 1天前 阅读 153

谈谈开源(一)

作者 申砾 源码面前,了无秘密 ---- 侯捷 ### 前言 很多人的『开源』是一个比较时髦且有情怀的词汇,不少公司也把开源当做 KPI 或者是技术宣传的手段。但是在我们看来,大多数人开源做的并不好,大多数开源项目也没有被很好的维护。比如前一段时间微博上流传关于 Tengine 的讨论,一个优秀的开源项目不止是公布源代码就 OK 了,还需要后续大量的精力去维护,包括制定 RoadMap、开发新功能、和社区交流、推动项目在社区中的使用、对使用者提供一定程度的支持,等等。 目前我们在国内没看到什么特别好的文章讲如何运营一个开源项目,或者是如何做一个顶级的开源项目。TiDB 这个项目从创建到现在已经有两年多,从开发之初我们就坚定地走开源路线,陆续开源了 TiDB、TiKV、PD 这三个核心组件,获得了广泛的关注,项目在 GitHub 的 Trending 上面也多次登上首页。在这两年中,我们在这方面积累了一些经验和教训,这里和大家交流一下我们做开源过程中的一些感受,以及参与开源项目(至少是指 TiDB 相关项目)的正确姿势。 ### 什么是开源 Open-source software (OSS) is computer software with its source code made available with a license in which the copyright ...
TiDB 发布于 1天前 阅读 149 评论 2

可能是国内最火的开源项目 —— C/C++ 篇

推荐阅读: 可能是最火的开源项目 —— Java 篇 可能是国内最火的开源项目 —— PHP 篇 可能是国内最火的开源项目 —— Python 篇 截止目前开源中国收录了 44513 款开源项目,囊括了最热门的各类开源项目,而软件的评分在一定程度上代表了软件的质量和热度,而 C 和 C++ 语言作为最基础的语言,在各类编程语言排行榜中高居不下,因此本文整理了 C/C++ 语言中评分最高并且收藏量超过 100 的几款项目,以供开发者选择和交流,排名如下: 高性能 TCP/UDP/HTTP 通信框架 HP-Socket 评分:9.8,收藏:1404  HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件、客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/C++、C#、Delphi、E(易语言)、Java、Python 等编程语言接口。HP-Socket 对通信层实现完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。 为了让使用者能方便快速地学习和使用 HP-Socket ,迅速掌握框架的设计思想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示...
编辑部的故事 发布于 1天前 阅读 4690 评论 9 点赞 7

Java9之Jshell入门

jshell 在学习JSHELL之前确保,已经安装过jdk9,可以参阅Java9安装。 为什么要学Jshell 学习Jshell需要知道他的特性, Read-Eval-Print-Loop (REPL) 交互式解释器(REPL)既可以作为一个独立的程序运行, 也可以很容易地包含在其他程序中作为整体程序的一部分使用。 REPL为运行Java脚本与查看运行结果提供了一种交互方式, 通常REPL交互方式可以用于调试、测试以及试验某种想法。 开始使用 切换jdk环境 检查环境 切换到Jshell环境 Hello World 命令 输入-help 进行查看,会展示出Jshell所支持的命令 /history,查看在Jshell输入的的所有指令(不管正确与否) /list,列出所有你输入过的Java源代码(非命令相关) 也可以根据id进行查询 上图列出了我历史操作的一些与Jshell交互的Java代码命令。 根据ID查看Java命令并执行。 /exit ,退出Jshell命令行 /edit,根据id修改曾经输入过的Java代码,一般配合/list进行使用 利用List命令查找你要修改代码的Id。 输入你要更改代码的Id,回车确认。 回车后出来如下页面。 将Java代码修改为你想要的结果,点击Accept进行保存和执行,出现如下图所示结果。默认不会自动退出,需要手动exit。 重新查看list,发现多出一个修改过的历史。 /drop 删...
路上有你0314 发布于 1天前 阅读 656 评论 4 点赞 2

疯狂Activiti6.0连载(二)———下载和运行Activiti

                                                2 安装与运行Activiti     要点          安装JDK与MySQL          安装Eclipse以及Activiti插件          运行官方的Activiti例子         Activiti的第一个正式版本发布于2010年12月1日,经过多年的发展,Activiti已经成为一个较为成熟的工作流引擎,作为一个开源的工作流引擎,它在工作流领域吸引了众多开发者的目光,在当前的工作流框架角逐中,慢慢成为众多企业的首选。在2017年5月26日,Activiti迎来全新篇章:6.0版本正式发布。本书将以6.0版本为基础,讲解基于Activiti的工作流应用开发。         本章将介绍Activiti的安装与运行、Activiti开发环境的搭建等内容,本书除了最后一章的项目案例外,其他所有的案例均以本章的开发环境为基础。搭建Activiti的开发环境,需要安装JDK、Eclipse、MySQL等软件,除此之外,还会编写第一个Activiti应用,让大家对Activiti有一个初步的了解。         注:本书全部的案例均在Windows7下开发和运行。                             ...
杨大仙的程序世界 发布于 2天前 阅读 302 评论 1

疯狂Spring Cloud连载(三)———Spring Boot简介与配置

                                            3 Spring Boot简介与配置         本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud         本章要点              Spring Boot简介              Spring Boot使用                                                 3.1 Spring Boot         Spring Cloud基于Spring Boot搭建,本小节将对Spring Boot作一个大致的讲解,读者知道Spring Boot作用即可。 3.1.1 Spring Boot简介         开发一个全新的项目,需要先进行开发环境的搭建,例如要确定技术框架以及版本,还要考虑各个框架之间的版本兼容问题,完成这些繁琐的工作后,还要对新项目进行配置,测试能否正常运行,最后才将搭建好的环境提交给项目组的其他成员使用。经常出现的情形是,表面上已经成功运行,但部分项目组成员仍然无法运行,项目初期浪费大量的时间做这些工作,几乎每个项目都会投入部分工作量来做这些固定的事情。         受Ruby On Rails、Node.js等技术的影响,JavaE...
杨大仙的程序世界 发布于 2天前 阅读 261 评论 3 点赞 2

疯狂Spring Cloud连载(二)———搭建开发环境

                                                2 开发环境搭建         本章要点              安装与配置Maven              安装Eclipse              本书涉及的技术版本              Spring Boot使用         工欲善其事,必先利其器。在讲述本书的技术内容前,先将开发环境搭建好,本书所涉及基础环境将在本章准备,包括Eclipse、Maven等。如果读者对Maven、Eclipse、Spring Boot等项目较为熟悉,可以直接跳过本章的相关章节。         笔者建议读者在查阅本书过程中,使用与本书相同的工具以及版本。本章使用的Java版本为1.8,图2-1为“java –version”命令的输出,Java安装与配置较为简单,本书不再赘述。 图2-1 Java版本         注:本书全部的案例均在Windows7下开发和运行。                                               2.1 安装与配置Maven 2.1.1 关于Maven         Maven是Apache下的一个开源项目,用于项目的构建。使用Maven可以对项目的依赖包...
杨大仙的程序世界 发布于 2天前 阅读 255 点赞 2

[实战演练]python3使用requests模块爬取页面内容

  本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取响应状态码 5.案例演示 后记   1.安装pip 我的个人桌面系统用的linuxmint,系统默认没有安装pip,考虑到后面安装requests模块使用pip,所以我这里第一步先安装pip。 $ sudo apt install python-pip 安装成功,查看PIP版本: $ pip -V   2.安装requests模块 这里我是通过pip方式进行安装: $ pip install requests 安装requests 运行import requests,如果没提示错误,那说明已经安装成功了! 检验是否安装成功   3.安装beautifulsoup4 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找、修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。 $ sudo apt-get install python3-bs4 注:这里我使用的是python3的安装方式,如果你用的是python2,可以使用下面命令安装。 $ sudo pip install beautifulsoup4   4.requests模块浅析 1)发送请求 首先当然是要导入 Requests 模块: >>> import requests 然后,获取目标抓取网...
GavinHsueh 发布于 2天前 阅读 209 点赞 1

说说码云为什么要做封面人物?

昨天我们上线了码云封面人物的栏目,大家一致叫好,但也有不少人唱衰。当然你推出任何东西都会有各种评论,这很正常,我们也习以为常。但是还是想说一说我们推出这个栏目的初衷。 码云作为一个平台,在这个平台上的项目和人的成功,才是平台的成功。 所以呢,我们的运营思路有两方面: 1. 推广项目 开源中国一直在致力于开源项目的推广,在码云上我们会对好的开源项目进行推荐和分类,方便用户找到这些项目。此外我们上个月刚刚推出的 GVP 计划,就是为了发掘更多有价值的开源项目。 2. 推广人 也就是这次封面人物的目的。互联网让人与人之间的关系越来越淡漠,每个躲在屏幕前的 ID 其实都是一个个活生生的人。因为物理的隔阂,以及身份的隐秘,使得不少人在网上肆无忌惮,喷别人,被别人喷。久而久之,大家就厌恶了这种网络人际关系,然后氛围越来越差。  其实回到真实生活中,大家不会那么的狂躁。举个例子,@宏哥 以语不惊人死不休的特质闻名于 OSC 好几年,到现在也还是这样。但是鄙人在线下与 @宏哥 会面多次,这其实是一个非常 Nice 的人,技术很牛,对人温文尔雅,沟通非常顺畅,虽然长得有点对不起观众。 码云封面人物这个栏目的初衷就是为了展示真实的程序员风采...
红薯 发布于 7小时前 阅读 968 评论 44 点赞 3

Java9新特性——module模块系统

官方文档:https://docs.oracle.com/javase/9/index.html 关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm 这玩意就是一个列表,具体的技术细节需要根据官方文档挖一挖。 modular-模块系统 --- java9的模块化,从一个独立的开源项目而来,名为Jigsaw。 项目官网:http://openjdk.java.net/projects/jigsaw/ ### 为什么要使用模块化 java开发者都知道,使用java开发应用程序都会遇到一个问题,Jar hell,他就像windows里的dll hell。 比如我们启动一个不算大的应用,但一来了很多的jar,如下图: ![输入图片说明](https://static.oschina.net/uploads/img/201709/26094041_w0RP.png "在这里输入图片标题") 摘自:Mark Reinhold的演讲 https://www.youtube.com/watch?v=l1s7R85GF1A 这是很常见的。虽然你可以使用 "java -Djava.ext.dirs=lib xxx" 让命令行小一些,但不可否认,他的classpath就是那么长。顺便说一句,java9中不允许使用extdirs了。 另一方面,jdk本身有很多的api: ![输入图片说明](https://static.oschina.net/uploads/img/201709/26094131_JZAh.png "在这里输入图片标题") 对于一些小设备,它太庞大了。 ### helloworld...
polly 发布于 14小时前 阅读 707 评论 7 点赞 3 打赏 1

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

java多线程——并发测试

并发程序存在不确定性,出现的方式也没有固定规则。这对程序的应用会造成一些困难,如何在测试中,尽可能的暴露出这些问题,并且了解其性能瓶颈,这也是对开发者带来新的挑战。
wier 发布于 14小时前 阅读 338 点赞 2

为什么你需要将代码迁移到ASP.NET Core 2.0?

随着 .NET Core 2.0 的发布,.NET 开源跨平台迎来了新的时代。开发者们可以选择使用命令行、个人喜好的文本编辑器、Visual Studio 2017 15.3 和 Visual Studio Code 来开发自己的 .NET Core 2.0 项目。同时,微软 .NET 开发工具组也宣布了 ASP.NET Core 2.0 的发布,并且此版本与 .NET Core 2.0、Visual Studio 2017 15.3 和新的 Razor Pages 页面优化范例兼容。相信目前技术社区中开发人员讨论最多的问题就是:是否应该将代码迁移到 ASP.NET Core 2.0? ” 答案是肯定的。 下面就让我们看看将代码迁移到 ASP.NET Core 2.0 有哪些好处?   性能 性能提升是 ASP.NET Core 2.0 带来的最显著的改变。 随着 ASP.NET Core 2.0 中新技术和语言增强的出现,代码在编译时会自动进行优化。 这项改变能够带来的好处就是,个人不再需要更改代码。编译器会在使用新的语言增强功能进行重新编译时,对代码进行优化。 TechEmpower 发现在超过 230 个使用 Web 框架基准的框架中,ASP.NET Core 在性能上都取得了巨大的进步。   新的编码范例 ASP.NET Core 新版本的发布,引入了一种新的编码范例。新的编码范例使得基于页面的设计和编码比 Model-View-Controller 结构更加简单和容易。使用 ...
葡萄城控件技术团队 发布于 14小时前 阅读 252

zookeeper集群搭建

zookeeper集群搭建,状态查看,分布式协调
Anuge 发布于 1天前 阅读 239

spring boot / cloud (十八) 使用docker快速搭建本地环境

# spring boot / cloud (十八) 使用docker快速搭建本地环境 在平时的开发中工作中,环境的搭建其实一直都是一个很麻烦的事情 特别是现在,系统越来越复杂,所需要连接的一些中间件也越来越多. 然而要顺利的安装好这些中间件也是一个比较费时费力的工作. 俗话说"工欲善其事,必先利其器",这篇文章,就跟大家一起分享一下使用docker在本地环境或者测试环境快速搭建我们常用的一些中间件容器的方法, (这里没有提及生产环境,并不是说生产环境不能使用docker,只是说要在生产环境上使用,请务必根据自身的实际情况,做好充分的评估) ## **docker安装** **docker支持多种操作系统,本文的内容则是基于centos7操作系统的** docker的文档写的很清晰,大家可以在 https://docs.docker.com/engine/installation/linux/docker-ce/centos/ 站点中按照文档的步骤一步一步的安装docker , 假如一切正常 , 大家在命令行输入version , 会得到如下结果 : ``` bash $ sudo docker version # 结果输出 : Client: Version: 17.09.0-ce-rc2 API version: 1.32 Go version: go1.8.3 Git commit: 363a3e7 Built: Thu Sep 14 01:54:43 2017 OS/Arch: linux/amd64 Server: Version: 17.09.0-ce-rc2 API version...
wangkang80 发布于 15小时前 阅读 185 点赞 1

为什么允许任何人完全私有化PSI的代码?

PSI是一款基于SaaS模式(Software as a Service软件即服务)的企业管理软件。PSI以商贸企业的核心业务:采购、销售、库存(进销存)为切入点,最终目标是行业化的ERP解决方案。 PSI官网:https://gitee.com/crm8000/PSI PSI一直坚持:允许任何人完全私有化PSI的代码。这里的完全私有化包括但不限于:直接销售获利;去掉代码里面关于PSI的任何标志,包括版权标志;用PSI的代码去申请专利。只要是能想到的商业行为,都许可。 这是为什么呢? 1、PSI本身在不断地开发中,私有化的代码在将来合并升级方面,将会有巨大的工作量。现实是一旦私有化,基本上也就不太可能合并新代码了。 2、PSI经过不断发展,形成了依托开源中国和码云的一个社区。私有化代码的公司,就需要以单个公司的资源与整个开源社区抗衡,其难度之大可想而知。 3、这也是PSI本身的品牌策略,通过许可他人全面的权利,并帮助别人赚钱,会帮助PSI形成良好的口碑。 4、任何一个公司的市场能力都是有限的,特别是在管理软件市场,大量的个性化需求导致需要众多的公司去服务。所以即使不允许私有化,也不会给PSI本身带来巨大的好处。反而倒不如完全开放,和大家一起开拓市场。 在实际的社区运营中,除了允许完全私有...
PSI 发布于 11小时前 阅读 125 评论 2 点赞 1

Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

> 我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请求经常会超时,而之后的调用就没有问题了。下面我们就来说说造成这个问题的原因,以及如何解决的方法。 ## 问题原因 造成第一次服务调用出现失败的原因主要是Ribbon进行客户端负载均衡的Client并不是在服务启动的时候就初始化好的,而是在调用的时候才会去创建相应的Client,所以第一次调用的耗时不仅仅包含发送HTTP请求的时间,还包含了创建RibbonClient的时间,这样一来如果创建时间速度较慢,同时设置的超时时间又比较短的话,很容易就会出现上面所描述的显现。 从日志中我们也能知道这一点细节,在第一次发起调用的时候我们可以从日志中看到如下信息: ``` 2017-09-25 08:29:54,201 INFO [main] com.netflix.loadbalancer.DynamicServerListLoadBalancer - DynamicServerListLoadBalancer for client hello-service initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=hello-service,current list of Servers=[192.168.99.176:9901],Load balancer stats=Zone...
程序猿DD 发布于 1天前 阅读 98

《Node.js在CLI下的工程化体系实践》成都OSC源创会分享总结

背景: 随着开发团队规模不断发展壮大,在人员增加的同时也带来了协作成本的增加,业务项目越来越多,类型也各不相同。常见的类型有组件类、活动类、基于React+redux的业务项目、RN项目、Node.js项目等等。如果想要对每个项目进行一些规范的约束比如Git提交规范、Javascript规范简直难于登天。所有的这些,只因为缺少一个好用的工程化工具。从项目创建、开发、构建、代码规范检查到最终项目上线,通过CLI可以提升效率,同时保障开发规范的实施。
cpselvis 发布于 1天前 阅读 81

疯狂Activiti6.0连载(三)———Activiti开发环境搭建

                                            3 Activiti开发环境搭建         本书代码共享地址:https://gitee.com/yangenxiong/CrazyActiviti         本书的common-lib项目,是各个案例的依赖项目,可从以下地址获得:         https://gitee.com/yangenxiong/CrazyActiviti/tree/master/codes         要点              安装JDK与MySQL              安装Eclipse以及Activiti插件              编写第一个Activiti程序                                                 3.1 安装开发环境         本小节所说的Activiti开发环境包括以下内容:               Eclipse IDE               Eclipse的Activiti插件 3.1.1 下载Eclipse         本书使用Eclipse作为开发工具,如果想使用Activiti的Eclipse设计器,官方建议使用Kepler(4.3)或者 Luna(4.4)版本,本书所使用的版本为Luna,大家可以从以下的地址得到该版本的Eclipse:      ...
杨大仙的程序世界 发布于 17小时前 阅读 81 评论 3 点赞 1

浅析Java中接口的定义与作用

要明确Java中接口的作用首先要知道接口的定义: Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 接口的两种含义:一,Java接口,Java语言中存在的结构,有特定的语法和结构;二,一个类所具有的方法的特征集合,是一种逻辑上的抽象。前者叫做“Java接口”,后者叫做“接口”。 在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。 接口继承和实现继承的规则不同,一个类只有一个直接父类,但可以实现多个接口。 Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。 Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public,静态的和final属性。 接口把方法的特征和方法的实现分...
小欣妹妹 发布于 14小时前 阅读 80

疯狂Spring Cloud连载(四)———第一个Eureka程序

                                            4 微服务发布与调用         本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud         要点              认识Eureka框架              运行Eureka服务器              发布微服务              调用微服务         本章将讲述Spring Cloud中Eureka的使用,包括在Eureka服务器上发布、调用微服务,Eureka的配置以及Eureka集群等内容。                                                 4.1 Eureka介绍         Spring Cloud集成了Netflix OSS的多个项目,形成了spring-cloud-netflix项目,该项目包含了多个子模块,这些子模块对集成的Netflix旗下框架进行了封装,本小节将讲述其中一个较为重要的服务管理框架:Eureka。 4.1.1 关于Eureka         Eureka提供基于REST的服务,在集群中主要用于服务管理。Eureka提供了基于Java语言的客户端组件,客户端组件实现了负载均衡的功能,为业务组件的集群部署创造了条...
杨大仙的程序世界 发布于 17小时前 阅读 64 评论 1

Linux下存储多路径软件MultiPath源码分析

本文主要对Linux下存储多路径软件MultiPath的源码(包括驱动)进行全面分析,揭示其运行机制和基本原理。多路经从此不再难,因为其本质就是udev,加上一个devicemapper驱动,再加一个定时轮询的守护进程而已。
LastRitter 发布于 5天前 阅读 67

从 UNIX 到 GitHub:十个关于自由和开源软件历史的重要事件

本文记录了自由和开源历史上的一些重要时刻,也称得上是 FOSS 历史上的大事件。从 UNIX 的全盛时期,到 GNU 和 Linux 的诞生,再到 GitHub 将开源“民主化”,以及在它们之间的一切。
编辑部的故事 发布于 5小时前 阅读 55

电商项目商品搜索模块 - ES&ik分词器

洋鼹鼠项目使用es的商品搜索模块
安小乐 发布于 13小时前 阅读 45

【源资讯 第42期】聊聊 IT 大佬们那些未为人知的故事

【一周源资讯(2017.8.26-2017.9.1)】在 IT 界,大家都有熟悉的大佬们,并对他们的生活和编程水平充满好奇,有很多故事可能从未被世人所知,那么今天就来了解这些大佬们
编辑部的故事 发布于 4周前 阅读 1011 评论 1

Linux命令思维导图

# Linux常用命令 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233100_Xypx.png "在这里输入图片标题") # 1 文件目录操作 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233134_SCCp.png "在这里输入图片标题") # 2 文件查找 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233146_mrYJ.png "在这里输入图片标题") # 3 文件打包上传和下载 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233512_rfag.png "在这里输入图片标题") # 4 文件权限设置 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233159_fFap.png "在这里输入图片标题") # 5 磁盘存储 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233211_Paaa.png "在这里输入图片标题") # 6 性能监控和优化 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233224_hatX.png "在这里输入图片标题") # 7 网络相关 ![输入图片说明](https://static.oschina.net/uploads/img/201709/25233237_wxHc.png "在这里输入图片标题") # 8 其他 ![输入图片说明](https://static.oschina.ne...
添仔哥哥 发布于 1天前 阅读 36

PostgreSQL 日志审计

 PostgreSQL 日志审计 摘要 审计是指记录用户的登陆退出以及登陆后在数据库里的行为操作。 Postgres 的日志(pg_log)功能十分丰富,接下来首先会介绍它的标准日志审计功能,之后还会详细介绍 postgresql审计扩展(PgAudit) ,编译安装以及使用。 设置 highgo=# show logging_collector; --是否开启日志收集,默认off logging_collector ------------------- on (1 row) highgo=# show log_destination; --日志记录类型,默认是stderr,只记录错误输出 log_destination ----------------- stderr (1 row) highgo=# show log_directory; --日志路径,默认是$PGDATA/pg_log log_directory --------------- pg_log (1 row) highgo=# show log_filename; -日志名称,默认是postgresql-%Y-%m-%d_%H%M%S.log log_filename -------------------------------- postgresql-%Y-%m-%d_%H%M%S.log (1 row) highgo=# show log_connections; --用户session登陆时是否写入日志,默认off log_connections ----------------- off (1 row) highgo=# show log_disconnections; --用户session退出时是否写入日志,默认off log_disconnections ...
yonj1e 发布于 2个月前 阅读 409

Java9 中的 9 个新特性

你可能已经听说过 Java 9 的模块系统,但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。 1. Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大,创建复杂,盘根错节的“意大利面条式代码”的几率呈指数级的增长。这时候就得面对两个基础的问题: 很难真正地对代码进行封装, 而系统并没有对不同部分(也就是 JAR 文件)之间的依赖关系有个明确的概念。每一个公共类都可以被类路径之下任何其它的公共类所访问到, 这样就会导致无意中使用了并不想被公开访问的 API。此外,类路径本身也存在问题: 你怎么知晓所有需要的 JAR 都已经有了, 或者是不是会有重复的项呢? 模块系统把这俩个问题都给解决了。 模块化的 JAR 文件都包含一个额外的模块描述器。在这个模块描述器中, 对其它模块的依赖是通过 “requires” 来表示的。另外, “exports” 语句控制着哪些包是可以被其它模块访问到的。所有不被导出的包默认都封装在模块的里面。如下是一个模块描述器的示例,存在于 “module-info.java” 文件中: 1 2 3 4 5 module blog {   exports com.pluralsight.blog;     requires cms; } 我们可以如下展示模块: ...
monroeCode 发布于 13小时前 阅读 18

jQuery Validate验证框架详解

一、导入js库 <script type="text/javascript" src="<%=path %>/validate/jquery-1.6.2.min.js"></script> <script type="text/javascript" src="<%=path%>/validate/jquery.validate.min.js"></script> 注:<%=request.getContextPath() %>返回web项目的根路径。 二、默认校验规则 (1)、required:true               必输字段 (2)、remote:"remote-valid.jsp"   使用ajax方法调用remote-valid.jsp验证输入值 (3)、email:true                  必须输入正确格式的电子邮件 (4)、url:true                    必须输入正确格式的网址 (5)、date:true                   必须输入正确格式的日期,日期校验ie6出错,慎用 (6)、dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)、number:true                 必须输入合法的数字(负数,小数) (8)、digits:true                 必须输入整数 (9)、creditcard:true             必须输入合法的信用卡号 (10)、equalTo:"#password"        输入值必须和#password相同 (11)、accep...
爱敲代码的程序员 发布于 4小时前 阅读 16

【码云周刊第 39 期】GVP 特辑(二):7 款 JAVA 程序开发“大杀器”

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 4天前 阅读 5636 评论 7 点赞 10

Java平台,标准版Oracle JDK 9中的新功能

Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月   JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对于 Java SE 9的实现。 JDK增强提案(JEP)是对JDK设计和实施非常重要更改的提案。参阅JEP 1:JDK增强提案和路线图流程。Java规范请求(JSR)描述了Java平台的建议和最终规范。请参阅JSR概述。   JDK 9中的重要变化 这些变化影响了多个技术领域。 特征 描述 Java平台模块系统 推出了一种新的Java编程组件--模块,是一个指定的,自描述代码和数据的集合。 模块系统: 引入一个新可选阶段,link time,它在编译和运行时之间,在此期间,可以将一组模块组合并且优化到一个自定义的运行时映像中;在 Java Platform, Standard Edition Tools Reference 中查看 jlink 工具。 添加选项到工具javac,jlink和java,可以指定模块路径在哪里,哪一个定义模块的定位。 引入模块化JAR文件,它是一个在根目录下包含module-info.class的JAR文件。 推出JMOD格式,它是一种类似于JAR的打包格式,除了它可以包含原生代码和配置文件外; 参见jmod工具。 JDK本身已经被分为一组模...
GuoMengYue 发布于 4天前 阅读 5421 评论 25 点赞 14

SpringCloud(第 018 篇)Zuul 服务 API 网关微服务之代理与反向代理

1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能; 2、本章节主要讲解了使用 zuul 的代理功能与反向代理功能,当然 zuul 还有很多属性设置,我就没一一列举所有的测试方法了; 3、http://localhost:8150/routes 地址可以查看该zuul微服务网关代理了多少微服务的serviceId;
HMILYYLIMH 发布于 3天前 阅读 1696 评论 7 点赞 2

【软件周刊第 47 期】Java 9 和 Swift 4 正式发布;PostgreSQL 10 发布首个候选版

软件周刊(09.17 — 09.23):本周热门软件更新 — 国内自主物联网操作系统 RT-Thread 3.0 发布;zbus 0.9.0 新版发布,MQ、RPC、微服务总线;Apollo 1.5.0 发布,百度开源的自动驾驶平台;Sharding-JDBC 1.5.4 发布,1.x 系列的最终版本;Gitlab 10.0 发布,代码托管平台
编辑部的故事 发布于 3天前 阅读 1636 评论 1

【码云周刊第 38 期】GVP 特辑(一):6款 Java WEB应用开发工具

每周为您推送最有价值的开源技术内参!
开源中国码云 发布于 1周前 阅读 3392 评论 5 点赞 8

给 Web 开发人员推荐的文档生成工具

工欲善其事必先利其器,在此给 Web 开发人员推荐几款优秀的开源文档生成工具,希望能对大家有所帮助。 1、JavaScript JSDoc 3 这是一款根据 Javascript 文件中注释信息,生成 JavaScript 应用、库、模块的 API 文档的工具。你可以使用它记录如:命名空间、类、方法、方法参数等。该项目还衍生出了许多模板和其他工具来帮助生成和自定义文档,比如: 模板 jaguarjs-jsdoc DocStrap (example) jsdoc3Template (example) minami docdash (example) tui-jsdoc-template (example) 构建工具 JSDoc Grunt plugin JSDoc Gulp plugin 其它工具 jsdoc-to-markdown Integrating GitBook with JSDoc ESDoc 一个 JavaScript 文档生成器,按照规范编写代码注释,即可生成友好的 JavaScript 代码文档。它可以将测试代码和用户手册一并集成到文档中,支持通过插件添加自定义功能。 Demo 2、API apiDoc 这是一款 RESTful Web API 文档生成工具,一个在注释里边编写 API 文档的小工具。有了它,只需在写源码的时候顺手写上一些简单的注释,就可以生成出漂亮的文档了。项目支持大部分主流语言,注释维护起来也比较方便,不需要额外再维护一份文档。 Demo GraphQL Voyager 这是一款将任意 ...
编辑部的故事 发布于 5天前 阅读 4750 评论 4 点赞 11 打赏 1

疯狂Activiti6.0连载(一)———Activiti介绍

                                            1 Activiti介绍         在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着电脑的普及,这些工作的参与者只需要在电脑的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。         工作流应用在日常工作中的应用越来越广泛,JavaEE领域出现了许多优秀的工作流引擎,例如JBoss社区的jBPM、OpenSymphony的OSWorkflow等,在2010年5月17日,以Tom Baeyens为首的工作流小组发布了一个全新的工作流引擎——Activiti,该工作流引擎的第一个版本为5.0alpha1,由于Tom Baeyens是jBPM的创始人(由于意见分歧离开JBoss),因此Activiti的团队希望该流程引擎是jBPM4的延伸,希望在jBPM中积累的经验和知识的基础上,继续进行新一代工作流解决方案的建设,因此将...
杨大仙的程序世界 发布于 3天前 阅读 2045 评论 26 点赞 7

springboot 入门教程(6)--- 整合Spring data JPA实现CRUD(附源码)

前面整合ssm的时候就说要写一个整合jpa的,周末有点空就写下,时间短写得不是特别好,代码有点不规范,注释也没怎么写,将就了哈。
pxk 发布于 2天前 阅读 303 点赞 1

记录一次通过性能日志处理线上性能问题的过程

       在项目发展初期,可能由于数据量和用户访问量的原因,系统不会出现性能问题,但是随着项目发展,数据量发生具体变化,系统访问量也不断增多,此时对代码的优化就显得迫在眉睫。本文首先讲解如何使用perf4j和aop定期的完成相关日志的统计,其次讲解了如何使用ThreadLocal变量记录一个请求从开始到结束过程中所产生的调用链,并且记录相关方法的调用时间,最后将演示如何使用shell脚本对生成的日志文件进行处理,并生成性能统计报告。        perf4j是一种日志统计工具,其不仅可以进行日志的实时统计,也可以进行定时汇总统计。实时统计主要是记录项目运行过程中的一些消息日志,以便后续排查问题;而定时汇总统计则可用于对方法调用时间进行汇总,并且perf4j能够进行计算每个时间间隔内所有方法的最小调用时间,最大调用时间,平均调用时间,调用次数以及调用方差。这里主要讲解如何使用perf4j进行定时时间统计,如下是在log4j.xml中对service方法进行时间统计的配置: ```xml ```        这里name属性用于指定log的名称,其与代码中LogFactory.getLog(name)中的name对应,level表示打印info及以上级别的日志,appender-ref则配置了日志的相关...
爱宝贝丶 发布于 2天前 阅读 274 评论 1 点赞 2

Java9之Jshell入门

jshell 在学习JSHELL之前确保,已经安装过jdk9,可以参阅Java9安装。 为什么要学Jshell 学习Jshell需要知道他的特性, Read-Eval-Print-Loop (REPL) 交互式解释器(REPL)既可以作为一个独立的程序运行, 也可以很容易地包含在其他程序中作为整体程序的一部分使用。 REPL为运行Java脚本与查看运行结果提供了一种交互方式, 通常REPL交互方式可以用于调试、测试以及试验某种想法。 开始使用 切换jdk环境 检查环境 切换到Jshell环境 Hello World 命令 输入-help 进行查看,会展示出Jshell所支持的命令 /history,查看在Jshell输入的的所有指令(不管正确与否) /list,列出所有你输入过的Java源代码(非命令相关) 也可以根据id进行查询 上图列出了我历史操作的一些与Jshell交互的Java代码命令。 根据ID查看Java命令并执行。 /exit ,退出Jshell命令行 /edit,根据id修改曾经输入过的Java代码,一般配合/list进行使用 利用List命令查找你要修改代码的Id。 输入你要更改代码的Id,回车确认。 回车后出来如下页面。 将Java代码修改为你想要的结果,点击Accept进行保存和执行,出现如下图所示结果。默认不会自动退出,需要手动exit。 重新查看list,发现多出一个修改过的历史。 /drop 删...
路上有你0314 发布于 1天前 阅读 656 评论 4 点赞 2

从Vue.js源码看异步更新DOM策略及nextTick

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出。 文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)。 在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](https://github.com/answershuto/learnVue/tree/master/vue-src),希望可以对其他想学习Vue源码的小伙伴有所帮助。 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 ## 操作DOM 在使用vue.js的时候,有时候因为一些特定的业务场景,不得不去操作DOM,比如这样: ```html {{test}} tet ``` ```javascript export default { data () { return { test: 'begin' }; }, methods () { handleClick () { this.test = 'end'; console.log(this.$refs.test.innerText);//打印“begin” } } } ``` 打印的结果是begin,为什么我们明明已经将test设置成了“end”,获取真实DOM节点的innerText却没有得到我们预期中的“end”,而是得到之前的值“begin”呢? ## Watcher队列 带着疑问,我们找到了Vue.js源码的Watch...
染陌同学 发布于 2天前 阅读 257 评论 1 点赞 2

数据库分库分表中间件 Sharding-JDBC 源码分析 —— 分布式主键

![](https://www.iocoder.cn/images/common/wechat_mp_2017_07_31.jpg) > 🙂🙂🙂关注**微信公众号:【芋道源码】**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 > 5. **认真的**源码交流微信群。 ------- **本文主要基于 Sharding-JDBC 1.5.0 正式版** - [1. 概述](#) - [2.KeyGenerator](#) - [2.1 DefaultKeyGenerator](#) - [2.2 HostNameKeyGenerator](#) - [2.3 IPKeyGenerator](#) - [2.4 IPSectionKeyGenerator](#) - [666. 彩蛋](#) ------- # 1. 概述 本文分享 Sharding-JDBC **分布式主键**实现。 官方文档[《分布式主键》](http://dangdangdotcom.github.io/sharding-jdbc/02-guide/key-generator/)对其介绍及使用方式介绍很完整,强烈先阅读。下面先引用下分布式主键的**实现动机**: > 传统数据库软件开发中,主键自动生成技术是基本需求。而各大数据库对于该需求也提供了相应的...
芋艿V 发布于 2天前 阅读 245 点赞 1

Docker镜像与仓库

什么的是Docker镜像 Docker镜像是由文件系统叠加而成,最底层是一个引导文件系统,即bootfs;Docker镜像第二层是root文件系统rootfs,位于引导文件之上, 可以是一种或多种操作系统;Docker这样的文件系统被称为镜像,一个镜像可以放在另一个镜像的顶部,下面的镜像称为父镜像,最底层的 镜像称为基础镜像(base image);当一个镜像启动容器时,Docker会在该镜像的最顶层加载一个读写文件系统,想在Docker中运行的程序就在 这个读写层中执行。 Docker文件系统层: 可写容器 镜像加入Apache 基础镜像(Ubuntu) 引导文件系统 镜像拉取与列出 [root@bogon ~]# docker pull ubuntu pull命令将从Docker hub下载ubuntu镜像,这里没有指定标签(tag)将会自动下载latest标签,即ubuntu:latest;也可以手动指定如ubuntu:12.04 列出刚刚下载的镜像 [root@bogon ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/ubuntu latest ccc7a11d65b1 3 weeks ago 120.1 MB REPOSITORY中出现的docker.io是官方提供的仓库,具体镜像,标签,仓库,Docker hub之间的关系: 镜像(image)...
ksfzhaohui 发布于 2天前 阅读 195 点赞 1

疯狂Spring Cloud连载(一)———Spring Cloud概述

                                            1 Spring Cloud概述         本章要点              传统应用的问题              微服务与Spring Cloud              本书介绍         本章将会简述Spring Cloud的功能,描述什么是Spring Cloud,它能为我们带来什么,为后面学习该框架的知识打下理论的基础。                                                 1.1 传统的应用 1.1.1 单体应用         在此之前,笔者所在公司开发Java程序,大都使用Struts、Spring、Hibernate(MyBatis)等技术框架,每一个项目都会发布一个单体应用。例如开发一个进销存系统,将会开发一个war包部署到Tomcat中,每一次需要开发新的模块或添加新功能时,都会在原来的基础上不断的添加。若干年后,这个war包不断的膨胀,程序员在进行调试时,服务器也可能需要启动半天,维护这个系统的效率极为低下。这样一个war包,涵盖了库存、销售、会员、报表等模块,如图1-1。 图1-1 单体应用         这样的单体应用隐患非...
杨大仙的程序世界 发布于 3天前 阅读 283 评论 2 点赞 3

Swift4语法新特性

总结Swift4中带来的一些新的语法特性。
珲少 发布于 2天前 阅读 193 评论 1 点赞 1

关于Python 列表操作 ,最常见问答Top10

列表是最常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问最多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决。 1、迭代列表时如何访问列表下标索引 普通版: items = [8, 23, 45] for index in range(len(items)): print(index, "-->", items[index]) >>> 0 --> 8 1 --> 23 2 --> 45 优雅版: for index, item in enumerate(items): print(index, "-->", item) >>> 0 --> 8 1 --> 23 2 --> 45 enumerate 还可以指定元素的第一个元素从几开始,默认是0,也可以指定从1开始: for index, item in enumerate(items, start=1): print(index, "-->", item) >>> 1 --> 8 2 --> 23 3 --> 45 2、append 与 extend 方法有什么区别 append表示把某个数据当做新元素追加到列表的最后面,它的参数可以是任意对象 x = [1, 2, 3] y = [4, 5] x.append(y) print(x) >>> [1, 2, 3, [4, 5]] extend 的参数必须是一个可迭代对象,表示把该对象里面的所有元素逐个地追加到列表的后面 x = [1, 2, 3] y = [4, 5] x.extend(y) print(x) >>> [1, 2, 3, 4, 5] # 等价于: for i in y: x.append(i) 3、检查列表是否为空 普通版:...
liuzhijun 发布于 6天前 阅读 1097 评论 2 点赞 10

【源资讯 第45期】开源软件再掀专利和安全风波

最近关于专利的问题层出不穷,特别是开源软件的专利权更难得到保障,前有大公司利用开源作品申请专利事件,后有国产开源项目被 00 后抄袭,在中国,开源协议、开源精神仿佛荡然无存。那么在外国情况又如何呢?
编辑部的故事 发布于 4天前 阅读 1168 评论 1

SpringCloud(第 020 篇)Zuul 网关模块添加 listOfServers 属性,达到客户端负载均衡的能力

1、本章节添加另外一个属性 listOfServers 来给 zuul 赋上异样的功能色彩,提供负载均衡的能力; 2、而其实说到底 zuul 的负载能力还是在于 ribbon,因为 ribbon 才是真正做到让 zuul 达到客户端负载均衡能力的本质;
HMILYYLIMH 发布于 2天前 阅读 136

volatile关键字分析——可见性

public class Thread02 implements Runnable { /**volatile*/ boolean flg = true; @Override public void run() { System.out.println(Thread.currentThread().getName()+":start"); while(flg){ //System.out.println("do something"); } System.out.println(Thread.currentThread().getName()+":end"); } public static void main(String[] args) { Thread02 test = new Thread02(); Thread t1 = new Thread(test); t1.start(); try { TimeUnit.SECONDS.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } test.flg=false; } } 上述代码中没有使用volatile关键字,但是在主线程中我们将flg至为false,但是结果如下:   public class Thread02 implements Runnable { volatile boolean flg = true; @Override public void run() { System.out.println(Thread.currentThread().getName()+":start"); while(flg){ //System.out.println("do something"); } System.out.println(Thread.currentThread().getName()+":end"); } public static void main(String[] args) { Thread02 test =...
蓝狐乐队 发布于 2天前 阅读 119 评论 1 点赞 1

可能是最火的开源项目 —— Java 篇

很多开发者在看到自己感兴趣的项目时会使用 Star 功能,可以说 Star 的数量在一定程度上代表了开源项目的热门程度,本文整理了 Java 语言中 star 数最多的十五款开源项目,这些项目在 GitHub 上的 star 数均超过 15000,排名如下: Rx 的 Java 实现 RxJava star:26782;fork:4718 .Net响应式编程框架 Rx 的Java版本开源实现,有Groovy, Clojure, Scala and JRuby版本的实现。 分布式搜索引擎 ElasticSearch star:24646;fork:8723 Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,能够解决越来越多的用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。这个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。           REST 客户端 Retrofit star:23443;fork:4731 retrofit 是一个类型安全的 REST 客户端,用于 Android 平台。 RestAdapter restAdapter = new RestAdapter.Builder() .setServer("https://api.github.com") .build(); GitHubService service = restAdapter.create(GitHubService.class); HTTP+SPDY 客户端开发包 okhttp star:2...
编辑部的故事 发布于 1个月前 阅读 20537 评论 30 点赞 25

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

SCSI WRITE SAME failed问题初步分析与测试

这是在现场环境遇到的一个错误信息,并未发现出现什么问题,只是为了探究一下这个错误的相关情况及特性。
LastRitter 发布于 1小时前 阅读 3

springboot定制404错误信息

## 序 本文简单介绍一下,在springboot中怎么个性化404错误信息。 ## 返回json ``` @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer(){ @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html")); } }; } ``` 然后定义个404的request ``` @GetMapping("/404") @ResponseBody public Object customNotFound(){ return "not found"; } ``` ## 返回页面 ``` @Bean public EmbeddedServletContainerCustomizer containerCustomizer() { return new EmbeddedServletContainerCustomizer(){ @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html")); } }; } ``` 然后将404.html放在resources/static目录下 >这样就大功告成了 ## doc - [spring boot中自定义错误提示页面 ](http://cxytiandi.com/blog/detail/5425)...
go4it 发布于 1小时前 阅读 1

SpringMVC 视图渲染过程解析

基本概念 所有的 MVC 框架都有一套它自己的解析视图的机制,springmvc 也不例外,它使用ViewResolver 进行视图解析,让用户在浏览器中渲染模型。 Springmvc 处理视图最重要的两个接口是 ViewResolver 和 View : ViewResolver 接口在视图名称和真正的视图之间提供映射,它是一种开箱即用的技术,能够解析 JSP、Velocity 模板和 XSLT 等多种视图: public interface ViewResolver { // 关键 --> 根据 vieName 返回 View 视图 View resolveViewName(String viewName, Locale locale) throws Exception; } View 接口则处理请求将真正的视图呈现给用户: public interface View { String RESPONSE_STATUS_ATTRIBUTE = View.class.getName() + ".responseStatus"; String PATH_VARIABLES = View.class.getName() + ".pathVariables"; String SELECTED_CONTENT_TYPE = View.class.getName() + ".selectedContentType"; // 取得网页文件的类型和编码 String getContentType(); // 关键 --> 渲染页面 void render(Map<string,> model, HttpServletRequest request, HttpServletResponse response) throws Exception; }<...
为了美好的明天 发布于 1小时前 阅读 2

在AndroidStudio中使用ARCore

搭建开发环境
Code工作室 发布于 1小时前 阅读 1

过滤器解决get和post方式提交的中文乱码

        对于国内的程序员来说,在做项目时避免不了的问题是中文乱码问题。        如果不使用过滤器的话,在每个servlet中都要进行设置编码,如果是post请求还好,但是如果是get请求,就要手动进行转码,相当麻烦。         下面来介绍一下过滤器解决表单提交中的中文乱码问题。         过滤器,顾名思义就是过滤用的,它可以在请求、响应、或者servlet中请求转发等操作发生时先进行执行,之后程序再往下执行,这里起到一个过滤的作用。     平常在 servlet 中接受请求的数据时可以使用 request.getParameter(name) 或者 request.getParameterValues(name) 进行获取,但这些方法如果不进行编码设置时,得到的数据都是乱码,这是因为浏览器传过来的数据的编码格式是iso-8859-1,而我们的开发平台一般都是使用的是utf-8,所以就会出现乱码现象。        这时也就是说request.getParameter(name)这些方法满足不了我们当前的需求,此时我们可以利用装饰者设计模式对这些方法进行增强。     而为了方便程序员对HttpServletRequest 进行包装,javaEE中就已经提供好了一个基类HttpServletRequestWrapper这个类中已经实现其他需要实现的接...
iborder 发布于 1小时前 阅读 1

Keepalived+LVS(DR)集群之一键部署rs机器路由转发

## 负载均衡(Keepalived+lvs) 环境: ![mark](http://oqwym6cik.bkt.clouddn.com/blog/20170926/224021649.png?imageslim) 且dir机器与rs机器均关闭防火墙(SELinux&firewalld)并安装rsync工具。 ### dir操作(Keepalived+lvs多端口负载均衡) #### dir1 ``` [root@director sbin]# yum install -y keepalived [root@Centos-1 sbin]# vim /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state BACKUP interface ens192 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass password } virtual_ipaddress { 192.168.14.13 } } virtual_server 192.168.14.13 80 { delay_loop 10 lb_algo wlc lb_kind DR persistence_timeout 180 protocol TCP real_server 192.168.14.127 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.14.128 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.14.129 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 de...
阿dai 发布于 2小时前 阅读 1

SpringCloud(第 023 篇)简单文件上传微服务采取curl或者页面点击实现文件上传

1、本章节主要搭建了一个简单的页面上传Web控制器,主要为后序工作加入 zuul 微服务而做的准备; 2、不过在本章节用命令上传文件的时候,在windows命令窗口有时候会出现中文乱码什么的,请注意看本文 FileUploadController 是如何解决这个乱码问题的; 3、至于使用 curl 命令需要下载什么安装包之类的,这个就请大家找找度娘怎么弄吧。
HMILYYLIMH 发布于 2小时前 阅读 1

快速掌握grep命令及正则表达式

Linux系统自带了支持拓展正则表达式的 GNU 版本 grep 工具,所有的Linux发行版中均默认安装grep ,grep 命令被用来检索一台服务器或工作站上任何位置的文本信息,如何在 Linux 系统和类 Unix 的操作系统中使用带正则表达式的 grep 命令呢? 快速了解正则表达式 1、如何匹配你要查找的内容? 正则表达式只不过是每个输入行匹配的模式。 在 ‘/etc/passswd’ 中检索 ‘vivek’ 。 grep vivek /etc/passwd 输出结果案例: vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash vivekgite:x:1001:1001::/home/vivekgite:/bin/sh gitevivek:x:1002:1002::/home/gitevivek:/bin/sh 在任何情况下都搜索 ‘vivek’ (即不区分大小): grep -i -w vivek /etc/passwd 不区分大小写地检索 ‘vivek’ 和 ‘raj’ : grep -E -i -w 'vivek|raj' /etc/passwd 在最后一个例子中,使用了扩展正则表达式的模式。 固定检索内容的位置: 你可以使用 ^ 和 $ 符号强制一个正则表达式分别匹配一行的开始或结束的位置。下面的示例显示以 ‘vivek’ 开头的文本。 grep ^vivek /etc/passwd 输出结果示例: vivek:x:1000:1000:Vivek Gite,,,:/home/vivek:/bin/bash vivekgite:x:1001:1001::/home/v...
问题终结者 发布于 2小时前 阅读 2

《移动Web前端高效开发实战》笔记1——静态布局在移动端上的自适应

静态布局在移动端上的自适应,看这里
柯南和由美 发布于 2小时前 阅读 1

初识ElasticSearch

**下载elasticseaech** [下载链接](https://www.elastic.co/downloads/elasticsearch) 安装十分简单 ![输入图片说明](https://static.oschina.net/uploads/img/201709/26221811_ybkW.png "在这里输入图片标题") 启动成功之后,访问http://localhost:9200,结果如图: ![输入图片说明](https://static.oschina.net/uploads/img/201709/26221936_hK0y.png "在这里输入图片标题") curl是linux上的一个工具,在windows上使用需要安装cURL。[参考小菜虫的笔记](https://my.oschina.net/u/3672057/blog/1543855)
灯下草虫鸣_ 发布于 2小时前 阅读 1

Vue.js源码——事件机制

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出。 文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)。 在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](https://github.com/answershuto/learnVue/tree/master/vue-src),希望可以对其他想学习Vue源码的小伙伴有所帮助。 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 ## Vue事件API 众所周知,Vue.js为我们提供了四个事件API,分别是[$on](https://cn.vuejs.org/v2/api/#vm-on-event-callback),[$once](https://cn.vuejs.org/v2/api/#vm-once-event-callback),[$off](https://cn.vuejs.org/v2/api/#vm-off-event-callback),[$emit](https://cn.vuejs.org/v2/api/#vm-emit-event-…args)。 ## 初始化事件 初始化事件在vm上创建一个_events对象,用来存放事件。_events的内容如下: ```json { eventName: [func1, func2, func3] } ``` 存放事件名以及对应执行方法。 ```javascript /*初始化事件*/ expo...
染陌同学 发布于 2小时前 阅读 1

Beetlsql扩展之自定义Mapper

BeetlSql 有一个BaseMapper,提供了很多内置的Dao操作,如增删改查等10几个方法,用户只需要些一个类继承此接口便能很快的完成一个Dao,比如 ``` public interface UserDao extends BaseMapper{ } ``` UserDao没有包含任何方法,但集成了BaseMapper,因此具备了很多内置的Dao操作。如果这些操作不满足要求,可以使用BeetlSql的MD文档来维护复杂的SQL,比如,一个根据角色查询所有用户的操作 ``` @SqlResource("common.user") public interface UserDao extends BaseMapper{ List getUsersByRole(String role); } ``` 注解@SqlResource注明了sql文件的位置,位于common/user.md 文件,其中user.md 包含了sql查询 ``` getUsersByRole === select u.* from user,user_role,role where .... ``` 这是一个BeetlSql的基本概念,在这里不详细说明,有兴趣的可以参考官网文档 现在有这样一个需求,BaseMapper包含了太多的内置方法,有时候程序员对其中的某些方法并不敢兴趣,有的内置方法则是不允许调用的,比如deleteById 方法,总是有一次物理删除操作。应该在企业应用系统里禁止这种调用,那么,BeetlSql能否定制BaseMapper呢? 答案是能定制。只需要新写一个接口,通过SQLMana...
闲大赋 发布于 2小时前 阅读 9

网页登录时用RSA对用户名和密码进行加解密

最近公司做渗透测试,继上次跨站脚本之后更low比的问题出现了,登录的用户名和密码竟然是明文传输,传输过程肯定是加密的,毕竟是https,但是传输前是明文,这么大的项目,我只想说句wc,下面说下我的方案
02BORA 发布于 2小时前 阅读 2

微信小程序开发流程

## 前言 - 前段日子,公司需要做一款小程序的产品。由于时间紧凑,需要有人独立负责,自己又对这方面比较感兴趣就接下来。为了以后开发方便,整理下开发流程,让同事及网友参考。 ## 创建项目 - 点击[链接](https://mp.weixin.qq.com/),进入登陆页面。 - 点击【设置】【开发设置】查看并记录【APPID】和【APPSecret】 - [下载开发者工具](https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html)并安装 - 打开开发者工具,【微信登陆】,选择【创建项目】填入APPID及相应的项目名称和路径,勾选quickly start即可创建小程序实例。 ## 项目介绍 ### 项目初始架构 - -|Pages - ---|index - -----|index.js - -----|index.wxml - -----|index.wxss - -|utils - -|app.js - -|app.json - -|app.wxss ### 项目文件类型介绍 - 重点介绍下 - app.js ``` //app.js App({ //初始化操作,可以在这里做一些获取权限和用户登陆的操作 onLaunch: function () { // 登录 wx.login({ }) // 获取用户信息 wx.getSetting({ }) }, //全局数据,可以将公用的数据存储到这边 globalData: { userInfo: null } }) ``` - app.wxss 全局公共样式定义 - app.json 全局配置,例 ``` { //...
BoomGred 发布于 2小时前 阅读 3

maven项目打包xml没有被打包解决办法 ,mybatis的xml打包

在打maven包是遇见一个问题:打完包发现src/main/java中的的mapping没有被打包进去; 原因主要是mapping目录里面的文件都是xml文件并不是.java文件,而maven打包默认的src/main/java的是Java文件,它不会打包里面的xml文件,所以在打包之后里面不会有mapping。 本人使用的第二种方式; 解决办法: 第一种方法: 可以将xml放到 resources目录里面,这样做要改一下配置文件:把扫描xml的 把扫描包的路径改成相应的路径即可 。 第二种解决方法: 在pom.xml中配置:在build标签中添加如下内容: <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!-- 是否替换资源中的属性--> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> <!-- <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> --> </resource> </resources> 把非...
wg_code 发布于 3小时前 阅读 1

PHP中的IoC容器和反射

在开始之前要明确一个概念,不管是设计模式,还是依赖注入等等,都是为了实现模块化.所谓模块化就是希一个软件是由很多子模块组成的,这些模块之间的依赖程度尽量的低,也就是如果系统中不需要某一个功能,那么只要移除这个功能所对应的模块就可以了. 那么,我们今天要说的服务容器就是为了实现上面的功能.你应该听过,Laravel中的服务容器其本质上是一个IoC容器,但是好像队IoC又不是很了解,讲来讲去优点很多,功能很强劲.但是不懂原理怎么用都不踏实啊.所以,这里我们自己来实现一个IoC容器,洞察其本质. 在开始之前,先说明一点,阅读本篇文章至少要保证有一下的基础知识: php反射用法 闭包的use用法 如果不懂上面的内容,请先补充.避免阅读代码时候产生的不适感. <?php class Container { public $binding = []; /** * @param $abstract * @param null $concrete * @param bool $shared */ public function bind($abstract, $concrete = null, $shared = false) { if (!$concrete instanceof Closure) { $concrete = $this->getClosure($abstract, $concrete); } $this->binding[$abstract] = compact('concrete', 'shared'); } protected fun...
FeanLau 发布于 3小时前 阅读 1

9-5 11 Apache调用PHP 默认虚拟主机

## 11.14/11.15 Apache和PHP结合 ## ### 防火墙设置 ### iptables -I INPUT -p tcp --dport 80 -j ACCEPT (临时)开通80端口 iptables -nvL 检查策略 - 如果没装好PHP则显示: ![](http://oshv1dmrx.bkt.clouddn.com/2017-07-23_150724.png) - 打开192.168.1.138 正确显示: ![](http://oshv1dmrx.bkt.clouddn.com/2017-07-25_174604.png) ### 结合配置 ### vim /usr/local/apache2.4/conf/httpd.conf ServerName 解决启动服务ServerName报错 去掉"#"启用example Require请求 denied 改为 granted AddType解析 加一行:AddType application/x-httpd-php .php DirectoryIndex默认 网页后缀缺省跳转功能 index.html后加上: index.php ### 测试 ### - 加入测试脚本: vi /usr/local/apache2.4/htdocs/1.php - 访问:192.168.83.137/1.php ![](http://oshv1dmrx.bkt.clouddn.com/2017-07-26_164008.png) - 文本形式看版本: /usr/local/php7/bin/php -i |less - 更改调用版本 /usr/local/apache2.4/conf/httpd.conf 找libphp 选择注释php5或者php7,只能调用一个 ### 检查、排错 ### #### 页面打不开 #### **检查服务、端口** ps aux | grep httpd //检查httpd服务是否开启 ...
阿想 发布于 3小时前 阅读 1

Warning: Link to vtkInteractionStyle for default style selection的解决办法

本文总结一些关于用Qt、VTK进行界面开发过程中的一些警告和错误。 在QtCreator 配置好VTK后 (相关配置见参考【1】),我们测试过程会遇到一些vtkError, 据说这些问题是VTK6.0版本之后才有的问题 参考文献【3】。 先把问题贴出来: 错误一 Error:no override found for "vtkRenderer"/"vtkImageMapper"   错误二     Warning: In D:\VTK\VTK-6.3.0\Rendering\Core\vtkInteractorStyleSwitchBase.cxx, line 43 vtkInteractorStyleSwitchBase (00000293C389B540): Warning: Link to vtkInteractionStyle for default style selection. 错误三 ERROR: In D:\VTK\VTK-6.3.0\Rendering\Core\vtkTextMapper.cxx, line 543 vtkTextMapper (000001215D0AA770): Could not locate vtkTextRenderer object. 问题的解决办法: 添加相应的宏,对VTK模块初始化。上面问的的解决办法为: #include <vtkAutoInit.h>     VTK_MODULE_INIT(vtkRenderingOpenGL) ;   VTK_MODULE_INIT(vtkInteractionStyle) ;   VTK_MODULE_INIT(vtkRenderingFreeType);   参看资料: [1] Migration problem vtk 5.8 - vtk 6.1 [2] VTK Error: no override found for 'vtkVolu...
天蚕宝衣 发布于 3小时前 阅读 1

Java面对对象

    一、类和接口 类 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在public,则类文件的名称可以为任意的名称(当然以数字开头的名称是不允许的)。   在类内部,对于成员变量,如果在定义的时候没有进行显示的赋值初始化,则Java会保证类的每个成员变量都得到恰当的初始化:   1)对于  char、short、byte、int、long、float、double等基本数据类型的变量来说会默认初始化为0(boolean变量默认会被初始化为false);   2)对于引用类型的变量,会默认初始化为null。   如果没有显示地定义构造器,则编译器会自动创建一个无参构造函数,但是要记住一点,如果显示地定义了构造函数,编译器就不会自动添加构造函数。注意,所有的构造器默认为static的。 static static关键字能修饰变量,函数,代码块 1 静态变量 用static修饰的变量为静态变量,静态变量注意事项如下:    ~类中的静态变量属于类,而不属于任何一个对象    ~类的静态成员可以与类的名称一起使用,而无需创建对象    ~静态变量或方法也称为类的变量与方法    ~引用静态变量时...
小衰哥有点帅 发布于 3小时前 阅读 2

SpringCloud(第 018 篇)Zuul 服务 API 网关微服务之代理与反向代理

1、API 服务网关顾名思义就是统一入口,类似 nginx、F5 等功能一样,统一代理控制请求入口,弱化各个微服务被客户端记忆功能; 2、本章节主要讲解了使用 zuul 的代理功能与反向代理功能,当然 zuul 还有很多属性设置,我就没一一列举所有的测试方法了; 3、http://localhost:8150/routes 地址可以查看该zuul微服务网关代理了多少微服务的serviceId;
HMILYYLIMH 发布于 3天前 阅读 1696 评论 7 点赞 2

快速了解人工智能结晶之语音转换文字

科技解放生产力,人工智能的应用如今是大热,那么今天就来给各位介绍一下IBM在这方面的一个小的尝试,语音转换文字。咱们来看一看相较于传统的转换,结合Watson的IBM是如何做到让识别率飙升的。
IBM Bluemix

疯狂Activiti6.0连载(一)———Activiti介绍

                                            1 Activiti介绍         在计算机尚未普及时,许多工作流程采用手工传递纸张表单的方式,一级一级审批签字,工作效率非常低下,对于数据统计以及生成报表的功能,需要经过大量的手工操作才能实现。随着电脑的普及,这些工作的参与者只需要在电脑的系统中填入工作内容,系统就会按照定义好的流程自动执行,各级审批者可以得到工作的信息并作出相应的审批和管理操作,数据统计和报表的生成均由系统代为完成,这样大大提高了工作效率,在这种背景下,各种的工作流应用以及中间件应运而生。         工作流应用在日常工作中的应用越来越广泛,JavaEE领域出现了许多优秀的工作流引擎,例如JBoss社区的jBPM、OpenSymphony的OSWorkflow等,在2010年5月17日,以Tom Baeyens为首的工作流小组发布了一个全新的工作流引擎——Activiti,该工作流引擎的第一个版本为5.0alpha1,由于Tom Baeyens是jBPM的创始人(由于意见分歧离开JBoss),因此Activiti的团队希望该流程引擎是jBPM4的延伸,希望在jBPM中积累的经验和知识的基础上,继续进行新一代工作流解决方案的建设,因此将...
杨大仙的程序世界 发布于 3天前 阅读 2045 评论 26 点赞 7

Java平台,标准版Oracle JDK 9中的新功能

Java平台,标准版 Oracle JDK 9中的新增功能 版本9 E77563-05 2017年9月   JDK 9中的新功能概述 Java Platform,Standard Edition 9是一个主要的功能版本。以下总结了Java SE 9和JDK 9的特点和增强功能,Oracle 对于 Java SE 9的实现。 JDK增强提案(JEP)是对JDK设计和实施非常重要更改的提案。参阅JEP 1:JDK增强提案和路线图流程。Java规范请求(JSR)描述了Java平台的建议和最终规范。请参阅JSR概述。   JDK 9中的重要变化 这些变化影响了多个技术领域。 特征 描述 Java平台模块系统 推出了一种新的Java编程组件--模块,是一个指定的,自描述代码和数据的集合。 模块系统: 引入一个新可选阶段,link time,它在编译和运行时之间,在此期间,可以将一组模块组合并且优化到一个自定义的运行时映像中;在 Java Platform, Standard Edition Tools Reference 中查看 jlink 工具。 添加选项到工具javac,jlink和java,可以指定模块路径在哪里,哪一个定义模块的定位。 引入模块化JAR文件,它是一个在根目录下包含module-info.class的JAR文件。 推出JMOD格式,它是一种类似于JAR的打包格式,除了它可以包含原生代码和配置文件外; 参见jmod工具。 JDK本身已经被分为一组模...
GuoMengYue 发布于 4天前 阅读 5421 评论 25 点赞 14

数据可视化(三)基于 Graphviz 实现程序化绘图

- OmniGraffle 和 Graphviz - Why draw when you can code? - Graphviz 简介 - 最佳 Graphviz 实践(一):流程图、数据结构图、网络路径 Trace Route - 最佳 Graphviz 实践(二):复杂社会关系链分析(《红楼梦》、《权力的游戏》) - 最佳 Graphviz 实践(三):机器学习算法-决策树(Decision Tree)
RiboseYim 发布于 5天前 阅读 1567 评论 3 点赞 3

关于Python 列表操作 ,最常见问答Top10

列表是最常用的数据类型之一,本文整理了 StackOverflow 上关于列表操作被访问最多的10个问答,如果你在开发过程中遇到这些问题,不妨先思考一下如何解决。 1、迭代列表时如何访问列表下标索引 普通版: items = [8, 23, 45] for index in range(len(items)): print(index, "-->", items[index]) >>> 0 --> 8 1 --> 23 2 --> 45 优雅版: for index, item in enumerate(items): print(index, "-->", item) >>> 0 --> 8 1 --> 23 2 --> 45 enumerate 还可以指定元素的第一个元素从几开始,默认是0,也可以指定从1开始: for index, item in enumerate(items, start=1): print(index, "-->", item) >>> 1 --> 8 2 --> 23 3 --> 45 2、append 与 extend 方法有什么区别 append表示把某个数据当做新元素追加到列表的最后面,它的参数可以是任意对象 x = [1, 2, 3] y = [4, 5] x.append(y) print(x) >>> [1, 2, 3, [4, 5]] extend 的参数必须是一个可迭代对象,表示把该对象里面的所有元素逐个地追加到列表的后面 x = [1, 2, 3] y = [4, 5] x.extend(y) print(x) >>> [1, 2, 3, 4, 5] # 等价于: for i in y: x.append(i) 3、检查列表是否为空 普通版:...
liuzhijun 发布于 6天前 阅读 1097 评论 2 点赞 10

从0开始的微服务架构:(一)重识微服务架构

导语 虽然已经红了很久,但是“微服务架构”正变得越来越重要,也将继续火下去。 各个公司与技术人员都在分享微服务架构的相关知识与实践经验,但我们发现,目前网上的这些相关文章中,要么上来就是很有借鉴意义的干货,要么就是以高端的专业术语来讲述何为微服务架构。就是没有一个做到成熟地将技术传播出来,同时完美地照顾“初入微服务领域人员”,从0开始,采用通俗易懂的语言去讲解微服务架构的系列。 所以,本文试图开启微服务架构专题“Re:从0开始的微服务架构”,为还没有入门该领域的技术人员开路,也帮助微服务架构老手温故知新。   这是专题的第一篇文章,从最基础的地方入手,让我们重识微服务架构。 前言 得益于2013年Docker的诞生,微服务概念及架构的推广和落地变得更加的可靠和方便。在2016年及之前,微服务架构的讨论更多的是活跃于互联网企业及社区。现如今,随着Docker和微服务架构组件与Docker等相关技术的逐步成熟,微服务架构已然步入传统企业及传统行业。 但是,程序员作为一个理性消费的群体,需要冷静地思考,避免挖个大坑把自己给埋了。所以,我们需要冷静地搞清楚:微服务(架构)是什么?它有什么优势劣势?我们为什么需要采用微服务架构?如...
京东技术 发布于 1周前 阅读 3232 评论 18 点赞 23

VirtualDOM与diff(Vue实现)

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出。 文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)。 在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](https://github.com/answershuto/learnVue/tree/master/vue-src),希望可以对其他想学习Vue源码的小伙伴有所帮助。 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 ## VNode 在刀耕火种的年代,我们需要在各个事件方法中直接操作DOM来达到修改视图的目的。但是当应用一大就会变得难以维护。 那我们是不是可以把真实DOM树抽象成一棵以JavaScript对象构成的抽象树,在修改抽象树数据后将抽象树转化成真实DOM重绘到页面上呢?于是虚拟DOM出现了,它是真实DOM的一层抽象,用属性描述真实DOM的各个特性。当它发生变化的时候,就会去修改视图。 但是这样的JavaScript操作DOM进行重绘整个视图层是相当消耗性能的,我们是不是可以每次只更新它的修改呢?所以Vue.js将DOM抽象成一个以JavaScript对象为节点的虚拟...
染陌同学 发布于 1周前 阅读 1482 点赞 4

微服务后如何做一次系统梳理

微服务治理的特点,网络延迟、分布式事务、异步消息。因此我们针对微服务的梳理也是从这几个方面入手。微服务后依赖关系从代码依赖变成了通讯依赖,我们梳理微服务系统的关键点,就是找出通讯依赖,确定是强依赖,还是弱依赖。
新栋BOOK 发布于 1周前 阅读 1791 评论 7 点赞 4

LinkedList的实现原理浅析

本文简单分析一下JDK1.7的LinkedList源码,看一下其内部的结构以及典型方法的实现~ LinkedList内部结构 查看LinkedList的源码,发现其继承自AbstractSequentialList,实现了List,Deque,Cloneable以及Serializable接口,如: public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable { } 也就意味着: LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。 LinkedList 实现 List 接口,能对它进行列表操作。 LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。 LinkedList 实现了Cloneable接口,即覆盖了函数clone(),能克隆。 LinkedList 实现java.io.Serializable接口,这意味着LinkedList支持序列化,能通过序列化去传输。   public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable { transient int size = 0; /** * Pointer to first node. * Invariant: (first == null && last == null) || ...
王孟君 发布于 1周前 阅读 1941 评论 7 点赞 5

浅析开源数据库MySQL架构

数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。下面就为大家介绍一下如何构建一个高可用的MySQL数据库系统。 做过DBA或者是运维的同学都应该知道,任何设备或服务,存在单点就会带来巨大风险,因为这台物理机一旦宕机或服务模块crash,若在短时间内无法找到替换的设备,势必会影响整个应用系统。因而如何保证不出现单点就是我们的重要工作,使用MySQL高可用方案可以很好地解决这个问题,一般有以下几种: 一、利用MySQL自身的Replication来实现高可用 MySQL自带的Replication就是我们常说的主从复制(AB复制),通过对主服务器做一个从机,在主服务器宕机的情况下快速地将业务切换到从机上,保证应用的正常使用。利用AB复制做高可用方案也分为几种不同的架构: 1、常规的MASTER---SLAVE解决方案 普通的MASTER---SLAVE是目前国内外大多数中小型公司最常用的一种架构方案,主要的好处就是简单、使用设备较少(成本较低)、维护方便。这种架构能解决单点的问题,而且还能在很大程度上...
illy安智 发布于 2周前 阅读 2050 评论 5 点赞 1

在CentOS 7 上使用PaceMaker构建NFS HA服务

## 基本环境 * 总共四台虚拟机,安装CentOS 7 X64系统。 * 每台虚拟机两张网卡,分别连接两个网络,NAT网络192.168.195.0,仅主机网络192.168.162.0。 * Target主机安装iSCSI TGT服务,提供共享存储服务。 * Test1和Test2主机利用Target主机提供的共享存储对外提供A/P结构的NFS服务,使用PaceMaker进行集群管理。 * Develop主机mount有Test主机提供的NFS服务并测试其功能。 ## 网络配置 ### IP地址 使用静态IP地址,并按如下的方式进行配置。 Target eth0 : 192.168.195.131 eth1 : 192.168.162.131 Test1 eth0 : 192.168.195.132 eth1 : 192.168.162.132 Test2 eth0 : 192.168.195.133 eth1 : 192.168.162.133 Develop eth0 : 192.168.195.136 eth1 : 192.168.162.136 NFS使用的浮动IP为:192.168.195.200。 ### 域名解析 在四台机器的域名解析文件下增加如下部分,并确保相互可以ping通。 $ vi /etc/hosts 192.168.195.131 target 192.168.195.132 test1 192.168.195.133 test2 192.168.195.136 develop ## 配置iSCSI ### 安装tgt服务 在Target主机上执行如下操作: 安装软件包 $ yum install -y scsi-target-utils iscsi-initiator-utils 配置tgt服务,使用/dev/sdd1分区...
LastRitter 发布于 2周前 阅读 1291 评论 4 点赞 1

LVM锁机制分析

## LVM支持的锁类型 0. 无锁(No Locking) - 不使用锁,此状态下不能并行执行命令,或者由使用者处理并行问题。 1. 本地锁(Local Locking) - 当使用本地flock锁,只能在单机环境下使用;当use_lvmlockd=1时,同时使用lvmlockd提供的锁,可用于集群环境。 2. 外部锁(External Locking) - 使用外部共享库提供的锁功能,可以在配置文件中设置库的名称,在共享库中只要按要求。 3. 集群锁(Clustered Locking) - 使用内建的集群锁,必须配合clvmd来使用,同时必须关闭lvmetad缓存功能。 4. 只读锁(Read-Only Locking) - 只读模式,禁止元数据修改。 5. 哑巴锁(Dummy Locking) - 只读模式,被不需要锁的工具使用。 配置文件: ```sh $ cat /etc/lvm/lvm.conf ... # Configuration option global/locking_type. # Type of locking to use. # # Accepted values: # 0 # Turns off locking. Warning: this risks metadata corruption if # commands run concurrently. # 1 # LVM uses local file-based locking, the standard mode. # 2 # LVM uses the external shared library locking_library. # 3 # LVM uses built-in clustered locking with clvmd. # This is inco...
LastRitter 发布于 2周前 阅读 1505 评论 1 点赞 1

java多线程——锁

这是多线程系列第四篇,偏重于线程的实践,对锁的几种应用做个简要介绍
wier 发布于 2周前 阅读 2851 评论 15 点赞 3

前端对图片进行本地压缩并上传实践

正好项目碰到这个需求,花了一下午基本搞定,记录一下实现步骤以及一些需要注意的坑,本实例后端使用node express,Multer作为处理multipart/form-data的中间件,完整代码:https://gitee.com/gaisama/codes/xwus19y6crjnm0vf25dza10
GaiSama 发布于 2周前 阅读 1054 评论 10 点赞 9

vue组件开发

## 什么是vue组件 组件是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义的元素,Vue.js的编译器为它添加特殊功能。在有些情况下,组件也可以是原生HTML元素的形式。 ## 组件使用步骤 ### 1. 定义组件 var myComponent = Vue.extend({ template:" this is my first component" }); ### 2. 注册组件 全局注册组件 Vue.component('myComponent',myComponent) 局部注册组件 var apk = new Vue({ el:"#apk", components:{ "myComponent":myComponent } }) ### 3. 使用组件 ### 4. 上面的定义过程比较繁琐,也可以不用每次都调用Vue.component和Vue.extend方法: // 在一个步骤中扩展与注册 Vue.component('my-component', { template: ' A custom component!' }) // 局部注册也可以这么做 var Parent = Vue.extend({ components: { 'my-component': { template: ' A custom component!' } } }) ## 组件常用方法使用 ### 1. 嵌套组件 组件本身也可以包含组件,下面的parent组件就包含了一个命名为child-component组件,但这个组件只能被parent组件使用: var myComponent = Vue.extend({ template:" this is my first component" }...
wshining 发布于 2周前 阅读 2180 评论 8 点赞 4

Eclipse中怎么将JRE换成JDK

关于JDK 和 JRE 的介绍 JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库。是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的。 JDK顾名思义是java开发工具包,是程序员使用java语言编写java程序所需的开发工具包,是提供给程序员使用的。JDK包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具:jconsole,jvisualvm等工具软件,还包含了java程序编写所需的文档和demo例子程序。 如果你需要运行java程序,只需安装JRE就可以了。如果你需要编写java程序,需要安装JDK。 以上解释来源:知乎 在Eclipse我们项目中的Libraries库默认是JRE的,一般需求都能满足,但是当需要编译java文件时就不行了,这就需要我们把它换成JDK。 步骤: 点击相应项目->右键BuildPath-> configureBuildPAth 点击Libraries 出现下面的界面 点击一下JRE System Library(选中) 然后 ->  点击右边的 Edit (不选中Edit是灰的) 出现下面的界面    (这个JDK是我已经加进来后的,你的可能没有)   如果开始你就有那直接选一下就行了。。。。QAQ 如果没有就 点击Installed JREs 出现下面界面 这个JDK(黄色箭...
为了美好的明天 发布于 2周前 阅读 2053 点赞 1

用docker搭建elasticsearch集群

## 概述 用docker进行elasticsearch的部署非常简单,如果要实现集群配置,需要进行一些特殊的处理,本文介绍如何利用docker进行elasticsearch集群的搭建。 具体的配置可以参照该 [示例](https://github.com/qihaiyan/fluentd-boot) ## 主节点配置 ### docker-compose.yml配置文件 ```yml es: image: elasticsearch volumes: - ./es:/usr/share/elasticsearch/data - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml ports: - 9200:9200 - 9300:9300 ``` 其中的```./es:/usr/share/elasticsearch/data```是将elasticsearch的数据文件挂在到本机的一个目录上,这儿指定的本机目录是./es,可以修改为其它有权限的目录。 ### elasticsearch.yml配置文件 ``` yml cluster.name: elasticsearch_cluster node.name: node-master node.master: true node.data: true http.port: 9200 network.host: 0.0.0.0 network.publish_host: master-ip discovery.zen.ping.unicast.hosts: ["master-ip"] ``` ```network.publish_host: master-ip```指定了本机ip,需要将master-ip修改为真实的机器ip。```discovery.zen.ping.unicast.hosts```中的master-ip同样需要修...
QiHaiYan 发布于 3周前 阅读 1484 点赞 1

数据异构的武器-BINLOG+MQ

分库分表中有一个最为常见的场景,为了提升数据库的查询能力,我们都会对数据库做分库分表操作。比如订单库,开始的时候我们是按照订单ID维度去分库分表,那么后来的业务需求想按照商家维度去查询,比如我想查询某一个商家下的所有订单,就非常麻烦。这个时候通过数据异构就能很好的解决此问题。
新栋BOOK 发布于 3周前 阅读 1466 评论 13

Spring、Spring Boot和TestNG测试指南 - 测试@Configuration

[码云地址][1] 在Spring引入Java Config机制之后,我们会越来越多的使用@Configuration来注册Bean,并且Spring Boot更广泛地使用了这一机制,其提供的大量Auto Configuration大大简化了配置工作。那么问题来了,如何确保@Configuration和Auto Configuration按照预期运行呢,是否正确地注册了Bean呢?本章举例测试@Configuration和Auto Configuration的方法(因为Auto Configuration也是@Configuration,所以测试方法是一样的)。 ## 例子1:测试@Configuration 我们先写一个简单的@Configuration: ```java @Configuration public class FooConfiguration { @Bean public Foo foo() { return new Foo(); } } ``` 然后看[FooConfiguration][src-ex1-FooConfiguration]是否能够正确地注册Bean: ```java public class FooConfigurationTest { private AnnotationConfigApplicationContext context; @BeforeMethod public void init() { context = new AnnotationConfigApplicationContext(); } @AfterMethod(alwaysRun = true) public void reset() { context.close(); } @Test public void testFooCreation() { context.register(FooConfiguration.class); context.refresh...
jarchan 发布于 3周前 阅读 1853 评论 5

java多线程——volatile

java多线程系列第三篇,深入理解volatile的原理以及应用
wier 发布于 3周前 阅读 2988 评论 11 点赞 5
顶部