Translate

kafka 占用太多磁盘空间

 issue:

    kafka 运行一段时间后,会占用大量存储空间

    原因是 kafka 的数据量太大 导致 log 太大 会占用空间


solution:

    修改 ~/kafka/config/server.properties


        

* kafka install document:

https://hevodata.com/blog/how-to-install-kafka-on-ubuntu/






        

delete all the .jpg files in a folder and the subfolders

 Issue:

    When i use "rm ./*" to delete files, the issue is "bash: /usr/bin/rm: Argument list too long".

    

Solution:

    find . -maxdepth 2 -type f -name "*.jpg" -delete




How to build your own docker

 1. Dockerfile:


Zephyr - Study: Nginx (1)

 1. 目录结构:

1. conf: 放nginx的主配置文件 nginx.conf,会引用别的配置文件
2. html: 默认情况的网页和静态资源
3. logs: 记录访问日志 / 错误日志 / pid号
4. sbin: 只有nginx的主程序,启动时使用

 2. Nginx多进程模型:


Master 是主进程:协调子进程
Worker 是子进程:处理业务请求


 3. Nginx配置文件(nginx.conf):

  • worker_processes:开启的子进程数量 (通常和CPU核数相同)
  • mime.types:本质上是一个映射表,把后缀映射到文件类型上,服务端通过这个文件告诉浏览器用什么类型来解析对应后缀的文件
  • sendfile:是否开启零复制
            不开启sendfile
                Nginx会先把文件复制到应用程序内存,然后再发给系统的网络接口
                即多一次拷贝

            
            开启sendfile
                Nginx只发送一个信号,接口直接去读取文件























Some commands for YOLOv5

1. train yolov5 using multi-gpu:

python -m torch.distributed.run --nproc_per_node 8 train.py --batch 64 --epochs 400 
--data ./data/fall.yaml --weights yolov5m.pt --device 0,1,2,3,4,5,6,7


2. yolov5 convert pytorch to onnx:

python export.py --weights yolov5m.pt --include onnx --dynamic

3. yolov5 convert onnx to trt:

/usr/src/tensorrt/bin/trtexec --onnx=./fall_det/1/0620.onnx --saveEngine=./fall_det/1/model.plan --workspace=8192 --explicitBatch --fp16 --verbose --dumpOutput --minShapes='images':1x3x640x640 --optShapes='images':10x3x640x640  --maxShapes='images':10x3x640x640





Zephyr - Study: JavaScript (2)

1. 内建对象:
        包括 object function array 等

2. 数组 Array 
        也是一个对象
        1)创建数组对象:var arr = new Array();
        2)添加元素:数组[索引] = 值
        3)长度:数组.length
        4)数组可以不连续,不连续的情况下,长度为 最大索引+1 (尽量不要用不连续)
        5)数组元素可以是任意类型
       
        方法:
            1) push() 向末尾添加元素,返回新长度
            2) pop() 删除并返回最后一个
            3) unshift() 向开头添加元素,返回新长度
            4) shift() 删除并返回开头第一个
            5) slice(开始索引,结束索引) 返回选定元素 (开始索引包含,结束索引不包含)
            6) splice(开始索引,删除个数,新增的元素) 删除指定元素并返回且加入新的元素 (会改变原数组)
            7) concat() 连接两个或多个数组,不修改原数组
            8) join(连接符) 可以将数组转化为字符串 (字符串就是把所有元素 默认用逗号连接)
            9) reverse() 倒转数组 会修改原数组
            10) sort() 排序数组 会修改原数组
                    升序:
                        arr.sort(function(a,b){
                            return a - b
                        })
                    降序:
                        arr.sort(function(a,b){
                            return b - a
                        })

            
3. 函数的方法:
        1) call()   2) apply()  这两个都会调用函数执行
            区别是:
                在调用call() 和 apply()时候,可以将一个对象指定为第一个参数,此时这个对象会成为函数执行时的this
                例子:
                    fun();                      this: window
                    fun.call(obj);            this: obj
                    fun.apply(obj);         this: obj
                
                call()方法的第一个对象后面的参数 就是 函数的实参
                apply()方法要把实惨封装到一个数组里

                fun.call(obj, 2, 3);
                fun.apply(obj, [2,3]);

4. arguments 是一个类数组对象,是调用函数时会隐含传递进去的参数 (另一个是this)
        调用函数时,传递的实参都会在arguments中

5. Date对象
        封装代码执行的时间
        格式: 月/日/年 时:分:秒

6. 正则表达式
        创建正则表达式对象 var reg = new RegExp("正则表达式", "匹配模式");
        或者直接 var reg = /正则表达式/匹配模式

        检测是否符合正则表达式:
            var result = reg.test(str);

        "匹配模式":
                i : 忽略大小写
               g : 全局匹配

        | 表示 或者
         [] 里面的内容也是或的关系 [ab] = a | b
         [a-z] 任意小写字母
         [A-Z] 任意大写字母
         [A-z] 任意字母
         [^ ] 除了 以外还有没有

        search() 搜索并返回符合条件的内容,返回的是第一个符合的索引
        match() 提取符合条件的内容,返回的是第一个符合的内容,可设置为全局

7. DOM    (属于宿主对象)
        Document / Object / Model
        JS 通过 DOM 来对 HTML 文档进行操作
        Document:
            一个html就是一个文档
        Object:
            将网页里的每一个部分都换转为一个对象
        Model:
            使用模型来表示对象对象之间的关系


        节点 Node,是构成网页的最基本的组成部分,通常分为四种
                1)文档节点:整个html文档
                2)元素节点:html文档的html标签
                3)属性节点:元素的属性
                4)文本节点:html标签中的文本信息


        浏览器提供了文档节点,该节点对象是window的属性:document
        例:
            获取button对象
            var btn = document.getElementById("btn")
            修改按钮文字
            btn.innerHTML = "新的文字";
        

8. 事件:就是用户与浏览器之间的交互行为
            例如:点击按钮,鼠标移动,关闭窗口...

    DOM event

    btn.onclick = function(){
        alert("aaa");
};

    onload事件会在整个页面加载完成之后才触发
    window.onload = function(){
        var btn = document.getElementById("btn");
        btn.onclick = function(){
            alert("aaa");
        };
};
    * 这样就可以避免因为书写顺序导致的错误,比如先写了单击事件,后写了按钮对象


9. 获取元素节点
    通过调用document对象的
    1)getElementById                 :通过id属性获得一个元素节点对象
    2)getElementsByTagName    :通过标签名获得一组元素节点对象
    3)getElementsByName         :通过name属性获得一组元素节点对象