自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代元培

听风看雨 见贤思齐 抚霜踏雪 青云直上

  • 博客(235)
  • 资源 (2)
  • 收藏
  • 关注

原创 PostgreSQL字符串函数

-- 字符串拼接 PostgreSQLselect 'Post'||'greSQL';-- 返回参数的长度位 24select bit_length('one');-- 返回参数中的字符数 2select char_length('中国');-- 同上 2select length('中国');-- 不同编码下的长度 3select length('中国','GBK');-- 字符串的字节数 6select octet_length('中国');...

2020-08-03 10:46:20 280

原创 DataX脚本任务开发记录

# job模版:/home/work/datax/job/fn/example/fn_t_bank_return_days{ "job": { "content": [{ "reader": { "name": "mysqlreader", "parameter": { "columnMeta": [{ "value": "dt", "label": "DATE_FORMAT(f_create_time,'%Y-%m-%d')", .

2021-07-20 19:17:59 4

原创 PostgreSQL除法注意事项

-- 在PG里如果想做除法并想保留小数,用上面的方法却行不通,因为"/" 运算结果为取整,并且会截掉小数部分。select 1/4; -- 0select round(1::numeric/4::numeric,2); -- 0.25select round(cast(1 as numeric )/cast(4 as numeric),2); -- 0.25-- cast函数用法SELECT substr(CAST(1234 AS text),3,1); -- 3...

2021-07-09 16:35:52 18

原创 邮件监控云上脚本执行进度

#!/bin/sh#监控云上pay-data-load脚本执行进度current_path=$(cd "$(dirname $0)"; pwd)data_path="$current_path/time/"file_input=$current_path/file_inputhtml_file=$current_path/pay_data_load.htmlif [ -f "$html_file" ];then rm $html_filefi#if [ -f "$file_...

2021-07-09 11:35:37 13

原创 PostgreSQL变更表Owner

alter table xxx owner to new_owner;

2021-07-08 11:19:03 35

原创 布隆过滤器

一、介绍 布隆过滤器是一个二进制数组,它的作用是判断一个数是否存在于这个数组,0表示不存在,1表示存在,如下图所示: 二、添加 如果要存入“你好”这个字符串,首先会经过n个哈希函数计算,会计算出不同的哈希值,然后将这几个哈希值映射到数组中,对应的位置的二进制数被修改为1,如下图所示: 下标为3、5、7的位置被修改成了1 三、查询 比如说查询“你好”这个字符串,首先通过n个哈希函数计算出对应的数组位置是3、5、7,这三个位置的二进制数...

2021-07-06 16:47:57 5

原创 Redis缓存预热&雪崩&击穿&穿透

目录 1、缓存预热 2、缓存雪崩 3、缓存击穿 4、缓存穿透 1、缓存预热 场景: 服务器启动后迅速宕机 问题排查: 1、请求数量较高,大量的请求过来之后都要从缓存中获取数据,但是缓存中又没有,从数据库中查找数据后将数据再存入缓存,造成了短期内对redis的高强度操作 2、主从之间数据吞吐量较大,数据同步操作频度较高 解决方案: 为了防止用户访问的时候Redis中没有数据,所以提前将热点数...

2021-07-06 16:20:00 15

原创 PostgreSQL用户角色权限

在PostgreSQL中,所有内容都是围绕role概念构建的。在macOS上首次安装PostgreSQL时,该脚本使用您的macOS用户名创建了一个角色,并授予了权限列表。PostgreSQL中没有用户,只有role。通过在终端中运行psql postgres,您将使用您的macOS用户名自动登录到PostgreSQL,从而访问创建的角色。就我而言,创建了flaviocopes角色,可以使用\du命令看到它:看到? 默认情况下,我具有以下角色属性: Superuser...

2021-07-06 14:29:42 6

原创 Vacuum和Vacuum Full的处理过程

对于数据库系统的并发控制,PostgreSQL采用MVCC(多版本并发控制)进行处理。这种机制有一个缺点,就是随着时间的推移,数据文件中积累的dead tuples会越来越多。怎么去清理这些dead tuples,这个时候就需要vacuum处理。 PostgreSQL系统的vacuum是一个例行性的维护过程,系统也会在启动服务时启动autovacuum守护进程对此进行维护,当然也有vacuum命令可以让用户进行手动执行vacuum操作。除了清理dead tuples,vacuum还有冻结事...

2021-07-06 12:03:48 31 1

原创 php-fpm进程管理的三种模式

