开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

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

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

echarts 进阶之同心扇形图多级联动

这篇博客无意于指导新手如何上手并熟练使用echarts,似乎也不太可能让你复制粘贴然后改改数据接口就可以使用。我希望这篇博客可以在类似情形下,在官方实例无法提供帮助的时候,提供给你一种灵感或启示。
lonelydawn 发布于 2小时前 阅读 45

数据库架构演变概要

数据库架构演变概要笔记
车江毅 发布于 6小时前 阅读 60

JavaScript 性能优化技巧分享

JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中。为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是一个很好的选择。 本文从加载、上下文、解析、编译、执行和捆绑等多个方面来讲解 JavaScript 的性能优化技巧,以便让更多的前端开发人员掌握这方面知识。 什么是高性能的 JavaScript 代码? 尽管目前没有高性能代码的绝对定义,但却存在一个以用户为中心的性能模型,可以用作参考:RAIL模型。 响应 如果你的应用程序能在100毫秒内响应用户的操作,那么用户会认为该响应为即时的。这适用于可点击的元素,不适用于滚动或拖动操作。 动画 在60Hz的显示器上,我们希望动画和滚动时每秒有60帧,这种情况下每帧大约为16ms。在这16ms的时间内,实际上只有8-10ms来完成所有工作,其余时间则由浏览器的内部和其它差异占据。 空闲工作 如果你有一个耗时很久,需要持续运行的任务时,请确保把它分成很小的块,以便允许主线程对用户的输入操作做出反应。不应该出现一个任务延迟超过50ms的用户输入。 加载 页面加载应该在1000毫秒内完成。在移动设备上,这是一个很难达到的目标,因为它涉及到页面的互动,而不仅仅是在屏幕上渲染和滚动。 ...
葡萄城控件技术团队 发布于 7小时前 阅读 60

[喵咪大数据]Hadoop单机模式

千里之行始于足下,学习大数据我们首先就要先接触Hadoop,上节介绍到Hadoop分为Hadoop-HDFS,Hadoop-YARN,Hadoop-Mapreduce组成,分别负责分布式文件存储,任务调度,计算处理,本机我们在单机模式下把Hadoop运行起来并且简单的使用接触Hadoop相关的机制.
喵了_个咪 发布于 8小时前 阅读 94

深度学习之视频摘要发展综述

现如今城市生活节奏越来越快,用户在浏览一些视频时,并不想花费大量的时间来看一个完整的视频。更多时候,用户只想知道这个视频最精华的信息,也是基于这种需求,谷阿莫等影视评论者才得到如此多的关注。此时,视频摘要就体现出其价值所在了。   什么是视频摘要?   视频摘要,就是以自动或半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段/帧。从摘要的技术处理过程来讲,视频摘要一般可以分成两种,静态视频摘要和动态视频摘要。现阶段,我们公司主要致力于静态视频摘要的研究。接下来就和大家说一下静态视频摘要。   什么是静态视频摘要?   静态视频摘要,又称为视频概要,即用一系列从原始视频流中抽取出来的静态语义单元来表示视频内容的技术。简单来说,就是在一段视频中提取出一些关键帧,通过将多个关键帧组合成视频摘要,使用户可以通过少量的关键帧快速浏览原始视频内容。进一步发展的话可以为用户提供快速的内容检索服务。   例如,公开课的视频中,提取出含有完整PPT的帧。我们将含有关键信息的所有帧提供给浏览者,可以使其在较短的时间内了解到较长视频的主要内容。又例如,将一个2小时的电影提取出其关键部分,...
图鸭科技研究员 发布于 8小时前 阅读 34

redHat 系统下安装PHP ssh2扩展

服务器系统:redHat 6.5 PHP版本:5.6 ssh2 版本: ssh2-0.13
风尘孤子 发布于 8小时前 阅读 43

Spring Boot: 加密应用配置文件敏感信息

应用中会存在多个需要配置敏感信息(比如stfp等),都需要加密,类似于druid加解密方式依赖于工具类的实现,没有统一的加解密标准,麻烦、而且不好维护。
冷冷gg 发布于 9小时前 阅读 274 评论 1

Spring Cloud(六)服务网关 zuul 快速入门

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
鹏磊 发布于 10小时前 阅读 112

Groovy防PermOOM与OldOOM心得

作为Groovy重度用户,踩了新版本无法unload class导致perm oom的坑,踩了classLoader.parallelLockMap不断添加新锁导致old oom的坑。本文的意图就是记录一点埋坑心得。
陈孝杰 发布于 19小时前 阅读 89 点赞 1

gitLab 全局hooks和custom_hooks,以及服务器端自动更新和备份(一) 运维

gitLab 全局hooks和custom_hooks,以及服务器端自动更新和备份(一) 博客分类: 运维  写代码的时候,git push到远程代码库后,往往还要连到服务器上pull代码才能进行测试。代码push后自动更新测试服务器的代码也算是一种刚需了。 gitLab的钩子分为两大类:1.web hooks             2.custom hooks,这是调用git原生钩子,这里的钩子也有两种类型:(1)全局钩子 (2)每个项目对应的钩子。 这几天踩了很多坑,才用一种迂回的方法解决了问题。介绍一下GitLab和ubuntu的版本:Ubuntu 16.04.1 LTS + GitLab Community Edition 9.4.4 和 GitLab Community Edition 8.15.4,两个版本的gitlab配置起来是几乎是一样的。 1.web hooks   官方文档:https://docs.gitlab.com/ee/user/project/integrations/webhooks.html 这里就不重点介绍了,主要介绍让我踩了很多坑的custom hooks 2. custom hooks   官方文档:https://docs.gitlab.com/ee/administration/custom_hooks.html#custom-git-hooks 这里的官网文档有句:Normally, Git hooks are placed in the repository or project's hooks directory. GitLab creates a symlink from each pro...
xiaomin0322 发布于 1天前 阅读 72

CentOS7 命令行安装teamviewer遇到依赖包问题及完美解决

CentOS7 命令行安装teamviewer遇到依赖包问题及完美解决
libingbin 发布于 1天前 阅读 126 评论 3

Redis 分布式锁

redis分布式锁
NoComments 发布于 1天前 阅读 390 评论 2 点赞 1

Vue集成Iframe页面

这个一个很恶心的需求,Vue中要集成那种iframe的页面
龙马行空 发布于 1天前 阅读 232 点赞 1

[Spring Cloud Task]2 生命周期特性与任务仓库数据结构

# 概述 本文是Spring Cloud Task系列的第二篇文章,如果你尚未使用过Spring Cloud Task,请 移步[spring cloud task1 简介与示例](http://www.jianshu.com/p/fb2e973fb325)。 本篇文章将讲述更多Spring Cloud Task的细节内容,包括task的生命周期论与`TaskRepository`中存储的任务数据结构。 # Spring Cloud Task的生命周期 现代的云平台都是围绕着长生命周期的服务而设计的,如web应用,一经启用,除非手动去重启应用,否则就会没有终点的持续运行。虽然大多数平台都有方法在不重启应用的情况下,将服务的生命周期推向终点,但每个服务的处理结果难以以可重用的方式来维护。Spring Cloud Task可以在平台环境中执行短生命周期的应用,并记录这些应用的结果,经由通过消息通知的机制来集成各个tasks。通过这特性就可以实现让短生命周期的应用像长生命周期的应用一样组成微服务架构。 Spring Task Cloud的方式对现代的云环境是非常有用的,但它也在部署应用方面带来新问题。如使用调度器(如corn)来执行Spring Boot应用时,如何在应用结束后监控到其执行结果? Spring Cloud Task采用的方法是,将Spring Boot应用分为开始、结束、以及正在运行等状态。如批处理任务就是一个清晰...
为为02 发布于 2天前 阅读 124

docker清理

随着docker的操作,本来硬盘资源就多的情况下,占用很快超过一半,遂想办法清理空间。
dingdayu 发布于 2天前 阅读 215 点赞 1

《Java应用架构设计:模块化模式与OSGi》读书笔记

> 本文为读书笔记,对书中内容进行重点概括,并将书中的模块化结合微服务、Java9 Jigsaw谈谈理解。 # 本书概括 以Java软件系统为例,重点讲解了应用架构中的物理设计问题,即如何将软件系统拆分为模块化系统。所以内容组织包括为什么需要模块化,围绕如何实现模块化讲述了模块化模式,最后在模块化基础上使用OSGi技术实现动态模块化。
hebaodan 发布于 2天前 阅读 223

kubernetes中部署DNS

