Blackhole

安装并配置单实例mysql数据库

怎甘沉沦 提交于 2020-04-18 17:50:23
一、下载介质 http://mirrors.sohu.com/mysql/ http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.40.tar.gz http://dev.mysql.com/downloads/mysql/ http://ftp.ntu.edu.tw/MySQL/Downloads/ 二、安装mysql需要的依赖包和编译软件 [root@monitor01 ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@monitor01 ~]# uname -r 3.10.0-957.el7.x86_64 [root@monitor01 ~]# uname -m x86_64 安装依赖包 [root@monitor01 yum.repos.d]# yum install ncurses-devel libaio-devel cmake gcc gcc-c++ glibc openssl-devel bison-devel autoconf -y [root@monitor01 yum.repos.d]# rpm -qa curses-devel libaio-devel 安装编译mysql需要的软件 [root

Java学习进阶之MySQL数据库结构和引擎比对

邮差的信 提交于 2020-04-17 00:29:58
【推荐阅读】微服务还能火多久?>>>   MySQL是最流行的关系型数据库管理系统,有很多Java程序员初学MySQL时都会被其繁杂的操作以及知识结构吓到,接下来好程序员Java培训小编就给大家简单分析MySQL的结构与引擎对比。   MySQL数据库结构   1、最上层的服务并不是MySQL独有的,大多数基于网络的客户端/服务器的工具或者服务都有类似的架构。   2、第二层架构中,大多数的MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有的内置函数(日期时间等),所有跨存储引擎的功能都在这一层实现:存储过程、触发器、视图等。   3、第三层包含了存储引擎。存储引擎负责MySQL中的数据的存储和提取。MySQL支持各种不同的存储引擎,每个存储引擎都有它的优势和劣势。服务器通过API和存储引擎进行通信。这些API接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。存储引擎不会解析SQL(InnoDB是个例外,它会解析外键定义),不同的存储引擎之间也不能互相通信,而只是简单的响应上层服务器的请求!   执行流程   数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。   不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。  

BlackHole开发日记-多线程NIO和超时机制

烈酒焚心 提交于 2019-12-09 14:32:07
今天尝试使用Selector改造转发逻辑,结果可耻的失败了!因为 Selector不是线程安全的 ,试图多个线程进行register会导致严重的问题,这也是为什么基于事件的IO模型都不怎么支持多线程的原因,太难做了。 后来尝试用Java的Future机制来实现超时。我们知道,Java的FutureTask需要一个执行的线程池。如果每次都new出来当然没有问题,但是经测试性能开销较大(qps被降到了4000)。后来尝试复用同一大线程池,发现请求多了之后,总是会超时! 然后jstack查看发现,很多线程仍然卡在了Callable.call方法,就是我们常说的异常把线程抛死了!原来TimeoutException也会导致线程抛出异常但是无法回收。解决方法:使用future.cancel()。 这也说明,线程抛出异常死掉时,jstack查看到的是它抛出异常时的执行栈。 加入超时机制后,程序算是稳定了,这周末弄个1.0版吧,以后开始写ReleaseNotes。 今天看了一下代码,作为一个开源项目,似乎风格不是那么优雅,很多长函数,注释也不完整。顶多对架构和原理感兴趣,代码的OOP神马的,这方面完全提不起兴趣来啊。 在自己的MBP上也编译了一个queryperf,测试性能达到55000qps,而拦截模式只有35000,果然还是缓存byte[]更给力啊。因此把拦截模式也加入了cache。 来源:

BlackHole开发日记-设置Mac下开机启动,qmail DNS拦截

 ̄綄美尐妖づ 提交于 2019-12-09 14:27:08
今天,太阳照常升起,逃过了一劫,那就开始新的生命吧。 为了把BlackHole推广出去,想要做一个MacOS下的包。调研了mac开机启动的东西,将启动程序写成了一个plist文件,放在/Library/LaunchDaemons下面,脚本是这样的: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>blackhole.init</string> <key>ProgramArguments</key> <array> <string>/usr/local/blackhole/blackhole-start.sh</string> </array> <key>KeepAlive</key> <false/> <key>RunAtLoad</key> <true/> <key>StandardErrorPath</key> <string>/tmp/blackhole.err</string> <key>StandardOutPath</key>

BlackHole开发日记-尝试NIO和ehcache

