开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

你真的了解For循环吗?一道For循环Java面试题引发的思考

疑问 最近群友抛出了一个面试题,就是下图中的第二题,是关于一个for循环的执行结果的问题,他的代码的执行结果是什么呢?  代码复现 下面的例子和面试题上面的大同小异,是个非常简单的例子。首先这个代码是可以编译通过的,也可以正常执行的。那么执行结果是什么呢?会跟我们猜想的一样吗? /** * Created by baiguantao on 2017/10/20. */ public class T { public static boolean testA(char a){ System.out.print(a); return true; } /** * for循环的一些疑问 * @param args */ public static void main(String[] args) { int i=0; for (testA('a');testA('b')&&(i<2);testA('c')) { i++; testA('d'); } } } 执行结果 abdcbdcb 那么问题来了,为什么是这个结果呢?我们可以借助javap命令反编译我们刚才编译的T.class进行分析。 如果对jvm不了解的可以参阅JVM基础。 反编译 先贴出原版的字节码反编译后的代码,后边会对反编译的文件进行逐行解析,那么我们先来看看上述类反编译后的样子吧。如下所示: C:\Users\temp\IdeaProjects\mix_learn\target\clas...
路上有你0314 发布于 23分钟前 阅读 25

利用Activity实现一个简单的可输入对话框

## 1、需求分析 在应用中这样那样的评论总是少不了的,有的应用是在底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个“摆设”,并不具备输入功能,用户点击它后会弹出一个跳转到一个可以真正编辑的页面或者弹出一个可以输入内容的对话框。比如下面这种效果: [![效果图](https://gitee.com/linyulong/EditDialogDemo/raw/master/%E5%8F%AF%E8%BE%93%E5%85%A5%E5%AF%B9%E8%AF%9D%E6%A1%86.gif "效果图")](https://gitee.com/linyulong/EditDialogDemo/raw/master/%E5%8F%AF%E8%BE%93%E5%85%A5%E5%AF%B9%E8%AF%9D%E6%A1%86.gif "效果图") 这里的效果可以细分为四点: 1. 点击底部的按钮之后会弹出对话框,对话框在布局的底部; 2. 对话框中有输入框EditText,可以输入内容; 3. 对话框弹出后EditText会自动获取焦点,弹出软键盘; 4. 软键盘会把对话框顶上去,便于用户编辑。 一开始我想到的是PopupWindow,但是由于里面有EditText,与软键盘交互起来很是头疼,于是改用了Activity。这样一来我们就可以像用Activity一样使用这个对话框,方便多了。不过毕竟跟我们平时使用的Activity还是有所不同的,特...
Lindroid 发布于 3小时前 阅读 67

jvm - 运行时内存结构

# jvm - 运行时内存结构 注意 : 本系列文章为学习系列,部分内容会取自相关书籍或者网络资源,在文章末尾处会有标注 ## **内存模型示意图** ![Jvm运行时内存结构](https://static.oschina.net/uploads/img/201710/20094601_LPX9.png "Jvm运行时内存结构") ## **每个区域的作用简述** ### **pc寄存器 (program counter)** 每一条java虚拟机线程都有自己的pc寄存器 在任意时刻,一条java虚拟机线程只会执行一个方法的代码,正在被线程执行的方法称为该线程的当前方法 (如果这个方法不是native的,那pc寄存器就保存java虚拟机正在执行的字节码指令的地址) (如果这个方法是natice的,那pc寄存器的值是undefined) pc寄存器的容量至少应当能保存一个returnAddress类型的数据或者一个与平台相关的本地指针的值 ### **虚拟机栈 (virtual machine stack)** 每条java虚拟机线程都有自己私有的java虚拟机栈,这个栈与线程同时创建,用于存储栈帧 (用于存储局部变量与一些尚未算好的结果) 除了栈帧的入栈和出栈之外,不会再受其他因素影响,所以栈帧可以在堆中分配,java虚拟机栈所使用的内存不需要保证是连续的 java虚拟机规范允许java虚拟机栈被实现成固定大小的,也允许根据计算来动态扩展和收缩...
wangkang80 发布于 4小时前 阅读 227 评论 2

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

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

Prometheus 到底 NB 在哪里?- 每天5分钟玩转 Docker 容器技术(84)

理解了多维数据模型,就理解了 Prometheus 的强大。
CloudMAN 发布于 4小时前 阅读 60 评论 2

SpringCloud(第 049 篇)Netflix Eureka 源码深入剖析