* 先吐槽一下,最近研究k8s的dns,看了很多相关博客,发现很多都是一样的内容,大部分都是转载或者copy,也不验证一下就发出来,给我无形中挖了很多坑。再次先谴责一下这些人! * 开始正题! * 使用场景:ubuntu16.04, kubernetes1.4及以上, 集群没有搭建CA等认证!其他场景仅作参考! ## 1.为什么要部署DNS kubernetes 提供了 service 的概念可以通过 VIP(Service IP 是 virtual IP(VIP)) 访问 pod 提供的服务,但是在使用的时候还有一个问题:怎么知道某个应用的 VIP?比如我们有两个应用,一个 app,一个 是 db,每个应用使用 rc或deployment进行管理,并通过 service 暴露出端口提供服务。app 需要连接到 db 应用,我们只知道 db 应用的名称,但是并不知道它的 VIP 地址。这就涉及到了==服务发现==的问题了。 * 针对以上问题,k8s提供了三种==服务发现==的方法: ### 方法1.通过kubernetes 提供的 API 查询 该方法较为简单,但问题较多。首先每个应用都要在启动的时候编写查询依赖服务的逻辑,这本身就是重复和增加应用的复杂度;其次这也导致应用需要依赖 kubernetes,不能够单独部署和运行(当然如果通过增加配置选项也是可以做到的,但这又是增加复杂度)。 ### ...
蓝色雨全 发布于 2天前 阅读 194 点赞 1 打赏 1

Java 线程的中断机制

线程中断机制提供了一种方法,用于将线程从阻塞等待中唤醒,并作出相应的“超时中断”或“受控中断”处理。受控线程应当对中断作出响应。而 Java 留给开发者这一自由,我们应当予以善用。
傅易 发布于 2天前 阅读 263 评论 1

Parceljs和Webpack在React项目上打包速度对比

最近这几天前端圈子估计都被Parceljs刷屏了。Parceljs主要特点为: - 极速构建 - 零配置 更多关于Parceljs的内容,请点[这里](https://juejin.im/post/5a28ea566fb9a0450909664c) 在Parcejs的官方网站上给出了与其它的打包工具的构建速度的对比结果,但是并没有给出测试的项目地址,所以花了点时间在React上做了下面的测试。 ## 环境 node版本:v9.2.1 npm版本:5.6.0 ## 项目地址 [parceljs-react](https://github.com/zhongzhong0505/parceljs-react) [webpack-react](https://github.com/zhongzhong0505/webpack-react) 两个项目都非常小,一共只有4个组件。引入了react的路由。 ## 配置文件 parceljs没有配置 webpack的配置如下: ``` var path = require('path') module.exports = { entry: './index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, resolve: { extensions: [".js", ".json", ".jsx"], alias: { components: path.resolve(__dirname, 'src/components/') } }, module: { rules:[{ test: /.jsx?$/, use: 'babel-loader' }] } } ``` ## 对比结果 ### 速度 parceljs: ![](https://user-gold-cdn.xitu.io/2017/12/9/16...
我是钟钟 发布于 2天前 阅读 161 评论 2

OKHttp3(支持Retrofit2)的网络数据缓存Interceptor拦截器

OKHTTP3(Retrofit)数据缓存
xiaolei123 发布于 2天前 阅读 192 点赞 1

Spring Boot: 加密应用配置文件敏感信息

应用中会存在多个需要配置敏感信息(比如stfp等),都需要加密,类似于druid加解密方式依赖于工具类的实现,没有统一的加解密标准,麻烦、而且不好维护。
冷冷gg 发布于 9小时前 阅读 274 评论 1

Spring Cloud(六)服务网关 zuul 快速入门

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
鹏磊 发布于 10小时前 阅读 112

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

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

[喵咪大数据]Hadoop单机模式

千里之行始于足下,学习大数据我们首先就要先接触Hadoop,上节介绍到Hadoop分为Hadoop-HDFS,Hadoop-YARN,Hadoop-Mapreduce组成,分别负责分布式文件存储,任务调度,计算处理,本机我们在单机模式下把Hadoop运行起来并且简单的使用接触Hadoop相关的机制.
喵了_个咪 发布于 8小时前 阅读 94

Groovy防PermOOM与OldOOM心得

作为Groovy重度用户,踩了新版本无法unload class导致perm oom的坑,踩了classLoader.parallelLockMap不断添加新锁导致old oom的坑。本文的意图就是记录一点埋坑心得。
陈孝杰 发布于 19小时前 阅读 89 点赞 1

基于ceph集群的iSCSI传输服务配置

准备: 系统:CentOS-7-x86_64-DVD-1511(最小化安装 中文) 一个完善的ceph集群(本文中使用的集群的为一个mon节点,三个osd节点的健康集群) 使用工具:服务端scsi-target-utils-1.0.38-48   Linux客户端iscsi-initiator-utils scsi-target-utils-1.0.38-48下载地址 http://apt-mirror.sepia.ceph.com/centos6-qemu-kvm/scsi-target-utils-1.0.38-48.bf6981.ceph.el6.x86_64.rpm 关闭防火墙以及selinux systemctl disable firewalld(关闭防火墙开机自启动) systemctl stop firewalld(关闭防火请) setenforce 0(临时关闭selinux) 永久关闭修改/etc/selinux/config文件中的SELINUX为disabled SELINUX=disabled 步骤: 1.下载 方式一:浏览器可视化下载,使用xshell发送至服务端         yum install -y lrzsz         rz 方式二:yum install -y wget         wget http://apt-mirror.sepia.ceph.com/centos6-qemu-kvm/scsi-target-utils-1.0.38-48.bf6981.ceph.el6.x86_64.rpm 2.安装 方式一:rpm -ivh  scsi-target-utils-1.0.38-48.bf6981.ceph.el6.x86_64.rpm(在服务器端有网络连接的情况下不建议使用这种方式)         方式一安装的过程中所需...
cephn1 发布于 1周前 阅读 247

数据库架构演变概要

数据库架构演变概要笔记
车江毅 发布于 6小时前 阅读 60

JavaScript 性能优化技巧分享

JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中。为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是一个很好的选择。 本文从加载、上下文、解析、编译、执行和捆绑等多个方面来讲解 JavaScript 的性能优化技巧,以便让更多的前端开发人员掌握这方面知识。 什么是高性能的 JavaScript 代码? 尽管目前没有高性能代码的绝对定义,但却存在一个以用户为中心的性能模型,可以用作参考:RAIL模型。 响应 如果你的应用程序能在100毫秒内响应用户的操作,那么用户会认为该响应为即时的。这适用于可点击的元素,不适用于滚动或拖动操作。 动画 在60Hz的显示器上,我们希望动画和滚动时每秒有60帧,这种情况下每帧大约为16ms。在这16ms的时间内,实际上只有8-10ms来完成所有工作,其余时间则由浏览器的内部和其它差异占据。 空闲工作 如果你有一个耗时很久,需要持续运行的任务时,请确保把它分成很小的块,以便允许主线程对用户的输入操作做出反应。不应该出现一个任务延迟超过50ms的用户输入。 加载 页面加载应该在1000毫秒内完成。在移动设备上,这是一个很难达到的目标,因为它涉及到页面的互动,而不仅仅是在屏幕上渲染和滚动。 ...
葡萄城控件技术团队 发布于 7小时前 阅读 60

redHat 系统下安装PHP ssh2扩展

服务器系统:redHat 6.5 PHP版本:5.6 ssh2 版本: ssh2-0.13
风尘孤子 发布于 8小时前 阅读 43

Java和C#语言有什么区别?答案在这里

JAVA是一种可以跨平台开发的语言,而C#目前只被Windows和Linux支持,Windows下的支持当然是由微软自己开发的,而Linux下的支持则有MONO支持。实际上,MONO也是把C#应用转化为JAVA应用而已,所以本质上,C#仍然只是被微软自己的操作系统支持。应用平台受到限制,是它最大的缺点。Java语言是一种完全的面向对象语言,虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C。 因为Java的运行是在运行时库的支持下进行的,所以运行效率比起可以更接近底层的C/C++来说效率会有所影响,不过Java的类库采用很好的设计理念设计,非常好用,也非常实用,已经成为业界的一种标准开发语言。它的跨平台的特性尤其让很多开发者欢迎,你只需要开发一次就能在所有安装了Java运行时库的系统上运行。Java发展了十几年了,可以应用领域非常之广泛,Web开发有JSP,J2EE,桌面领域现在有JavaFX。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器,解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。 通过上面的介绍,大家有一定的了解了,下面就具体的给...
小欣妹妹 发布于 7小时前 阅读 42

深度学习之视频摘要发展综述

现如今城市生活节奏越来越快,用户在浏览一些视频时,并不想花费大量的时间来看一个完整的视频。更多时候,用户只想知道这个视频最精华的信息,也是基于这种需求,谷阿莫等影视评论者才得到如此多的关注。此时,视频摘要就体现出其价值所在了。   什么是视频摘要?   视频摘要,就是以自动或半自动的方式,通过分析视频的结构和内容存在的时空冗余,从原始视频中提取有意义的片段/帧。从摘要的技术处理过程来讲,视频摘要一般可以分成两种,静态视频摘要和动态视频摘要。现阶段,我们公司主要致力于静态视频摘要的研究。接下来就和大家说一下静态视频摘要。   什么是静态视频摘要?   静态视频摘要,又称为视频概要,即用一系列从原始视频流中抽取出来的静态语义单元来表示视频内容的技术。简单来说,就是在一段视频中提取出一些关键帧,通过将多个关键帧组合成视频摘要,使用户可以通过少量的关键帧快速浏览原始视频内容。进一步发展的话可以为用户提供快速的内容检索服务。   例如,公开课的视频中,提取出含有完整PPT的帧。我们将含有关键信息的所有帧提供给浏览者,可以使其在较短的时间内了解到较长视频的主要内容。又例如,将一个2小时的电影提取出其关键部分,...
图鸭科技研究员 发布于 8小时前 阅读 34

echarts 进阶之同心扇形图多级联动

这篇博客无意于指导新手如何上手并熟练使用echarts,似乎也不太可能让你复制粘贴然后改改数据接口就可以使用。我希望这篇博客可以在类似情形下,在官方实例无法提供帮助的时候,提供给你一种灵感或启示。
lonelydawn 发布于 2小时前 阅读 45

双12砍价就要简单粗暴:来试试你的刀法如何!

双12砍价就要简单粗暴 这是让人愉快的接受方式 没有什么是砍价解决不了的事 龙果教你解锁6到飞起的砍价技能 讲真,砍价技巧千千万 学会了是不是感觉赚了一个亿?! 然鹅,我要发出一次灵魂拷问 你真的能张嘴去砍吗?! 那些张不开口的人 砍价的人生real心累 但有个振奋人心的好消息 What is it? 双12不开口也能砍价 叫上好友帮你砍价 一路砍到最低价 惊不惊喜,意不意外!   双12等你来砍价:进来试试你的刀法如何!一砍到底 即日起至12月17日,登录龙果学院账号, 点击首页“双12砍价”轮播图进入活动页面即可发起砍价,点击“我要砍价”,完成验证为自己先砍一刀价格,同时将自己的活动连接转发给你的亲友,让亲友帮你砍价!砍价过程可随时下单支付,也可以砍到最低价再下单。赶紧发动你身边的亲友帮你砍价吧!!!   活动规则: 1、 活动时间:2017年12月10日~2017年12月17日。 2、 参与活动的用户(包含发起者和砍价者)需要登录龙果学院帐号。 3、 用户可以在活动页面发起砍价,并分享砍价页面链接给好友(朋友圈、QQ好友、微信好友等),邀请好友帮忙砍价。 4、 同一砍价者就同一发起者分享的同一商品仅能进行一次砍价。 5、 发起者可以在砍价过程中随时下单购买。...
liwei2000 发布于 7小时前 阅读 31

eclipse 出现 debug Line breakpoint 问题解决

当你的eclipse 出现这个   把这个点击一下就好了  
一个橙子HHH 发布于 8小时前 阅读 18

5 款最酷的 Linux 终端模拟器!

导读 虽然,我们可以继续使用老旧的 GNOME 终端、Konsole,以及好笑而孱弱的旧式 xterm。 不过,让我们带着尝试某种新东西的心境,回过头来看看 5 款酷炫并且实用的 Linux 终端。 Xiki 首先我要推荐的第一个终端是 Xiki。 Xiki 是 Craig Muth 的智慧结晶,他是一个天才程序员,也是一个有趣的人(有趣在此处的意思是幽默,可能还有其它的意思)。 很久以前我在 遇见 Xiki,Linux 和 Mac OS X 下革命性命令行 Shell 一文中介绍过 Xiki。 Xiki 不仅仅是又一款终端模拟器;它也是一个扩展命令行用途、加快命令行速度的交互式环境。 视频播放器     00:00 03:14     Xiki 支持鼠标,并且在绝大多数命令行 Shell 上都支持。 它有大量的屏显帮助,而且可以使用鼠标和键盘快速导航。 它体现在速度上的一个简单例子就是增强了 ls 命令。 Xiki 可以快速穿过文件系统上的多层目录,而不用持续的重复输入 ls 或者 cd, 或者利用那些巧妙的正则表达式。 Xiki 可以与许多文本编辑器相集成, 提供了一个永久的便签, 有一个快速搜索引擎, 同时像他们所说的,还有许许多多的功能。 Xiki 是如此的有特色、如此的不同, 所以学习和了解它的最快的方式可以看 Craig 的有趣和实用的视频...
问题终结者 发布于 7小时前 阅读 12

Redis数据类型

Redis数据类型   ●String(字符串) (1)string是redis最基本的类型,string类型是二进制安全的(意思是redis可以包含任何数据,比如jpg图片或者序列化对象) (2)一个键最大能存储512MB 实例: redis 127.0.0.1:6379> SET name "tangli" OK redis 127.0.0.1:6379> GET name "tangli" ●List(列表) (1)Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。 (2)列表最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿) 实例: redis 127.0.0.1:6379> lpush tangli redis (integer) 1 redis 127.0.0.1:6379> lpush tangli mongodb (integer) 2 redis 127.0.0.1:6379> lpush tangli rabitmq (integer) 3 redis 127.0.0.1:6379> lrange tangli 0 10 1) "rabitmq" 2) "mongodb" 3) "redis" redis 127.0.0.1:6379> ●Hash(哈希) (1)我把它类比成JAVA中的HashMap (2)每个 hash 可以存储 232 - 1 键值对(40多亿) 复制官网的实例,记录一下: redis 127.0.0.1:6379> HMSET user:1 username redis.net.cn password redis.net.cn points 200 OK redis 127.0.0.1:6379> HGETALL user:1 1) "username...
唐里 发布于 8小时前 阅读 12

