源码

CentOS7源码编译安装MySQL5.7

穿精又带淫゛_ 提交于 2019-12-18 01:51:17
一、安装准备 MySQL官网 https://www.mysql.com/ MySQL下载页 https://dev.mysql.com/downloads/mysql/ 二、下载MySQL 在MySQL下载页,选择MySQL的版本。 选择版本 MySQL Community Server 5.7.23 选择 Source Code 选择 Generic Linux (Architecture Independent) 选择带boost版本的 mysql-boost-5.7.23.tar.gz 复制链接地址 下载MySQL yum -y install wget wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.23.tar.gz 三、环境依赖 源码方式安装MySQL所需的环境依赖: cmake make gcc gcc-c++ bison ncurses ncurses-devel(devel是开发版本) yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel 四、安装MySQL 1. 解压mysql包 tar -zxvf mysql-boost-5.7.23.tar.gz cd mysql-5.7.23/ 2.

Redis源码剖析--通知Notify

こ雲淡風輕ζ 提交于 2019-12-18 01:30:46
Redis在2.8版本以后,增加了键空间(Keyspace Notifications future)通知功能,此特性允许客户端可以以订阅/发布的模式,接收那些对数据库中的键和值有影响的操作事件。Redis关于通知的源代码均在notify.c文件中实现,源码中只有三个功能函数,相对较为简单,但是要想理解其功能,就需要配合server.c和pubsub.c里面的部分代码。 Notify概述 对于Redis服务器,它可以通过订阅发布功能来发送服务器中的键空间事件。所谓键空间事件,就是数据库中键的增加,修改和删除等操作,用于告知收听该类事件的客户端当前数据库中执行了哪些操作。由于通知功能会影响服务器的工作效率,Redis默认在启动的时候不开启键空间事件通知功能。 我们有两种方式开启键空间事件通知功能,或者只接受特定类型的通知,一是修改redis.conf中的指定参数,如下: /* 默认为空,表示不开启键空间事件通知功能 */ notify-keyspace-events “” 第二种方法是通过CONFIG SET命令来设定notify-keyspace-events参数,其命令形式如下: /* xx代表订阅的事件类型,后面会讲到 */ CONFIG SET notify-keyspace-events KE 当服务器开启键空间事件通知功能时,需要指定事件的类型,即开启哪些特定类型的通知

jenkins 自动从svn获取源码通过maven打包后发布到远端tomcat

半腔热情 提交于 2019-12-17 22:36:16
手动生成web的war源码文件。 mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false 将生成文件夹trucks 然后将truck文件夹的内容上传到svn上面,再用jenkins构建。 jenkins安装插件 Deploy to container Plugin Maven Release Plug-in Plug-in Subversion Plug-in Maven Integration plugin 在192.168.56.20部署tomcat vim tomcat-users.xml 设置权限 <role rolename="manager-gui"/> <role rolename="manager-script"/> <role rolename="manager-jmx"/> <role rolename="manager-status"/> <user username="admin" password="admin" roles="manager-script,manager-jmx,manager-status

对象池common-pool2源码分析之对象状态