1、Eureka Server 提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 2、Eureka Client 是一个Java 客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询负载算法的负载均衡器。 3、在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒),如果Eureka Server在多个心跳周期没有收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除(
HMILYYLIMH 发布于 13小时前 阅读 567 点赞 1

聊聊Vue.js组件间通信的几种姿势

## 写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出。 文章的原地址:[https://github.com/answershuto/learnVue](https://github.com/answershuto/learnVue)。 在学习过程中,为Vue加上了中文的注释[https://github.com/answershuto/learnVue/tree/master/vue-src](https://github.com/answershuto/learnVue/tree/master/vue-src),希望可以对其他想学习Vue源码的小伙伴有所帮助。 可能会有理解存在偏差的地方,欢迎提issue指出,共同学习,共同进步。 ## 什么是Vue组件? [组件 (Component) 是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue.js 的编译器为它添加特殊功能。在有些情况下,组件也可以是原生 HTML 元素的形式,以 is 特性扩展。](https://cn.vuejs.org/v2/guide/components.html) ## Vue组件间通信 ### 父组件向子组件通信 #### 方法一:props 使用[props](https://cn.vuejs.org/v2/guide/components.html#Prop),父组件可以使用props向子组件传递数据。 父组件vue模板father.vue ``` ``` 子组件vue模板child...
染陌同学 发布于 15小时前 阅读 131

git工作流介绍--结合sourcetree

git工作流介绍--结合sourcetree   git分布式版本控制系统   分布式是如何实现的: 服务器上有一个git仓库。完整地克隆服务器上的git仓库生成本地仓库。进行本地开发,开发完成后,提交到本地仓库。在合适的时候将变更推送到服务器仓库。 好处: 完全复制代码库,多备份,服务器仓库损坏也没有影响。 环境完全隔离,本地如何修改都不会影响其他人。 可以离线开发,不需要时时连接服务器。   svn与git的对比 vss--svn--git优缺点   git相关工具 github--一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名github。 stash--企业级Git代码库管理工具 sourcetree--git的界面化工具 SourceTree | Free Git GUI for Mac and Windows   其他众多gui    git工作流指南 开发者开始先克隆中央仓库。在自己的项目拷贝中编辑文件和提交修改;但修改是存在本地的,和中央仓库是完全隔离的。开发者可以把和上游的同步延后到一个方便时间点。 要发布修改到正式项目中,开发者要把本地master分支的修改『推』到中央仓库中,推送(push)操作会把所有还不在中央仓库的本地提交都推上去。     冲突解决 中央仓库代表了正式项目,所以提交历...
sekaiga 发布于 15小时前 阅读 28

Go圣经-临时插入ORM的小trick

orm事务
cdh0805010 发布于 15小时前 阅读 55

如何落地TensorFlow on Kubernetes

TensorFlow 作为最受欢迎的 Deep Learning 框架,已经火到没有朋友,然而在落地时,你会发现 TensorFlow 也并不是那么完美,它面临着资源隔离、进程难于管理、 PS 进程不能自动结束等诸多问题,我们还需要一个分布式框架配合使用才能发挥 Distributed TensorFlow 的真正威力,我想这个任务交给 kubernetes 最合适不过了。这是我在“七牛云 & K8S 技术社区架构师实践日: Kubernetes 落地最佳实践”中分享的关于我在落地 TensorFlow on Kubernetes 项目时的一些总结和思考。
WaltonWang 发布于 23小时前 阅读 303

Go圣经-学习笔记之程序结构

变量声明和生命周期、简单的逃逸分析、指针的作用和flag标准库的简单使用
cdh0805010 发布于 24小时前 阅读 121

数据库中间件 Sharding-JDBC 源码分析 —— JDBC实现与读写分离

摘要: 原创出处 http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/ 「芋道源码」欢迎转载,保留摘要,谢谢! **本文主要基于 Sharding-JDBC 1.5.0 正式版** - [1. 概述](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [2. unspported 包](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3. adapter 包](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3.1 WrapperAdapter](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3.2 AbstractDataSourceAdapter](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3.3 AbstractConnectionAdapter](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3.4 AbstractStatementAdapter](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-write-splitting/) - [3.5 AbstractPreparedStatementAdapter](http://www.iocoder.cn/Sharding-JDBC/jdbc-implement-and-read-...
芋道源码 发布于 1天前 阅读 98

Jetson TX2 安装tensorflow

在Jetson TX2上安装tensorflow,需要在源码编译,至少我看到现在的教程都是在源码上编译,编译的时间会很久.  源码编译安装tensorflow可以参考[我另外一个教程](https://my.oschina.net/u/1046919/blog/1154302),这里主要说一些注意要项. ---- **bazel和tensorflow** bazel 和tensorflow的版本注意不要太高,我这里就是bazel和tensorflow的版本选的太高,导致安装完出现问题,虽然不知道是不是依赖没有打完整的缘故,但是在这里还是建议选择低一些的版本. 我这边选择的是bazel-5.4,tensorflow1.3 ---- **内存空间不足** 网上说编译tensorflow可能会出现内存空间不够用的情况,所以需要做一个交换文件,但是实际上我并没有碰到,但是还是记录一下 ``` #Create an 8GB swapfile fallocate -l 8G swapfile #Change permission of the swapfile chmod 600 swapfile #Create swap area mkswap swapfile #Activate the swap area sudo swapon swapfile # deactive the swap are sudo swapoff swapfile #Confirm swap area being used swapon -s ``` ---- **修改tensorflow/stream_executor/cuda/cuda_gpu_executor.cc** 在tensorflow/stream_executor/cuda/cuda_gpu_...
KyJason 发布于 1天前 阅读 39

“从相遇到深爱-Nodejs”-模块机制

与其他高级语言相比,如Java有类文件,Python有import机制,Ruby有require,PHP有include和require,JavaScript先天就缺乏的一项功能:**模块** ## 1 CommonJS规范 ### 1.1 CommonJS的出发点 Web发展中,浏览器中出现了很多的标准API,这些过程发生在前端,后端JavaScript的规范却远远落后。主要有以下缺陷: - 没有模块库 - 标准库较少。ECMAScript(官方规范)仅定义了部分核心库,对于文件系统、IO流等常见需求却没有标准的API。 - 没有标准接口 - 缺乏包管理系统 Node借鉴CommonJS的Modules规范实现了一套非常易用的模块系统,NPM对Packages规范的完好支持使得Node应用在开发过程中事半功倍。 ### 1.2 CommonJS的模块规范 1.模块引用 ``` var math = require('math'); ``` 使用require将模块引入到当前上下文。 2.模块定义 上下文提供了exports对象用于导出当前模块的方法或者变量,并且它是唯一导出的出口。在模块中,还存在一个module对象,它代表模块自身,而exports是module的属性。在Node中,一个文件就是一个模块。 ``` // math.js exports.add = function(){ var sum = 0, i = 0, args = arguments, l = args.length; while(i < 1){ sum += args[i++]; } return...
sunangie 发布于 2天前 阅读 56

Spring Mybatis实例SqlSessionDaoSupport混用xml配置和注解

一、表(这里用mysql,数据库名为yiibai)  CREATE TABLE `user` ( `id` int(10) UNSIGNED NOT NULL, `name` varchar(64) NOT NULL DEFAULT '', `dept` varchar(254) NOT NULL DEFAULT '', `website` varchar(254) DEFAULT '', `phone` varchar(16) NOT NULL DEFAULT '', `birthday` date DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- -- Indexes for table `user` -- ALTER TABLE `user` ADD PRIMARY KEY (`id`); 二、表相应的实体类User.java以及mybatis表map配置文件User.xml package com.yiibai.mybatis.models; import java.util.Date; public class User { public User(int id, String name, String dept, String phone, String website, Date birthday) { super(); this.id = id; this.name = name; this.dept = dept; this.phone = phone; this.website = website; this.birthday = birthday; } public User() { super(); // TODO 自动生成的构造函数存根 } private int id; private String name; private String dept; private String phone; private String website; private D...
wangxuwei 发布于 2天前 阅读 110 评论 2

JDK容器学习之List: CopyOnWriteArrayList,ArrayList,LinkedList对比

list常用容器小结对比
小灰灰Blog 发布于 2天前 阅读 77 点赞 1

对MySQL复制中断的处理

前言 ———— 在复制中,有时会因为复制报错,而中断复制。通常是因为一个SQL语句在主库执行时是正常的,但同步到从库时,因为各种原因,找不到对应的数据,造成执行SQL失败,报出复制错误。下面主要写了几个常见的错误。   复制中断的情况和处理 ——————————————— 复制中断的情况: 1062错误:在写入数据使,从库已存在了。多出现自增长ID已存在。 1032错误:从库出现少数据,update、delete时,找不到相应的记录。 其他:DDL操作时报错 对这些情况的处理: 遇到该问题,要想到要怎样满足复制,而不是跳过该事务;不建议跳过错误,遇到错误应该修正过来,再连接主库复制,否则从库的数据会越来越不一致! 手工修复操作有些慢,可以针对1062和1032错误,写一个自动化监控改正脚本。 注意:若经常数据不一致,选择业务低峰期,检验一次数据(pt-table-checksum),查看是否数据一致,若检查出太多的数据不一致,该从库就不可再用了,再创建一个从库!   常见的复制错误 ——————————— 【错误码-1062】 处理操作: 处理这种情况,需要和业务协商,或在公司内形成一个规定,遇到这种情况要怎样做(在从库将这条重复数据删除还是补充到主库)。 通常...
star_glm 发布于 2天前 阅读 97 评论 2

Spring cloud 微服务安全解决方案

这里我谈谈在实施微服务项目中的心得,首先项目采用 Spring cloud 方案,Spring cloud 有自己的RestController 控制器,我们需要遵循他的规范开发,这就限制了很多传统的认证加密方法不能应用到 Spring cloud中。
neo-chen 发布于 2天前 阅读 455 评论 3

Go圣经-学习笔记入门bufio.Writer

理解bufio.Writer
cdh0805010 发布于 2天前 阅读 60

python3.x + BeautifulSoup CSDN小爬虫

## 前言 很长一段时间里都想研究下爬虫,说到爬虫,大家比较推存的还是python,奈何第一语言不是python,使用Java做个一些练手后,感觉在解析网页内容上比较繁琐,带着拥抱变化的心态,最终撸完了python的相关基础知识。蹭着知识的新鲜和热乎劲,速度找了CSDN博客来发挥发挥,记录下来,鞭策和监督自己,与努力的小伙伴们共勉。 ## 一.目标 根据指定用户名获取CSDN的博客文章详情,包括文章id,标题,正文,标签,阅读人数,是否原创,并且把数据保存到数据库中。 ## 二.分析 欲善其事,先利其器,抓起数据第一步就是对待抓起数据的网页进行结构分析,步骤为:网页入口->跳转链接->待抓起页 。 ## 三.获取目标链接 ### 1.文章列表页 ![输入图片说明](https://static.oschina.net/uploads/img/201710/21101110_R9W7.png "在这里输入图片标题") ### 2.获取列表页链接 ![输入图片说明](https://static.oschina.net/uploads/img/201710/21103606_IP1x.png "在这里输入图片标题") 分析文章列表页代码,发现当前页所有文章都在一个class='article_list'的div下,故先获取此div,再获取里面所有的文章链接。 ``` def getOnePageLinks(user, no=1): pageLinks=[] url = __rootUrl ...
typistw 发布于 2天前 阅读 6

CSS深入理解之border

大家对基础的border应该非常熟悉了,这篇文章就说点不一样的,更深入点~
娇娇jojojo 发布于 2天前 阅读 349 评论 18 点赞 2 打赏 1

jvm - 运行时内存结构

# jvm - 运行时内存结构 注意 : 本系列文章为学习系列,部分内容会取自相关书籍或者网络资源,在文章末尾处会有标注 ## **内存模型示意图** ![Jvm运行时内存结构](https://static.oschina.net/uploads/img/201710/20094601_LPX9.png "Jvm运行时内存结构") ## **每个区域的作用简述** ### **pc寄存器 (program counter)** 每一条java虚拟机线程都有自己的pc寄存器 在任意时刻,一条java虚拟机线程只会执行一个方法的代码,正在被线程执行的方法称为该线程的当前方法 (如果这个方法不是native的,那pc寄存器就保存java虚拟机正在执行的字节码指令的地址) (如果这个方法是natice的,那pc寄存器的值是undefined) pc寄存器的容量至少应当能保存一个returnAddress类型的数据或者一个与平台相关的本地指针的值 ### **虚拟机栈 (virtual machine stack)** 每条java虚拟机线程都有自己私有的java虚拟机栈,这个栈与线程同时创建,用于存储栈帧 (用于存储局部变量与一些尚未算好的结果) 除了栈帧的入栈和出栈之外,不会再受其他因素影响,所以栈帧可以在堆中分配,java虚拟机栈所使用的内存不需要保证是连续的 java虚拟机规范允许java虚拟机栈被实现成固定大小的,也允许根据计算来动态扩展和收缩...
wangkang80 发布于 4小时前 阅读 227 评论 2

利用Activity实现一个简单的可输入对话框

## 1、需求分析 在应用中这样那样的评论总是少不了的,有的应用是在底部直接加一个EditText和一个Button,让用户输入文字或者表情之后点击按钮提交;而有的虽然也放置了EditText,但仅仅是一个“摆设”,并不具备输入功能,用户点击它后会弹出一个跳转到一个可以真正编辑的页面或者弹出一个可以输入内容的对话框。比如下面这种效果: [![效果图](https://gitee.com/linyulong/EditDialogDemo/raw/master/%E5%8F%AF%E8%BE%93%E5%85%A5%E5%AF%B9%E8%AF%9D%E6%A1%86.gif "效果图")](https://gitee.com/linyulong/EditDialogDemo/raw/master/%E5%8F%AF%E8%BE%93%E5%85%A5%E5%AF%B9%E8%AF%9D%E6%A1%86.gif "效果图") 这里的效果可以细分为四点: 1. 点击底部的按钮之后会弹出对话框,对话框在布局的底部; 2. 对话框中有输入框EditText,可以输入内容; 3. 对话框弹出后EditText会自动获取焦点,弹出软键盘; 4. 软键盘会把对话框顶上去,便于用户编辑。 一开始我想到的是PopupWindow,但是由于里面有EditText,与软键盘交互起来很是头疼,于是改用了Activity。这样一来我们就可以像用Activity一样使用这个对话框,方便多了。不过毕竟跟我们平时使用的Activity还是有所不同的,特...
Lindroid 发布于 3小时前 阅读 67

Prometheus 到底 NB 在哪里?- 每天5分钟玩转 Docker 容器技术(84)

理解了多维数据模型,就理解了 Prometheus 的强大。
CloudMAN 发布于 4小时前 阅读 60 评论 2

Java架构师学习路线

Java架构师,首先要是一个高级java攻城狮,熟练使用各种框架,并知道它们实现的原理。jvm虚拟机原理、调优,懂得jvm能让你写出性能更好的代码;池技术,什么对象池,连接池,线程池……      Java反射技术,写框架必备的技术,但是有严重的性能问题,替代方案java字节码技术;nio,没什么好说的,值得注意的是”直接内存”的特点,使用场景;java多线程同步异步;java各种集合对象的实现原理,了解这些可以让你在解决问题时选择合适的数据结构,高效的解决问题,比如hashmap的实现原理,好多五年以上经验的人都弄不清楚,还有为什扩容时有性能问题?不弄清楚这些原理,就写不出高效的代码,还会认为自己做的很对;总之一句话越基础的东西越重要,很多人认为自己会用它们写代码了,其实仅仅是知道如何调用api而已,离会用还差的远。      熟练使用各种数据结构和算法,数组、哈希、链表、排序树…,一句话要么是时间换空间要么是空间换时间,这里展开可以说一大堆,需要有一定的应用经验,用于解决各种性能或业务上的问题。      熟练使用linux操作系统,必备,没什么好说的 。      熟悉tcp协议,创建连接三次握手和断开连接四次握手的整个过程,不了解的话,无法...
liwei2000 发布于 2小时前 阅读 53

PSI的技术难度在哪里?

PSI是一款基于SaaS模式(Software as a Service软件即服务)的企业管理软件。PSI以商贸企业的核心业务:采购、销售、库存(进销存)为切入点,最终目标是行业化的ERP解决方案。 PSI官网:https://gitee.com/crm8000/PSI   今天我们讨论一下PSI的技术难度在哪里? 1、PSI的技术难度之一:不在局部细节而是整体架构 这是企业管理软件的一个共有的特性:局部细节代码都很简单,但是要总体把握就难度加大。   2、PSI的技术难度之二:把业务建模转化为技术建模 这是个需要不断实践,总结经验的环节。   3、PSI的技术难度之三:让其他人迅速掌握二次开发技术 PSI是开源项目,代码运行任何人完全私有化。如果他人不能迅速掌握二次开发技术,PSI对他们而言就毫无价值。 编写开发文档、提供技术支持服务都是解决这个问题的方法。 看似只是写文档工作,其实从软件工程的角度来看,这是设计性质的工作。把文档写好,是一个实实在在的技术活儿,也是很多软件从业人员不擅长的工作。   4、PSI的技术难度之四:如何处理底层框架的升级 PSI的UI用的是ExtJS 4.2,PHP框架是ThinkPHP 3.2,这两个框架的版本都不是最新版本,要不要升级到最新版本?如果不升级到最新版本,那么以后怎么处理?...
PSI 发布于 2小时前 阅读 46 点赞 2

使用Redis解决“树”形数据的复杂查询

# 使用Redis解决“树”形数据的复杂查询 最近因业务需要,研究了一下树数据结果的存储及查询解决方案。 最初的想法是使用neo4j,可是在网上看了一下开源的不支持集群,感觉用的人不多。 网上也查了一些 [树形结构数据存储方案](https://www.biaodianfu.com/?s=%E6%A0%91%E5%BD%A2%E7%BB%93%E6%9E%84%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E6%96%B9%E6%A1%88) 但每种实现方案都有它的一定局限性。 想了一短时间后,想出了下面的方案: 一、 因为复杂的查询都由Redis来处理,所以数据库表的设计就变得非常简单:tree 表 | 字段名称 | 数据类型 | 备注说明 | | ---- | ---- | ---- | | id | int | 主键 | | parent_id | int | 上级节点ID | 二、Redis的数据存储方案: 把表的数据存储到一个Hash表中,使用表中的id值做为此hash表的key, value值为: { id: 10, parentId: 9, childIds: [11] } ### 代码实现 为了简化测试,这里只演示Redis相关的操作 1. Tree 类定义 public class Tree { private Integer id; private String name; private Integer parentId; private List childIds; } 2. 往Redis中添加测试数据: [@Test](https://my.oschina.net/azibug) public void addTest...
qiujiayu 发布于 2个月前 阅读 1577 评论 9

书终于要出版了

![输入图片说明](https://static.oschina.net/uploads/img/201710/23102150_B0eC.jpg "在这里输入图片标题") 写书是个坑人坑己的事情,不过好歹要出版了。 感谢出版社,感谢公司领导。
闲大赋 发布于 2小时前 阅读 15 评论 4 点赞 2

前后端分离之后,在微信内置浏览器获取openid

微信支付
percy94 发布于 3个月前 阅读 228

beyond compare 4你的30天评估期到期怎么解决

找到beyond Compare 4文件夹下面的BCUnrar.dll,将其删掉或者重命名,再重新打开接着使用
bengozhong 发布于 3个月前 阅读 100

单例模式Java的七种写法

单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例。
楠木楠 发布于 3个月前 阅读 420 点赞 1

2017年9月编程语言排行榜:Java、C与C++三巨头还能统治排行榜?

过去16年来(自2001年起),TIOBE编程语言排行榜的三甲位置一直被Java、C与C++长期占据。C#与Python虽然已经被广泛认定为下一世代的核心编程语言,但在人气方面却仍然未得到充分体现。C#之所以无法进军三甲,主要是因为其在非Windows领域的采用率仍然不够理想。另一方面,Python的动态类型化特性导致开发者们不倾向在大型以及/或者关键性软件系统中加以运用。不过必须承认,三巨头与其它编程语言间的差距正在迅速缩小。而在三巨头逐渐失去压倒性优势之后,未来前景将如何变化目前还很难给出定论。 事实上,目前的趋势显示杂糅使用正步入主流。以单一编程语言开发的应用程序正变得越来越罕见。按照这样的发展进程,未来TIOBE排行榜上还将出现更多人气缩水的语言选项。激动人心的时刻终于到来,相信大家和我们一样,也期待着看到未来几年中各类编程语言将迎来怎样的命运,又有哪些语言能够登上新时代的三甲宝座。 编程语言排行榜 TOP 20 榜单: 前10名编程语言的走势图: 以下是 21-50 编程语言排名: 后 50 名编程语言如下: 4th Dimension/4D, ABC, ActionScript, APL, AutoLISP, Bash, bc, Bourne shell, C shell, CFML, CL (OS/400), Clipper, Clojure, Common Lisp, Eli...
linuxCool 发布于 4小时前 阅读 6

python3.x + BeautifulSoup CSDN小爬虫

## 前言 很长一段时间里都想研究下爬虫,说到爬虫,大家比较推存的还是python,奈何第一语言不是python,使用Java做个一些练手后,感觉在解析网页内容上比较繁琐,带着拥抱变化的心态,最终撸完了python的相关基础知识。蹭着知识的新鲜和热乎劲,速度找了CSDN博客来发挥发挥,记录下来,鞭策和监督自己,与努力的小伙伴们共勉。 ## 一.目标 根据指定用户名获取CSDN的博客文章详情,包括文章id,标题,正文,标签,阅读人数,是否原创,并且把数据保存到数据库中。 ## 二.分析 欲善其事,先利其器,抓起数据第一步就是对待抓起数据的网页进行结构分析,步骤为:网页入口->跳转链接->待抓起页 。 ## 三.获取目标链接 ### 1.文章列表页 ![输入图片说明](https://static.oschina.net/uploads/img/201710/21101110_R9W7.png "在这里输入图片标题") ### 2.获取列表页链接 ![输入图片说明](https://static.oschina.net/uploads/img/201710/21103606_IP1x.png "在这里输入图片标题") 分析文章列表页代码,发现当前页所有文章都在一个class='article_list'的div下,故先获取此div,再获取里面所有的文章链接。 ``` def getOnePageLinks(user, no=1): pageLinks=[] url = __rootUrl ...
typistw 发布于 2天前 阅读 6

SpringCloud(第 014 篇)电影 Ribbon 微服务集成 Hystrix 断路器实现失败快速响应,达到熔断效果

1、Hystrix 断路器的原理很简单,如同电力过载保护器。它可以实现快速失败,如果它在一段时间内侦测到许多类似的错误,会强迫其以后的多个调用快速失败,不再访问远程服务器,从而防止应用程序不断地尝试执行可能会失败的操作,使得应用程序继续执行而不用等待修正错误,或者浪费CPU时间去等到长时间的超时产生。熔断器也可以使应用程序能够诊断错误是否已经修正,如果已经修正,应用程序会再次尝试调用操作; 2、而本章节主要简单的使用了当下游服务出现宕机或者意外情况不可用时,Hystrix实现了快速失败快速响应来达到熔断机制效果;
HMILYYLIMH 发布于 1个月前 阅读 41

mybatis源码解析 - 通过一个简单查询例子分析流程

1. 前言 mybatis的使用方式有两种,一种是通过statement id的方式访问sqlSession提供的接口,另一种方式是通过mapper接口访问。在本文中,为了简单粗暴地过一遍mybatis源码,直接使用了第一种方式使用mybatis。本文的配置如下所示。源码采用的mybatis版本是 3.3.x。 <configuration> <!-- 引入外部属性文件 --> <properties resource="jdbc.properties"></properties> <settings> <!-- 数据库表的字段名到java对象属性映射采用驼峰命名的方式,即表的字段user_name -> 对象的属性userName --> <setting name="mapUnderscoreToCamelCase" value="true" /> <setting name="cacheEnabled" value="false"/> </settings> <!-- 配置数据库 --> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${db.driver}" /> <property name="url" value="${db.url}" /> <property name="username" value="${db.username}" /> <property name="password" value="${db.password}" /> </dataSource> </environment> </envi...
细肉云吞 发布于 2周前 阅读 1230 评论 1 点赞 1

SpringCloud(第 013 篇)电影微服务使用定制化 Feign 在客户端进行负载均衡调度并为 Feign 配置帐号密码登录认证 Eureka

1、定制 Feign 实现访问远端微服务; 2、为 Feign 配置帐号密码来登录认证 Eureka 服务发现模块; 3、修改 Feign 的日志打印级别; 4、定制 Feign 也毫不掩饰的支持负载均衡调度功能;
HMILYYLIMH 发布于 1个月前 阅读 519 评论 2 点赞 1

疯狂Spring Cloud连载(二)——搭建开发环境

2 开发环境搭建         本文节选自《疯狂Spring Cloud微服务架构实战》,本书将于2017年11月出版。         Spring Cloud教学视频:https://my.oschina.net/JavaLaw/blog/1552993                           本章要点              安装与配置Maven              安装Eclipse              本书涉及的技术版本              Spring Boot使用         工欲善其事,必先利其器。在讲述本书的技术内容前,先将开发环境搭建好,本书所涉及基础环境将在本章准备,包括Eclipse、Maven等。如果读者对Maven、Eclipse、Spring Boot等项目较为熟悉,可以直接跳过本章的相关章节。         笔者建议读者在查阅本书过程中,使用与本书相同的工具以及版本。本章使用的Java版本为1.8,图2-1为“java –version”命令的输出,Java安装与配置较为简单,本书不再赘述。 图2-1 Java版本         注:本书全部的案例均在Windows7下开发和运行。 2.1 安装与配置Maven 2.1.1 关于Maven         Maven是Apache下的一个开源项目,用于项目的构建。使用Maven可...
杨大仙的程序世界 发布于 1个月前 阅读 562 点赞 2

Web安全的几个要点

1、跨站脚本攻击(XSS) 核心:本质上是一种html注入。有部分用户输入被作为html渲染,通过在输入中构造js代码在浏览器运行,js代码可以获取cookie中的敏感信息,或者发起http请求 防御:httpOnly防止cookie中的信息泄露;输入检查和输出检查; 2、跨站点请求伪造 核心:通过猜测参数与参数值,或者读取cookie伪造请求。 防御:验证码强制用户进行交互,Referer Check检查发起请求的站点信息,Anti CSRF Token通过随机的Token让攻击者无法伪造。 3、点击劫持 核心:视觉欺骗,通过使用一个透明的、不可见的iframe覆盖在网页上,诱使用户在网页上操作。 防御:frame busting,通过js代码检查。http头加上X-Frame-Options,有三个可选值DENY,SAMEORIGIN,ALLOW-FROM origin 4、Session与认证 核心:Session中保存了用户状态和相关信息,服务端保存Session,客户端保存SessionID。一旦SessionID被窃取,等同于账户失窃。 防御:登录后需要重写SessionID,防止Session Fixation攻击(没有换锁)。强制销毁Session解决长期保存问题。...
木易火山 发布于 1小时前 阅读 5

Kafka Eagle

Kafka Eagle monitor
China_OS 发布于 2个月前 阅读 84 评论 7

SpringCloud(第 010 篇)简单 Quartz-Cluster 微服务,支持集群分布式,并支持动态修改 Quartz 任务的 cronExpression 执行时间

1、根据上一章节的单台测试,本章节修改 Quartz 了支持分布式,因为这是更多的企业开发场景所需要的开发模式; 2、而且在定时任务执行的过程中,通过修改 Quartz 触发器表的 cronExpression 表达式值,从而达到动态修改定时任务的执行时间; 3、注意:配置文件中的 mysql 数据库链接配置大家就各自配置自己的哈;
HMILYYLIMH 发布于 1个月前 阅读 67

Spring component-scan类扫描加载过程

 https://github.com/javahongxi       有朋友最近问到了spring加载类的过程,尤其是基于annotation注解的加载过程,有些时候如果由于某些系统部署的问题,加载不到,很是不解!就针对这个问题,我这篇博客说说spring启动过程,用源码来说明,这部分内容也会在书中出现,只是表达方式会稍微有些区别,我将使用spring 3.0的版本来说明(虽然版本有所区别,但是变化并不是特别大),另外,这里会从WEB中使用spring开始,中途会穿插自己通过newClassPathXmlApplicationContext的区别和联系。   要看这部分源码,其实在spring 3.0以上大家都一般会配置一个Servelet,如下所示:   [html]  view plain  copy   <servlet>       <servlet-name>spring</servlet-name>       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>       <load-on-startup>1</load-on-startup>   </servlet>   当然servlet的名字决定了,你自己获取SpringContext的方式,在前面文章:《spring里头各种获取ApplicationContext的方法》有详细的说明,这里就不细说了,我们就通过DispatcherServlet来说明和跟踪(注意我们这里不说请求转...
git.toutiao.im 发布于 14小时前 阅读 6

Mac SecureCRT 破解

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

SSH免密登录

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

Mac OS 安装启动nginx

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

413 Request Entity Too Large

### 问题 ``` 413 Request Entity Too Large ``` ### 原因 ``` nginx默认请求文件的大小受限 ``` ### 解决 ##### 1. 修改nginx配置文件, 将client_max_body_size修改的大一些, 比如改为20M ``` client_max_body_size 20M; ``` ##### 2. 重启nginx, 使配置生效 ``` nginx -s reload ```
tianshl 发布于 3个月前 阅读 99482

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

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

Mac OS Microsoft Office(安装与破解)

苹果系统安装office组件
tianshl 发布于 1个月前 阅读 98003

Authentication failure

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

JavaScript Array 排序

```javascript var sortArray = function(array, type){ if (!$.isArray(array)) return array; if (type === 'number') { /* 数值类型 */ array.sort(function(a, b){ if (a > b) { return 1; } else if (a == b) { return 0; } else { return -1; } }); } else { /* 字符类型 */ array.sort(function(a, b){ return a.localeCompare(b); }); } return array; }; ``` ### 示例 ###### 非数组 ``` "输入" var array = "20170607"; sortArray(array, 'string'); "输出" "20170607" ``` ###### 字符类型 ``` "输入" var array = ['1', '3', '10', '4', '20', '15', '2'] sortArray(array, 'string'); "输出" (7) ["1", "10", "15", "2", "20", "3", "4"] ``` ###### 数值类型 ``` "输入" var array = [1, 3, 10, 4, 20, 15, 2]; sortArray(array, 'number'); "输出" (7) [1, 2, 3, 4, 10, 15, 20] ```...
tianshl 发布于 3个月前 阅读 98708

Python 字符串格式化 format

## 写在开头 ```python 比%更优雅的字符串格式化方式. def format(self, *args, **kwargs): # S.format(*args, **kwargs) -> string # Return a formatted version of S, using substitutions from args and kwargs. # The substitutions are identified by braces ('{' and '}'). ``` ## 格式化方式 ##### 通过索引格式化 ```python 注意: "通过索引从format参数中的args中取值, 索引从0开始依次填充{0}, {1} ..." >>> print "{0} 的体重为 {1}KG".format("tianshl", 57) tianshl 的体重为 57KG >>> print "{1} 的体重为 {0}KG".format(57, "tianshl") tianshl 的体重为 57KG ``` ```python 注意: "format中参数个数不能少于实际要填充的{}的个数, 多余的参数会忽略" >>> print "{0} 的体重为 {1}KG".format("tianshl",) Traceback (most recent call last): File "", line 1, in IndexError: tuple index out of range >>> print "{0} 的体重为 {1}KG, Ta的名字为 {0}".format("tianshl", 57) tianshl 的体重为 57KG, Ta的名字为 tianshl >>> print "{0} 的体重为 {1}KG".format("tianshl", 57, "多余的参数") tianshl 的体重为 57KG ``` ```python 注意: "若{}不写索引则...
tianshl 发布于 3个月前 阅读 100133

form配合iframe实现文件异步上传

form配合iframe实现文件异步上传
tianshl 发布于 2个月前 阅读 99046

Python 计算器

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

一张思维导图,让正则表达式不再难懂

一张精彩的导图  关注公众号回复“正则导图”即可下载xmind源文件   导图内容解析 语法结构 字符 普通字符:字母、数字、汉字、下划线,匹配与之相同的一个字符 简单转义字符:\n(换行),\t(制表),\\(\本身)和 \^...(\^等有特殊作用的符号如要匹配自己的话要用转义) 标准字符集合 注意区分大小写,大写是相反的意思,匹配相反是不匹配 \d 任意一个数字,0~9 \w 任意一个字母、数字、汉字或下划线,A~Z、a~z、0~9、_和任意一个汉字 \s 任意空白符,包括空格、制表符、换行符 . 小数点可以匹配任意一个字符,换行除外(如果要匹配包括"\n"在内的所有字符,一般用[\s\S]) 自定义字符集合 [ ]方括号匹配方式,能够匹配方括号中的任意一个字符,^表示取反 [ab5@] 匹配"a"或"b"或"5"或"@" [^abc] 匹配a、b、c之外的任意字符 [f-k] 匹配“f"到"k"之间的字符 [^A-F0-3] 匹配“A"-"F","0"-"3"之外的任意一个字符 量词(Quantifier) 修饰前面的一个表达式,如果要修饰多个表达式,就用( )把表达式包起来 {n} 表达式重复n次​ {m,n} 表达式至少重复m次,最多重复n次 贪婪模式 (默认) 匹配符合的最长的字符串 非贪婪模式 (在量词后面加 ? 例:{m,n}? ) 匹配符合的最短的字符...
java思维导图 发布于 1周前 阅读 9895 评论 23 点赞 42

t-io对quartz的封装,以极简的方式来开发定时任务

定时任务不须多言,几乎是每个项目必备功能,而原生的quartz用起来着实有点哆嗦,市面上也有不少依赖spring的定时任务组件,因为笔者本人已经完全抛弃spring(笔者还抛弃了servlet),所以自己动手对quartz进行了简单封装,使其更容易开发和维护! 引入相关jar <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.t-io</groupId> <artifactId>tio-core</artifactId> <version>2.0.1.v20171015-RELEASE</version> </dependency>   创建任务类 import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * @author tanyaowu * 2017年10月8日 下午4:58:34 */ public class ZzzJob implements Job { public ZzzJob() { } /** * @param context * @throws JobExecutionException * @author: tanyaowu */ @Override public void execute(Jo...
talent-tan 发布于 1周前 阅读 2751 评论 25 点赞 7 打赏 1

vue 指令基本使用大全

## 指令 - 解释:指令 (Directives) 是带有 `v-` 前缀的特殊属性 - 作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM ### 常用指令 - v-text - v-html - v-bind ### v-text - 解释:更新元素的 textContent ```html ``` ### v-html - 解释:更新元素的 innerHTML ```html ``` ### v-bind - 作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM - 语法:`v-bind:title="msg"` - 简写:`:title="msg"` ```html ``` ### v-on - 作用:绑定事件 - 语法:`v-on:click="say"` or `v-on:click="say('参数', $event)"` - 简写:`@click="say"` - 说明:绑定的事件从`methods`中获取 ```html ``` ### 事件修饰符 - `.stop` 阻止冒泡,调用 event.stopPropagation() - `.prevent` 阻止默认事件,调用 event.preventDefault() - `.capture` 添加事件侦听器时使用事件`捕获`模式 - `.self` 只当事件在该元素本身(比如不是子元素)触发时触发回调 - `.once` 事件只触发一次 ### v-model - 作用:在表单元素上创建双向数据绑定 - 说明:监听用户的输入事件以更新数据 ```html Message is: {{ message }} ``` ### v-for - 作用:基于源数据多次渲染元素...
不负好时光 发布于 2周前 阅读 3762 评论 9 点赞 11

全国最专业最稳定的阿拉丁反向跟单软件(唯一正版阿拉丁)

全国最专业最稳定的阿拉丁反向跟单软件(唯一正版阿拉丁),反向跟单软件,期货资管软件,期货分仓软件,期货仓单系统,股票分仓系统, 股票资管系统,股票点买点卖系统
阿拉丁金融软件产品 发布于 5天前 阅读 723

股票分仓软件,股票资管软件,股票在线交易系统,股票点买系统

股票分仓软件,股票资管软件,股票在线交易系统,股票点买系统,联系电话:13564123143,QQ:653714026
阿拉丁金融软件产品 发布于 3天前 阅读 548

大规模并行批处理作业的分布式云服务——批量计算使用教程

课程介绍 批量计算(BatchCompute)是一种适用于大规模并行批处理作业的分布式云服务。BatchCompute可支持海量作业并发规模,系统自动完成资源管理,作业调度和数据加载,并按实际使用量计费。BatchCompute广泛应用于电影动画渲染、生物数据分析、多媒体转码、金融保险分析、科学计算等领域。 产品详情:https://www.aliyun.com/product/batchcompute 课时列表 课时1:Docker应用使用演示 课时2:控制台提交和管理作业 课时3:命令行工具安装和配置 课时4:命令行工具提交和管理作业 课时5:云渲染管理系统使用演示 课时6:自定义镜像 开始学习http://click.aliyun.com/m/27858/
mcy0425 发布于 4天前 阅读 535

Spring Boot 初探

近日发现spring boot挺火,了解了一下,并打算重构以前的单点登录系统(cas)中用户中心模块,作为切入点。
謎之物语 发布于 1周前 阅读 761 评论 1

学会容器服务帮你打造Docker云端最佳运行环境

课程介绍 容器服务提供高性能可伸缩的容器应用管理服务,支持用Docker容器进行应用生命周期管理,提供多种应用发布方式和持续交付能力并支持微服务架构。容器服务简化了容器管理集群的搭建工作,整合了阿里云虚拟化、存储、网络和安全能力,打造Docker云端最佳运行环境。 产品详情:https://www.aliyun.com/product/containerservice 课时列表 课时1:如何快速搭建WordPress应用 课时2:如何基于Jenkins实现DevOps 课时3:如何实现深度学习模型开发 课时4:如何做深度学习模型开发 课时5:如何运行TensorFlow分布式训练 开始学习:http://click.aliyun.com/m/27845/
mcy0425 发布于 3天前 阅读 499

阿里云移动测试平台使用教程

课程介绍 移动测试(Mobile Testing)是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,提供7x24全天候服务,帮助客户发现APP中的各类隐患(应用崩溃、各类兼容性问题、功能性问题、性能问题等),减少用户流失,提高APP质量和市场竞争力。 产品详情:https://www.aliyun.com/product/mqc 课时列表 课时1:移动测试快速接入 课时2:提交Android测试任务 课时3:提交iOS测试任务 课时4:使用Android远程真机租用 课时5:使用Android在线录制 开始学习http://click.aliyun.com/m/27868/
mcy0425 发布于 6天前 阅读 512

Java 将数据库对应的表生成对应的实体类,包含注释信息

 Java 将数据库对应的表生成对应的实体类,包含注释信息 小工具 使用不同的数据需要对应数据库驱动jar包,请自行添加 /** * */ package com.cloud.utils.temp; import java.io.File; import java.io.FileWriter; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.filechooser.FileSystemView; /** * @author liuwei * */ public class GenEntityTable { /** * 这里是Oracle连接方法 *private static final String driver = "oracle.jdbc.driver.OracleDriver"; *private static final String url = "jdbc:oracle:thin:@localhost:1521:orcl"; *private static final String uid = "system"; *private static final String pwd = "sys"; *这里是SQL Server连接方法 *private static final String url = "jdbc:sqlserver://localhost:1433;DateBaseName=数据库名"; *private static final String driver = "com.microsoft.sqlserver.jdbc.SQLServerDrive...
北极心 发布于 52分钟前

SpringMVC接收DATE数据@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")的使用

1、导入包 <dependencies> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.3.RELEASE</version> </dependency> </dependencies> 2、在Bean中Date类型数据,插入@DateTimeFormat import org.springframework.format.annotation.DateTimeFormat; public class User { private Long id; @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date gmtDate; @DateTimeFormat(pattern="HHmm") private Date yesterday; ...... } 3、在Controller控制层接收代码就行了。 @RequestMapping(value="/save",method=RequestMethod.POST)     @ResponseBody public String save(User user) {    System.out.println(user.getGmtDate()); System.out.println(user.getYesterday());    ...... } 4、发送请求 http://localhost:80/save id=1001&gmtDate=2017-10-22 23:59:59&yesterday=2359...
自己争取 发布于 53分钟前

【Kafka源码】Kafka代码模块

Kafka源码依赖于Scala环境,首先需要安装scala,这块请自行百度进行安装。 [传送门](http://www.runoob.com/scala/scala-install.html) 当然,我们要分析源码,需要下载源码,请自行从github上面下载。 > 说明:本文使用的kafka版本为0.10.0.1,这是目前公司使用的版本。 下面说明下kafka源码的工程结构: ![image](https://p3.pstatp.com/origin/403500011ff4b49d33ae) 下面主要对core目录模块进行说明,这块是kafka的核心。 - admin:管理员模块,操作和管理topic,paritions相关,包含create,delete topic,扩展patitions - api:这块主要负责数据的组装,客户端和服务端数据交互的组装 - client:这个模块比较简单,只有一个类,主要是获取一些元数据,包括topic、broker等 - cluster:该模块定义了几个在kafka中比较重要的类:Broker,BrokerEndPoint,Cluster,EndPoint,Partition,Replica等,后续我们会对他们之间的关系进行分析 - common:通用类,定义了一些异常类等等 - consumer:comsumer处理模块,负责与消费者相关的操作 - controller:负责中央控制器选举,partition的leader选举,副本分配,副本重新分配,partition和replica扩容 - coordinator:协调器,...
端木轩 发布于 55分钟前 阅读 1

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

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

参观者模式

/** * 员工 */ public abstract class Staff { protected String name; // 姓名 protected int kpi; // kpi public Staff(String name) { this.name = name; kpi = new Random().nextInt(10); } // 访问接口 public abstract void accept(Visitor visitor); } // 工程师 public class Engineer extends Staff { /** * 工程师 * @param name */ Engineer(String name) { super(name); } @Override public void accept(Visitor visitor) { visitor.visitor(this); } /** * 代码量 * @return */ public int getCodeLines() { return new Random().nextInt(1000); } } // 经理 public class Manager extends Staff { /** * 经理 * @param name */ public Manager(String name) { super(name); } @Override public void accept(Visitor visitor) { visitor.visitor(this); } /** * 产品数 * @return */ public int getProduct() { ...
t_yapeng 发布于 57分钟前 阅读 1

pyinstaller 在Windows下Python3.6编译生成exe文件

1. 下载pyinstaller:http://www.pyinstaller.org/ 2. 安装pyinstaller:pip install pyinstaller  3. 生成exe文件: E:\Python36>pyinstaller -F E:\PycharmProjs\liuguang.py     -F, --onefile         Create a one-file bundled executable. 创建一个单一文件 生成文件在:E:\Python36\dist\liuguang.exe
MichaelShu 发布于 58分钟前 阅读 1

C#遍历List并删除某个或者几个元素的方法

C#遍历List并删除某个或者几个元素的方法,你的第一反应使用什么方法实现呢?foreach? for? 如果是foreach,那么恭喜你,你答错了。如果你想到的是用for,那么你只是离成功进了一步。 正确的做法是用for倒序遍历,根据条件删除。下面我们用代码来演示foreach,for删除list数据的情况: class Program { public class Students { public string Name { get; set; } public int Age { get; set; } public Students(string name, int age) { this.Name = name; this.Age = age; } } static void Main(string[] args) { List<Students> stuList = new List<Students>(); stuList.Add(new Students("Tom",20)); stuList.Add(new Students("Tang", 20)); stuList.Add(new Students("Tang", 22)); stuList.Add(new Students("Trista", 24)); stuList.Add(new Students("Lili", 25)); //打印姓名 Console.Write("删除前:"); ...
我是程序yuan 发布于 60分钟前 阅读 1

Web安全的几个要点

1、跨站脚本攻击(XSS) 核心:本质上是一种html注入。有部分用户输入被作为html渲染,通过在输入中构造js代码在浏览器运行,js代码可以获取cookie中的敏感信息,或者发起http请求 防御:httpOnly防止cookie中的信息泄露;输入检查和输出检查; 2、跨站点请求伪造 核心:通过猜测参数与参数值,或者读取cookie伪造请求。 防御:验证码强制用户进行交互,Referer Check检查发起请求的站点信息,Anti CSRF Token通过随机的Token让攻击者无法伪造。 3、点击劫持 核心:视觉欺骗,通过使用一个透明的、不可见的iframe覆盖在网页上,诱使用户在网页上操作。 防御:frame busting,通过js代码检查。http头加上X-Frame-Options,有三个可选值DENY,SAMEORIGIN,ALLOW-FROM origin 4、Session与认证 核心:Session中保存了用户状态和相关信息,服务端保存Session,客户端保存SessionID。一旦SessionID被窃取,等同于账户失窃。 防御:登录后需要重写SessionID,防止Session Fixation攻击(没有换锁)。强制销毁Session解决长期保存问题。...
木易火山 发布于 1小时前 阅读 5

ajax用post方法传递参数

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>JS</title>     <style>         #box{             width:600px;             height:200px;             padding:20px;             border:1px solid #999;         }     </style> </head> <body>     <h1>ajax post方式传递参数</h1>     <hr>     Number1: <input type="text" id="num1"><br>     Number2: <input type="text" id="num2"><br>     <button onclick="loadHtml()">加载</button>     <div id="box"></div>     <script>         function loadHtml(){             //获取表单中的数据             var num1 = document.getElementById('num1').value;             var num2 = document.getElementById('num2').value;               //实例化XMLHttpRequest对象             if(window.XMLHttpRequest){                 //非IE                  var xhr = new XMLHttpRequest();             }else{                 //IE 6    ...
课工场CC老师 发布于 1小时前 阅读 1

人工智能排出最具影响力生物学家

《科学》官网近日报道称,艾伦人工智能研究所开发的一项科学文献搜索引擎工具“语义学者”的分析显示,博德研究所创始人、美国麻省理工学院生物学家、数学家艾瑞克•兰德(Eric Lander)是现代最具影响力的生物医学科学家,他在最新生物医学研究者名单上排名第一。
软件达人 发布于 1小时前 阅读 1

浅谈Java中的ThreadLocal的多线程应用问题

什么是ThreadLocal?首先要说明的一点是ThreadLocal并不是一个Thread,而是Thread的局部变量。在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。下面我们就来看看ThreadLocal的初步内容: 多线程安全性解决方案 ①进行同步控制synchronized  效率降低   并发变同步(串行) ②使用ThreadLocal 本地线程  每个线程一个变量副本(各不相干) 两种线程安全方案的差异 概括起来说,对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而        ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队        访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。 扩展问题 我们知道在一般情况下,只有无状态的Bean才可以在多线程环境下共享,在Spring中, 绝大部分Bean都可以声明为singleton作用域。就是因为Spring对一些B...
小欣妹妹 发布于 1小时前 阅读 1

gatling系列教程(翻译)-第二节(What’s New in 2.2)

JDK Gatling now requires JDK8. JVM default tuning uses G1 Garbage Collector, so we strongly advice you use a very up-to-date JDK, not early versions. gatling要求使用Jdk1.8,jvm默认调整使用G1垃圾收集器,因此我们强烈建议你使用最新JDK,而不是老版本的JDK. Core Feeder Shuffle You can now shuffle a feeder content before enqueuing its content, see Feeder documentation for more details. Assertions Gatling now supports “per-million” assertions, similar to “percent” ones. Conditional Checks (since 2.2.1) It’s now possible to only perform a given check when a given condition is met. See Conditional Checks documentationfor more details. HTTP Native Transport Gatling is now based on Netty 4 that provide an optional native epoll-based NIO re-implementation (different from JDK NIO) which can give better throughput. This option is only available on Linux. See Netty documentation for more details. Gatling ships with the required jar, but the option is turned down by default. In order to en...
九命山猫 发布于 1小时前 阅读 1 评论 1

tomcat中同时启动两个项目出现内存不足的错误提示解决办法

错误提示:OutOfMemoryError: PermGen space 永久保存区域溢出 PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGen space错误。这种错误常见在web服务器对JSP进行pre compile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。 一般是加大-XX:PermSize  -XX:MaxPermSize 来解决问题。   -XX:PermSize永久保存区域初始大小   -XX:PermSize永久保存区域初始最大值 修改tomcat内存大小的配置: 1.对于解压缩版本的tomcat 在tomcat目录下bin\catalina.bat文件中 remGuessCATALINA_HOMEifnotdefined setCURRENT_DIR=%cd%后面添加: setJAVA_OPTS=-Xms256m-Xmx512m -XX:PermSize=128M-XX:MaxNewSize=256m -XX:MaxPermSize=256m-Djava.awt.headless=true 如果用startup.bat启动tomcat,设置生效. 但是如果不是执行startup.bat启动tomcat而是利用windows的系统服务启动tomcat服务,上面的设...
小蚂蚱sjg 发布于 1小时前 阅读 1

Springboot 启动问题

Cannot determine embedded database driver class for database type NONE   原因是:springboot启动时会自动注入数据源和配置jpa   解决:在@SpringBootApplication中排除其注入 @SpringBootApplication(exclude={DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})   或者 加上数据库配置
xiaoye08050141 发布于 1小时前 阅读 1

怎么查看CAD文件是什么版本

我们在使用使用CAD软件打开CAD文件时,可能会出现打不开的情况,这有可能是CAD文件版本与CAD软件版本不匹配的问题,那我们怎么查看CAD文件的版本呢?   迅捷CAD编辑器是一款专业的CAD编辑软件,全面兼容不同格式,不同版本的CAD文件,并可以查看CAD文件的版本信息,支持不同版本CAD文件之间的转换。下面就教大家如何查看CAD文件是哪个版本。   1.首先需要将最新版本的迅捷CAD编辑器下载到电脑上,然后打开软件。 2.打开软件之后,需要点击界面当中的“文件”——“打开”选项,选择要操作的CAD文件打开。 3.CAD文件打开以后,选择“文件”菜单中的“文件信息”选项,打开文件信息窗。 4.在文件信息窗口中,我们可以查看到当前CAD文件的一些基本信息。在“文件”选项卡可以看到文件的名称、路径、尺寸、创建和修改日期以及测量信息。 5.点击切换到“CAD绘图设置”选项卡,就可以查看该CAD文件的版本等相关信息。 通过以上的方法就能方便查看出CAD文件时是什么版本了,大家可以试试哦,这款软件还可以将查看后的CAD文件版本转换。  
大小多少111 发布于 1小时前 阅读 1

Tomcat如何配置Https访问方式

前提条件:已经下载并安装配置好Tomcat,访问http://localhost:8080的时候会出现tomcat的界面。 第一步:配置hosts文件 添加一行127.0.0.1 codecrazy.cn。这一步不是必要的,只是为了访问的时候效果更好(逼格更高)一点。此时就可以通过http://codecrazy.cn:8080进行访问了。 第二步:生成证书 这里采用JDK自带的keytool工具来生成。 如上图所示,输入红框中的命令: E:\Java\bin>keytool -genkey -alias tomcat -keyalg RSA -keysize 1024 -keypass changeit -validity 365 -keystore e:\sms\tomcat.keystore -storepass changeit 之后需要填写几个问题,最后一个问题填入‘y’并回车。 执行上述命令之后会在e:\sms下面生成一个tomcat.keystore文件,-keystore选项指定存储位置和文件名。如果不指定的话会默认在用户的主目录下生成一个“.keystore”文件,-storepass指定存储密码。 -keypass指定的库密码,这2个密码不需要一样。  具体keytool的用法请参见:http://www.micmiu.com/lang/java/keytool-start-guide/ 注意事项:“您的名字与姓氏是什么?”这个问题我写的是“codecrazy.cn”,实践表明这个地方要填你访问网站时的域名。我这里填的是codecrazy.cn。如果没配置...
懂得-奉献 发布于 1小时前 阅读 3

dubbo集群容错机制代码分析

dubbo集群容错
wannshan 发布于 1小时前 阅读 1

MySql在其他电脑连接mysql服务器失败问题

发现在本地登录可以,但是远程登录却报错Host is not allowed to connect to this MySQL/MariaDB server,找了半天试了网上的一些方法都没有解决,最终在一篇文章里找到了解决方法,特意记录一下。
芝麻科技 发布于 1小时前 阅读 1

AOP 基础知识

Spring AOP 预备知识
戥火燃芯 发布于 1小时前 阅读 1

springmvc 面试题目

1.简单的谈一下SpringMVC的工作流程? 流程  1、用户发送请求至前端控制器DispatcherServlet  2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。  3、处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。  4、DispatcherServlet调用HandlerAdapter处理器适配器  5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。  6、Controller执行完成返回ModelAndView  7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet  8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器  9、ViewReslover解析后返回具体View  10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。  11、DispatcherServlet响应用户 2.如何解决POST请求中文乱码问题,GET的又如何处理呢? 在web.xml中加入:   <filter>     <filter-name>CharacterEncodingFilter</filter-name>     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>     <init-param>         <param-name>encoding<...
罗文浩 发布于 1小时前 阅读 1

xtophp开发教程之安装配置视频1

视频地址: https://v.qq.com/x/page/t0563qdh6gm.html 项目地址:https://gitee.com/xtoyun/xtophp 如果您觉得XtoPHP还不错,不妨打赏我们一下; 我们的愿景:帮助开发者节省时间挣钱 https://gitee.com/xtoyun/xtophp#project-donate-overview QQ群:96050256 您可能还对以下文章感兴趣:   1、关于xtophp开源一二三
xtophp 发布于 1小时前 阅读 4

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

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

SpringCloud(第 049 篇)Netflix Eureka 源码深入剖析

1、Eureka Server 提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样Eureka Server中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。 2、Eureka Client 是一个Java 客户端,用于简化与Eureka Server的交互,客户端同时也具备一个内置的、使用轮询负载算法的负载均衡器。 3、在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒),如果Eureka Server在多个心跳周期没有收到某个节点的心跳,Eureka Server 将会从服务注册表中把这个服务节点移除(
HMILYYLIMH 发布于 13小时前 阅读 567 点赞 1

Android计步模块优化(今日步数)

最近在项目中研究计步模块,主要功能记录当天步数,类似微信运动,支付宝计步,咕咚今日步数。 [本篇文章简书地址](http://www.jianshu.com/p/cfc2a200e46d)
jiahongfei 发布于 3天前 阅读 501 评论 3 点赞 2

【区块链】以太坊区块链技术初探

LinApex个人简介     今年刚接触到区块链网络,奋斗在数字货币交易平台,底层框架设计,区块链钱包,区块链解决方案一线,做过人工智能,金融支付行业,目前正在做一款区块链+黄金的App系统。   连载系列(基于以太坊)     开发系列         1、【区块链】以太坊区块链技术初探         2、【区块链】以太坊区块链环境搭建         3、【区块链】以太坊区块链概念了解         4、【区块链】以太坊区块链技术进阶     源码系列         1、【以太坊源码】编译以太坊源码,打造自己的公链私链         2、【以太坊源码】以太坊源码研究系列(以太坊模拟机、挖矿、点对点网络库、节点发现、合约代码传输、加密签名等)   区块链基本概念     区块链就是通过密码学的方式形成的一个由集体维护的分布式数据库。     区块链的概念最近很火,它来自于比特币等加密货币的实现,但是目前,这项技术已经逐步运用在各个领域。什么是区块链技术?为了感性认识这个问题,我们可以使用谷歌地球的例子做类比,ajax不是什么新技术,但组合在一起就成就了产品谷歌地球,与之类似,区块链也不是什么新技术,但与加密解密技术、P2P网络...
linapex 发布于 3天前 阅读 889 评论 15 点赞 3

jvm优化必知系列——监控工具

项目部署线上之后,我们该如何基于监控工具来快速定位问题....
wier 发布于 5天前 阅读 3037 评论 13 点赞 16

基于Activiti扩展的工作流引擎OpenWebFlow

开源地址:https://gitee.com/bluejoe/openwebflow(欢迎star) 1.    OpenWebFlow概述 OpenWebFlow是基于Activiti扩展的工作流引擎。Activiti (官方网站http://activiti.org/,代码托管在https://github.com/Activiti/Activiti)是一个新兴的基于 Apache 许可的支持 BPMN 2.0 标准的开源 BPM 产品,它是一个轻量级,可嵌入的 BPM 引擎,并且提供了功能丰富的开发和流程设计工具。OpenWebFlow与业务应用系统之间的关系如下图所示。 相对于Activiti,OpenWebFlow扩展的功能包括: 1) 完全接管了Activiti对活动(activity)权限的管理。 Activiti允许在设计model的时候指定每个活动的执行权限,但是,业务系统可能需要根据实际情况动态设置这些任务的执行权限(如:动态的Group)。OpenWebFlow完全实现了与流程定义时期的解耦,即用户对活动的访问控制信息单独管理(而不是在流程定义中预先写死),这样有利于动态调整权限,详见自定义活动权限管理; 2) 完全接管了Activiti对用户表(IDENTITY_XXX表)的管理。 在标准的工作流定义中,每个节点可以指定其候选人和候选用户组,但是比较惨的是,Activiti绑架了用户信息表的设计!这个是真正致命的,因为几乎每个业务系统...
白乔 发布于 5天前 阅读 1593 评论 6 点赞 3

疯狂Activiti6.0连载(十一)———Activiti6的流程控制逻辑

11 流程控制逻辑 本文节选自《疯狂Workflow讲义(第2版)》。 本书代码目录:https://gitee.com/yangenxiong/CrazyActiviti         本小节将以一个简单的例子,讲述Activiti关于流程处理的逻辑。 11.1 概述         在Activiti5以及jBPM4,对流程的控制使用的是流程虚拟机这套API,英文为Process Virtual Machine,简称PVM。PVM将流程中的各种元素抽象出来,形成了一套Java API。         新发布的Activiti6.0版本中,PVM及相关的API已经被移除,取而代之的是一套全新的逻辑,本小节将以一个例子,讲述这套全新逻辑,是如何进行流程控制的,本小节的案例,目的是为了让读者了解新版本Activiti是如何进行流程控制的。 11.2 设计流程对象         基于BPMN规范,Activiti创建了对应的模型,由于BPMN规范过于庞杂,为了简单起见,在本例中,我们也先创建自己的规范。代码清单18-1为一份定义我们自己流程的XML文档。         代码清单18-1:codes\18\18.1\my-bpmn\resource\myBpmn.xml <?xml version="1.0" encoding="UTF-8"?> <process id="testProcess"> <start id="start" /> <flows> <flow id="flow1" source="start" target...
杨大仙的程序世界 发布于 6天前 阅读 1744 评论 13 点赞 2

SpringMVC配置太多?试试SpringBoot

SpringMVC相信大家已经不再陌生了,大家可能对于Spring的各种XML配置已经产生了厌恶的感觉,Spring官方发布的Springboot 已经很长时间了,Springboot是一款“约定优于配置”的轻量级框架;Springboot首先解决的就是各种繁琐的XML配置,你可以不用任何XML配置,进行web服务的搭建,其次是Springboot本身就继承了web服务器,如果说前端开发人员想在本地启动后端服务不需要进行各种配置,几乎可以做到一键启动。 再有就是目前大热的微服务,而Springboot恰恰满足了快速开发微服务的开发场景;对于目前主流的框架Spring+MyBatis+redis的集成,好吧直接看代码... 以下代码是整个开发框架集成完之后的,关于Spring官方那一套如何编写启动类,如何配置端口这些随便google一大把的我就不再本文说明了。下面的代码,mybatis mapper我就不贴了,平常怎么写现在也一样,还有redis存数据取数据什么的。本文给的都是划的重点啊! 1.数据源以及其他的配置文件(PS:说好了不配置,怎么刚开始就上配置? 答:不配置也可以,如果你想把数据源硬编码写死的话。^_^) 下面给的是YML的配置文件方式,YML被各种主流的开发语言所支持,相当于常见的.properties文件。 jedis : pool : hos...
红暑 发布于 7天前 阅读 3954 评论 43 点赞 10

t-io对quartz的封装,以极简的方式来开发定时任务

定时任务不须多言,几乎是每个项目必备功能,而原生的quartz用起来着实有点哆嗦,市面上也有不少依赖spring的定时任务组件,因为笔者本人已经完全抛弃spring(笔者还抛弃了servlet),所以自己动手对quartz进行了简单封装,使其更容易开发和维护! 引入相关jar <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz-jobs</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>org.t-io</groupId> <artifactId>tio-core</artifactId> <version>2.0.1.v20171015-RELEASE</version> </dependency>   创建任务类 import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * @author tanyaowu * 2017年10月8日 下午4:58:34 */ public class ZzzJob implements Job { public ZzzJob() { } /** * @param context * @throws JobExecutionException * @author: tanyaowu */ @Override public void execute(Jo...
talent-tan 发布于 1周前 阅读 2751 评论 25 点赞 7 打赏 1

一张思维导图,让正则表达式不再难懂

一张精彩的导图  关注公众号回复“正则导图”即可下载xmind源文件   导图内容解析 语法结构 字符 普通字符:字母、数字、汉字、下划线,匹配与之相同的一个字符 简单转义字符:\n(换行),\t(制表),\\(\本身)和 \^...(\^等有特殊作用的符号如要匹配自己的话要用转义) 标准字符集合 注意区分大小写,大写是相反的意思,匹配相反是不匹配 \d 任意一个数字,0~9 \w 任意一个字母、数字、汉字或下划线,A~Z、a~z、0~9、_和任意一个汉字 \s 任意空白符,包括空格、制表符、换行符 . 小数点可以匹配任意一个字符,换行除外(如果要匹配包括"\n"在内的所有字符,一般用[\s\S]) 自定义字符集合 [ ]方括号匹配方式,能够匹配方括号中的任意一个字符,^表示取反 [ab5@] 匹配"a"或"b"或"5"或"@" [^abc] 匹配a、b、c之外的任意字符 [f-k] 匹配“f"到"k"之间的字符 [^A-F0-3] 匹配“A"-"F","0"-"3"之外的任意一个字符 量词(Quantifier) 修饰前面的一个表达式,如果要修饰多个表达式,就用( )把表达式包起来 {n} 表达式重复n次​ {m,n} 表达式至少重复m次,最多重复n次 贪婪模式 (默认) 匹配符合的最长的字符串 非贪婪模式 (在量词后面加 ? 例:{m,n}? ) 匹配符合的最短的字符...
java思维导图 发布于 1周前 阅读 9895 评论 23 点赞 42

vue 指令基本使用大全

## 指令 - 解释:指令 (Directives) 是带有 `v-` 前缀的特殊属性 - 作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM ### 常用指令 - v-text - v-html - v-bind ### v-text - 解释:更新元素的 textContent ```html ``` ### v-html - 解释:更新元素的 innerHTML ```html ``` ### v-bind - 作用:当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM - 语法:`v-bind:title="msg"` - 简写:`:title="msg"` ```html ``` ### v-on - 作用:绑定事件 - 语法:`v-on:click="say"` or `v-on:click="say('参数', $event)"` - 简写:`@click="say"` - 说明:绑定的事件从`methods`中获取 ```html ``` ### 事件修饰符 - `.stop` 阻止冒泡,调用 event.stopPropagation() - `.prevent` 阻止默认事件,调用 event.preventDefault() - `.capture` 添加事件侦听器时使用事件`捕获`模式 - `.self` 只当事件在该元素本身(比如不是子元素)触发时触发回调 - `.once` 事件只触发一次 ### v-model - 作用:在表单元素上创建双向数据绑定 - 说明:监听用户的输入事件以更新数据 ```html Message is: {{ message }} ``` ### v-for - 作用:基于源数据多次渲染元素...
不负好时光 发布于 2周前 阅读 3762 评论 9 点赞 11

源码分析之ThreadLocal

前言 Java项目中通常为了并发数据准确性经常使用Lock或者synchronized来作为并发的手段。 也就是说作为共享资源必然需要通过同步等手段来实现。那么转换一下思路, 我们确实在每个地方都需要用到共享资源么? 如果我们所有的变量都是私有的 那自然不需要同步就是thread-safe的 ThreadLocal就是这样应运而生。人如其名就是线程私有对象。 实现 ThreadLocal /* <p>Each thread holds an implicit reference to its copy of a thread-local * variable as long as the thread is alive and the <tt>ThreadLocal</tt> * instance is accessible; after a thread goes away, all of its copies of * thread-local instances are subject to garbage collection (unless other * references to these copies exist). * * @author Josh Bloch and Doug Lea * @since 1.2 */ public class ThreadLocal<T> { /** * ThreadLocals rely on per-thread linear-probe hash maps attached * to each thread (Thread.threadLocals and * inheritableThreadLocals). The ThreadLocal objects act as keys, * searched via threadLocalHashCode. This...
Mr_Qi 发布于 2周前 阅读 2158 评论 7 点赞 5

jvm优化—— 图解垃圾回收

jvm必知系列,总结一些常见jvm回收机制,方便查阅
wier 发布于 2周前 阅读 4159 评论 19 点赞 18

JavaScript中错误正确处理方式,你用对了吗?

JavaScript的事件驱动范式增添了丰富的语言,也是让使用JavaScript编程变得更加多样化。如果将浏览器设想为JavaScript的事件驱动工具,那么当错误发生时,某个事件就会被抛出。理论上可以认为这些发生的错误只是JavaScript中的简单事件。 本文将会讨论客户端JavaScript中的错误处理。主要介绍JavaScript中的易犯错误、错误处理、异步代码编写等内容。 下面就让我们一起看看如何正确处理JavaScript中的错误。   Demo演示 本文中使用的demo可以在GitHub上找到,运行之后会是这样的页面: 每个按钮都会引发一个“错误(Exception)”,同时这个错误会模拟出一个被抛出的异常TypeError。下面是模块的定义: // scripts/error.js function error() { var foo = {}; return foo.bar(); } 首先,这个函数声明了一个空对象foo。需要注意的是,bar( )未在任何地方定义。接下来验证这个单元测试是否会引发“错误”: // tests/scripts/errorTest.js it('throws a TypeError', function () { should.throws(error, TypeError); }); 这个单元测试在Mocha中,同时在 Should.js中有测试声明。Mocha是测试运行工具,而Should.js是断言库。这个单元测试运行在Node上,不需要使用浏览...
葡萄城控件技术团队 发布于 2周前 阅读 2711 评论 7 点赞 3

golang 标准库间依赖的可视化展示

国庆看完 << Go 语言圣经 >>,总想做点什么,来加深下印象.以可视化的方式展示 golang 标准库之间的依赖,可能是一个比较好的切入点.做之前,简单搜了下相关的内容,网上也要讨论,但是没有发现直接能拿过来用的.标准库之间,是必然存在依赖关系的,不同库被依赖的程度必然是不一样的.但究竟有多大差别呢?
ios122 发布于 2周前 阅读 2642 评论 5 点赞 3

疯狂Spring Cloud连载(六)——负载均衡框架Ribbon介绍

6 负载均衡框架Ribbon介绍         本文节选自《疯狂Spring Cloud微服务架构实战》,本书将于2017年11月出版。         Spring Cloud教学视频:https://my.oschina.net/JavaLaw/blog/1552993                  本书代码共享地址:https://gitee.com/yangenxiong/SpringCloud                  本文要点              认识Ribbon              第一个Ribbon程序         负载均衡是分布式架构的重点,负载均衡机制将决定着整个服务集群的性能与稳定。根据前面章节可知,Eureka服务实例可以进行集群部署,每个实例都均衡处理服务请求,那么这些请求是如何被分摊到各个服务实例中的?本章将讲解Netflix的负载均衡项目Ribbon。   6.1 Ribbon介绍 6.1.1 Ribbon简介         Ribbon是Netflix下的负载均衡项目,它在集群中为各个客户端的通信提供了支持,它主要实现中间层应用程序的负载均衡。Ribbon提供以下特性:               负载均衡器,可支持插拔式的负载均衡规则。               对多种协议提供支持,例如HTTP、TCP、UDP。        ...
杨大仙的程序世界 发布于 2周前 阅读 2967 评论 9 点赞 4

jQuery实现放大镜效果

相信大家都见过或使用过放大镜效果,甚至实现过该效果,它一般应用于放大查看商品图片,一些电商网站(例如:凡客,京东商城,阿里巴巴等)都有类似的图片查看效果。 在接下来的博文中,将向大家介绍通过jQuery实现放大镜效果。
爱敲代码的程序员 发布于 2周前 阅读 1820 评论 6 点赞 5

深度思考Spark Runtime机制

序言 在以往的博客一天一个函数系列中,我们集中精力攻克了一座又一座的spark中那些晦涩的语法,收获了不少知识。如果以战喻,那就是我们的游击战取得了局部的显著效果。但是要想撼动整个spark-streaming大厦,还需要对整个运行时的机制有一个深入性的了解,知道所谓的接口应用,调用都是一些工程性封装好的东西,这些只要经过熟练的训练即可,但是想要更好的运用,就必须从底层了解它的机制。 在深入理解运行时机制之前,我建议大家思考一下这个问题,为什么spark采用的计算模型是以宽依赖为分界线的DAG模式?在我看来有以下几个优势在里面,第一点是按照不同的stage划分,使得计算更加高效,窄依赖诸如x平方,可以直接以pipe的形式进行操作,而宽依赖诸如(x+y)的平方,它需要等父依赖就绪后才能计算,所以这样的划分能够使计算速率最大化。第二点是,由于分布式集群的不可控性,我们的数据可能要随时落盘,这样一来由于我们采用的是stage模式的处理,我们就可以将中间结果保存在磁盘上,而不会发生由于宕机使得数据全部丢失的情况。 基于以上概念,我们来谈谈一些专业术语以及spark运行时的架构。 Terminologies SparkContext SparkContext是整个Spark Application的核...
牧师-Panda 发布于 2周前 阅读 789 评论 2 点赞 2

TeamFlowy——结合Teambition与Workflowy

使用Teambition来管理任务,使用Workflowy来撰写大纲,使用TeamFlowy来将Workflowy里面特定的条目作为任务自动添加到Teambition中。
kingname 发布于 3周前 阅读 1012 评论 10 点赞 1

Java9之HttpClientAPI实战详解

Java9之HttpClientAPI实战详解 前言 相信关注java9的小伙伴们都知道java9版本内置模块提供了Http功能,当然并不是说之前jdk之前并不支持,那么这次更新又多了什么呢?或者是解决了什么问题? 说明 自JDK 1.0以来,Java已经支持HTTP/1.1。 HTTP API由java.net包中的几种类型组成。 现有的API有以下问题: 它被设计为支持多个协议,如http,ftp,gopher等,其中许多协议不再被使用。 太抽象了,很难使用。 它包含许多未公开的行为。 它只支持一种模式,阻塞模式,这要求每个请求/响应有一个单独的线程。 2015年5月,IETF(Internet Engineering Task Force)发布了HTTP/2规范。 有关HTTP/2规范的完整文本,请访问https://tools.ietf.org/html/rfc7540。 HTTP/2不会修改应用程序级语义。 也就是说,对应用程序中的HTTP协议的了解和使用情况并没有改变。 它具有更有效的方式准备数据包,然后发送到客户端和服务器之间的电线。 所有之前知道的HTTP,如HTTP头,方法,状态码,URL等都保持不变。 HTTP/2尝试解决与HTTP/1连接所面临的许多性能相关的问题: HTTP/2支持二进制数据交换,来代替HTTP/1.1支持的文本数据。 HTTP/2支持多路复用和并发,这意味着多个数据交换可以同时发生...
路上有你0314 发布于 3周前 阅读 2933 评论 6 点赞 6

Java 9 中的 GC 调优基础

在经过了几次跳票之后,Java 9终于在原计划日期的整整一年之后发布了正式版。Java 9引入了很多新的特性,除了闪瞎眼的Module System和REPL,最重要的变化我认为是默认GC(Garbage Collector)修改为新一代更复杂、更全面、性能更好的G1(Garbage-First)。JDK的维护者在GC选择上一直是比较保守的,G1从JDK 1.6时代就开始进入开发者的视野,直到今天正式成为Hotspot的默认GC,也是走了很长的路。 本文将主要讲解GC调优需要知道的一些基础知识,会涉及到一些GC的实现细节,但不会对实现细节做很全面的阐述,如果你看完本文之后,能对GC有一个大致的认识,那本文的写作目的也就达到了。由于在这次写作过程中,恰逢Java 9正式版发布,之前都是依赖Java 8的文档写的,如果有不正确的地方还望指正。本文将包含以下内容: GC的作用范围 GC负责的事情 JVM中的4种GC G1的一些细节 使用Java 9正式版对G1进行测试 一些简单的GC调优方法 一、GC的作用范围 要谈GC的作用范围,首先要谈JVM的内存结构,JVM内存中主要有以下几个区域:堆、方法区(JVM规范中的叫法,Hotspot大致对应的是Metaspace)、栈、本地方法栈、PC等,其中GC主要作用在堆上,如下图所示: JVM内存结构 其中堆和方法区...
心梦无双 发布于 3周前 阅读 1857 评论 8 点赞 5
顶部