基于SpringMvc实现Restful方式接口返回406的问题

基于springmvc实现Restful方式接口,客户端请求返回406 的问题
刘昂 发布于 8小时前 阅读 11

CSpeed 1.1.8发布啦,PHP的C扩展微框架

CSpeed一款C语言开发的PHP扩展框架,只为追求更高的性能与更低的资源消耗。 https://github.com/liqiongfan/cspeed  
JosinWO 发布于 2个月前 阅读 94 评论 2

水平分库如何做到平滑扩展

分库分表扩容是一件头疼的问题,是否有方案,既支持快速扩展,又不降低可用性?
wier 发布于 3周前 阅读 558 评论 13 点赞 1

程序员如何才能晋升为优秀的高薪架构师?

  对于工作多年的程序员而言,日后的职业发展无非是继续专精技术、转型管理和晋升架构师三种选择。 今天,100offer从架构师在一家公司有多重要、优秀架构师需要具备怎样的素质以及架构师的发展现状三个方面来分析本次的主题—— 程序员如何才能晋升为优秀的高薪架构师? 100offer希望通过本文让程序员们了解架构师的市场行情,了解架构师的发展前景,并帮助你更清晰地做出职业规划。   架构师在一家公司有多重要 架构师对一家公司、一个项目有多重要?我们来看一看100offer所做的调查数据—— 高达62%的受访人认为,架构师在公司中担当着「IT架构灵魂人物」的角色,因为他们不仅做着架构师的本职工作,还同时做程序开发,写核心代码。另外,13%的受访人也认为,架构师依旧是技术高手,编程能力依然是一流的。 从采访图表结果来看,我们可以认为架构师是一家公司的IT架构灵魂人物,他必须具备出色的设计能力、编程能力和沟通能力,在完成本职的架构工作外,还要协调好项目中人员的关系,做出合理的分工,最终完成全部工作。 架构师是程序员个人发展的一条道路,在一家公司里有着极为重要的地位,是团队的关键人物,担当着重责。 软件架构师李先生这么比喻道:「架构师的工...
wentiwenti 发布于 5小时前 阅读 10

给 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 这是一款将任意 ...
编辑部的故事 发布于 3个月前 阅读 5678 评论 4 点赞 11 打赏 1

Nginx反向代理将不同的API代理到同一个域名下

Nginx 通过反向代理将不同的API代理到同一个域名下
tianshl 发布于 3个月前 阅读 451572 点赞 1

image not recognized

image not recognized
tianshl 发布于 2个月前 阅读 346711 点赞 1

Python库打包到PyPI

