开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

震惊:一行代码解决背包问题

背包问题是一个非常典型的问题,围绕他的算法及文章非常多。 实际上本人觉得作为一个程序员,肯定不是碰到一个问题就写一个方式,肯定希望我只要提供简单的几步就搞定我想要的结果,而不是去钻研算法本身。 我把背包问题做了几个抽象: 总容量:不管是容积、重量、金钱等等,只要是受限制的,那么就都是一种意义上的总容量 单个容量:每个物品的容积、重量、单价等等,都是一种意义上的单个容量 装包方式:有01,完全、混合、多重等等各种变种 单个价值评估:给出每个物品的价值 至于如果动态规划及价值累计,那就不是使用的人关心的了。 数据准备 上面定义了,一个物品的类,它有name,weight,value三个属性;有一个构造函数,没有函数体表示把参数的值赋给属性;下面建立了一个物品列表。 好的,准备工作就绪,见证奇迹的时刻就要到来了: 01背包解法 list=[ new Obj("a",2,6.0), new Obj("b",2,3.0), new Obj("c",6,5.0), new Obj("d",5,4.0), new Obj("e",4,6.0) ]; println("01背包问题:"+list.dpKnapsack(10,list.weight,1,list.value)); 上面的含义是:对这个list中的物品进行01背包方式进行获取的最大价值是多少及其获取方法。参数解释: 10:最大重量10 list.weigh...
悠悠然然 发布于 7小时前 阅读 456 评论 3 点赞 1

企业这个月买电脑可以省钱了!

6.18刚刚过去,11.11遥遥无期,这会儿买电脑总担心会多花几百块?看!这!里!戴尔最近推出了“企业特惠月”的活动,两千多就能买到好电脑,满额还送激光打印机哎!敲!划!算!
DELL

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

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

Hystrix降级技术解析-Fallback

所谓降级,就是指在在Hystrix执行非核心链路功能失败的情况下,我们如何处理,比如我们返回默认值等。如果我们要回退或者降级处理,代码上需要实现HystrixCommand.getFallback()方法或者是HystrixObservableCommand. HystrixObservableCommand()。
新栋BOOK 发布于 7小时前 阅读 87

一名架构师的自我修炼--商务技能

工作中不仅有技术,不能只埋头与技术,还要有大眼光、能为团队、公司创造效益,人生才能取得更大成就。
新栋BOOK 发布于 7小时前 阅读 183 评论 2

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

