精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

在SpringBoot中集成Redis

    上篇介绍了 Spring-data-jpa一些使用方法,都是基于mysql数据库来讲解的,但是在实际项目中,由于访问量的不断增大,数据库的压力会越来越大,这时候类似于mysql的数据库往往只是为了兜底或者在降级时才会有查询操作,大部分的读操作都会集中在缓存或者像elasticsearch这种全文搜索引擎,本篇主要介绍一下如何在SpringBoot中使用Redis,后续会介绍如何集成elasticsearch  1、添加Redis起步依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2、添加Redis相关配置 spring: redis: host: localhost port: 6379 pool: max-idle: 100 min-idle: 1 max-active: 1000 max-wait: -1 3、编写Redis配置类 @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** * 生成key的策略 * @return */ @Bean public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Object generate(Object target, Method m...
老虎是个蛋蛋 发布于 4小时前 阅读 105

NRedis-Proxy - 高性能中间件服务器

NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;提供RedisServer监控以及自动、收到failover等功能;以netty 作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单机器单个RedisServer QPS在9千左右
liubingsmile 发布于 7小时前 阅读 209 点赞 3

“全球云计算开源峰会”将于2017年4月19日-20日在国家会议中心举行!

广告
近年来,云计算开源技术逐渐成为云计算发展的重要支撑和导向,改变了以往的信息技术进化模式,引领软件技术标准的发展和创新,深刻影响着整个信息技术产业的发展格局。为进一步探索我国云计算开源技术发展模式,加速云计算与各行业的深度融合,更好地发挥云计算在经济社会创新发展中的支撑和引领作用,促进我国云计算产业快速、健康发展。
云计算开源产业联盟

【腾讯Bugly干货分享】你为什么需要 Kotlin

本文来自于**腾讯Bugly**公众号(**weixinBugly**),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/xAFKGarHhfQ3nKUwPDlWwQ ## 一、往事 曾经你有段时间研究 Intellij 的插件开发,企图编译 Intellij Idea Community Edition (ICE)的源码,结果发现有个奇怪的东西让你的代码无法编译。。什么鬼,kt 是什么玩意儿? ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/1.png) ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/2.png) ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/3.png) 怎么又有新语言出来啊,简直要疯掉了。这时候,你的脑海里面瞬间浮现出了这句话: >有困难要上,没困难制造困难也要上。 『靠,这尼玛究竟是谁说的,好有道理!』你调侃道。 为了不丢掉社会主义新青年勤奋刻苦的优良传统,你决定学一下 Kotlin,不过说真的,这决定也是坑苦了自己,毕竟那段时间 Kotlin 的 API 还没有趋于稳定,经常从网上找到个 demo,搞到本地就编不过去,哭死。直到 2016年2月,Kotlin 1.0 正式发布,凌乱的 API 也随着曾经躁动的心的平静而稳定下来,你无需再忍受什么,甚至还有了一种『终于看着娃长大了』的感觉。 ## 二、消失的 ...
腾讯Bugly 发布于 9小时前 阅读 115 评论 1

三步瘦身,做名副其实的「小程序」

手把手教你使用微信小程序瘦身方案 WeCOS
腾讯云技术社区 发布于 9小时前 阅读 37

一次多模块 Spring Boot 项目 mvn package 失败的解决经验

我们不应该给 parent 项目添加 `spring-boot-maven-plugin` 构建插件,而应该给终端项目使用,因为这个插件的 repackage 目标会处理 jar 包,导致依赖它的模块无法使用它。
傅易君 发布于 17小时前 阅读 286

码云周刊:厉害了 word 的代码,程序“猿”的 AI 进化史!

![码云周刊](https://static.oschina.net/uploads/img/201701/09170848_HsPK.jpg "码云周刊") ###类型:人工智能 人工智能概念其实在上世纪80年代就已经炒得火热,由于软硬件两方面的技术局限使其沉迷了很长一段时间。而如今,各大互联网巨头在人工智能上的投入明显增大,以大数据、云计算为代表的人工智能底层技术不断突破,以人脸识别、语音识别为代表的感知交互技术日渐成熟,从而使得人工智能技术迅猛发展。人工智能已经成为这个时代最激动人心、最值得期待的技术,且将成为未来10年乃至更长时间互联网技术发展的核心,所以2016年也被大家称之为人工智能发展的元年。 那现在让我们一起探索 AI 的神秘吧~ ##热门资讯 [1、开发者必备:基于 Linux 生态的十大AI开源框架盘](https://www.oschina.net/news/80995/top-ai-open-source-linux-ecosystem-framework) > 本文将从开发者的角度出发,特别是针对开发者中为数众多的Linux系统和Mac系统用户,奉上一篇针对泛Linux生态的顶级人工智能开源工具盘点(当然,有些工具也并非只兼容Linux)。 [2、人工智能中 5 个让人意想不到的误差来源](https://www.oschina.net/translate/5-unexpected-sources-of-bias-in-artificial-in...
开源中国码云 发布于 21小时前 阅读 2075 评论 2

浅尝springboot中的Actuator包(一)

在开发中,有时候我们想知道项目中在自己制定的bean有没有被注册上,环境属性,程序健康指标等等,幸好springboot已经帮我们做了这些,我们可以通过它所提供Actuator包下提供的13个端点来进行查看,下面就让一个简单的demo来简单看看Actuator提供了哪些东西吧.   先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea   首先,我们先引入依赖,在项目中引入Acturtor包,添加如下内容 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>   引入包之后,我们直接启动项目,会发现日志增加打印了一些东西,大概如下:       可以发现,有13个端点.或者说是访问路径,从名字上可以看出一些端倪,例如: beans(估计是用于查看上下文中所有的bean),health(程序的健康度)等....这次,我们就先浅浅的测试几个吧,里面涉及到内容跟安全,一篇文章介绍不完,   下面列表,大概描述下13个端点分别是做什么的 Actuator13个路径简单概述 请求方式         路径 描述 GET /autoconfig 一份自动配置报告,记录了哪些自动配置通过了,哪些没通过 GET /configprops 描述属性配置注入的...
贺小五 发布于 1天前 阅读 154

阻塞队列BlockingQueue

BlockingQueue很好的解决了多线程中数据的传输,首先BlockingQueue是一个接口,它大致有四个实现类,这是一个很特殊的队列,如果BlockQueue是空的,从BlockingQueue取东西的操作将会被阻断进入等待状态,直到BlockingQueue进了东西才会被唤醒.同样,如果BlockingQueue是满的,任何试图往里存东西的操作也会被阻断进入等待状态,直到BlockingQueue里有空间才会被唤醒继续操作。 BlockingQueue的四个实现类: 1.ArrayBlockingQueue:规定大小的BlockingQueue,其构造函数必须带一个int参数来指明其大小.其所含的对象是以FIFO(先入先出)顺序排序的.  2.LinkedBlockingQueue:大小不定的BlockingQueue,若其构造函数带一个规定大小的参数,生成的BlockingQueue有大小限制,若不带大小参数,所生成的BlockingQueue的大小由Integer.MAX_VALUE来决定.其所含的对象是以FIFO(先入先出)顺序排序的  3.PriorityBlockingQueue:类似于LinkedBlockQueue,但其所含对象的排序不是FIFO,而是依据对象的自然排序顺序或者是构造函数的Comparator决定的顺序.  4.SynchronousQueue:特殊的BlockingQueue,对其的操作必须是放和取交替完成的.  BlockingQueue的常用方法:         1)add(anObject):把anO...
gefufeng 发布于 1天前 阅读 172

Windows下安装TensorFlow和Caffe

利用Anaconda安装python环境,并安装TensorFlow和Caffe
propagator 发布于 2天前 阅读 372 评论 2

【软件周刊第 12 期】WordPress 4.7.1 安全修复升级版本发布;Windows 10 Build 15002 发布:多项改进 体验升级

软件周刊(01.08 — 01.14):本周热门软件更新 — Windows 10 Build 15002 发布:多项改进 体验升级;WordPress 4.7.1 安全修复升级版本发布,修复了之前所有版本中存在的漏洞;ECharts 3.4 发布:新增象形柱图、主题河流图、水球图
编辑部的故事 发布于 2天前 阅读 1116

编译器编译原理--详解

了解编译器编译的详细过程
沙米笔记 发布于 2天前 阅读 148 点赞 1

Kickstart实现自动安装centos6和7

一直想尝试下pxe自动安装centos6和centos7,最近几天做了下实验,虽然实践的过程中碰到许多问题,但收获还是有的,把碰到的问题和收获分享下。 pxe自动安装需要三个服务,分别为dhcp、tftp、nginx,这三个服务我都使用centos6.6安装了。其中nginx也可以使用apache等其它web服务器,也可以使用nfs服务器,由于本人对nginx比较熟悉,就用nginx了。centos6和7的下载地址为:http://archive.kernel.org/centos-vault/。 还是先看效果图,最终使用pxe自动安装cento6和centos7的截图如下: 服务器上的三个服务: centos6自动安装的截图: centos7自动安装的截图: 下面说下安装的过程: 1: nginx的安装就不说了,配置贴下,我是root到/var/www/html目录。 location / { root /var/www/html/; index index.html index.htm; } /var/www/html需要放置的kickstart的配置和centos的安装镜像包,如图,后面讲配置的话会有说明: 2: 安装dhcp服务器,直接使用yum install dhcp -y安装即可。dhcp的配置如下,dhcp上有个pxelinux.0需要等安装tftp的时候再说,另外的就是一些dhcp的配置: ddns-update-style interim; ignore client-updates; allow bo...
鸿弟 发布于 2天前 阅读 59

免费个人博客搭建教程(详细-图文)--Hexo+OSChina

本人作为一个屌丝程序员,**年少无为,卖马为生**,买不起服务器,买不起域名,但是又想拥有属于自己的博客网站,那就只有通过技术来实现这一切了。先上成果:[点击](http://z77z.oschina.io/),现在我把我自己搭建博客的过程共享出来,只要你按照步骤一步步走下去,一定会搭建成功,如果大家在搭建过程中遇到什么问题,欢迎在我的博客评论区留言,也欢迎大神进来,教我做码,带我装逼,带我飞。**[博客地址](http://z77z.oschina.io/)**,JUST DO IT(`离开舒适区`)。
z7-7z 发布于 2天前 阅读 283 评论 11 点赞 2

osgi实战项目(osmp)一步一步玩转osgi之第一个服务(7)

前面几篇文章已经讲了一些组件了,今天我们就开始实实在在的动手三分钟完成我们的第一个业务bundle,写一个服务提供对数据的CRUD功能。   我们写一个demo完成学生信息的crud功能。   1、进入osmp下载目录,复制粘贴osmp-utils 并改名为 osmp-demo 2、进入osmp-demo目录,修改pom.xml为以下内容     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.osmp.baseweb</groupId> <artifactId>osmp-parent</artifactId> <version>1.0.0</version> </parent> <artifactId>osmp-demo</artifactId> <packaging>bundle</packaging> <name>osmp-demo</name> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-Sym...
天涯浪子007 发布于 2天前 阅读 39

【源资讯第12期】你们关心的软件排行榜、小程序终于来了,当然还有……黑客!

【一周源资讯(2017.1.7-2017.1.13)】本周,你们最关心的开源中国新增开源软件以及码云热门项目两个排行榜、小程序终于一一上线,随之而来的还有MongoDB 数据库安全事故!
编辑部的故事 发布于 3天前 阅读 4431 评论 3

Linux服务器安装Oracle服务端总结

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
黎嘉诚 发布于 3天前 阅读 1849 评论 17 点赞 3

一个大对象引起的血案,GC的踩坑实录

踩过很多次GC的坑,基本每次性能问题,除了数据库,其它高发地区就是GC问题了
爱吃大肉包 发布于 3天前 阅读 4132 评论 15 点赞 3

使用dbunit和system-rules测试代码

system-rules,dbunit,excel
tyou 发布于 3天前 阅读 67

干货 | 彻底理解ANDROID BINDER通信架构(下)

干货 | 彻底理解ANDROID BINDER通信架构(下) 2.10 IPC.waitForResponse 在这个过程中, 常见的几个BR_命令: BR_TRANSACTION_COMPLETE: binder驱动收到BC_TRANSACTION事件后的应答消息; 对于oneway transaction,当收到该消息,则完成了本次Binder通信; BR_DEAD_REPLY: 回复失败,往往是线程或节点为空. 则结束本次通信Binder; BR_FAILED_REPLY:回复失败,往往是transaction出错导致. 则结束本次通信Binder; BR_REPLY: Binder驱动向Client端发送回应消息; 对于非oneway transaction时,当收到该消息,则完整地完成本次Binder通信; 规律: BC_TRANSACTION + BC_REPLY = BR_TRANSACTION_COMPLETE + BR_DEAD_REPLY + BR_FAILED_REPLY 2.10.1 IPC.executeCommand 处于剩余的BR_命令. 2.11 IPC.talkWithDriver binder_write_read结构体用来与Binder设备交换数据的结构, 通过ioctl与mDriverFD通信,是真正与Binder驱动进行数据读写交互的过程。 ioctl()方法经过syscall最终调用到Binder_ioctl()方法. 三、Binder driver 3.1 binder_ioctl [→ Binder.c] 由【小节2.11】传递过出来的参数 cmd=BINDER_WRITE_READ 首先,根据传递过来的文件句柄指针获取相应的binder_proc结构体, 再从中查...
小米开放平台 发布于 3天前 阅读 211

简易ReactNative高阶组件实现自动隐藏键盘功能

最近在开发RN时遇到这样一种情况,页面上方有个数字类型的输入框(keyboardType="numeric"),点开之后把页面底部的提交按钮给遮蔽了,但是IOS的数字键盘没有收缩功能,导致一点开就无法进行操作了,如图:       因此需要在用户点击空白处时把键盘隐藏,可以使用如下的方法: const dismissKeyboard = require('dismissKeyboard') export default class Demo extends Component { render() { return ( <TouchableWithoutFeedback onPress={dismissKeyboard}> <View style={{flex:1}}> //some components like TextInput </View> </TouchableWithoutFeedback> ) } } 但每次都需要麻烦地引入dismissKeyboard和TouchableWithoutFeedback组件,因此想到了用高阶组件的实现方式: const dismissKeyboard = require('dismissKeyboard') export default (WrappedComponent) => class AutoHideKeyboard extends Component { render() { return ( <TouchableWithoutFeedback style={{flex:1}} onPress={dismissKeyboard}> <View s...
lee1994522 发布于 3天前 阅读 177

码云周刊:厉害了 word 的代码,程序“猿”的 AI 进化史!

![码云周刊](https://static.oschina.net/uploads/img/201701/09170848_HsPK.jpg "码云周刊") ###类型:人工智能 人工智能概念其实在上世纪80年代就已经炒得火热,由于软硬件两方面的技术局限使其沉迷了很长一段时间。而如今,各大互联网巨头在人工智能上的投入明显增大,以大数据、云计算为代表的人工智能底层技术不断突破,以人脸识别、语音识别为代表的感知交互技术日渐成熟,从而使得人工智能技术迅猛发展。人工智能已经成为这个时代最激动人心、最值得期待的技术,且将成为未来10年乃至更长时间互联网技术发展的核心,所以2016年也被大家称之为人工智能发展的元年。 那现在让我们一起探索 AI 的神秘吧~ ##热门资讯 [1、开发者必备:基于 Linux 生态的十大AI开源框架盘](https://www.oschina.net/news/80995/top-ai-open-source-linux-ecosystem-framework) > 本文将从开发者的角度出发,特别是针对开发者中为数众多的Linux系统和Mac系统用户,奉上一篇针对泛Linux生态的顶级人工智能开源工具盘点(当然,有些工具也并非只兼容Linux)。 [2、人工智能中 5 个让人意想不到的误差来源](https://www.oschina.net/translate/5-unexpected-sources-of-bias-in-artificial-in...
开源中国码云 发布于 21小时前 阅读 2075 评论 2

“全球云计算开源峰会”将于2017年4月19日-20日在国家会议中心举行!

广告
近年来,云计算开源技术逐渐成为云计算发展的重要支撑和导向,改变了以往的信息技术进化模式,引领软件技术标准的发展和创新,深刻影响着整个信息技术产业的发展格局。为进一步探索我国云计算开源技术发展模式,加速云计算与各行业的深度融合,更好地发挥云计算在经济社会创新发展中的支撑和引领作用,促进我国云计算产业快速、健康发展。
云计算开源产业联盟

青雀推出小程序服务矩阵 助企业抢占首波移动先机

1月11日,“2017小程序全国巡回沙龙-北京站”圆满落幕,青雀移动(larkapp.com)正式发布小程序服务矩阵,并联合众多行业伙伴成立国内第一家小程序服务联盟,白鹭时代联合创始人,青雀移动总经理张翔围绕小程序建立服务生态等话题分享了自己的观点。
jun3w 发布于 4天前 阅读 1438

免费个人博客搭建教程(详细-图文)--Hexo+OSChina

本人作为一个屌丝程序员,**年少无为,卖马为生**,买不起服务器,买不起域名,但是又想拥有属于自己的博客网站,那就只有通过技术来实现这一切了。先上成果:[点击](http://z77z.oschina.io/),现在我把我自己搭建博客的过程共享出来,只要你按照步骤一步步走下去,一定会搭建成功,如果大家在搭建过程中遇到什么问题,欢迎在我的博客评论区留言,也欢迎大神进来,教我做码,带我装逼,带我飞。**[博客地址](http://z77z.oschina.io/)**,JUST DO IT(`离开舒适区`)。
z7-7z 发布于 2天前 阅读 283 评论 11 点赞 2

一次多模块 Spring Boot 项目 mvn package 失败的解决经验

我们不应该给 parent 项目添加 `spring-boot-maven-plugin` 构建插件,而应该给终端项目使用,因为这个插件的 repackage 目标会处理 jar 包,导致依赖它的模块无法使用它。
傅易君 发布于 17小时前 阅读 286

NRedis-Proxy - 高性能中间件服务器

NRedis-Proxy 是一个Redis中间件服务,第一个Java 版本开源Redis中间件,无须修改业务应用程序任何代码与配置,与业务解耦;以Spring为基础开发自定义标签,让它可配置化,使其更加容易上手;提供RedisServer监控以及自动、收到failover等功能;以netty 作为通信传输工具,让它具有高性能,高并发,可分布式扩展部署等特点,单机器单个RedisServer QPS在9千左右
liubingsmile 发布于 7小时前 阅读 209 点赞 3

Android性能优化-Render篇

udacity的性能优化课程纪要
Gnepux 发布于 2周前 阅读 111

【腾讯Bugly干货分享】你为什么需要 Kotlin

本文来自于**腾讯Bugly**公众号(**weixinBugly**),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/xAFKGarHhfQ3nKUwPDlWwQ ## 一、往事 曾经你有段时间研究 Intellij 的插件开发,企图编译 Intellij Idea Community Edition (ICE)的源码,结果发现有个奇怪的东西让你的代码无法编译。。什么鬼,kt 是什么玩意儿? ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/1.png) ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/2.png) ![](http://oa5504rxk.bkt.clouddn.com/week29_kotlin/3.png) 怎么又有新语言出来啊,简直要疯掉了。这时候,你的脑海里面瞬间浮现出了这句话: >有困难要上,没困难制造困难也要上。 『靠,这尼玛究竟是谁说的,好有道理!』你调侃道。 为了不丢掉社会主义新青年勤奋刻苦的优良传统,你决定学一下 Kotlin,不过说真的,这决定也是坑苦了自己,毕竟那段时间 Kotlin 的 API 还没有趋于稳定,经常从网上找到个 demo,搞到本地就编不过去,哭死。直到 2016年2月,Kotlin 1.0 正式发布,凌乱的 API 也随着曾经躁动的心的平静而稳定下来,你无需再忍受什么,甚至还有了一种『终于看着娃长大了』的感觉。 ## 二、消失的 ...
腾讯Bugly 发布于 9小时前 阅读 115 评论 1

在SpringBoot中集成Redis

    上篇介绍了 Spring-data-jpa一些使用方法,都是基于mysql数据库来讲解的,但是在实际项目中,由于访问量的不断增大,数据库的压力会越来越大,这时候类似于mysql的数据库往往只是为了兜底或者在降级时才会有查询操作,大部分的读操作都会集中在缓存或者像elasticsearch这种全文搜索引擎,本篇主要介绍一下如何在SpringBoot中使用Redis,后续会介绍如何集成elasticsearch  1、添加Redis起步依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2、添加Redis相关配置 spring: redis: host: localhost port: 6379 pool: max-idle: 100 min-idle: 1 max-active: 1000 max-wait: -1 3、编写Redis配置类 @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** * 生成key的策略 * @return */ @Bean public KeyGenerator keyGenerator() { return new KeyGenerator() { @Override public Object generate(Object target, Method m...
老虎是个蛋蛋 发布于 4小时前 阅读 105

osgi实战项目(osmp)一步一步玩转osgi之第一个服务(7)

前面几篇文章已经讲了一些组件了,今天我们就开始实实在在的动手三分钟完成我们的第一个业务bundle,写一个服务提供对数据的CRUD功能。   我们写一个demo完成学生信息的crud功能。   1、进入osmp下载目录,复制粘贴osmp-utils 并改名为 osmp-demo 2、进入osmp-demo目录,修改pom.xml为以下内容     <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.osmp.baseweb</groupId> <artifactId>osmp-parent</artifactId> <version>1.0.0</version> </parent> <artifactId>osmp-demo</artifactId> <packaging>bundle</packaging> <name>osmp-demo</name> <build> <plugins> <plugin> <groupId>org.apache.felix</groupId> <artifactId>maven-bundle-plugin</artifactId> <extensions>true</extensions> <configuration> <instructions> <Bundle-SymbolicName>${project.artifactId}</Bundle-Sym...
天涯浪子007 发布于 2天前 阅读 39

Java Servlet 获取GET和POST的完整URL及参数

在servlet中GET请求可以通过HttpServletRequest的getRequestURL方法和getQueryString()得到完整的请求路径和请求所有参数列表,POST的需要getParameterMap()方法遍历得到,不论GET或POST都可以通过getRequestURL+getParameterMap()来得到请求完整路径    import java.io.IOException; import java.io.PrintWriter; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GetParams extends HttpServlet { private static final long serialVersionUID = 1L; public GetParams() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter writer = response.getWriter(); writer.println("GET " + request.getRequestURL() + " " + request.getQueryString()); Map<String, String[]> params = request.getParameterMap(); String q...
不停息的脚步 发布于 1年前 阅读 6990

解决dubbo问题:forbid consumer

解决dubbo问题:forbid consumer By admin | 2015/06/09 0 Comment 线下环境经常出现类似这种异常: com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.0.53.69 access service com.kuaidadi.op.api.pay.service.PayChannelConfigRemoteService from registry 10.0.50.150:2181 use dubbo version 2.5.3, Please check registry access list (whitelist/blacklist). 大致意思是当前调用者被禁止访问某个服务,请检查下注册中心访问列表,还有黑名单和白名单。 其实线下环境根本没有对服务做白名单和黑名单机制,因为线下环境给开发人员的账号是guest,没有权限做黑白名单。今天有好几个人问我这个问题,我仔细看了源码,找出了根源所在。 根据异常栈,抛出这个异常的代码在RegistryDirectory的第579行,如下: public List<Invoker<T>> doList(Invocation invocation) {  if (forbidden ) {      throw new RpcException(RpcException.FORBIDDEN_EXCEPTION , ” Forbid consumer “ +  NetUtils. getLocalHost() + ” access service “ +        getInterface().getName() + ” from registry “ + getUrl().getAddress() + ” use ...
磨砂轮 发布于 1年前 阅读 11990 评论 6

『阿男的编程本质论』*10 Eval,Macro,Preprocessor,Homoiconicity(三)*

『阿男的编程本质论』*10 Eval,Macro,Preprocessor,Homoiconicity(三)* 那么Clojure这种macro和C语言里面`#include`这种macro有什么区别呢?C语言里面的macro实际上就是一种文本替换,比如`#include "foo.h"`在编译的时候就是会把`foo.h`里面的内容替换到`#include "foo.h"`这里。 因此C语言的preprocessor处理它的macro的时候,就是简单的文本替换。开源的preprocessor,`m4`就是这样的工具。当然`m4`这种macro expander也支持一些条件语句来进行一定限度上的根据字串里面的一些特征进行有条件替换,但这毕竟还是把输入作为字符串,而不是结构,来进行处理,这种替换方式必定有局限性。 我们可以想一下编译原理相关知识,在Parser处理代码之前,有Tokenizer(也叫Lexer)会把代码转化成token,这种转化,就是把文本转化成结构的基本单元token。这样的话,Parser才能更好地分析语法规则,把tokens联系在一起,变成树形结构AST。因此"结构"在这里面起了很大的作用。 而Clojure里面的macro则是有效的语法结构,本身它的代码就是list数据,list数据本身也可以表示树形结构(通过nested的括号),因此可以说Clojure的Lexer和Parser要做的事情被大大简化了,当然也导致了...
阿男weli 发布于 10小时前 阅读 33

ELK-redis日志服务器搭建

ELK-redis日志服务器搭建
独钓渔 发布于 1年前 阅读 8354 评论 23 点赞 2

PHP PHAR 10分钟体验教程

既然是10分钟教程,就不要指望很详细了,只是为了初步了解下PHAR,我自己也只是刚接触而已 PHAR: 即 PHP Archive,将这个应用程序打包成单个文件,以利于分发和安装的机制,似乎是从JAVA的JAR借鉴来的东西。 # 目录结构 phar-demo/ # 要打包的应用程序   --Dates.php # 里面的东西 my-app.php # 在这里可以调用phar文件 phar-builder.php # 用于创建phar文件的文件 phpar-demo.phar # 生产的phar文件 首先,建立phar-demo文件夹: // phar-demo/Dates.php namespace PHX; class Dates{ public static function next_week(){ $datetime = new \DateTime(); $datetime->add(new \DateInterval('P7D')); return $datetime->format('Y-m-d'); } } 然后: // phar-builder.php $phar = new Phar('phar-demo.phar'); $phar->buildFromDirectory(dirname(__FILE__).'/phar-demo', '/\.php$/'); $phar->compressFiles( Phar::GZ ); $phar->stopBuffering(); $phar->setStub( $phar->createDefaultStub('Dates.php') ); 然后运行一下 phar-builder.php,这样phar-demo.phar就生成出来了,接着: // my-app.php // # 用命令行运行: php my-app.php require_once 'phar://...
添加软件 发布于 4年前 阅读 6809 评论 3 点赞 3

淘宝SOA框架dubbo学习(7)--异步调用

基于NIO的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。
宁宁爸 发布于 2年前 阅读 10775 评论 5 点赞 2

30多个PHP框架程序 选一个适合你的去学习吧

使用人数最多的框架: 1、ThinkPHP    简称:TP 官方网站:http://thinkphp.cn/ 开源中国:http://www.oschina.net/p/thinkphp 2、CodeIgniter    简称CI 中文网站:http://codeigniter.com/  官方网站:http://codeigniter.org.cn/  开源中国:http://www.oschina.net/p/codeigniter 3、YII     中文网站:http://www.yiichina.com/ 官方网站:http://www.yiiframework.com/  开源中国:http://www.oschina.net/p/yii  4、CakePHP 官方网站: http://cakephp.org/   开源中国:http://www.oschina.net/p/cakephp 5、CanPHP 官方网站:http://www.canphp.com/  开源中国:http://www.oschina.net/p/canphp   6、speedphp 官方网站:http://www.speedphp.com 开源中国:http://www.oschina.net/p/speedphp 7、symfony 官方网站:http://symfony.com/  开源中国:http://www.oschina.net/p/symfony 8、InitPHP 官方网站:http://www.initphp.com/  开源中国:http://www.oschina.net/p/initphp 以下是未整理的PHP程序框架 排名不分先后:(因为是太多太多了 ) 1、ThinkPHP http://thinkphp.cn/ 2、CanPHP http://www.canphp.com/ 3、CodeIgniter http://...
南宫天明 发布于 4年前 阅读 800 评论 3 点赞 1

Web Service 那点事儿(4)—— 使用 CXF 开发 REST 服务

现在您已经学会了如何使用 CXF 开发基于 SOAP 的 Web 服务,也领略了 Spring + CXF 这个强大的组合,如果您错过了这精彩的一幕,请回头看看这篇吧: [Web Service 那点事儿(2) —— 使用 CXF 开发 SOAP 服务][1] 今天我们将视角集中在 REST 上,它是继 SOAP 以后,另一种广泛使用的 Web 服务。与 SOAP 不同,REST 并没有 WSDL 的概念,也没有叫做“信封”的东西,因为 REST 主张用一种简单粗暴的方式来表达数据,传递的数据格式可以是 JSON 格式,也可以是 XML 格式,这完全由您来决定。 REST 全称是 Representational State Transfer(表述性状态转移),它是 Roy Fielding 博士在 2000 年写的一篇关于软件架构风格的论文,此文一出,威震四方!许多知名互联网公司开始采用这种轻量级 Web 服务,大家习惯将其称为 `RESTful Web Services`,或简称 `REST 服务`。 那么 REST 到底是什么呢? REST 本质上是使用 URL 来访问资源的一种方式。总所周知,URL 就是我们平常使用的请求地址了,其中包括两部分:`请求方式` 与 `请求路径`,比较常见的请求方式是 GET 与 POST,但在 REST 中又提出了几种其它类型的请求方式,汇总起来有六种:GET、POST、PUT、DELETE、HEAD、OPTIONS...
黄勇 发布于 2年前 阅读 16036 评论 41 点赞 22

开源框架Openbiz给PHP开发人员带来新生机

面向读者范围: 软件行业经理 及 创业者 笔者自述 我从事软件开发行业至今已经将近十二年,经历了从Windows 3.2第一次登陆中国 到苹果 安卓统一移动应用市场的一场场变革。这场商战中,把握住未来发展的方向才是确保再竞争中生存的硬道理。由此发起本文。   引文 多年来一直在探寻企业级应用的未来发展方向,发现对于技术的积累与重用是这个行业的提高竞争力的重要因素之一。 (当然这并不只是成功的唯一条件)让我以技术的重用性为视角来看一下这个行业的发展兴衰。   很多小型软件开发团队在创业初期,往往承接外包软件开发工作为主要业务来源,在面对市场竞争时, 大部分人不断将客户需求中的共性积累起来,设法将带有共性的业务逻辑分立出来用于在其它项目中重用,这样可以逐渐降低未来的开发人力成本,听起来是个不错的逻辑,但在实际应用中却很少真的见到效果。   是什么导致这个美好的设想实施困难呢? •    客户的需求过于制定化, •    系统在设计过程中被多次彻底修改(而非所期待的“扩展”) •    客户对时间要求的紧迫,对费用预算的苛刻,让你无法停下来去思考架构,只能一个功能一个功能的修改完整个项目   这种外包开发的商业模式,遇到的...
吉贤 发布于 5年前 阅读 327

uilabel高度自适应方法

获得uialbel的自适应大小方法: text 为文字, - (CGSize)textSizeWith:(NSString *)text andMaxWidth:(float)maxWidth and:(int)font{     CGSize textMaxSize = CGSizeMake(maxWidth, MAXFLOAT);     NSDictionary *textArr = @{NSFontAttributeName:[UIFont systemFontOfSize:font]};     return [text boundingRectWithSize:textMaxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:textArr context:nil].size; }
奋斗的青春年华 发布于 10小时前 阅读 38

抽空仔细读了一下tomcat7的相关脚本,获益匪浅,总结一下

我的环境是ubuntu server,使用apt-get安装软件源自带的tomcat,以前经常遇到需要增加tomcat内存的做法,当时的做法是网上搜索的,几乎千篇一律都是说修改catalina.sh,修改JAVA_OPTS这个部分(国内资料几乎都是),我发现大错特错,我遇到过生产环境这么操作,结果升级tomat之后配置被覆盖,导致JVM内存不够,应用全挂的情况!
Feng_Yu 发布于 3年前 阅读 10342 评论 7 点赞 8

2017 年不可错过的开发工具 Top 50

想知道 2017 年有哪些值得关注的开发工具吗?StackShare 年度开发工具排行榜来啦! StackShare.io 是一个开发者工具及服务分享平台,致力于发现并分享开发者使用的开发工具、服务与优质资源,帮助开发者使用最方便的开发工具和便捷的服务。该网站对数千个数据点进行分析,并收集整理 2016 年开发者的评论和投票数,最终为大家呈现以下最热门开发工具排名。 应用与数据工具 #1:JavaScript:轻量级、可演绎的、面向对象的程序语言 得票数:4.72K 使用数:7.06K 点赞数:407 #2: Bootstrap:简单切灵活的 HTML、CSS 和 JS,适配流行的 UI 组件和交互 得票数:6K 使用数:11.3K 点赞数:379 #3: Node.js:基于 Chrome 的 JavaScript 运行时构建的平台,能够轻松构建快速、可扩展的网络应用 得票数:5.51K 使用数:5.36K 点赞数:463 #4: nginx:自由开源软件,为互联网上业务繁忙的网站提供高性能的网页服务器 得票数:3.68K 使用数:9.91K 点赞数:293 #5: AngularJS:超强 JavaScript MVW 框架 得票数:4.44K 使用数:4.75K 点赞数:323 #6: PHP:流行的通用脚本语言,特别适合 Web 开发 得票数:2.91K 使用数:10.8K 点赞数:176 #7: Python:一门清晰且强大的面向对象的编...
达尔文 发布于 5天前 阅读 8465 评论 12 点赞 7

小程序如约而至,微信小程序玩法大起底!!

博卡君的小程序使用教程
博卡君 发布于 1周前 阅读 6761 评论 9 点赞 5

“全球云计算开源峰会”将于2017年4月19日-20日在国家会议中心举行!

广告
近年来,云计算开源技术逐渐成为云计算发展的重要支撑和导向,改变了以往的信息技术进化模式,引领软件技术标准的发展和创新,深刻影响着整个信息技术产业的发展格局。为进一步探索我国云计算开源技术发展模式,加速云计算与各行业的深度融合,更好地发挥云计算在经济社会创新发展中的支撑和引领作用,促进我国云计算产业快速、健康发展。
云计算开源产业联盟

从零开始成为一名开源程序员,其实只需要九步!

探索技术世界,是一件非常令人兴奋的事情。你会发现有非常非常多的领域,等待你去学习,去深挖。如果有兴趣参与和帮助创造更好的功能,加入到开源的队伍当中,你知道要从哪里开始吗?第一步该做什么?第二十步又是什么? 首先要明白,开源是开放的。这听起来似乎是句废话,但现实中有很多人恰恰就忘记它只是一个文化现象的描述,而不是一家500强公司的名字。不需要去面试或完成注册表或注册表单才能成为开源程序员。只需要做好程序,然后共享代码。在理想情况下保证代码能保持开放,不管它被如何使用。 就是这样,你就是一名开源程序员! 那现在目标已经有了,过程要怎么样呢? 第一步:找到和选择自己的 Skill trees (技能树) 玩过 RPG 游戏的人应该知道,这些游戏中会有“技能树”的概念。 最开始的时候,会获得基础技能,然后不断“升级”和获得新技能,再用新技能获取更新的技能…… 成为一名程序员有点像往你的技能树上不断添加新技能的过程。 先得到一些基本的技能,持续练习直到它们进入第二阶段,然后获得新的技能。最终沿着你选择的技能树不断进步。 在这个过程中你会遇到许多技能树。就像开源有很多切入点,每个人都有自己独特的优势、才能和兴趣。 但是,某些...
编辑部的故事 发布于 4天前 阅读 6853 评论 27 点赞 15

码云周刊:当测试拿起自动化测试工具,开发仿佛看见一场悲剧正在上演!

![码云周刊](https://static.oschina.net/uploads/img/201701/09170848_HsPK.jpg "码云周刊") **类型:自动化测试** 虽然之前小一做过几年开发,但当时对于在公司兴起的自动化测试概念还不是很清楚,觉得是一种很神秘的东西,后来通过向业内资深的测试工程师朋友咨询才恍然大悟。其实自动化测试从广义上来讲,即通过各种工具(程序)的方式来代替或辅助手工测试的行为都可以认为是自动化;从狭义上来说,即通过工具记录或编写脚本的方式模拟手工测试的过程,通过回放或运行脚本来执行测试用例,从而代替人工对系统各种功能进行验证。同时,小一也了解到目前自动化测试大致分为以下几类: 1. 对Web UI 的自动化测试程序 2. 对Windows 窗体UI的自动化测试程序 3. API测试, 比如(测试WCF service, Web API 等) 4. 数据库测试, 比如测试存储过程 5. 接口测试 (这种只能用自动化测) 6. 单元测试 7. 性能测试, 性能测试都需要用到自动化 今天小一为大家带来了各种开源的自动化测试工具,希望能够帮助小伙伴们快速的完成各种测试,在未来的职业道路一帆风顺! ##一、项目名称:基于selenium webdriver 自动化测试框架 ![基于selenium webdriver 自动化测试框架](https://sta...
开源中国码云 发布于 1周前 阅读 5123 评论 3 点赞 4

【源资讯第12期】你们关心的软件排行榜、小程序终于来了,当然还有……黑客!

【一周源资讯(2017.1.7-2017.1.13)】本周,你们最关心的开源中国新增开源软件以及码云热门项目两个排行榜、小程序终于一一上线,随之而来的还有MongoDB 数据库安全事故!
编辑部的故事 发布于 3天前 阅读 4431 评论 3

首发丨微信小程序正式上线 ,首批名单揭晓!

博卡君独家曝料,首批最权威小程序名称揭晓,不愁没得玩了!
博卡君 发布于 1周前 阅读 2515 评论 3 点赞 2

开源中国众包平台派活:微信小程序任务

大家好! 微信小程序开发是现在的一个热点,开源中国众包项目助理接到了第一波小程序开发的订单,作为对接需求方和实施方的平台,我们很希望能打响开局的第一炮, 我们的首批小程序任务将通过直接撮合、定向的方式分派到前期维护的资源池,确保任务能快速完美地交付。 为此我们希望能召集一批真正有“小程序开发实力” & “能保证开发时间”的个人/公司/团队,如果您是: 有微信小程序开发经验的个人/公司/团队 有案例、demo或代码(建议托管在码云上) 个人或者团队能保证一定的兼职时间 满足以上条件的个人/公司/团队,请在开源中国众包平台上: 完善您/公司/团队的资料和服务的内容(点击完善资料); 通过站内信 @开源中国众包平台  或者 发邮件到 zb@oschina.cn , 标题为“微信小程序服务伙伴”,内容为您的开源中国账号。 如您需要找人开发小程序,也可以直接通过我们的项目助理快速发布任务 (点击发任务)。 立即完善个人资料和服务内容 》》》 立即发布小程序开发任务》》》  
开源中国众包平台 发布于 6天前 阅读 3082 评论 4 点赞 2

【软件周刊】Bootstrap 将不再支持 IE 9;Swoole 2.0 正式版发布,协程特性支持 PHP 7

软件周刊(01.01 — 01.07):本周热门软件更新 — Swoole 发布 2.0 正式版,协程特性支持 PHP 7;Bootstrap 发布最后一个 alpha 版本,将不再支持 IE 9;Firefox 51 Beta 11 发布,增加对 WebGL 2 的支持
局长 发布于 1周前 阅读 6179 评论 9 点赞 4

极客君教你破解隔壁妹子的wifi密码,成功率高达90%

首先,给大家推荐一个我自己维护的网站: 开发者网址导航:http://www.dev666.com/ 破解wifi密码听起来很复杂,实际上也不是非常的复杂,极客君(微信公众帐号:极客峰)今天教大家如何破解隔壁妹子的wifi密码。   首先声明:本教程只用于技术交流,请勿用于非法用途。请严格遵循相关法律法规。为了保护本例中被破解密码者信息,本人不透露wifi主人所在地理位置。本人有宽带,也不会使用被破解者的wifi。   目前无线网络加密形式常见的有两种,WEP和WPA/WPA2,WEP破解方法非常简单,但是现在这种加密方式由于不安全基本上见不到了。这里就没有必要讨论WEP破解方法了。   今天我们要破解的正是最难破解的WPA/WPA2加密方式的密码!WPA/WPA2破解的主流方法有Pin码破解、抓包破解。   Pin码破解最简单成功率最高,但是必须要路由器开启wps才行,而且很多最新的路由器都有防pin码破解功能,对于Pin码破解,大家可以用虚拟机安装CDLinux系统,里面集成了相关的软件,网上百度一下就能找到相关的教程。   今天我们要讲的是抓包破解,如果路由器没有开启wps,Pin码破解的方式就不能用了,对于路由器开启了wps功能创建的wifi来说,抓包破解wifi密码的成功率要低于pin码破解,但...
李峰峰 发布于 3个月前 阅读 62160 评论 8 点赞 5

饥荒搞个大新闻

快春节了哎~ 有个水友反馈他刷了一天也没刷出神赐装备呢...... 噗......知道 0.034776311726071439% 是个什么概率么 估计统计学的同学应该知道什么叫做 [极大似然法] 那么好吧,我春节就每人发一个神赐装备吧 当然是单机的,不是联机的哦 活动说明 凡是人物版本为 f1.0.0 以及 f开头以上的版本 无论 正版(steam ,tgp) 还是盗版游戏 在春节当天 ,使用我做的单机人物都会得到一把神赐级别的装备 外形是随机啦(不过你可以多开几个账号嘛~) 当然你拿其他人物是不行的哦,必须是我做的单机人物哦(这么说好像有点厚颜无耻哎~) 就是娱乐一下哈,毕竟最近一直加班好烦哦~~~
龙箨_ 发布于 2天前 阅读 1252

从零开始学做微信小程序,看这些就够了!

随着正式开放公测,微信小程序再次万众瞩目,越来越多的企业和个人涌入到小程序开发的大军中。小程序究竟是什么?适合做小程序的产品有哪些?做小程序需要提前准备什么?如何零基础学做小程序?此文,将列出OSC上优质的资源供大学了解和学习。 一、新手入门 有关小程序的入门,首选自然是官方文档。 它解释了基本概念,有简单的设计指南和开发教程,能让你很好地对小程序有初步理解。  微信小程序产品定位及功能介绍 微信小程序设计指南 微信小程序简易教程 微信小程序运营规范 看完这些你会发现,小程序主打的是比APP更轻量的形态,简单的开发,却接近app的体验,无需下载,扫码打开。那么,一些刚需且高频的金融类、电商类、教育类等其实是不适合接入小程序的。这些对功能的要求都很重,小程序难以承载。而且小程序不能像微信公众号一样被关注、群推送消息以及转发朋友圈,这也就意味着,它没有办法获取用户更多的信息,也不便于深度营销。 小程序适用哪些产品? 功能很轻,用完即走的,如刚需且低频的服务类、旅游类等 基于社交场景的轻应用,或者说基于轻社交的应用 非即时、可异步的应用 初创型企业的MVP产品 开发和设计能力有限的产品 以及更多…… 这些不错的资源...
王练 发布于 2个月前 阅读 11396 评论 20 点赞 26

微信小程序开放公测,快速申请一个小程序账号

微信小程序社区也上线啦
小木学堂 发布于 2个月前 阅读 6194 评论 11 点赞 6

专业金融软件开发

专业金融软件开发 发布于 5天前 阅读 1047

快鸟VPN和快鸟影梭SS 今天免费账号更新

免费VPN账号 可以在Win 10应用商店搜索【快鸟VPN】或【快鸟SS】获取,或者收藏本页面 获取后的帐号需要填入系统设置或者软件才能使用,不是获取了就能连上。 快鸟VPN QQ群:307988452 使用教程点击本页面下方教程,2017.1.14免费账号更新: PPTP连不上的话,请使用手机流量,或者使用影梭。 打不开国外网页,浏览器建议使用Chrome浏览器:https://www.baidu.com/s?wd=chrome浏览器 【VPN:类型PPTP,服务器地址45.32.75.178用户名freevpn密码999999】 【影梭Shadowsocks:服务器地址185.72.156.28端口8989密码999999加密方式:AES-256-CFB】 【L2TP免费失效,如需要使用,请联系客服QQ:3197571508  购买付费帐号】   另外:付费VIP更快更稳定,购买VIP付费独立帐号请加快鸟vpn客服qq:3197571508。遇到VPN连不上的情况请联系客服解决。 点击下方超链接可以查看教程: PPTP: 快鸟VPN Win10 VPN设置教程  快鸟VPN Win7 PPTP VPN设置教程 快鸟VPN WP连接PPTP使用教程 快鸟VPN 安卓Andriod PPTP设置教程 快鸟VPN iOS PPTP设置教程   影梭: 快鸟影梭SS Windows上使用影梭教程 快鸟影梭SS Android上使用影梭教程 快鸟影梭SS iPhone iOS 设置教程 【WP手机不支持影梭SS所以...
快鸟VPN 发布于 2个月前 阅读 44378 点赞 1 打赏 1

2016年最具潜力前端开源项目Top20

在2016年,前端的开源世界越发精彩,Vue的不断壮大,Angular 2的发布,Amaze UI 3.0蓄势待发,黑马级别的Ant Design,这些都给2016年的前端世界注入了不同的鲜活血液。作为一名前端开发者,今天就给大家盘点一下在过去的2016年中,哪些开源项目值得期待,哪些具有成为开发者眼中NO.1的潜力。 因盘点的开源项目不能完全以技术等标准来判定谁高谁低,所以以下项目排名以Github上Star数量排名,且盘点的项目里均是在2016年中保持了较高的活跃度(有重大更新、重大事件、最新发布等),毕竟个人精力和水平有限,如有不足之处还请见谅。   1 Bootstrap 作者:Twitter 官网:http://getbootstrap.com/ Github:https://github.com/twbs/bootstrap Star:10W+ 最近更新:4.0.0-alpha.5(2016.10.19) 介绍:作为老牌的前端框架,Bootstrap 一直保持着不俗的成绩,Bootstrap 4 目前也正处于 Alpha 阶段,预计在 2017 年发布。值得关注的变化是新的通用卡片组件和 Flexbox 网格(查看与常规网格的对比),这使得框架更加现代化,并且让用户使用它进行工作时更加得舒心。   2 React 作者:Facebook 官网:https://facebook.github.io/react/ Github:https://github.com/facebook/react Sta...
淡蓝色风 发布于 4天前 阅读 2756 评论 7

微信小程序模块化开发实践

## 准备 - 了解微信小程序是什么? [微信小程序官方文档](https://mp.weixin.qq.com/debug/wxadoc/dev/index.html) - 了解应用状态管理方案: [Redux], 也是[Flux架构](http://www.ruanyifeng.com/blog/2016/01/flux.html)的具体实现 - 了解Javascript打包工具: [webpack] - 了解ES6/7代码转译(transcompile)工具: [Babel], 原理大致是借助语法分析工具(Esprima之类的), 将代码解析成抽象语法树, 再"重写"成最终的代码. - Javascript测试工具: jest, mocha等等, 请根据需要选择. ## TL;DR; 微信小程序目前版本的API实现需要兼顾方方面面, 所以仍然使用callback写法, 众所周知的`Callback-Hell`是传统js语法上的历史问题, 但毕竟称手的工具是开发效率的源泉. 因此笔者对当前版本的微信小程序API做了简单的封装 [weapp]. 同时, 微信小程序框架本身专注于交互和UI的实现, 并未提供内置的状态管理, 如果众多的异步操作都直接在App或者Page中一一实现, 相信写起来会是一场噩梦, 而且不易于测试, 笔者又因此针对微信小程序实现了一个基于Redux方案的状态管理模块, 用以方便的在小程序中实现应用状态管理 [redux-weapp]. 特别地, 微信小程序构建(编译)时不支持从App scope之外requi...
xixilive 发布于 2周前 阅读 4297 评论 6 点赞 2

一个大对象引起的血案,GC的踩坑实录

踩过很多次GC的坑,基本每次性能问题,除了数据库,其它高发地区就是GC问题了
爱吃大肉包 发布于 3天前 阅读 4132 评论 15 点赞 3

施耐德Galaxy VX-数据中心模块化UPS的理想选择

在云计算、大数据蓬勃发展的时代背景下,作为信息化建设的核心内容,数据中心一直以来都是金融、政府、能源、交通等行业的投入重点。如今,数据中心的数量和规模都在变大,而传统的数据中心在系统的可靠性、能耗管理和制冷系统等方面越来越不能满足业务发展的需要,同时还面临着高能耗和高运营成本的问题。很多数据中心的运营者和拥有者都开始筹划或者正在进行数据中心的升级改造计划,并对UPS供电系统的节能高效提出更高标准。因此具备多模高效、按需部署、快速扩容的模块化UPS供电系统成为数据中心业界人士的首选。   近期施耐德电器发布的全新三相UPS Galaxy VX就是这样一款具备多模高效、按需部署、快速扩容的模块化UPS。   多模高效:多模式操作可实现不同环境下的最佳性能 优势: VX使得客户能够在UPS的全生命周期根据负载曲线、现场环境和运行计划灵活选择以上不同模式运行。   模块化设计:按需部署、快速扩容 借助其模块化的设计理念,其多个内部的“模块”可用于增加容量或冗余;在初始安装后,可以通过增加功率柜体扩容或提高冗余度。每一个功率柜体都能够平均分担负载,并且当发生故障时能够与系统隔离,因而即使一个或多个功率柜体故障后系统仍然能够继续正...
闪闪钥匙 发布于 3周前 阅读 4640

MySQL线程池内幕

在MySQL中,线程池指的是用来管理处理MySQL客户端连接任务的线程的一种机制,我厂用的percona版本已经是集成了线程池,只需要通过如下参数开启即可。
Float_Luuu 发布于 1周前 阅读 1224 打赏 2

一个非常简单易懂的WIFI密码爆破python脚本

我得说明下这个东西一点都不高端,甚至看起来有点糟糕。而且用的是单线程~,因为过几天要搬家了,于是。。
Apathy 发布于 1周前 阅读 904 评论 2 点赞 2

设计模式之策略模式

策略模式的概念: 定义一系列算法,并且独立封装起来,这些算法之间可以相互替换。策略模式主要是管理一堆共性的算法,客户端按照其需求,迅速切换这些算法,并保持可扩展性。 策略模式的本质:分离算法,选择实现。 策略模式实现: 学习设计模式,最好的方法是先理解设计模式概念,然后熟悉一些模式实现的例子。策略模式实现起来,主要需要三个部分:抽象接口、实现算法、上下文。 我们可以针对不同情况修改上下文对象和具体的算法实现。比如可以增加一个抽象类实现作为算法模版。抽象类里面我们可以封装一些公共的方法。这样实现具体的算法的时候,每个算法公共部分就被分离出来。 策略模式的目的是把具体的算法抽离出来,把每个算法独立出来。形成一系列有共同作用的算法组,然后这个算法组里面的算法可以根据实际情况进行相互替换。 策略模式的中心不是如何实现这些算法,而是如何组织和调用这些算法。也就是把我们平时写到一块的算法解耦出来,独立成一个模块,增强程序的扩展性。 策略模式里面的算法通常nag需要数据执行,我们可以根据实际情况把数据放在不同的地方。例如,可以放在上下文类里面,然后每个算法都可以使用这些数据。或者对接口封装一个抽象类,在抽象...
博为峰教研组 发布于 23分钟前

“全球云计算开源峰会”将于2017年4月19日-20日在国家会议中心举行!

广告
近年来,云计算开源技术逐渐成为云计算发展的重要支撑和导向,改变了以往的信息技术进化模式,引领软件技术标准的发展和创新,深刻影响着整个信息技术产业的发展格局。为进一步探索我国云计算开源技术发展模式,加速云计算与各行业的深度融合,更好地发挥云计算在经济社会创新发展中的支撑和引领作用,促进我国云计算产业快速、健康发展。
云计算开源产业联盟

SIP协议的常见命令

一、常用的一些响应消息: 100试呼叫(Trying) 180振铃(Ringing) 181呼叫正在前转(Call is Being Forwarded) 200成功响应(OK) 302临时迁移(Moved Temporarily) 400错误请求(Bad Request) 401未授权(Unauthorized) 403禁止(Forbidden) 404用户不存在(Not Found) 408请求超时(Request Timeout) 480暂时无人接听(Temporarily Unavailable) 486线路忙(Busy Here) 504服务器超时(Server Time-out) 600全忙(Busy Everywhere) 二、SIP通话的常见场景总结   参考博客:http://www.cnblogs.com/gnuhpc/archive/2012/12/10/2812095.html 三、为保证GSM系统和SIP系统的互通,需要有对应的网关设备并能进行消息映射 gsm sip alerting 180 ring call proceding 100 tring connect/release/release complete 200 ok connect ack ack setup invite disconnect bye 架构图: 流程图: 参考论文:http://www.docin.com/p-1243648099.html          ...
HouWeiGui 发布于 27分钟前

ubuntu如何配置软件更新源和更新镜像

### 1、首先备份Ubuntu源列表 ``` sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup ``` 或者 ``` cd /etc/apt/ sudo cp sources.list sources.list.bak ``` ### 2、打开更新源列表 ``` sudo gedit /etc/apt/sources.list ``` ### 3、选择更新源地址 可将更新源地址复制到 sources.list中去(注意文件权限),例如重庆大学源地址(代码)如下: ``` deb http://mirrors.cqu.edu.cn/ubuntu/ trusty main restricted universe multiverse deb http://mirrors.cqu.edu.cn/ubuntu/ trusty-security main restricted universe multiverse deb http://mirrors.cqu.edu.cn/ubuntu/ trusty-updates main restricted universe multiverse deb http://mirrors.cqu.edu.cn/ubuntu/ trusty-proposed main restricted universe multiverse deb http://mirrors.cqu.edu.cn/ubuntu/ trusty-backports main restricted universe multiverse deb-src http://mirrors.cqu.edu.cn/ubuntu/ trusty main restricted universe multiverse deb-src http://mirrors.cqu.edu.cn/ubuntu/ trusty-security main restricted universe multiverse deb-src http://mirrors.cqu.edu.cn/ubuntu...
clgo 发布于 30分钟前

使用yum源安装CDH Hadoop集群

本文主要是记录使用yum安装CDH Hadoop集群的过程,包括HDFS、Yarn、Hive和HBase。本文使用CDH5.4版本进行安装,故下文中的过程都是针对CDH5.4版本的。 0. 环境说明 系统环境: 操作系统:CentOs 6.6 Hadoop版本:CDH5.4 JDK版本:1.7.0_71 运行用户:root 集群各节点角色规划为: 192.168.56.121 cdh1 NameNode、ResourceManager、HBase、Hive metastore、Impala Catalog、Impala statestore、Sentry 192.168.56.122 cdh2 DataNode、SecondaryNameNode、NodeManager、HBase、Hive Server2、Impala Server 192.168.56.123 cdh3 DataNode、HBase、NodeManager、Hive Server2、Impala Server cdh1作为master节点,其他节点作为slave节点。 1. 准备工作 安装 Hadoop 集群前先做好下面的准备工作,在修改配置文件的时候,建议在一个节点上修改,然后同步到其他节点,例如:对于 hdfs 和 yarn ,在 NameNode 节点上修改然后再同步,对于 HBase,选择一个节点再同步。因为要同步配置文件和在多个节点启动服务,建议配置 ssh 无密码登陆。 1.1 配置hosts CDH 要求使用 IPv4,IPv6 不支持,禁用IPv6方法: $ vim /etc/sysctl.conf #disable ipv6...
闪电 发布于 41分钟前

Electron 编译Node.js第三方C++ Addon

比如,要编译leveldown,使用Electron的版本是1.4.14,Nodejs的版本为6.5.0,编译命令如下: 1、配置 node-gyp configure  --target=1.4.14 --arch=x64 --dist-url=https://atom.io/download/atom-shell 2、编译生成 node-gyp build --target=1.4.14 这样编译出来的Addon就可以正常使用啦
酷老头 发布于 43分钟前

Netty就是这么回事(八)

这一章主要介绍如何使用Netty开发自定义通信协议。我们知道有的时候可能我们不想用java的序列化,因为编码效率低,并且我们也不想使用protobuf,因为如果说我们的通信程序都是来自一个平台,那么用protobuf每次都需要重新利用工具生成文件也不是很好,那么就需要开发自己的通信协议。 在开发自定义通信协议之前,我们先来明确这么几个开发目标:首先,我们希望仍然通信在对象和字节之间做转换,对上层来说无感知;其次,我们的自定义协议通信程序也要有半包解码的能力。明确了目的之后,我们如何处理呢?我们需要依次开发自己的编码器和解码器,你可能会觉得以前都是用Netty自带的编解码器,自己开发是不是很困难啊。 当然不是!Netty给我们提供了MessageToByteEncoder和ByteToMessageDecoder这两个编解码器,他们具有半包处理的能力,我们只需要实现协议就可以了。 我们来看一下客户端和服务端的代码。 客户端代码: package com.dlb.note.client; import com.dlb.note.constant.ConstantValue; import com.dlb.note.doj.Request; import io.netty.bootstrap.Bootstrap; import io.netty.buffer.ByteBuf; import io.netty.channel.*; import io.netty.channel.nio.NioEv...
馟苏 发布于 59分钟前 阅读 3

《DirectX游戏程序设计》中的一个简单框架

参考上述文章 http://blog.csdn.net/u012419410/article/details/44706957 Linker->Input:添加以下三个lib文件d3d9.lib  d3dx9.lib Winmm.lib,添加时注意用分号隔开,如下: d3d9.lib;d3dx9.lib;Winmm.lib; LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam) { switch(msg) { case WM_DESTROY:PostQuitMessage(0);break; case WM_KEYDOWN: if(wParam==VK_ESCAPE)DestroyWindow(hwnd);break; } return DefWindowProcW(hwnd,msg,wParam,lParam); }    WNDCLASSW wc;  //这里用WNDCLASSW 代替WNDCLASS; 而这个写法涉及到编码,能正确生成中英文而不发生乱码。所以 HWND hwnd=CreateWindowW(L"Direct3D",L"Direct3D",WS_OVERLAPPEDWINDOW,0,0,width,height,0,0,hInstance,0); Device->Present(0,0,0,0);  //绘制时要有BeginScene和EndScene,绘制后要有Present提交缓存,才能正确显示。...
Nico_Yang 发布于 1小时前 阅读 1

浅释property作用

property
python-yzw 发布于 1小时前

Appium环境搭建

JDK-Android SDK-PYTHON-NODE.JS-Appium
UrAwesome 发布于 1小时前

Consul 入门笔记

原文链接 [http://ironxu.com/?p=321](http://ironxu.com/?p=321) ![](http://oj9fbeo86.bkt.clouddn.com/14837621814991.jpg) Consul [ˈkɑ:nsl] 是一个分布式的服务发现和配置管理工具,本文是根据[consul 入门指南](https://www.consul.io/intro/getting-started/install.html) 整理的笔记。 ## 1. 安装 系统是三台虚拟机: - CentOS release 6.8 - CentOS release 7 - Ubuntu 16.04 LTS 前往 [官网下载地址](https://www.consul.io/downloads.html) 下载相应系统最新的二进制包,复制consul_VERSION_linux_amd64.zip 到3个节点的 consul 目录下。 ``` cd ~/consul unzip consul_VERSION_linux_amd64.zip // 解压得到 consul 二进制文件 // 将consul 软链到环境变量目录 sudo ln -s ~/consul/consul /bin/consul // 验证是否安装成功 consul -h ``` 在3台虚拟机中按相同步骤安装 consul ## 2. 开发模式 consul 开发者模式,可以快速开启单节点的 consul服务,具有完整功能,方便开发测试。 ### 2.1 启动开发模式 开发模式命令: ``` consul agent -dev ``` `consul members` 命令查看当前集群的节点情况 ``` dev@ubuntu ~$ consul members Node Address Status Type Bu...
ironxu 发布于 1小时前

OpenTSDB学习系列2:Naming Schema

上一节,成功搭建了开发环境,现在,我们需要研究下数据上报怎么玩。 首先,寻找官方文档的位置 http://opentsdb.net/docs/build/html/user_guide/index.html http://opentsdb.net/docs/build/html/user_guide/writing/index.html#naming-schema ---段落1 Many metrics administrators are used to supplying a single name for their time series. For example, systems administrators used to RRD-style systems may name their time series webserver01.sys.cpu.0.user. The name tells us that the time series is recording the amount of time in user space for cpu 0 on webserver01. This works great if you want to retrieve just the user time for that cpu core on that particular web server later on. 一些统计分析师习惯于为他们的序列提供单一的名字, 比如 那些习惯于RRD风格的系统管理员也许会命名他们的序列为 webserver01.sys.cpu.0.user. 这个名字告诉我们这个序列用来采样webserver01机器的CPU0的用户态时间。 如果你仅仅想查询特定的web机器的CPU0的用户态时间,这个会工作得很好。 ---段落2 But what if the web server has 64 cores...
强子哥哥 发布于 2小时前

centos oracle 安装 踩坑实录 (三:踩坑与填坑大全)

1.安装oracle所需要的安装包 当你安装ORACLE的时候,缺依赖,按提示来,或者在下面的列表中自检。 yum -y install binutilscompat-libstdc++-33 compat-libstdc++-33.i686 elfutils-libelfelfutils-libelf-devel gcc gcc-c++ glibc glibc.i686 glibc-common glibc-develglibc-devel.i686 glibc-headers ksh libaio libaio.i686 libaio-devellibaio-devel.i686 libgcc libgcc.i686 libstdc++ libstdc++.i686 libstdc++-develmake sysstat 最后还需要安装libXp这个Library,这个一定要安装,否则安装Oracle时会出现java Exception。 yum install libXp libXt.i686 libXtst.i686 有的包是64的有的包是32的,都需要装 2. 修改Linux发行版本信息 由于Oracle10g发行的时候,CentOS6.6没有发行,所以Oracle10g并没有对CentOS6.6确认支持,需要修改相关文件让Oracle10g支持CentOS 6。建议就用oracle 11g。 我们需要手工修改Linux的发行注记,让Oracle 10g支持CentOS6.5。 编辑/etc/redhat-release文件 # vim /etc/redhat-release 将其中的内容CentOS release 6.5 (Final)修改为redhat 4 记得安装好后面改回去。 3.  乱码 你的centos是中文环境,安装时会出现中文乱码,请下以下指令...
ericSM 发布于 2小时前 阅读 1

Intellij IDEA 中maven如何像eclipse那样添加依赖

在pom文件中使用快捷键  alt+insert   点击dependency, 输入想要添加的依赖关键字,比如:输个io   出现下图 可以根据需要选择版本,点击添加完成 添加成功    
DAIFI 发布于 2小时前 阅读 3

【Shell】故事一则,帮助理解和记忆test命令

继续借助Python中关于文件操作的监狱模型   2017年1月16号,狱警Snake准备对他管理的监狱做一下人口调查,调查内容包括:监牢是否满员、囚犯的罪行、囚犯收监时间、监牢黑板报是否清晰。   规划好之后,狱警Snake带着他最得力的走狗test来到监狱,看着管理的井井有条一间间监狱,狱警Snake很高兴,摸摸test的脑袋,微笑的鼓励了一下test。   第一节,愤怒的Snake 作为监狱之窗,Snake很重视监狱的宣传工作,当然这作为亮点工程,也确认给Snake在领导面前赢得了不少好印象。Snake洋洋得意的看了一眼黑板报,一篇篇讲述监狱和谐友爱,管理井井有条的文章(string),Snake满意的点了点头。 test -n string,string不为空,返回True   就在Snake要继续去视察监牢的时候,他余光瞥见了黑板报的一角,那篇自己找别人以囚犯的语气写的夸奖Snake的文章(String)似乎有点不对。 test -z string,string为空,返回True   Snake掏出随身携带的不知道翻阅了多少遍的文章(string1),对着黑板报(string2)一字一句的对比。此时Snake在心里告诉自己,如果一样,这事儿就罢了,如果不一样,就TM的等着好看吧。 test string1 = string2,若相等,回传True test string1 != string2,...
就爱懒蛇 发布于 2小时前 阅读 2

Docker Registry服务器部署配置

Docker Registry服务器部署非常简单,只需要合并运行镜像即可,由于Docker Registry服务器整合很多服务,配置的参数非常多,包括:存储,Redis,Auth,日志,中间件,监控,HTTP,通知,健康检查,代理,兼容性 ## 部署Registry服务器 ```bash docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/data:/var/lib/registry \ registry:2 ``` 部署服务器非常简单,只需要一条命令,映射5000端口到容器,restart机制为总是,并分配当前目录下的data目录作为容器卷,存储镜像数据,你可以配置HTTPS方式的访问,如果需要配置TSL请参考Docker官方文档,如果是在局域网内访问这个方式即可满足需求 ## 测试Registry服务 在测试之前必须要理解镜像的命名,理解下面的两条命令 ```bash docker pull ubuntu ``` 这个命令是从Docker官方的hub拉取ubuntu镜像,这是简写的方式,完整的命令是这样的`docker pull docker.io/library/ubuntu` ```bash docker pull localhost:5000/foo/bar ``` 这个命令是从localhost:5000拉取foo/bar镜像,接下来尝试从Docker Hub拉取镜像并推送到本地的Registry服务器,以Ubuntu为例 从Docker Hub拉取Ubuntu镜像并命名为`localhost:50...
huangyanxiong 发布于 2小时前 阅读 3

Spring IOC原理

        读到一篇关于Spring IOC内容的blog,浅显易懂,拿出来分享一下,很适合java小白,spring小白。         IOC(DI):         其实这个Spring架构核心的概念没有这么复杂,更不像有些书上描述的那样晦涩。Java程序员 都知道:java程序中的每个业务逻辑至少需要两个或以上的对象来协作完成,通常,每个对象在使用他的合 作对象时,自己均要使用像new object() 这样的语法来完成合作对象的申请工作。你会发现:对象间的 耦合度高了。而IOC的思想是:Spring容器来实现这些相互依赖对象的创建、协调工作。对象只需要关系业 务逻辑本身就可以了。从这方面来说,对象如何得到他的协作对象的责任被反转了(IOC、DI)。         这是我对Spring的IOC的体会。DI其实就是IOC的另外一种说法。DI是由Martin Fowler 在2004年初 的一篇论文中首次提出的。他总结:控制的什么被反转了?就是:获得依赖对象的方式反转了。         如果对这一核心概念还不理解:这里引用一个叫Bromon的blog上找到的关于“IoC与DI”的浅显易懂的 答案:     “首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对...
rabbit_mom 发布于 3小时前 阅读 3

使用3个imageView实现无线轮播

#使用3个imageView做无限轮播 ###原理,如果所示: ![输入图片说明](https://static.oschina.net/uploads/img/201701/16181705_9Khf.png "在这里输入图片标题") - 1.给`scrollView`添加个imageView, 分别为: `leftImageView`, `midImageView`, `rightImageView`,设置`midImageView `在屏幕的中间 - 2.监听`scrollView`的`contentOffset`,当用户向左滑动的时候,根据`contentOffset.x`,判断用户滑动的方向,并且设置当前的`index` - 3.在重写`index`的`setter`方法中,设置对应图片应该显示的图片,完成以后,重新把`scrollView`的`contOffset`调整为`midImageView `在屏幕中间 ### 核心代码 - 添加观察者,监听`contentOffset `, ``` #pragma mark - kvo - (void)addObservers { [self.scrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; } - (void)removeObservers { [self.scrollView removeObserver:self forKeyPath:@"contentOffset"]; } - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if ([keyPath isEqualToString:@"conte...
樱黯雨 发布于 3小时前 阅读 1

基于ThinkPHP3.2.3下载文件(几百M以上的)

控制器部分 function downfile($fileurl='http://www.fuhuaqi.com/Upload/activity/mongo.rar') { // 下载本地方式一:会受到文件大小限制 // ob_start(); // $filename=$fileurl; // $date=date("Ymd-H:i:m"); // header( "Content-type: application/octet-stream "); // header( "Accept-Ranges: bytes "); // header( "Content-Disposition: attachment; filename= {$date}.zip"); // $size=@readfile($filename); // header( "Accept-Length: " .$size); // 下载本地方式二:目前下载500M左右的都没问题,就是时间太慢 set_time_limit(0); ini_set('memory_limit', '512M'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename='.basename($fileurl)); header('Content-Transfer-Encoding: binary'); ob_end_clean(); $size = readfile($fileurl); header( "Accept-Length: " .$size); } 方法三:下载之后在指定的地方,但是没有返回,成功之后只是一...
botkenni 发布于 3小时前

msyql php 中文乱码

msyql php 中文乱码
jingshishengxu 发布于 3小时前

mybatis缓存和hibernate缓存

关于mybatis中一级缓存和二级缓存的简单介绍 mybatis的一级缓存:   MyBatis会在表示会话的SqlSession对象中建立一个简单的缓存,将每次查询到的结果结果缓存起来, 当下次查询的时候,如果判断先前有个完全一样的查询,会直接从缓存中直接将结果取出,返回给用户, 不需要再进行一次数据库查询了。   MyBatis会在一次会话的表示----一个SqlSession对象中创建一个本地缓存(local cache), 对于每一次查询,都会尝试根据查询的条件去本地缓存中查找是否在缓存中,如果在缓存中, 就直接从缓存中取出,然后返回给用户;否则,从数据库读取数据,将查询结果存入缓存并返回给用户。   一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。   一级缓存的作用域是同一个SqlSession,在同一个sqlSession中两次执行相同的sql语句,第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次会从缓存中获取数据将不再从数据库查询,从而提高查询效率。当一个sqlSession结束后该sqlSession中的一级缓存也就不存在了。...
brave666 发布于 3小时前 阅读 2

“全球云计算开源峰会”将于2017年4月19日-20日在国家会议中心举行!

广告
近年来,云计算开源技术逐渐成为云计算发展的重要支撑和导向,改变了以往的信息技术进化模式,引领软件技术标准的发展和创新,深刻影响着整个信息技术产业的发展格局。为进一步探索我国云计算开源技术发展模式,加速云计算与各行业的深度融合,更好地发挥云计算在经济社会创新发展中的支撑和引领作用,促进我国云计算产业快速、健康发展。
云计算开源产业联盟

Linux服务器安装Oracle服务端总结

通过ssh远程连接linux服务器,上传Oracle11g的安装包,在无图形化界面的情况,安装Oracle服务器端。本例中linux服务器系统为CentOS6.5.
黎嘉诚 发布于 3天前 阅读 1849 评论 17 点赞 3

一个大对象引起的血案,GC的踩坑实录

踩过很多次GC的坑,基本每次性能问题,除了数据库,其它高发地区就是GC问题了
爱吃大肉包 发布于 3天前 阅读 4132 评论 15 点赞 3

使用 TeamCity 实现持续集成(CI)

持续集成(Continuous Integration),也就是我们经常说的 CI,是现代软件开发技术的基础。本文论述了如何使用 TeamCity 持续集成工具来实现项目的持续集成。
waylau 发布于 7天前 阅读 2213 评论 15 点赞 4

【技术解密】SequoiaDB复制组选举原理说明

1.SequoiaDB介绍 SequoiaDB是国内一款自主研发的分布式文档型数据库。它与过去开发者所熟悉的关系型数据库不同,它的数据结构是BSON类型,一种与JSON结构非常相近的数据类型。 SequoiaDB与关系型数据库除了在数据类型上有比较明显的差异外,还原生支持分布式存储。用户在搭建一个能够应对海量数据以及包含高并发操作的系统时,不再需要像过去一样,在业务层面做复杂的分表分库工作,直接在定义数据表时,明确告诉数据库此表需要根据哪个字段以及何种规则进行分布式存储,数据分布式存储对于用户来说变得透明。用户可以更加专注以业务逻辑开发,而不是关注如何分表分库。 2.SequoiaDB总体架构介绍   图1:SequoiaDB 总体架构示意图 SequoiaDB整个集群中,主要角色构成是三个,协调节点,编目节点和数据节点。 1.1 协调节点 协调节点(英文称呼为Coord),是SequoiaDB的任务分发节点(一般用户成为Master节点),本身不存储任何数据,主要负责接收应用程序的访问请求。所以一般用户在与SequoiaDB打交道时,访问的都是协调节点,对于其他角色的节点,一般情况下是不建议用户去访问的。 在SequoiaDB老版本中,协调节点在数据库集群中是类似孤岛式部署的。怎么说呢,主要因为...
巨杉数据库 发布于 1周前 阅读 753 点赞 1

小程序如约而至,微信小程序玩法大起底!!

博卡君的小程序使用教程
博卡君 发布于 1周前 阅读 6761 评论 9 点赞 5

一个热词推荐的简单实现

#### 为什么想做这个东西 一直好奇像亚马逊这类网站的搜索是如何做到推荐的,最近刚好看到一篇文章:[Redis 与搜索热词推荐](http://blog.jobbole.com/95780/),然而只写了思路。所以,就是想自己实现一个。 先上个效果图,再聊: ![xxx](https://showme.codes/assets/images/index.lsp.gif) P.S. 按四年前,要写这样的前端效果,对于我这个后台开发,还是挺困难的。而现在,简单的学了下Vue.js,再加上同事的小小指点,就搞定了。😂 #### 热词推荐的本质 假如你预先就知道了用户输入:s、sz、shen、深这些字时,就是想搜“深圳”,那是不是说,我们只要提前将这些字放到一个Map结构中,将用户的输入想像出一个key,value就是“深圳”。 说到底,热词推荐的本质就是一个大大的Map。**难点就在于如何更新这个Map**,以至于让用户觉得“智能”,或觉得我们在给他们做“推荐”。 这个Map,常常被人称为“索引”。其实使用“索引” 这个名词也更准确一些。Map中的Key是不能重复的。但是我们数据结构是要求可重复的,为什么呢?因为,在系统中,s、sh、shen、深等等这些都是key,而它们对应的value,可能相同,又可能不同。举个例子: ``` hotword:0>zrevrange s 0 10 1) 鼠蛟...
翟志军 发布于 2周前 阅读 2230 评论 3 点赞 2

微信小程序模块化开发实践

## 准备 - 了解微信小程序是什么? [微信小程序官方文档](https://mp.weixin.qq.com/debug/wxadoc/dev/index.html) - 了解应用状态管理方案: [Redux], 也是[Flux架构](http://www.ruanyifeng.com/blog/2016/01/flux.html)的具体实现 - 了解Javascript打包工具: [webpack] - 了解ES6/7代码转译(transcompile)工具: [Babel], 原理大致是借助语法分析工具(Esprima之类的), 将代码解析成抽象语法树, 再"重写"成最终的代码. - Javascript测试工具: jest, mocha等等, 请根据需要选择. ## TL;DR; 微信小程序目前版本的API实现需要兼顾方方面面, 所以仍然使用callback写法, 众所周知的`Callback-Hell`是传统js语法上的历史问题, 但毕竟称手的工具是开发效率的源泉. 因此笔者对当前版本的微信小程序API做了简单的封装 [weapp]. 同时, 微信小程序框架本身专注于交互和UI的实现, 并未提供内置的状态管理, 如果众多的异步操作都直接在App或者Page中一一实现, 相信写起来会是一场噩梦, 而且不易于测试, 笔者又因此针对微信小程序实现了一个基于Redux方案的状态管理模块, 用以方便的在小程序中实现应用状态管理 [redux-weapp]. 特别地, 微信小程序构建(编译)时不支持从App scope之外requi...
xixilive 发布于 2周前 阅读 4297 评论 6 点赞 2

jdk1.8的HashMap和ConcurrentHashMap

本文针对jdk1.8的ConcurrentHashMap # 1 1.8的HashMap设计 ## 1.1 整体概览 HashMap采用的是**数组+链表+红黑树**的形式。 数组是可以扩容的,链表也是转化为红黑树的,这2种方式都可以承载更多的数据。 用户可以设置的参数:初始总容量默认16,默认的加载因子0.75 初始的数组个数默认是16(用户不能设置的) 容量X加载因子=阈值 一旦目前容量超过该阈值,则执行扩容操作。 什么时候扩容? - 1 当前容量超过阈值 - 2 当链表中元素个数超过默认设定(8个),当数组的大小还未超过64的时候,此时进行数组的扩容,如果超过则将链表转化成红黑树 什么时候链表转化为红黑树?(上面已经提到了) - 当数组大小已经超过64并且链表中的元素个数超过默认设定(8个)时,将链表转化为红黑树 目前形象的表示数组中的一个元素称为一个桶 ## 1.2 put过程 - 根据key计算出hash值 - hash值&(数组长度-1)得到所在数组的index - 如果该index位置的Node元素不存在,则直接创建一个新的Node - 如果该index位置的Node元素是TreeNode类型即红黑树类型了,则直接按照红黑树的插入方式进行插入 - 如果该index位置的Node元素是非TreeNode类型则,则按照链表的形式进行插入操作 链表插入操作完成后...
乒乓狂魔 发布于 2周前 阅读 4845 评论 19 点赞 12

小程序服务端集成微信支付

换取openid->统一下单->发起支付,三步走,其中二次签名比较坑人。
秀杰 发布于 2周前 阅读 4256 评论 30 点赞 9

Mybatis查询延迟加载

本文主要介绍Mybatis延迟加载的原理、启用等。
Elim 发布于 2周前 阅读 3153 评论 3 点赞 2

秒杀抢购思路以及高并发下数据安全

      我们通常衡量一个Web系统的吞吐率的指标是QPS(Query Per Second,每秒处理请求数),解决每秒数万次的高并发场景,这个指标非常关键。举个例子,我们假设处理一个业务请求平均响应时间为100ms,同时,系统内有20台Web服务器,配置MaxClients为500个(表示服务器的最大连接数目)。 那么,我们的Web系统的理论峰值QPS为(理想化的计算方式): 20*500/0.1 = 100000 (10万QPS) 在高并发的实际场景下,机器都处于高负载的状态,在这个时候平均响应时间会被大大增加。 就Web服务器而言,他打开了越多的连接进程,CPU需要处理的上下文切换也越多,额外增加了CPU的消耗,然后就直接导致平均响应时间增加。因此上述的MaxClient数目,要根据CPU、内存等硬件因素综合考虑,绝对不是越多越好。可以通过Apache自带的ab来测试一下,取一个合适的值。然后,我们选择内存操作级别的存储的Redis,在高并发的状态下,存储的响应时间至关重要。网络带宽虽然也是一个因素,不过,这种请求数据包一般比较小,一般很少成为请求的瓶颈。负载均衡成为系统瓶颈的情况比较少,在这里不做讨论哈。 那么问题来了,假设我们的系统,在5w/s的高并发状态下,平均响应时间从100ms变为250ms(实...
拍簧片的小伙伴 发布于 3周前 阅读 3928 评论 37 点赞 7

类型签名在Javascript中的探索

## 简介 类型签名轻轻诉说着函数最不可告人的秘密。短短一行,就能暴露函数的行为和目的。O(∩_∩)O~ ## 作用 虽然js是动态类型的语言,但并不意味否定类型的存在,我们在写代码的时候还是要和Number,Boolean,String,Array等打交道,只不过没有在语言层面做类型检查。 - 简洁美观(对于我来说这一点就足够了) - 降低阅读代码成本 - 有效节约沟通成本(附带装X技能) 以下是描述同一个函数的 - A:fs.readFile 函数有三个参数 第一个是字符串的文件路径,第二个是编码,第三个是回掉函数 回掉函数内部第一个代表错误,第二个代表文件内容(字符串) 无返回值 - B:fs.readFile :: String:路径 -> String:编码 -> (Error -> String) -> () - C:fs.readFile :: String -> String -> (Error -> String) -> () - 编译期间检查错误(js未实现) - 生成文档 ## 简单的例子 ```javascript // Number -> Number -> Number function add(a,b){ return a + b; } ``` `add` 上方的一行注释描述了函数从入参到返回值的过程,即 `add` 函数接受两个数字返回数字 - `Number`代表数字类型 - 最后一个`Number` 代表函数返回值的类型 前面两个`Number`分别代表函数的第一参数和第二个参数 ## 数组 函数...
diqye 发布于 3周前 阅读 1249 评论 10 点赞 2

Lua与ObjC的交互

在这里,我想跟大家分享另外一种脚本语言的交互方式,就是使用Lua与原生的ObjC语言进行交互。
vimfung 发布于 3周前 阅读 1857 评论 7

haproxy和nginx负载均衡分析

出于对负载均衡工具的疑问,分别对haproxy和nginx的负载均衡进行了抓包分析,分析的过程跟大家分享下。先说下对haproxy抓包得到的结论吧:haproxy在负载均衡的一台后端挂掉后,如果还没达到探测的时间点时,请求还会往挂掉的这台转发,请求会丢失。 haproxy负载均衡的实验过程如下: 1: 先看下haproxy的配置。配置inter 20000为20s检测一次,这个是为了更明显的抓下haproxy的负载均衡探测机制。 listen test9090         bind 127.0.0.1:9090         mode tcp         server localhost90 127.0.0.1:90 check inter 20000         server localhost91 127.0.0.1:91 check inter 20000 2: 后端我是用nginx进行测试,看下nginx的配置如下。可在/var/www/html/建个index.html进行测试 server {             listen       90;             listen       91;             location /{                     root /var/www/html;             }     } 先用curl 127.0.0.1:9090进行测试,并在机器上开两个窗口看下抓包是否均衡正常,两个窗口运行的命令分别如下:tcpdump -i lo -nn 'port 90'      tcpdump -i lo -...
鸿弟 发布于 3周前 阅读 4097 评论 19 点赞 6

JDK动态代理详解

本文主要介绍JDK动态代理的基本原理,让大家更深刻的理解JDK Proxy,知其然知其所以然。明白JDK动态代理真正的原理及其生成的过程,我们以后写JDK Proxy可以不用去查demo,就可以徒手写个完美的Proxy。下面首先来个简单的Demo,后续的分析过程都依赖这个Demo去介绍,例子采用JDK1.8运行。 ##JDK Proxy HelloWorld ``` package com.yao.proxy; /** * Created by robin */ public interface Helloworld { void sayHello(); } ``` ``` package com.yao.proxy; import com.yao.HelloWorld; /** * Created by robin */ public class HelloworldImpl implements HelloWorld { public void sayHello() { System.out.print("hello world"); } } ``` ``` package com.yao.proxy; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; /** * Created by robin */ public class MyInvocationHandler implements InvocationHandler{ private Object target; public MyInvocationHandler(Object target) { this.target=target; } public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("method :"+ method...
robin-yao 发布于 3周前 阅读 4544 评论 4 点赞 17 打赏 1

异步编程RxJava-介绍

前言 前段时间写了一篇对协程的一些理解,里面提到了不管是协程还是callback,本质上其实提供的是一种异步无阻塞的编程模式;并且介绍了java中对异步无阻赛这种编程模式的支持,主要提到了Future和CompletableFuture;之后有同学在下面留言提到了RxJava,刚好最近在看微服务设计这本书,里面提到了响应式扩展(Reactive extensions,Rx),而RxJava是Rx在JVM上的实现,所有打算对RxJava进一步了解。 RxJava简介 RxJava的官网地址:https://github.com/ReactiveX/RxJava, 其中对RxJava进行了一句话描述:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. 大意就是:一个在Java VM上使用可观测的序列来组成异步的、基于事件的程序的库。 更详细的说明在Netflix技术博客的一篇文章中描述了RxJava的主要特点: 1.易于并发从而更好的利用服务器的能力。 2.易于有条件的异步执行。 3.一种更好的方式来避免回调地狱。 4.一种响应式方法。 与CompletableFuture对比 之前提到CompletableFuture真正的实现了异步的编程模式,一个比较常见的使用场景: CompletableFuture<In...
ksfzhaohui 发布于 4周前 阅读 3722 评论 10 点赞 3

爬取知乎60万用户信息之后的简单分析

使用 Java+Elasticsearch+Kibana 爬取了知乎 60 万用户数据,做了简单的可视化分析。
brianway 发布于 4周前 阅读 7906 评论 49 点赞 30

一入前端深似海,从此红尘是路人系列第十一弹之如何合理利用Git进行团队协作(二)

久违的Git协作后续终于得空和大家一起分享了,希望可以对大伙有用。
qiangdada 发布于 1个月前 阅读 4838 评论 13 点赞 40 打赏 2

Spring-Boot使用profile来配置不同环境的配置文件

附踩坑记录!!
贺小五 发布于 1个月前 阅读 3942 评论 28 点赞 5 打赏 1

使用spark计算文档相似度

使用spark,TF_IDF计算文档相似度
penngo 发布于 1个月前 阅读 2148 点赞 5
顶部