源码

linux 源码安装mysql 5.5

蓝咒 提交于 2020-02-01 20:16:14
今天在ubuntu和CentOS下,用源码反复安装了许多次mysql,趁还没忘记,赶紧记下来。。。 在ubuntu和CentOS下安装过程倒是没什么差别。 0.下载源码,传到服务器上 1.准备cmake和libncurse ubuntu 下用 apt-get install cmake 和apt-get install libncurse安装 CentOS下用yum -y install ncurses-devel 和yum -y install cmake安装。某些版本要用yum -y install cmake28.x86_64 2.创建mysql用户 groupadd mysql useradd mysql -g mysql -s /sbin/nologin 3.创建安装目录并授权 mkdir -p /usr/local/mysql/data chown -R mysql.mysql /usr/local/mysql 4.解压并安装 tar zxvf mysql-5.5.47.tar.gz cd mysql-5.5.47 mkdir build #建立一个build文件让源码和编译生成的文件分开,查文件更方便。 cd build cmake28 .. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装目录 -DMYSQL_UNIX

Linux下通过源码编译安装程序

二次信任 提交于 2020-02-01 18:22:59
  本文简单的记录了下,在linux下如何通过源码安装程序,以及相关的知识。(大神勿喷^_^)   一、程序的组成部分     Linux下程序大都是由以下几部分组成:       二进制文件:也就是可以运行的程序文件       库文件:就是通常我们见到的lib目录下的文件       配置文件:这个不必多说,都知道       帮助文档:通常是我们在linux下用man命令查看的命令的文档   二、linux下程序的存放目录     linux程序的存放目录大致有三个地方:       /etc, /bin, /sbin, /lib :系统启动就需要用到的程序,这些目录不能挂载额外的分区,必须在根文件系统的分区上       /usr/bin,/usr/sbin,/usr/lib:操作系统核心功能,可以单独分区        /usr/local/bin,/usr/local/sbin,/usr/local/lib,/usr/local/etc,/usr/local/man:这个用于安装第三方程序,分别对应了二进制文件、库文件、配置文件、帮助文档的目录     通常来说我们安装程序就安装在 /usr/local目录下   三、编译安装源程序     1、使用如下命令查看当前是否安装了gcc编译器,没有可以先用yum安装gcc gcc --version #查看是否安装gcc  

CountDownLatch源码解析

时间秒杀一切 提交于 2020-02-01 11:20:31
CountDownLatch CountDownLatch 基于AQS实现的同步器,允许一个或者多个线程通过 await() 方法进入阻塞等待,直到一个或者多个线程执行 countDown() 完成。 CountDownLatch 在创建时需要传入一个 count 值,一旦某个或者多个线程调用了 await() 方法,那么需要等待 count 值减为0,才能继续执行。 countDown() 方法每执行一次,count(state)值减1,直到减为0。一个线程可以多次调用 countDown() 方法,每次调用都会造成count减1 CountDownLatch 在RocketMQ底层通信被大量使用,实现远程调用异步转同步。 Netty Client 发送消息之前创建一个 ResponseFuture , ReponseFuture 中有一个 CountDownLatch 属性,发送消息之后调用 await() ,等待response,当接收到响应之后,调用对应 ResponseFuture 中 CountDownLatch#countDown ,唤醒阻塞线程。 内部类AQS实现 private static final class Sync extends AbstractQueuedSynchronizer { private static final long

Semaphore源码解析

非 Y 不嫁゛ 提交于 2020-02-01 11:08:32
Semaphore Semaphore 信号量,许可,用于控制在一段时间内,可并发访问执行的线程数量,基于AQS实现。 获取许可,支持公平和非公平模式,默认非公平模式。公平模式无论是否有许可,都会判断是否线程在排队,如果有线程排队,获取线程立即失败,进入排队;非公平模式无论许可是否充足,直接尝试获取许可。 可用于网关限流,或者资源限制(如最大可发起连接数)。 由于 release() 释放许可时,未对释放许可数做限制,所以可以通过该方法增加总的许可数量; reducePermits() 方法可以减少总的许可数量,通过这两个方法可以达到动态调整许可的目的。 内部类同步器 abstract static class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 1192457210091910933L; /** * 赋值state为总许可数 */ Sync(int permits) { setState(permits); } /** * 剩余许可数 */ final int getPermits() { return getState(); } /** * 自旋 + CAS非公平获取 */ final int nonfairTryAcquireShared

CyclicBarrier源码解析