php-fpm进程管理一共有三种模式:ondemand、static、dynamic,我们可以在同一个fpm的master配置三种模式,看下图1。php-fpm的工作模式和nginx类似,都是一个master,多个worker模型。每个worker都在accept本pool内的监听套接字(linux已不存在惊群现象)。 ondemand 在php-fpm启动的时候,不会给这个pool启动任何一个worker,是按需启动,当有连接过来才会启动。 配置文件(我的配置文件...

2021-07-06 11:46:21 9

原创 PHP的array_filter过滤数组元素

array_filter—使用回调函数过滤数组的元素。 遍历array数组中的每个值,并将每个值传递给callback回调函数。如果callback回调函数返回true,则将array数组中的当前值返回到结果array数组中。 返回结果array数组的键名(下标)会维持不变,如果array参数是索引数组,返回的结果array数组键名(下标)可能会不连续。可以使用array_values()函数对数组重新索引。<?php$arr = [ ['id'=>...

2021-07-05 16:51:16 8 1

原创 PHP九九乘法表

<?phpfor ($a=1; $a<10; $a++){ for ($b=1; $b<=$a; $b++) { echo "$a*$b=".$a * $b."\t"; } echo PHP_EOL;}# 结果1*1=12*1=2 2*2=43*1=3 3*2=6 3*3=94*1=4 4*2=8 4*3=12 4*4=165*1=5 5*2=10 5*3=15 5*4=20 5*5=256*1=6 6*2=12 6*3=18.

2021-06-25 14:23:51 9

原创 PHP自定义大小写转换函数

<?php// PHP的strtolower()和strtoupper()函数在安装非中文系统的服务器下可能会导致将汉字转换为乱码,请写两个替代的函数实现兼容Unicode文字的字符串大小写转换// 答:原因是:中文是由多字节组成的,而只有英文系统的单个英文字符只有一个字节,所以该系统把中文的每一个字节都做了strtolower()处理,改变后的中文字节拼接在一起就成了乱码(新生成的编码映射对应的字符可能就不是中文了)// 手动解决:用str_split(string string,intst.

2021-06-18 17:05:13 12 1

原创 PHP二维数组去重处理

<?php// 二维数组根据某字段去重function assocUnique(&$arr, $key) { $tmpArr = array(); foreach ($arr as $k => $v) { if (in_array($v[$key], $tmpArr)) { unset($arr[$k]); } else { $tmpArr[] = $v[$key]; }.

2021-06-17 15:12:01 6

原创 PHP将数组元素两两组合为新数组

// 方式一for($i = 1; $i <= 10; $i++){ $array[] = $i;}for($i = 0; $i < count($array); $i++){ for($j=0; $j<count($array)-$i-1; $j++) { $array2[] = [$array[$i], $array[$i+$j+1]]; }}print_r($array2);die;// 方式二$arr = ['A', 'B'.

2021-06-17 11:32:06 39

原创 PHP判断4个坐标是否构成矩形

矩形: 矩形对角线相等,且四个角为直角。所以可以根据勾股定理判定。 思路: 首先判断坐标点是否有重复,然后四个坐标点可以求得它们两两之间的距离,只要两条短边的平方相加等于长边平方即可判定它为矩形。 注意: 正方形是特殊的矩形。...

2021-06-16 19:48:01 11 1

原创 MySQL外键约束

只有InnoDB的引擎才支持外键。 从表的外键必须是主表的唯一性索引,主键和外键的字段类型要相似,数值型类型要求一致,无符号也要要求一致,字符型长度可以不同,类型需要一致。 如果外键字段没有创建索引,MySQL会自动给外键创建普通索引。 外键可以在创建表的时候添加,也可以在创建表之后修改。 建表时指定外键。 动态创建外键 通过ALTER命令可以动态添加和删除外键,命令如下,需要注意的是,在动态添加外键前,从表中不能有脏值,否则不能添加成功。...

2021-06-16 14:41:11 18

原创 PHP遍历文件夹

<?php// php遍历文件夹function myScandir($dir){ $files = array(); if($handle = opendir($dir)) { while (($file = readdir($handle)) !== false) { if($file != '..' && $file != '.') { if(is_dir($dir."/".$file).

2021-06-16 10:16:32 2

原创 PHP快速排序

基本思想:在数组中挑出一个元素(多为第一个)作为标尺,扫描一遍数组将比标尺小的元素排在标尺之前,将所有比标尺大的元素排在标尺之后,通过递归将各子序列分别划分为更小的序列直到所有的序列顺序一致。<?php//快速排序function quick_sort($arr){ // 先判断是否需要继续进行 $length = count($arr); if($length <= 1) { return $arr; } $base_nu.

2021-06-15 17:15:17 22 2

原创 PHP顺序查找和二分查找

<?php// 顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组/** * 顺序查找 * @param array $arr 数组 * @param mixed $k 要查找的元素 * @return mixed 成功返回数组下标,失败返回-1 */function seq_sch($arr,$k){ for ($i=0,$n = count($arr); $i < $n; $i++) { if ($arr[$i] .

2021-06-15 16:19:22 7

原创 PHP洗牌算法

<?php// PHP洗牌算法 每次从数组中剩余元素随机取数按顺序拼成新的数组$card_num = 54; //牌数function wash_card($card_num){ $cards = $tmp = array(); for($i = 0;$i < $card_num;$i++){ $tmp[$i] = $i; } for($i = 0;$i < $card_num;$i++){ $index = ran.

2021-06-15 16:05:20 4

原创 PHP中use关键字与闭包函数

匿名函数(闭包函数)是一个独立的命名空间,你不能访问这个命名空间之外的变量,使用use关键字可以把外部的变量 带到这个命名空间中。可以通过使用 & 符号来声明指针变量。

2021-06-15 15:50:11 9

原创 PHP二维数组排序算法函数

<?php// 二维数组排序算法函数,能够具有通用性,可以调用php内置函数。function array_sort(&$arr, $order = []){ $result = []; if (empty($arr)) { return $result; } uasort($arr, function ($a, $b) use ($order) { foreach ($order as $key => $sort).

2021-06-15 15:21:22 4

原创 PHP实现约瑟夫环猴子选大王

//(约瑟夫环)猴子选大王// 思路:一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n,输出最后那个大王的编号。<?php//(约瑟夫环)猴子选大王// 思路:一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去..

2021-06-15 14:49:22 6

原创 Iterator模式的PHP实现

<?php// 使对象可以像数组一样进行foreach循环,要求属性必须是私有。(Iterator模式的PHP实现,写一类实现Iterator接口)class Test implements Iterator{ private $item = array('id'=>1,'name'=>'php'); public function rewind(){ reset($this->item); } public functio.

2021-06-15 14:36:05 5

原创 PHP实现一个双向队列

<?phpclass Deque{ private $queue=array(); public function addFirst($item){ return array_unshift($this->queue,$item); } public function addLast($item){ return array_push($this->queue,$item); } public f.

2021-06-15 14:18:12 8

原创 MySQL锁与PHP文件锁

模拟准备--如何模拟高并发访问一个脚本:apache安装文件的bin/ab.exe可以模拟并发量 -c 模拟多少并发量 -n 一共请求多少次 http://请求的脚本例如:cmd: apache安装路径/bin/ab.exe -c 10 -n 10 http://web.test.com/test.php【切入正题】MYSQL中的锁:语法 :LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE .................. 【锁表】UNLOCK TABLES

2021-06-15 14:09:45 21

原创 PHP利用MySQL锁解决高并发

先看没有利用事务的时候并发的后果-- 库存管理表CREATE TABLE `t_storage` ( `f_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `f_number` int(11) DEFAULT NULL, PRIMARY KEY (`f_id`)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;-- 订单管理表CREATE TABLE `t_order` (...

2021-06-06 17:28:09 9 2

原创 MySQL索引底层原理与数据结构

深入理解Mysql索引底层原理 一步一步推导出Mysql索引的底层数据结构。 Mysql作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是Mysql数据的存储形式以及索引的设计,决定了Mysql整体的数据检索性能。 我们知道,索引的作用是做数据的快速检索,而快速检索的实现的本质是数据结构。通过不同数据结构的选择,实现各种数据快速检索。在数据库中,高效的查找算法是非常重要的,因为数据库中存储了大量数据,一个高效的索引能节省巨大的时间。比如下...

2021-06-03 20:03:43 42

原创 浅谈redis的setnx

在Redis里,所谓SETNX,是「SET if Not eXists」的缩写,也就是只有不存在的时候才设置,可以利用它来实现锁的效果,不过很多人没有意识到SETNX有陷阱! 比如说:某个查询数据库的接口,因为调用量比较大,所以加了缓存,并设定缓存过期后刷新,问题是当并发量比较大的时候,如果没有锁机制,那么缓存过期的瞬间,大量并发请求会穿透缓存直接查询数据库,造成雪崩效应,如果有锁机制,那么就可以控制只有一个请求去更新缓存,其它的请求视情况要么等待,要么使用过期的缓存。 下面以目...

2021-05-19 16:15:33 20

原创 正确使用Redis的setnx实现锁机制

setNX,是set if not exists的缩写,也就是只有不存在的时候才设置,设置成功时返回1,设置失败时返回0。可以利用它来实现锁的效果,但是很多人在使用的过程中都有一些问题没有考虑到。 例如某个查询数据库的接口因为请求量比较大所以加了缓存,并设定缓存过期后刷新。当并发量比较大并且缓存过期的瞬间,大量并发请求会直接查询数据库导致雪崩。如果使用锁机制来控制只有一个请求去更新缓存就能避免雪崩的问题。下面是很多人下意识想到的加锁方法$rs = $redis->setNX($k...

2021-05-19 16:00:11 33

原创 awk统计行数&去重展示

# 统计第4列为0112并且第5列为00或者03的行数awk -F '|' '{if(($4=="0112")&&($5=="00"||$5=="03")) print $1}' epcc0303_20210423.txt|wc -l# 去重展示第一列的时间awk -F '|' '{print $1}' epcc0303_20210422.txt|sort|uniq

2021-05-08 19:15:20 50

原创 hive获取指定日期星期几的方法

-- #date#表示指定的日期pmod(datediff(#date#, '1920-01-01') - 3, 7)

2021-04-28 11:57:05 98

原创 即时分析师认证考试题

-- gp考试,执行角色选择:RCC组,集群选择:etron_exam,数据库选择:postgres-- 如果是测试sql,为了速度,可以使用limit限制返回的数据量。-- --用户表:-- create table public.user_info(-- user_id bigint,--用户编号-- user_name text,--用户名-- user_info jsonb,--用户详细信息-- --参考: {user_id:"用户编号",user_name:"用户名",provi.

2021-04-22 17:04:50 35

原创 SQL行转列 列转行实现

前言 行列转换在做报表分析时还是经常会遇到的,今天就说一下如何实现行列转换吧。 行列转换就是如下图所示两种展示形式的互相转换。 行转列 PIVOT 后跟一个聚合函数来拿到结果,FOR 后面跟的科目是我们要转换的列,这样的话科目中的语文、数学、英语就就被转换为列。IN 后面跟的就是具体的科目值。 当然我们也可以用 CASE WHEN 得到同样的结果,就是写起来麻烦一点。使用 CASE WHEN 可以得到和 PIVOT 同样的结果,没有 PIVOT 简...

2021-04-21 10:42:17 31

原创 Shell字符串拼接及替换脚本示例

#!/bin/bash. ~/.bashrcdateEnd=`date +"%Y%m%d"`dateBegin=`date +%Y%m%d -d"-30 day $dateEnd"`if [ $# == 1 ]; then if [ ! -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ]; then echo "FATAL: The parameter is not a number." exit -1 fi i.

2021-04-16 17:26:56 49

原创 sql优化策略——不必要的union

不必要的union(分析sql逻辑),相似的子查询重复union,仅仅为了过滤不同的条件。 影响:表重复冗余扫描多次,执行效率低 优化方法:使用case when改写union 举例:select id,score,'type1' from table_b where type=1union select id,score,'type2' from table_b where type=2union select id,score,'type3' fr...

2021-04-13 14:44:52 22

原创 awk指定列求和简单示例

20000000000069|950615951|2019-04|3.7020000000000069|950615951|2019-05|1.3020000000000069|950615951|2019-06|1.3020000000000069|950615951|2019-08|1.5020000000000069|950615951|2019-09|1.4020000000000069|950615951|2019-10|1.6020000000000069|950615951|20.

2021-04-09 17:51:41 39

原创 row_number最简单用法示例

-- row_number 最简单用法select f_uid, f_create_time, f_typefrom( select f_uid, f_create_time, f_type, row_number() over (PARTITION BY f_uid order by f_create_time desc) as rn from open.t_test) tmpwhere rn.

2021-04-09 16:42:54 12

原创 PHP下划线转为首字母大写

<?php// 请写一个函数 实现以下功能// 字符串open_door转换成OpenDoor、make_by_id转换成MakeById// 方式一function str_explode($str){ $strArr = explode('_', $str); $strImplode = implode(' ', $strArr); $strImplode = implode('', explode(' ', ucwords($strImplode))); .

2021-04-02 17:29:06 30

SourceTree产品证书

下载此压缩包,解压后得到一个文件,直接导入即可使用。

2019-01-17

Xshell破解版 Xshell6破解版

Xshell6破解版,亲测可用,分享给大家。直接下一步、下一步、安装即可使用,不需要别的任何复杂的操作。

2018-10-31

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除