开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

一个优质的微服务框架需要考虑的要素众多,在满足微服务设计理念的前提下,也是一个不断实践优化的过程。 本文讲述了整个 开源微服务框架 Apache ServiceComb 设计形成的前因后果,尝试从理念、思想和实践结合的维度剖析一个优质的微服务框架应该具备哪些要素,包括但不限于 对开发者友好、高性能、内外部扩展性等。 阅读本文有利于加深对微服务理念和框架的理解,给予微服务用户或开发者以帮助,这也是 Apache ServiceComb 的前身华为云微服务引擎的智慧结晶,从细节处承载了华为云自身多年云化转型的经验。
ServiceComb 发布于 2小时前 阅读 157

以太坊预言机与智能合约开发

什么是以太坊预言机?智能合约就其性质而言,能够运行各种算法并可以存储和查询数据。预言机可以监控区块链事件并能将监控结果发回智能合约。因为每个节点每次都需要大量计算,所以从Ethereum智能合约开发中进行频繁的网络请求是切不实际的。这样,智能合约就可以与链外的世界进行互动了。 但是这样有一个明显的信任问题。与信任单一外部数据源的分布式智能合约有些矛盾。不过这可以通过让多个独立的预言机来响应相同的查询最终形成共识来缓解这个问题。 有关预言机的更多信息,请查看在分布式应用程序之间提供“可靠连接”的FinTech公司Oraclize。 他们对预言机的解释很不错。 ### The [Tinypay.co](http://tinypay.co/) DNS Oracle Tinypay的预言机做了三件简单的事情: 1. 从合同中提取'ClientCreated'事件 2. 使用来自事件的数据验证DNS记录 3. 域名确认后,向合约发送'ConfirmClient'交易 我经历了几次迭代,最终实现了,我希望通过它们来引导您了解以太坊的发展。 ### 你也可以直接用RPC,不过似乎不应这么干 我第一次写预言机,我用了Go-Ethereum。我想直接使用RPC API与Ethereum节点进行所有通信。 这很有趣,因为我能够学习很多关于以太坊协议如何进行存储和数...
笔阁 发布于 2小时前 阅读 12

高可用负载均衡:开源PaaS Rainbond组件Rainbond-Entrance揭秘

负载均衡(Load Balancing)是开源PaaS Rainbond的亮点功能,主要由“软件定义负载均衡”Rainbond-Entrance控制器完成。 本文将围绕设计架构和实现介绍Rainbond-Entrance。 #### 为什么需要负载均衡 Rainbond内部网络划分支持多租户,每个租户都有一个私有的IP段,不同租户的网络相互不可见。当我们把一个容器化应用部署到Rainbond,Rainbond会为该容器分配一个内部IP,用于同一租户中不同应用在集群内部的通信,而集群外部无法直接访问,因此我们需要有一个集群入口控制器,以便用户可以方便地访问这些应用。 另外,Rainbond中部署的每个应用都可以有多个实例,即假设我们为一个WEB应用部署了三个实例,每个实例分担一部分流量,我们就需要这三个实例前增加负载均衡控制器来完成分发流量的工作。 除了上述的基本功能以外,负载均衡控制器还必须支持更多功能,例如: * 入口控制器能够根据数据包信息(如协议、端口号、主机名等)将请求转发给指定的应用 * 实时发现集群中应用的变化(如添加自定义域名、添加证书、添加端口等)并动态更新自身的转发规则 * 同时支持HTTP、TLS、TCP、UDP协议,因为有时不只WEB应用需要向外提供服条,RPC、MySQL等也需要对外开放 * 支持高可用...
好雨云帮 发布于 4小时前 阅读 22

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

这里输入引用文本由于项目中使用了minidao 1.5.1,hibernate的增删改查不需要书写sql语句的地方造成程序运行的时候出现了连接池泄露,数据库连接数一直在300以上。
andotorg 发布于 9小时前 阅读 98

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

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

shell特殊符号cut命令sort_wc_uniq命令 tee_tr_split命令 shell特殊符号下

cut sort wc uniq tee tr split命令 • cut 分割,-d 分隔符  -f 指定段号   -c 指定第几个字符 cut -d ":" -f 1 /etc/passwd 截取/etc/passwd文件中以:分割的第一段 cut -d ":" -f 2,4 /etc/paaswd 截取/etc/passwd文件中以:分割的第一段 cut -d ":" -f 1-3 /etc/passwd 截取/etc/passwd文件中以:分割的1到3段 head -n 3 /etc/passwd |cut -d":" -f 1 /etc/passwd 的前三行截图第一段 cut -c 6 /etc/passwd 提取每行的第六个字符 cut -c 1-8 /etc/passwd 提取每行的前八个字符 • sort 排序, -n 以数字排序 -r 反序  -u 去重复 -t 分隔符 -kn1/-kn1,n2 sort /etc/passwd sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较, 最后将它们按升序输出。 head -n 5 /etc/passwd |sort -t: -k3 -n root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin -t后面跟分割符,-k后面跟数字,表示第几个区域的字符串排序,-n则表示使用纯数字排序。 head -n5 /etc/passwd | sort -t: -k3,5 -r lp:x:4:7:lp:/var/spool/lpd:/s...
laoba 发布于 11小时前 阅读 35

Elastic X-Pack 代码已公开并上线

