分类: 未分类

Docker 安装Mysql

Docker 安装mysql 需要把数据存储在本地目录,这样如果重启docker或者想要备份数据就只要把本地目录备份下就可以了

只需在命令中加上-v参数

docker run -d -e MYSQL_ROOT_PASSWORD=admin –name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

意思是把主机的/data/mysql/data 与容器里的/var/lib/mysql 变成一个共享的目录。

或者使用指定配置文件

docker run -d -e MYSQL_ROOT_PASSWORD=admin –name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

这样,即可修改配置文件,还能把数据存在本地目录,一举两得,-v 参数可以多次使用,每次映射一个目录,通过这种方式,很容易进行配置。

国外程序员整理的机器学习资源大全

本文汇编了一些机器学习领域的框架、库以及软件(按编程语言排序)。

伯乐在线已在 GitHub 上发起「机器学习资源大全中文版」的整理。欢迎扩散、欢迎加入。

https://github.com/jobbole/awesome-machine-learning-cn

C++

计算机视觉

  • CCV —基于C语言/提供缓存/核心的机器视觉库,新颖的机器视觉库
  • OpenCV—它提供C++, C, Python, Java 以及 MATLAB接口,并支持Windows, Linux, Android and Mac OS操作系统。

通用机器学习

Closure

通用机器学习

Go

自然语言处理

  • go-porterstemmer—一个Porter词干提取算法的原生Go语言净室实现
  • paicehusk—Paice/Husk词干提取算法的Go语言实现
  • snowball—Go语言版的Snowball词干提取器

通用机器学习

  • Go Learn— Go语言机器学习库
  • go-pr —Go语言机器学习包.
  • bayesian—Go语言朴素贝叶斯分类库。
  • go-galib—Go语言遗传算法库。

Continue reading

SpringCloud配置ConfigServer

Spring Cloud Config可以用来作分布式配置中心,本质上ConfigServer会从git / svn / 本地目录上下载到本地环境,EnvironmentController提供了一些了接口给ConfigClient启动时调用,EnvironmentController会返回本地缓存的配置文件给ConfigClient,从而实现分布式配置

 

首先我们需要创建一个server端工程,pom代码如下

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hlab.gongura</groupId>
    <artifactId>gongura</artifactId>
    <version>1.0-SNAPSHOT</version>
    <name>gongura</name>
    <description>Config Server</description>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <properties>
        <!-- Generic properties -->
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
        <springfox-version>2.6.1</springfox-version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
      
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

application.yml配置

server:
  port: 8888


spring:

#config server 配置 ,从git获取配置
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/**********
#          username: *******   如果是私有项目需要填写
#          password: *******    如果是私有项目需要填写

uri填写git地址,这里的配置是从git获取的,也可以使用本地文件填写配置

 

Application主类代码,主要是@EnableConfigServer

package com.hlab.gongura;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@EnableEurekaClient
@EnableFeignClients
@SpringBootApplication
@EnableConfigServer
public class GonguraApplication {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(GonguraApplication.class, args);
    }
}

配置完成后试下访问看看得到的结果

{
	"name": "application-dev",
	"profiles": ["default"],
	"label": null,
	"version": null,
	"state": null,
	"propertySources": [{
		"name": "https://gitee.com/CheungQ/spring-cloud-config-repository/application-dev.yml",
		"source": {
			"demo.title": "new 新内容 (yml 11文件)"
		}
	}]
}

远程git中的配置文件application-prod.yml中的内容为

demo:
  title: "prod env title"

至此,server端配置完成,接下来我们要配置的是client端,client端其实就是一个普通的工程,在resources目录下创建一个新的配置文件bootstrap.yml,注意不是application.yml,内容如下

spring:
  application:
    name:  orchid-client
  cloud:
    config:
      uri: http://localhost:8888
      name: application
      profile: prod

 

接下来就可以直接用@value注解获取配置了,另外有个tips,本地配置中最好加下对应的配置,比如我在application.yml中加了

demo:
  title: "本地"

 

否则会报错

 

文档:https://springcloud.cc/spring-cloud-config-zhcn.html#true-encryption-and-decryption

Nginx配置说明

user nginx nginx ;

Nginx用户及组:用户 组。window下不指定

 

worker_processes 8;

工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。

 

error_log  logs/error.log;  

error_log  logs/error.log  notice;  

error_log  logs/error.log  info; 

错误日志:存放路径。

 

pid logs/nginx.pid;

pid(进程标识符):存放路径。

 

worker_rlimit_nofile 204800;

指定进程可以打开的最大描述符:数目。

这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。

现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。

这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。

 

events

{

use epoll;

使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

补充说明:

与apache相类,nginx针对不同的操作系统,有不同的事件模型

A)标准事件模型

Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

B)高效事件模型

Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

Epoll:使用于Linux内核2.6版本及以后的系统。

/dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。

Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。

 

worker_connections 10000;

没个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections

keepalive_timeout 65;

keepalive超时时间。

Continue reading