大憨熊 提交于 2020-02-01 11:06:42
CyclicBarrier CyclicBarrier 栅栏,与 CountDownLatch 类似,但不是基于AQS实现的同步器,用于多个线程之间等待。 CyclicBarrier 每次使用完之后可以重置, CountDownLatch 不可重置, CyclicBarrier 同步一组线程, CountDownLatch 同步两组线程(一组调用 await() 方法阻塞等待,另一组调用 countDown() 唤醒阻塞线程)。 CyclicBarrier 接收一个 Runnable 对象,当线程全部到达(调用 await() ),执行 Runnable 。 内部类Generation CyclicBarrier 每次重置都会生成新一代,所以 CyclicBarrier 可以复用。 private static class Generation { // broker = true意味着所有线程已经全部到达,可重置`CyclicBarrier` boolean broken = false; } 关键属性 /** The lock for guarding barrier entry */ private final ReentrantLock lock = new ReentrantLock(); // 当有线程到达时,如果count不能减到1,线程将会在该条件上等待

1.RT-Thread移植(基于STM32F429IIT6)

老子叫甜甜 提交于 2020-02-01 08:28:37
一、获取STM32F4固件库和RT-Thread源码 STM32F4固件库(v1.6.1): http://www.st.com/web/en/catalog/tools/PF257901 RT-Thread源码(github下载,版本2.1.0): https://github.com/RT-Thread/rt-thread 二、建立MDK工程模板 建议使用移植的模板进行,这样就不用管CPU的堆栈中断等处理过程的代码(本例使用stm32f40x)。 同时,建议在使用官方权威源码时尽可能保留目录一致性。 例如本移植采用RT-Thread源码目录一致的结构: 所需文件根据RT-Thread文档即可。 注意问题点: 1.HardFault_Handler、PendSV_Handler和SysTick_Handler中断函数从stm32f4xx_it.c文件转移出去。 2.以下函数没声明(暂时注释掉):rt_application_init、stm32_hw_usart_init和stm32_hw_pin_init。 3.main函数在startup.c中已经实现,不要重定义。 三、修改源码 1.stm32f4时钟系统 右侧为修改的,注意该文件还需改 SystemCoreClock = 168000000 ; 四、继续修改代码 去注释上一步注释的stm32_hw_usart_init函数

MaskRCNN源码解析2:特征图与anchors生成

梦想的初衷 提交于 2020-02-01 05:43:26
MaskRCNN源码解析1:整体结构概述 MaskRCNN源码解析2:特征图与anchors生成 MaskRCNN源码解析3:RPN、ProposalLayer、DetectionTargetLayer MaskRCNN源码解析4-0:ROI Pooling 与 ROI Align理论 MaskRCNN源码解析4:头网络(Networks Heads)解析 MaskRCNN源码解析5:损失部分解析 目录 MaskRCNN概述: A),特征图与anchors生成 1,从下到上层 2,从上到下层与横向连接 3,anchors生成 MaskRCNN概述: Mask R-CNN是一个小巧、灵活的通用对象实例分割框架(object instance segmentation)。它不仅可对图像中的目标进行检测,还可以对每一个目标给出一个高质量的分割结果。它在Faster R-CNN[1]基础之上进行扩展,并行地在bounding box recognition分支上添加一个用于预测目标掩模(object mask)的新分支。该网络还很容易扩展到其他任务中,比如估计人的姿势,也就是关键点识别(person keypoint detection)。该框架在COCO的一些列挑战任务重都取得了最好的结果,包括实例分割(instance segmentation)、候选框目标检测(bounding

性能优化10_JobScheduler源码

▼魔方 西西 提交于 2020-02-01 03:06:02
Android性能优化汇总 1 JobScheduler 实现获取 JobScheduler tm = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); 两个方面分析: 系统服务什么时候启动的 寻找是否有JobSchedulerService的类 结果:发现JobSchedulerService 存在 JobSchedulerService extends com.android.server.SystemService implements StateChangedListener, JobCompletedListener 2 aidl JobScheduler 是一个抽象类,无法跟踪 由于是通过getSystemService获取,自己的服务和系统服务需要通信,那么应该涉及到跨进程访问,进程间通信(ipc、binder、aidl) 而在JobScheduleService中也找了对应的class:JobSchedulerStub extends IJobScheduler.Stub 3 schedule方法 JobScheduler.schedule -> IJobScheduler.Stub.schedule 4 验证上述内容 寻找有没有JobScheduler的实现类impl

LinkedHashMap及其源码分析

孤者浪人 提交于 2020-02-01 01:01:44
以下内容基于jdk1.7.0_79源码; 什么是LinkedHashMap 继承自HashMap,一个有序的Map接口实现,这里的有序指的是元素可以按插入顺序或访问顺序排列; LinkedHashMap补充说明 与HashMap的异同:同样是基于散列表实现,区别是,LinkedHashMap内部多了一个双向循环链表的维护,该链表是有序的,可以按元素插入顺序或元素最近访问顺序(LRU)排列, 简单地说: LinkedHashMap=散列表+循环双向链表 LinkedHashMap的数组结构 用画图工具简单画了下散列表和循环双向链表,如下图,简单说明下: 第一张图是LinkedHashMap的全部数据结构,包含散列表和循环双向链表,由于循环双向链表线条太多了,不好画,简单的画了一个节点(黄色圈出来的)示意一下,注意左边的红色箭头引用为Entry节点对象的next引用(散列表中的单链表),绿色线条为Entry节点对象的before, after引用(循环双向链表的前后引用); 第二张图专门把循环双向链表抽取出来,直观一点,注意该循环双向链表的头部存放的是最久访问的节点或最先插入的节点,尾部为最近访问的或最近插入的节点,迭代器遍历方向是从链表的头部开始到链表尾部结束,在链表尾部有一个空的header节点,该节点不存放key-value内容,为LinkedHashMap类的成员属性

spring ioc容器源码分析

六眼飞鱼酱① 提交于 2020-02-01 00:52:29
Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。 本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了。为了降低难度,本文所说的所有的内容都是基于 xml 的配置的方式,实际使用已经很少人这么做了,至少不是纯 xml 配置,不过从理解源码的角度来看用这种方式来说无疑是最合适的。 阅读建议:读者至少需要知道怎么配置 Spring,了解 Spring 中的各种概念,少部分内容我还假设读者使用过 SpringMVC。本文要说的 IOC 总体来说有两处地方最重要,一个是创建 Bean 容器,一个是初始化 Bean,如果读者觉得一次性看完本文压力有点大,那么可以按这个思路分两次消化。读者不一定对 Spring 容器的源码感兴趣,也许附录部分介绍的知识对读者有些许作用。 希望通过本文可以让读者不惧怕阅读 Spring 源码,也希望大家能反馈表述错误或不合理的地方。 目录 文章目录 引言 BeanFactory 简介 启动过程分析 创建 Bean 容器前的准备工作 创建