### 打开pypi官网, 并注册账号 ``` https://pypi.python.org/ ``` ### 创建并编辑.pypirc (注: 家目录下创建) ``` tianshl@tianshl ~ $ vim .pypirc [pypirc] index-servers = pypi pypitest [pypi] repository=https://pypi.python.org/pypi [pypitest] repository=https://testpypi.python.org/pypi [server-login] username:tianshl password:****** ``` ### 前提 ``` 1. 要打包的代码必须是一个包(package) 2. 代码是开源的 ``` ### 包(package) ##### 创建包 ``` 右键 / New / Python Package / 输入包名 / OK ``` ##### 创建成功后,查看目录结构 ``` tianshl@tianshl wechat $ tree . └── wxReply └── __init__.py 实际上就是文件夹中包含__init__.py文件 ``` ### 编写要打包的源代码 ``` tianshl@tianshl wechat $ tree . └── wxReply ├── __init__.py └── wxReply.py 1 directory, 2 files ``` ### 创建README.rst和setup.py文件 ``` README.rst为说明文档 setup.py为安装脚本 (核心) ``` ##### 此时wechat包的目录结构 ``` tianshl@tianshl wechat $ tree . ├── README.rst ├── setup.py └── wxReply ├── __init__.py └── wxRepl...
tianshl 发布于 1个月前 阅读 203490 评论 1 点赞 1

Python 计算器

### 运行截图 ![这里写图片描述](http://img.blog.csdn.net/20171017222741550?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ### 源码 ```python # -*- coding: utf-8 -*- from tkinter import * __author__ = 'tianshl' __date__ = '2017/10/16' class Application(Frame): def __init__(self): Frame.__init__(self) self.grid() self.mem = '' # 内存中的数据 self.opt = '' # 操作符 self.display = StringVar() # 显示的数据 self.display.set('0') # 初始值 self.need_cls = False # 是否需要清屏 self.create_widgets() # 清空 def clear(self): self.mem = '' self.display.set('0') # 取反 def negative(self): self.display.set(eval('-' + self.display.get())) # 四则运算 def option(self, opt): if not self.need_cls: self.calculate() self.opt = opt self.need_cls = True self.mem = self.display.get() # 计算结果 def calculate(self): if self.opt: try: self.display.set(eval(self.mem + self.opt + self.display.get())) except Exception: ...
tianshl 发布于 2个月前 阅读 397702 点赞 1

Mac SecureCRT 破解

### 文件 ``` 文件地址: https://pan.baidu.com/s/1jISgEJs 密码: 5uhq 安装文件: scrt-7.3.7-1034.osx_x64.dmg 破解文件: securecrt_mac_crack.pl ``` ### 安装 ``` 1. 双击安装文件 2. 点击"Agree" 3. 将"SecureCRT"拷贝至 应用程序 ``` ### 破解 ``` 1. sudo perl ~/Downloads/securecrt_mac_crack.pl /Applications/SecureCRT.app/Contents/MacOS/SecureCRT 2. 打开 应用程序 中的SecureCRT 3. 点击"Enter License Data..." 4. 点击"Continue" 5. 点击"Enter License Manually" 6. 填写第一步中控制台打印的信息 7. 点击"Done" ``` ### 附加 ###### 记住密码 ``` Preferences => General => Use Keychain 取消勾选 ``` ###### 中文乱码 ``` 右键某个session => Properties => Terminal => Appearance => Character encoding 设置为UTF-8 ```...
tianshl 发布于 3个月前 阅读 453374 点赞 1

SSH免密登录

每次SSH登录主机都需要输入密码,麻烦。。。
tianshl 发布于 3个月前 阅读 452304 点赞 1

Mac OS Microsoft Office(安装与破解)

苹果系统安装office组件
tianshl 发布于 3个月前 阅读 452085 评论 1 点赞 1

xxx is not in the sudoers file

### 问题 ``` 无法使用sudo指令 ``` ### 方法一 ``` 1. 查找sudoers位置(默认会在/etc/sudoers) [tianshl@tianshl ~]# whereis sudoers sudoers: /etc/sudoers /etc/sudoers.bak /usr/share/man/man5/sudoers.5.gz 2. 切换到root身份 [tianshl@tianshl ~]# su - 3. 修改sudoers权限 [root@tianshl ~]# chmod u+w /etc/sudoers 4. 把用户添加到sudoers中 [root@tianshl ~]# vi /etc/sudoers 1. 找到 "root ALL=(ALL)" 2. 另起一行输入 "tianshl ALL=(ALL) ALL" 备注:tianshl为用户名 修改后如下所示: ## Allow root to run any commands anywhere root ALL=(ALL) ALL tianshl ALL=(ALL) ALL 5. 去掉sudoers的写权限 [root@tianshl ~]# chmod u-w /etc/sudoers 6. 退出root用户后就可以利用sudo命令来执行管理员权限了。 ``` ``` 注:如果不去掉写权限,系统不允许执行suoders文件,运行sudo命令时会出现以下错误: sudo: /etc/sudoers is mode 0640, should be 0440 ``` ### 方法二 ``` 1.首需要切换到root身份 [tianshl@tianshl ~]# su - 2. 执行visudo [root@tianshl ~]# visudo 1、移动光标,到最后一行 2、按a,进入append模式 3、输入 "tianshl ALL=(ALL) ALL" 备注...
tianshl 发布于 1个月前 阅读 215054 点赞 1

javacsv读写csv文件

### 添加依赖 ``` net.sourceforge.javacsv javacsv 2.0 ``` ### 读文件 ``` CsvReader reader = null; String row; String path = "./tmp/read.csv"; try { reader = new CsvReader(path, ',', Charset.forName("utf-8")); // 跳过表头(需要表头就不用跳过) reader.readHeaders(); while (reader.readRecord()) { // 读取每行数据 row = reader.getValues(); System.out.println(row); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (reader != null) { reader.close(); } } catch (Exception e) { e.printStackTrace(); } ``` ### 写文件 ``` CsvWriter csvWriter = null; String path = "./tmp/write.csv"; try { csvWriter =new CsvWriter(path,',', Charset.forName("utf-8")); // 写入一行数据 csvWriter.writeRecord(new String[]{"张三", 18, "男"}); } catch (Exception e) { e.printStackTrace(); } finally { try { if (csvWriter != null) { csvWriter.close(); } } catch (Exception e) { e.printStackTrace(); } } ``` ### 备注 ##### 参考文档 [JavaCSV API](http://javacsv.sourceforge.net/) ``` http://javacsv.sourceforge.net/ `...
tianshl 发布于 1个月前 阅读 198623 点赞 1

Authentication failure

vagrant 验证失败一直提示超时
tianshl 发布于 3个月前 阅读 452047

java递归删除文件或文件夹

```java /** * 递归删除文件或文件夹 * * @param file 文件或文件夹 */ public void delFile(File file) { if (!file.exists()) { return; } if (file.isFile()){ // 文件: 直接删除 file.delete(); } else if (file.isDirectory()) { // 文件夹 // 1. 删除子文件 for (File f: file.listFiles()){ delFile(f); } // 2. 删除文件夹 file.delete(); } } ```
tianshl 发布于 1个月前 阅读 199100 点赞 3

Mac OS 安装启动nginx

### 使用brew安装nginx ``` brew install nginx ``` ### 加入开机启动 ``` sudo cp /usr/local/opt/nginx/homebrew.mxcl.nginx.plist /Library/LaunchDaemons/ sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist ``` ### 配置文件路径 ``` /usr/local/etc/nginx/ ``` ### nginx 帮助信息 ``` tianshl:~ tianshl$ nginx -h nginx version: nginx/1.12.1 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/local/Cellar/nginx/1.12.1/) -c filename : set configuration file (default: /usr/local/etc/nginx/nginx.conf) -g directives : set global directives out of configuration file ``` ### 常用命令 ``` 1. 启动命令: sudo ...
tianshl 发布于 3个月前 阅读 451071 点赞 1

JavaScript指定长度和进制的UUID

### 指定长度和进制的UUID ``` /** * 指定长度和进制的UUID * @param len 长度 * @param radix 进制 * @returns {string} */ function uuid(len, radix) { var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); var uuid = [], i; radix = radix || chars.length; if (len) { for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; } else { var r; uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; uuid[14] = '4'; for (i = 0; i < 36; i++) { if (!uuid[i]) { r = 0 | Math.random()*16; uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; } } } return uuid.join(''); } ``` ### 测试 ``` uuid(32, 2) "11110011000001100111011111001111" uuid(32, 8) "31730315503322654076326054034634" uuid(32, 10) "50235847867589708943975575132412" uuid(32, 16) "405F8CA9918F71FC9C73DACB47CEC6EE" ```...
tianshl 发布于 1周前 阅读 65793

MacOS 配置Java环境变量

### 编辑 bash_profile ```shell vim ~/.bash_profile 输入以下内容并保存 export JAVA_HOME=`/usr/libexec/java_home` export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin ``` ### 使环境变量生效 ``` source ~/.bash_profile ``` ### 检验 ```shell tianshl@tianshl ~ $ echo $PATH ``` ### 备注 ``` 1. source前使用fish的要先退出fish 2. /usr/libexec/java_home 这条命令可以输出JAVA_HOME的路径 ```
tianshl 发布于 2周前 阅读 80845 点赞 1

