LOADING

王思彤 发布的文章

迭代类似于遍历
迭代器作用:在进行遍历时,每每循环一次都会返回下一个数据,直到读完所有的数据为止。迭代器的作用就是记住访问到了第几条数据,以便于拿到下一条数据。
迭代器的本质:使多个不同类型的对象可以一起遍历,比如一个列表中既又元祖又有列表又有字符串
迭代器必须有__iter__和__next__方法。
迭代器优点:节省内存。不依赖索引取值。惰性计算。
迭代器的缺点:不能直观的查看里面的数据。取值时不走回头路,只能一直向下取值。

本质:是一个迭代器,即生成器是一种特殊的迭代器。
特点:惰性运算,开发者自定义。
生成器函数:在生成器函数中,用yield语句而不是return语句,yield语句一次返回一个结果。在其中两个结果的中间,函数是挂起的状态,以便于下次从离开的地方开始执行而不是从头开始。
生成器表达式:类似于列表推导式,但生成器是按需取结果,而不是一次性来构建一个结果列表。
缺点:只能遍历一次,最后一次会报异常

cat nohup.out | grep -n "长度" -C 10 #只看 长度 前后10行

cat -n text.txt 由 1 开始对所有输出的行数编号
cat -b text.txt 和 -n 相似,只不过对于空白行不编号

查询文件中关键内容,按条件查询
cat text.txt |grep '异常'-A 100 前100行
cat text.txt |grep '异常'-B 100 之前100行
cat text.txt |grep '异常'-C 100 前后100行
cat text.txt | grep -v '异常' 排除异常所在的行
cat text.txt | grep -n '异常' 显示异常所在行并显示行数
cat text.txt | grep -n '异常' -C 100 显示异常所在行前后100行并显示行数,其他想显示行数以此类推

cat -n text.txt1 > text.txt2 #把 text.txt1 的文档内容加上行号后输入 text.txt2 这个文档里
cat -b text.txt1 text.txt2 >> text.txt3 #把 text.txt1 和 text.txt2 的文档内容加上行号(空白行不加)之后将内容附加到 text.txt3 文档里

#首先拉取jenkins镜像
docker pull jenkins/jenkins

#以root身份运行镜像

docker run -d -uroot -p 9077:8080 -p 50000:50000 --name jenkins -v /var/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime jenkins/jenkins

#通过ip加端口号进入jenkins 127.0.0.1:9077

jenkins

#切换进入docker镜像
docker exec -it d1949b69ce49  bash 
#编辑密码所在文件 获取密码
cat /var/jenkins_home/secrets/initialAdminPassword

安装推荐的插件
jenkins2.png
安装必备的插件,在jenkins插件中搜索

Generic Webhook Trigger
GitLab
#服务器安装expect
apt install expect

在jenkins搜索栏输入Manage搜索,选择系统管理
需要在Jenkins系统设置中取消勾选“Enable authentication for '/project' end-point”
jenkins4.png
新建一个jenkins任务,选择第一个
jenkins3.png
进入任务配置,构建触发器选择入下图所示
jenkins5.png
构建步骤输入以下脚本

#!/usr/bin/expect
#web服务器
spawn ssh root@127.0.0.1
expect {
 "(yes/no*" {send "yes\r";exp_continue}
 "password:" {send "pwd\r";exp_continue}
 eof
}
expect "*]$"
send "su root\n"
expect "*password"
send "pwd\n"
expect "*]$"
send "cd /var/www/project\n"
expect "*]#"
send "git pull\n"
expect "*]#"
send "exit\n"
expect "*]#"

多台服务器配置多个脚本链接,保存
登录你的gitlab

添加插件

# 取值必须values
 query_data = Model.objects.filter().values('id')
# 返回必须转一次list
 return JsonResponse(list(data),safe=False)

感觉django没有吹得那么好,orm转个json这么费劲

import copy
from prettyprinter import cpprint as p

        campaign_bigo_no = campaign_bigo = {
            'cpm': 0,
        }
        #  默认是传引用
        campaign_bigo['cpm'] = 1
        p(campaign_bigo_no)
        p(campaign_bigo)
        #  传值
        campaign_bigo_no = copy.deepcopy(campaign_bigo)
        campaign_bigo['cpm'] = 1
        p(campaign_bigo_no)
        p(campaign_bigo)

1) 没有查询条件,或者查询条件没有建立索引;
2) 在查询条件上没有使用引导列
3) 查询的数量是大表的大部分,应该是30%以上。
4) 索引本身失效
5) 在索引列上使用mysql的内置函数
6) 对小表查询,数据量小
7) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。
8)隐式转换导致索引失效..也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),

流程
准备工作

  1. 注册google账号
  2. 创建结算账号
  3. 创建项目 https://console.cloud.google.com/projectselector2/iam-admin/serviceaccounts?hl=zh_CN
  4. 创建服务账号
  5. 创建服务账号的秘钥,下载到本地
  6. 设置有秘钥的服务账号资源权限
  7. composer require google/cloud-translate

代码

require 'vendor/autoload.php';

use Google\Cloud\Translate\V3\TranslationServiceClient;

$translationClient = new TranslationServiceClient();
$content = ['one', 'two', 'three']; //数组形式可传多个
$targetLanguage = 'es'; 目标语言
$response = $translationClient->translateText(
    $content,
    $targetLanguage,
    TranslationServiceClient::locationName('[PROJECT_ID]', 'global') // project_id是你的项目id,global是你秘钥的本地地址
);

foreach ($response->getTranslations() as $key => $translation) {
    $separator = $key === 2
        ? '!'
        : ', ';
    echo $translation->getTranslatedText() . $separator;
}

 // 传值
        $a = 123;
        $b = $a;
        $a = 456;
        echo $b; // 123
        // 传引用
        $a = 123;
        $b = &$a;
        $a = 456;
        echo $b; // 456
        // 对象例外会默认传引用
        $a = AdminUser::get();
        echo $a->count();// 130
        $b = $a;
        $a = $a->forget(129);
        echo $b->count();// 129 
        // 所以如果要缓存变量需要clone 关键字
        $a = AdminUser::get();
        echo $a->count();// 130
        $b = clone $a;
        $a = $a->forget(129);
        echo $b->count();// 130