亚虎娱乐官方app中国

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

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
开源中国 - 找到您想要的开源项目,分享和交流 - 亚虎娱乐官方app_yahu999_亚虎国际pt客户端

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

监听器【第二篇应用】

从第一篇已经讲解过了监听器的基本概念,以及Servlet各种的监听器。这篇博文主要讲解的是监听器的应用。 统计网站在线人数 分析 我们在网站中一般使用Session来标识某用户是否登陆了,如果登陆了,就在Session域中保存相对应的属性。如果没有登陆,那么Session的属性就应该为空。 现在,我们想要统计的是网站的在线人数。我们应该这样做:我们监听是否有新的Session创建了,如果新创建了Sesssion,那么在线人数就应该+1。这个在线人数是整个站点的,所以应该有Context对象保存。 大致思路: 监听Session是否被创建了 如果Session被创建了,那么在Context的域对象的值就应该+1 如果Session从内存中移除了,那么在Context的域对象的值就应该-1. 代码 监听器代码: public class CountOnline implements HttpSessionListener { public void sessionCreated(HttpSessionEvent se) { //获取得到Context对象,使用Context域对象保存用户在线的个数 ServletContext context = se.getSession().getServletContext(); //直接判断Context对象是否存在这个域,如果存在就人数+1,如果不存在,那么就将属性设置到Context域中 ...
zhong1232 亚虎国际pt客户端于 38分钟前 阅读 3

Java 二维数组中的孤岛搜索

Java 二维数组中的孤岛搜索
IamOkay 亚虎国际pt客户端于 58分钟前 阅读 20

73款阿里巴巴亚虎娱乐官方appyahu999详解!

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

【干货】快速搭建CDH的yum本地源的详细过程

为了方便在局域网中安装CDH集群,搭建一个CDH的yum本地源,方便局域网内各节点安装。 在Cloudera的官网中给出了CDH本地源的搭建过程(官网说明文档链接),下面是本人亲自搭建的详细过程,首先要找一台能联网的主机来制作本地源,可自动下载必要的安装包(如果全部都无法联网,则手动下载相关的rpm安装包,只是麻烦了一些,过程是一样的),制作好本地源后该主机再断网给本地局域网作为yum源使用即可。 1、关闭防火墙、关闭selinux service iptables stop chkconfig iptables off [root@test001 selinux]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 2、下载repo文件 根据操作系统下载repo文件(本人使用...
雪饼 亚虎国际pt客户端于 4小时前 阅读 3

Java8 HashMap源码分析

Hashmap是基于hash表的map的实现,使用key-value形式存储键值对,并允许使用 null 值和 null 键,但是key只能有一个为null. Map不保证映射的顺序,其内部是根据hash值去模运算去排列的。hashmap内部使用entry数组作为存储的介质.
EumJi 亚虎国际pt客户端于 6小时前 阅读 5 评论 1

一篇文章看懂Java并发和线程安全(一)

一、前言     长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章。 二、导读     1、为什么有多线程?     2、线程安全描述的本质问题是什么?     3、Java内存模型(JMM)数据可见性问题、指令重排序、内存屏障 三、揭晓答案 1、为什么有多线程     谈到多线程,我们很容易与高性能画上等号,但是并非如此,举个简单的例子,从1加到100,用四个线程计算不一定比一个线程来得快。因为线程的创建和上下文切换,是一笔巨大的开销。     那么设计多线程的初衷是什么呢?来看一个这样的实际例子,计算机通常需要与人来交互,假设计算机只有一个线程,并且这个线程在等待用户的输入,那么在等待的过程中,CPU什么事情也做不了,只能等待,造成CPU的利用率很低。如果设计成多线程,在CPU在等待资源的过程中,可以切到其他的线程上去,提高CPU利用率。     现代处理器大多含有多个CPU核心,那么对于运算量大任务,可以用多线程的方式拆解成多个小任务并发的执行,提高计算的效率。     总结起来无非两点,提高CPU的利用率、...
冷血狂魔 亚虎国际pt客户端于 17小时前 阅读 87

spring cloud eureka server 集群配置 要点

翻看了不少网上的教程   千篇一律 那些该配置 不该配置很模糊 很多都是入门教程  经过个人实践 总结了eureka server 几个要点: springcloud 版本  Dalson.SR4 # eureka server 高可用 配置 要点 eureka.instance.prefer-ip-address 不建议设置为true # eureka.client.registerWithEureka、 eureka.client.fetchRegistry 都要设置为true 默认值都为true # eureka.instance.appname =spring.application.name # 重要 defaultZone 高可用 不要使用ip 应该使用相应的域名DNS来配置 也就是 eureka.instance.hostname 指定DNS   每个分片必须指定hostname  不然当前分片显示不可用 eureka: instance: hostname: cluster1 最后一条很重要 分片是否成功的关键 一定要用dns来配置 windows 下 改host文件  linux 或者其他环境一样 样例配置   采用 3个实例集群  8761->8762->8763->8761     application.yml 如下: 运行指定配置文件spring.profiles.active=配置项   例如在springboot 可执行jar路径下 命令行执行  java -jar discovery-server-1.0-SNAPSHOT.jar --spring.profiles.active=master 启动了master 配置    红字换cluster1 对应启...
NotFound403 亚虎国际pt客户端于 17小时前 阅读 39

JVM你必须知道的那些事儿

一:写在前面 以前从不感觉jvm内部的这一块领域是必须掌握的知识点,大概了解一下就行,甚至可以说是只是知道一些概念化的东西,似乎跟我没有多大关系,但是随着工作年限的不断增加,发现在这件事情真是错了,特别是在当在乞丐环境下跑项目的时候,从代码优化到莫名其妙的错误排查,总归能找到这样那样的原因,回过头来想想,才发现,jvm这块真的很重要,很重要,很重要,重要的事情说三遍,但是依然哪天想起来总是没有好好的深入的去学习,好了伤疤忘了疼。。。。 如今跨入大数据开发领域,却发现调优这块工作无处不在,计算、分析、算法、模式等等似乎总是欠缺点什么东西,得,长痛不如短痛,下功夫深入的了解了一段时间,收货不少,很多东西也就想开了,记录一些核心的部分。 二:初识 不想上来就讲解jvm构成以及组成部分,百度一搜一大堆,没什么心意,先从实际的干饭说起,我们从第一天搞java开发,从来没有想过new了一个对象或者其他的东西后,需要我们手动去管理过他的内存空间释放,因为我们知道java有GC垃圾回收器这哥们的存在,他会帮我们处理好一切,这就好比我是皇帝,我想在哪建个行宫就在哪建,至于打扫战场的事儿,跟我没有关系,有总管专门去处理这件事情,...
寒冰蓝血 亚虎国际pt客户端于 18小时前 阅读 69

Spring事务管理(一)-三种配置方式

当项目的数据需要持久化存储时,不可避免要和数据库交互。在交互过程中,对事务的支持则是尤为重要。JDBC规范支持对事务的操作,在[深入浅出JDBC(一) - Connection与事务介绍](https://my.oschina.net/u/2377110/blog/1601409)一章中简要介绍了JDBC事务相关的概念。JDBC将对不同数据库的交互规范化,包括事务的操作,让开发者可以屏蔽不同数据库的差异使用接口编程。但事务的开启和关闭,以及事务的控制和配置还是需要手动编码控制,未免繁琐且易出错。Spring基于此之上,开放出一套事务管理机制,将开发者从繁琐的事务控制中解脱出来,可以便捷地执行事务控制。然而作为开发者,便捷之后的原理也需要了解,才能更好地把控程序。接下来,我将从Spring事务管理的配置到原理逐步介绍其运行机制,本篇先介绍三种从原始到简化的配置方式。 以mybatis+mysql为基础,基本的xml配置如下 ``` ``` 这里对mybatis的配置就不过多介绍了,事务定义在UserManager层,UserManager中定义一个批量操作的方法,来验证事务。 ``` @Slf4j public class UserManager { @Getter @Setter private UserMapper userMapper; public void batchOperator(){ User user = new User("lily", 25); // 插入...
青离 亚虎国际pt客户端于 18小时前 阅读 37

Vue(二)header组件开发

#### 一、 header 组件开发 之数据的传递 ##### 1. App.vue 引入组件 ``` import header from './components/header/header' ``` ##### 2. App.vue 中注册组件 ``` export default { components:{ v-header:header } } ``` ##### 3. 使用组件 ``` ``` ##### 解释::sell="sellerObj",这里就像一个函数传参一样把sell当成形参,sellerObj就是实参,那么父组件实参是怎么传给子组件的,通过什么传 ##### 4. 父组件向子组件传递数据 ##### 在父组件中需要将sellerObj作为数据导出,子组件通过props从父组件中获得数据,且要指定数据类型 ``` export default { props:{ // 子组件获取 父组件 数据 sell:{ type:Object // 传递的类型 } } } ``` #### 小结: - 子组件在props中创建一个属性,用以接收父组件传过来的值 - 父组件中注册子组件 - 在子组件标签中添加子组件props中创建的属性 - 把需要传给子组件的值赋给该属性 ##### 5. 调用数据 ``` {{sell.name}} {{sell.description + '/' + sell.deliveryTime + '分钟送达'}} ``` 细节问题: ##### support 绑定数据时 加 v-if ='sell.supports' ##### 理由 : 在我们通过axios获取数据前在父组件中创建了一个空的对象sellerObj...
张麻麻 亚虎国际pt客户端于 18小时前 阅读 39

以太坊私链入门

区块链是什么?一句话,它是一种特殊的(非关系型)分布式数据库,这种数据库只能做插入和查找操作,并且没有管理员。
neo-chen 亚虎国际pt客户端于 19小时前 阅读 58

Android 广播优先级研究

Android 广播优先级研究
IamOkay 亚虎国际pt客户端于 19小时前 阅读 13

SpringBoot集成JPA

idea工具,框架springboot,数据库mysql 可根据实体类自动生成数据表 更方便的执行CRUD操作
千里明月 亚虎国际pt客户端于 20小时前 阅读 40 评论 1

Nodejs内存控制详解(上篇)

剖析Nodejs的内存模型以及内存控制、垃圾回收
sunangie 亚虎国际pt客户端于 20小时前 阅读 20

为Hexo博客添加LiveRe评论系统

最近有些网友问我,我的个人博客中的评论系统是怎么添加的,说实话我都有点忘了,毕竟搞了有好长一段时间了,唉不得不说这个遗忘得真是很快。 今天正好有时间,我就把如何为自己的Hexo博客添加评论系统写一篇水文好了。
hansonwang 亚虎国际pt客户端于 21小时前 阅读 14

分布式事务 TCC-Transaction 源码分析 —— 调试环境搭建

摘要: 原创出处 http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/ 「芋道源码」欢迎转载,保留摘要,谢谢! **本文主要基于 TCC-Transaction 1.2.3.3 正式版** - [1. 依赖工具](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [2. 源码拉取](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [3. 初始化数据库](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [4. 启动 capital 项目](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [5. 启动 redpacket 项目](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [6. 启动 order 项目](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) - [666. 彩蛋](http://www.iocoder.cn/TCC-Transaction/build-debugging-environment/) ------- ![](https://user-gold-cdn.xitu.io/2018/1/20/161107247d2b37b4?w=750&h=330&f=jpeg&s=78520) > 🙂🙂🙂关注**微信公众号:【芋道源码】**有福利: > 1. RocketMQ / MyCAT / Sharding-JDBC **所有**源码分析文章列...
芋道源码 亚虎国际pt客户端于 22小时前 阅读 33

深入一致性哈希(Consistent Hashing)算法原理,并附100行代码实现

    本文为实现分布式任务调度系统中用到的一些关键技术点分享——Consistent Hashing算法原理和Java实现,以及效果测试。
echov 亚虎国际pt客户端于 22小时前 阅读 41

Jmockdata3.0.0全新亚虎国际pt客户端,使用说明

Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。单元测试的利器。
寻觅一只耳朵 亚虎国际pt客户端于 22小时前 阅读 48

Activiti 5.22.0 之自由驳回任务实现(亲测)

​ 上篇博文,我们完成一个任务SKIP的实现,说好要给各位看官带来驳回实现的现在,就奉上具体实现和讲解。(其实我感觉我的注释写的已经非常清楚了,哈哈) ​ 依旧是,先说我们的需求和思路。 PS: ​ 从6.0.0降到5.22.0版本的原因因为项目中有一个版本冲突,导致的降级。后期还是以新版本为主。6.0版本的驳回有时间再来搞。 需求: 流程中的审批任务节点可以驳回到之前的任意任务节点 驳回到指定节点的任务之后的轨迹不需要显示 嗯,大致上就是这样的一个需求,根据这个需求,其实我走了很多弯路,但都离不开两点。 思路: 1. 将当前的任务节点的下一个任务节点指定为指定的驳回任务节点 2. 将指定任务(目标任务)节点之后的流程轨迹,清空。 根据这个思路,我追了源码,看了各种Service,Manager等等。因为别人的驳回流程我拿下来发现是有错的,所以就自己研究了起来。现在就直接上代码吧。呸。先上图,没图谁会信你成功了呢? 启动报销流程 返回的是下个任务编号 启动后查询流程轨迹 查询流程中历史任务节点信息 驳回任务到指定任务节点 驳回后查询流程轨迹图 查询驳回的历史任务信息 启动一个新的流程实例 查询新的流程实例的轨迹 完成新的流程实例任务,模拟审批通过 ...
叶云轩 亚虎国际pt客户端于 23小时前 阅读 22

Spring Boot 与 Kotlin 验证web表单信息

《Spring Boot 与 kotlin 实战》 系列之验证web表单信息
quanke_ 亚虎国际pt客户端于 1天前 阅读 34

bboss实现elasticsearch聚合查询案例

bboss 实现elasticsearch聚合查询案例 1.案例介绍 统计特定时间范围内每个应用的总访问量、访问成功数、访问失败数 2.准备工作  参考文档《高性能elasticsearch ORM开发库使用介绍》中的第1章节和第2章节,在自己的工程中导入bboss es依赖包和配置es  参数  3.定义统计dsl 在源码目录下新建文件esmapper/estrace/ESTracesMapper.xml,内容如下 <properties> <!-- 应用汇总统计:总访问量,成功数,失败数 bboss es dao通过名称applicationSumStatic引用脚本 --> <property name="applicationSumStatic"> <![CDATA[ { "query": { "bool": { "filter": [ {"range": { "startTime": { "gte": #[startTime],##统计开始时间 "lt": #[endTime] ##统计截止时间 } } } ] } }, "size":0, ...
bboss 亚虎国际pt客户端于 1天前 阅读 119

一篇文章看懂Java并发和线程安全(一)

一、前言     长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章。 二、导读     1、为什么有多线程?     2、线程安全描述的本质问题是什么?     3、Java内存模型(JMM)数据可见性问题、指令重排序、内存屏障 三、揭晓答案 1、为什么有多线程     谈到多线程,我们很容易与高性能画上等号,但是并非如此,举个简单的例子,从1加到100,用四个线程计算不一定比一个线程来得快。因为线程的创建和上下文切换,是一笔巨大的开销。     那么设计多线程的初衷是什么呢?来看一个这样的实际例子,计算机通常需要与人来交互,假设计算机只有一个线程,并且这个线程在等待用户的输入,那么在等待的过程中,CPU什么事情也做不了,只能等待,造成CPU的利用率很低。如果设计成多线程,在CPU在等待资源的过程中,可以切到其他的线程上去,提高CPU利用率。     现代处理器大多含有多个CPU核心,那么对于运算量大任务,可以用多线程的方式拆解成多个小任务并发的执行,提高计算的效率。     总结起来无非两点,提高CPU的利用率、...
冷血狂魔 亚虎国际pt客户端于 17小时前 阅读 87

Cookie/Session机制详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。   1.1  Cookie机制 在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。 Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在S...
architect刘源源 亚虎国际pt客户端于 3小时前 阅读 17

Java 二维数组中的孤岛搜索

Java 二维数组中的孤岛搜索
IamOkay 亚虎国际pt客户端于 58分钟前 阅读 20

Android传感器HAL头文件sensors.h详细注释

/* Android Sensor HAL头文件分析笔记 */ #ifndef ANDROID_SENSORS_INTERFACE_H /* 此宏的作用就是避免重复包含此头文件 */ #define ANDROID_SENSORS_INTERFACE_H #include <stdint.h> #include <sys/cdefs.h> #include <sys/types.h> #include <hardware/hardware.h> #include <cutils/native_handle.h> /* 定义传感器头文件的版本 */ #define SENSORS_HEADER_VERSION 1 /* 下面这几个宏定义了传感器API的版本 */ #define SENSORS_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1) #define SENSORS_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION_2(0, 1, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION_2(1, 0, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_1 HARDWARE_DEVICE_API_VERSION_2(1, 1, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_2 HARDWARE_DEVICE_API_VERSION_2(1, 2, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_3 HARDWARE_DEVICE_API_VERSION_2(1, 3, SENSORS_HEADER_VERSION) /** * 有关Android传感...
幸福阶梯 亚虎国际pt客户端于 2小时前 阅读 7

python学习 整数

在python中可以赋值十六进制、八进制数。有以下要求。 #16进制数要求以"0x"开头 i = 0x15F print(i) #8进制数要求以“0o”开头 i = 0o21 print(i) #结果 351 17  
乔三爷 亚虎国际pt客户端于 17小时前 阅读 8

A non well formed numeric value encountered

thinkphp5在数据 对象转数组的时候toArray()抛出的异常,
wqzbxh 亚虎国际pt客户端于 16小时前 阅读 7

Python3.6下openCV环境的搭建

我电脑上环境是Pyhon3.6,今天安装了下openCV 记录如下       一.openCV安装包的安装 下载安装包 下载地址:https://opencv.org/releases.html 我下载的版本是3.4.0 下载完成之后得到一个exe文件,双击打开解压到一个路径,推荐直接解压到D盘,后期设置方便一些。 解压之后得到两个文件夹,接下来在环境变量中加入opencv路径:“;D:\opencv\build\x86\vc12\bin” (这一步很多教程都没提,一定要做,不然很多例子跑不起来。别问我怎么知道的,我花了一个多小时才搞明白....) 二.下载opencv库的安装 下载python opencv库 地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 到里面搜opencv,找到自己python版本对应的包,要下载带contrib的包 我64位的系统,python3.6 下的如截图: 下载完成后,注意下文件名,我发现用迅雷下载此文件时,文件名会出现乱码。大家最好把这里文件名复制下,在迅雷里面重新命名下。浏览器好像没这个问题。 whl文件文件名不能改,必须和官方的一致,否则安装会报错。 下载完成后,使用如下命令进行安装。当然你也可以先创建一个虚拟环境 安装numpy    pip install numpy 切换到下载的whl文件所在目录,安装opencv: pip install opencv_p...
乐_然 亚虎国际pt客户端于 16小时前 阅读 7

python3.6 open3.4 人脸识别案例

python3.6 open3.4 人脸识别。搞了半天,记录下走过的坑。 可以检测人脸,还有眼睛。 先上效果: 代码如下: import cv2 import sys import os # Get user supplied values imagePath = './heying5.jpg'#sys.argv[1] # Create the haar cascade faceCascade=cv2.CascadeClassifier('D:\opencv\sources\data\haarcascades\haarcascade_frontalface_default.xml')# eyeCascade = cv2.CascadeClassifier("D:\opencv\sources\data\haarcascades\haarcascade_eye.xml") if # Read the image image = cv2.imread(imagePath)#2 # cv2.imshow("frame" , image) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#3 # cv2.imshow("frame" , gray) # Detect faces in the image faces = faceCascade.detectMultiScale(gray,scaleFactor=1.15,minNeighbors=5,minSize=(5,5)) #flags=cv2.CASCADE_SCALE_IMAGE #faceCascade.detectMultiScale(gray, scaleFactor = 1.3, minNeighbors = 4, minSize = (32, 32)) print("Found {0} faces!".format(len(faces)))#5 for (x, y, w, h) in faces: cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2) #6 roi_gray_img = ...
乐_然 亚虎国际pt客户端于 15小时前 阅读 7 评论 1

技术博客文章的写作思路总结

## 背景 从去年开始陆陆续续的写了一些技术类的文章,把我写作过程的思路记录下。 ## 结构化 结论先行 总论点:一级标题 分论点:二级标题 论述:论点支撑的具体内容 两个典型的场景以及对应的一般性大纲 ## 一个问题的解决过程 - 背景 - 成果 - 调研分析 - 怎么做 - 输入设计实现 - 输出设计实现 - 外部客户端接口设计和实现 - 客户端的调用 - 总结 ## 一个新技术的应用案例 - 背景 - 是什么为什么 - 成果 - 怎么做 - 初始化安装和设置 - 新技术如何在某个特定的业务场景下使用 - 使用到的技术细节解析 - 使用新技术中遇到的坑 - 新技术在客户端集成应用和测试结果展示 - 总结
aron1992 亚虎国际pt客户端于 16小时前 阅读 6

java web project运行找不到主类(eclipse)

运行出错如下图: 解决方法:1.主类右键找到run as,点击run configurations;                  2.打开class[ath选项卡,点击user entries,点击右边的Advanced,出现下图;          3.点击add folders,点击ok;          4.打开eclipse当前项目的.classpath,找到此项,如下图: 5.如我的output path为:build/classses,在eclipse中的folder selection中找到并选择,如图: 6.点击ok,然后run,成功;  
OSC_Zgwsgn 亚虎国际pt客户端于 6小时前 阅读 6

spring cloud & spring boot 全家桶 & maven 标签 dependencyManagement

dependencyManagement
疏影横斜 亚虎国际pt客户端于 6小时前 阅读 6

配置打印MyBatis执行的SQL

![输入图片说明](https://static.oschina.net/uploads/img/201801/21110643_aCKi.png "在这里输入图片标题")
1713716445 亚虎国际pt客户端于 6小时前 阅读 6

【CentOS 7MySQL常用操作5】,Tomcat日志#180121

> hellopasswd --- # Tomcat日志 - ls /usr/local/tomcat/logs - 其中catalina开头的日志为tomcat的综合日志,他记录tomcat服务相关信息,也会记录错误日志 - 其中catalina.日期.log和catalina.out内容相同,前者会每天生成一个新的日志 - host-manager和manager为管理相关的日志,其中host-manager为虚拟主机的管理日志 - localhost和localhost_access为虚拟主机相关日志,其中带access字样的日志为访问日志,不带access字样的为默认虚拟主机的错误日志 - 访问日志默认不会生成,需要server.xml中配置一下 ``` [root@localhost ~]# ls /usr/local/tomcat/logs/ catalina.2018-01-17.log host-manager.2018-01-17.log localhost.2018-01-21.log manager.2018-01-17.log catalina.2018-01-21.log host-manager.2018-01-21.log localhost_access_log.2018-01-17.txt manager.2018-01-21.log catalina.out localhost.2018-01-17.log localhost_access_log.2018-01-21.txt [root@localhost ~]# cd !$ cd /usr/local/tomcat/logs/ ``` 综合日志 catalina.out ``` [root@localhost logs]# tail catalina.out 21-Jan-2018 08:33:02.036 INFO [main] org.apache.coyote.AbstractPro...
hellopasswd 亚虎国际pt客户端于 16小时前 阅读 6

centos7 同时管理多个tomcat

#!/bin/bash   # author: Sean Chow (seanlook7@gmail.com) #  #   # chkconfig: 345 80 15   # description: Multiple tomcats service management script.   # Source function library.   . /etc/rc.d/init.d/functions   # 第几个tomcat tcNo=$1 tcName=tomcat$1 basedir=/apps/test/$tcName tclog=${basedir}/logs/catalina.$(date +%Y-%m-%d).out RETVAL=0   start(){         checkrun           if [ $RETVAL -eq 0 ]; then                   echo "-- Starting tomcat..."                   $basedir/bin/startup.sh                   touch /var/lock/subsys/${tcNo}                 checklog                  status         else                   echo "-- tomcat already running"           fi   }   # 停止某一台tomcat,如果是重启则带re参数,表示不查看日志,等待启动时再提示查看   stop(){         checkrun           if [ $RETVAL -eq 1 ]; then                   echo "-- Shutting down tomcat..."                   $b...
itlzm 亚虎国际pt客户端于 16小时前 阅读 6

Java web运行出错

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'.
OSC_Zgwsgn 亚虎国际pt客户端于 5小时前 阅读 5

源码剖析-sqoop与datax的对比

# 前言 在数据同步见过sqoop,datax,hdata,filesync,这四个工具。分析内部的实现逻辑各有巧思,也收获良多。 Sqoop1和sqoop2 底层数据同步的基本原理是一样的,所以我选择了sqoop1的源码作为分析的切入点。datax和hdata在架构上大同小异,hdata在数据传输借鉴了Disruptor一些内部实现,从Disruptor官网文档介绍让人对的原理及其感兴趣。好东西留待以后慢慢研究,所以选择datax更为一般的实现。filesync是公司内部开发的一个文件同步工具,用于远程文件和hdfs的文件同步 # Sqoop ## 导入 sqoop从数据库同步到hdfs有俩种方式,1,JDBC的连接。2,使用数据库提供的工具 我们以mysql为例子 同步过程分为三个步骤:1,对数据分片;2,读取数据;3,写入数据 ### JDBC 对数据分片采用通用方式,用count聚合函数获取需要同步的数据量nums,获取设置的map数m,nums/m就是每个map需要同步的数据量,见下面代码: ``` //1,对数据进行分片 @Override public List getSplits(JobContext job) throws IOException { ... statement = connection.createStatement(); //获取nums results = statement.executeQuery(getCountQuery()); long count = results.getLong(1); int chunks = C...
osenlin 亚虎国际pt客户端于 3周前 阅读 18

Python代码小片段

写Python写得兴头上,献上几个我常用的,一般人我不告诉他...[doge] 矩阵转置 除了用NumPy,通常使用大可不必杀鸡用牛刀。可以用列表解析: A = [[1, 2, 3, 4], [5, 6, 7, 8]] [[r[c] for r in A] for c in range(len(A[0]))] # output: [[1, 5], [2, 6], [3, 7], [4, 8]] 呐,也可以这样: trans_mat = lambda A: map(list, zip(*A)) list(trans_mat(A)) # output: [[1, 5], [2, 6], [3, 7], [4, 8]] 字典的Key与Value对调 m = {'A': 1, 'B': 2, 'C': 3} invert_map_key_value = lambda m: dict(zip(m.values(), m.keys())) invert_map_key_value(m) # output: {1: 'A', 2: 'B', 3: 'C'} 剔除分隔符 剔除分隔符通常用split: ''.join('A|B|C|D|E|F|G'.split('|')) # output: 'ABCDEFG' 我更喜欢用itertools.islice,因为可以节选字符串: import itertools ''.join(itertools.islice('A|B|C|D|E|F|G', 6, None, 2)) # output: 'DEFG' ''.join(itertools.islice('A|B|C|D|E|F|G', 0, None, 2)) # output: ''ABCDEFG' 捋平列表 这个是终极版的捋平列表方法,支持任意层次的捋平,或全部捋平。 lst = [1, 2, [3, 4], [[5, 6], [8, 9, [19, 29, 39], 900],...
阿豪boy 亚虎国际pt客户端于 14小时前 阅读 4

Ubuntu 开发环境搭建

ubuntu 安装jdk 的两种方式: 1:通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa/源方式安装 1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 2.安装oracle-java-installer  jdk7 sudo apt-get install oracle-java7-installer jdk8 sudo apt-get install oracle-java8-installer 安装器会提示你同意 oracle 的服务条款,选择 ok 然后选择yes 即可 如果你懒,不想自己手动点击.也可以加入下面的这条命令,默认同意条款: JDK7 默认选择条款 echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections JDK8 默认选择条款 echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections  接下会是等待(依个人网速定) 如果你因为防火墙或者其他原因,导致installer 下载速度很慢,可以中断操作.然后下载好相应jdk的tar.gz 包,放在:    /var/cache/oracle-jdk7-installer             (jdk7)     /var/cache/oracle-jdk8-installer   ...
Dylan1009 亚虎国际pt客户端于 8小时前 阅读 5 评论 1

CentOS安装git、nodejs

前段时间买了个XXX vps, 有512M 内存、10G硬盘,每月500G的流量,想想只用来逛Q外世界有点太浪费,想着怎么把它用起来,512M搭个个人博客应该还是跑的起来吧,撘搭看吧,github + hexo + nodejs 先做点准备工作把git和nodejs装了。 推荐一款ssh工具,挺好用的,FinallShell,git和nodejs两款yahu999我都是采用已编译的二进制文件安装的,用到了WinSCP传输到我的vps上,好像用命令也能直接传到vps上面吧,后面再学学。 1. 安装git 因为系统是32位的,所以下载的git版本是32位的2.8.3, 学习了个查看自己系统信息的命令uname -a 和 cat /etc/issus git 和 nodejs 都放在了 usr/local目录 解压 tar -zxvf git-2.8.3.tar.gz 然后  配置 git ,./configure prefix=/usr/local/git 但是抛错了,原因是缺少c的编译工具 gcc 执行 yum -y install gcc  后再次配置okay了, 后面 make && make install 又抛错了 缺少zlib,执行yum install zlib-devel 安装后再次 make && make install 继续抛错 后面一股脑把该装的都装了  yum install perl-ExtUtils-MakeMaker package 执行 yum install gettext-devel 然后再次 make && make install 后okay了 ,想看看git装好没 git --version但是...
hensemlee 亚虎国际pt客户端于 17小时前 阅读 4

dubbo学习笔记 第六章消费者启动注册时抛异常处理

一、异常信息 我在部署消费者那个web应用时,会抛出如上异常,异常大体信息如下: java.lang.IllegalStateException: urls to invokers error .invokerUrls.size :1, invoker.size :0. urls :[dubbo:******] 但是似乎不影响应用使用。 二、异常解决 通过对代码的定位(dubbo 2.5.6)我们发现异常是在 com.alibaba.dubbo.registry.integration.RegistryDirectory这个类的如下代码段抛出: Map<String, Invoker<T>> newUrlInvokerMap = toInvokers(invokerUrls);// 将URL列表转成Invoker列表 Map<String, List<Invoker<T>>> newMethodInvokerMap = toMethodInvokers(newUrlInvokerMap); // 换方法名映射Invoker列表 // state change //如果计算错误,则不进行处理. if (newUrlInvokerMap == null || newUrlInvokerMap.size() == 0) { logger.error(new IllegalStateException("urls to invokers error .invokerUrls.size :" + invokerUrls.size() + ", invoker.size :0. urls :" + invokerUrls.toString())); return; } 由于这段代码对应的方法里面即使正常往下执...
sesamefox 亚虎国际pt客户端于 3个月前 阅读 165

javacsv读写csv文件

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

Nginx日志分割

### 一.使用脚本切割 ##### 编辑脚本 ``` tianshl@tianshl nginx $ vim nginx_log_division.sh ``` ##### 脚本内容 ``` #! /bin/sh # 昨天日期 yesterday=`date -v -1d +%Y%m%d` # 日志目录 log_path="/usr/local/var/log/nginx/" # SDK日志路径 sdk_path=${log_path}sdk # 以天为单位切分日志 mv -f ${sdk_path}.log ${sdk_path}_${yesterday}.log # 重新生成日志文件 pid_path="/usr/local/var/run/nginx.pid" sudo kill -USR1 `cat ${pid_path}` ``` ##### 定时任务 ###### 切换到root身份 ``` tianshl@tianshl nginx $ sudo su root ``` ###### 编辑 crontab ``` sh-3.2# crontab -e ``` ###### crontab 添加一行 ``` 0 0 * * * sh /usr/local/var/log/nginx/nginx_log_division.sh ``` ###### 查看是否添加成功 ``` sh-3.2# crontab -l ``` ### 二.不使用脚本切割 ##### server 段增加以下代码 ``` if ($time_iso8601 ~ "(\d{4})-(\d{2})-(\d{2})") { set $time $1$2$3; } ``` ##### 日志文件路径中增加日期参数 ``` access_log /var/log/nginx/api-$time.log; ``` ##### 举个栗子 ``` events { worker_connections 1024; } http { server { # 监听88端口 listen 88;...
tianshl 亚虎国际pt客户端于 1个月前 阅读 260785

Java递归拷贝文件夹

### 拷贝文件或文件夹 ``` /** * 拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFile(String source, String target) { // 源文件 File sourceFile = new File(source); if (!sourceFile.exists()) { return; } // 目标文件 File targetFile = new File(target); // 文件拷贝 if (sourceFile.isFile()) { copyFromChanel(sourceFile, targetFile); return; } // 文件夹拷贝 if (!targetFile.exists()) { targetFile.mkdirs(); } for (File file: sourceFile.listFiles()) { copyFile(file.getAbsolutePath(), target + File.separator + file.getName()); } } ``` ### 利用文件管道拷贝文件 ``` /** * 利用文件管道拷贝文件 * * @param source 源文件 * @param target 目标文件 */ public void copyFromChanel(File source, File target) { // 文件流 FileInputStream fis = null; FileOutputStream fos = null; // 文件管道 FileChannel fci = null; FileChannel fco = null; try { // 文件流 fis = new FileInputStream(source); fos = new FileOutputStream(target); // 文件管道 fci = fis.getChannel(); fco = fos.getChannel(); ...
tianshl 亚虎国际pt客户端于 1个月前 阅读 258928 点赞 1

image not recognized

image not recognized
tianshl 亚虎国际pt客户端于 3个月前 阅读 606324 点赞 1

Java实现的k-means聚类算法

### 需求 ``` 对MySQL数据库中某个表的某个字段执行k-means算法,将处理后的数据写入新表中。 ``` ### 源码及驱动 ``` http://download.csdn.net/download/xiaobuding007/10203673 ``` ### 源码 ```java import java.sql.*; import java.util.*; /** * @author tianshl * @version 2018/1/13 上午11:13 */ public class Kmeans { // 源数据 private List origins = new ArrayList<>(); // 分组数据 private Map> grouped; // 初始质心列表 private List cores; // 数据源 private String tableName; private String colName; /** * 构造方法 * * @param tableName 源数据表名称 * @param colName 源数据列名称 * @param cores 质心列表 */ private Kmeans(String tableName, String colName,List cores){ this.cores = cores; this.tableName = tableName; this.colName = colName; } /** * 重新计算质心 * * @return 新的质心列表 */ private List newCores(){ List newCores = new ArrayList<>(); for(List v: grouped.values()){ newCores.add(v.stream().reduce(0, (sum, num) -> sum + num) / (v.size() + 0.0)); } Collections.sort(newCores); return newCores; } /...
tianshl 亚虎国际pt客户端于 1周前 阅读 34956

java递归删除文件或文件夹

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

Python库打包到PyPI

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

免费云服务器

如何快速申请免费的阿里云服务器
tianshl 亚虎国际pt客户端于 1个月前 阅读 224990

xxx is not in the sudoers file

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

MacOS 配置Java环境变量

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

JavaScript指定长度和进制的UUID

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

Python随机生成手机号

### 依据 ``` 根据2017年10月份最新的手机号正则进行编码, 正则如下: (13\d|14[579]|15[^4\D]|17[^49\D]|18\d)\d{8} ``` ### 代码 ``` # -*- coding: utf-8 -*- import random def create_phone(): # 第二位数字 second = [3, 4, 5, 7, 8][random.randint(0, 4)] # 第三位数字 third = { 3: random.randint(0, 9), 4: [5, 7, 9][random.randint(0, 2)], 5: [i for i in range(10) if i != 4][random.randint(0, 8)], 7: [i for i in range(10) if i not in [4, 9]][random.randint(0, 7)], 8: random.randint(0, 9), }[second] # 最后八位数字 suffix = random.randint(9999999,100000000) # 拼接手机号 return "1{}{}{}".format(second, third, suffix) # 生成手机号 phone = create_phone() print(phone) ``` ### 运行结果 ``` 13937342780 15835720604 14589505530 ... ``` ### 验证 (使用正则验证) ``` # -*- coding: utf-8 -*- import random import re def create_phone(): # 第二位数字 second = [3, 4, 5, 7, 8][random.randint(0, 4)] # 第三位数字 third = { 3: random.randint(0, 9), 4: [5, 7, 9][random.randint(0, 2)], 5: [i for i in range(10) if i != ...
tianshl 亚虎国际pt客户端于 2个月前 阅读 284703 评论 1

Nginx日志配置及分割

1. 格式化日志内容 2. 日志文件切割
tianshl 亚虎国际pt客户端于 1个月前 阅读 259307 点赞 1

ELK -- Logstash安装与配置

### Logstash ##### 使用yum安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 安装 ``` sudo yum install logstash ``` #### 配置 Logstash ``` # 参考 https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html # input项配置源数据,此处为监听 "/log"目录下满足"insert.*.log"匹配的所有日志文件 # filter项过滤input输入的数据, "insert.*.log"中每条日志形式如:"2018-01-15 | type | cid | src | eventId | reason", 所以使用" | "拆分每条日志 # output项是输出数据,此处为输出至ElasticSearch # 新建配置文件 insert.conf vim conf.d/insert.conf # 内容如下 input { file { path => "/log/insert.*.log" } } filter { mutate{ split=>["message"," | "] add_field => { "date" => "%{[message][0]}" } add_field => { "type" => "%{[message][1]...
tianshl 亚虎国际pt客户端于 6天前 阅读 17566

ELK -- ElasticSearch集群安装、配置及错误处理

### ElasticSearch ``` 现有三台服务器[192.168.1.30, 192.168.1.31, 192.168.1.32],使用这三台服务器搭建ElasticSearch集群 ``` #### CentOS 使用 yum 安装 ###### 编辑 repo ``` vim /etc/yum.repos.d/elasticsearch.repo # 内容如下 [elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md ``` ###### 使用yum安装 ``` yum install elasticsearch ``` ###### 创建用户 ``` useradd elastic ``` ###### 修改权限 ``` # 数据 chown -R elastic:elastic /var/lib/elasticsearch # 日志 chown -R elastic:elastic /var/log/elasticsearch # 配置 chown -R elastic:elastic /etc/elasticsearch chown -R elastic:elastic /etc/sysconfig/elasticsearch # 指令 chown -R elastic:elastic /usr/share/elasticsearch ``` ###### 配置 ``` # 主节点 192.168.1.30 vim /etc/elasticsearch/elasticsearch.yml # 修改以下几项 cluster.name: etl_es node.name: node-30 node.master: true node.d...
tianshl 亚虎国际pt客户端于 6天前 阅读 17364

12 月份新增亚虎娱乐官方app项目:手机都可以变个人监控系统了?

看看亚虎娱乐官方app中国社区 12 月份有哪些值得关注的新增项目:有将手机变成个人监控系统的 Haven,有中文语音对话机器人项目 dingdang-robot,有深度学习的人脸识别系统 DFace,还有中文处理工具包等等。
编辑部的故事 亚虎国际pt客户端于 5天前 阅读 5173 评论 8 点赞 10

解Bug之路-记一次JVM堆外内存泄露Bug的查找

# 解Bug之路-记一次JVM堆外内存泄露Bug的查找 ## 前言 JVM的堆外内存泄露的定位一直是个比较棘手的问题。此次的Bug查找从堆内内存的泄露反推出堆外内存,同时对物理内存的使用做了定量的分析,从而实锤了Bug的源头。笔者将此Bug分析的过程写成博客,以飨读者。 由于物理内存定量分析部分用到了linux kernel虚拟内存管理的知识,读者如果有兴趣了解请看ulk3(《深入理解linux内核第三版》) ## 内存泄露Bug现场 一个线上稳定运行了三年的系统,从物理机迁移到docker环境后,运行了一段时间,突然被监控系统发出了某些实例不可用的报警。所幸有负载均衡,可以自动下掉节点,如下图所示: ![gc_local](https://static.oschina.net/uploads/img/201801/08104437_3KUb.png "gc_local") 登录到对应机器上后,发现由于内存占用太大,触发OOM,然后被linux系统本身给kill了。 ## 应急措施 紧急在出问题的实例上再次启动应用,启动后,内存占用正常,一切Okay。 ## 奇怪现象 当前设置的最大堆内存是1792M,如下所示: ``` -Xmx1792m -Xms1792m -Xmn900m -XX:PermSi ze=256m -XX:MaxPermSize=256m -server -Xss512k ``` 查看操作系统层面的监控,发现内存占用情况如下图所示: ![gc_upper]...
无毁的湖光-Al 亚虎国际pt客户端于 2周前 阅读 3992 评论 64 点赞 31

Nginx+SSL+Tomcat+CDN部署总结,已实践有效~

之前在度娘搜索资料,无意间看到一些个人站点的博客都用了https协议,在浏览器地址栏中被标记为绿色的“安全”,前些天特地给自己负责的小项目升级成https协议,其优点这里不再赘述,小伙伴们可以自行百度,今天把整合部署分享在这里,希望小伙伴们少走弯路~ 效果如下: yahu999版本如下: System Centos 6.5 Nginx Tengine/2.1.2 (nginx/1.6.2) SSL证书 Let's Encrypt 免费SSL证书 Tomcat Apache-tomcat-8.0.47 CDN Cloudflare.com   一、生成SSL证书 首先我们创建一个用来存放letsencrypt生成证书项目的路径并进入: cd /usr/local/letsencrypt 接下来我们克隆letsencrypt项目: git clone https://github.com/letsencrypt/letsencrypt 开始生成SSL证书: ./letsencrypt-auto certonly --standalone --email test@qq.com -d www.test1.com -d www.test2.com --agree-tos 这里一定注意: (1). 域名绑定在国内DNS服务器无法生成,需要先将DNS服务器切换到DNS服务商,例如ClouldFlare、Godaddy、Dnsever后才能正常生成! (2). web服务需要处于关闭状态,注意关闭nginx和80端口的占用!(不间断服务方式生成可以自行百度) (3). -d 代表domain 可以同时生成多个域名对应证书,生...
lu54977212 亚虎国际pt客户端于 6天前 阅读 3046 评论 22 点赞 6

使用Java 8 Optional避免空指针异常

> Optional可以让你的代码具有可读性,且会避免出现空指针异常。 都说没有遇到过空指针异常的程序员不是Java程序员,`null`确实引发过很多问题。Java 8中引入了一个叫做`java.util.Optional`的新类可以避免`null`引起的诸多问题。 我们看一下`null`引用能导致哪些危害。首先创建一个类`Computer`,结构如下图所示: ![输入图片说明](https://static.oschina.net/uploads/img/201801/11143707_99mL.gif "在这里输入图片标题") 当我们调用如下代码会怎样? ``` java String version = computer.getSoundcard().getUSB().getVersion(); ``` 上述代码看似是没有问题的,但是很多计算机(比如,树莓派)其实是没有声卡的,那么调用`getSoundcard()`方法可定会抛出空指针异常了。 一个常规的但是不好的的方法是返回一个null引用来表示计算机没有声卡,但是这就意味着会对一个空引调用`getUSB()`方法,显然会在程序运行过程中抛出控制异常,从而导致程序停止运行。想想一下,当你的程序在客户端电脑上运行时,突然出现这种错是多尴尬的一件事?  伟大计算机科学Tony Hoare曾经写到:"我认为null引用从1965年被创造出来导致了十亿美元的损失。当初使用null引用对我最大的诱...
刘亚涛 亚虎国际pt客户端于 1周前 阅读 3668 评论 30 点赞 5

CSS 埋点统计

# CSS 埋点统计 > 当一个网站或者 App 的规模达到一定程度,需要分析用户在 App 或者网站的相应操作,则需要埋点统计用户行为,这个不用多说,具体实现有 JS 脚本写好埋点事件并调接口,今天 get 到一种新的埋点统计方式保证耳目一新。下面代码简单示范一下。 ``` //index.html CSS埋点 登记须知 1.本次登记仅限于中国地区。 2.完成登记审核通过后,生育登记服务卡可到乡(镇、街道)直接领取,也可选择邮寄到付快递给申请人。 3.申请登记信息需真实完整,如有虚假,申请人将承担相应的法律责任。 访问 ``` ``` //count.php " .$actionName. " 访问时间->" . $time; ?> ``` ![css点击统计](http://upload-images.jianshu.io/upload_images/2287777-c1d479c5171de2d0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ![php代码统计](http://upload-images.jianshu.io/upload_images/2287777-a50bd17a33290204.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **说明** * 当然这种方式使用比较简单的事件埋点。复杂的话还是需要 JS 操作。 * JS 埋点统计用户可以通过浏览器禁用,CSS的话没办法禁用...
杭城小刘 亚虎国际pt客户端于 3天前 阅读 2855 评论 23 点赞 10

Docker-based build pipelines

Docker-based build pipelines Part 1 – Continuous Integration and Testing http://rancher.com/docker-based-build-pipelines-part-1-continuous-integration-and-testing/
openthings 亚虎国际pt客户端于 51分钟前 阅读 2

Java 二维数组中的孤岛搜索

Java 二维数组中的孤岛搜索
IamOkay 亚虎国际pt客户端于 58分钟前 阅读 20

图的最短路径-Dijkstra算法

/** * 统计最短路径的算法 * Dijkstra.统计图中顶点v到其他各顶点的最短路径 * * @param vs 起始顶点,即计算顶点vs到其他顶点的最短路径 * @param prev 前驱顶点数组,即prev[i]的值是顶点vs到顶点i的最短路径所经历的全部顶点中,位于顶点i之前的那个顶点 * @param dist 长度数组,即dist[i]是顶点vs到顶点i的最短路径长度 */ public void dijkstra(int vs, int[] prev, int[] dist) { //flag[i]=true表示顶点vs到顶点i的最短路径已成功获取 boolean[] flag = new boolean[mVexs.length]; //初始化 for (int i = 0; i < mVexs.length; i++) { flag[i] = false; prev[i] = 0; dist[i] = getWeight(vs, i); } //对顶点vs自身进行初始化 flag[vs] = true; dist[vs] = 0; int k = 0; for (int i = 1; i < mVexs.length; i++) { /** * 寻找最小的路径,即在未获取路径的顶点中,寻找离vs最近的顶点k */ int min = INF; for (int j = 0; j ...
啊哈关关 亚虎国际pt客户端于 1小时前

python3 selenium 安装

1.安装  pip install selenium   2. 将浏览器的安装目录加入path   3. 下载驱动包,加入项目,或者设置路径 firefox import time from selenium import webdriver from selenium.webdriver.firefox.firefox_binary import FirefoxBinary # executable_path="geckodriver" 设置路径,默认是项目路径 driver = webdriver.Firefox() # 打开火狐浏览器 driver.get('http://www.baidu.com') # 打开百度界面 driver.find_element_by_id('kw').send_keys('selenium') # 在搜索框内输入想要搜索内容 time.sleep(2) # 浏览器加载需要时间 driver.find_element_by_id('su').click() # 搜索完成   chrom from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.common.keys import Keys import time browser = webdriver.Chrome() # Get local session of Chrome browser.get("http://www.yahoo.com") # Load page assert "Yahoo!" in browser.title elem = browser.find_element_by_name("p") # Find the query box elem.send_keys("seleniumhq" + Keys.RETURN) time.sleep(0.2) # Let the page ...
阿豪boy 亚虎国际pt客户端于 1小时前

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

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

详解数据库三大范式

来自知乎3.8k好评的回答
dotleo 亚虎国际pt客户端于 1小时前

CentOS7 Failed to start LSB: Bring up/down解决方法

刚刚装好的虚拟机突然不能上网了,报错很诡异,具体报错如下: /etc/init.d/network restart Restarting network (via systemctl):  Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details. [失败] 使用systemctl status network.service命令查看结果如下: network.service - LSB: Bring up/down networking Loaded: loaded (/etc/rc.d/init.d/network) Active: failed (Result: exit-code) since 三 2016-08-17 11:34:36 CST; 54s ago Docs: man:systemd-sysv-generator(8) Process: 3847 ExecStart=/etc/rc.d/init.d/network start (code=exited, status=1/FAILURE) 8月 17 11:34:36 python.cn network[3847]: RTNETLINK answers: File exists 8月 17 11:34:36 python.cn network[3847]: RTNETLINK answers: File exists 8月 17 11:34:36 python.cn network[3847]: RTNETLINK answers: File exists 8月 17 11:34:36 python.cn network[3847]: RTNETLINK answers: File exists 8月 17 11:34:36 python.cn network[3847]: RTNETLINK answers: File exists 8月 ...
若虚夜 亚虎国际pt客户端于 1小时前 阅读 1

Java中的四种引用:强引用、软引用、弱引用、虚引用学习笔记

今天在微信公众号看到了一篇文章《Java面试必问,ThreadLocal终极篇》提到了ThreadLocalMap的实现中,key被保存到了WeakReference对象中,这种弱引用可能会导致内存泄露,弱引用有点眼熟但是却又记不起来,然后立马查资料重新学习了下Java中的几种引用,以下链接是传送门 https://mp.weixin.qq.com/s/5gkK_dwDPAOrtHYSLsQzUA 1. 引用定义 一个引用类型的内存数据中存储的数值代表的是另一块内存的起始地址,就称为这块内存代表着一个引用 如 String myName  = "hensemlee"; myName就代表一个引用 2. 引用的类型     a.  强引用     一般我们的代码中普遍存在的就是强引用,如 “ Person p = new Person(); ” 这个p就是强引用,只要强引用存在, new Person() 这个对象则永远不会被gc回收,也就是说当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 如果不使用时,就应该显示弱化引用: p = null; 如果在一个方法中存在强引用: public  void  strongRef() {         Person p = new Person();         ... } p这个引用保存在栈中,而真正的引用内容(new Perso...
hensemlee 亚虎国际pt客户端于 1小时前 阅读 1

关于url中文编码的解决@1.1

改编原博客的时候意外发现查找具体分类和标签的时候出现bug:中文无法显示,全变成问号.. debug之后发现是平台迁移造成的后果,原作者特意的写了一个方法,将中文编码转成utf8,但是新平台上,浏览器传过来的数据本来就是utf8的,所以编码的重写导致乱码; [解决方案] 首先把那个方法给废了: //解码 解决在URL传中文值出现的乱码问题 public static String pareCode(String str) throws UnsupportedEncodingException{ return new String(str.getBytes(“ISO-8859-1”),”utf-8”); } 然后(其实我也被各种编码转换给搞乱了),为了杜绝后患,统一使用utf8,即在request和response中都指定utf8(高速浏览器),除此之外对接mysql的jdbc以及mysql的内置编码都通通utf8!! (之于windows下需要做一些修改才能正确交给终端显示:) mysql> set character_set_results=utf8 ;
失败人士 亚虎国际pt客户端于 1小时前 阅读 1

Android传感器HAL头文件sensors.h详细注释

/* Android Sensor HAL头文件分析笔记 */ #ifndef ANDROID_SENSORS_INTERFACE_H /* 此宏的作用就是避免重复包含此头文件 */ #define ANDROID_SENSORS_INTERFACE_H #include <stdint.h> #include <sys/cdefs.h> #include <sys/types.h> #include <hardware/hardware.h> #include <cutils/native_handle.h> /* 定义传感器头文件的版本 */ #define SENSORS_HEADER_VERSION 1 /* 下面这几个宏定义了传感器API的版本 */ #define SENSORS_MODULE_API_VERSION_0_1 HARDWARE_MODULE_API_VERSION(0, 1) #define SENSORS_DEVICE_API_VERSION_0_1 HARDWARE_DEVICE_API_VERSION_2(0, 1, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_0 HARDWARE_DEVICE_API_VERSION_2(1, 0, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_1 HARDWARE_DEVICE_API_VERSION_2(1, 1, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_2 HARDWARE_DEVICE_API_VERSION_2(1, 2, SENSORS_HEADER_VERSION) #define SENSORS_DEVICE_API_VERSION_1_3 HARDWARE_DEVICE_API_VERSION_2(1, 3, SENSORS_HEADER_VERSION) /** * 有关Android传感...
幸福阶梯 亚虎国际pt客户端于 2小时前 阅读 7

JVM概述

# JVM(Java Virtual Machine)的组成 JVM 是JRE的一部分。他是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆、栈、寄存器等,还有相应的指令系统。Java语言最重要的特点就是跨平台。使用JVM就是为了支持与操作系统无关,实现跨平台。 # JVM内存区域划分 JVM的内部体系结构分为三部分,分别是:类加载器(ClassLoader)子系统,运行时数据区和执行引擎。 ## 类加载器 每一个java虚拟机都由一个类加载器子系统(class loader subSystem),负责加载程序中的类型(类和接口),并赋予唯一的名字。每一个java虚拟机都由一个执行引擎(execution engine)负责执行被加载类中包含的指令。JVM的两种类加载器包括:启动类装载器和用户自定义类装载器,启动类装载器是JVM实现的一部分,用户自定义类装载器则是Java程序的一部分,必须是ClassLoader类的子类。 ## 执行引擎:它或者在执行字节码,或者执行本地方法 ## 运行时数据区:方法区,堆,java栈,PC寄存器,本地方法栈 ![输入图片说明](http://img.blog.csdn.net/20160417014617165 "在这里输入图片标题") ### 方法区和堆由所有线程共享 - 堆:存放所有...
qq948939246 亚虎国际pt客户端于 2小时前 阅读 2

python函数参数传递

可更改(mutable)与不可更改(immutable)对象 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。 python 函数的参数传递: 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响 python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。...
Jack-Shen 亚虎国际pt客户端于 2小时前 阅读 3

在 Ubuntu 下安装“魔灯”教学平台

这是一篇关于如何在 Ubuntu 16.04 上安装 Moodle (“魔灯”)的逐步指南。Moodle (模块化面向对象动态学习环境Modular-object-oriented dynamic learning environment的缩写)是一种自由而亚虎娱乐官方app的学习管理系统,为教师、学生和管理员提供个性化的学习环境。Moodle 由 Moodle 项目创建,由 Moodle 总部[1]统一领导和协调。 Moodle 有很多非常实用的功能,比如: 现代和易于使用的界面 个性化仪表盘 协作工具和活动 一体式日历 简单的文本编辑器 进度跟踪 公告 不胜枚举… 在本教程中,我们将指导您在 Ubuntu 16.04 VPS 上利用 Apache web 服务器、MySQL 和 PHP 7 安装最新版本的 Moodle。(LCTT 译注:在 Ubuntu 的后继版本上的安装也类似。) 1、 通过 SSH 登录 首先,利用 root 用户通过 SSH 登录到 Ubuntu 16.04 VPS: ssh root@IP_Address -p Port_number 2、 更新操作系统yahu999包 运行以下命令更新系统yahu999包并安装一些依赖yahu999: apt-get update && apt-get upgrade apt-get install git-core graphviz aspell 3、 安装 Apache Web 服务器 利用下面命令,从 Ubuntu yahu999仓库安装 Apache Web 服务器: apt-get install apache2 4、 启动 Apache Web 服务器 一旦安装完...
问题终结者 亚虎国际pt客户端于 2小时前 阅读 3

Android动态控制截屏权限

之前网上说只能在setContentView之前设置Window的flags,但是实际测试发现是可以通过代码动态控制的,代码如下: private void setWindowSecure(boolean isSecure) { if (isSecure) { if ((getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SECURE) != 0) { Log.d(TAG, "flag already set secure"); return; } getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); } else { if ((getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_SECURE) == 0) { Log.d(TAG, "flag already set unsecure"); return; } getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } }...
Kingguary 亚虎国际pt客户端于 2小时前 阅读 3

喜大普奔?Linux Journal不用死了

诞生于 1994 年 4 月的 Linux 期刊 Linux Journal 上个月宣布因资金耗尽而停止出版,详情请看此篇文章-Linux Journal 将不再出版。 现在,Linux Journal 宣布它还没有死,事实上活得比以前更滋润了。它宣布得到了运营 Private Internet Access (PIA) VPN 服务的 London Trust Media 的资金资助。PIA 是 freenode 和自由yahu999亚虎娱乐官方app社区的热心支持者,关注 Linux 和隐私、加密、自由、个体自理性,在此基础上重写商业和政府规则,以及各种建设性的黑客技术。Linux Journal 将从 1.x 版走到 2.0 版。 免费提供最新Linux技术教程书籍,为亚虎娱乐官方app技术爱好者努力做得更多更好:http://www.linuxprobe.com/  
linuxprobe16 亚虎国际pt客户端于 2小时前 阅读 2

linux 下FileUtils.copyInputStreamToFile() 上传图片失败

今天公司项目迭代上线,突然图片上传不好使了,检查哪里都没问题,可就是抛出异常,找来找去,找去找来,最后把FileUtils.copyInputStreamToFile()方法换成myfile.transferTo(new File(localFileName))果断好使了,具体原因没有细究,日后补上。
胆小的石头 亚虎国际pt客户端于 2小时前 阅读 2

Cookie/Session机制详解

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。 本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。   1.1  Cookie机制 在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。 而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。 Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在S...
architect刘源源 亚虎国际pt客户端于 3小时前 阅读 17

【干货】快速搭建CDH的yum本地源的详细过程

为了方便在局域网中安装CDH集群,搭建一个CDH的yum本地源,方便局域网内各节点安装。 在Cloudera的官网中给出了CDH本地源的搭建过程(官网说明文档链接),下面是本人亲自搭建的详细过程,首先要找一台能联网的主机来制作本地源,可自动下载必要的安装包(如果全部都无法联网,则手动下载相关的rpm安装包,只是麻烦了一些,过程是一样的),制作好本地源后该主机再断网给本地局域网作为yum源使用即可。 1、关闭防火墙、关闭selinux service iptables stop chkconfig iptables off [root@test001 selinux]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 2、下载repo文件 根据操作系统下载repo文件(本人使用...
雪饼 亚虎国际pt客户端于 4小时前 阅读 3

spring 只读事物 和 没有事物

spring 只读事物和没有事物
随身听1111 亚虎国际pt客户端于 4小时前 阅读 2

SylixOS POSIX trywrlock

SylixOS读写锁
张荣荣 亚虎国际pt客户端于 4小时前 阅读 2

数字图像处理的常用概念和方法

发现一篇文章讲数字图像处理的概念比较通俗易懂的,核心部分摘过来,如下: 图像的基本属性    亮度:也称为灰度,它是颜色的明暗变化,常用 0 %~ 100 % ( 由黑到白 ) 表示。以下三幅图是不同亮度对比。 亮度对图像色彩的影响    对比度:是画面黑与白的比值,也就是从黑到白的渐变层次。比值越大,从黑到白的渐变层次就越多,从而色彩表现越丰富。 对比度对图像色彩表现的影响    直方图:表示图像中具有每种灰度级的象素的个数,反映图像中每种灰度出现的频率。图像在计算机中的存储形式,就像是有很多点组成一个矩阵,这些点按照行列整齐排列,每个点上的值就是图像的灰度值,直方图就是每种灰度在这个点矩阵中出现的次数。我们可以具体看一下下面两个不同图形的灰度直方图:   直方图均衡化    通过灰度变换将一幅图像转换为另一幅具有均衡直方图的图像,即在一定灰度范围内具有相同的象素点数的图像的过程。下面是直方图均衡化前后的图形变化以及直方图变化: 图像的加减运算    两幅图像的加减运算:对图像进行加减运算,就是将图像对应的存储矩形点列上的灰度值进行加减运算。图像相加可以将一幅图像的内容加到另一幅图像上,可以实现二次曝光,也可一...
乐_然 亚虎国际pt客户端于 4小时前 阅读 2

五年架构师讲述RESTful架构风格

在移动互联网的大潮下,随着docker等技术的兴起,『微服务』的概念也越来越被大家接受并应用于实践,日益增多的web service逐渐统一于RESTful 架构风格,如果开发者对RESTful 架构风格不甚了解,则开发出的所谓RESTful API总会貌合神离,不够规范。 本文是我对RESTful 架构风格的一些理解,和大家分享一下,如果有问题,欢迎讨论。   Outline 1. RESTful架构风格 1.1.1 资源 1.1.2 统一接口 1.1.3 URI 1.1.4 无状态 1.1 RESTful架构风格的特点 1.2 ROA、SOA、REST与RPC 1.3 本真REST与hybrid风格 2. 认证机制 2.1 Basic Auth 2.2 Token Auth 2.3 OAuth 3. 总结   1. RESTful架构风格 RESTful架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出。HTTP就是该架构风格的一个典型应用。从其诞生之日开始,它就因其可扩展性和简单性受到越来越多的架构师和开发者们的青睐。一方面,随着云计算和移动计算的兴起,许多企业愿意在互联网上共享自己的数据、功能;另一方面,在企业中,RESTful API(也称RESTful Web服务)也逐渐超越SOAP成为实现SOA的重要手段之一。时至今日,RESTful架构风格已成为企业级服务的标配。 REST即Representat...
Java架构分享 亚虎国际pt客户端于 2天前 阅读 1045 点赞 2

为什么说Web开发和Vue.js是如此的有趣?

![Web Vue.js](http://upload-images.jianshu.io/upload_images/145564-b44a324d5fd42693?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我想告诉你,我开始享受使用Vue.js和进行前端开发的故事。这不应该被理解为一篇关于为什么Vue.js可能比React,Angular或任何你正在考虑的其他Web框架更好的文章。Vuejs是令人惊叹的,但我们生活在一个作为前端开发人员同样令人惊叹的时代。 如果你几年前和我交谈过,我会把自己定位为一个后端开发人员,掌握服务器和数据库管理。面向对象的语言,java和c #,我想找到一种自己需要交付程序时使用的唯一的开发语言,我逐渐了解到更多关于.NET和SQL服务器的堆栈技术。当时我有这样一个概念,前端开发者只是使用右脑的附庸风雅的人,并不是“真正的”编程。 但是,在我最后一次求职,选择很少。特别是工作面试,我看到了自己是如何失败的。那次失败非常令人沮丧,但我从中吸取了不少教训。我获得了一个职位,利用了我在SharePoint的经验。我在SharePoint的经验并不特别:用GUI、工作流等设计页面这个不是我理想中的工作,而是为了生活不得不做的工作。 当我刚开始的时候,我接触过像我过去做过的任何类似的项目。我依靠GUI设计用户...
笔阁 亚虎国际pt客户端于 2天前 阅读 2313 评论 10 点赞 2

使用Heapster和Splunk监控Kubernetes运行性能

Kubernetes已经成为容器编排的事实上的王者,连Docker都已经向K8s女王大人低头。对于Kubernetes的cluster的数据收集和监控已经成为IT运维的一个重要话题。我们今天来看一看如何利用Splunk最新的Metrics Store来对Kubernetes的集群进行性能监控。 部署架构 下图是该方案的部署架构,主要包括: 利用Heapster收集K8s的性能数据,包含CPU,Memory,Network,File System等 利用Heapster的Statsd Sink,发送数据到Splunk的Metrics Store 利用Splunk的搜索命令和仪表盘功能对性能数据进行监控 前期准备 前期主要要准备好两件事: 编译最新的Heapster的镜像,并上传到某个公共的Docker镜像仓库,例如docker hub 在Splunk中配置Metrics Store和对应的网络输入(Network Input UDP/TCP) 这里主要要做的选择是Statsd的传输协议用UDP还是TCP。这里我推荐使用TCP。 最新的Heapster代码支持不同的Backend,包含了log, influxdb, stackdriver, gcp monitoring, gcp logging, statsd, hawkular-metrics, wavefront, openTSDB, kafka, riemann, elasticsearch等等。因为Splunk的Metrics Store支持statsd协议,所以可以很容易的和Heapster集成。 首先我们需要利用最新的heapster代码,编译...
naughty 亚虎国际pt客户端于 4天前 阅读 1495 评论 2 点赞 1

Nginx+SSL+Tomcat+CDN部署总结,已实践有效~

之前在度娘搜索资料,无意间看到一些个人站点的博客都用了https协议,在浏览器地址栏中被标记为绿色的“安全”,前些天特地给自己负责的小项目升级成https协议,其优点这里不再赘述,小伙伴们可以自行百度,今天把整合部署分享在这里,希望小伙伴们少走弯路~ 效果如下: yahu999版本如下: System Centos 6.5 Nginx Tengine/2.1.2 (nginx/1.6.2) SSL证书 Let's Encrypt 免费SSL证书 Tomcat Apache-tomcat-8.0.47 CDN Cloudflare.com   一、生成SSL证书 首先我们创建一个用来存放letsencrypt生成证书项目的路径并进入: cd /usr/local/letsencrypt 接下来我们克隆letsencrypt项目: git clone https://github.com/letsencrypt/letsencrypt 开始生成SSL证书: ./letsencrypt-auto certonly --standalone --email test@qq.com -d www.test1.com -d www.test2.com --agree-tos 这里一定注意: (1). 域名绑定在国内DNS服务器无法生成,需要先将DNS服务器切换到DNS服务商,例如ClouldFlare、Godaddy、Dnsever后才能正常生成! (2). web服务需要处于关闭状态,注意关闭nginx和80端口的占用!(不间断服务方式生成可以自行百度) (3). -d 代表domain 可以同时生成多个域名对应证书,生...
lu54977212 亚虎国际pt客户端于 6天前 阅读 3046 评论 22 点赞 6

火车票抢票代码公开揭秘

火车票抢票代码公开揭秘
闵开慧 亚虎国际pt客户端于 1周前 阅读 6962 评论 52 点赞 12

使用Java 8 Optional避免空指针异常

> Optional可以让你的代码具有可读性,且会避免出现空指针异常。 都说没有遇到过空指针异常的程序员不是Java程序员,`null`确实引发过很多问题。Java 8中引入了一个叫做`java.util.Optional`的新类可以避免`null`引起的诸多问题。 我们看一下`null`引用能导致哪些危害。首先创建一个类`Computer`,结构如下图所示: ![输入图片说明](https://static.oschina.net/uploads/img/201801/11143707_99mL.gif "在这里输入图片标题") 当我们调用如下代码会怎样? ``` java String version = computer.getSoundcard().getUSB().getVersion(); ``` 上述代码看似是没有问题的,但是很多计算机(比如,树莓派)其实是没有声卡的,那么调用`getSoundcard()`方法可定会抛出空指针异常了。 一个常规的但是不好的的方法是返回一个null引用来表示计算机没有声卡,但是这就意味着会对一个空引调用`getUSB()`方法,显然会在程序运行过程中抛出控制异常,从而导致程序停止运行。想想一下,当你的程序在客户端电脑上运行时,突然出现这种错是多尴尬的一件事?  伟大计算机科学Tony Hoare曾经写到:"我认为null引用从1965年被创造出来导致了十亿美元的损失。当初使用null引用对我最大的诱...
刘亚涛 亚虎国际pt客户端于 1周前 阅读 3668 评论 30 点赞 5

Elastic Search搜索引擎在SpringBoot中的实践

## 实验环境 - ES版本:5.3.0 - spring bt版本:1.5.9 首先当然需要安装好elastic search环境,最好再安装上可视化插件 elasticsearch-head来便于我们直观地查看数据。 当然这部分可以参考本人的帖子: 《centos7上elastic search安装填坑记》 https://www.jianshu.com/p/04f4d7b4a1d3 我的ES安装在http://113.209.119.170:9200/ 这个地址(该地址需要配到springboot项目中去) --- ## Spring工程创建 这部分没有特殊要交代的,但有几个注意点一定要当心 - 注意在新建项目时记得勾选web和NoSQL中的Elasticsearch依赖,来张图说明一下吧: ![创建工程时勾选Nosql中的es依赖选项](http://upload-images.jianshu.io/upload_images/9824247-785048db3dca0957.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 项目自动生成以后pom.xml中会自动添加`spring-boot-starter-data-elasticsearch`的依赖: ``` org.springframework.boot spring-boot-starter-data-elasticsearch ``` - 本项目中我们使用亚虎娱乐官方app的基于restful的es java客户端`jest`,所以还需要在pom.xml中添加`jest`依赖: ``` io.searchbox jest ``` - 除此之外还必须添加`jna`的依赖: ``` net.java.dev.jna...
hansonwang 亚虎国际pt客户端于 2周前 阅读 2140 评论 13 点赞 4

前后端分离实践有感

前后端分离并不是什么新鲜事,到处都是前后端分离的实践。然而一些历史项目在从一体化 Web 设计转向前后端分离的架构时,仍然不可避免的会遇到各种各样的问题。由于层出不穷的问题,甚至会有团队质疑,一体化好好的,为什么要前后端分离?
边城 亚虎国际pt客户端于 2周前 阅读 3081 评论 36 点赞 28

再见,Netty!你好,smart-socket!

## 再见,Netty Netty,当前最流行的NIO框架,通信领域开发的不二之选。经过多年的发展,已在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的亚虎娱乐官方app组件也基于Netty的NIO框架构建。目前市面上几乎找不到同类型可以与之媲美的通信框架,但是作为通信技术的爱好者,却向来无法对其产生亲近感。 我并不否认Netty的确是一款优秀的框架,曾经我也自己写过[NIO框架](https://gitee.com/smartdms/smart-socket),深知其实现难度有多大,最终选择了放弃。Netty的出现为广大程序员提供了便利,大大降低了开发高效、稳定服务的难度。至于本人对其无好感,究其原因有以下几点(首先申明一下,本人仅曾经简单使用过netty,并未深入研究): - 复杂;以下代码摘录自[Netty官网](http://netty.io/wiki/user-guide-for-5.x.html),初看代码,应该大部分人对于run方法比较费解。`EventLoopGroup`是干嘛的?`bossGroup`和`workerGroup`是什么关系?`childHandle`入参如此复杂!`ch.pipeline().addLast(new DiscardServerHandler())`实现的是什么功能?等等...。总之,这一个方法会引发你诸多疑惑。 ``` public class DiscardServer { private int p...
三刀蜀黍 亚虎国际pt客户端于 2周前 阅读 5848 评论 69 点赞 10

谈谈ali与Google的Java开发规范

  无规矩不成方圆,编码规范就如同协议,有了Http、TCP等各种协议,计算机之间才能有效地通信,同样的,有了一致的编码规范,程序员之间才能有效地合作。道理大家都懂,可现实中的我们,经常一边吐槽别人的代码,一边写着被吐槽的代码,究其根本,就是缺乏遵从编码规范的意识!多年前,Google亚虎国际pt客户端`Google Java Style`来定义Java编码时应遵循的规范;今年年初阿里则亚虎国际pt客户端`阿里巴巴Java 开发手册`,并随后迭代了多个版本,直至9月份又亚虎国际pt客户端了pdf终极版。这两大互联网巨头的初衷,都是希望能够统一标准,使业界编码达到一致性,提升沟通和研发效率,这对于我们码农无疑是很赞的一笔福利呀。笔者将两份规范都通读了一遍,其中列举的不少细则跟平时的编码习惯基本是符合的,不过还是有不少新奇的收获,忍不住记录在此,供日后念念不忘~ # Java开发规范总览 ## 一、Google Java Style   Google的java开发规范主要分为6大部分:源文件基本规范、源文件结构、代码格式、命名、编程实践和Javadoc,各部分概要如下: >1、源文件基本规范(source file basics):文件名、文件编码、特殊字符的规范要求 >2、源文件结构(source file structure):版权许可信息、package、import、类...
sherlockyb 亚虎国际pt客户端于 2周前 阅读 5173 评论 28 点赞 20

操作系统级虚拟化概述

本文简要介绍了操作系统级虚拟化的概念,并简要阐述了实现操作系统虚拟化所用到的技术Namespace及cgroups的原理及使用方法。
宅蓝三木 亚虎国际pt客户端于 2周前 阅读 1009 评论 3 点赞 3

源码级别解读 mybatis 插件

简介: MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 摘自官网。。 为什么要使用mybatis,相信看这篇文章的童鞋都有所了解,俺这里就多废话几句。在orm框架中,有轻量级的dbutils与mybatis,重量级的有hibernate。 为什么要选择mybatis呢?原因如下: 1.简单,这个无需我多废话。肯定的啊,使用过的童鞋都知道,在dao层定义一个接口,然后定义一个对应的xml(xml中namespace的值对应接口的全限定名就ok。因为mybatis是通过namespaceid去和接口类进行映射,然后使用动态代理创建接口类的实例方法,参见动态代理).   2.结果集映射,我认为这是mybatis做的最牛的一点,也是选择他最大的一个理由 3.完善的缓存机制(mybatis有1级缓存和2级缓存),1级缓存是基于会话的(Session),2级缓存是基于应用级别。这里不做过多阐述,有兴趣的可以参考文章 http://www.iteye.com/topic/1112327/ 4.强大的插件机制。它可以在运行过程中动态...
Autorun 亚虎国际pt客户端于 2周前 阅读 2340 评论 6 点赞 6 打赏 2

前端性能优化(三) 移动端浏览器前端优化策略

前端性能优化是一个很宽泛的概念,本书前面的部分也多多少少提到一些前端优化方法,这也是我们一直在关注的一件重要事情。配合各种方式、手段、辅助系统,前端优化的最终目的都是提升用户体验,改善页面性能,我们常常竭尽全力进行前端页面优化,但却忽略了这样做的效果和意义。先不急于探究前端优化具体可以怎样去做,先看看什么是前端性能,应该怎样去了解和评价前端页面的性能。
ouven 亚虎国际pt客户端于 3周前 阅读 1753 评论 3 点赞 5

Spring Boot缓存实战 Redis + Caffeine 实现多级缓存

在前文我们介绍了如何使用Redis或者Caffeine来做缓存。 - [Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2](http://www.jianshu.com/p/e53c1b60c6e1) - [Spring Boot缓存实战 Caffeine](http://www.jianshu.com/p/c72fb0c787fc) # 问题描述: 通过使用redis和Caffeine来做缓存,我们会发现一些问题。 - 如果只使用redis来做缓存我们会有大量的请求到redis,但是每次请求的数据都是一样的,假如这一部分数据就放在应用服务器本地,那么就省去了请求redis的网络开销,请求速度就会快很多。但是使用redis横向扩展很方便。 - 如果只使用Caffeine来做本地缓存,我们的应用服务器的内存是有限,并且单独为了缓存去扩展应用服务器是非常不划算。所以,只使用本地缓存也是有很大局限性的。 至此我们是不是有一个想法了,两个一起用。将热点数据放本地缓存(一级缓存),将非热点数据放redis缓存(二级缓存)。 # 缓存的选择 - 一级缓存:Caffeine是一个一个高性能的 Java 缓存库;使用 Window TinyLfu 回收策略,提供了一个近乎最佳的命中率。[Caffeine 缓存详解](http://www.jianshu.com/p/9a80c662dac4) - 二级缓存:redis是一高性能、高可用的key-value数据库,支持多...
xiaolyuh 亚虎国际pt客户端于 3周前 阅读 3241 评论 24 点赞 7

spring boot redis分布式锁

> 随着现在分布式架构越来越盛行,在很多场景下需要使用到分布式锁。分布式锁的实现有很多种,比如基于数据库、 _zookeeper_ 等,本文主要介绍使用 _Redis_ 做分布式锁的方式,并封装成spring boot starter,方便使用 #### 一. _Redis_ 分布式锁的实现以及存在的问题 锁是针对某个资源,保证其访问的互斥性,在实际使用当中,这个资源一般是一个字符串。使用 _Redis_ 实现锁,主要是将资源放到 _Redis_ 当中,利用其原子性,当其他线程访问时,如果 _Redis_ 中已经存在这个资源,就不允许之后的一些操作。spring boot使用 _Redis_ 的操作主要是通过 _RedisTemplate_ 来实现,一般步骤如下: 1. 将锁资源放入 _Redis_ (注意是当key不存在时才能放成功,所以使用 _setIfAbsent_ 方法): ``` redisTemplate.opsForValue().setIfAbsent("key", "value"); ``` 2. 设置过期时间 ``` redisTemplate.expire("key", 30000, TimeUnit.MILLISECONDS); ``` 3. 释放锁 ``` redisTemplate.delete("key"); ``` 一般情况下,这样的实现就能够满足锁的需求了,但是如果在调用 _setIfAbsent_ 方法之后线程挂掉了,即没有给锁定的资源设置过期时间,默认是永不过期,那么这个锁就会一直存在。...
J猿 亚虎国际pt客户端于 3周前 阅读 3939 评论 10 点赞 11

SQL优化-第二章-从解释计划层面让SQL飞

# 前言 在第一章,我们谈到加强数据库的设计层面认知可以让SQL的跑得更快,这章我们就谈论下如何从语言层面来提供优化SQL。如果说有一把钥匙能打开SQL优化的大门,那么解释计划就是这样的一把钥匙。什么是解释计划--数据根据统计信息生成的代码执行计划,了解释计划,理解解释计划就能帮助我们理解代码的瓶颈,问题的所在,有的放矢进行优化。Oracle提供了多种解释计划,hive,mongodb,mysql等数据库都提供相似的工具。在第一章的时候,举例子的时候也用到解释计划,刚好借这个机会也来说说解释计划。 # 如何获取解释计划 ## 方式一:explain plan for 用法) 步骤1:explain plan for "你的SQL" 步骤2:select * from table(dbms_xplan.display()); 例子) ``` explain plan for SELECT * FROM t1, t2 WHERE t1.id = t2.t1_id AND t1.n in(18,19); select * from table(dbms_xplan.display()); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------- Plan hash value: 3532430033 ------------------------------------------------------------------------------------------- | Id | Operation | Name | ...
osenlin 亚虎国际pt客户端于 3周前 阅读 1881 点赞 8

手把手教你用1行Python代码实现FTP服务器 -- Pyftpdlib

当你想快速共享一个目录的时候,这是特别有用的,只需要1行代码即可实现。
kangvcar 亚虎国际pt客户端于 3周前 阅读 3446 评论 12 点赞 5

为什么43%前端开发者想学Vue.js

根据[JavaScript 2017前端库状况调查](https://stateofjs.com/2017/front-end/results/) **Vue.js**是开发者最想学的前端库。我在这里说明一下我为什么认为这也是和你一起通过使用Vue构建一个简单的App应用程序的原因。 我最近曾与Evan You,Chris Fritz,Sarah Drasner,和Adam Jahr做了一个介绍视频,而现在你可以在http://vuejs.org首页找到它。以下是该视频的文字版本。 # 伟大的JavaScript迁移 如你所知,**JavaScript**在过去的10年中已经成熟了很多,而且服务器端正常运行的大部分代码已经迁移到浏览器中了。随着这变得越来越复杂,框架也变得越来越有组织性。 ![为什么43%前端开发者想学Vue.js](http://upload-images.jianshu.io/upload_images/145564-47adf719c305dab3?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 我不打算告诉你为什么一个比另一个更好的,虽然在官方网站有一个详细的比较。 **Vue.js**旨在成为一个平易近人,多功能,高性能,可维护性,可测试的JavaScript框架。Vue的目也是为了进步,意思就是如果你有一个现有的应用程序存在只占一个部分的前端,你需要更多的互动体验那么就可以使用Vue。 或者,您也可以从一开始就在前端构建更多的...
笔阁 亚虎国际pt客户端于 3周前 阅读 5201 评论 31 点赞 7

十个实用MySQL函数

十个实用MySQL函数,你要不要进来领走...
andyqian 亚虎国际pt客户端于 3周前 阅读 2671 评论 6 点赞 6

J2EE分布式框架--开发环境部署

环境搭建: 1.环境准备 1.开发工具: Eclipse IDE(建议使用高一点的版本) 2.JDK版本:JDK1.7 3.项目管理: Maven3.1.1 2.安装步骤 1.安装jdk1.7并配置环境变量(相信大家都会做,这里不再做重复的说明) 2.安装maven:maven安装过程就是解压缩的过程(我已经帮大家解压了, 目录:E:\myprj\jeesz-maven\apache-maven-3.1.1),为了方便大家,这边已经提供了相关的安装包,会在打包的目录下共享。
windywindy 亚虎国际pt客户端于 3周前 阅读 1981 点赞 3
顶部