梦想与她 提交于 2019-12-17 20:42:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 对象池common-pool2源码分析 对象池common-pool2策略分析 从前两篇的分析中可以看出对象池中的对象会被激活,钝化,销毁等 ,那么做这些操作的对象需要满足什么条件呢 ,与这些操作之后相对应的对象的状态是什么样的呢? 首先从PooledObjectState开始分析 public enum PooledObjectState { /** * In the queue, not in use. */ IDLE, /** * In use. */ ALLOCATED, /** * In the queue, currently being tested for possible eviction. */ EVICTION, /** * Not in the queue, currently being tested for possible eviction. An * attempt to borrow the object was made while being tested which removed it * from the queue. It should be returned to the head of the queue once * eviction testing

对象池common-pool2源码分析

喜夏-厌秋 提交于 2019-12-17 20:21:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Apache common-pool2提供了一个通用的对象池技术的实现。 common-pool2主要围绕三个接口来实现,ObjectPool、PooledObject、PooledObjectFactory。由 PooledObjectFactory创建的对象,经 PooledObject包装后放入 ObjectPool。 1.ObjectPool对象池 ObjectPool:对象池,负责存放管理对象. 官方例子: http://commons.apache.org/proper/commons-pool/examples.html ReaderUtil readerUtil = new ReaderUtil(new GenericObjectPool<StringBuffer>(new StringBufferFactory())); 先从GenericObjectPool开始分析 成员变量: 重要的成员变量为: allObjects和idleObjects. /* * All of the objects currently associated with this pool in any state. It * excludes objects that have been destroyed. The

深入Spring IOC源码之ResourceLoader

别等时光非礼了梦想. 提交于 2019-12-17 17:55:17
在《深入Spring IOC 源码之Resource 》中已经详细介绍了Spring 中Resource 的抽象,Resource 接口有很多实现类,我们当然可以使用各自的构造函数创建符合需求的Resource 实例,然而Spring 提供了ResourceLoader 接口用于实现不同的Resource 加载策略,即将不同Resource 实例的创建交给ResourceLoader 来计算。 public interface ResourceLoader { //classpath String CLASSPATH_URL_PREFIX = ResourceUtils. CLASSPATH_URL_PREFIX ; Resource getResource(String location); ClassLoader getClassLoader(); } 在ResourceLoader 接口中,主要定义了一个方法:getResource() ,它通过提供的资源location 参数获取Resource 实例,该实例可以是ClasPathResource 、FileSystemResource 、UrlResource 等,但是该方法返回的Resource 实例并不保证该Resource 一定是存在的,需要调用exists 方法判断。该方法需要支持一下模式的资源加载: 1. URL

LinkedList源码分析

天大地大妈咪最大 提交于 2019-12-17 17:39:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一、源码分析 1、构造方法源码分析: transient int size = 0; transient Node<E> first; transient Node<E> last; public LinkedList() { } 由构造方法可知,只是新建了一个LinkedList对象,其它啥都没做。继续往西看。 2、添加元素源码分析: public boolean add(E e) { linkLast(e); return true; } void linkLast(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null); last = newNode; if (l == null) first = newNode; else l.next = newNode; size++; modCount++; } //内部静态类:Node private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this

直播中的高并发问题如何解决?

杀马特。学长 韩版系。学妹 提交于 2019-12-17 17:29:10
对于爱好观看直播的用户来说,能够如丝般顺滑地浏览视频是一大极致享受。但实际情况是,当某时段大量用户数据涌入(如观看人数上升,弹幕消息爆发等),若并发结构没有优化好,我们很难不遇到画面卡顿的情况。所以今天拓幻科技来分享一下,在直播系统源码开发过程中,如何正确处理高并发带来的这些卡顿问题呢? 一、防盗链处理 如果是网页直播间,当前站点没有做防盗链的话,就很容易遭受恶意请求。而过多的恶意请求,会对本身流量就比较大的直播间造成很大负担。比如说有A、B两个直播网站,A站享用了B站的资源,页面嵌入了B站的图片、JS、CSS。A站并不关心B站会消耗怎样的流量,但是对于B站来说,如果调用了B站的图片、JS、CSS。在用户访问A站的时候,就会对B站做一些HTTP请求,从而走B站的流量和带宽,同时也侵犯了B站的一些版权问题。 说到这,在对自家的直播网站做流量优化时,也需要考虑减少HTTP请求,比如说把CSS、JS、图片进行合并。这样某些网页文件的容量会稍微大一些,但是便减少了请求次数。 二、CDN加速 这可以说是直播系统源码开发过程中的标配了,当然,就算是普通的静态页,不使用CDN的话,也会非常卡顿。在这就简单说下原理吧:用更加通俗的话来讲,我们可以把系统的一些前端文件、前端资源放进CDN当中,当用户来访问页面时,可以通过CDN就近访问,并且从一定意义上解决带宽不够用的问题。 三、服务端优化

HBase 源码-下载, 编译

二次信任 提交于 2019-12-17 16:48:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 有些事情, 看起来很简单, 但是自己从头摸索时却是各种迷茫, 不知从何下手, 比如 HBase 源码的下载, 编译... 1. 软件安装 (1). 安装 git sudo apt-get install git (2). 安装 jdk7 sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java7-installer (3). 安装 Eclipse 到 官网 下载与操作系统相符的版本即可, 我下载的是 最新版(4.3.1) , 直接集成了EGit; 否则还需安装 EGit. (4). 安装 maven sudo apt-get install maven (5). 安装 m2e 打开 eclipse, Help --> Eclipse Marketplace... , 选择 Maven 进行安装. 2. 源码下载 在 Terminal 里执行以下命令, 下载完成后, 会在当前执行目录下生成一个 hbase 文件夹, 里面就是源码了. git clone git://github.com/apache/hbase.git 如果需要设置代理,则需要 git 命令前先执行此行