Categories
diary

中山三院数据处理记录

本来打算用mysql分库分表进行三院数据处理(最大的一张表有两亿数据)。计划是三台ubuntu每台负责一到两张大表。每个表单独建立一个库,按照用户ID分别在库中做分表功能

数据库结构如上,图片中表后缀就是用户id生成的分表序号

用的是etl工具kettle进行数据读取再入库的(*记得使用etl工具时需要进行数据分片把一个大库分成几个部分然后输入到其他库上,否则一个任务没完成也要重新开始)

细节:

第一:若单纯做数据迁移查询,数据库引擎可食用Myisam,没有innodb的行锁与机制,然而数据写入速度提高

第二:关闭mysql binlog 因为bin_log 会把数据库的写入异步保存为一个二进制文件,供slave库执行同步 ,其实会稍微影响效率

my.cnf 在[mysqld]添加 skip-log-bin 重启mysql

执行查询SHOW VARIABLES LIKE “log_bin” Value为OFF即 关闭了log_bin

第三:绝对不可以将某一个张表分往某一台服务器上。而是要把一张表水平分到多台服务器上 否则当执行某一业务(需要查询某张表时)所有网络访问和数据库连接,只落在同一台服务器上完全起不到多服务器集群的作用。(我应该前300张表在 ubuntu1 中间300张表在ubuntu2 最后300张表在ubuntu3)

Categories
php

ThinkPHP

Categories
php

Laravel

Categories
python

python 简介

    Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

    python语言上分为python2,python3。当初因为语法方案问题,遂对该编程语言进行了分支。两种语言上语法略有差别,譬如python2支持函数执行可不带括号等。然而随着时代发展python2已经逐渐退出历史舞台,最新版的操作系统默认支持的就是python3。我们一般说的python指的就是python3了

    python执行需要python运行时环境。https://www.python.org/官网地址下载。因为python运行时环境需要按照自己的操作系统下载对应的安装包,换句话说通过python运行时环境去兼容不同的操作系统的资源接口,对上层语言级别的调用提供一致的屏蔽操作系统差异的函数与库。所以python能做到跨平台。

    python作为脚本语言(其实是编译、运行一体化),调试方便。而且和调用c的库相当方便,被调用也只需开一个进程执行python命令,所以亦被称为胶水语言(基本逻辑用python写,核心算法等用c的库)。

Categories
java

java简介

    java作为已经有30年历史的编程语言的确很不错了。当初在各种C语言及其拓展的影响下,为了解决跨平台的问题而开发出java运行时环境即JRE(java runtime environment)。其语法从C++中继承出来,又参考了C#的特性。

    当年开发C的时期,人们需要做大量操作系统的判断去书写代码,进而调用系统接口实现功能。过程难度极大又极其容易出错。jre就是用来解决这个问题的。在linux系统下,jre文件夹中会有一个jvm.so文件,而windows系统就是jvm.dll。这个文件就是java虚拟机(java virtual machine)。为什么会叫做java虚拟机?因为你可以把他想象成一个操作系统的代理,java需要调用的操作系统的api是先通过各操作系统都一致的标准函数、接口来调用jvm,jvm再调用操作系统的api调用系统资源。看上去jvm就像是一个代理操作系统一般提供底层资源的操作,所以才叫java虚拟机。

    java的开发过程:所谓一次编译,到处运行。开发者先编写出.java文件(人类能看懂的),然后通过javac将.java文件转变为.class文件(jvm能读取的二进制文件),该class文件也是跨平台的。执行java命令启动jvm,jvm读取class文件执行代码流程。理论上,我只要生成了class文件,在任何一个安装了jre的操作系统都能运行。

    作为面向对象的编程语言,java也是一枝独秀,该特点会一直积极影响住java的生命历程。

Categories
nodejs

nodejs简介

    从语言级别我们称nodejs其实并不准确,应该叫做javascript。但其实我们更想强调javascript对服务端的应用和影响而不是浏览器,所以标题就成为nodejs简介。

    nodejs 是一个基于 Chrome V8 引擎的javascript运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型。

    上述两个特征中,第一点说明了nodejs的运行环境,也说明了nodejs其实是从chrome浏览器内核的v8引擎剥离出来的运行时环境,所以天生nodejs与浏览器就有密不可分的关系(同一套javascript代码既可以在浏览器运行,也可以在nodejs环境运行)。

    第二点也是最明显的特点,nodejs在处理异步的需求下,其实不是用传统的多线程解决方案,而是用基于事件回调的方式执行。所以nodejs就只有两个线程,一个事件线程,一个执行线程。事件线程就收事件信号,再通知执行线程执行代码。所以nodejs天生就是异步的,“面向消息回调编程”(这个是有点开玩笑的成分了)。然而由于javascript大多数开发人员都熟悉,所以也是最好上手的编程语言之一。并且作为脚本语言,调试难度低,开发周期短,语法自由也是不可忽视的优势。

Categories
php

php简介

    php原始为Personal Home Page的缩写,已经正式更名为 “PHP: Hypertext Preprocessor”。

    php依赖php运行容器即php进程,通过该进程对php文件进行输入处理,在 标准输出流 返回输出结果。特点运行简单,无需编译。在web容器下,每个请求都会产生一个php进程,所以只需把php文件更改后,立即访问该php文件,即可看见最新的更改(每发送一个请求,产生了新的进程重新读取文件)。调试十分方便。

运行php环境有多种方法

    1:通过php命令

    php -f “xxx.php” 通过指定需要加载php文件,开启php进程,在控制台标准输出流看到该文件的输出。

    php -s localhost:8080 (-t “项目文件夹”) 通过-t 指定php文件的文件夹,默认为当前进程执行文件夹目录。浏览器访问localhost:8080通过文件系统路径访问对应的文件(默认为index.php),即可在浏览器看到对应文件的输出。这个就是把php进程的输出流打在web容器的请求输出上,所以能在浏览器看到输出

    2:通过web容器访问。其实就是通过web容器执行请求输入到socket中(文件socket或端口socket都可)。服务器开启php-fpm服务,监听对应的socket作为进程输入,将php-fpm的标准输出流打在socket上供web容器读取。web容器再把socket的读取的内容作为请求响应返回给用户。(这就是标准的cgi做法,以进程标准输入流接受请求,标准输出流产生响应,一个请求就是一个进程)。

    nginx配置:

location ~ .php$ {
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

    apache配置:

LoadModule php7_module “${INSTALL_DIR}/bin/php/php7.1.9/php7apache2_4.dll”

<IfModule php7_module>
    DirectoryIndex index.php index.php3 
AddType application/x-httpd-php .php
    AddType application/x-httpd-php .php3
</IfModule>