![image](http://obq1lvsd9.bkt.clouddn.com/springcloud--nosession-jwt3.png) JWT实现在网关模块,网关的路由是默认配置。 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)) { UsernamePasswordAuthentic...
冷冷gg 发布于 17小时前 阅读 129 评论 6 点赞 2

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方法就是一个观察者...
染陌同学 发布于 17小时前 阅读 163 评论 2

Filebeat优化实践

基于kubernetes的日志系统优化实践
william3608 发布于 20小时前 阅读 49 评论 2 点赞 1

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

追求理性使用开源软件的企业有很多的理由这样做。
编辑部的故事 发布于 21小时前 阅读 1157 评论 7 点赞 1

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

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

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

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

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 发布于 1天前 阅读 60 点赞 1

微服务架构的安全保障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 发布于 1天前 阅读 286 评论 1 点赞 1

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

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

Cron4j官方教程文档翻译

那啥 这个工具类还有人想用嘛,有的话我希望这篇翻译可以帮助到您! 两天的时间,翻译完这篇关于六年前的工具类的官方文档,接近三万字的英文。 虽然语法不难,但是人家甚至提供了印度语和克罗地亚语的文档也没有中文文档,这让我比较不服,抱着试试的心态就做了。 这可能是我这个暑假做的最迷的事情哈哈。 github:https://github.com/youyinnn/Cron4jTranslation 码云:https://gitee.com/youyinnn/Cron4jTranslation
Youyinnn 发布于 1天前 阅读 192 评论 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一样是一个集成环境。你可以使用一些前端工...
编辑部的故事 发布于 2天前 阅读 3744 评论 1 点赞 9

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 发布于 2天前 阅读 370 评论 10 点赞 2

Laravel思维导图之Laravel入门指南

4张思维导图看 Laravel 入门指南。
精进吧Aaron 发布于 2天前 阅读 366 点赞 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 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 2天前 阅读 1933 评论 12 点赞 5

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

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

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

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

震惊:一行代码解决背包问题

背包问题是一个非常典型的问题,围绕他的算法及文章非常多。 实际上本人觉得作为一个程序员,肯定不是碰到一个问题就写一个方式,肯定希望我只要提供简单的几步就搞定我想要的结果,而不是去钻研算法本身。 我把背包问题做了几个抽象: 总容量:不管是容积、重量、金钱等等,只要是受限制的,那么就都是一种意义上的总容量 单个容量:每个物品的容积、重量、单价等等,都是一种意义上的单个容量 装包方式:有01,完全、混合、多重等等各种变种 单个价值评估:给出每个物品的价值 至于如果动态规划及价值累计,那就不是使用的人关心的了。 数据准备 上面定义了,一个物品的类,它有name,weight,value三个属性;有一个构造函数,没有函数体表示把参数的值赋给属性;下面建立了一个物品列表。 好的,准备工作就绪,见证奇迹的时刻就要到来了: 01背包解法 list=[ new Obj("a",2,6.0), new Obj("b",2,3.0), new Obj("c",6,5.0), new Obj("d",5,4.0), new Obj("e",4,6.0) ]; println("01背包问题:"+list.dpKnapsack(10,list.weight,1,list.value)); 上面的含义是:对这个list中的物品进行01背包方式进行获取的最大价值是多少及其获取方法。参数解释: 10:最大重量10 list.weigh...
悠悠然然 发布于 7小时前 阅读 456 评论 3 点赞 1

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

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

一名架构师的自我修炼--商务技能

工作中不仅有技术,不能只埋头与技术,还要有大眼光、能为团队、公司创造效益,人生才能取得更大成就。
新栋BOOK 发布于 7小时前 阅读 183 评论 2

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方法就是一个观察者...
染陌同学 发布于 17小时前 阅读 163 评论 2

Hystrix降级技术解析-Fallback

所谓降级,就是指在在Hystrix执行非核心链路功能失败的情况下,我们如何处理,比如我们返回默认值等。如果我们要回退或者降级处理,代码上需要实现HystrixCommand.getFallback()方法或者是HystrixObservableCommand. HystrixObservableCommand()。
新栋BOOK 发布于 7小时前 阅读 87

聊一聊内存管理(2)

在上一讲我们给大家重点介绍了什么是内存管理,让大家对内存管理有了整体的认识。简单来说就是,程序的运行需要内存,你如何管理并给这些程序分配内存。   本节我们来给大家介绍最简单的一种内存管理方案:单一连续区分配。为什么说这种内存分配是最简单的呢?接下来我们就做详细的介绍。   单一连续区内存分配的基本思想是一段时间内只有一个进程在内存。我们将4G的内存分为两部分,一部分存放操作系统内核,另外一部分存放用户程序,且一段时间内只有一个用户程序在内存中。如图1-1所示:   图1- 1 单一连续区内存分配   T1时刻有进程P1,需要512MB的内存,那么将内存分配给P1,如图1-2所示; T2时刻有进程P2,需要1GB的内存,由于单一连续区内存分配的特点,此时用户区已经有了P1在执行,即时剩余内存充足,P2也无法运行,只有在P1运行结束并释放内存之后才能运行P2。 图1- 2 进程 P1的内存分布   从上面的分析大家可以看到这种内存分配方式非常的简单,可以说没有什么方法比这种还要简单的了。但是缺点也非常明显: 一段时间内只能运行一个程序,因此无法实现多道程序; 在运行一个进程后,即使有足够的剩余内存也无法执行新的进程,而只有等待该进程运行结束后...
justin_cn 发布于 6小时前 阅读 41 评论 2

从事前端开发必须要了解的CSS原理

  从事Web前端开发的人都与CSS打交道很多,有的人也许不知道CSS是怎么去工作的,写出来的CSS浏览器是怎么样去解析的呢?当这个成为我们提高CSS水平的一个瓶颈时,是否应该多了解一下呢?   一、浏览器的发展与CSS   网页浏览器主要通过 HTTP 协议连接网页服务器而取得网页, HTTP 容许网页浏览器送交资料到网页服务器并且获取网页。目前最常用的 HTTP 是 HTTP/1.1,这个协议在 RFC2616 中被完整定义。HTTP/1.1 有其一套 Internet Explorer 并不完全支援的标准,然而许多其他当代的网页浏览器则完全支援这些标准。网页的位置以 URL(统一资源定位符)指示,此乃网页的地址;以 http: 开首的便是通过 HTTP协议登陆。很多浏览器同时支援其他类型的 URL 及协议,例如 ftp: 是 FTP(档案传送协议)、gopher: 是 Gopher 及 https: 是 HTTPS(以SSL加密的HTTP)。   早期的网页浏览器只支援简易版本的HTML。专属软件的浏览器的迅速发展导致非标准的 HTML 代码的产生。但随着 HTML 的成长,为了满足设计师的要求,HTML 获得了很多显示功能。随着这些功能的增加外来定义样式的语言越来越没有意义了。   1994年哈坤·利提出了 CSS 的最初建议。伯特·波斯(BertBos)当时正...
前端攻城狮-Dawn 发布于 4小时前 阅读 20

eclipse recent workspace rememebr  

eclipse -->>Window-->>Preferences->>General->>Startup and Shutdown->>Workspace   Number of recent workspaces to rememebr  10 to 99
executor 发布于 5小时前 阅读 17

使用CopyTable同步HBase数据

CopyTable是Hbase提供的一个数据同步工具,可以用于同步表的部分或全部数据。本文介绍如何使用CopyTable同步HBase数据。针对没有hadoop集群的用户,还介绍了单机运行CopyTable的配置和参数。
小虾米DYX 发布于 1小时前 阅读 18

centos 安装mongodb

安装步骤 1.配置MongoDB的yum源 创建yum源文件: vim /etc/yum.repos.d/mongodb-org-3.4.repo 添加以下内容: [mongodb-org-3.4]   name=MongoDB Repository   baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/   gpgcheck=1   enabled=1   gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc 这里可以修改 gpgcheck=0, 省去gpg验证 安装之前先更新所有包 :yum update (可选操作) 2.安装MongoDB 安装命令: yum -y install mongodb-org   安装完成后 查看mongo安装位置 whereis mongod 查看修改配置文件 : vim /etc/mongod.conf   3.启动MongoDB  启动mongodb :systemctl start mongod.service 停止mongodb :systemctl stop mongod.service 查到mongodb的状态:systemctl status mongod.service 4.外网访问需要关闭防火墙: CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙。 关闭firewall: systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 5.设置开机启动 systemctl enable mongod.service 6.启动Mongo shell 命令:mongo  查...
fangPeng_ 发布于 1小时前 阅读 18

j2ee 简单网站搭建:(一) window 操作系统下使用 eclipse 建立 maven web 项目

现在做 java 项目基本都在使用 maven ,包管理简单,对于包间依赖自动判断下载,为 java 开发提供了很大便利。本文使用编写时最新 eclipse j2ee 版本新建一个 web 项目,解决新建项目可能出现的问题,在不编写一行代码的情况下让 web 项目在 tomcat 应用服务器上运行并打开默认页面。 开发环境如下: window 10 64bit Eclipse Oxygen Release (4.7.0) j2ee版本 JDK:jdk 1.8.0_144_64bit Tomcat 8.5.20 一 安装并配置 jdk 环境 1 在 Oracle JDK 下载页面下载最新版本的 jdk,在安装中将 jdk 和 jre 的安装路径存放在 C盘 C:\Dev\Java 目录下,两个目录路径为: jdk路径 C:\Dev\Java\jdk1.8.0_144 jre路径 C:\Dev\Java\jre1.8.0_144 2 在系统环境变量中加入Java变量 3 验证java是否配置合理 二 下载和解压 tomcat  在官网下载压缩包64位版本,解压即可使用,这里使用稳定版本 8.5.20。 三 下载解压 eclipse 并配置 tomcat 1 在官网下载 eclipse 最新版64位压缩包并解压 2 打开 eclipse.exe ,设置建立项目的目录文件夹 3 在 eclipse 中配置 tomcat 四 通过 eclipse 新建一个 maven web 项目 1 新建的项目会因为没有引用 javax.servlet 包而报以下错误 The superclass "java...
binux 发布于 3小时前 阅读 16

客户列表页面慢之困

问题 上几张相关数据 调用相同的接口但是移动端慢请求比pc端多许多(超过2s) 一个自然周大约有3000次请求超过2s(今天周三,大约3.5天)大约推测一周大概会有接近7k次 查询参数如下 两边基本一致。 那么为何出现了pc端画面和移动端画面慢请求占比达到了惊人的1:8呢? 思考 可能性: 移动端做了额外的处理导致画面慢 pc端该画面需求少,移动端需求旺盛 pc端移动端用户属性不相似(比如pc端用户数据少,移动端用户数据多) 验证 移动端增加相关耗时记录(除框架外,其余业务耗时主要集中在调用rpc请求上)基本可以排除 大部分pc端开工单画面是走的bas_search表,而移动端走的是customer_car表,pc端访问customer_car操作时相对低频的(到列表页)可能性高 开通移动端的用户基本是大客户(数据多),但是也有部分大客户是使用pc端的,基本可以排除 关于第二点我们在日志平台上得到验证 大约占比在3:1(并且移动端的大客户比例远高于pc端) 基本确定是由于该接口在大数据量的条件下表现不佳 随着业务发展以及用户的增加,效率只会越来越慢(不改造的前提下) 考虑方案 基于上述业务场景,pc端用户开工单必然是有一定条件的检索(比如手机号,会员卡号,车牌号,姓名等等),那么...
Mr_Qi 发布于 3小时前 阅读 14

Scala入门到精通—— 第二节Scala基本类型及操作、程序控制结构

本节主要内容 Scala基本类型 基本类型操作 Scala程序控制结构 Scala基本类型 Scala中的基本数据类型如下图: ![输入图片说明](http://img.blog.csdn.net/20150719090723976 "在这里输入图片标题") 从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是Scala的基本数据类型头字母必须大写,本节以Int、Long、String、Char、Double及Float类型为例介绍Scala的基本类型定义 整数类型变量定义: //16进制定义法 scala> val x=0x29 x: Int = 41 //十进制定义法 scala> val x=41 x: Int = 41 //八进制定义法 scala> 051 res0: Int = 41 浮点类型变量定义: //Double类型定义,直接输入浮点数,编译器会将其自动推断为Double类型 scala> val doubleNumber=3.141529 doubleNumber: Double = 3.141529 //要定义Float类型浮点数,需要在浮点数后面加F或f scala> val floatNumber=3.141529F floatNumber: Float = 3.141529 scala> val floatNumber=3.141529f floatNumber: Float = 3.141529 浮点类型的变量还可以采用指数表示法,如 //浮点数指数表示法,e也可以是大写E,0.314529e1与0.314529*10等同 scala> val floatNumber=0.314529e1 floatNumber: D...
chenkangyao 发布于 2小时前 阅读 14

OAuth2FeignRequestInterceptor不支持服务注册和发现?

OAuth2FeignRequestInterceptor不支持服务注册和发现
jack_peng 发布于 6小时前 阅读 13

父、子页面之间页面元素的获取及方法的调用 jquery

1. 父页面获取子页面元素:     格式:$("#iframeId ").contents().find();      实例:$("#iframeId").contents().find(".chart");    2. 父页面调用子页面方法:     格式:$("#iframeId")[0].contentWindow.iframe方法();      实例:$("#iframeId")[0].contentWindow().iClick();   3. 子页面获取父页面元素:     格式一:$("#父页面元素id" , parent.document);     实例:     格式二:top.$("父页面元素id");     实例:   4.子页面获取父页面方法:     格式一:parent.父页面方法;     实例:     格式二:top.$("父页面元素id");     实例:
荆瑶 发布于 6天前 阅读 13

多线程之间实现同步

目标:     1.理解线程安全?     2.synchronized用法     3.死锁 一、什么是线程安全问题?         当多个线程同时共享 ,同一个全局变量或静态变量,在做写的操作时,可能会发生数据冲突问题。   这就是线程安全问题,但是当做读的操作是不会发生数据冲突问题的。 例子:         比如抢火车票。 1号窗口,2号窗口,同时出售第一张火车票,这样就是现成安全问题? 结论:当多个线程同时共享同一个全局变量或者静态变量,在做写的操作时可能会发生数据冲突,造成线程安全问题。 那么如何解决线程安全问题呢?  答:使用多线程之间同步或使用锁(lock)。 什么是线程之间的同步呢? 既然能解决线程安全问题?多个线程共享同一个全局变量时可能发生数据冲突,那么是不是 同步就不能让他们发生数据冲突呢?也就是 当这个线程在使用这个全局变量的时候其他线程不能对这个全局变量进行操作,必须等他操作完成之后才能进行操作。 答:多个线程共享同一全局变量的时候,不会受到其他线程的干扰。 什么是锁? 答:锁顾名思义就是 给你这个东西上一个锁,其他人进不来。 代码演示: ①同步代码块     什么是同步代码块?     答:就是讲可能发生线程安全...
橙子hhh 发布于 15小时前 阅读 14

win10上使用cain

点以太网 注意选择自己想要使用的cain网络做如下设置 设置v4和v6 点高级 在dns中选中此两项   设置完成后 安装npcap 安装过程中 会跳出一页要选中支持 winpcap api一项 最好除了那个 administrator别的都选,反正只是增加功能和兼容性,不明白官方为何默认不选中那些功能 这下载打开cain就能用了
超级大黑猫 发布于 7小时前 阅读 12

Java内存管理:深入Java内存区域

本文引用自:深入理解Java虚拟机的第2章内容   Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。   概述:   对于从事C和C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的皇帝,又是从事最基础工作的劳动人民—既拥有每 一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。   对于Java程序员来说,在虚拟机的自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,而且不容易出现 内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把内存控制的权力交给了Java虚拟机,一旦 出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那排查错误将会成为一项异常艰难的工作。     运行时数据区域   Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时 间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(第2版)》的规 定,Java虚拟机所管理的...
hfisop 发布于 5小时前 阅读 11

redis简单运用,适合入门

初始redis,人们总说它是一个缓存,后来才明白,其实就是个数据库,但是这个数据库不是把数据持久化到硬盘,而是存在内存中。因此写入和读取速度都是比一般数据库比如mysql快的多,所以可以作为缓存。 redis是一个非关系型数据库,什么叫非关系型数据库呢,这是相对于关系型数据库来说的。关系型数据库就是我们经常见到的mysql、oracle、sqlserver等数据库,它们的存储读取都是靠sql来操作的,而且都有表结构。而非关系型数据库是没有表结构的,所以也不能用sql来操作。事实上,redis数据库中存储的都是形如key-value形式的数据,看似像一个map,存值的时候,可以set,取值的时候,可以get。 想要使用redis,首先需要启动一个redis服务,正如我们使用mysql的时候也需要先安装mysql服务,并启动,在windows系统上,有封装好的免安装版redis服务,解压后,管理员权限运行redis目录下的redis-server.exe,就启动了一个redis服务,如下,redis的默认端口是6379 接下来,在程序中我们试着往里存数据,新建一个java项目,引入jedis的jar包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> 接...
程序羊 发布于 5小时前 阅读 10

【dubbo】dubbo服务注册(dubbo:registry)

dubbo工程在启动的时候,服务是如何注册的,如何能被调用者发现并且使用的,针对这个问题,来撸一遍duboo这方面的源码,看dubbo在这方面的设计思路。
二两豆腐 发布于 4小时前 阅读 10

轻松 Java IO

android 文件 io,其实就是 Java io,廖廖几百字,来说清楚文件 IO 到底是什么。
刘焱 发布于 15小时前 阅读 11

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

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

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

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

给 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 繁重的测试特别有用。另外,测试文件可以在不同的进程里并行运行,让每一个测试文件可以获得更好的性能和独立的环境。测试并发执行强...
编辑部的故事 发布于 6天前 阅读 4958 评论 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 实验支持
编辑部的故事 发布于 4天前 阅读 2136 评论 5 点赞 2

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

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

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

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

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

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

Java 实现长图文生成

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

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

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

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

一位资深 Linux 用户告诉你为什么 GNOME 仍然是最好的 Linux 桌面环境
编辑部的故事 发布于 1周前 阅读 4204 评论 52 点赞 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...
梦朝思夕 发布于 5天前 阅读 664 评论 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天前 阅读 616 评论 4 点赞 1

java高并发锁的3种实现

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

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

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

nginx之proxy_pass指令完全拆解

nginx中有两个模块存在proxy_pass指令。proxy_pass后的后端服务器的uri到底是个啥?
永福 发布于 6天前 阅读 2551 评论 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天前 阅读 869 评论 2 点赞 2

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

JApiDocs 作为一个衔接前后端开发的的工具,尽可能把重复劳动都自动化了,实现了代码即文档,持续集成接口测试的小目标,非常优雅的解决在前后端并行开发碰到的一些问题。
叶大侠 发布于 5天前 阅读 440 评论 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 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 2天前 阅读 1933 评论 12 点赞 5

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

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

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

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

Redis 整数集合

整数集合(intset)是集合键的底层实现之一,当一个集合含整数元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 intset.h/intset源码 typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 int8_t contents[]; } intset; length记录了元素个数 encoding表示当前整数集合的编码方式,可选值有: INTSET_ENC_INT16 表示当前元素都是16位的数字编码,即每个元素使用contents素组的2个数组单位存储 INTSET_ENC_INT32 表示当前元素都是32位的数字编码,即每个元素使用contents素组的4个数组单位存储 INTSET_ENC_INT64 表示当前元素都是64位的数字编码,即每个元素使用contents素组的8个数组单位存储   升级 当添加一个新的数字到整数集合中,并且这个数字长度大于当前的编码方式时,整数集合需要进行升级编码方式,使数组的每一个元素都编程新添加数字能够放入最小的编码方式,再将新加元素放入。 部分源代码: intset *intsetAdd(intset *is, int64_t value, uint8_t *success) { // 计算编码 value 所需的长度 uint8_t valenc = _intsetValueEncodin...
casoc 发布于 29分钟前 阅读 1

BaseController

package com.lkx.base; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.springframework.stereotype.Component; import org.springframework.web.bind.annotation.ModelAttribute; import com.lkx.domain.UserBean; /** * ClassName:BaseController * Function: TODO ADD FUNCTION. * Reason: TODO ADD REASON. * Date: 2016年12月5日 下午5:55:26 * @author likaixuan * @version V1.0 * @since JDK 1.7 * @see */ @Component public class BaseController { @ModelAttribute("user") public UserBean getUserInfo(HttpServletRequest request){ HttpSession session = request.getSession(); UserBean user = (UserBean) session.getAttribute("user"); return user; } } 其他的Controller类 extends BaseController即可使用...
素剑步青尘 发布于 29分钟前 阅读 4

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

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

Linux命令集锦

一、查找日志文件: 查询某个大于多少时间日志的命令: awk -F "[:m]+" '/RUNNING_TIME_/ {if ($(NF-1) >200) print $0}' catalina.2017-08-23-15H.out 获取某个日志的前面前后10行日志:grep -A10 -B10 'RUNNING_TIME_REQUEST :3339ms' *.out
盼望明天 发布于 30分钟前 阅读 2

Java 多线程 - 线程 - 中断

一、概述 一个多个线程在执行的Java程序,只有当其全部的线程执行结束时(更具体的说,是所有非守护线程结束或者某个线程调用System.exit()方法的时候),它才会结束运行。 中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。 二、实现 案例1:真正地中断一个线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗余操作期间),然后有秩序地中止任务。 public class ThreadInterruptTest extends Thread { volatile boolean stop = false; public static void main( String args[] ) throws Exception { ThreadInterruptTest thread = new ThreadInterruptTest(); System.out.println( "Starting thread..." ); thread.start(); Thread.sleep(3000); System.out.println( "Asking thread to stop..." ); thread.stop = true...
pan_1308 发布于 30分钟前 阅读 3

JDK8 JSR310( Date and Time API)

全新API的众多好处之一就是明确了日期时间概念,例如:瞬时(instant)、长短(duration)、日期、时间、时区和周期。同时继承了Joda库按人类语言和计算机各自解析的时间处理方式。不同老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类且线程安全的。新版API中java.time包里的一些关键类: Instant:瞬时实例 LocalDate:本地日期,不包含具体时间 例如:2014-01-14 可以用来记录生日、纪念日、加盟日等。 LocalTime:本地时间,不包含日期。 LocalDateTime:组合了日期和时间,但不包含时差和时区信息。 ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。 java.time.LocalDate 只提供日期不提供时间信息 LocalDate localDate = LocalDate.now(); // localDate.lengthOfMonth(); localDate.getMonth().name(); //2天之后 localDate.plus(2,ChronoUnit.DAYS); //2天之前 localDate.minus(2,ChronoUnit.DAYS); java.time.LocalTime 只提供时间而不提供日期信息 LocalTime localTime=LocalTime.now(); //小时 localTime.getHour(); //2个小时之后 localTime.plus(2,ChronoUnit.HOURS); //6分钟之后 localTime.plusMinutes(6); ...
Oxidyc 发布于 33分钟前 阅读 2

docker容器下nginx+php-fpm 环境搭建

docker nginx php-fpm
edgeto 发布于 37分钟前 阅读 11

angularjs分页

图表的简单分页,功能不全但是采用异步请求的方法,留以后查询吧 <!-------------------------------------景区画像图表--------------------------------------> <div class="col-lg-6 attachper"> <div class="panel"> <div class="panel-body"> <h6 class="table-head">景区画像</h6> <div ng-controller="spotphotoCtrl" class="col-lg-12 tablestyle"> <table class="table table-striped table-condensed table-lone "> <tr> <th>序号</th><th>景区名称</th><th>客流统计(入)</th><th>车流统计(出)</th><th>门票销售(张)</th><th>门票收入(元)</th><th>接团数量</th> </tr> <tr ng-repeat="x in items"> <td ng-bind="$index + 1"></td><td ng-bind="x.SpotName"></td><td ng-bind="x.TouristsTatis...
cannll 发布于 37分钟前 阅读 3

rabbitmq安装

安装 wget https://github.com/rabbitmq/rabbitmq-server/releases/download/rabbitmq_v3_6_11/rabbitmq-server-3.6.11-1.el7.noarch.rpm rpm --import https://www.rabbitmq.com/rabbitmq-release-signing-key.asc yum -y install rabbitmq-server-3.6.11-1.el7.noarch.rpm 修改配置   cd /etc/rabbitmq/ vi rabbitmq.config 内容 [{rabbit, [{loopback_users, []}]}]. 启动服务 service rabbitmq-server start 查看服务状态 service rabbitmq-server status 安装可视化插件 rabbitmq-plugins enable rabbitmq_management 可视化插件端口 15672 rabbitmq端口 5672 初始化账号:密码 guest:guest     安装AMQP扩展 git clone https://github.com/alanxz/rabbitmq-c.git autoreconf -i ./configure --prefix=/usr/local/rabbitmq-c make && make install /usr/local/php/bin/pecl install amqp  ...
jiangwu 发布于 38分钟前 阅读 2

百度外卖“卖身”饿了么 外卖格局生变

8月21日消息,一位接近百度外卖的知情人士证实,饿了么收购百度外卖的事情已经确定。交易价格分为两块:百度外卖5亿美元出售;此外百度打包一些流量入口资源给饿了么,作价3亿美元。总共收购价格为8亿美元,交易完成后百度占饿了么股份5%。据称,此次交易只包括百度外卖,不包含百度糯米。合并后,百度外卖品牌保留18个月给饿了么使用,饿了么将借助百度外卖的技术团队完善后台系统,并巩固住两者相加的市场份额。
软件达人 发布于 41分钟前 阅读 3

Linux时间同步

今天上传文件,发现用ll命令,发现服务器的时间不对。于是开始了服务器时间同步之旅。 首先采用了运行了 ``` date ntpdate 210.72.145.44 ``` 提示没有ntpdate命令 ###ntpdate 先安装一下ntpdate ``` sudo apt install ntpdate ``` 期间修改过很多时间同步服务器,也修改参数,但是提示还是一样。 ``` sudo ntpdate 219.158.14.130 sudo ntpdate -u 210.72.145.44 ntpdate -u ntp.sjtu.edu.cn ntpdate -d ntp.sjtu.edu.cn 然后ping ntp.sjtu.edu.cn ntpdate -u 202.120.2.100 发现还是不行 ``` 看到一篇文章说,报这个错误可能是因为被防火墙给屏蔽了 ###rdate ``` sudo apt install rdate sudo rdate -s time-b.nist.gov ``` 时间好像真确了,但是时区是有问题的,时区为4,而我们常知我们所处的北京时间为8 ``` sudo tzselect sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime date -R ``` 发现时间正常了 发现不行,报错了,网上搜索报错原因...
miaojiangmin 发布于 41分钟前 阅读 1

jQuery_Ajax_demo04

<?xml version="1.0" encoding="UTF-8"?> <entries> <entry term="DEFAME" part="v.t."> <definition>To lie about another. To tell the truth about another.</definition> </entry> <entry term="DEFENCELESS" part="adj."> <definition>Unable to attack.</definition> </entry> <entry term="DELUSION" part="n."> <definition>The father of a most respectable family, comprising Enthusiasm, Affection, Self-denial, Faith, Hope, Charity and many other goodly sons and daughters.</definition> <quote author="Mumfrey Mappel"> <line>All hail, Delusion! Were it not for thee</line> <line>The world turned topsy-turvy we should see;</line> <line>For Vice, respectable with cleanly fancies,</line> <line>Would fly abandoned Virtue's gross advances.</line> </quote> </entry> </entries>  ...
Craft_007 发布于 46分钟前 阅读 2

eclipse jar 包 反编译

如果 项目使用的是 maven 来构建的项目,下载的jar包,一般都是 保护有 源码的包的,可以直接看源码的。 如果是 传统的web项目,怎么查看源码呢? 是可以使用 反编译 插件集成到 eclipse里面就可以看了。。。 不过有一个 缺点就是,反编译工具,把 代码原本的 代码注释 都给 干掉了,,看不到 代码注释了,,, 这个比较坑,不过比看不到 源码来说强多了,,,可是看不到 注释还是挺烦的。 所以要么 将项目改造成 maven项目, 方便查看注释,要么将 直接去下源码包了。 >下载地址: http://download.csdn.net/download/baiyuliang2013/8783427 > 下载jd-eclipse插件,我从csdn上下载的是jdeclipse_update_site.zip这个东西。 2、点击eclipse的Help->Install New Software,在弹出的对话框中点击Add按钮,在Location框内选择jdeclipse_update_site.zip文件执行安装。 3、重启eclipse后可以在Windows->Preferences->General->Editors->FileAssociation中选择*.class without source。在画面右下的panel中会出现Class File Editor的选项,选中并设成默认值。 下载好,安装好,重启就可以看到了。 > 参考地址: http://blog.csdn.net/baiyuliang2013/article/details/46408731...
之渊 发布于 46分钟前 阅读 2

面向对象理论知识

面试时可能会用到
水冰love 发布于 51分钟前 阅读 1

Linux安装Mysql后续配置

1、查看日志文件中默认root账号的密码: shell> sudo grep 'temporary password' /var/log/mysqld.log shell> mysql -uroot -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; 2、设置Mysql远程访问 登陆mysql: mysql -u root -p 使用mysql库: use mysql; 查看用户表: select host, user from user; 更新用户表: update user set host = '%' where user = 'root'; 强制刷新权限: flush privileges;
Tasty-宝 发布于 51分钟前 阅读 2

List转Map JAVA8 流

List<DataModel> dataList=new ArrayList<DataModel>();         for (int i = 0; i < 10; i++) {             DataModel data=new DataModel();             data.setIntData(i);             data.setStrOne("this is one "+i);             dataList.add(data);         } Map<Integer,DataModel> dataMap = dataList.stream().collect(Collectors.toMap(DataModel::getIntData, (p) -> p));         for (Integer key : dataMap.keySet()) {                System.out.println("key= "+ key + " and value= " + dataMap.get(key).getStrOne());         }...
窗前三更月 发布于 52分钟前 阅读 1

jQuery中序列化方法serialize()与param()的区别

.serialize()方法可以将表单中有name属性的元素值进行序列化,生成标准URL编码文本字符串,直接可用于ajax请求 $.param() 序列化对象或者数组,常用于向服务端发送URL请求
String_小C 发布于 53分钟前 阅读 2

据说美剧《硅谷》是程序员成功人士的必看剧?

点击查看全文   Silicon Valley,中文名《硅谷》(也译作《硅谷黑历史》),是HBO电视网出品的喜剧,目前出了3季共28集(8+10+10)。 《硅谷》的主人公是一群要搞出硅谷下一件大事的程序员们。主角理查德·亨德里克斯害羞且不善交际,但因为创造了某种智能软件,很快就成为了大明星。理查德决定把自己的想法变成一个公司,故事便由此展开。 与电视剧《生活大爆炸》不同的是,《硅谷》“并不打算埋汰剧中的书呆子们,而是赋予他们力量”,美国报纸《The Diamondback》写道。“理查德决定成立自己的公司,从这一点来看,该剧就有别于那些电视上典型的书呆子形象。 主角理查德是个非常有潜力的程序员。他在一开始就发明出了一种非常先进的压缩算法,但直到两个硅谷亿万富翁开始竞价买下他的程序之前,他甚至完全没有意识到这个算法的价值所在。几分钟内,他的人生就发生了天翻地覆的改变。 然而,他立刻就要在24小时内做出一个会彻底影响他职业和人生的决定: 是把整个程序100%卖给大公司、直接获得四百万美元,还是接受二十万美元的价格、但保持95%的股份,自己来发展? 这就是《硅谷》最现实也是最有趣的一点,它让你意识到,没有什么事是绝对的。 即使拥有着该领域最先进的...
小虾米DYX 发布于 54分钟前 阅读 1

设计模式-代理模式

写着玩
月夜筱风 发布于 55分钟前 阅读 2

mysql函数

ifnull(a,b)如果a不为null,则返回a,否则返回b,如 ifnull(1/0,3),返回3;ifnull(1,3)返回3
程序羊 发布于 59分钟前 阅读 1

PHP 数组遍历 foreach 语法结构

PHP 数组遍历 foreach 语法结构 foreach 语法结构用于遍历数组。 foreach() PHP foreach() 语法结构用于遍历操作或输出数组,foreach() 仅能用于遍历数组或对象,当试图将其用于其它数据类型或者一个未初始化的变量时会产生错误。 语法: foreach (array as $value) statement // 或者: foreach (array as $key => $value) statement 上述语法中,每次循环将当前单元的值赋给 $value 并且数组内部的指针向前移一步。在第二种语法格式中还将当前单元的键名也会在每次循环中赋给变量 $key。 例子: <?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $age) { echo $age,'<br />'; } ?> 运行该例子输出: 18 20 25 使用数组键值 <?php $arr_age = array("wang"=>18, "li"=>20, "zhang"=>25); foreach ($arr_age as $key=>$age) { echo $key,': ',$age,'<br />'; } ?> 运行例子输出: wang: 18 li: 20 zhang: 25 提示 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元,这意味着不需要在 foreach 循环之前调用 reset()。 foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。对返回的数组单元的修改也不会影...
wenjin312 发布于 1小时前 阅读 1

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

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

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 的异步代码方面,实现了巨大的提升。从此编写回调函数不再那么痛苦。 回调是一个函数,可以将结果传递给函数并在该函数内进行调用,以便作为事件的响...
葡萄城控件技术团队 发布于 2天前 阅读 1933 评论 12 点赞 5

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

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

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

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

企业这个月买电脑可以省钱了!

6.18刚刚过去,11.11遥遥无期,这会儿买电脑总担心会多花几百块?看!这!里!戴尔最近推出了“企业特惠月”的活动,两千多就能买到好电脑,满额还送激光打印机哎!敲!划!算!
DELL

曲线点抽稀算法-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天前 阅读 869 评论 2 点赞 2

nginx之proxy_pass指令完全拆解

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

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

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

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

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

当 Thrift 遇到 JDK Epoll Bug

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

PHP实现依赖注入

控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征。控制反转(IOC)是一种思想,依赖注入(DI)是实施这种思想的方法。
o0无忧亦无怖 发布于 2周前 阅读 1982 评论 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周前 阅读 4323 评论 24 点赞 4

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

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

SQL注入详解

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

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

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

浅谈Hybrid

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

图解LZ77压缩算法

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