转载 相关博文

转载 TiDB 源码阅读系列文章(九)Hash Join

>作者:张建 ## 什么是 Hash Join Hash Join 的基本定义可以参考维基百科:[Hash join](https://en.wikipedia.org/wiki/Hash_join)。简单来说,A 表和 B 表的 Hash Join 需要我们选择一个 Inner 表来构造哈希表,然后对 Outer 表的每一行数据都去这个哈希表中查找是否有匹配的数据。 我们不用 “小表” 和 “大表” 这两个术语是因为:对于类似 Left Outer Join 这种 Outer Join 来说,如果我...

转载 [Spring Cloud Task]6 Spring Batch批处理应用设计原则

# 概述 本文是Spring Cloud Task系列的第五篇文章,如果你尚未使用过Spring Cloud Task,请 移步[spring cloud task1 简介与示例](http://www.jianshu.com/p/fb2e973fb325)。 本文主要讲述的是Spring的另一个核心子项目 Spring Batch 批处理应用的一些设计技巧和原则。这些技巧分别涉及 # 原则与技巧 ### 应用数据库设计原则 多分区批处理应用通常会用到数据库表分表。分表的设计是选取某个索引列作为分表的关键字...

转载 区块链3.0_精通Hyperledger之使用Hyperledger composer搭建系统-mac系统(8.2)

  1、上一篇搭建成功之后,接下来创建一个新的业务网络 步骤点击如图:   在1的地方,输入自己的名字,我写的是tutorial-network 然后点击2,最后在右面3选择Deploy进行部署,成功之后截图: 2、连接到商业网络     现在我们已经创建并部署了业务网络,您应该会在我们的钱包中看到一个名为admin的新业务网络卡,用于我们的业务网络教程 - 网络。钱包可以包含业务网卡以连接到多个部署的业务网络。     连接到外部区块链时,业务网卡代表连接到业务网络所需的所有内容。它们包括连接详细信息,身...

转载 nginx ngx_dynamic_limit_req_module进行动态限流防刷接口

关于动态限流目前有lua+redis实现方案,但是呢编译lua模块麻烦且一堆东西要依赖,还得自己实现lua脚本,对于很多小白同学,是很难的,所以今天介绍下更加简单的方案,当然也需要一个模块就是ngx_dynamic_limit_req_module 这是在ngx_limit_req_module 基础上做的扩展加上redis定时的功能 https://github.com/limithit/ngx_dynamic_limit_req_module 安装步骤请移步至github或者码云 https://git...

转载 Angular 6.0已发版: Angular快速入门