Redis 笔记系列(九)——Redis的持久化之AOF

前文我们介绍了redis持久化及其中的一种方法——RDB。本文将介绍另一种方式——AOF。 请大家带着三个问题来思考这两种方法: 1. 如果一个系统中同时存在AOF和RDB,它们是冲突还是协作? 2. 为什么AOF会在RDB之后产生出现? 3. 相比于RDB,本文介绍的AOF会有什么优缺点?   AOF(Append Only File)     官网介绍      官网的原文介绍如下: AOF advantages Using AOF Redis is much more durable: you can have different fsync policies: no fsync at all, fsync every second, fsync at every query. With the default policy of fsync every second write performances are still great (fsync is performed using a background thread and the main thread will try hard to perform writes when no fsync is in progress.) but you can only lose one second worth of writes. The AOF log is an append only log, so there are no seeks, nor corruption problems if there is a power outage. Even if the log ends with an half-written command for some reason (disk full or other reasons) the redis-check-aof tool is able to fix it easily. Redis i...
HappyBKs 发布于 2周前 阅读 2431 评论 5 点赞 7

Spring Cloud(一)服务的注册与发现(Eureka)

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
鹏磊 发布于 1周前 阅读 1157 评论 2

开源新闻:四大Linux厂商联合承诺将为违反GPLv2许可证的公司提供修复期限来纠正合规问题

北京时间昨天早上,四大Linux厂商联合承诺将对违反GPLv2的厂商采用GPLv3的“许可终止”条款,新闻出来后,不断收到朋友的咨询,很多业界朋友都搞不清楚啥意思,那么v2和v3的“许可终止”条款有什么区别?所幸今早我就编译和加工了国外的一篇新闻稿,相信看了本文你就清楚了。
中国政法大学开源研究 发布于 2周前 阅读 676 评论 3 点赞 1

从0开始搭建自动部署环境

# 从0开始搭建自动部署环境 ## 前言 从Docker改变使用动态库后,DooD不再可行,而Dind依然可行。针对此改变,重新整理并记录自动部署环境配置步骤。 此环境是实现微服务自动部署的基础,使用jenkins持续集成工具,并内置了java和maven,并实现了容器内运行Docker命令的功能。 ## 软件环境 - 宿主机win10 - 虚拟机CentOS-7-x86_64-Minimal-1708 - Docker 17.09.0-ce - apache-maven-3.5.2 - jdk 1.8.0_151 - jenkins 2.73.3 ## 虚拟机安装配置 ### 1. 安装Docker 参考官方教程[Get Docker CE for CentOS](https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository) 可选项:更换源。官方源下载Docker可能很慢,更换成国内的Docker源,比如阿里云的Docker源[https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo) ### 2. 启动Docker并设置开机自启 ``` $ sudo service docker start $ sudo chkconfig docker on ``` ### 3. 更换Docker镜像源 从Docker官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器[地址](https://cr.console.aliyun.com/?spm=5176.100...
五毛程序员 发布于 2周前 阅读 2153 评论 2 点赞 2

最好用的 IntelliJ 插件 Top 10