六眼飞鱼酱① 提交于 2019-12-09 13:54:04
今天上班的路上在对比Tomcat和Jety的连接模型。Tomcat使用多线程处理请求,一个请求一个线程;Jetty则采用NIO。有文章说,对于逻辑复杂、处理时间较长的连接,Tomcat有优势,但是对于处理时间较短的连接,Jetty有优势。毫无疑问DNS的处理时间是很短的,看来把之前connector部分多线程的处理模型换成NIO的,应该性能会有一些提升。以后几天一个大的开发计划,就是调研Java NIO和Jetty里的实现,写一个完整的NIO connector。Cache机制开发延后。 上午在网上找了点资料,磕磕碰碰把基于NIO的服务器模型搭出来了。因为DNS使用的是UDP协议,同时数据量很小,所以NIO并没有起到理想中的效果。 主要服务器部分代码在 https://github.com/flashsword20/blackhole/blob/nio/src/main/java/us/codecraft/blackhole/connector/UDPSocketMonitor.java 。测试之后的效果让人失望,NIO效率比多线程+BIO更低,只有24000~28000qps,并且因为代码不熟悉,系统变得很不稳定。所以暂时保留到NIO分支了。 结论是这样的: 一个DNS query的包大小大约是几十byte,而response也不超过100 byte,如此小的传输量

BlackHole开发日志--防止DNS污染

时光毁灭记忆、已成空白 提交于 2019-12-09 13:53:53
DNS污染原理 DNS污染是比DNS劫持更加难以防御的一种攻击,受攻击者访问网站时可被导向其他域名,例如某“不存在的网站”被导向了一个“不存在的IP地址”。 DNS污染的原理如下: DNS查询也是一个经典的请求-回答模式。首先,客户端发起DNS查询,这是一个UDP包。路由器在转发IP包时,对其内容做解析,若发现其是使用53端口的UDP包,并且其内容符合某些特征(普通的DNS请求都是明文),则从旁路直接返回一个伪造的应答,将其应答指向某个特定IP。因为这个返回速度非常快,所以先于正常请求到达客户端。而客户端收到一个返回包,就认为得到了答案,不再继续接收,而正确的请求结果就被忽略了! 一般防止DNS污染有几种方法: 修改系统hosts文件 系统的hosts文件可以配置某个域名对于的IP地址,并且会优先于DNS服务器的响应,所以此方法稳定高效,缺点是host地址需要不断更新。 改用TCP协议而不是DNS协议发送DNS请求 DNS也支持TCP协议传输,而TCP协议没有收到污染,所以可以改用TCP作为DNS下层协议。缺点是TCP速度慢,并且DNS服务器支持度有限。代表工具:Tcp-DNS-proxy https://github.com/henices/Tcp-DNS-proxy 使用IPv6地址发送DNS请求 某些站点可以通过IPv6地址访问。代表工具:dnsproxycn http:/

How to create whirlpool/vortex effect?

谁都会走 提交于 2019-12-02 07:49:29
问题 Im trying to make a Vortex effect on a Circle Body that is a Sensor. I've been looking for this and all examples i look for are in C++ or Objective C and i dont seem to translate them well. when my objects collition, it calls beginContact(..) and it sets a flag so that i can call bodyToUpdate.applyForce(...); public void beginContact(Contact contact) { setColliding(true); } //updating collition every frame public void act(){ if (colliding) { ball.getBody().applyForce(....); } how to calculate

How to create whirlpool/vortex effect?

时间秒杀一切 提交于 2019-12-02 07:09:33
Im trying to make a Vortex effect on a Circle Body that is a Sensor. I've been looking for this and all examples i look for are in C++ or Objective C and i dont seem to translate them well. when my objects collition, it calls beginContact(..) and it sets a flag so that i can call bodyToUpdate.applyForce(...); public void beginContact(Contact contact) { setColliding(true); } //updating collition every frame public void act(){ if (colliding) { ball.getBody().applyForce(....); } how to calculate the amount of force to apply every frame to make it a vortex? Edit: so i now have the object going

MySQL insert语句慢查询的优化

自作多情 提交于 2019-12-01 03:09:59
近期发现MySQL slow log 里面有很多慢查询,而分析慢查询日志发现大量的慢查询是insert语句的。在高峰期(早上10点左右)半小时的慢查询量可以到28G左右。遂决定优化 优化方法: 1、 一个客户端在一个时候要插多条数据,那么用多个values insert into t1 values(...),(...),(...) 如果是往一个非空的表里插数据,可调节bulk_insert_buffer_size(缺省为8388608字节=8M) 2、 如果多个客户端在同时插许多条数据,那么用insert delayed语句 利:客户端马上返回,数据排成一队;数据整齐的写到一个块里,而不是分散。 弊:如果这个表被查获删数据,那么插入会变慢,另外,为这个表起一个handler线程来处理这些数据也要耗费一些额外资源 待插的数据放在内存里,一旦数据库被意外终止(如kill -9),那么数据会丢失。 这个方法只适用于myisam,memory,archive,blackhole引擎类表。 可调节delayed_insert_limit(缺省为一次100条) delayed_insert_timeout(缺省为300)秒内,若无新的insert delayed语句,则handler线程退出。 delayed_queue_size(缺省为1000条)一旦满了,客户端的insert