开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

为什么选择开源?企业拥抱开源的十大优势

追求理性使用开源软件的企业有很多的理由这样做。
编辑部的故事 发布于 5小时前 阅读 47

Maven 使用profiles 时 值无法替换问题

有帮助请点赞吆 ε=(・д・`*)ハァ…
翱翔fly 发布于 6小时前 阅读 22

解决 MySQL 与 Elasticsearch 数据不对称问题

jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常jdbc源一端的数据库可能会做数据库删除或者更新操作。这样一来数据库与搜索引擎的数据库就出现了不对称的情况。 当然你如果有开发团队可以写程序在删除或者更新的时候同步对搜索引擎操作。如果你没有这个能力,可以尝试下面的方法。
neo-chen 发布于 9小时前 阅读 176

yii2中组件为何能直接使用行为的属性 - 揭秘不一样的get函数。

> 上几篇我们讲解了如何为一个组件类配置行为及其运行原理,本篇为大家讲解yii2组件是如何做到像访问自己属性一样访问行为的属性。 首先要说的是这并不复杂,但是它可以解决你之前的很多疑问,比如为何必须是继承组件(Component)的类才能使用行为。我们都知道在php中有一个魔术方法__get,我们需要先了解一下它。 先解释一下__get方法 > 当访问不存在或者不能访问的成员变量时对象会自动调用__get()方法. # begin 就是通过这个方法,yii2的Component类访问到了关联行为的属性。 **看看文件 vendor/yiisoft/yii2/base/Component.php line127 __get方法。** ```php public function __get($name) { $getter = 'get' . $name; if (method_exists($this, $getter)) { // read property, e.g. getName() return $this->$getter(); } // behavior property $this->ensureBehaviors(); foreach ($this->_behaviors as $behavior) { if ($behavior->canGetProperty($name)) { return $behavior->$name; } } ... } ``` 函数首先判断了 method_exists($this, $getter) 是否存在,如果存在则调用,还记得你如何定义AR的关联方法么,就是这段代码实现的。 接下来我们看重头戏,首先 ...
阿北2017 发布于 12小时前 阅读 16

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

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

微服务架构的安全保障OAuth 2 和 JW

微服务对于用户资源访问如何控制:     用户通过授权服务来实现鉴权,把用户访问Session映射成一个Token。所有远程访问资源服务器相关的API必须提供Token。然后资源服务器访问授权服务来识别Token,得知Token属于哪个用户,并了解通过这个Token可以访问什么资源。 资源访问控制--oAuth2 任何类型的应用都提供用户登录,登录结果是一个Access Token,所有的之后的API调用都将这个Access Token加入HTTP请求头中,被调用服务去授权服务器验证Access Token并获取该Token可访问的权限信息。这样一来,所有服务的访问都会请求另外的服务来完成鉴权。 权限范围和角色,客户端和用户--oAuth2 在OAuth 2中,可以定义哪个应用(网站、移动客户端、桌面应用、其他)可以访问那些资源。这里只有一个尺寸,来自哪里的哪个用户可以访问那些数据,当然也是哪个应用或者服务可以访问哪些资源。换一种说法,权限范围就是控制那些端点对客户端可见,或者用户根据他的权限来获取相关的数据。 在一个在线商店中,前端可以看做一个客户端,可以访问商品、订单和客户信息,但后端可以关于物流和合同等,另一方面,用户可以访问一个服务但并不是全部的数据,这可以是因为用户正在使用Web应用,...
yangty2017 发布于 13小时前 阅读 139 点赞 1

【合集】云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库等(上)

摘要: 云栖社区从几百位讲师中精挑细选了若干精华,其中涵盖了智能物流、大数据、开源数据库、智能工业、容器技术以及智能应用实践等。
OSC_Lucy 发布于 14小时前 阅读 74

Cron4j官方教程文档翻译

那啥 这个工具类还有人想用嘛,有的话我希望这篇翻译可以帮助到您! 两天的时间,翻译完这篇关于六年前的工具类的官方文档,接近三万字的英文。 虽然语法不难,但是人家甚至提供了印度语和克罗地亚语的文档也没有中文文档,这让我比较不服,抱着试试的心态就做了。 这可能是我这个暑假做的最迷的事情哈哈。 github:https://github.com/youyinnn/Cron4jTranslation 码云:https://gitee.com/youyinnn/Cron4jTranslation
Youyinnn 发布于 14小时前 阅读 138 评论 5

开发者必备的程序调试利器,来找到适合你的那一款!

调试是开发过程中必不可少的重要一环。调试工具是那些那些使我们能够监测、控制和纠正其他程序的程序,它们能帮我们快速找到问题的原因,最终达到提高开发效率的目的。本文将针对不同开发者推荐几个较受欢迎的程序调试利器,如果您还有其他更好的选择,欢迎在评论区留言,以供更多开发者学习和讨论。 ARM Cortex-M 系列 MCU 错误追踪库 CmBacktrace CmBacktrace (Cortex Microcontroller Backtrace)是一款针对 ARM Cortex-M 系列 MCU 的错误代码自动追踪、定位,错误原因自动分析的开源库。 手机前端开发调试利器 vConsole vConsole是一款由微信公众平台前端团队打造的前端调试面板,专治手机端看log难题。 目前vConsole自带有2个面板,默认为“日志”面板,负责展示log,与电脑端的Developer Tools一样,开发者可以通过调用不同的方法来打出不同的颜色,以便快速区分日志类型;第二个是“系统”面板,vConsole会自动将一些基础信息(如系统版本)打印出来,方便开发者定位问题。 程序调试工具 GDB GDB(GNU symbolic debugger)是一个功能很强大的调试器,它可以调试多种语言。有一点要说明的是,GDB是一个调试器,而不象VC一样是一个集成环境。你可以使用一些前端工...
编辑部的故事 发布于 1天前 阅读 3116 评论 1 点赞 8

Redis单点安装,注册为系统服务,开机启动

1. 操纵系统     CentOS: 6.7 2. 下载 官网下载,选择了最新稳定版(redis-4.0.1.tar.gz) 3. 安装步骤 3.1. 上传至/usr/local/src 使用rz命令(如果没有安装,执行yum -y install lrzsz),或者别的传输工具 3.2. 解压缩 $ tar -zxvf redis-4.0.1.tar.gz 3.3. 安装三板斧 make, make insall, make clean 注:      在make结束后,会提示运行一下make test会是一个好主意,运行时有可能会需要更高版本的tcl,此时执行yum -y install tcl即可 安装的位置在/usr/local/bin  ,有: (1)redis-benchmark:性能测试工具,测试Redis在你的系统及配置下的读写性能 (2)redis-check-aof:用于修复出问题的AOF文件 (3)redis-check-dump:用于修复出问题的dump.rdb文件 (4)redis-cli:Redis命令行操作工具 (5)redis-sentinel:Redis集群的管理工具,可参考此系列文章(详见官方文档) (6)redis-server:Redis服务器启动程序 4. 配置 4.1. 将启动脚本复制到/etc/init.d下 $ cp /usr/local/src/redis-4.0.1/utils/redis_init_script /etc/init.d/redis 4.2. 根据自己的配置修改启动脚本 #!/bin/sh # chkconfig: 2345 80 90 # # Simple Redis init.d script conceiv...
lost_keke 发布于 1天前 阅读 315 评论 10 点赞 2

Laravel思维导图之Laravel入门指南

4张思维导图看 Laravel 入门指南。
精进吧Aaron 发布于 1天前 阅读 320 点赞 1

ES2017异步函数现已正式可用

ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数。如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的。 异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks、generators 或 promise 中包含你的逻辑。 如下代码: function logger() { let data = fetch('http://sampleapi.com/posts') console.log(data) } logger() 这段代码并未实现你的预期。如果你是在JS中编写的,那么你可能会知道为什么。 下面这段代码,却实现了你的预期。 async function logger() { let data = await fetch('http:sampleapi.com/posts') console.log(data) } logger() 这段代码起作用了,从直观上看,仅仅只是多了 async 和 await 两个词。   ES6 标准之前的 JavaScript 异步函数 在深入学习 async 和 await 之前,我们需要先理解 Promise。为了领会 Promise,我们需要回到普通回调函数中进一步学习。 Promise 是在 ES6 中引入的,并促使在编写 JavaScript 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 1天前 阅读 1750 评论 11 点赞 5

Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator

The best way to predict the future is to invent it. 预测未来的最好方法就是创造未来。 -- 沃尔特·艾萨克森 《乔布斯传》
青离 发布于 2天前 阅读 272

Java分布式神经网络库Deeplearning4j 环境搭建和运行一个例子

deeplearning4j是一个Apache 2.0-licensed,开源的,分布式神经网络库编写的java和Scala。 开源的学习框架也不少,这么多大企业贡献了自己的部分产品,开源供大家学习研究和完善。例如:Tensor flow,caffe,Theano,Torch,Brainstorm,Chainer,Deeplearning4j 等等,其中Deeplearning4j 是基于 JVM 开发的机器学习工具,完全开源,天行支持JVM 上运行的程序,如:spark ,Hadoop 等。本文介绍一下 Deeplearning4j 的环境搭建,及运行一个官方的例程。
小帅帅丶 发布于 2天前 阅读 444 点赞 3

Shiro实现多域名登录界面

背景 目前开发接到需求如下,希望根据不同用户实现自定义域名登录(前台ui等需要略微区分,配色,皮肤等) 现状 目前系统中使用shiro作为授权权限框架,当用户没有登录时将会默认返回未授权页 比如  <!-- 配置shiroFilter--> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="${wxb.url}"/> <property name="successUrl" value="/kzf6/page/index/index.jsp" /> <property name="unauthorizedUrl" value="/kzf6/page/error/403.jsp" /> <property name="filters"> <map> <entry key="kickout" value-ref="kickoutSessionControlFilter"/> </map> </property> <property name="filterChainDefinitions"> <value> /mlogin/login.json = anon <!-- 除了上面定义的url和资源,都需要配认证后才可以访问 --> /** = kickout,authc </value> </property> </bean> 上述配置可以导致未登录用户来自动重定向到${w...
Mr_Qi 发布于 2天前 阅读 541 评论 2 点赞 1

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2天前 阅读 578 评论 1 点赞 1

【软件周刊第 42 期】微软跨平台 .NET Core 2.0 终于发布;Kotlin 发布最新稳定版

软件周刊(08.13 — 08.19):本周热门软件更新 — Kotlin 1.1.4 发布,改进对 Java 9 的支持;GCC 7.2 发布,C/C++ 编译器;IntelliJ IDEA 2017.2.2 发布;Caffeine 2.5.5 发布,Java 8 的高性能缓存库;Node.js v8.4.0 发布,添加内置 http2 实验支持
编辑部的故事 发布于 3天前 阅读 2080 评论 5 点赞 2

Golang面试题解析(二)

## 12.是否可以编译通过?如果通过,输出什么? ```go func main() { i := GetValue() switch i.(type) { case int: println("int") case string: println("string") case interface{}: println("interface") default: println("unknown") } } func GetValue() int { return 1 } ``` ### 解析 考点:**type** 编译失败,因为type只能使用在interface ## 13.下面函数有什么问题? ```go func funcMui(x,y int)(sum int,error){ return x+y,nil } ``` ### 解析 考点:**函数返回值命名** 在函数有多个返回值时,只要有一个返回值有指定命名,其他的也必须有命名。 如果返回值有有多个返回值必须加上括号; 如果只有一个返回值并且有命名也需要加上括号; 此处函数第一个返回值有sum名称,第二个未命名,所以错误。 ## 14.是否可以编译通过?如果通过,输出什么? ```go package main func main() { println(DeferFunc1(1)) println(DeferFunc2(1)) println(DeferFunc3(1)) } func DeferFunc1(i int) (t int) { t = i defer func() { t += 3 }() return t } func DeferFunc2(i int) int { t := i defer func() { t += 3 }() return t } func DeferFunc3(i int) (t int) { defe...
梦朝思夕 发布于 4天前 阅读 656 评论 6 点赞 1 打赏 1

你想了解的Hive Query生命周期--钩子函数篇!

一个Hive SQL语句的执行需要经历哪些阶段? 在这些阶段中,我们可以做哪些事来影响它? Hive为我们提供了很多的钩子函数,我们可以怎样利用它为Hive实现扩展?
问津少年 发布于 4天前 阅读 623 评论 2 点赞 2

Java 实现长图文生成

实现一个用于生成微博长图文样式的包装类
六月依 发布于 4天前 阅读 850 评论 2 点赞 2

【源资讯 第40期】宇宙最强 IDE 之战 VS 夺冠;Xshell 多版本存在后门

【一周源资讯(2017.8.12-2017.8.18)】PYPL 发布的 8 月 IDE 指数榜显示,8月份搜索最多的前三大 IDE 分别是 Visual Studio、Eclipse 和 Android Studio 。编程排行榜也是月月更新,但预测哪些语言会上升到榜首却比较困难,还没有大火的Swift、Go 语言竞争力如何?
编辑部的故事 发布于 4天前 阅读 3469 评论 10

Java习惯用法总结

在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。) 我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。 实现equals() class Person { String name; int birthYear; byte[] raw; public boolean equals(Object obj) { if (!obj instanceof Person) return false; Person other = (Person)obj; return name.equals(other.name) && birthYear == other.birthYear && Arrays.equals(raw, other.raw); } public int hashCode() { ... } } 参数必须是Object类型,不能是外围类。 foo.equals(null) 必须返回false,不能抛NullPointerException。(注意,null instanceof 任意类 总是返回false,因此上面的代码可以运行。) 基本类型域(比如,int)的比较使用 == ,基本类型数组域的比较使用Arrays.equals()。 覆盖equals()时,记得要相应地覆盖 hashCode(),与 equals()...
Java攻城狮-搁浅 发布于 12小时前 阅读 291

为什么Java字符串是不可变对象?

本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Java的String类是不可变对象?让我们一起来分析一下。 答案一: 最流行的Java面试题之一就是:什么是不可变对象(immutable object),不可变对象有什么好处,在什么情况下应该用,或者更具体一些,Java的String类为什么要设成immutable类型? 不可变对象,顾名思义就是创建后不可以改变的对象,典型的例子就是Java中的String类。 String s = "ABC"; s.toLowerCase(); 如上s.toLowerCase()并没有改变“ABC“的值,而是创建了一个新的String类“abc”,然后将新的实例的指向变量s。 相对于可变对象,不可变对象有很多优势: 1).不可变对象可以提高String Pool的效率和安全性。如果你知道一个对象是不可变的,那么需要拷贝这个对象的内容时,就不用复制它的本身而只是复制它的地址,复制地址(通常一个指针的大小)需要很小的内存效率也很高。对于同时引用这个“ABC”的其他变量也不会造成影响。 2).不可变对象对于多线程是安全的,因为在多线程同时进行的情况下,一个可变对象的值很可能被其他进程改变,这样会造成不可预期的结果,而使用不可变对象就可以避免这种情况。 当然也有其他方面原...
Java攻城狮-搁浅 发布于 15小时前 阅读 216

解决 MySQL 与 Elasticsearch 数据不对称问题

jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常jdbc源一端的数据库可能会做数据库删除或者更新操作。这样一来数据库与搜索引擎的数据库就出现了不对称的情况。 当然你如果有开发团队可以写程序在删除或者更新的时候同步对搜索引擎操作。如果你没有这个能力,可以尝试下面的方法。
neo-chen 发布于 9小时前 阅读 176

10个最佳Node.js企业应用案例:从Uber到LinkedIn!

Node.js 8已经发布了,NPM模块每周下载量早已超过10亿,从Uber到LinkedIn都在使用Node.js,谁说JavaScript不能写后台?   1、Uber   在过去的两年里,Uber的规模每半年就会翻倍。Node.js之所以被选中,正是由于它强大的数据处理能力。   Uber需要为用户和司机提供可靠的服务,因此用车需求增加时,需要扩展服务,这是另外一个考虑因素。根据How Uber Uses Node.js to Scale Their Business,Uber选择Node.js的原因如下:   它可以高效稳定地处理大量数据 错误分析很方便,可以加快开发进度 拥抱开源,因此技术持续进步   Uber每天可以处理20亿个远程过程调用(Remote Procedure Call,RPC),足以证明Node.js的成功。 2、PayPal   PayPal需要为全世界2亿活跃用户提供服务,它做得非常完美。刚开始,PayPay需要将团队成员分工,分别开发前后端应用。自从PayPal选择使用Node.js替代Java开发后端,整个团队只需要使用一种编程语言—JavaScript。   根据Node.js at PayPal,使用Node.js之后,应用开发速度提高了2倍;代码量减少了33%;文件数目减少了40%,并且,每秒处理的请求数增加了2倍,接口的请求时间减少了35%。 3、Netflix   Netflix是世界上最大的视频和流数据服务...
小一天 发布于 14小时前 阅读 104

为什么选择开源?企业拥抱开源的十大优势

追求理性使用开源软件的企业有很多的理由这样做。
编辑部的故事 发布于 5小时前 阅读 47

Angular2项目目录下创建mock目录存放json数据,请求报404

解决办法:修改angular-cli.json 配置文件,找到assets的配置,将你自己的目录名称加到配置项中。
我是钟钟 发布于 15小时前 阅读 40

二维码扫描登录

浏览器根据用户选择二维码登录 浏览器向服务端请求分配二维码(如果为了兼容多浏览器,可以考虑在后端生成图片,目前我们均使用chrome,可以直接用插件生成二维码)https://github.com/gera2ld/qrcanvas 服务端将生成的uuid保存在redis中,缓存时间120s后过期 浏览器获得返回结果根据返回结果生成二维码图片或者直接获取二维码图片 浏览器使用ajax轮训(更好的是websocket)向服务端请求是否该token有否被绑定到指定用户(check redis中对应key的值是否为1,如果key已经过期,可以直接刷新) app端扫描二维码,直接访问链接并带上用户信息(此处可以根据安全限制,比如是否在指定wifi下等等,该账号是否允许使用扫码登录等等) 服务端收到app请求校验ua,如果并非app访问直接跳转到app下载画面,如果是则将redis中对应token设置为绑定(也注意处理不允许二次绑定等) 浏览器继续刷新后发现服务端中对应uuid已经绑定,返回token到浏览器(token中包含指定信息,比如不可以cookie登录等等,session失效时间) 登陆成功 实现请参考二维码扫描登录...
Mr_Qi 发布于 13小时前 阅读 38

pinpoint 1.6.2编译安装

//告诉hbase使用外部的zk,如果使用内部的zk,设置为true(单机伪分布式) export HBASE_MANAGES_ZK=false ~/dev_environment/hbase-1.0.3/bin $ ./hbase shell /home/songjian/dev_environment/pinpoint-hbase_scripts/hbase-create.hbase #配置pinpoint-collector环境 ~/dev_environment/pinpoint-env $ mkdir pinpoint-collector-tomcat ~/dev_environment/pinpoint-env $ tar -zxvf apache-tomcat-8.0.36.tar.gz ~/dev_environment/pinpoint-env $ mv apache-tomcat-8.0.36/** pinpoint-collector-tomcat/ 修改端口 cd conf/ sed -i 's/port="8005"/port="18005"/g' server.xml sed -i 's/port="8080"/port="18080"/g' server.xml sed -i 's/port="8443"/port="18443"/g' server.xml sed -i 's/port="8009"/port="18009"/g' server.xml sed -i 's/redirectPort="8443"/redirectPort="18443"/g' server.xml 将网卡换成lo保证换了网络环境也是通用的 sed -i "s/localhost/`ifconfig lo | grep 'inet addr' | awk '{print $2}' | awk -F: '{print $2}'`/g" server.xml 部署pinpoint-collector.war包 rm -rf ~/dev_environment/pinpoint-env/pinpoint-collector-tomcat/weba...
大风厂蔡成功 发布于 10小时前 阅读 33

Hybris 属性配置参考

SAP Hybris Commerce依赖 2 个基本配置文件:project.properties和local.properties。 project.properties是Hybris默认配置文件,位于<${HYBRIS_BIN_DIR}>/platform下的文件。 local.properties是自定义扩展配置属性的文件,位于<${HYBRIS_CONFIG_DIR}>下的文件,编辑该文件可覆盖project.properties文件内的默认配置 # ----------------------------------------------------------------------- # [y] hybris Platform # # Copyright (c) 2000-2013 hybris AG # All rights reserved. # # This software is the confidential and proprietary information of hybris # ("Confidential Information"). You shall not disclose such Confidential # Information and shall use it only in accordance with the terms of the # license agreement you entered into with hybris. # ----------------------------------------------------------------------- ########################### CORE SETTINGS ###################################### # # General platform settings. # ######################################################################################...
C-Kellen 发布于 2个月前 阅读 99

二维码扫描登录实现

呵呵,不用二维码怎么算移动互联网公司呢? 原理 参考  二维码扫描登录 下面介绍一个简单的二维码扫描登录的实现   首先定义扫描实体对象 package com.air.tqb.vo.scan; import com.air.tqb.common.AppConstant; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; import java.io.Serializable; public class ScanVo implements Serializable { private static final long serialVersionUID = -6258229710519417159L; private String uuid; private String deviceModel; private String platform; private String appVersion; @NotNull @Size(max = AppConstant.DEFAULT_QR_LENGTH,min = AppConstant.DEFAULT_QR_LENGTH) private String scanStr; private Integer scanType; private Long scanTime; private String remark; private String remoteIp; private String netWork; private String netInfo; private String udf1; private Integer udf2; private Double udf3; private Boolean udf4; public String getUuid() { ...
Mr_Qi 发布于 1周前 阅读 52 评论 3

dubbo源码系列之filter的前生

为什么说dubbo的声明式缓存不好用!!! dubbo源码系列之filter的今世 dubbo的filter类似于spring的aop,提供了环绕增强功能。 参考dubbo缓存代码分析 缓存是filter的一个很典型的实现。 那么filter是如何被调用的呢? 收到spring荼毒多年很自然的想到了spring的aop实现===》换汤不换药的动态代理 整篇故事要从invoker讲起。 首先介绍一下Protocol接口 /* * Copyright 1999-2011 Alibaba Group. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.alibaba.dubbo.rpc; import com.alibaba.dubbo.commo...
Mr_Qi 发布于 2个月前 阅读 690 评论 2

PHP 7.2更加严格, 一些变化记录.

echo count('123123'); list(,$v) = each($_GET); 报错信息如下: Warning: count(): Parameter must be an array or an object that implements Countable in D:\Qampp\htdocs\adminer\compile.php on line 3 Deprecated: The each() function is deprecated. This message will be suppressed on further calls in D:\Qampp\htdocs\adminer\compile.php on line 4 可以看到,  在php7.2下, 已经非常严格了.  count函数仅支持参数为数组, 非数组情况下将报警告. 我们可以修改为: if(is_array($arr)){ count($arr); } // 问题来了, 为什么count函数不自己内部判断一下呢? 另外each这种大热的函数也报过时,  解决方案仍然在摸索中.....
Tuesday 发布于 7小时前 阅读 24

华章5-6月份新书简介(2017年)

写在前面的话 下面这些图书是华章公司 2017年5、6月份出版的部分新书,作为翻译频道获奖者待选奖品,每期10位获奖者可以任选一本。 即刻起,在翻译频道评选获奖者的同时,也会设置两名幸运奖,分别赠送图书一本(图书可从此书单中选取,也可从华章京东品牌店选取)。     如果“翻译奖”与你无缘,请来试试“幸运奖”吧。   赢取“幸运奖”攻略:在此帖下面留言你心仪的图书名称即可,随机抽取。    《企业大数据系统构建实战:技术、架构、实施与应用》 图书详情:https://item.jd.com/12078875.html 4位在技术、应用、数据分析、架构、BI等方面非常资深的大数据专家,在软通动力、HiveCloud、国美、Webtrekk(德国*大网站数据分析服务提供商)等大企业的大数据实践经验总结 从战略规划、落地实施、价值提升3个维度,技术、架构、实施、应用4个层面,为企业从数据端到应用端全方位构建大数据系统提供指导,有高度、有逻辑、有实战!   《Spark大数据分析:核心概念、技术及实践》 图书详情:https://item.jd.com/12078425.html 本书是关于大数据和Spark的一个简明手册。它将助你学习如何用Spark来完成很多大数据分析任务,其中覆盖了高效利用Spark所需要知道的重...
华章 发布于 2个月前 阅读 140 评论 16 点赞 1

[INS-35172] Target database memory (XXMB) exceeds the systems available shared memory ({0}MB) 解决方法

INS-35172] Target database memory (XXMB) exceeds the systems available shared memory ({0}MB) 解决方法 [日期:2012-02-14] 来源:blog.csdn.net/tianlesoftware  作者:tianlesoftware [字体:大 中 小] 安装Oracle 11gR2数据库,安装过程中报错:   [INS-35172] Target database memory (778MB)exceeds the systems available shared memory ({0}MB). 经过测试,目前系统最大能通过的内存是:632M. 如下图:   影响这个最大值,即632M是我们的tmpfs 文件的大小。 这个问题和我之前的blog原因类似: Oracle11gR2 RAC ORA-00845 MEMORY_TARGET not supported on this system 解决方法 http://www.linuxidc.com/Linux/2012-02/54216.htm MOS上的文档[ID 460506.1] 有说明。 You are tryingto use the MEMORY_TARGET feature. This feature requires the /dev/shm filesystem to be mounted for at Least <size> bytes.The /dev/shm is either notmounted or is mounted With available space less than this size. [root@gg2 ~]# df -h /dev/shm Filesystem            Size  Used Avail Use% Mounted on tmpfs                 636M ...
rootliu 发布于 7小时前 阅读 21

Maven 使用profiles 时 值无法替换问题

有帮助请点赞吆 ε=(・д・`*)ハァ…
翱翔fly 发布于 6小时前 阅读 22

LocalDate 和 Date 互相转换

针对 Java8新增的日期时间相关的 java.time.LocalDate  和 java.util.Date 的相互转换,做一个分享。 不多说,直接贴代码  /** * localDate to date * @param localDate * @return */ private Date asDate(LocalDate localDate){ ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId); Instant instant = zonedDateTime.toInstant(); return Date.from(instant); } /** * date to localDate * @param date * @return */ private LocalDate asLocalDate(Date date){ Instant instant = date.toInstant(); ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(instant, zoneId); return zonedDateTime.toLocalDate(); } 测试代码 @Test public void test(){ Date date= asDate(LocalDate.of(2017, 8, 22)); System.out.println(date); }  ...
codingcloud 发布于 7小时前 阅读 19

国外程序员整理的机器学习资源大全

国外程序员整理的机器学习资源大全 作者:sdnhub 发布:2016-04-09 19:35 分类:机器学习 阅读:702 views 抢沙发 本列表选编了一些机器学习领域牛B的框架、库以及软件(按编程语言排序)。 C++ 计算机视觉 CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库 OpenCV—它提供C++, C, Python, Java 以及 MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统。 通用机器学习 MLPack DLib ecogg shark Closure 通用机器学习 Closure Toolbox—Clojure语言库与工具的分类目录 Go 自然语言处理 go-porterstemmer—一个Porter词干提取算法的原生Go语言净室实现 paicehusk—Paice/Husk词干提取算法的Go语言实现 snowball—Go语言版的Snowball词干提取器 通用机器学习 Go Learn— Go语言机器学习库 go-pr —Go语言机器学习包. bayesian—Go语言朴素贝叶斯分类库。 go-galib—Go语言遗传算法库。 数据分析/数据可视化 go-graph—Go语言图形库。 SVGo—Go语言的SVG生成库。 Java 自然语言处理 CoreNLP—斯坦福大学的CoreNLP提供一系列的自然语言处理工具,输入原始英语文本,可以给出单词的基本形式(下面Stanford开头的几个工具都包含其中)。 Stanford Parse...
MtrS 发布于 6小时前 阅读 19

SpringMVC-1 基于注解方式开发

注解: @Controller //表明该类是一个controller @Scope("prototype")   设置为prototype是必要的singleton有线程安全问题 @RequestMapping @RequestMapping({"/xxx.do","xxxx.do"})  @RequestMapping("/**/xxx.do") //表示xxx.do前面有多级/ @RequestMapping("/forth*.do") @RequestParam("pname") //加在形参前   1.简单的注解式SpringMVC工程 1.1.导包 com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.apache.commons.logging-1.1.1.jar com.springsource.org.apache.log4j-1.2.15.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar junit-4.9.jar mysql-connector-java-5.1.30.jar spring-aop-4.1.6.RELEASE.jar spring-aspects-4.1.6.RELEASE.jar spring-beans-4.1.6.RELEASE.jar spring-context-4.1.6.RELEASE.jar spring-context-support-4.1.6.RELEASE.jar spring-core-4.1.6.RELEASE.jar spring-expression-4.1.6.RELEASE.jar spring-jdbc-4.1.6.RELEASE.jar spring-orm-4.1.6.RELEASE.jar spring-tx-4.1.6.RELEASE.jar spring-web-4.1.6.RELEASE.jar spring-webmvc-4.1.6.RE...
南久久 发布于 13小时前 阅读 17

界面控件Essential Studio for ASP.NET Web Forms 2017 v3发布丨附下载

Essential Studio for ASP.NET界面控件包含了商业Web应用程序开发中所需的所有控件,如grids、charts、gauges、menus、calendars、editors等等。同时,Essential Studio for ASP.NET中高性能的界面控件库还允许您的应用程序浏览和创建Excel、Word和PDF格式的文件。 Essential Studio for ASP.NET Web Forms 2017 v3点击下载>>> Essential Studio for ASP.NET Web Forms 2017 v3增加了新的日期范围选择器、图表标尺等。 日期范围选择器 新控件 日期范围选择器是一个新的ASP.NET组件,允许从应用程序中的一组预定义或自定义日期时间范围中选择日期范围。 主要特征: 在弹出窗口中选择日期的选项。 设置自定义范围。 支持本地化。 支持手机。 统计图表 StackingSplineArea和100%StackingSplineArea系列 增加新的系列类型StackingSplineArea和100%StackingSplineArea。 数据标签饱和度 根据背景颜色来显示数据标签文本。   多种样条类型 图表控件现在支持多个样条类型。   数据管理器 Web API批量编辑 数据管理器支持Web API批处理操作。Web API批量编辑是一个独特的功能,添加删除和更改的请求可以一次性处理。   可查询的数据操作 数据管理器允许通过使用可查询数据操作...
Harriet666 发布于 7小时前 阅读 18

webstrom命名改名 命令

命令
潇潇程序缘 发布于 4小时前 阅读 17

【码云周刊第 34 期】八款不可错过的热门 Markdown 开发包

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

给 Web 开发人员推荐的测试工具

用户对于现代 Web 应用除了美观要求之外,对产品体验度也有较高的要求。在推荐过几期开源图形库和通用独立 UI 组件后,觉着是时候推荐一些测试工具了。这应该也是该系列的最后一篇,感谢大家的支持。 给 Web 开发人员推荐的通用独立 UI 组件(二) 给 Web 开发人员推荐的通用独立 UI 组件(一) 给 Web 开发人员推荐的开源图形库 —— 2D/3D 给 Web 开发人员推荐的开源图形库 —— 动画 给 Web 开发人员推荐的开源图形库 —— 数据可视化 一、单元测试/测试运行器 1、Jest 知名的 JavaScript 单元测试工具,由 Facebook 开源,开箱即用。它在最基础层面被设计用于快速、简单地编写地道的 JavaScript 测试,能自动模拟 require() 返回的 CommonJS 模块,并提供了包括内置的测试环境 Dom API 支持、合理的默认值、预处理代码和默认执行并行测试在内的特性。通过在并行进程中同时运行测试,让测试更快地结束。 2、AVA 号称“未来的测试运行器”,利用 JavaScript 在 Node.js 里使得 IO 可以并行的优点,让你的测试可以并发执行,这对于 IO 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。测试并发执行强...
编辑部的故事 发布于 5天前 阅读 4748 评论 4 点赞 7

开源中国全球专享福利,云栖大会购票大返现!

开源中国为大家带来了全网专享福利!开源中国的会员复制优惠码,在购票时填入,就可以在云栖大会现场开源中国展台处领取现金福利哦!先到先得,赶紧把这个消息传递给好朋友吧,我们云栖大会见!
阿里云栖大会

【软件周刊第 42 期】微软跨平台 .NET Core 2.0 终于发布;Kotlin 发布最新稳定版

软件周刊(08.13 — 08.19):本周热门软件更新 — Kotlin 1.1.4 发布,改进对 Java 9 的支持;GCC 7.2 发布,C/C++ 编译器;IntelliJ IDEA 2017.2.2 发布;Caffeine 2.5.5 发布,Java 8 的高性能缓存库;Node.js v8.4.0 发布,添加内置 http2 实验支持
编辑部的故事 发布于 3天前 阅读 2080 评论 5 点赞 2

调用腾讯优图开放平台进行人脸识别-Java调用API实现

调用腾讯优图开放平台进行人脸识别-Java调用API实现
小帅帅丶 发布于 5天前 阅读 1879 评论 9 点赞 4

你想了解的Hive Query生命周期--钩子函数篇!

一个Hive SQL语句的执行需要经历哪些阶段? 在这些阶段中,我们可以做哪些事来影响它? Hive为我们提供了很多的钩子函数,我们可以怎样利用它为Hive实现扩展?
问津少年 发布于 4天前 阅读 623 评论 2 点赞 2

【源资讯 第40期】宇宙最强 IDE 之战 VS 夺冠;Xshell 多版本存在后门

【一周源资讯(2017.8.12-2017.8.18)】PYPL 发布的 8 月 IDE 指数榜显示,8月份搜索最多的前三大 IDE 分别是 Visual Studio、Eclipse 和 Android Studio 。编程排行榜也是月月更新,但预测哪些语言会上升到榜首却比较困难,还没有大火的Swift、Go 语言竞争力如何?
编辑部的故事 发布于 4天前 阅读 3469 评论 10

Java 实现长图文生成

实现一个用于生成微博长图文样式的包装类
六月依 发布于 4天前 阅读 850 评论 2 点赞 2

java 多线程—线程怎么来的?

并发处理的广泛应用是使得amdah1定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。
wier 发布于 2天前 阅读 578 评论 1 点赞 1

六大理由告诉你为什么 GNOME 仍然是最好的 Linux 桌面环境

一位资深 Linux 用户告诉你为什么 GNOME 仍然是最好的 Linux 桌面环境
编辑部的故事 发布于 1周前 阅读 4123 评论 51 点赞 2

Golang面试题解析(二)

## 12.是否可以编译通过?如果通过,输出什么? ```go func main() { i := GetValue() switch i.(type) { case int: println("int") case string: println("string") case interface{}: println("interface") default: println("unknown") } } func GetValue() int { return 1 } ``` ### 解析 考点:**type** 编译失败,因为type只能使用在interface ## 13.下面函数有什么问题? ```go func funcMui(x,y int)(sum int,error){ return x+y,nil } ``` ### 解析 考点:**函数返回值命名** 在函数有多个返回值时,只要有一个返回值有指定命名,其他的也必须有命名。 如果返回值有有多个返回值必须加上括号; 如果只有一个返回值并且有命名也需要加上括号; 此处函数第一个返回值有sum名称,第二个未命名,所以错误。 ## 14.是否可以编译通过?如果通过,输出什么? ```go package main func main() { println(DeferFunc1(1)) println(DeferFunc2(1)) println(DeferFunc3(1)) } func DeferFunc1(i int) (t int) { t = i defer func() { t += 3 }() return t } func DeferFunc2(i int) int { t := i defer func() { t += 3 }() return t } func DeferFunc3(i int) (t int) { defe...
梦朝思夕 发布于 4天前 阅读 656 评论 6 点赞 1 打赏 1

Shiro实现多域名登录界面

背景 目前开发接到需求如下,希望根据不同用户实现自定义域名登录(前台ui等需要略微区分,配色,皮肤等) 现状 目前系统中使用shiro作为授权权限框架,当用户没有登录时将会默认返回未授权页 比如  <!-- 配置shiroFilter--> <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"> <property name="securityManager" ref="securityManager"/> <property name="loginUrl" value="${wxb.url}"/> <property name="successUrl" value="/kzf6/page/index/index.jsp" /> <property name="unauthorizedUrl" value="/kzf6/page/error/403.jsp" /> <property name="filters"> <map> <entry key="kickout" value-ref="kickoutSessionControlFilter"/> </map> </property> <property name="filterChainDefinitions"> <value> /mlogin/login.json = anon <!-- 除了上面定义的url和资源,都需要配认证后才可以访问 --> /** = kickout,authc </value> </property> </bean> 上述配置可以导致未登录用户来自动重定向到${w...
Mr_Qi 发布于 2天前 阅读 541 评论 2 点赞 1

java高并发锁的3种实现

java高并发锁的3种实现
正在长大的毛毛虫 发布于 2天前 阅读 244

Java分布式神经网络库Deeplearning4j 环境搭建和运行一个例子

deeplearning4j是一个Apache 2.0-licensed,开源的,分布式神经网络库编写的java和Scala。 开源的学习框架也不少,这么多大企业贡献了自己的部分产品,开源供大家学习研究和完善。例如:Tensor flow,caffe,Theano,Torch,Brainstorm,Chainer,Deeplearning4j 等等,其中Deeplearning4j 是基于 JVM 开发的机器学习工具,完全开源,天行支持JVM 上运行的程序,如:spark ,Hadoop 等。本文介绍一下 Deeplearning4j 的环境搭建,及运行一个官方的例程。
小帅帅丶 发布于 2天前 阅读 444 点赞 3

Restful API利器——RestPack项目教程

## 目录 * 项目背景 * RestPack 简介 * 源码下载 * 软件版本 * 配置 terran4j 的 Maven 仓库 * 引入 RestPack 依赖 * 启用 RestPack * @RestPackController 注解 * RestPack 异常处理 * 日志输出 * 资源分享与技术交流 ## 项目背景 在互联网、移动互联网、车联网、物联网繁荣的今天,各种客户端设备层出不穷,为了能用同一套服务端程序处理各种客户端的访问,[ HTTP Restful API ](http://www.ruanyifeng.com/blog/2014/05/restful_api.html) 变得流行起来。 但是客户端与服务端交互时,往往会有一些通用的需求,比如: * 服务端在处理一个 API 请求时,如果出异常了,总是希望在请求的返回结果中给出一个明确的错误码,客户端可以根据错误码作进一步的处理。 * 为了方便排查问题,总是希望对于每个请求,服务端会返回一个 requestId,后台可以将这个请求产生的日志与这个 requestId 相关联。 这样一旦前后端联调时发现了问题,前端工程师只要给出 requestId ,后台工程师就可以拿着这个 requestId 快速找出相关日志,方便分析排查问题。 ...... 为了满足这些非功能性需求,笔者总结了之前很多项目的开发经验,归纳出一套统一的数据返回格式,如下(分成功和失败两种情况)...
terran4j 发布于 4天前 阅读 351 评论 5

nginx之proxy_pass指令完全拆解

nginx中有两个模块存在proxy_pass指令。proxy_pass后的后端服务器的uri到底是个啥?
永福 发布于 5天前 阅读 2474 评论 6 点赞 10 打赏 1

曲线点抽稀算法-Python实现

## 何为抽稀 >在处理矢量化数据时,记录中往往会有很多重复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不光滑或不符合标准。因此要通过某种规则,在保证矢量曲线形状不变的情况下, 最大限度地减少数据点个数,这个过程称为抽稀。 通俗的讲就是对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度保持原有形状。比较常用的两种抽稀算法是:道格拉斯-普克(Douglas-Peuker)算法和垂距限值法。 ## 道格拉斯-普克(Douglas-Peuker)算法 Douglas-Peuker算法(DP算法)过程如下: * 1、连接曲线首尾两点A、B; * 2、依次计算曲线上所有点到A、B两点所在曲线的距离; * 3、计算最大距离D,如果D小于阈值threshold,则去掉曲线上出A、B外的所有点;如果D大于阈值threshold,则把曲线以最大距离分割成两段; * 4、对所有曲线分段重复1-3步骤,知道所有D均小于阈值。即完成抽稀。 这种算法的抽稀精度与阈值有很大关系,阈值越大,简化程度越大,点减少的越多;反之简化程度越低,点保留的越多,形状也越趋于原曲线。 下面是Python代码实现: ```python # -*- coding: utf-8 -*- """ -----------------...
j_hao104 发布于 5天前 阅读 851 评论 1 点赞 2

加速前后端并行开发,JApiDocs 可以帮到你

JApiDocs 作为一个衔接前后端开发的的工具,尽可能把重复劳动都自动化了,实现了代码即文档,持续集成接口测试的小目标,非常优雅的解决在前后端并行开发碰到的一些问题。
叶大侠 发布于 4天前 阅读 426 评论 2

ES2017异步函数现已正式可用

ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数。如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的。 异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks、generators 或 promise 中包含你的逻辑。 如下代码: function logger() { let data = fetch('http://sampleapi.com/posts') console.log(data) } logger() 这段代码并未实现你的预期。如果你是在JS中编写的,那么你可能会知道为什么。 下面这段代码,却实现了你的预期。 async function logger() { let data = await fetch('http:sampleapi.com/posts') console.log(data) } logger() 这段代码起作用了,从直观上看,仅仅只是多了 async 和 await 两个词。   ES6 标准之前的 JavaScript 异步函数 在深入学习 async 和 await 之前,我们需要先理解 Promise。为了领会 Promise,我们需要回到普通回调函数中进一步学习。 Promise 是在 ES6 中引入的,并促使在编写 JavaScript 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 1天前 阅读 1750 评论 11 点赞 5

【码云周刊第 33 期】6款程序员必备的开源中文处理工具

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

Spring源码-AOP(六)-自动代理与DefaultAdvisorAutoProxyCreator

The best way to predict the future is to invent it. 预测未来的最好方法就是创造未来。 -- 沃尔特·艾萨克森 《乔布斯传》
青离 发布于 2天前 阅读 272

Zookeeper(四)-实战

注册到我自己的测试服务器上的zookeeper,然后我们去看看 zookeeper的节点是怎么样的 除了一个默认的zookeeper的节点 ,多了一个dubbox(持久节点)的节点,然后我们去看看dubbo下面的节点是啥 可以看到 dubbo下面的节点全是 java的service类的权限定包名,O(∩_∩)O~,想看其它信息,自己也去试试吧,很晚了 准备睡觉了   贴一个自己写的angularjs的项目     项目才开发到 40%,继续坚持  
埔枘 发布于 1小时前 阅读 8

【spring cloud】自定义jwt实现spring cloud nosession

![image](http://obq1lvsd9.bkt.clouddn.com/springcloud-jwt2.png) 路由实现在Zuul,网关的路由默认配置。 jwt 生成、验证依赖 ``` io.jsonwebtoken jjwt 0.7.0 ``` 最核心的配置是在spring security中加入我们token校验机制的fiter:**JwtAuthenticationTokenFilter** ``` protected void doFilterInternal( HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { String authHeader = request.getHeader(this.tokenHeader); if (authHeader != null && authHeader.startsWith(tokenHead)) { String authToken = authHeader.substring(tokenHead.length()); // The part after "Bearer " String username = jwtTokenUtil.getUsernameFromToken(authToken); logger.info("checking authentication " + username); if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { UserDetails userDetails = this.userDetailsService.loadUserByUsername(username); if (jwtTokenUtil.validateToken(authToken, userDetails)) { UsernamePasswordAuthenticationToken authe...
冷冷gg 发布于 1小时前 阅读 5

教你正确使用VSCode写Python

我们会发现在编写的时候代码会有很多格式问题的warning。那么如何自动格式化代码呢?这是本期将要介绍的。 1、配置flake8 安装flake8之后写代码的时候编辑器就会提示哪里出错,代码格式不规范也会提示。打开命令行,VSCode可以直接运行终端,按快捷键 Ctrl + `输入“pipinstallflake8”安装flake8成功后,打开文件-> 首选项 -> 设置,在settings.json中找到静态代码提示的两个设置,并修改如下: "python.linting.pylintEnabled": false "python.linting.flake8Enabled": true 2、配置yapf 安装yapf之后在VScode中按Alt+Shift+F即可自动格式化代码。打开命令行,方式如同上面一样。输入“pip install yapf”安装yapf成功后,打开文件 -> 首选项 -> 设置,在settings.json中找的这个设置,并修改为如下:"python.formatting.provider": "yapf", 3、几个简单配置 保存文件时自动在末尾插入新行,因为Python的格式是在程序末尾是有一个新行的。 "files.insertFinalNewline": true 文件自动保存,可设置延时时间。 "files.autoSave": "afterDelay" "files.autoSaveDelay": 1000 后面那个是设置延时时间的,这里设置为1000ms。 原文来自:https://www.baidu.com/home/news/data/...
linux-tao 发布于 1小时前 阅读 3

阿里云数据库技术峰会

广告
知数堂联合创始人、映客直播架构师、安华金和数据安全专家,以及多位阿里云多名技术专家将线上讲述,云数据库产品及架构设计背后的考量,剖析阿里云自研HTAP数据库的技术发展之路,如何避免数据库“勒索事件”和“从删库到跑路”的尴尬,以及云数据库的安全考量等等话题。
阿里云

设计 REST 风格的 MVC 框架

引入 Java 开发者对 MVC 框架一定不陌生,从 Struts 到 WebWork,Java MVC 框架层出不穷。我们已经习惯了处理 *.do 或 *.action 风格的 URL,为每一个 URL 编写一个控制器,并继承一个 Action 或者 Controller 接口。然而,流行的 Web 趋势是使用更加简单,对用户和搜索引擎更加友好的 REST 风格的 URL。例如,来自豆瓣的一本书的链接是 http://www.douban.com/subject/2129650/,而非http://www.douban.com/subject.do?id=2129650。 有经验的 Java Web 开发人员会使用 URL 重写的方式来实现类似的 URL,例如,为前端 Apache 服务器配置 mod_rewrite 模块,并依次为每个需要实现 URL 重写的地址编写负责转换的正则表达式。 或者,通过一个自定义的 RewriteFilter,使用 Java Web 服务器提供的 Filter 和请求转发(Forward)功能实现 URL 重写,不过,仍需要为每个地址编写正则表达式。 既然 URL 重写如此繁琐,为何不直接设计一个原生支持 REST 风格的 MVC 框架呢?   要设计并实现这样一个 MVC 框架并不困难,下面,我们从零开始,仔细研究如何实现 REST 风格的 URL 映射,并与常见的 IoC 容器如 Spring 框架集成。这个全新的 MVC 框架暂命名为 WebWind。 术语 MVC:Mod...
为了美好的明天 发布于 1小时前 阅读 3

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.js Vue.js是一款MVVM框架,上手快速简单易用,通过响应式在修改数据的时候更新视图。Vue.js的响应式原理依赖于[Object.defineProperty](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty),尤大大在[Vue.js文档](https://cn.vuejs.org/v2/guide/reactivity.html#如何追踪变化)中就已经提到过,这也是Vue.js不支持E8 以及更低版本浏览器的原因。Vue通过设定对象属性的 setter/getter 方法来监听数据的变化,通过getter进行依赖收集,而每个setter方法就是一个观察者...
染陌同学 发布于 2小时前 阅读 1

percona分支mongodb3.4二进制安装 on Centos6.8

说明 版本:percona 分支的mongodb3.4的二进制版本 percona-server-mongodb-3.4.6-1.7-centos6-x86_64.tar.gz 目录规划: 安装目录: /data/opt/ 数据文件目录: /data/mongo 配置文件: /etc/mongod.conf 增加用户和组 groupadd mongodb  &&  useradd -g mongodb mongodb 解压 tar zxvf percona-server-mongodb-3.4.6-1.7-trusty-x86_64.tar.gz -C /data/opt/ 创建相关目录 mkdir -p /data/mongo/{db,log,tmp} 更改属性 chown -R mongodb:mongodb /data/opt/percona-server-mongodb-3.4.6-1.7/ chown -R mongodb:mongodb /data/mongo 配置环境变量 echo "PATH=$PATH:/data/opt/percona-server-mongodb-3.4.6-1.7">>/etc/profile source /etc/profile 创建mongodb配置文件 cat /etc/mongod.conf  storage:   dbPath: /data/mongo/db   journal:     enabled: true   engine: wiredTiger systemLog:   destination: file   logAppend: true   path: /data/mongo/log/mongod.log processManagement:   fork: true     pidFilePath: /data/mongo/tmp/mongod.pid net:   port: 27017   bindIp: 192.168.1.235,127.0.0.1 security:   authorization: disabled 内...
xxj123gogo 发布于 2小时前 阅读 5

JVM内存溢出常见原因分析及排查

对工作中JVM内存溢出问题进行分析,并给出一些常见的排查方法。
蔡佳娃 发布于 2小时前 阅读 3

使用idea过程中,修改html/jsp等页面不能生效的原因(eclipse也会遇到)

参考:http://blog.csdn.net/dandandeshangni/article/details/44057871 在使用模板引擎是: 使用模板引擎是,我是用的idea2017进行的开发,用的是thymleaf模板框架。在调试的过程中,我发现每次修改页面后,都需要重新reploy也不行。 然后经过百度,发现了如下内容: 主要的看 on update action 和 on frame deactivation 具体解释如下 intellij idea默认文件是自动保存的,但是手头有个项目jsp文件改动后,在tomcat中不能立即响应变化。要jsp文件改动后立刻看到变化,有个配置。在idea tomcat 中server的配置里,有个on frame deactivation,选择update classes and resources。另外有个配置on update action,就是手动操作的时候采取什么动作,可以重启服务器,也可以像上面一样更新类和资源文件,我选的是Redeploy。 可是当前项目没有update classes and resources这个选项,有个Hot Swap classes。这是由于服务器添加的Artifact类型问题,一般一个module对应两种类型的Artifact,一种是war,一种是war explored。war就是已war包形式发布,当前项目是这种形式,在这种形式下on frame deactivation配置没有update classes and resources选项。war explored是发布文件目录...
viakiba 发布于 2小时前 阅读 2

正则表达式

基础正则表达式 手机号   email    
pandudu 发布于 2小时前 阅读 4 评论 1

gitlab更新ssl证书

ssl用的是Let's Encrypt,但是只有三个月的有效期,但是至少是免费的呀。 其实gitlab上的服务器已经是启用了ssl,知识证书过期了。需要更新一下证书 网上我找到了这个命令 ``` ./certbot-auto renew --dry-run 用了这个命令也一样 ./certbot-auto renew --force-renew ``` 但是执行后的的输出是 ``` WARNING: unable to check for updates. Requesting root privileges to run certbot... /home/ubuntu/.local/share/letsencrypt/bin/letsencrypt renew --dry-run The standalone specific supported challenges flag is deprecated. Please use the --preferred-challenges flag instead. Saving debug log to /var/log/letsencrypt/letsencrypt.log Currently, the renew verb is capable of either renewing all installed certificates that are due to be renewed or renewing a single certificate specified by its name. If you would like to renew specific certificates by their domains, use the certonly command. The renew verb may provide other options for selecting certificates to renew in the future. ``` 我不知道是不是成功更新了。 可以写一个...
miaojiangmin 发布于 2小时前 阅读 2

Ubuntu安装docker-ELK

最近新项目要准备做日志系统,nginx的access log暂时先放着,后期再考虑,目前首要处理的是接口中的php执行过程中产生的业务日志。直接入数据库,或写文件感觉太low,elk stack虽然搭建、运维比较麻烦,但它有很好的展示层,并且能够灵活地接入将来的其他各种日志,感觉还是值得做下尝试。准备先在VM上先用docker镜像体验下,于是就有了以下的安装过程。 ## 安装docker 1. 使用yum install安装docker.io发现版本有问题, 2. 升级软件源,安装lxc-docker,还是有问题(具体什么忘了) 3. 使用get.docker.io的shell,搞定 ``` curl -sSL https://get.docker.com/ubuntu/ | sudo sh ``` ## 获取elk镜像 1. 之前尝试过github中的elk-docker,但是发现它启动过程中会调用被墙的接口,导致无法继续,由于我使用的环境的特殊性,不便翻墙,于是放弃这种方式; 2. 从官方pull elk镜像,这种方式执行过程中也有墙; 3. 使用阿里云docker-hub,妥妥搞定(这个是它的文档:[elk-docker](http://elk-docker.readthedocs.io/?spm=5176.100239.blogcont303.9.0u1FCK)) ``` docker pull registry.cn-hangzhou.aliyuncs.com/testhub/elk ``` ## 运行 启动镜像 ``` sudo docker run -p 560...
robinfly 发布于 2小时前 阅读 2

ubuntu安装git

$ sudo add-apt-repository ppa:git-core/ppa $ sudo apt-get update 如果出现以下错误-- E: 无法获得锁 /var/lib/dpkg/lock - open (11: 资源暂时不可用) E: 无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它? sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 然后: $ sudo apt-get install git 查看版本 git --version  
Marhal 发布于 2小时前 阅读 2

使用密钥登录阿里云

将密钥上传至Linux服务器,并修改权限。以文件king.pem为例: chmod 600 king.pem 修改密钥格式为OpenSSH,如果询问,留空回车: ssh-keygen -p -f king.pem 生成公钥.pub文件: ssh-keygen -e -f king.pem >> king.pem.pub 选择“Use Session public key”,将生成的XXX.pem.pub文件绝对路径填入,点击“OK”。
小失丶 发布于 2小时前 阅读 2

为什么 PHP 中 this 和 self 访问变量的写法不一样?

self是关键字,而$this是一个变量,表示当前对象,也就是你能直接把$this返回实现链式调用. $this->foo也是一个变量,表示当前对象里名为foo的成员. 而self::$foo表示类里面名为foo的变量. self其实就相当于类名,parent相当于父类名,都是在类里面使用的关键字. <?php class foo { const a = '类的常量'; // PHP 5.3 public static $b = '类的静态变量'; public $c = '对象的变量'; // 类的普通方法既能访问静态变量,也能访问普通变量. // 而类的静态方法不能访问类的非静态变量和非静态方法. public function bar() { return array( self::a, self::$b, $this->c ); } } $foo = new foo(); echo foo::a . "\n"; // 类的常量 echo foo::$b . "\n"; // 类的静态变量 echo $foo->c . "\n"; // 对象的变量 var_export($foo->bar()); // 输出: 输出的内容如下: array ( 0 => '类的常量', 1 => '类的静态变量', 2 => '对象的变量', )  ...
FeanLau 发布于 2小时前 阅读 2

技术leader_会议篇

组织会议是身为技术leader的基本功  先分享一个会议记录模板,最后是要邮件抄收给想关的人的. 主题:xxxxxx 日期:2017.08.19 16:00 ~ 18:00 地点:xxxxxx 主持人:邱海泷 记录人:邱海泷 与会者:xxxxxxx 会议议题: ... ... 持续集成(16:00~16:20[20分钟]) 应用重构(16:21~16:30[9分钟]) ... ... 会议内容: ... ... 会议决议事项 ... ... 持续集成 (责任人:xxx 时间:2017.09.01~10.10) 应用重构 1. 本地播放器 (责任人:xxx 时间:2017.09.30~10.30) .. ... 4. 资源管理器 (责任人:xxx 时间:2017.09.30~10.30) 会议记录详解 1. 确定会议主题,明确会议目标,避免跑题.         每个会议都需要有一个明确的目标,且目标最好只有一个,所有交流的内容都要围绕这个目标,     在固定的时间内锁定目标而不偏离主题是会议组织者的挑战。 2. 确定时间, 就是会议的总时间. (结合会议主题 与 议题,规划合理的总时间)         会议时间要尽可能短,能 30 分钟开完,绝不用 40 分钟,     但简短并不意味压缩时间而忽略重要信息,定义恰当的会议时间是会议组织者的基本功。         尽量避免超过90分钟的会议。 3. 确定地点,...
冰雪情缘l 发布于 2小时前 阅读 26

明目张胆的黑php

    自从2006接触互联网开始,虽然刚开始不是程序猿,只能算网民,但也是一个关注IT界的网民。印象里面就经常看到php漏洞的报道,发展了这么多年,虽然进步不少,但各种漏洞依旧,或者说,很容易写出安全性极差的程序。     公司某php服务(附属服务,为了生产力而存在),也是国内非常非常出门的某开源软件,存在严重安全风险,轻松获取各种权限!尼玛,吓尿了。通过非常规方式修复了,软件名字也不说了,只想说,真尼玛不靠谱。     为了安全,远离php。还是我大Java靠谱点,不过,听说Java9要那个啥了,希望别影响Java的安全性。
RippleChan 发布于 3小时前 阅读 1

常用的 wget 参数详解

导读 wget 是一个从网络上自动下载文件的自由工具,支持通过 HTTP、HTTPS、FTP 三个最常见的 TCP/IP协议 下载,并可以使用 HTTP 代理。"wget" 这个名称来源于 “World Wide Web” 与 “get” 的结合。本文详细讲解wget参数和使用的使用,希望对大家理解wget的使用有所帮助。 自动下载文件是什么意思呢?其实就是指:wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个wget下载任务,然后退出系统,wget将在后台执行直到任务完成,相对于其它大部分浏览器在下载大量数据时需要用户一直的参与,这省去了极大的麻烦。 那下面我们来看看具体的使用吧。 1、使用方法 格式:wget [选项]  [参数] 其中参数为:URL地址。 其中选项如下: -a<日志文件>:在指定的日志文件中记录资料的执行过程; -A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔; -b:进行后台的方式运行wget; -B<连接地址>:设置参考的连接地址的基地地址; -c:继续执行上次终端的任务; -C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on; -d:调试模式运行指令; -D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔; -e<指令>:作为文...
问题终结者 发布于 3小时前 阅读 1

docker运行storm及wordcount实例

## 序 本文简单介绍下怎么使用docker运行storm以及在springboot中使用storm。 ## docker-compose ``` version: '2' services: zookeeper: image: zookeeper ##3.4.10 container_name: zookeeper restart: always ports: - 2181:2181 nimbus: image: storm ## 1.1.1 container_name: nimbus command: storm nimbus depends_on: - zookeeper links: - zookeeper restart: always ports: - 6627:6627 supervisor: image: storm container_name: supervisor command: storm supervisor depends_on: - nimbus - zookeeper links: - nimbus - zookeeper restart: always ui: image: storm container_name: stormui command: storm ui depends_on: - nimbus - zookeeper links: - nimbus - zookeeper restart: always ports: - 8080:8080 ``` >启动之后访问192.168.99.100:8080就可以看见storm-ui的界面 ## wordcount实例 ### TestWordSpout ``` public class TestWordSpout extends BaseRichSpout { public static Logger LOG = LoggerFactory.getLogger(TestWordSpout.class); boolean _isDistributed; SpoutOutputCollector _collector; public TestWordSpout() { this(true); ...
go4it 发布于 4小时前 阅读 4

HDU 1010 dfs 剪枝

题意:根据地图,'S'为开始位置,'D'为门的位置,' . '为空地,'X'为墙,不能经过, 问:在指定的时间,是否能到达'门'的位置. 注意:路不可以重复经过,时间也要刚好是 t ,不能少. 思路:还是DFS,不能用BFS,因为BFS求的是最短路径,而此题的路径不一定最短. 剪枝是关键,奇偶剪枝. 奇偶剪枝原理: 要理解奇偶剪枝,先了解一下曼哈顿距离,从一个点到达另外一个点的最短路径长度(时间)可以根据两点坐标求出, 路径长度(非最短)与最短路径的长度同奇偶,它们的差一定是偶数!举个例子,就像两个偶数的差差是偶数,两个个数的差也是偶数. 本题还有一个剪枝:n*m-wall与t的关系,wall为'X'的数量,解释一下,n*m为区域总数, 所以m*n-wall<=t 一定不到到达终点,注意,少时等号在杭电上运行时间为546MS,而加上等号运行时间才为78MS! eg:  3 3 4 SXX .XX X.D 上面的例子满足m*n-wall=t,确实不能到达,但不能找到合理的解释......   奇偶剪枝: 是数据结构的搜索中,剪枝的一种特殊小技巧。 现假设起点为(sx,sy),终点为(ex,ey),给定t步恰好走到终点,   s         |         |         |         + — — — e   如图所示(“|”竖走,“—”横走,“+”转弯),易证abs(ex-sx)+abs(ey...
阿豪boy 发布于 4小时前 阅读 4

自定义字体库Calligraphy使用方式及原理解析

前言 在出现这个框架之前,我们要将应用字体替换为自定义字体基本只有三种方式: 1. 读取放在Assets目录下的字ttf文件,再通过 setTypeFace 方法设置,更通常的情况是通过自定义 View 的方式来实现字体切换,这样导致 app 中所有切换字体的地方都需要使用自定义 View,当你需要在Button、EditText、CheckBox 和 RadioButton 等继承自 TextView 的子类中实现自定义字体时又要创建对应的自定义View,这无疑是一种强耦合的写法,只能适合一些小型项目; 2. 对当前页面进行遍历,遇到继承自 TextView 的 View 就动态设置 typeface,优点是可以一次性替换大量控件的字体,避免写多个自定义控件的麻烦,缺点也很明显: 循环遍历消耗性能,对大量 view 的界面不太适合,容易造成页面卡顿现象; 对采用 cavas 的自定义画布的方式需要单独处理里面的文字显示; 3. 自定义Application, 在初始化阶段将系统的字体通过反射的方式将我们设置的系统字体替换为我们的自定义字体,优点是避免了一一写自定义View的麻烦,对应用性能造成的影响也较小,缺点是干涉系统字体在某些情况下会出现意想不到的问题。 Calligraphy 这个库的出现就是以更优雅的方式来解决替换字体时的耦合和性能问题的,...
fqian 发布于 4小时前 阅读 2

ES2017异步函数现已正式可用

ES2017标准已于2017年6月份正式定稿了,并广泛支持最新的特性:异步函数。如果你曾经被异步 JavaScript 的逻辑困扰,这么新函数正是为你设计的。 异步函数或多或少会让你编写一些顺序的 JavaScript 代码,但是却不需要在 callbacks、generators 或 promise 中包含你的逻辑。 如下代码: function logger() { let data = fetch('http://sampleapi.com/posts') console.log(data) } logger() 这段代码并未实现你的预期。如果你是在JS中编写的,那么你可能会知道为什么。 下面这段代码,却实现了你的预期。 async function logger() { let data = await fetch('http:sampleapi.com/posts') console.log(data) } logger() 这段代码起作用了,从直观上看,仅仅只是多了 async 和 await 两个词。   ES6 标准之前的 JavaScript 异步函数 在深入学习 async 和 await 之前,我们需要先理解 Promise。为了领会 Promise,我们需要回到普通回调函数中进一步学习。 Promise 是在 ES6 中引入的,并促使在编写 JavaScript 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 1天前 阅读 1750 评论 11 点赞 5

你想了解的Hive Query生命周期--钩子函数篇!

一个Hive SQL语句的执行需要经历哪些阶段? 在这些阶段中,我们可以做哪些事来影响它? Hive为我们提供了很多的钩子函数,我们可以怎样利用它为Hive实现扩展?
问津少年 发布于 4天前 阅读 623 评论 2 点赞 2

调用腾讯优图开放平台进行人脸识别-Java调用API实现

调用腾讯优图开放平台进行人脸识别-Java调用API实现
小帅帅丶 发布于 5天前 阅读 1879 评论 9 点赞 4

曲线点抽稀算法-Python实现

## 何为抽稀 >在处理矢量化数据时,记录中往往会有很多重复数据,对进一步数据处理带来诸多不便。多余的数据一方面浪费了较多的存储空间,另一方面造成所要表达的图形不光滑或不符合标准。因此要通过某种规则,在保证矢量曲线形状不变的情况下, 最大限度地减少数据点个数,这个过程称为抽稀。 通俗的讲就是对曲线进行采样简化,即在曲线上取有限个点,将其变为折线,并且能够在一定程度保持原有形状。比较常用的两种抽稀算法是:道格拉斯-普克(Douglas-Peuker)算法和垂距限值法。 ## 道格拉斯-普克(Douglas-Peuker)算法 Douglas-Peuker算法(DP算法)过程如下: * 1、连接曲线首尾两点A、B; * 2、依次计算曲线上所有点到A、B两点所在曲线的距离; * 3、计算最大距离D,如果D小于阈值threshold,则去掉曲线上出A、B外的所有点;如果D大于阈值threshold,则把曲线以最大距离分割成两段; * 4、对所有曲线分段重复1-3步骤,知道所有D均小于阈值。即完成抽稀。 这种算法的抽稀精度与阈值有很大关系,阈值越大,简化程度越大,点减少的越多;反之简化程度越低,点保留的越多,形状也越趋于原曲线。 下面是Python代码实现: ```python # -*- coding: utf-8 -*- """ -----------------...
j_hao104 发布于 5天前 阅读 851 评论 1 点赞 2

nginx之proxy_pass指令完全拆解

nginx中有两个模块存在proxy_pass指令。proxy_pass后的后端服务器的uri到底是个啥?
永福 发布于 5天前 阅读 2474 评论 6 点赞 10 打赏 1

AntV - 我认为这是一个不严谨的错误

AntV 钟表是一个Bug吧,我咋不是很肯定,因为不同角度不同结果吧
andotorg 发布于 7天前 阅读 1507 评论 21 点赞 4

PHP实现定时任务(非linux-shell方式,与操作系统无关)

用PHP实现定时任务(非linux-shell方式,与操作系统平无关)。适用于定时精确时间不低于1秒。web服务重启、或者php重启。该定时任务不会自动重启。可以用来处理大部分定时任务的结局方案,商城定时自动收货,关闭评论,订单回滚;定时发送邮件,数据备份等
大弹簧 发布于 1周前 阅读 2452 评论 29 点赞 3

自下向上的编写容易阅读的代码(上)

我在 [关于极简编程的思考](https://my.oschina.net/xiandafu/blog/894155) 中曾提到要编写可阅读的代码。因为代码是编写一次,阅读多次。 阅读者包括代码编写者,以及后来的维护人员。能让阅读代码更轻松,有利于增强项目或者产品的可维护性。 本博客分为上下俩部分,第一部分讲解在代码层次 编写可阅读的代码, 第二部分讲解方法,类,以及一些设计上的考虑 让代码更适合阅读。这些都是我在实际工作的一些体会以及代码审查过程中跟同事一起得出的一些经验。没有太高深的理论,适合所有人借鉴交流。 # 代码层次(上) ## if 语句保持主流程畅通 ``` if(xxx){ return false; } if(yyy){ return false; } if(zzz){ throw new Exception(); } //主逻辑代码在下面 ....... return true; ``` 使用if语句,对于不符合主逻辑的,要尽早返回,这样可以减轻代码阅读者的负担,下次再看,直接就可以从主逻辑开始。直接跳过不关心的代码块(这样代码块必然返回都是fasle) 如下是一个不好的例子 ``` if(xxx){ return false; } if(yyy){ return true; } //主逻辑代码在下面 ``` 在主逻辑前面分别返回了true 或者 false,阅读者会造成混乱,因为说明这个方法任何一处都有可能返回不同的...
闲大赋 发布于 1周前 阅读 2708 评论 35 点赞 23

基于 CSP 的设计思想和 OOP 设计思想的异同

Go语言推崇的CSP编程模型和设计思想,并没有引起很多Go开发者包括Go标准库作者的重视。标准库的很多设计保留了很浓的OOP的味道。本篇Blog想比较下从设计的角度看,CSP和OOP到底有什么区别。 下面,我们来看一个例子,如果我们有一个项目,需要做一个TCP连接中继器( 请原谅我的用词)。我们先按照OOP来设计下: 系统的结构:需要有一个客户端和一个服务器端。分两个进程分别跑在不同机器上。 系统对象关系拆分(这里有所简化,E-R图等省略):连接中继器类--系统的主类、config类--描述配置的类、connection类--每个连接一个conn类的实例、pipe类--提供一个管道,把上游的连接和下游的连接打通,把数据从A--pipe--B、encrypt工具类,提供各种加解密工具。 理清楚系统中各种对象(类)的作用关系,设计接口的细节。这里的接口,其实就是对象之间相互发送的同步阻塞的消息。 设计错误处理,日志等。 从性能方面审视整个设计,优化。 ===== 好,我们再按CSP的思路来设计下,是这么一个过程: 我们需要一个 main 协程来处理各种命令行参数的配置,收集处理配置文件; 如果是server,那么初始化server的主协程 -- tcpRemote;如果是client,则启动client的主协程 -- tcpLocal; 分...
LinkerLin 发布于 1周前 阅读 1843 评论 7 点赞 3

当 Thrift 遇到 JDK Epoll Bug

将会擦出怎样的火花呢?
輕風 发布于 1周前 阅读 1743 评论 22 点赞 6

PHP实现依赖注入

控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征。控制反转(IOC)是一种思想,依赖注入(DI)是实施这种思想的方法。
o0无忧亦无怖 发布于 2周前 阅读 1974 评论 36 点赞 8

微服务开发的入门级框架Spring Boot详解(二)

1、Spring Boot的属性配置文件         1.1 Spring Boot的属性配置文件的第一种形式             使用properties配置文件,如下两个属性的含义是更改访问端口为8081,并且加了一个contextPath,可以理解为在地址栏多加层地址。 server.port=8081 server.context-path=/joyou                 右键点击DemoApplication.java ——》Run As ——》Spring Boot App启动程序             效果如下,首先从日志上看,端口已经变为8081             浏览器访问效果如下。                 补充:             属性文件是最常见的管理配置属性的方式。Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。SpringApplication 类会在下面位置搜索该文件: 1.当前目录的/config子目录 2.当前目录 3.classpath 中的/config包 4.classpath 上面的顺序也表示了该位置上包含的属性文件的优先级。优先级按照从高到低的顺序排列。 可以通过spring.config.name这个key的配置属性来指定不同的属性文件名称。也可以通过spring.config.location来添加额外...
二十岁以后 发布于 2周前 阅读 4314 评论 24 点赞 4

Java使用Hutool实现AES、DES加密解密

在Java世界中,AES、DES加密解密需要使用Cipher对象构建加密解密系统,Hutool中对这一对象做再包装,简化了加密解密过程。
路小磊 发布于 2周前 阅读 2414 评论 21 点赞 9

SQL注入详解

日前,国内最大的程序员社区CSDN网站的用户数据库被黑客公开发布,600万用户的登录名及密码被公开泄露,随后又有多家网站的用户密码被流传于网络,连日来引发众多网民对自己账号、密码等互联网信息被盗取的普遍担忧。 网络安全成为了现在互联网的焦点,这也恰恰触动了每一位用户的神经,由于设计的漏洞导致了不可收拾的恶果,验证了一句话“出来混的,迟早是要还的”,所以我想通过专题博文介绍一些常用的攻击技术和防范策略。 SQL Injection也许很多人都知道或者使用过,如果没有了解或完全没有听过也没有关系,因为接下来我们将介绍SQL Injection。
暴雪首席执行官 发布于 2周前 阅读 3719 评论 20 点赞 4

实弹军演-基于Ceph对象存储的实战兵法

保障国家权益的第一道防线是军队,而保障数据安全的最强壁垒则是存储。老司机多年经验总结,分享几点基于Ceph的对象存储实战兵法.
秦牧羊 发布于 3周前 阅读 999 评论 4 点赞 3

浅谈Hybrid

Android web开发入门篇
Android小闹 发布于 3周前 阅读 1842 评论 4 点赞 6

图解LZ77压缩算法

数据压缩是一个减小数据存储空间的过程,目前被应用在软件工程的各个地方,了解其一些原理,方便我们更好的甄选压缩方案。
wier 发布于 3周前 阅读 3345 评论 7 点赞 15

使用Spring自定义注解实现任务路由

在Spring mvc的开发中,我们可以通过RequestMapping来配,当前方法用于处理哪一个URL的请求.同样我们现在有一个需求,有一个任务调度器,可以按照不同的任务类型路由到不同的任务执行器。其本质就是通过外部参数进行一次路由和Spring mvc做的事情类似。简单看了Spring mvc的实现原理之后,决定使用自定义注解的方式来实现以上功能。 ### 自定义TaskHandler注解 ```java @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Component public @interface TaskHandler { String taskType() default ""; } ``` 以上定义了任务处理器的注解,其中@Component表示在spring 启动过程中,会扫描到并且注入到容器中。taskType表示类型。 ### 任务处理器定义 ```java public abstract class AbstractTaskHandler { /** * 任务执行器 * * @param task 任务 * @return 执行结果 */ public abstract BaseResult execute(Task task); } ``` 以上定义了一个任务执行的处理器,其他所有的具体的任务执行器继承实现这个方法。其中Task表示任务的定义,包括任务Id,执行任务需要的参数等。 ### 任务处理器实现 接下来,我们可以实现一个具体的任务处理器。 ```jav...
wangyan9110 发布于 3周前 阅读 3347 评论 8 点赞 8

数据库中间件 Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析

![](https://www.yunai.me/images/common/wechat_mp_2017_07_31.jpg) > 🙂🙂🙂关注**微信公众号:[【芋艿的后端小屋】](http://www.yunai.me/images/common/wechat_mp.jpeg)**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列表 > 2. RocketMQ / MyCAT / Sharding-JDBC **中文注释源码 GitHub 地址** > 3. 您对于源码的疑问每条留言**都**将得到**认真**回复。**甚至不知道如何读源码也可以请教噢**。 > 4. **新的**源码解析文章**实时**收到通知。**每周更新一篇左右**。 > 5. **认真的**源码交流微信群。 ------- - [1. 概述](#) - [2. SQLParsingEngine](#) - [3. SQLParser SQL解析器](#) - [3.1 AbstractParser](#) - [3.2 SQLParser](#) - [3.2.1 #parseExpression() 和 SQLExpression](#) - [3.2.2 #parseAlias()](#) - [3.2.3 #parseSingleTable()](#) - [3.2.4 #skipJoin()](#) - [3.2.5 #parseWhere()](#) - [4. StatementParser SQL语句解析器](#) - [4.1 StatementParser](#) - [4.2 Statement](#) - [5. 彩蛋](#) ------- # 1. 概述 上篇文章[《词法解析》](http://www.yunai.me/Sharding-JDBC/sql-parse-1/)分享了**词法解析器...
芋艿V 发布于 3周前 阅读 2480 评论 19 点赞 7

RSA公私钥快速生成和RSA证书快速创建"利器"

RSA公私钥生成,RSA pkcs12证书创建, rsa密钥对
钟声已经敲响 发布于 4周前 阅读 1389 评论 5 点赞 3
顶部