IntelliJ的十大插件?相信每个人都有自己的选择。我们也同样如此。在这里,我们为您带来我们认为的**十大IntelliJ插件**。 如果你还是不知道什么是IntelliJ插件,请先阅读[our page about plugins](http://idea-intellij.com/intellij-plugins/)。或者访问[plugins.jetbrains.com](https://plugins.jetbrains.com/)获取更多信息。 ## 1. Grep Console 允许您定义一系列的正则表达式,利用它们来对控制台的输出或文件进行测试。每一个表达式匹配的行都会被整行的应用某个样式,或者播放声音。例如,你可以将错误消息设置为以红色的背景来显示。 [![grep console](http://idea-intellij.com/wp-content/uploads/2017/08/top-10-intellij-plugins-grep-console-300x223.png)](http://idea-intellij.com/wp-content/uploads/2017/08/top-10-intellij-plugins-grep-console.png) 官方网站 [点击这里](https://plugins.jetbrains.com/plugin/7125-grep-console). ## 2. JRebel for IntelliJ JRebel是一个提升生产力的工具,它可以帮助开发人员快速的重新加载更改的代码。 它跳过了Java开发中常见的重新构建,重启以及重新部署的循环操作。 JRebel使开发人员能够在相同的时间内完成...
程序猿DD 发布于 1周前 阅读 984 评论 2 点赞 1

Quartz 实现分布式任务调度

quartz 实现分布式任务调度的高可用
OrangeJoke 发布于 2周前 阅读 609

Delete Duplicate Emails --leetcode

Delete Duplicate Emails
woshixin 发布于 46分钟前

关于update set from where

关于update set from where   下面是这样一个例子: 两个表a、b,想使b中的memo字段值等于a表中对应id的name值      表a:id,name                1       王                2       李                3       张      表b:id,ClientName                1                      2                3    (MS SQL Server)语句: UPDATE b SET ClientName = a.NAME   FROM a, b WHERE a.id = b.id (Oralce)语句: update b set (ClientName) = (SELECT name FROM a WHERE b.id = a.id) (Mysql)语句: UPDATE A, B SET A1 = B1, A2 = B2, A3 = B3 WHERE A.ID = B.ID update set from 语句格式 当where和set都需要关联一个表进行查询时,整个 update执行时,就需要对被关联的表进行两次扫描,显然效率比较低。 对于这种情况,Sybase和SQL SERVER的解决办法是使用UPDATE...SET...FROM...WHERE...的语法,实际上就是从源表获取更新数据。 在 SQL 中,表连接(left join、right join、inner join 等)常常用于 select 语句,其实在 SQL 语法中,这些连接也是可以用于update 和 delete 语句的,在这些...
郑加威 发布于 50分钟前

BI系统

BI(Business Intelligence)商业智能系统 BI=ETL+Data Mining+Data Analysis + Data Presentation 【工具】 ETL:Informatica、Datastage、OWB、微软DTS、Beeload、Kettle Data Mining: Data Analysis: Data Presentation:DashBoard/FineBI/Tableau/魔镜 --------------------------------------------------------------------------------------------- 可以将数据存储在MySQL中,之后导入到Hadoop,通过Hive管理Hadoop的数据存储,用RHive实现R与Hive的对接,并在RHive中完成ETL,前端直接通过Rstudio展现                  ----这句话转载自https://www.zhihu.com/question/19777504/answer/54404020  
ZhangYuXia 发布于 51分钟前

17.12.11

package.json的name,dependencies,main的作用
静默行 发布于 52分钟前

常用中英文对照

http://www.h-ui.net/Hui-notes-css.shtml
十万猛虎下画山 发布于 52分钟前

CDH5.12.1添加spark2.2.0服务

最新的CDH安装包中spark版本为1.6,不过对于勇于尝鲜的同学,官方也提供了spark2的升级包,在CDH中spark1和spark2可以共存,但是由于scala版本的兼容性问题,建议只装一个版本。 由于spark依赖于scala所以需要在每个节点安装scala,并配置好SCALA_HOME并将$SCALA_HOME/bin加入PATH中。Scala可以在官网下载,版本选择2.11.x 安装spark需要四个文件: SPARK2_ON_YARN-2.2.0.cloudera1.jar 下载地址:http://archive.cloudera.com/spark2/csd/SPARK2_ON_YARN-2.2.0.cloudera1.jar SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel 下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel.sha1 下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/SPARK2-2.2.0.cloudera1-1.cdh5.12.0.p0.142354-xenial.parcel.sha1 manifest.json 下载地址:http://archive.cloudera.com/spark2/parcels/2.2.0.cloudera1/manifest.json 需要注意各个文件的版本必须保持一致。 以下操作在每个节点执行: 创建/opt/cl...
爱运动的小乌龟 发布于 58分钟前

mysql 重启过程中可能会出现的问题和解决方法

场景一:  service mysql restart MySQL server PID file could not be found![失败] Starting MySQL...The server quit without updating PID file (/usr/local/mysql/data/snsgou.pid).[失败] 1、可能是/usr/local/mysql/data/mysql.pid文件没有写的权限 解决方法 :给予权限,执行 “chown -R mysql:mysql /var/data” “chmod -R 755 /usr/local/mysql/data”  然后重新启动mysqld! 2、可能进程里已经存在mysql进程 解决方法:用命令“ps -ef|grep mysqld”查看是否有mysqld进程,如果有使用“kill -9  进程号”杀死,然后重新启动mysqld! 3、可能是第二次在机器上安装mysql,有残余数据影响了服务的启动。 解决方法:去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。本人就是使用第三条方法解决的 ! 4、mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。 解决方法:请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data 5、skip-federated字段问题 解决方法:检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如...
渺渺星辰 发布于 1小时前

list的addAll将多个list结果集合并

list的addAll将多个list结果集合并
Lucky_Me 发布于 1小时前 阅读 4

Java四种线程池的使用

Java通过Executors提供四种线程池,分别为: 1、newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 2、newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 3、newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。 4、newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。   import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ExecutorThreadPool { public static void main(String[] args) throws Exception{ //1、固定大小的线程池(3个线程) // ExecutorService threadPool = Executors.newFixedThreadPool(3); //2、创建缓存线程池(需要几个动态,创建几个) // ExecutorService threadPool = Executors.newCachedThreadPool(); //3、创建 单一线程池(好处:线程死掉,恢复一直有个线程) // ExecutorService threadPool = Executors.n...
LYQ1990 发布于 1小时前 阅读 2

10.28 rsync工具介绍

### 10.28 rsync工具介绍 用法: - rsync -av /etc/passwd /tmp/1.txt - rsync -av /tmp/1.txt 192.168.188.128:/tmp/2.txt 其中-a代表参数:-rlptgoD,后面可以跟--no-option将option换为参数 表示关闭-rlptgoD里面的一个参数;(如-a --no-r 等同于-lptgoD) -v代表 打印传输的一些信息; rsync格式: 1. rsync [OPTION] … SRC DEST 1. rsync [OPTION] … SRC [user@]host:DEST 1. rsync [OPTION] … [user@]host:SRC DEST 1. rsync [OPTION] … SRC [user@]host::DEST 1. rsync [OPTION] … [user@]host::SRC DEST > 小提醒: 其中第2、3中(一个冒号)就属于通过ssh的方式备份数据,即先用户登录到远程机器,然后执行rsync命令; 但是:问题来了 如果我们使用脚本备份的话,怎么输入密码?能不能不输入呢? 后续会讲到 不输入密码同步和服务器模式同步哦! 示例1: ``` ##拷贝到本地; [root@Dasoncheng ~]# rsync -av /etc/passwd /tmp/1.txt sending incremental file list passwd sent 1563 bytes received 31 bytes 3188.00 bytes/sec total size is 1489 speedup is 0.93 [root@Dasoncheng ~]# ll /tmp/1* -rw-r--r-- 1 root root 203 Dec 4 10:55 /tmp/1.sql -r...
脑洞老湿_ 发布于 1小时前 阅读 1

CAD的基础学习方法

一、熟悉对CAD中基本操作命令/快捷图标的使用   这一点大多数人都知道,古人云:熟能生巧。基本命令与快捷图标便是CAD中大家最熟悉的,也应该能熟练掌握了,所以就不详细的给大家介绍了。 二、 根据自己的习惯定制快捷键   大家都知道LINE命令可简化为L,为何会如此呢?因为在CAD中有一个命令别名文件*.PGP(AutoCAD 为acad.pgp、浩辰CAD8为gcad.pgp)中定义了LINE命令的简写,先找出这个文件打开它。也可以在菜单中找到:工具》自定义》编辑程序参数的命令。 在PGP文件中包括对命令简写的定义,记住它的左列是简写命令的文字实现你可以根据你的需要进行修改(当然是你比较熟悉的英文缩写喽),它的右列是默认的命令请不要随意修改。通常情况下将自己最常用的命令定义一个字母,较常用的定义为两个字母。定义时记住不要多个命令对应一个别名。   三、对图形夹点操作   夹点,你用过吗?当你用鼠标左键点击图形,图形上便会出现许多方框这些就是夹点。通过控制夹点便能进行一些基本的编辑操作。如:COPY,MOVE,改变图形所在的图层等基本操作。而且不同的图形,还有其特殊的操作。如:直线有延伸操作。选中夹点后右键可以选择对夹点的编辑方式,如果右键菜单关闭了,...
熊本二号 发布于 1小时前

请求sino接口传递报名信息同时获取签到码

java  http的 post请求  参数在formData里  json格式 活动id EventId 用户id     UserId 活动报名id EventSignId 小程序码图片url QrCodeUrl 姓名 UserName 公司(如果为空则没有数据) Company 职位(如果为空则没有数据) Position 用户头像 UserAvatar 请求示例 @Test public void getSino() { try { EventSign eventSign = new EventSign(); eventSign.setUserId(6135680863012126725L); eventSign.setEventId(101223L); eventSign.setId(1L); String smallImgUrl = "http://img.taopic.com/uploads/allimg/120727/201995-120HG1030762.jpg"; UserBaseToInfo info = new UserBaseToInfo(); info.setUserName("赵大宝"); info.setUserCompany("正和岛"); info.setUserPosition("技术开发"); info.setUserAvatar("http://impic.zhisland.com/impic/T1TRZTB5DT1RXrhCrK.jpg"); JSONObject jso = getSinoInfo(eventSign,smallImgUrl,info); System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
乱舞 发布于 1小时前 阅读 2

Mac中不能双击打开自行下载的应用程序

公司最近为我配备了一台Mac,作为开发这么多年的我,竟然没有用过Mac,甚是惭愧。 在搭建开发环境的时候,用到了公司自己的软件,暂时命名为A,从公司内网下载下来后,却不能通过双击打开。由于我是MacOS小白,只能到处找资料。 在公司的内网的FAQ中找到了原因: The root cause for this is that starting from Mountain Lion, Apple has tightened its security when installing apps. The default security preference (which can be changed) is that only apps from the Mac AppStore and/or from certified Apple developers can be installed. Mac looks for signature/certs to validate this. Workaround: Go to System Preferences --> Security --> General and check Anywhere radio to proceed with the installation. Workaround: Launch installer by right-clicking or Control-clicking its icon and choosing Open. 原来为了系统安全,Apple默认禁止在Mac中安装非Mac AppStore和非Apple认证的开发者的软件。 我按照提示依次打开了System Preferences --> Security --> General菜单,却并没有找到这个叫做“Anywhere”的选项: 后来,在搜索中看到这...
摆渡者 发布于 1小时前 阅读 2

div可编辑之contenteditable属性

最近做项目,用到可编辑文本,首先进入我脑海的就是textarea富文本编辑框,就如我所想的那样,我也去做了,顺利做完提交,等到展示的时候发现textarea并不会随着内容的高度增加而增加,这让我百思不得解,为什么div就可以,对,div这个标签就这样闯入了我的印象,如果div可编辑就好了。后来搜索了一下,发现有个属性contenteditable可以让div呈现可编辑状态,欣喜若狂的我决定把textarea标签替换为div标签,替换完后,完美的展示了我想要的结果。下面来介绍下contenteditable contenteditable 1.定义和用法 contenteditable 规定是否可编辑元素的内容,是html5的新属性,不过支持ie8 语法: <element contenteditable="value"> 属性值: true:规定可编辑的文本框 false:规定不可编辑的文本框 classname:继承父元素的contenteditable属性 下面给出使用textarea的显示和使用contenteditable属性的显示 例子:以一首大家都很熟悉的诗作为显示 textarea下的显示 contenteditable="true"下的显示 虽然多行显示出来了,但我还要实现实时监听事件,让div标签使用contenteditable属性,虽然可编辑了,但因为不是input可编辑标签,所以没办法用input propertychange实时监听事件,...
爱喝水的小熊 发布于 1小时前

长链接转短链接

<?php namespace CommonCommonShortUrl; /** 长链接转换短链接 */ class ShortUrl { #字符表 public static $charset = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static function shortUrl($url) { $base32 = array ( 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5' ); $hex = md5($url); $hexLen = strlen($hex); $subHexLen = $hexLen / 8; $short_url_list = array(); for ($i = 0; $i < $subHexLen; $i++) { $subHex = substr ($hex, $i * 8, 8); $int = 0x3FFFFFFF & (1 * ('0x'.$subHex)); $out = ''; for ($j = 0; $j < 6; $j++) { $val = 0x0000001F & $int; $out .= $base32[$val]; $int = $int >> 5; } $short_url_list[] = $out; ...
wenjin312 发布于 1小时前 阅读 1

责任链模式

1.定义 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。   2.问题和解决方案 击鼓传花是一种热闹而又紧张的饮酒游戏。在酒宴上宾客依次坐定位置,由一人击鼓,击鼓的地方与传花的地方是分开的,以示公正。开始击鼓时,花束就开始依次传递,鼓声一落,如果花束在某人手中,则该人就得饮酒。   比如说,贾母、贾赦、贾政、贾宝玉和贾环是五个参加击鼓传花游戏的传花者,他们组成一个环链。击鼓者将花传给贾母,开始传花游戏。花由贾母传给贾赦,由贾赦传给贾政,由贾政传给贾宝玉,又贾宝玉传给贾环,由贾环传回给贾母,如此往复,如下图所示。当鼓声停止时,手中有花的人就得执行酒令。  击鼓传花便是责任链模式的应用。责任链可能是一条直线、一个环链或者一个树结构的一部分。   3.结构 一个典型的对象结构可能如下图所示 、 抽象处理者角色(Handler:Approver):定义一个处理请求的接口,和一个后继连接(可选)。如果需要,接口可以定义出一个方法...
仟昭 发布于 1小时前 阅读 1

mysql创建用户用来远程连接

创建用户用来远程连接 GRANT ALL PRIVILEGES ON *.* TO 'itoffice'@'%' IDENTIFIED BY 'itoffice' WITH GRANT OPTION; (第一个itoffice表示用户名,%表示所有的电脑都可以连接,也可以设置某个ip地址运行连接,第二个itoffice表示密码)。  报错要修改密码: set password=password("密码")
fengStick 发布于 1小时前

(一)算法--查找算法顺序查找和二分查找(递归和非递归方式)

  我们抛开二分查找算法,如果有这样的一个需求,需要在一些数字中找出有没有某个数字,我们应该怎么做?              1 首先我们会想到用什么数据结构存放这些数?            数据结构就是计算机存储组织、组织数据的方式。可以这样理解,生活中我们穿的衣服需要放到一个地方,衣服可以放到衣橱中,也可以放到行李箱中,也可以放到衣架中,这里的衣架、衣橱、和行李箱及是衣服的存放结构。所以我们在查找某一个数字是否在一堆数字中的时候,我们要把数据放到数据结构中,不同的数据结构有不同的优势,就像衣服放到不同的“存储”中,会有不同的优势。而精心选择的数据结构可以带来更高的运行或者存储效率。              计算机中有哪些数据结构呢?            常见的数据结构有数组(Array)、堆栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)。          具体的数据结构以及优势就不再这里介绍了,以后会一一介绍。          而java语言常用的数据结构有数组,list,set,map。list实际上也是数组结构,不太复杂和确定长度下,使用数组的效率会高些,数组是确定长度...
new_chaos 发布于 2小时前 阅读 1

高通平台android

  编写资料 http://blog.csdn.net/mirkerson/article/details/7691029/   -------高通平台Android源码分析之Linux内核设备树 http://blog.csdn.net/npjocj/article/details/8206695               --------qualcomm amss 文件结构以及编译流程分析 http://blog.csdn.net/radianceblau/article/details/73468700  ------------高通sensor架构实例分析   http://www.txrjy.com/thread-601175-1-1.html  ------------------高通资料下载
DB_Terrill 发布于 2小时前

C#多线程编程

C#多线程编程   一、使用线程的理由 1、可以使用线程将代码同其他代码隔离,提高应用程序的可靠性。 2、可以使用线程来简化编码。 3、可以使用线程来实现并发执行。 二、基本知识 1、进程与线程:进程作为操作系统执行程序的基本单位,拥有应用程序的资源,进程包含线程,进程的资源被线程共享,线程不拥有资源。 2、前台线程和后台线程:通过Thread类新建线程默认为前台线程。当所有前台线程关闭时,所有的后台线程也会被直接终止,不会抛出异常。 3、挂起(Suspend)和唤醒(Resume):由于线程的执行顺序和程序的执行情况不可预知,所以使用挂起和唤醒容易发生死锁的情况,在实际应用中应该尽量少用。 4、阻塞线程:Join,阻塞调用线程,直到该线程终止。 5、终止线程:Abort:抛出 ThreadAbortException 异常让线程终止,终止后的线程不可唤醒。Interrupt:抛出 ThreadInterruptException 异常让线程终止,通过捕获异常可以继续执行。 6、线程优先级:AboveNormal BelowNormal Highest Lowest Normal,默认为Normal。 三、线程的使用 线程函数通过委托传递,可以不带参数,也可以带参数(只能有一个参数),可以用一个类或结构体封装参数。 namespace Test { cla...
NickHomeSelf 发布于 2小时前 阅读 1

ElasticSearch单机部署多实例环境

ElasticSearch6.0.0
ssdut_buster 发布于 4天前 阅读 1346 评论 7

vue全面介绍

2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点”。授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You)。 Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架。它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js;同时比起 React + Redux 相对复杂的架构,
爱敲代码的程序员 发布于 5天前 阅读 4042 评论 13 点赞 14

TensorFlow Serving在Kubernetes中的实践

本文介绍了TensorFlow Serving的配置,尤其是官方文档没作完整介绍的model version policy的配置,另外介绍了编译TensorFlow Serving时的优化实践以及在Kubernetes中的部署,以及使用时的注意事项。
WaltonWang 发布于 6天前 阅读 1052 评论 4 点赞 2

HTTPS连接过程以及中间人攻击劫持

一 、HTTPS连接过程及中间人攻击原理 https协议就是http+ssl协议,如下图所示为其连接过程:  1.https请求  客户端向服务端发送https请求;  2.生成公钥和私钥  服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容;  3.返回公钥  服务端将公钥(证书)返回给客户端,公钥里面包含有很多信息,比如证书的颁发机构、过期时间等等;  4.客户端验证公钥  客户端收到公钥之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密;  5.发送客户端密钥  客户端用服务端的公钥加密密钥,然后发送给服务端。  6.服务端收取密钥,对称加密内容  服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。  7.加密传输  服务端将经过加密的内容传输给客户端。  8.获取加密内容,解密  客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。 中间人劫持...
MengXS 发布于 1周前 阅读 2476 评论 6 点赞 10

Spring Cloud(一)服务的注册与发现(Eureka)

Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
鹏磊 发布于 1周前 阅读 1157 评论 2

Spring Boot 定制与优化内置的Tomcat容器

通过定制与优化内置的Tomcat来提应用的服务性能。
Hanson_Q 发布于 2周前 阅读 2986 评论 10 点赞 12

DB——数据的读取和存储方式

数据库是我们常用的一些存储数据的方式,我们从读写来了解RDBMS的存取结构
wier 发布于 2周前 阅读 1440 评论 4 点赞 5

理解TCP/IP三次握手与四次挥手的正确姿势

背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次。 从好上开始,到现在,一年多也算坚持下来了。 问题 有时候聊天的过程中,我的网络或者她的网络可能会不好,视频就会卡住,听不到对方的声音,过一会儿之后才会恢复。 中间双方可能就要不断的确认网络是否恢复,但是有时候会: 她:“你可以听到了吗?” 我:“可以了,你呢?”、 她:“喂喂,你可以听到了吗?” 我:“可以了,我可以听到了,你呢?” 她:“你可以听到了吗?” ..... 这种情况很蛋疼,那么怎样才能找一个简单的办法,让两个人都确认自己可以听到对方的声音,对方也可以听到自己的声音呢? 注:以下情节纯属虚构   方案 TCP建立连接为什么是三次握手,而不是两次或四次? TCP,名为传输控制协议,是一种可靠的传输层协议,IP协议号为6。 顺便说一句,原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。 举个日常例子,打电话时我们对话如下:   对应为客户端与服务器之间的通信: 于是有了如下对话: 我:1+1等于几? 她:2,2+2等于几? 我:4 首先两个人约定协议 1.感觉网络情况不对的时候,任何一方都可以发起询问 2.任何情况下,若发起询问后5秒还没收到...
Champin 发布于 2周前 阅读 2659 评论 6 点赞 9

JVM与字节码——类的方法区模型

介绍一个类从Java编码到Java bytecode再到JVM运行的过程,在介绍过程中分析JVM方法区(非堆)的存储模型。
随风溜达的向日葵 发布于 2周前 阅读 2265 评论 11 点赞 8

分布式实时日志分析解决方案ELK部署架构

一、概述 ELK 已经成为目前最流行的集中式日志解决方案,它主要是由Beats、Logstash、Elasticsearch、Kibana等组件组成,来共同完成实时日志的收集,存储,展示等一站式的解决方案。本文将会介绍ELK常见的架构以及相关问题解决。 Filebeat:Filebeat是一款轻量级,占用服务资源非常少的数据收集引擎,它是ELK家族的新成员,可以代替Logstash作为在应用服务器端的日志收集引擎,支持将收集到的数据输出到Kafka,Redis等队列。 Logstash:数据收集引擎,相较于Filebeat比较重量级,但它集成了大量的插件,支持丰富的数据源收集,对收集的数据可以过滤,分析,格式化日志格式。 Elasticsearch:分布式数据搜索引擎,基于Apache Lucene实现,可集群,提供数据的集中式存储,分析,以及强大的数据搜索和聚合功能。 Kibana:数据的可视化平台,通过该web平台可以实时的查看 Elasticsearch 中的相关数据,并提供了丰富的图表统计功能。 二、ELK常见部署架构 2.1、Logstash作为日志收集器 这种架构是比较原始的部署架构,在各应用服务器端分别部署一个Logstash组件,作为日志收集器,然后将Logstash收集到的数据过滤、分析、格式化处理后发送至Elasticsearch存储,最后使用Kibana进...
FEINIK 发布于 2周前 阅读 4483 评论 6 点赞 4

Kotlin Primer·第七章·协程库(上篇)

本篇只讲了协程库的使用。还有中篇讲协程的启动和切换实现原理,下篇核心讲解kotlin协程在JVM层的实现原理。 这可能是至今为止最详细实用的 Kotlin 协程库详解了。
kymjs张涛 发布于 2周前 阅读 1329

Redis 笔记系列(九)——Redis的持久化之AOF

前文我们介绍了redis持久化及其中的一种方法——RDB。本文将介绍另一种方式——AOF。 请大家带着三个问题来思考这两种方法: 1. 如果一个系统中同时存在AOF和RDB,它们是冲突还是协作? 2. 为什么AOF会在RDB之后产生出现? 3. 相比于RDB,本文介绍的AOF会有什么优缺点?   AOF(Append Only File)     官网介绍      官网的原文介绍如下: AOF advantages Using AOF Redis is much more durable: you can have different fsync policies: no fsync at all, fsync every second, fsync at every query. With the default policy of fsync every second write performances are still great (fsync is performed using a background thread and the main thread will try hard to perform writes when no fsync is in progress.) but you can only lose one second worth of writes. The AOF log is an append only log, so there are no seeks, nor corruption problems if there is a power outage. Even if the log ends with an half-written command for some reason (disk full or other reasons) the redis-check-aof tool is able to fix it easily. Redis i...
HappyBKs 发布于 2周前 阅读 2431 评论 5 点赞 7

从0开始搭建自动部署环境

# 从0开始搭建自动部署环境 ## 前言 从Docker改变使用动态库后,DooD不再可行,而Dind依然可行。针对此改变,重新整理并记录自动部署环境配置步骤。 此环境是实现微服务自动部署的基础,使用jenkins持续集成工具,并内置了java和maven,并实现了容器内运行Docker命令的功能。 ## 软件环境 - 宿主机win10 - 虚拟机CentOS-7-x86_64-Minimal-1708 - Docker 17.09.0-ce - apache-maven-3.5.2 - jdk 1.8.0_151 - jenkins 2.73.3 ## 虚拟机安装配置 ### 1. 安装Docker 参考官方教程[Get Docker CE for CentOS](https://docs.docker.com/engine/installation/linux/docker-ce/centos/#set-up-the-repository) 可选项:更换源。官方源下载Docker可能很慢,更换成国内的Docker源,比如阿里云的Docker源[https://download.docker.com/linux/centos/docker-ce.repo](https://download.docker.com/linux/centos/docker-ce.repo) ### 2. 启动Docker并设置开机自启 ``` $ sudo service docker start $ sudo chkconfig docker on ``` ### 3. 更换Docker镜像源 从Docker官方源下载镜像可能很慢,更换成阿里云的源即可。阿里云专属加速器[地址](https://cr.console.aliyun.com/?spm=5176.100...
五毛程序员 发布于 2周前 阅读 2153 评论 2 点赞 2

用Python实现一个大数据搜索引擎

搜索是大数据领域里常见的需求。Splunk和ELK分别是该领域在非开源和开源领域里的领导者。本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家理解大数据搜索的基本原理。 布隆过滤器 (Bloom Filter) 第一步我们先要实现一个布隆过滤器。 布隆过滤器是大数据领域的一个常见算法,它的目的是过滤掉那些不是目标的元素。也就是说如果一个要搜索的词并不存在与我的数据中,那么它可以以很快的速度返回目标不存在。 让我们看看以下布隆过滤器的代码: class Bloomfilter(object): """ A Bloom filter is a probabilistic data-structure that trades space for accuracy when determining if a value is in a set. It can tell you if a value was possibly added, or if it was definitely not added, but it can't tell you for certain that it was added. """ def __init__(self, size): """Setup the BF with the appropriate size""" self.values = [False] * size self.size = size def hash_value(self, value): """Hash the value provided and scale it to fit the BF size""" ...
naughty 发布于 2周前 阅读 2311 评论 3 点赞 4

springboot+vue的前后端分离与合并方案

springboot+vue的前后端分离与合并
上官胡闹 发布于 3周前 阅读 4032 评论 29 点赞 6

MariaDB的延迟开源模式及其BSL许可证介绍(一)

本文主要内容:①我为啥拖延;②MariaDB的BSL许可证;③BSL示例。下一步准备介绍下MySQL和MariaDB的版权细节问题。
中国政法大学开源研究 发布于 3周前 阅读 996 评论 1 点赞 2

阿里Dubbo疯狂更新,关Spring Cloud什么事?

原文出处,在 Spring For All 社区(http://spring4all.com ): http://www.spring4all.com/article/213 最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本。 我上次在写[放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结](http://mp.weixin.qq.com/s/bciSlKearaVFQg1QWOSn_g)这篇文章的时候,就有很多的网友给我留言说,Dubbo 又开始更新了。我当然是清楚的,我也一直在关注着 Dubbo 的走向,在几个月前技术圈里面就有一个消息说是 Dubbo 又开始更新了,大家议论纷纷不知真伪。我还专门跑到 GitHub 上面进行了留言询问,最后在 Dubbo 的 gitter 聊天室里面找到了确信的答案,说是正在组建团队。虽然稍稍有所期待,但也不知道阿里这次拿出了多少的诚意来做这件事,于是我昨天又到 GitHub 逛了一下,发现从 9 月开始,阿里三个月连着发布了四个版本,还是非常有诚意的,值得关注。 ## Dubbo简介 Dubbo 是阿里巴巴公司一个开源的高性能服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案,使得应用可通过高性能 RPC 实现服务的输出、输入功能...
SpringForAll 发布于 3周前 阅读 6351 评论 20 点赞 5

如何7步实现根据源码包创建rpm包

### 如何7步实现根据源码包创建rpm包 --- > 本文是"[7 Steps to Build a RPM Package from Source on CentOS / RedHat](http://www.thegeekstuff.com/2015/02/rpm-build-package-example/)"一文的简单翻译。 **version: 0.1.0 2017-11-19** 有时你可能需要获取一个开源应用的源码包,但是可能没有无法通过该应用的RPM文件来安装到系统。 在这种情况下,你既可以编译源码安装,也可以以源码包来创建一个rpm包文件,实现安装应用的功能。 同样存在一种情况即你想要创建一个你自己开发的自定义的RPM包。 这篇指南解释了如何提高源码来创建一个rpm包。 为了创建rpm包,你将需要源码包(通常为一个压缩文件,其内也包含了SPEC文件)。 SPEC文件包含以下说明:如何创建rpm包,包内包含的文件,安装的路径。 RPM将展现创建过程中的测试过程。 执行spec文件中的prep块中定义的系统命令和宏命令。 检测文件列表的内容 执行spec文件中的build块中定义的系统命令和宏命令。在这一步中文件列表中的宏命令也被执行。 创建二进制包文件 创建源码包文件 一旦RPM执行了上述步骤,将创建二进制的包文件和源码包文件。 二进制包文件包含所有安装或卸载包的额外信息的源文件。 通常安装包的所有...
Lu_Castiel 发布于 3周前 阅读 977 评论 7 点赞 2

使用Hutool爬取开源中国的开源资讯

## 介绍 为了演示Hutool-http的http请求功能,因此这个栗子用红薯家的开源资讯开刀,在此做个简单的Demo。 ## 开始 ### 分析页面 1. 打开红薯家的主页,我们找到最显眼的开源资讯模块,然后点击“更多”,打开“开源资讯”板块。 ![](https://static.oschina.net/uploads/img/201711/19204312_zJD8.png) 2. 打开F12调试器,点击快捷键F12打开Chrome的调试器,点击“Network”选项卡,然后在页面上点击“全部资讯”。 ![](https://static.oschina.net/uploads/img/201711/19204634_1ahd.png) ![](https://static.oschina.net/uploads/img/201711/19204743_eJBy.png) 3. 由于红薯家的列表页是通过下拉翻页的,因此下拉到底部会触发第二页的加载,此时我们下拉到底部,然后观察调试器中是否有新的请求出现。如图,我们发现第二个请求是列表页的第二页。 ![](https://static.oschina.net/uploads/img/201711/19205000_V7Sj.png) 4. 我们打开这个请求地址,可以看到纯纯的内容。红框所指地址为第二页的内容,很明显p参数代表了页码page。 ![](https://static.oschina.net/uploads/img/201711/19205156_dTb8.png) 5. 我们右键点击后查看源码,可以看到源码。 ![](https://static...
路小磊 发布于 3周前 阅读 2215 评论 20 点赞 7

Java的SPI机制分析

Java SPI
宸明 发布于 3周前 阅读 3192 评论 5 点赞 3
顶部