Angular 6.0.0 于2018年5月4日正式发布,今天我们一起来跟着其官网(https://angular.io/guide/quickstart)的例子做个简单入门吧! “Angular 6.0.0 正式发布,新版本重点关注工具链以及工具链在 Angular 中的运行速度问题。这次更新还包括框架包(@angular/core、@angular/common、@angular/compiler 等)、Angular CLI、Angular Material + CDK,这主要是为了解决兼容问题,这些...

转载 jenkins role-strategy 权限视野管理插件

以前一直用全局安全配置+安全矩阵,但是这个只能控制功能权限,没法控制视野。。。     找了好久终于找到了 role-strategy 插件, 下载地址: http://updates.jenkins-ci.org/download/plugins/role-strategy/ 在 插件管理-高级 里面有个插件上传 或者在插件管理里面找:   安装比较顺利,这里就不多说了,说一下配置: 1.进入系统管理里面的  2.授权策略 将 安全矩阵换成: 3.进入 系统管理里面的 4.进入 Manage Roles ...

转载 致我们再也回不去的 Github ...

1、前言 相信大家都知道了,微软已确认要收购 GitHub 了,Github官方也在Github网站显眼位置给出了CEO的确认收购博客文章。具体多少钱收购的还不得而知,但是据知情人士透漏,GitHub 之所以放弃了原有的上市计划,而选择出售给微软,部分原因是因为他们对微软 CEO 萨提亚·纳德拉印象非常深刻。 ▲ Github官网上的庆祝页   ▲ 上图左一为萨蒂亚·纳德拉、中间是盖茨、右一为鲍尔默 嗯,这大概就是所谓的「确认过眼神」吧。 (本文同步发布于:http://www.52im.net/threa...

转载 Tomcat Session管理分析

前言 在上文Nginx+Tomcat关于Session的管理中简单介绍了如何使用redis来集中管理session,本文首先将介绍默认的管理器是如何管理Session的生命周期的,然后在此基础上对Redis集中式管理Session进行分析。 Tomcat Manager介绍 上文中在Tomcat的context.xml中配置了Session管理器RedisSessionManager,实现了通过redis来存储session的功能;Tomcat本身提供了多种Session管理器,如下类图: 1.Manage...

转载 Kotlin-高阶函数

函数是一个类型,就像编程语言中的基本类型一样,就像Java中的引用类型一样,函数是函数类型。基本类型、引用类型、函数类型,说白了物理空间就是内存的一段区域,逻辑空间叫什么基本类型、引用类型、函数类型。基本类型就是int, float这种存储数据的,引用类型就是类呗,一个类在内存中不也是一段区域嘛,函数类型就是一段操作流程呗,一段操作流程在内存中不也是一段区域嘛。总之一样啦。猫是动物,狗是动物,人家棕熊也是动物啦,都在地球上占据一定的空间,不能把人家当成空气。       既然他们都是一种类型,那就要同等对待...

转载 如何选择 Web 前端模板引擎?

Web 模板就在那里 模板引擎负责组装数据,以另外一种形式或外观展现数据。 浏览器中的页面是 Web 模板引擎最终的展现。 无论你是否直接使用模板引擎,Web 模板一直都在,不在前端就在后端,它的出现甚至可以追溯到超文本标记语言 HTML 标准正式确立之前。 服务器端的模板引擎 我所知道最早的 Web 模板引擎是 PHP,它正式诞生于 1997 年,工作在服务器端。让我们看看 PHP 官方的 intro-whatis: PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的缩写...

转载 Spring Boot使用过滤器和拦截器分别实现REST接口简易安全认证

本文通过一个简易安全认证示例的开发实践,理解过滤器和拦截器的工作原理。 很多文章都将过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)这三者和Spring关联起来讲解,并认为过滤器(Filter)、拦截器(Interceptor)和监听器(Listener)是Spring提供的应用广泛的组件功能。 但是严格来说,过滤器和监听器属于Servlet范畴的API,和Spring没什么关系。 因为过滤器继承自javax.servlet.Filter接口,监听器继承自javax.se...

转载 Kafka 入门和 Spring Boot 集成

# Kafka 入门和 Spring Boot 集成 # 概述 kafka 是一个高性能的消息队列,也是一个分布式流处理平台(这里的流指的是数据流)。由java 和 Scala 语言编写,最早由 LinkedIn 开发,并 2011年开源,现在由 Apache 开发维护。 # 应用场景 下面列举了一些kafka常见的应用场景。 **消息队列** : Kafka 可以作为消息队列使用,可用于系统内异步解耦,流量削峰等场景。 **应用监控**:利用 Kafka 采集应用程序和服务器健康相关的指标,如应用程序相关...

转载 spring profile 与maven profile

profile: n.  侧面,半面; 外形,轮廓; [航]翼型; 人物简介; vt.  描…的轮廓; 给…画侧面图; 为(某人)写传略; [机]铣出…的轮廓; 这个词具体是什么意思,参考:https://www.zhihu.com/question/28464897 我的理解,就是一个配置。 一、spring中的profile  profile 说白了就是利用一个变量来控制加载哪些bean。主要用在实现在不同的环境下加载不同的bean。 比如在测试环境下,加载根据这个数据库的配信息生成的bean,在生产环...

转载 浅谈csrf攻击以及yii2对其的防范措施

> 凡是我yii2学习社群的成员都知道,我不止一次给大家说构造表单100%使用yii2的ActiveForm来实现,这除了能和AR更好结合外就是自动生成csrf隐藏域,一个非常安全的举措。 今天北哥就给大家普及下csrf是啥?如果你已经知道了可以直接拉文章到底部点个赞。:smile: **CSRF**(Cross-site request forgery跨站请求伪造)是一种对网站的恶意利用,在 2007 年曾被列为互联网 20 大安全隐患之一。 关于CSRF,要从一个故事开始~ # 老王丢钱事件 这个...

转载 Android studio NDK + CMake 编译SoundTouch实现wav格式音频的变速、变调功能

温馨提示: 本博客不是从零开始的文章,也不是什么高手精贴,只是一个菜鸡踩坑记录贴,建议懂得NDK+CMake流程的人观看,若是从零开始的,推荐先去看一下我之前跑的一个例子: 传送门在此:https://my.oschina.net/u/1462828/blog/1552937 本帖子只负责编译,具体的SoundTouch用法,还得另行专研。 目前来说的话,官方例子已经提供了setSpeed方法和setPitchSemiTones(参数是-12 到 12 )这两个方法,已经可以实现最简单的变速和变调了,本人亲...

转载 开发基于以太坊智能合约的DApp

最近要找个H5的前端写个简单的DApp,聊过几个H5的工程师,都被跟以太坊交互的部分吓住了。虽然网上有N多的教程,但是对于H5工程师来说,还是有些困难。分析其原因,在于不了解ganache-cli(原来叫testrpc)/web3/以太坊节点/metamask之间的架构关系。 梳理一下架构关系: web3.js与以太坊通信是通过rpc的方式实现的。 以太坊节点本来提供了rpc的访问方式,但是因为以太坊节点的地址不确定,并且DApp需要访问钱包,所以用web3.js直接访问以太坊节点的rpc服务是不现实的。 ...

转载 Spring AOP切点表达式用法总结

### 1. 简介        面向对象编程,也称为OOP(即Object Oriented Programming)最大的优点在于能够将业务模块进行封装,从而达到功能复用的目的。通过面向对象编程,不同的模板可以相互组装,从而实现更为复杂的业务模块,其结构形式可用下图表示: ![业务模块](https://upload-images.jianshu.io/upload_images/7944306-5b43b08601ddc9c8.png?imageMogr2/auto-orient/strip%7Cim...

转载 Linux TCP套接字地址复用

  1. 概述 github项目地址:https://github.com/superwujc 尊重原创,欢迎转载,注明出处:https://my.oschina.net/superwjc/blog/1824089 对于特定的传输层协议(包括TCP),每个套接字通过4元组{ 本端ip, 本端port, 对端ip, 对端port }进行唯一标识,该4元组另可划分为一个套接字地址对(socket pair):本端ip与本端port组成本端套接字地址,对端ip与对端port组成对端套接字地址。 默认情况下,内核仅...

转载 SpringBoot应用部署于外置Tomcat容器

![Desktop](https://upload-images.jianshu.io/upload_images/9824247-cf33cdd281791244.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) --- ## 0x01. 概述 SpringBoot平时我们用的爽歪歪,爽到它自己连Tomcat都自集成了,我们可以直接编写SBT启动类,然后一键开启内置的Tomcat容器服务,确实是很好上手。但考虑到实际的情形中,我们的Tomcat...

转载 五月新增开源项目:“复刻” Win 95 到 iOS;Grails 框架作者携最新力作登场

五月份开源中国社区收录了相当多的重量级开源项目,如 Node 之父 Ryan Dahl 的 deno,deno 也被认为是下一代 Node;Grails 框架作者的最新力作,微服务应用框架 Micronaut;还有少见的用 Vue.js 构建跨平台原生桌面应用的开源项目 Vuido...

转载 Lightning 组件内容多语言与自定义标签按规则使用

之前做的项目都是中文环境,页面上的文本与标签也都是直接在代码中写的汉字,去年开始做了A项目,要求是代码与系统配置中不能出现任何中文,因为需要推广其它国家,由于习惯问题,在开发时都用的中文,后面再去补,导致没有很好的规划,用自定义标签替换,获取字段的标签也是写到了控制类中,如下截图,如果一个组件中涉及到多个对象的多个字段, 在初始化时就需要写一大段的代码,而在另一个组件中同样重复的代码又出现一次 ![](http://p380uyjgu.bkt.clouddn.com/18-6-3/33102943.jpg)...

转载 Logback 快速定位用户在一次请求中的所有日志

# 问题描述 最近经常做线上问题的排查,而排查问题用得最多的方式是查看日志,但是在现有系统中,各种无关日志穿行其中,导致我没办法快速的找出用户在一次请求中所有的日志。 # 问题分析 我们没办法快速定位用户在一次请求中对应的所有日志,或者说是定位某个用户操作的所有日志,那是因为我们在输出的日志的时候没把请求的唯一标示或者说是用户身份标示输出到我们的日志中,导致我们没办法根据一个请求或者用户身份标示来做日志的过滤。所以我们在记录日志的是后把请求的唯一标示(sessionId)或者身份标示(userId) 记录到...

转载 http2.0 --速度与激情

目前提升H5应用加载速度的方式有很多,比如缓存、cdn加速、代码压缩合并和图片压缩等技术。这些方法相信大伙如数家珍,然而这些招用完后,是否还有优化空间呢?现在我们祭出大杀器——HTTP 2.0 ......

转载 Tinker + Bugly + Jenkins 爬坑之路

前阵子 Android 端的线上崩溃比较多,热修复被提上日程。实现方案是 Tinker,Jenkins 打包,最后补丁包上传到 Bugly 进行分发。主要在 Jenkins 打包这一块爬了不少坑,现记录下来,供大家参考。 1. Tinker + Bugly热修复实现 首先是本地实现,按照官方文档,只要一步一步按照文档来,这个步骤还是比较容易的,这里就不再赘述了,不懂的可以先参考官方文档:Bugly Android热更新使用指南、Bugly Android热更新详解。这里贴一下接入流程: 打基准包安装并上报联...

转载 itext根据模版生成PDF与合并多个PDF以及向已存在PDF增加水印设置权限等操作

    我之前写了一篇文章讲了itext的基础操作常用方法(https://my.oschina.net/itazi/blog/1812042),但是有时涉及到比较复杂的PDF生成,手工操作就很复杂,可以使用模板生成方式。有时还要涉及合并等,于是将用到的略作记载。    首先要用到的依赖: <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</art...

转载 MySQL-性能优化-索引和查询优化

MySQL-性能优化-索引和查询优化 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 参考博客:MySQL索引背后的数据结构及算法原理 如上这篇博客写的挺好,我就不再造轮子了,对如上博客,我总结如下几个重要的要点: 1. 不使用顺序查找,因为顺序查找比较慢,通过特定数据结构的特点来提升查询速度,这种数据结构就是可以理解成索引。 2. 索引一般以文件形式存储在磁盘上,索引检索需要磁盘I/O操作,为了尽量减少磁盘I/O。磁盘往往不是严格按需读取,...

转载 JVM调优浅谈

java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:它代表的值就是数值本身,而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte、short、int、long、char、float、double、boolean、returnAddress?? 引用类型包括:类类型、接口类型和数组   2.堆与栈 堆和栈是程序运行的关键,很有必要它他们的关系说清楚。   栈是运行时的单位,而堆是存...

转载 深度解析Tengine的调试与资源监控方法论

摘要: 在最近的飞天技术汇CDN Tengine开源技术沙龙上,阿里云CDN团队的高级开发工程师墨飏进行了《Tengine的调试与资源监控》的主题分享。本文为演讲记录,从Tengine的内存调试、核心结构、upstream、coredump四个部分展开,为大家整理和分享一些实践经验,希望能给关注Tengine的开发者带来一些帮助与启发。...

转载 Java vs C++:子类覆盖父类函数时缩小可访问性的不同设计

Java 和 C++ 都是面向对象的语言,允许对象之间的继承。两个语言的继承都设置有允许子类覆盖父类的“虚函数”,加引号是因为 Java 中没有虚函数这一术语,但是我们的确可以把 Java 的所有函数等同于虚函数,因为 Java 类的所有非 static 函数都可以被子类覆盖,这里仅借用“虚函数”这一名词的含义,不深究语言的术语问题。 Java 和 C++ 都允许在子类覆盖父类时,改变函数的可访问性。所谓“可访问性”,就是使用 public 、protected、private 等访问控制符进行修饰,用来控...

转载 从linux源码看socket的close

# 从linux源码看socket的close 笔者一直觉得如果能知道从应用到框架再到操作系统的每一处代码,是一件Exciting的事情。上篇博客讲了socket的阻塞和非阻塞,这篇就开始谈一谈socket的close(以tcp为例且基于linux-2.6.24内核版本) ## TCP关闭状态转移图: 众所周知,TCP的close过程是四次挥手,状态机的变迁也逃不出TCP状态转移图,如下图所示: ![输入图片说明](https://static.oschina.net/uploads/img/201805/...

转载 使用Opencv-python生成520图片数字

520当天一个无聊的程序员想要制造一些浪漫(好像没有多少人懂)气息,从早到晚就有了下面的效果:   看到这里你心动了吗?警惕:前方高能 一、自行准备图片素材(忧伤的很) 二、引入所需的包 cv2(Opencv-python):图像处理的主要工具 pathlib: 系统文件操作工具 三、构建数字模型,以数字5为例(请忽略我的命名,很随意): 可以是任意数字 四、定义图片素材缩放方法 五、定义数字图片生成方法 六、应用 为了凑满申请原创需要的300字数,再强行插入一波思路。 整个代码敲下来应该没有什么难度(对c...

转载 RESTFul 服务测试自动化的艺术 - TODO 服务篇

老码农在[上一篇博客](https://my.oschina.net/greenlaw110/blog/1811714) 给出了如何从头开始创建一个 自带自动化测试工具的 RESTful 服务项目的例子. 今天我们在这个简单例子上做延伸, 把这个例子改写为一个简单的 TODO Task 应用. 该应用会提供以下服务端口: * GET /todos - 返回所有的 TODO 项 * GET /todos/?q=? - 查询 TODO 项, 所有描述符合 q 参数的 TODO 项都会被返回 * GET /tod...

转载 Java NIO Buffer

Buffer 简介     Buffer 的作用是用来存储数据 , 可以对数据进行存、取的操作。 Buffer 的空间大小初始化时确定之后是不可变的。 Buffer 中的重要属性 : mark :  标记位置 (初始为 -1) position  :  操作缓冲区的"针针"(说指针是为了方便理解)位置 limit : 限制位置 , 如果 limit - position < 要操作(存或取)数据的长度抛出异常 :BufferUnderflowException 。 capacity  : Buffer...

转载 一场版本升级引发的性能血案 - 之数据历险

## 1. 案情回顾 老码农在 [一场版本升级引发的性能血案的追凶过程](https://my.oschina.net/greenlaw110/blog/1815959) 中谈到了 ActFramework 在 TFB 第 [N](https://tfb-status.techempower.com/results/ae097e87-3b23-402c-8f51-1608e16dd11a) 轮内部测试中全线溃败落入 Spring 朋友圈的不堪回首之往事. 历经三天两夜追凶过程, 老码农终于定位到了一 `Ac...