几个小时前, Elastic 商业插件 X-Pack 的源代码已正式 Merge 进 Master,作为一家开源软件公司,能够将商业部分的代码也公开,实在是需要很大的勇气(我深感自豪),这一切都是为了更好的打造一个更加好用的产品:Elastic Stack,只有开放才能走的更远! 想了解更多关于 X-Pack 代码公开背后的介绍,可以看 Elastic 创始人 Shay 的这篇博客:[https://elasticsearch.cn/article/513](https://elasticsearch.cn/article/513) 相关代码已在 github 上面可以找到: [Elasticsearch](https://github.com/elastic/elasticsearch/tree/master/x-pack) [Kibana](https://github.com/elastic/kibana/tree/master/x-pack) [Logstash](https://github.com/elastic/logstash/tree/master/x-pack) [Beats](https://github.com/elastic/beats/tree/master/x-pack) 有关问题可以在此回复,我会一一解答。...
Medcl 发布于 13小时前 阅读 120 评论 1

深入以太坊智能合约 ABI

开发 DApp 时要调用在区块链上的 Ethereum 智能合约,就需要智能合约的 ABI。本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得智能的 ABI? ![数字猫合约 ABI](https://static.oschina.net/uploads/img/201804/24232643_QKn7.png) ### ABI(Application Binary Interface) 如果理解 API 就很容易了解 ABI。简单来说,API 是程序与程序间互动的接口。这个接口包含程序提供外界存取所需的 functions、variables 等。ABI 也是程序间互动的接口,但程序是被编译后的 binary code。所以同样的接口,但传递的是 binary 格式的信息。所以 ABI 就要描述如何 decode/encode 程序间传递的 binary 信息。下图以 Linux 为例,描述 Linux 中 API、ABI 和程序的关系。 ![Linux API and ABI](https://static.oschina.net/uploads/img/201804/24232727_M5ni.png) ### 编译和部署智能合约 在 Ethereum 智能合约可以被大家使用前,必须先被部署到区块链上。 从智能合约的代码到使用智能合约,大概包含几个步骤: 1. 编写智能合约的代码(一般是用 Solidity 写) 2. 编译智能合约的代码变成可在 EVM 上执行的 bytecode(binary code)。同时可以通过...
笔阁 发布于 21小时前 阅读 80

微服务中 Dubbo 和 Spring Cloud 架构技术路线对

微服务架构是互联网很热门的话题,是互联网技术发展的必然结果。它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。虽然微服务架构没有公认的技术标准和规范或者草案,但业界已经有一些很有影响力的开源微服务架构框架提供了微服务的关键思路,例如Dubbo和Spring Cloud。各大互联网公司也有自研的微服务框架,但其模式都于这二者相差不大。 微服务主要的优势如下: 1、降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。 2、可独立部署 由于微服务具备独立的运行进程,所以每个微服务可以独立部署。当业务迭代时只需要发布相关服务的迭代即可,降低了测试的工作量同时也降低了服务发布的风险。 3、容错 在微服务架构下,当某一组件发生故障时,故障会被隔离在单个服务中。 通过限流、熔断等方式降低错误导致的危害,保障核心业务正常运行。 4、扩展 单块架构应用也可以实现横向扩展,就是将整个应用完整的复制...
烂猪皮 发布于 22小时前 阅读 484 评论 2

EMQ百万级MQTT消息服务(TLS Docker Golang)

![](http://i.imgur.com/vhdeDvX.png) 附上: 喵了个咪的博客:[w-blog.cn](w-blog.cn) EMQ官方地址:[http://emqtt.com/](http://emqtt.com/) EMQ中文文档:[http://emqtt.com/docs/v2/guide.html](http://emqtt.com/docs/v2/guide.html) ## 1.TLS证书验证 为了保障安全.我们常常会使用HTTPS来保障请求不被篡改,作为MQTT使用TLS加密的方式来保障传输安全 EMQ默认使用的TLS加密的端口是8883端口,默认证书在EMQ目录下etc/certs: ![](http://pic.w-blog.cn/DB6FF723-F67B-4DE3-BACC-F5FA254D78BE.png) 对应的配置文件在emq.conf中,可以修改你的端口和配置文件路径 ``` listener.ssl.external = 8883 listener.ssl.external.keyfile = etc/certs/key.pem listener.ssl.external.certfile = etc/certs/cert.pem ``` > PS:在链接的时候注意需要从之前的链接前缀做如此修改 tcp:// -> ssl:// ## 2.使用Docker部署EMQ 使用Docker部署EMQ很方便版本升级,端口管理和单节点多EMQ等,对于性能来说基本没有带来额外的开销 但是官方并没有提供对于直接可以用的Docker镜像,但是提供的GIT大家可以自己打包以及压缩包,笔者因为使用这里打成了公共进行如下(2.3.5往上版本都会进维护): ``` regist...
喵了_个咪 发布于 1天前 阅读 219

Quartz调度源码分析

前言 上一篇文章Quartz数据库表分析介绍了Quartz默认提供的11张表,本文将具体分析Quartz是如何调度的,是如何通过数据库的方式来现在分布式调度。 调度线程 Quartz内部提供的调度类是QuartzScheduler,而QuartzScheduler会委托QuartzSchedulerThread去实时调度;当调度完需要去执行job的时候QuartzSchedulerThread并没有直接去执行job, 而是交给ThreadPool去执行job,具体使用什么ThreadPool,初始化多线线程,可以在配置文件中进行配置: org.quartz.threadPool.class: org.quartz.simpl.SimpleThreadPool org.quartz.threadPool.threadCount: 10 org.quartz.threadPool.threadPriority: 5 常用的线程池是SimpleThreadPool,这里默认启动了10个线程,在SimpleThreadPool会创建10个WorkerThread,由WorkerThread去执行具体的job; 调度分析 QuartzSchedulerThread是调度的核心类,具体Quartz是如何实现调度的,可以查看QuartzSchedulerThread核心源码: public void run() { boolean lastAcquireFailed = false; while (!halted.get()) { try { // check if we're supposed to pause... synchronized (sigLock) { ...
ksfzhaohui 发布于 1天前 阅读 185 点赞 4

ElasticSearch5.4.3离线搭建

  1、ElasticSearch简介 ElasticSearch 是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch 是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch 来解决所有这些问题以及可能出现的更多其它问题。 2、部署准备 2.1、环境准备 elasticsearch-5.4.3.tar.gz jdk-8u161-linux-x64.tar.gz 可用的yum源 可联网的Linux环境一台(不安装插件则不需要) 2.2、节点配置信息 IP地址 主机名 192.168.23.1 risen01 192.168.23.2 risen02 192.168.23.3 risen03   2.3、节点资源配置信息 IP地址 角色 192....
Coder2018 发布于 1天前 阅读 169 点赞 1

RabbitMQ:从零开始

RabbitMQ是基于AMQP协议的消息中间件,服务器端用Erlang语言编写,支持多种客户端,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。用于异步解耦的MQ从零开始。
Kelin92 发布于 1天前 阅读 362 评论 3 点赞 2

Java Web从前端到后台常用框架介绍

一、SpringMVC Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 模型(Model )封装了应用程序的数据和一般他们会组成的POJO。 视图(View)是负责呈现模型数据和一般它生成的HTML输出,客户端的浏览器能够解释。 控制器(Controller )负责处理用户的请求,并建立适当的模型,并把它传递给视图渲染。 Spring的web模型 - 视图 - 控制器(MVC)框架是围绕着处理所有的HTTP请求和响应的DispatcherServlet的设计。 Spring Web MVC处理请求的流程   具体执行步骤如下: 1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤; 2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个Model...
Java工程师-Distance 发布于 1天前 阅读 560 评论 2 点赞 1

Spark2.2.0 分布式离线搭建

1、Spark简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP lab (加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。 Spark 是一种与 Hadoop 相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使 Spark 在某些工作负载方面表现得更加优越,换句话说,Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。 Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。与 Hadoop 不同,Spark 和 Scala 能够紧密集成,其中的 Scala 可以像操作本地集合对象一样轻松地操作分布式数据集。 尽管创建 Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行。通过名为 Mesos 的第三方集群框架可以支持此行为。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, a...
Coder2018 发布于 1天前 阅读 140

Unity 大面积花草风吹动效果以及编辑

项目场景需求一个遍布鲜花的小岛,由于运行在手机上,所以对效率有一定的要求。 环境unity2017.3.f1,使用simpleLOD这个插件,方便做mesh合并,以及LOD处理 先放1张最终的效果图。 1.shader编写     先找来一个花的模型,贴图模型大致如下: shader采用双面渲染,VS阶段做一个顶点运动。大致思路是花越靠近地面的,摇晃幅度越小,反之幅度越大。这个高度可以用定点坐标来做,不过要兼容静态烘焙,或者地面不平等情况,无法获取准确高度。我这里采用UV的思路(美术保证草的根在贴图底部)。 代码如下 Shader "custom/2-sided_grass" {     Properties      {         _Color ("Main Color", Color) = (1,1,1,1)         _SpecColor ("Specular Color", Color) = (0.5, 0.5, 0.5, 0)         _Shininess ("Shininess", Range (0.01, 10)) = 0.078125         _MainTex ("Base (RGB) TransGloss (A)", 2D) = "white" {}         _BumpMap ("Normalmap", 2D) = "bump" {}         _Cutoff ("Alpha cutoff", Range(0,1)) = 0.5         _Direction("Direction",Vector) =(0,0,0,0) //运动的方向         _TimeScale(...
浮屠酱 发布于 1天前 阅读 145 点赞 2

微信小程序之获取并解密用户数据(获取openid,nickName等)

微信小程序之获取并解密用户数据(获取openid,nickName) 用户性别、所在城市、所在省份、所在国家、用户的语言
小帅帅丶 发布于 1天前 阅读 246 点赞 1

iOS使用VOIP与CallKit实现体验优质的网络通讯功能

4G时代为移动网络性能带来的极大的提升,通过网络进行音频视频通话更加方便。在iOS系统中,可以配合使用VOIP与CallKit框架进行创建体验优质的通讯效果。本篇博客主要介绍iOS系统中,VOIP与CallKit的应用。
珲少 发布于 1天前 阅读 67

关于 iOS 上的 PWA 应用,你需要知道些什么?

原文:Progressive Web Apps on iOS are here 作者:Maximiliano Firtman 在 iOS 11.3 版本中,苹果公司悄悄地增加了基于“渐进增强 Web 应用程序”(Progressive Web Apps,PWA)概念的新技术。本文带你看看 PWA 是如何工作的?它的能力和挑战是什么?以及如果你有已发布的 PWA 应用,那么你需要知道些什么。  这就是一个 PWA 应用,它能在 iPad 上全屏展示,并且具有离线功能,它也与 App Store 中的其它本地应用程序一样会出现在 iPad Dock 中 PWA 还没有一个确切的定义,总的来说,它是使用某种不需要打包或签名的 Web 技术创造出来的应用程序,可以离线运行,并且可以在运行的系统中选择性安装,它不论是从外观还是执行效果来看,都与一般应用程序无异。 PWA 应用在大多数平台上都不需要经过 App Store 流程,目前只有 Edge/Windows 10 强制 PAW 应用入驻商店。 也就是说在 iOS 平台上,你可以在没有 App Store 授权的情况下安装 PWA 应用。这可能是苹果公司一直没有向用户介绍这个新功能的原因之一,他们甚至都没有在 Safari 发布这个技术的公告,也许他们不想让用户产生疑惑。  你能指出 Google 地图原生应用和 PWA 版本的区别吗 谁创造了 PWA ? 其实,P...
编辑部的故事 发布于 1天前 阅读 101

linux下使用ffmpeg将amr转成mp3

接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下: 1. 首先安装系统编译环境  yum install -y automake autoconf libtool gcc gcc-c++  #CentOS 2. 编译所需源码包 #yasm:汇编器,新版本的ffmpeg增加了汇编代码 wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz tar -xzvf yasm-1.3.0.tar.gz cd yasm-1.3.0 ./configure make make install #lame:Mp3音频解码 wget http://jaist.dl.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz tar -xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure make make install #amr支持 wget http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-0.1.3.tar.gz tar -xzvf opencore-amr-0.1.3.tar.gz cd opencore-amr-0.1.3 ./configure make make install #amrnb支持 wget http://www.penguin.cz/~utx/ftp/amr/amrnb-11.0.0.0.tar.bz2 tar -xjvf amrnb-11.0.0.0.tar.bz2 cd amrnb-11.0.0.0 ./configure make...
huangxuan258 发布于 1天前 阅读 93

JVM垃圾收集器笔记整理

个人笔记,针对jvm垃圾收集器的知识点整理
Barrylo 发布于 1天前 阅读 331 点赞 2

如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

一个优质的微服务框架需要考虑的要素众多,在满足微服务设计理念的前提下,也是一个不断实践优化的过程。 本文讲述了整个 开源微服务框架 Apache ServiceComb 设计形成的前因后果,尝试从理念、思想和实践结合的维度剖析一个优质的微服务框架应该具备哪些要素,包括但不限于 对开发者友好、高性能、内外部扩展性等。 阅读本文有利于加深对微服务理念和框架的理解,给予微服务用户或开发者以帮助,这也是 Apache ServiceComb 的前身华为云微服务引擎的智慧结晶,从细节处承载了华为云自身多年云化转型的经验。
ServiceComb 发布于 2小时前 阅读 157

Elastic X-Pack 代码已公开并上线

几个小时前, Elastic 商业插件 X-Pack 的源代码已正式 Merge 进 Master,作为一家开源软件公司,能够将商业部分的代码也公开,实在是需要很大的勇气(我深感自豪),这一切都是为了更好的打造一个更加好用的产品:Elastic Stack,只有开放才能走的更远! 想了解更多关于 X-Pack 代码公开背后的介绍,可以看 Elastic 创始人 Shay 的这篇博客:[https://elasticsearch.cn/article/513](https://elasticsearch.cn/article/513) 相关代码已在 github 上面可以找到: [Elasticsearch](https://github.com/elastic/elasticsearch/tree/master/x-pack) [Kibana](https://github.com/elastic/kibana/tree/master/x-pack) [Logstash](https://github.com/elastic/logstash/tree/master/x-pack) [Beats](https://github.com/elastic/beats/tree/master/x-pack) 有关问题可以在此回复,我会一一解答。...
Medcl 发布于 13小时前 阅读 120 评论 1

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

这里输入引用文本由于项目中使用了minidao 1.5.1,hibernate的增删改查不需要书写sql语句的地方造成程序运行的时候出现了连接池泄露,数据库连接数一直在300以上。
andotorg 发布于 9小时前 阅读 98

学生管理系统(SSM简易版)总结

技术准备 为了完成这个项目,需要掌握如下技术: Java 基础知识 前端: HTML, CSS, JAVASCRIPT, JQUERY J2EE: Tomcat, Servlet, JSP, Filter 框架: Spring, Spring MVC, MyBatis, Spring 与 MyBatis 整合, SSM 整合 数据库: MySQL 开发工具: IDEA, Maven 开发流程 之前虽然已经使用 Servlet + JSP 完成了简单的开发,这次使用 SSM 仅仅是重构工作,但我们仍然按照商业项目的开发步骤来一步一步完成,进一步熟悉这个过程,重复的部分我就直接复制了。 ① 需求分析 首先要确定要做哪些功能 使用数据库来保存数据 能增删改查学生的信息(学号,名称,年龄,性别,出生日期) ② 表结构设计 根据需求,那么只需要一个 student 表就能够完成功能了。 创建数据库:student 将数据库编码格式设置为 UTF-8 ,便于存取中文数据 DROP DATABASE IF EXISTS student; CREATE DATABASE student DEFAULT CHARACTER SET utf8; 创建学生表:student 不用学生学号(studentID)作为主键的原因是:不方便操作,例如在更新数据的时候,同时也要更改学号,那这样的操作怎么办呢? 所以我们加了一个 id 用来唯一表示当前数据。 CREATE TABLE student( id int(11) NOT NULL AUTO_INCREMENT, ...
Java-老刘 发布于 10小时前 阅读 67 点赞 1

设计模式-观察者模式

### (一)引言 在设计模式中有个方法论:分析项目中变化部分与不变化部分。把变化部分抽离出来,封装成接口,实现接口对应的方法。 ### (二) 定义 观察者模式又叫做发布订阅模式。定义:对象之间多对一依赖的设计方案。 这里的一指的是:被依赖的对象也叫做subject对象。 多指的是:依赖的对象也称为observer 当subject的数据发生变化时observer会收到变化后的信息内容。 ### (三)组成 1. 抽离目标角色(subject) 目标角色知道它的观察者,可以有任意多个观察者同时观察一个目标角色。目标角色提供,注册、删除和通知观察者的功能。往往有抽象类或者接口来实现。 1. 抽离观察者角色 为那些在目标角色发生改变是需要获得通知的对象。提供一个数据更新接口获取subject变化后的数据信息。一般也是由抽象类或者接口实现。 ### (四)使用场景 最常见的一个场景是: 有一个微信公众号服务,不定时发布一些消息,关注这个公众号的的用户就可以接收到推送的信息。取消关注就接收不到推送的信息。 依此类似的场景,大家可以类推。 ### (五)具体代码实现 代码场景: 天气预报。国家气象中心(subject)发布当前的温度、湿度和气压的天气信息。 有两个observer 根据国家气象中...
zzjp 发布于 10小时前 阅读 56

nginx前后端分离

> 1. jdk和tomcat的安装在此就不作过多的讲解,可以百度查一下相关教程 > 2. 首先安装nginx的依赖库: > ``` yum -y installl gcc gcc-c++ autoconf automake ``` ``` yum -y install pcre pcre-devel ``` ``` yum -y install zlib zlib-devel ``` >3. 新建一个文件夹,下载解压nginx ``` mkdir /usr/my ``` ``` cd /usr/my ``` ``` wget http://nginx.org/download/nginx-1.14.0.tar.gz ``` ``` tar -zxvf nginx-1.14.0.tar.gz ``` > 4. 安装nginx ``` cd nginx-1.14.0 ``` ``` ./configure ``` ``` make && make install #当usr/local文件夹下出现nginx文件夹表明已经安装成功 ``` > 5. 切换到nginx的目录,配置一下nginx.conf。没有这个文件就创建一个新的 ``` cd /usr/local/nginx/conf ``` ``` # nginx.conf user nobody; worker_processes 2; events{ worker_connections 1024; } http{ include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 server{ listen 192.168.2.19:80; #配置成自己本机的ip地址和端口 server_name 192.168.2.19; access_log logs/server1.accesscombined; #定义服务器的默认网站根目录位置...
_Artisan 发布于 6小时前 阅读 49

YMP轻量级JAVA应用开发框架使用手册

YMP是一个非常简单、易用的一套轻量级JAVA应用开发框架,本文是将YMP框架各模块的特性、使用方法、实例代码等内容整合在一起,方便阅读。
有理想的鱼 发布于 1个月前 阅读 352 评论 1 点赞 1

Kotlin继承关系中构造函数形参修饰符(var val)的使用踩坑

最近刚刚接触Kt,, 昨天使用Kt的时候遇到构造函数中 val var 使用的一个问题,  虽然昨天功能完成了, 但是还是有些糊涂, 为避免以后再遇到此类问题导致浪费时间, 现把原理介绍一下. 需求: 有一个Child类是一个data类, 继承一个父亲类Parent , 从而在Child中公用父亲某些参数.  这在java中是很容易实现的, 但是在Kt中由于需要用到data类(后期需要做gson转换), 在处理构造函数遇到了问题 .   1. 刚开始, 我定义Parent是data类, 但是data类是final的, 所以没法被孩子继承, 失败 2.那只能定义Parent为class, Child 是data open class Parent(weight: Int, height: Int) data class Child(var grade: Int, var weight: Int, var height: Int) : Parent(weight, height) 这里有问题了 为什么父亲没有var val, 孩子有var val呢? 那能不能去掉吗?  当然data是不能去掉 var/val的, 去掉以后会报 data class must have only property (var/val) parameters 那Parent能不能加上var或者val呢? 通过转换为java代码看一下: 1.Base构造函数没有var val open class Base(num: Int) java public class Base { public Base(int num) { } } Base构造函...
SuShine 发布于 10小时前 阅读 36

shell特殊符号cut命令sort_wc_uniq命令 tee_tr_split命令 shell特殊符号下

cut sort wc uniq tee tr split命令 • cut 分割,-d 分隔符  -f 指定段号   -c 指定第几个字符 cut -d ":" -f 1 /etc/passwd 截取/etc/passwd文件中以:分割的第一段 cut -d ":" -f 2,4 /etc/paaswd 截取/etc/passwd文件中以:分割的第一段 cut -d ":" -f 1-3 /etc/passwd 截取/etc/passwd文件中以:分割的1到3段 head -n 3 /etc/passwd |cut -d":" -f 1 /etc/passwd 的前三行截图第一段 cut -c 6 /etc/passwd 提取每行的第六个字符 cut -c 1-8 /etc/passwd 提取每行的前八个字符 • sort 排序, -n 以数字排序 -r 反序  -u 去重复 -t 分隔符 -kn1/-kn1,n2 sort /etc/passwd sort不加任何选项,则从首字符向后,依次按ASCII码值进行比较, 最后将它们按升序输出。 head -n 5 /etc/passwd |sort -t: -k3 -n root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin -t后面跟分割符,-k后面跟数字,表示第几个区域的字符串排序,-n则表示使用纯数字排序。 head -n5 /etc/passwd | sort -t: -k3,5 -r lp:x:4:7:lp:/var/spool/lpd:/s...
laoba 发布于 11小时前 阅读 35

联想小新M7208W一体机扫描功能恢复

我知道,本博文这样的,在这个社区内很low。但是,万一有人急着要用呢?万一你的妹子要你帮她恢复这样一个功能呢?你能说,谁还用扫描呀?用手机拍得了。那你的高手风范一下都没了!其实,扫描量比较大的时候,小新扫描还是挺不错的。
大别阿郎 发布于 6小时前 阅读 34

技术与架构中语言章(2)之高级计算机语言详解

## 前言 > 为什么把高级计算机语言特别写一章节了。因为它有很多特性很多分类,有很多细节,有很多高级计算机语言。他很复杂。看鸟菜如何把这些分类,特性,细节,复杂的因素简单的一一道来 ## 分类 1. 面向对象与面向过程 2. 静态语言与动态语言 3. 解释与编译语言 4. 脚本语言 5. 专业语言 ## 脚本语言 想知道这个语言是不是脚本语言,很简单。只要能再命令行编码,并运行就好 ``` muqi@lenovo:~$ python Python 2.7.12 (default, Dec 4 2017, 14:50:18) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1+1 2 ``` 可以直接运行编码的文件 ``` if __name__ == '__main__': print(1+1) root@127.0.0.1://Test$ python test.py 2 ``` 反例 > java的编码文件是.java结尾。必须通过javac编译这个文件。生成.class文件。 ## 静态类型与动态类型,弱类型与强类型 > 类型是指变量的类型,或者方法返回的类型 #### 声明 > 是只类,方法,字段定义的地方,有那些特征。 ```java public static final transient Integer niaocai = 1; ``` 属性niaocai类型是Integer,并且初始化为1, 声明为 静态(static),不可变(f...
鸟菜啊 发布于 3周前 阅读 45

高可用负载均衡:开源PaaS Rainbond组件Rainbond-Entrance揭秘

负载均衡(Load Balancing)是开源PaaS Rainbond的亮点功能,主要由“软件定义负载均衡”Rainbond-Entrance控制器完成。 本文将围绕设计架构和实现介绍Rainbond-Entrance。 #### 为什么需要负载均衡 Rainbond内部网络划分支持多租户,每个租户都有一个私有的IP段,不同租户的网络相互不可见。当我们把一个容器化应用部署到Rainbond,Rainbond会为该容器分配一个内部IP,用于同一租户中不同应用在集群内部的通信,而集群外部无法直接访问,因此我们需要有一个集群入口控制器,以便用户可以方便地访问这些应用。 另外,Rainbond中部署的每个应用都可以有多个实例,即假设我们为一个WEB应用部署了三个实例,每个实例分担一部分流量,我们就需要这三个实例前增加负载均衡控制器来完成分发流量的工作。 除了上述的基本功能以外,负载均衡控制器还必须支持更多功能,例如: * 入口控制器能够根据数据包信息(如协议、端口号、主机名等)将请求转发给指定的应用 * 实时发现集群中应用的变化(如添加自定义域名、添加证书、添加端口等)并动态更新自身的转发规则 * 同时支持HTTP、TLS、TCP、UDP协议,因为有时不只WEB应用需要向外提供服条,RPC、MySQL等也需要对外开放 * 支持高可用...
好雨云帮 发布于 4小时前 阅读 22

基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

摘要:   数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台。   本次分享嘉宾是来自阿里云大数据的技术专家祎休   背景与总体思路   数据仓库是一个面向主题的、集成的、非易失的、反映历史变化的数据集合用于支持管理决策。 原文链接:http://click.aliyun.com/m/43803/ 数加大数据直播系列课程,主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题,分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台。   本次分享嘉宾是来自阿里云大数据的技术专家祎休!   背景与总体思路   数据仓库是一个面向主题的、集成的、非易失的、反映历史变化的数据集合,用于支持管理决策。其结构图如下所示:     随着大数据、云计算等技术的应用和普及,互联网环境下数据处理呈现出新的特征:业务变化快;数据来源多;系统耦合多;应用深度深。业务变化加快导致数据来源增多,以前的数据大多来自于应用系统数据库,基本为结构化数据,比如Oracle、MySQL等数据。现在的互联网环境下有了更多的数据,比如网站的点击日...
阿里云云栖社区 发布于 1个月前 阅读 30

Linux系统有啥好的,你们都去学?

“linux有啥好的,你们都去学?”,当时我是大一新生,总觉得系统的知识是需要时间的积累的,在看到周围一些同学整理用黑框框敲来瞧去,眼里只有两个字“装逼”。一个二个下课后竟然还去跟老师们讨论问题,我觉得这真的是纯粹装逼了。并且很开心他们依旧是黑框框,没有什么进展一样的。 我依旧是不慌不忙的整理所学的知识,在一点点进步,那个时候从高中进入大学也没有什么眼界,只知道好好学习,好好写作业,好好读书罢了。 随着一点点的进步,我逐渐了解了linux的强大,但不仅仅是因为这个系统,更多的是因为这个系统带来的新鲜感。大一下学期,我也抱着试一试的心态和曾经觉得挺装逼的同学们一起学习,然后我们达成一致想要搞点有意思的大事情。就这样,在老师的一步步带领下,我们参与校级创新创业训练计划项目“基于物联网的蔬菜大棚温湿度测量”项目,在开始不断地查资料需要什么知识,用到什么理论,到后来通过动手操作,竟然从传感器里读出我们期待的数值。这里不开我们团队的合作交流,更离不开这本书《linux就该这么学》。我想我这么说一点都不过分。这本书真的很不错。 刘遄老师用心三年,把最容易让我们接受的知识化为教材,我是根据这本书的内容进行学习的,从...
linuxprobe16 发布于 8小时前 阅读 16

技术与架构中语言章(1)之计算机语言方向解析

## 前言 > 鸟菜啊真是一个菜鸟,写该系列的第一节,也就这节。心里十分虚。因为鸟菜啊深入接触的只有高级语言。汇编语言只是简简单单玩了下,机器语言就更不用说了,只是在网络上看过,也只是看过,而且还不懂。但是为了给大家能深入理解计算及语言,找了很多资料,懂了点,厚着脸皮写。有不足之处,欢迎指出 计算机语言很多,按照发展来分类的话分为 机器语言,汇编语言,高级语言。本节解析这三个语言与计算机语言。这个是隐节。主要是为了第三节,做的铺垫。 > 现在鸟菜需要实现一个网络库 ## 机械语言 > 当计算机被创造出来的时候,机器语言就诞生了。读过计算机相关专业的人,接触过编程的人,长期接触网络等计算机方面的人。都会知道机器语言就是0与1组合成的。0与1是硬件最容易识别的状态。所以机械语言也被称职硬件语言。那机械语言到底是什么了,就是一种指令集的体系。 #### 什么是指令与指令集 ##### 深入理解 加法指令。 分析 1+ 2=? 大家会说这有什么分析的。不就是 > 一加二等于几吗? 这句解释是错误的。是因为一加一更加适合和方便人类思维与识别能力,并不是按照逻辑方式得出的答案。按照逻辑是 > 一 与 二 相加 等于 计算机不是人类,不会按照人类的逻辑...
鸟菜啊 发布于 3周前 阅读 79

vue input file 多次上传不触发change事件问题

问题描述 页面用到上传图片,我使用input file,但当我选择一个图片后,再次点击input选择一个图片后,无反应 网上查了下,说是要清空input的value值,下次才会触发change事件, 我试了 ===> 无果 说替换原来的input元素,重新渲染input元素, 我试了 ===> 无果 说,把input放到一个form表单里,在input change事件回调时候,将表单reset 我试了 ===> 无果 最后的最后,在我绝望的时候,看见了一丝曙光,一位网友说change事件没绑定上 我试了 ===> 呀哈哈哈哈哈哈bingo了 总结: 替换input元素,重新渲染,之后绑定change事件函数 参考链接https://www.cnblogs.com/exhuasted/p/6185874.html  
littleFaye 发布于 6小时前 阅读 14

CentOS 7.4 安装 MySQL 5.6.40 完美教程

CentOS 7.4 安装 MySQL 5.6.40 完美教程
万事通 发布于 5小时前 阅读 13

JVM的分析工具

常用的JVM命令
GITTODO 发布于 21小时前 阅读 13

以太坊智能合约示例

目前的智能合约基本都是运行在以太坊上。本文将通过一个简单而具体的智能合约实例来帮助大家理解智能合约的编写、部署与调用。这个例子很简单,但通过它你可以了解开发一个以太坊的智能合约的完整过程。 在之后的教程中,我们将结合不同的场景案例,分别举出不同的例子例如投票、众筹、拍卖、ERC20/ERC721代币发行等,并实现相应的solidity示例代码。我们希望你能在实践中逐步理解学习智能合约的开发语言solidity,理解智能合约的运行原理,并掌握必要的以太坊智能合约编程技能。 > 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: >- [以太坊DApp实战开发入门](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=oschina7878) >- [去中心化电商DApp实战开发](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=oschina7878) ## 开发语言和开发环境选择 目前智能合约最受欢迎的编程语言为Solidity,但是并不只有Solidity。作为初学者,编写Solidity代码,我们可以使用Remix,它是一个基于浏览器的Soldity IDE,网址为:http://remix.ethereum.org/ 。Remix支持编写、测试和部署智能合约。 ## 编写代码 学一门语言的...
汇智网教程 发布于 20小时前 阅读 13

全球唯一:MySQL社区2018年度公司贡献奖颁给阿里云

摘要: 在刚刚的Percona Live开源数据库大会上,MySQL社区委员会宣布将2018年度的MySQL社区公司贡献奖(Corporate Contributor Award)唯一颁给阿里云。     图中右一为阿里云数据库RDS团队 彭立勋   MySQL社区颁发次奖项是为了感谢阿里云多年持续不断的给社区贡献Patch和Idea,不断的帮助官方和社区提升MySQL,以及开源AliSQL和配套的AliXtrabackup备份工具,和投资MariaDB保护MySQL开源生态。这是MySQL Community Awards自2005年创立以来第一次颁给中国公司。   下面的Patch和Idea可能你早已听闻,或者正在阿里云RDS上解决着你的业务需求:   1. 多源复制(Multiple Source Replication)   多源复制是在 MySQL 基于 Binary Log 单向一对多复制的基础上,实现了节点之间的多对多的复制,使数据可以在多个节点上自由聚合和拆分。   这个功能被官方收录,在 MySQL 5.7.6 版本上正式发布。   2. FlashBack   FlashBack 实现了基于 Binary Log 的自定义逻辑回滚,以轻松应对在 MySQL 上的误操作,降低运维风险。   FlashBack 可以在 Aliyun RDS MySQL 公有云上使用,并在社区版本 MariaDB 10.3 中发布。   3. Sequence   Sequence 对象是 AliSQL 特有的提供简单获...
猫耳m 发布于 9小时前 阅读 12

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

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

开源众包优质开发商计划。坐享100万很easy!

只要你有心,100万等着你
开源中国众包平台 发布于 5天前 阅读 1850 评论 6

使用Remix编译和部署以太坊智能合约

![以太坊remix汇智网](https://static.oschina.net/uploads/img/201804/20113835_7UHh.png "以太坊remix汇智网") Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。 本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能。 详细描述使用 Remix 的步骤及使用上可能碰到的问题。 之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜。这次重新开始,从最基础开始,一步步学习。 ### 开发环境 不需要安裝,直接在任何浏览器启动 Remix。 ![以太坊remix汇智网](https://static.oschina.net/uploads/img/201804/20113913_wFJy.png "以太坊remix汇智网") ### 取得代币合约 代币合约的范例很多,Ethereum 官网有提供一个最小可执行的代币合约(MINIMUM VIABLE TOKEN): ``` pragma solidity ^0.4.0; contract MyToken { /* This creates an array with all balances */ mapping (address => uint256) public balanceOf; /* Initializes contract with initial supply ...
笔阁 发布于 5天前 阅读 1092 评论 2 点赞 2

完整微服务化示例:使用 Apache ServiceComb (incubating) 进行微服务开发、容器化、弹性伸缩

最完整的微服务化示例,从业务场景入手,讲述微服务化架构设计、容器化、集群部署、弹性伸缩
ServiceComb 发布于 5天前 阅读 2521 评论 8 点赞 1 打赏 1

SpringBoot+Docker+Git+Jenkins实现简易的持续集成和持续部署

努力了这么久,但凡有点儿天赋,也该有些成功的迹象了。
郑龙飞 发布于 3天前 阅读 923 评论 5 点赞 1

京东首席架构师:618大促网关承载十亿调用量背后的架构实践

618大促,我们的网关承载了几十亿的流量和调用,在这种情况下,网关系统必须保证整个系统的稳定性和高可用,保证高性能和可靠,以支撑业务。我们面临的是一个非常复杂的问题,基于这种复杂问题,怎样做到很好地提高它的性能和稳定性、复杂技术之间怎么整合保证整体网关的高可用,是本文的重点。 一、网关涵盖技术 1.1 网关系统 网关系统主要有两种: 第一种叫客户端网关主要用来接收一些客户端的请求,也就是APP的服务端; 第二种叫开放网关,主要是公司(比如京东)对于第三方合作伙伴提供接口。 这两种不同网关所使用的技术非常类似。 流量比较大的网关面临的难点包括: 第一,网关系统需要扛几十亿的流量调用,接口的平稳运行、每一个接口在后端服务之后的性能耗损都非常重要。比如我们使用了一个Redis集群,然后构建了两个机房,每一个机房都搭建了一个Redis集群,这样的话就能够很好地保证高可用。在面对一个瞬间流量的时候,我们采用了一些缓存技术,或者更前置的Nginx+lua+Redis技术,让这种大流量应用能够脱离开JVM的依赖。还有我们需要梳理各个接口,通过降级的策略把一些弱依赖的接口进行降级,从而保证核心应用的可用。 第二,网关系统其实就是一个把Http请求拓...
高级架构师 发布于 3天前 阅读 1582 评论 1

JHipster修改JDL中的entity

## 更新model #### 需求 ``` 概览表增加"创建时间,修改时间,软删除" ``` #### 以往的方式 ###### 1. 修改model.jh, 在实体 Overview 中增加三个属性 ``` /** * 数据概览 -- 概览 */ entity Overview { id Long, ... /* 以下属性为新增的属性 */ /* 创建时间 */ createTime ZonedDateTime, /* 更新时间 */ updateTime ZonedDateTime, /* 是否删除 */ delFlag Boolean, } ``` ###### 2. 生成配置文件 ``` jhipster import-jdl model.jh ``` ###### 3. 运行项目使配置生效 ``` 运行项目时提示"Validation Failed",原因是配置文件的MD5值不同, 此时需要以下操作 1. 修改 DATABASECHANGELOG 表中相关记录的 MD5SUM 2. 在overview表中手动新增三个属性. ``` #### 现在的方式 ###### 1. 修改model.h, 在实体 Overview 中增加三个属性 ###### 2. 生成配置文件 ###### 3. 修改生成的配置文件 ``` src/main/resources/config/liquibase/changelog/20180302095615_added_entity_Overview.xml 将 changeSet中新增的三个column提取至新的changeSet中, 如下: 注意: changeSet的id不能与之前的相同 ``` ###### 4. 运行项目使配置生效 ``` 不需要手动修改MySQL,自动生效 ```...
tianshl 发布于 2个月前 阅读 23622

Java中的OneToMany

### 写在开头 ``` 使用jhipster声明的OneToMany在One的一方DTO中是没有与Many的DTO的映射关系的, 为了在One的一方DTO中使用Many的DTO, 使用以下三步解决此问题。 ``` ### 步骤 ``` 1. OneDTO 中的"mark 1"处为自己写的一对多的关系, 此处变量名称不能与实体One中相应的变量名称一致,否则编译失败。 2. OneMapper 中的"mark 2"处 uses属性添加ManyMapper。 2. OneMapper 中的"mark 3"处使用@Mapping注解声明 Entity 转 DTO 的映射关系。 ``` ### Entity ``` @Entity @Table(name = "one") public class One { ... @OneToMany(mappedBy = "one") private Set manys = new HashSet<>(); ... public void setManys(Set manys) { this.manys = manys; } public Set getManys() { return manys; } } @Entity @Table(name = "many") public class Many { ... @ManyToOne private One one; } ``` ### DTO ``` public class OneDTO { ... // mark 1 private Set manyDTOS = new HashSet<>(); ... public void setManyDTOS(Set manyDTOS) { this.manyDTOS = manyDTOS; } public Set getManyDTOS() { return manyDTOS; } } public class ManyDTO { ... private Long oneId; ... public...
tianshl 发布于 3个月前 阅读 34739

Postman自动登录,请求带token

![这里写图片描述](http://img.blog.csdn.net/20180323182705200?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) ![这里写图片描述](http://img.blog.csdn.net/20180323182719115?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveGlhb2J1ZGluZzAwNw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) #### 添加一个环境 ``` Manage Environments(右上角的齿轮) => Add => 填写环境的名称 => Add ``` #### 添加登录接口 ``` # 比正常的请求多设置一下 "Tests" # 将登录接口返回的response中的token加入环境变量, 如: pm.environment.set("token", JSON.parse(responseBody).data.authorization); ``` #### 添加一个集合 ``` 1. New collection (左侧 目录) 2. 填写名称,如:"需要token的请求" 3. 切换到选项卡"Authorization" 4. 选择相应的 TYPE 5. Token 中填写 {{token}} 6. 点击Create 创建集合 ``` #### 添加需要token的请求 ``` 在刚创建的集合中添加的请求, Headers中都会自动添加 token, 如果token失效, 重新请求一下登录接口即可...
tianshl 发布于 1个月前 阅读 14220

Maven项目一键部署

### 免登陆 ``` # 生成秘钥 tianshl:.ssh tianshl$ ssh-keygen -t rsa -P '' # 将公钥添加至服务器的authorized_keys中 tianshl:.ssh tianshl$ ssh-copy-id -i ./id_rsa.pub root@192.168.1.54 ``` ### 创建脚本 ``` # 项目根目录下创建脚本,名为:update.sh, 内容如下 #!/usr/bin/env bash # 更新 git pull # 打包 mvn clean package -Dmaven.test.skip=true # 上传 scp target/etl-0.0.1-SNAPSHOT.war root@192.168.1.54:/root/ # 删除原日志 | 终止服务 | 启动服务 | 查看启动日志 ssh root@192.168.1.54 "rm etl.log; ps -ef | grep etl | awk '{print $2}' | xargs kill -9; nohup ./etl-0.0.1-SNAPSHOT.war > etl.log 2>&1 &; tail -f etl.log" ``` ### 配置IDE ``` Run / Edit Configurations... / "+" / Bash 1. Name 填写 2. Script 选择 update.sh 3. Working directory 选择 项目根目录 ```...
tianshl 发布于 1个月前 阅读 15533

Packet for query is too large

### 前言 ##### max_allowed_packet ``` mysql根据max_allowed_packet限制server接收数据包的大小, 数据量超过这个限制时会导致写入或更新失败. ``` ##### 查看当前限制 ``` show VARIABLES like '%max_allowed_packet%'; ``` ### 修改 ``` 以下提供两种修改方式 ``` ##### 1. 修改配置文件 ``` # 查看配置文件路径 mysql --help | grep my.cnf # 修改 vim /etc/my.cnf 在[mysqld]段增加或修改以下内容: max_allowed_packet = 5M # 重启mysql service mysql restart ``` ##### 2. 命令行修改 ``` # 登录mysql mysql -u root -p # 运行指令 set global max_allowed_packet = 5*1024*1024 # 如果上条命令无效: # set @@max_allowed_packet=5*1024*1024 # 重启mysql service mysql restart # ubuntu service mysqld restart # centos ```...
tianshl 发布于 1周前 阅读 3952

Java下载CSV文件

```java @GetMapping("/download") public void download(HttpServletResponse response, @RequestParam String path) throws Exception { // 让servlet用UTF-8转码,默认为ISO8859 response.setCharacterEncoding("UTF-8"); File file = new File(path); if (!file.exists()) { // 让浏览器用UTF-8解析数据 response.setHeader("Content-type", "text/html;charset=UTF-8"); response.getWriter().write("文件不存在或已过期,请重新生成"); return; } String fileName = URLEncoder.encode(path.substring(path.lastIndexOf("/") + 1), "UTF-8"); response.setContentType("text/csv"); response.setHeader("Content-Disposition", String.format("attachment; filename=\"%s\"", fileName)); InputStream is = null; OutputStream os = null; try { is = new FileInputStream(path); byte[] buffer = new byte[1024]; os = response.getOutputStream(); int len; while((len = is.read(buffer)) > 0) { os.write(buffer,0, len); } }catch(Exception e) { throw new RuntimeException(e); }finally { try { if (is != null) is.close(); if (os != null) os.close(); } c...
tianshl 发布于 2周前 阅读 5772

天了噜,Java 8 要停止维护了!

前些天的中兴事件,已经让国人意识到自己核心技术的不足,这次的 JDK 8 对企业停止免费更新更是雪上加霜。。 以下是 Oracle 官网提示的 JDK8 终止更新公告。 ![image](http://upload-images.jianshu.io/upload_images/5954965-6b071671115f961d.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) > 原文内容:Oracle will not post further updates of Java SE 8 to its public download sites for commercial use after January 2019\. Customers who need continued access to critical bug fixes and security fixes as well as general maintenance for Java SE 8 or previous versions can get long term support through Oracle Java SE Advanced, Oracle Java SE Advanced Desktop, or Oracle Java SE Suite. For more information, and details on how to receive longer term support for Oracle JDK 8, please see the Oracle **翻译** 2019年1月之后,Oracle将不会在其网站上发布Java SE 8商业使用的进一步更新下载。那些需要持续获取安全的bug修复和安全补丁以及Java SE 8或以前版本的稳定性支持可以通过Oracle Java SE高级版,Oracle Java SE高级桌面...
Java技术栈 发布于 3天前 阅读 4147 评论 22

2个小bug,有点小门道

这是之前解决的2个小bug,在此记录下。
温安适 发布于 3天前 阅读 528 评论 6 点赞 6

前后端对接的思考及总结

# 前后端对接的思考及总结 ## 说在前面的话 随着前端NodeJs技术的火爆,现在的前端已经非以前传统意义上的前端了,各种前端框架(Vue、React、Angular......)井喷式发展,配合NodeJs服务端渲染引擎,目前前端能完成的工作不仅仅局限于CSS,JS等方面,很多系统的业务逻辑都可以放在前端来完成,例如我司的**管控** 那可能有些人会说,前端这么火,NodeJs发展这么迅猛,后端是不是以后都没事情干了,其实不然,拿Java来说,经过这么多年发展,已经相当稳定,完善的生态圈也非最近今年发展起来的NodeJs可比,我们常常说**闻道有先后,术业有专攻**,用在这里最合适不过了,**集群**、**分布式**、**高可用**等等技术还是需要后端架构师来思考的事情 目前前端同后端的合作方式是前后端分离,通过Nginx+Tomcat的组合部署(还可加nodejs中间件)方式能有效的进行解耦,并且前后端分离为项目以后的架构扩展、微服务化、组件化都打下重要基础,所以这在以后是一个发展的必然趋势,我们需要去适应,做出改变!!! ## 早期的开发方式 早期的开发方式如下图: ![输入图片说明](https://static.oschina.net/uploads/img/201804/22110916_716x.png "在这里输入图片标题") 这也是我前面工作1-3年的开发方式...
八一菜刀 发布于 3天前 阅读 369

我的“并发编程十五年”,架构师进阶之路②

昨天编辑完已经很晚了,今天继续分享我的“并发编程15年”,前面没有看到的可以进我的主页观看。 上篇文章写到我为什么不停下来 这是一个合理的问题。 一个非常强大的系统依据上述内容就可以构建,或者我应该说,多年来经历系统上的冲击,上述基础经受住了时间的考验,并经历了比下一步(语法周边)更少的变化 。 我觉得这时可以离开了。 事实上,依据完美的后见之明,我相信停在这里将是一个合理的故事第一个版本。 然而,还有很多事情需要我们继续向前: 子进程没有并行性。 值得注意的是现在还缺乏任务和数据的并行性。 这对于构建.NET的任务和 PLINQ编程模型的人来说是痛苦的。 很多场景有潜在的并行性只是等待被发现,例如图像解码,多媒体管道,FRP渲染堆栈,浏览器,最终语音识别等等。 Midori的一个顶级目标是解决并发难题,尽管很多并行化是为了进程的“自由”,没有任务和数据并行性会使之受到损害。 进程之间的所有消息都需要RPC数据调度,因此无法共享对象。 缺少任务并行性的一个解决方案可能是将所有事物抽象为进程。 需要任务? 那就创建一个进程。 在Midori,他们有充足的条件完成这个工作。 然而,这样做需要调度数据。 这不仅是一个成本高昂的操作,而且...
高级架构师 发布于 5天前 阅读 355

简易html视频播放器

### 文件列表 ``` root@tianshl:/data/video# ls hch.mp4 test.mp4 xyx.mp4 index.html video.list jquery.js ``` ###### index.html ```html 视频列表 ``` ###### video.list ``` # 该目录下的所有MP4文件, 供jQuery解析 root@tianshl:/data/video# ls *.mp4 > video.list ``` ### nginx配置 ``` user root; worker_processes 1; events { worker_connections 1024; } http { include mime.types; sendfile on; keepalive_timeout 65; server { listen 8000; server_name 本机IP; location / { # 前两行是认证(可不加) auth_basic "secret"; auth_basic_user_file /usr/local/nginx/passwd.db; # 路径 root /data/video; # 首页 index index.html; } } } ``` ### 界面展示 ``` http://localhost:8000 ``` ###### 认证 ![这里写图片描述](https://img-blog.csdn.net/20180423110432301?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) ###### 播放器 ![这里写图片描述](https://img-blog.csdn.net/20180423105900537?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9idWRpbmcwMDc=/f...
tianshl 发布于 2天前 阅读 1090

JeeSite 4.0 开发环境部署运行调试(Eclipse)

# 环境要求 1、Java SDK 1.8 [下载](http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk8-downloads-2133151-zhs.html) 2、Eclipse IDE for Java EE Mars 2 (4.5.2) [下载](https://www.eclipse.org/downloads/packages/eclipse-ide-java-ee-developers/mars2) 3、Apache Maven 3.3+ [下载](https://maven.apache.org/download.cgi) 4、MySql 5.7+ [下载](https://dev.mysql.com/downloads/windows/installer/5.7.html) # 导入到Eclipse 1、检出JeeSite4源代码: ``` git clone https://gitee.com/thinkgem/jeesite4.git ``` 2、拷贝`web`文件夹,到你的工作目录(不包含中文和空格的目录)下,重命名为你的工程名,如:`jeesite-demo` 3、打开`pom.xml`文件,修改第13行,artifactId为你的工程名,如:`jeesite-demo` 4、导入到Eclipse,菜单 File -> Import,然后选择 Maven -> Existing Maven Projects,点击 Next> 按钮,选择第2步的`jeesite-demo`文件夹,然后点击 Finish 按钮,即可成功导入 5、这时,Eclipse会自动加载Maven依赖包,初次加载会比较慢(根据自身网络情况而定),若工程上有小叉号,请打开Problems窗口,查看具体错误内容,直到无错误为...
ThinkGem 发布于 2个月前 阅读 14860 评论 36 点赞 8

深入理解 Java 多线程核心知识:跳槽面试必备

多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲。在平时工作中如若使用不当会出现数据错乱、执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关重要。 本文从基础概念开始到最后的并发模型由浅入深,讲解下线程方面的知识。 概念梳理 本节我将带大家了解多线程中几大基础概念。 并发与并行 并行,表示两个线程同时做事情。 并发,表示一会做这个事情,一会做另一个事情,存在着调度。单核 CPU 不可能存在并行(微观上)。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用。但是每一次,只能有一个线程使用它,一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。 阻塞与非阻塞 阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其它所有需要这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。 此时,如果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。阻塞是指线程在操作系统层面被挂起。阻塞一般性能不好,需大约8万个时钟周期来做调度。 非阻塞则允许多个线程...
Java工程师-Distance 发布于 1周前 阅读 1464 评论 2 点赞 4

ElasticSearch笔记系列(8)——简单查询、条件查询、聚合查询

ES的查询方式可以分为三类: 简单查询 条件查询 聚合查询   数据准备 我们先按照前几篇介绍的插入文档的方法准备一些实验数据,然后再来演示如何实现各类查询。 我们在我们之前创建的rent索引的community类型下面加入如下文档信息。 回忆一下:当时创建的索引及类型如下: { "settings":{ "number_of_shards":3, "number_of_replicas":1 }, "mappings":{ "community":{ "properties":{ "communityname":{ "type":"text" }, "city":{ "type":"keyword" }, "age":{ "type":"integer" }, "creationdate":{ "type":"date", "format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } } }, "shop":{ } } } 回过头来,我们现在插入一些文档进去。插入的ES的API:http://localhost:9200/rent/community/ 所有文档的插入请求体如下:你可以把这些数据插入到你的ES中,然后try后续的各种查询。 { "communityname":"万科阳光苑", "city":"上海", "age":10, "creationdate":"2008-01-01 00:00:00" } { "communityname":"万科朗润园", "city":"上海", "age":12, "creationdate":"2006...
HappyBKs 发布于 5天前 阅读 241

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 4403 评论 14 点赞 22

图书管理系统(源码)

本文demo下载地址:http://www.wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=1070 实例使用java语言实现了一个网页版的图片管理系统, 系统前端使用bootstrap技术,可以进行浏览器适配, 实现功能: 管理图书管书, 管理图书借还信息,图表显示书籍信息 项目对应的实例代码可以通过右侧【下载实例】按钮获取 开发工具: MyEclipse10, JDK1.7, Tomcat7, MySql5.5.60 【项目包含内容】(见下图): 【library】 Java源码 【sql】 数据脚本 实例功能】 1. 登录页面登录功能, 输入用户名与密码, 勾号保存密码 2. 报表显示书籍分类相应的书本数量, 本周排行榜 3. 图片管理功能: 新增图片,图片维护 4. 借书与还书 5. 查询书籍: 书籍模糊查询, 已借出书籍, 库存书籍 【实例效果图】 访问登录页面: http://localhost:8080/library/JSP/Login.jsp 【实例配置】 1. 将代码对应的sql脚本导入到mysql数据库 2. 引用lib中相应jar包,要不然编译报错 3. 更改代码 DBUtil.java中的数据源配置信息...
智慧点点 发布于 6分钟前 阅读 1

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

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

Java 集合体系 概览2

   
晨猫 发布于 7分钟前 阅读 1

activiti-serviceTask(服务任务)

Activiti服务任务(serviceTask) Activiti服务任务(serviceTask) 作者:邓家海 都有一段沉默的时间,等待厚积薄发 应用场景: 当客户有这么一个需求:下一个任务我需要自动执行一些操作,并且这个节点不需要任何的人工干涉,也就是说这个节点是自动化的。那么,这个当前面一个经办人员把任务发送下去的时候,自然而然的下一个节点就会开始马上执行。这个时候。我们就需要使用Activiti工作流的ServiceTask任务。   ServiceTask任务的实现,其实不复杂。   实现步骤: (1)设计流程 (2)编写委托类 (3)把委托类设置到流程的监听类上面   设计流程:       编写委托类:   1 package light.mvc.workflow.serviceTask; 2 3 4 5 import org.activiti.engine.delegate.DelegateExecution; 6 7 import org.activiti.engine.delegate.Expression; 8 9 import org.activiti.engine.delegate.JavaDelegate; 10 11 12 13 /** 14 15 * 16 17 * 项目名称:lightmvc 18 19 * 类名称:ServiceTask 20 21 * 类描述: 22 23 * 创建人:邓家海 24 25 * 创建时间:2017年6月4日 下午6:18:11 26 27 * 修改人:deng 28 29 * ...
方宏春 发布于 12分钟前 阅读 1

十八周一次课

十八周一次课 20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数 20.27 分发系统介绍 分发系统介绍 分发系统-expect讲解(也就是一个分发的脚本) 场景: 业务越来越大,网站app,后端,编程语言是php,所以就需要配置lamp或者lnmp,最好还需要吧代码上传到服务器上;但是因为业务增加,代码增加,多台机器,就会非常麻烦;这是只需要一个分发系统,就可以把每次更新的代码发布到需要更新的服务器上 expect,是一种脚本语言;通过他可以实现传输,输入命令(上线代码) 首先要准备一台模板机器,机器的IP,对应用户的密码,通过rsync同步代码,还可以通过expect去执行某些命令 20.28 expect脚本远程登录 expect脚本远程登录 yum install -y expect 自动远程登录 [root@aminglinux-02 sbin]# vim 1.expect #! /usr/bin/expect set host "192.168.133.132" set passwd "123456" spawn ssh root@$host expect { "yes/no" { send "yes\r"; exp_continue} // "password:" { send "$passwd\r" } } interact //脚本结束 在expect 定义变量,用set 这个文件是就保证登录信息的,清空的话,重新远程登录ssh 会有提示 ...
河图再现 发布于 16分钟前 阅读 1

MySQL数据库 添加用户、删除用户与授权

1、安装mysql数据库 2、登录mysql $ mysql -uroot -proot 3、创建用户 mysql> CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 例: mysql> CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456'; mysql> CREATE USER 'dog2'@'localhost' IDENTIFIED BY ''; PS: username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录,如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录;也可以指定某台机器可以远程登录; password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。 4、授权 mysql> GRANT privileges ON databasename.tablename TO 'username'@'host' 例: mysql> GRANT SELECT, INSERT ON mq.* TO 'dog'@'localhost'; PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.; databasename - 数据库名, tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*. 5、创建用户同时授权 mysql> grant all privileg...
haoyuehong 发布于 30分钟前 阅读 1

第五章 第一节 spring-connet之environment

### 前言 > environment模块是大家都极少能用到,但是还是会被用的基础模块。把Environment当做一个map就好,可以从里面获得配置。这节让鸟菜啊写得苍白无力。太简单,用得少,还是要解读 ### 源码解读 ![输入图片说明](https://static.oschina.net/uploads/img/201804/25200002_uM4O.png "在这里输入图片标题") #### Environment ```java public interface Environment extends PropertyResolver { // 得到活跃的配置信息 String[] getActiveProfiles(); // 得到默认的配置信息 String[] getDefaultProfiles(); // 判断活跃配置中是否有这些配置,一个配对,就返回true boolean acceptsProfiles(String... profiles); } ``` 实现代码 ```java @Override public String[] getActiveProfiles() { return StringUtils.toStringArray(doGetActiveProfiles()); } protected Set doGetActiveProfiles() { synchronized (this.activeProfiles) { // 如果没有活跃的配置 if (this.activeProfiles.isEmpty()) { // 获得默认配置,默认情况下是没有默认配置的,需要通过getPropertySources设置才行 String profiles = getProperty(ACTIVE_PROFILES_PROPERTY_NAME); if (StringUtils....
鸟菜啊 发布于 34分钟前 阅读 1

Openlayers4中实现动态线效果

概述: 本文讲述如何结合canvas在Openlayers4中实现动态线的效果。   效果:   代码: 1、move-line扩展   [javascript] view plain copy (function (global, factory) {       typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :           typeof define === 'function' && define.amd ? define(factory) :               (global.MoveLine = factory());   }(this, (function () { 'use strict';          /**       * @author https://github.com/chengquan223       * @Date 2017-02-27       * */       function CanvasLayer(options) {           this.options = options || {};           this.paneName = this.options.paneName || 'labelPane';           this.zIndex = this.options.zIndex || 0;           this._map = options.map;           this._lastDrawTime = null;           this.show();       }  ...
会哭的鳄鱼 发布于 1小时前 阅读 2

论双1的重要性

前言 双1是什么? 即:参数 innodb_flush_log_at_trx_commit 和sync_binlog均设置为1。 接下来,先看由该参数引起的一个案例。 案例 场景: mysql 故障宕机,查看binlog的最后一个事务,如下: '/*!*/; ### INSERT INTO `guolm`.`t1` ### SET ### @1=806527 /* INT meta=0 nullable=0 is_null=0 */ ### @2='n806527' /* VARSTRING(80) meta=80 nullable=1 is_null=0 */ # at 6822647 #180425 18:00:49 server id 6451 end_log_pos 6822678 CRC32 0x05e6ff87 Xid = 1175295 COMMIT/*!*/; 在启动mysql之后,查看最后一个事务在表中不存在: mysql> select * from guolm.t1 where id=806527; Empty set (0.00 sec) 原因: innodb_flush_log_at_trx_commit = 0 可能在mysql突然宕机时,脏页没有来得及刷新到磁盘,而因为该参数设置的不是及时将redo log刷新到磁盘,所以有一部分redo log没有保存到磁盘, 故在mysql启动时,由于丢失了部分redo log,并且脏页部分没有刷到磁盘,因此丢失了那些已经提交的事务。 思考 在遇到意外宕机时: 若 innodb_flush_log_at_trx_commit 设置的是0: 将不能够及时的将redo log 刷新到磁盘。 若意外宕机,redo log没有刷到盘里,在启动...
star_glm 发布于 1小时前 阅读 2

YCSB分布式压测hbase

### 1 下载YCSB ``` curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.12.0/ycsb-0.12.0.tar.gz tar xfvz ycsb-0.12.0.tar.gz cd ycsb-0.12.0 ``` 提供的已编译好的版本支持hbase1.0,如果hbase版本高于1.0,需要自己手动编译 ### 2 运行压测 本次压测的hbase版本是1.0.0 #### (1) 配置ycsb - 在hbase10-binding目录下新建conf目录,然后将hbase的hbase-site.xml拷贝进来 #### (2) 创建压测表 ``` disable 'usertable' drop 'usertable' create 'usertable', 'family', {SPLITS => (1..n_splits).map {|i| "user#{1000+i*(9999-1000)/n_splits}"}} ---n_splits=(10 * number of regionservers) ``` - 建表时需要预分区 #### (3) 加载数据 ``` bin/ycsb load hbase10 -P workloads/workloada -p table=usertable -p columnfamily=family -p threads=1000 -p recordcount=200000000 -s > logs/load.log ``` > load 表示这是一次加载数据操作 > hbase10指明了所用的数据库类型 > threads=100 配置并发线程个数 > -P指明了所用的配置文件的路径 > -p 可以显示修改YCSB内置的默认配置,例如这里配置recordcount=20000000来覆盖之前说过的...
淺陌离殇 发布于 2小时前 阅读 2

Chromre下载音频文件,而不是打开播放

项目中遇到一个问题,存放在七牛云的文件,在chrome中点击a标签下载文件。
kidou 发布于 2小时前 阅读 1

js数组中forEach/some/every/map/filter/reduce的区别

```javascript // js数组中forEach/some/every/map/filter/reduce的区别 // 1. foreach:就是一个循环 [20, 30, 40, 50].forEach(item => console.log(item)); // 结果:20 30 40 50 // 2. some: 检查数组中是否有满足条件的,只要有一个返回true,即返回true var someArr = [1, 2, 3, 4, 5, 100]; console.log(someArr.some(item => item > 50)); // 结果: true // 3.every: 检查数组中所有元素,如果有一个返回false,即返回false var everyArr = [-1, -2, -3, -4, 5]; console.log(everyArr.every(item => item < 0)); // 结果: false // 4.map: 对每一个元素作一次处理,最后返回处理的结果。 var mapArr = [1, 2, 3, 4, 5]; console.log(mapArr.map(item => item * item)); // 结果:[ 1, 4, 9, 16, 25 ] // 5.filter :对每一个元素作一次处理,返回符合条件的数据。 var filterArr = [5, 10, 3, 9, 2]; console.log(filterArr.filter(item => item % 5 == 0)); // 结果: [5, 10] // 6. reduce: 对每一个元素按顺序累计处理,返回最终的结果。第二个参数为初始化值,没有则设为0。 var reduceArr = [1, 2, 3, 4, 5, 6]; var res1 = reduceArr.reduce((a, b) => a ...
chinahufei 发布于 2小时前 阅读 1

精通Java设计模式从初见到相爱之命令设计模式(15)

1、概念 2、项目中应用场景 3、代码简单举例
木九天 发布于 2小时前 阅读 3

项目执行mvn install 失败

OR] Failed to execute goal org.codehaus.mojo:aspectj-maven-plugin:1.7:compile (default) on project pg-param-sdk: AJC compiler errors: [ERROR] error at (no source information available) [ERROR] D:\api\epp-pg\pg\pg-param-sdk\src\main\java\net\engining\pg\param\sdk\ThreadContextHolder.java:0::0 Internal compiler error: org.aspectj.org.eclipse.jdt.internal.compiler.problem.AbortCompilation: Pb(324) The type javax.validation.constraints.Pattern$Flag cannot be resolved. It is indirectly referenced from required .class files at org.aspectj.org.eclipse.jdt.internal.compiler.problem.ProblemHandler.handle(ProblemHandler.java:143) [ERROR] -> [Help 1] [ERROR]  [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging.   =================================== 项目执行mvn install 失败 加入如下字段  项目正常 运行  xiang <dependency>               <groupId>javax.validation</groupId>        ...
鬼才王 发布于 2小时前 阅读 3

多线程

多线程 package day01.thread; import java.util.concurrent.*; public class TestCachedThreadPool { public static void main(String[] args) { ExecutorService executorService = Executors.newFixedThreadPool(5); CountDownLatch countDownLatch = new CountDownLatch(10); for (int i = 0; i < 10; i++) { Future future = executorService.submit(new TestRunnable(i, countDownLatch)); } try { countDownLatch.await(); System.out.println("---------------"); } catch (InterruptedException e) { e.printStackTrace(); } executorService.shutdown();//关闭线程池 } } package day01.thread; import java.util.concurrent.CountDownLatch; public class TestRunnable implements Runnable { private int i; private CountDownLatch countDownLatch; public TestRunnable(int i, CountDownLatch countDownLatch) { this.i = i; this.countDownLatch = countDownLatch; } [@Override](https://my.oschina.net/u/1162528) public void run() { System.out.println("执行:" + i); try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTr...
圆梦巨人 发布于 2小时前 阅读 4

如何实现一个优质的微服务框架:Apache ServiceComb 的开放性设计

一个优质的微服务框架需要考虑的要素众多,在满足微服务设计理念的前提下,也是一个不断实践优化的过程。 本文讲述了整个 开源微服务框架 Apache ServiceComb 设计形成的前因后果,尝试从理念、思想和实践结合的维度剖析一个优质的微服务框架应该具备哪些要素,包括但不限于 对开发者友好、高性能、内外部扩展性等。 阅读本文有利于加深对微服务理念和框架的理解,给予微服务用户或开发者以帮助,这也是 Apache ServiceComb 的前身华为云微服务引擎的智慧结晶,从细节处承载了华为云自身多年云化转型的经验。
ServiceComb 发布于 2小时前 阅读 157

以太坊预言机与智能合约开发

什么是以太坊预言机?智能合约就其性质而言,能够运行各种算法并可以存储和查询数据。预言机可以监控区块链事件并能将监控结果发回智能合约。因为每个节点每次都需要大量计算,所以从Ethereum智能合约开发中进行频繁的网络请求是切不实际的。这样,智能合约就可以与链外的世界进行互动了。 但是这样有一个明显的信任问题。与信任单一外部数据源的分布式智能合约有些矛盾。不过这可以通过让多个独立的预言机来响应相同的查询最终形成共识来缓解这个问题。 有关预言机的更多信息,请查看在分布式应用程序之间提供“可靠连接”的FinTech公司Oraclize。 他们对预言机的解释很不错。 ### The [Tinypay.co](http://tinypay.co/) DNS Oracle Tinypay的预言机做了三件简单的事情: 1. 从合同中提取'ClientCreated'事件 2. 使用来自事件的数据验证DNS记录 3. 域名确认后,向合约发送'ConfirmClient'交易 我经历了几次迭代,最终实现了,我希望通过它们来引导您了解以太坊的发展。 ### 你也可以直接用RPC,不过似乎不应这么干 我第一次写预言机,我用了Go-Ethereum。我想直接使用RPC API与Ethereum节点进行所有通信。 这很有趣,因为我能够学习很多关于以太坊协议如何进行存储和数...
笔阁 发布于 2小时前 阅读 12

计算机图形处理的一些知识

最近在搞opencv来做一些简单的图像识别,既然涉及到图像识别,那么首先我们要把图像重新认识一下,大部分人看到一张照片可能就是单纯的一张照片,在一些做图像处理的人的眼中,可不就这么简单了。 ### 计算机图形的分类 (1)位图(Bitmap) 也叫做点阵图,删格图象,像素图,简单的说,就是最小单位由象素构成的图,缩放会失真。构成位图的最小单位是象素,位图就是由象素阵列的排列来实现其显示效果的,每个象素有自己的颜色信息,在对位图图像进行编辑操作的时候,可操作的对象是每个象素,我们可以改变图像的色相、饱和度、明度,从而改变图像的显示效果。举个例子来说,位图图像就好比在巨大的沙盘上画好的画,当你从远处看的时候,画面细腻多彩,但是当你靠的非常近的时候,你就能看到组成画面的每粒沙子以及每个沙粒单纯的不可变化颜色 (2)矢量图(Vector) 也叫做向量图,简单的说,就是缩放不失真的图像格式。矢量图是通过多个对象的组合生成的,对其中的每一个对象的纪录方式,都是以数学函数来实现的,也就是说,矢量图实际上并不是象位图那样纪录画面上每一点的信息,而是纪录了元素形状及颜色的算法,当你打开一付矢量图的时候,软件对图形象对应的函数进行...
九劫散仙 发布于 3小时前 阅读 2

性能优化 - 查看 webpack 打包后所有的依赖关系(webpack 可视化工具)

查看 webpack 打包后所有组件与组件间的依赖关系,针对多余的包文件过大, 剔除首次影响加载的效率问题进行剔除修改,本次采用的是 ==webpack-bundle-analyzer(可视化视图查看器)== == 介绍1:webpack-bundle-analyzer(可视化)== 将捆绑内容表示为方便的交互式可缩放树形图 如下效果图: 模块功能: 意识到你的文件打包压缩后中真正的内容 找出哪些模块组成最大的大小 找到错误的模块 优化它! 最好的事情是它支持缩小捆绑!它解析它们以获得实际大小的捆绑模块。它也显示他们的gzipped大小! 安装和使用 npm install --save-dev webpack-bundle-analyzer 在webpack.config.js中: let BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin; module.exports = { plugins: [new BundleAnalyzerPlugin()] } ==BundleAnalyzerPlugin== 构造函数可以采用默认的可选配置对象: new BundleAnalyzerPlugin({ // 可以是`server`,`static`或`disabled`。 // 在`server`模式下,分析器将启动HTTP服务器来显示软件包报告。 // 在“静态”模式下,会生成带有报告的单个HTML文件。 // 在`disabled`模式下,你可以使用这个插件来将`...
JamesView 发布于 3小时前 阅读 3

京东架构师这讲述:推送架构的演进之路

架构演进之路
高级架构师 发布于 3小时前 阅读 9 评论 1

把mp4文件转换为ts文件(切片)

使用的工具是ffmpeg: ffmpeg官网:http://ffmpeg.org/download.html ffmpeg下载地址:https://ffmpeg.zeranoe.com/builds/ 下载之后,把bin目录配置到环境变量下面。就可以使用相关命令了。 先用ffmpeg把abc.mp4文件转换为abc.ts文件: ffmpeg -y -i abc.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb abc.ts 再用ffmpeg把abc.ts文件切片并生成playlist.m3u8文件,5秒一个切片: ffmpeg -i abc.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 5 abc%03d.ts 帖子:https://www.cnblogs.com/xiezhidong/p/6924775.html 转换为ts的命令: https://blog.csdn.net/yygydok/article/details/80051262...
王坤charlie 发布于 3小时前 阅读 3

微服务开发中的数据架构设计

本文来自作者 陈伟荣 在 GitChat 分享的文章【微服务开发中的数据架构设计】 前言 微服务是当前非常流行的技术框架,通过服务的小型化、原子化以及分布式架构的弹性伸缩和高可用性,可以实现业务之间的松耦合、业务的灵活调整组合以及系统的高可用性。为业务创新和业务持续提供了一个良好的基础平台。本文分享在这种技术架构下的数据架构的设计思想以及设计要点,本文包括下面若干内容。 微服务技术框架中的多层数据架构设计 数据架构设计中的要点 要点1:数据易用性 要点2:主、副数据及数据解耦 要点3:分库分表 要点4:多源数据适配 要点5:多源数据缓存 要点6:数据集市 为了容易理解,本文用一个简化的销售模型来阐述,如下图。图1显示了客户、卖家、商品、定价、订单的关系(这里省略支付、物流等其他元素)。 图1 销售模型 在这个销售模型中,卖家提供商品、制定价格,客户选择产品购买、形成销售订单。根据微服务的理念设计,可以划分为客户服务、卖家服务、商品服务、定价服务、订单服务,以及公共服务(比如认证、权限、通知等),如图2所示。 图2 微服务功能 微服务架构中的多层数据架构设计 分布式架构一般把系统分为 Saas(Software-as-a-Service)、Paas(P...
Java架构资源分享 发布于 3天前 阅读 2509 评论 2 点赞 14

完整微服务化示例:使用 Apache ServiceComb (incubating) 进行微服务开发、容器化、弹性伸缩

最完整的微服务化示例,从业务场景入手,讲述微服务化架构设计、容器化、集群部署、弹性伸缩
ServiceComb 发布于 5天前 阅读 2521 评论 8 点赞 1 打赏 1

使用Remix编译和部署以太坊智能合约

![以太坊remix汇智网](https://static.oschina.net/uploads/img/201804/20113835_7UHh.png "以太坊remix汇智网") Remix 是一个开源的 Solidity 智能合约开发环境,提供基本的编译、部署至本地或测试网络、执行合约等功能。Solidity 是 以太坊Ethereum 官方设计和支持的开发语言,专门用于编写智能合约。 本文希望将一个很简单的代币合约(只能发行和转账),部署在本地和测试网络上,测试下它的功能。 详细描述使用 Remix 的步骤及使用上可能碰到的问题。 之前开发过以太坊Ethereum智能合约,但没有记录过开发的过程和碰到的问题,觉得挺可惜。这次重新开始,从最基础开始,一步步学习。 ### 开发环境 不需要安裝,直接在任何浏览器启动 Remix。 ![以太坊remix汇智网](https://static.oschina.net/uploads/img/201804/20113913_wFJy.png "以太坊remix汇智网") ### 取得代币合约 代币合约的范例很多,Ethereum 官网有提供一个最小可执行的代币合约(MINIMUM VIABLE TOKEN): ``` pragma solidity ^0.4.0; contract MyToken { /* This creates an array with all balances */ mapping (address => uint256) public balanceOf; /* Initializes contract with initial supply ...
笔阁 发布于 5天前 阅读 1092 评论 2 点赞 2

手把手教你打造一个可视化接口自动化测试系统

现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现数据通信的都可以称之为接口,面临着如此庞大的接口数据,如果更好的管理和测试他们都是一个比较头疼的问题,更主要的是很多业务场景是需要多个接口进行联调的,因此在接口开发完成后,一轮自动化测试能快速反馈出当前系统的状况,面对这样的需求,一个对测试人员友好的可视化接口自动化测试系统就显得必不可少了。那么,我们今天就来和大家聊聊如何实现一个小型的http接口自动化测试系统! 我们拿DOClever 做为这套系统的范本进行阐述,因为它是开源的,源码随时可以从GitHub和OSChina上获取,同时,这套系统内置了完整的自动化测试框架,从无需一行代码的UI测试用例编写,到更强大更灵活的代码模式,都提供了很友好的支持。 系统需求: 1.   能在一个测试用例里可以对一个接口自由编辑其入参,运行并判断出参是否正确,同时可以查看该接口完整的输入输出数据 2.   能在一个测试用例里可以对一组接口进行测试,自由调整他们的执行顺序,并根据上一接口的出参作为下一接口的入参条件。 3.  ...
ansun123 发布于 6天前 阅读 2380 点赞 7

数据权限管理中心 - 基于mybatis拦截器实现

基于mybatis拦截器实现简单的数据权限管理中心
GMarshal 发布于 1周前 阅读 1804 评论 14 点赞 6

Ubuntu 编译ffmpeg 实现GPU 转码

    前言,公司转码集群服务器资源有限,需要考虑GPU方案,本文记录下整个实现ffmpeg gpu 转码的过程。          该文章后续仍在不断的更新修改中, 请移步到原文地址 https://my.oschina.net/u/2950272/blog 环境: DISTRIB_ID=Ubuntu DISTRIB_RELEASE=16.04 DISTRIB_DESCRIPTION="Ubuntu 16.04.1 LTS" 注意,这里机器启动级别调低,不要加载桌面系统。 本机是2核4G 普通硬盘,gpu 型号:GTX950M 第一部分,安装cuda 8:     1.1 查看是否有显卡: lspci | grep -i nvidia     1.2 查看操作系统是否cuda 官方支持: uname -m && cat /etc/*release     1.3 安装gcc g++ 等编译依赖基础库 apt-get install gcc g++ build-essential     1.4 下载安装cuda 下载cuda: wget --no-check-certificate https://developer.nvidia.com/compute/cuda/8.0/prod/local_installers/cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb 安装 cuda 源: dpkg -i cuda-repo-ubuntu1604-8-0-local_8.0.44-1_amd64-deb 添加源: deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64 / 更新缓存: apt-get update 安装cuda: apt-get i...
鼎铭 发布于 1周前 阅读 2026 评论 25 点赞 4

Docker容器可视化监控中心搭建

一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据
hansonwang 发布于 1周前 阅读 3210 评论 7 点赞 4

EMQ百万级MQTT消息服务(小技巧)

![](http://i.imgur.com/vhdeDvX.png) 附上: 喵了个咪的博客:[w-blog.cn](w-blog.cn) EMQ官方地址:[http://emqtt.com/](http://emqtt.com/) EMQ中文文档:[http://emqtt.com/docs/v2/guide.html](http://emqtt.com/docs/v2/guide.html) ## 1.ACL鉴权规则化 在正常业务使用下对于客户端的行为可以使用ACL进行限制,比如A客户端只能订阅 /A/get 队列消息和向 /A/set 发布内容 但是在MYSQL里面处理这样的鉴权就需要写入两条记录,如果设备量有一百万数据库就要承担两百万条鉴权数据量会大大影响数据库的性能 那么有没有什么批量的方式来定义ACL鉴权呢? 在mysql-ACL鉴权的配置文件下关于如何使用鉴权的SQL是可以编辑的,也就意味着你可以通过SQL来实现批量ACL鉴权规则 ```bash > vim /usr/local/emqttd/etc/plugins/emq_auth_mysql.conf # 最下面有这样一条配置 auth.mysql.acl_query = select allow, ipaddr, username, clientid, access, topic from mqtt_acl where ipaddr = '%a' or username = '%u' or username = '$all' or clientid = '%c' ``` 笔者这里就实现每个设备默认可以订阅 /A/get 队列消息和向 /A/set 发布 ![](http://pic.w-blog.cn/ADE78396-BF03-4672-A3E2-07F04...
喵了_个咪 发布于 1周前 阅读 2354 评论 3 点赞 1

Apache Ignite事务架构:Ignite持久化的事务处理

在本系列[上一篇文章](https://my.oschina.net/liyuj/blog/1791800)中,介绍了故障和恢复,下面是本系列剩下的文章将要讨论的主题: - Ignite持久化的事务处理(WAL、检查点及其他) - 第三方持久化的事务处理 在本文中,会聚焦于Ignite持久化的事务处理。 将[Apache Ignite](https://ignite.apache.org/)作为内存数据网格(IMDG)的都知道,如果整个集群瘫痪,仅仅将数据保存在内存中问题是很严重的,其他的IMDG以及缓存技术也会面临同样的问题。解决这个问题的方案之一就是,将Ignite与第三方的持久化存储集成,然后提供通读和通写能力,如图1所示: ![图1:使用第三方存储进行持久化](https://www.gridgain.com/sites/default/files/inline-images/Figure1_10.png) 但是,这个方法有一些缺陷,在本系列的下一篇文章中会说明。 作为第三方持久化的替代方案,Ignite开发了一个固化内存架构,如图2所示,该架构可以同时在内存和磁盘上进行数据和索引的存储和处理,该特性使用非常简单,使得Ignite集群在数据落盘的前提下,获得内存级的性能: ![图2:固化内存](https://www.gridgain.com/sites/default/files/inline-images/Figure2_9.png) 固化内存的工作方式类似于现代操...
李玉珏 发布于 2周前 阅读 974 点赞 3

架构师眼中的高并发架构

以架构师的眼光来讲述高并发架构
高级架构师 发布于 2周前 阅读 4403 评论 14 点赞 22

有助于提高"锁"性能的几点建议

qq:853089986@qq.com
张泽立 发布于 2周前 阅读 2283 评论 10 点赞 12

如何用Nginx搭建一个安全的、快速的微服务架构

本文改编自Chris Stetson发表在nginx.conf 上的一个有关如今的微服务以及如何使用Nginx构建一个快速的、安全的网络系统的演讲,大家可以在YourTube上回看此次演讲。 自我介绍 Chris Stetson:Hi,我的名字是Chris Stetson,我在Nginx带领专业服务部门,同时也领导微服务实践。 今天我们要谈论微服务以及如何使用Nginx构建一个快速的、安全的网络系统。在我们谈话的最后,我们将与我们在Zokets的合作伙伴向您展示一个使用Fabric模式如何非常快速和轻松地构建一个微服务的demo。 在我们探讨Fabric模式之前,我想谈一谈微服务并且从Nginx的角度来看这意味着什么。 0:56 - 大转变 微服务已经引起了应用程序架构的重大转变。 当我第一次开始构建应用程序时,他们都是差不多的。幻灯片中所展示的单体架构也象征了应用程序的构造方式。 目前存在着某种类型的虚拟机(VM),对我来说,就是通常的Java。在虚拟机中应用的功能组件以对象的形式存在,这些对象是在内存中相互通讯的,它们将来来回回处理并进行方法调用。偶尔,你会采用诸如通知等机制来接触到其他系统以便获取数据或传递信息。 有了微服务之后,应用程序如何构建的范式是完全不同的了。你的功能组件会从在同一个主机的...
烂猪皮 发布于 2周前 阅读 3930 评论 11 点赞 4

List集合就这么简单【源码剖析】

前言 声明,本文用得是jdk1.8 前一篇已经讲了Collection的总览:Collection总览,介绍了一些基础知识。 现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是数组。线程不安全 LinkedList 底层数据结构是链表。线程不安全 Vector 底层数据结构是数组。线程安全 这篇主要来看看它们比较重要的方法是如何实现的,需要注意些什么,最后比较一下哪个时候用哪个~ 看这篇文章之前最好是有点数据结构的基础:Java实现单向链表,栈和队列就是这么简单,二叉树就这么简单         当然了,如果讲得有错的地方还请大家多多包涵并不吝在评论去指正~ 一、ArrayList解析     首先,我们来讲解的是ArrayList集合,它是我们用得非常非常多的一个集合~ 首先,我们来看一下ArrayList的属性:     根据上面我们可以清晰的发现:ArrayList底层其实就是一个数组,ArrayList中有扩容这么一个概念,正因为它扩容,所以它能够实现“动态”增长 1.2构造方法 我们来看看构造方法来印证我们上面说得对不对:     1.3Add方法 add方法可以说是ArrayList比较重要的方法了,我们来总览一下:     1.3.1add(E e) 步骤: 检查是否需要扩容 插入元素 首先,我们来看看这个方法: ...
Java3y 发布于 2周前 阅读 2355 评论 4 点赞 6

约瑟夫环的几种实现方式

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 [1] 结果+1即为原问题的解。
珂jack 发布于 2周前 阅读 2219 评论 18

从linux源码看socket的阻塞和非阻塞

# 从linux源码看socket的阻塞和非阻塞 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。 大部分高性能网络框架采用的是非阻塞模式。笔者这次就从linux源码的角度来阐述socket阻塞(block)和非阻塞(non_block)的区别。 本文源码均来自采用Linux-2.6.24内核版本。 ## 一个TCP非阻塞client端简单的例子 如果我们要产生一个非阻塞的socket,在C语言中如下代码所示: ``` // 创建socket int sock_fd = socket(AF_INET, SOCK_STREAM, 0); ... // 更改socket为nonblock fcntl(sock_fd, F_SETFL, fdflags | O_NONBLOCK); // connect .... while(1) { int recvlen = recv(sock_fd, recvbuf, RECV_BUF_SIZE) ; ...... } ... ``` 由于网络协议非常复杂,内核里面用到了大量的面向对象的技巧,所以我们从创建连接开始,一步一步追述到最后代码的调用点。 ### socket的创建 很明显,内核的第一步应该是通过AF\_INET、SOCK\_STREAM以及最后一个参数0定位到需要创建一个TCP的socket,如下图绿线所示: ![inet_family](https://static.oschina.net/uploads/img/201804/08095807_GSaV.png "inet_family") 我们跟踪源码调用 ``` socket(AF_INET, SOCK_STREAM,...
无毁的湖光-Al 发布于 2周前 阅读 3727 评论 12 点赞 7 打赏 1

Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1

Step by Step 真正从零开始,TensorFlow详细安装入门图文教程!帮你完成那个最难的从0到1
悦动智能 发布于 3周前 阅读 2152 评论 8 点赞 4

深入浅出设计模式——从球赛中悟命令模式

命令模式,顾名思义就是向对象发出命令使其执行指定操作。具体的说就是以命令的形式发出请求交给调用对象,随后调用对象又将命令传送给需要处理这条命令的对象并让目标对象执行该命令。
珂jack 发布于 3周前 阅读 1360 评论 8 点赞 5 打赏 1

Spring整合Quartz分布式调度

前言 为了保证应用的高可用和高并发性,一般都会部署多个节点;对于定时任务,如果每个节点都执行自己的定时任务,一方面耗费了系统资源,另一方面有些任务多次执行,可能引发应用逻辑问题,所以需要一个分布式的调度系统,来协调每个节点执行定时任务。 Spring整合Quartz Quartz是一个成熟的任务调度系统,Spring对Quartz做了兼容,方便开发,下面看看具体如何整合: 1.Maven依赖文件 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.spri...
ksfzhaohui 发布于 3周前 阅读 3906 评论 14 点赞 13

Shell入门看我吧

shell入门的文章,对shell不太熟悉小伙伴可以看看
aron1992 发布于 3周前 阅读 2554 评论 6 点赞 9

MySQL的索引是什么?怎么优化?

索引对大数据的查询速度的提升是非常大的,Explain可以帮你分析SQL语句是否用到相关索引。
我叫刘半仙 发布于 3周前 阅读 5601 评论 14 点赞 40
顶部