精华内容
下载资源
问答
  • vue踩坑

    2020-04-10 22:13:18
    至于为什么也不明白,可能是浏览器认为不一致的编码就是跨域也可能就是浏览器的bug吧。 具体方式:可以安装一个qs的依赖,然后在请求前用qs.stringify()方法转一下再发送请求,就ok了。 首先下载qs:npm i...

    1、出现跨域问题(已经进行跨域设置的情况下)

    这个问题找了半天。。。。最后的解决方式:查看后台支持的编码格式和前端axios发送过去的的编码格式是否一致。不一致就会出现跨域问题。至于为什么也不明白,可能是浏览器认为不一致的编码就是跨域也可能就是浏览器的bug吧。

    具体方式:可以安装一个叫qs的依赖,然后在请求前用qs.stringify()方法转一下再发送请求,就ok了。

    首先下载qs:npm install qs

    然后引入import qs from ‘qs’

    在请求接口中设置一下:

    代码: export function userLogin(params){
    return service({
    method:‘post’,
    url:’/a/login’,
    data: qs.stringify(params), //主要是这一步很重要!
    }).then((res)=>{return res.data}).catch((err)=>{console.log(err)})
    }
    2、vue多个路由绑定到同一个组件上,造成created只执行一次,就是说页面加载成功一次后就不能再变化,所以不论怎么触发路由跳转页面都只显示第一次加载的数据。

    效果:点击左侧树节点实现右侧页面跳转

    经查阅资料,原因是:这个和vue的生命周期有关系,出现这种情况是因为页面在加载成功后他的大多数钩子函数(如mounted、computed…)就不会再次触发,所以导致页面感觉没有实现跳转。

    解决方法:针对这种情况,其实不需要进行页面切换,只需要页面中的数据发生变化就好。在页面中监听路由地址的变化,当地址变化的时候,就重新加载数据。

    具体代码:

    watch: {
    ‘$route.path’: function (to, from) {
    this.initInfo();//调用相应方法
    }
    }
    3、el-tree控件,鼠标手移到树节点上,鼠标手和节点显示不对应。

    原因:样式设置有问题,通过f12调试发现,某条树节点的高度太高,以至于把其他的节点都覆盖住了,所以这个节点高度太高,跨度太大,所以鼠标手和节点位置会有偏差。

    解决:修改每个树节点的高度。

    4、el-tree控件,如何设置树节点选中背景颜色

    解决:加上highlight-current

    在样式中设置:

    5、element-ui组件使用el-table如何动态设置列表的宽度

    首先说一下自己遇到的问题吧:

    表头数据也是动态获取的,所以不好给每表头设置固定宽度,而且是使用v-for循环显示表头。这个时候的需求就是想把倒数第二列的宽度设置宽一些,其他列宽度窄些。

    具体的实现方法:

    在表格中添加宽度属性:width,在method中添加自定义列的宽度的方法。判断某个表头的字段是不是倒数第二个,然后设置宽度,如果不是再设置成其他宽度。这里我为了让表格宽度自适应不同浏览器,用了百分比设置宽度,但是效果不理想。

    所以考虑不用百分比但又要自适应,这里才有min-width,设置最小宽度的同时会动态分配宽度。

    这时候效果就比较理想,效果图如下:

    6、el-tree控制如何自定义图标样式?

    怎么将图标从图1改成图2,数据从后台获取的?

    解决:研究了一下开发文档有个icon-class可以自定义图标样式

    刚开始我理解错了,在icon-class前加了:当做动态属性处理了,其实这个就是一个class。

    这样直接使用即可。

    就可以得到想要的效果。class具体的值可以查看

    el内置的图标 https://element.eleme.cn/#/zh-CN/component/icon
    7、element-ui组件中使用form表单,自定义验证规则时导致validate不能执行。

    解决:在自定义规则中

    一定要在自定义规则之后加上else{callback()}

    否则,callback不能进行回调。导致validate()无法执行。

    如果有多条验证规则,每条规则都要加上else{callback()}才可以!

    展开全文
  • 踩坑学php(1)

    2015-11-30 08:11:00
    什么叫踩坑学php》?因为每一次的踩坑就是一次提高,填坑就是在实现程序员价值;另外,正因为坑是如此的让人痛苦,足以刺激我早已被塞满的大脑,再次学习新东西; 为什么写blog?因为我在尝试一种新的学习方...

    前言:

    为什么要学php 呢?作为一个前端,一直有着了解后台的好奇心;作为一个计算机毕业的,一直有着实践更多设计模式和数据库相关的东西;而php 非常流行,拥有非常多的资源,入门应该容易;

    为什么叫《踩坑学php》?因为每一次的踩坑就是一次提高,填坑就是在实现程序员价值;另外,正因为坑是如此的让人痛苦,足以刺激我早已被塞满的大脑,再次学习新东西;

    为什么写blog?因为我在尝试一种新的学习方法,有目标,有计划、系统性地学习;

     

    正文:

    前几天开始学习php 的,花了一点时间看了w3school 的php 教程,大概知道很基础很基础的语法;

    然后百度了一个php 简单项目开始研究项目代码:https://github.com/udoless/phpbeginner_gmanage

    然后是搭建开发环境,使用xampp 是比较简单的,百度了教程

    然后就是坑了:

    index.php 里面的 seesion_start(); 前面是有html 代码的,和其他教程里面提到的不一样啊?为什么(windows)可以正常运行啊?

    果然后来在mbp 上重新部署了代码就出错了:

    Warning: Cannot modify header information - headers already sent by

    好吧,找参考:

    http://blog.csdn.net/FuDesign2008/article/details/6434044

    最后是通过改php.ini 的session.auto_start = 1 ,成功的;

    虽然只是改一个值,当中已经涉及了相当多的东西了 

    1. 有一个叫php.ini 的文件,竟然是负责编译器的配置信息,这在前端是不存在,说方便也方便,但要里面的东西,要多痛苦的经历才能背下来啊?
    2. php 的执行流程
      PHP脚本开始执行时,它可以同时发送header(标题)信息和主体信息。 Header信息(来自 header() 或 SetCookie() 函数)并不会立即发送,相反,它被保存到一个列表中。 这样就可以允许你修改标题信息,包括缺省的标题(例如 Content-Type 标题)。但是,一旦脚本发送了任何非标题的输出(例如,使用 HTML, print()或echo 调用),那么PHP就必须先发送完所有的Header,然后终止 HTTP header。而后继续发送主体数据。从这时开始,任何添加或修改Header信息的试图都是不允许的,并会发送上述的错误消息之一。

      而session 又在header 里面,所以,挂了;(推断 windows 的xampp 默认session.auto_start = 1;)

     

    然后找了一些php 的知识架构:

    1. http://pan.baidu.com/s/1hq9ANsg
    2. http://www.zhihu.com/question/19875503

    然后在我的php 知识结构图里面画上了第一笔:

    http://naotu.baidu.com/file/96c9ce7895576faf6069855875c6ec63?token=f18bc64953c0bd2a

     

     

    参考:

    1. w3school:http://www.w3school.com.cn/php/
    2. php.ini:http://php.net/manual/zh/ini.list.php
    3. php 执行流程:http://blog.163.com/lgh_2002/blog/static/44017526201033115937532/

    转载于:https://www.cnblogs.com/pasico/p/5006213.html

    展开全文
  • 正在Python踩坑的我

    2019-11-02 13:43:44
    希望我能从踩小坑到大坑然后再到出坑 虽然有些坑我自己都觉得很low 哈哈踩坑才能使人进步~ 一、在Python 2 和 Python 3中 语法上是有些变更的 至于什么时候变更那就请看官另移脚步...

    希望我能从踩小坑到大坑然后再到出坑 虽然有些坑我自己都觉得很low 哈哈踩坑才能使人进步~
    1、在Python 2 和 Python 3中 语法上是有些变更的
    至于什么时候变更那就请看官另移脚步https://www.php.cn/python-tutorials-418948.html
    我刚接触这门语言的时候是在2018年哈哈哈 当时只知道这门语言叫帕森~
    正式开始是从2019年的5月份 上班之余去摸索一下~~
    对于帕森我是直接去百度搜索的然后映入眼帘的就是各种各样的学好Python哪家强 就来山东找蓝翔哈哈 当时并没有好好从头开始看起以至于我遇到的第一个坑
    在这里插入图片描述
    python2是没有()的
    而在python3中增加了() 因为在python 3 中print是个函数 就意味着使用时必须要带上小括号

    2、python cmd模式下之奇葩清屏语法

    import os
    os.system(‘cls’)
    这个清完之后会有0 但是无碍 如有介意 用下面的这个语法即可
    i=os.sysytem(‘cls’)

    3、python cmd模式下之奇葩注释
    在这里插入图片描述
    4、先看看我这个问题出在哪里吧…这个逻辑是不是很完美哈哈 但是说我88行报错 !!!
    在这里插入图片描述
    于是我把红色字体黏贴复制到网易翻译:IndentationError: unindent不匹配任何外部缩进级别
    ennn…Python是一门非常独特的语言 对缩进比较敏感对格式也是比较严格的 同一个代码块的语句必须要有相同的缩进空格数
    在这里插入图片描述
    谨记:Tab和空格不能混用 不然就会出现如此错误 !

    展开全文
  • Qt学习及踩坑日记(正文) 书接上回 3、引言 这里是自己的理解,可能用的少,理解的不够深刻,我感觉学习Qt,最重要就是深入理解信号和槽函数,信号和槽函数相对于Qt就像文件对于Linux系统,对于大部分的Qt开发...

    Qt学习及踩坑日记(正文)

    书接上回

    3、引言

    这里是自己的理解,可能用的少,理解的不够深刻,我感觉学习Qt,最重要就是深入理解信号和槽函数,信号和槽函数相对于Qt就像文件对于Linux系统,对于大部分的Qt开发(以为没有进行网络开发,所以网络开发就不知道),可以说都是基于信号和槽函数。

    4、信号和槽函数

    什么信号和槽函数?这里其实还隐藏了两个概念,发送信号对象和接受信号对象,形象点描述就是,我打了你,你叫了一声,就是发送信号的对象信号就是就是接收信号的对象就是槽函数
    在这里插入图片描述

    接下来从一个Qt用到最多的函数介绍信号和槽函数,这里有五个参数,前四个参数是我们经常用到的,第一个参数就是发送信号的对象,第一个参数往往都是按钮,按钮是发送信号的对象,第二参数是信号,这里有多种写法,我习惯用SIGNAL(信号函数),按钮按下就是信号,第三个参数是信号接收对象,因为我们往往在主界面对象里面进行编程,所以这个this对象就是指代主界面对象,第四个参数就是槽函数,也就是接收到对象会做的事情,第五个参数不常用引用了这里,我们一般会用到方式是有三种:自动连接(AutoConnection),默认的连接方式。如果信号与槽,也就是发送者与接受者在同一线程,等同于直接连接;如果发送者与接受者处在不同线程,等同于队列连接。直接连接(DirectConnection)。当信号发射时,槽函数立即直接调用。无论槽函数所属对象在哪个线程,槽函数总在发送者所在线程执行。队列连接(QueuedConnection)。当控制权回到接受者所在线程的事件循环时,槽函数被调用。这时候需要将信号的参数塞到信号队列里。槽函数在接受者所在线程执行。
    一定要记住这个函数的每个参数,这个对你使用Qt来说十分重要。

    connect(ui->cameraDestorybtn, SIGNAL(clicked()), this, SLOT(CamerathreadDestory()), Qt::DirectConnection);
    

    下面原函数。

    [static] QMetaObject::Connection QObject::connect(const QObject *sender, const char *signal, 
        const QObject *receiver, const char *method, Qt::ConnectionType type = Qt::AutoConnection)
    

    5、多线程

    Qt多线程编程有两种,我这里仅介绍一种:自己写一个类继承QObject,再将该类以方法moveToThread()移到子线程中,这也是官方建议的方法。
    下面给出子线程的程序框架,该程序框架的主线程是ui线程:

    class MyThread : public QObject{
        Q_OBJECT
    public:
        MyThread(QObject* parent = nullptr);
        ~MyThread();
        /*
        一些自己设置的公有成员变量
        */
    public slots:
    	/*
    	该线程类的一些槽函数(这些是被触发的)
    	*/
    signal:
    	/*
    	该线程类的一些信号(这些是用来触发槽函数的)
    	*/
    private/*
    	该线程类中的一些私有成员变量
    	*/
    }
    

    同样的,在class MainWindow : public QMainWindow这个主线程中也定义上各种槽函数和信号。
    接下来就是实现子线程中的各个槽函数和信号。
    在ui主线程中,也就是下面的程序框架中,开始运行子线程:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
    }
    
    myQThread = new QThread;
    myWork = new myThread;
    myWork->moveToThread(myThread);
    

    这里遇到一个难点:就是子线程的函数如何将输出的图像绘制在ui界面上。解决方法是:首先子线程是不能实现ui界面上的操作,也就是像按钮这些操作是不能在子线程中实现的,这里就用到信号和槽函数,在子线程中定义(不需要实现)一个信号void logimg(QImage img),在ui线程中定义并实现一个槽函数void logimg(QImage img),该函数用来将子线程传回的图像绘制在ui线程上:

    void logimg(QImage img){
            ui->label->setPixmap(QPixmap::fromImage(img));
            ui->label->resize(ui->label->pixmap()->size());
        }
    

    接下来在子线程中通过emit唤醒子线程的信号:

    void drawBox(){
        if(show)
        {
            if(!frame.empty())
            {
                /*一些代码:实现从opencv的Mat格式向QImage转化*/
                emit logimg(img);
            }
        }
    }
    

    在ui线程中通过connect将该子线程中的信号和主线程的槽函数进行连接

    connect(mycamera, SIGNAL(logimg(QImage)), this, SLOT(logimg(QImage)));
    

    线程中实现暂停和继续,这里提供一个思路,首先在子线程中定义暂停和继续的槽函数,里面都放上一个标志位flag,默认值为false,暂停按钮中flag = true,继续按钮中flag = false,子线程的主流程中放入一个while死循环,当按下暂停就进行死循环,当按下继续,则跳出死循环。

    while(flag){
            cout<<"程序暂停中!"<<endl;
        }
    

    6、用到的一些控件

    这里其实有点模板化,特别好理解,就放上代码和样式,大家对照着看:
    6.1 输入对话框
    下面的函数是槽函数,我是利用按钮点击信号调用出输出对话框的。

    void set3(){
        QString dlgTitle=QStringLiteral("设置帧率");//对话框标题
        QString txtLabel=QStringLiteral("请输入:");//对话框Label显示内容
        float defaultValue=25;//默认值
        float minValue=0,maxValue=500;//最小、大值
        int decimals=2;//小数点后几位
        bool ok=false;
        float inputValue=QInputDialog::getDouble(this,dlgTitle,txtLabel,defaultValue,minValue,maxValue,decimals,&ok);
        if(ok){
            FrameRateValue = inputValue;
        }
    }
    

    显示效果:
    在这里插入图片描述
    6.2 选择对话框
    下面的函数是槽函数,我是利用按钮点击信号调用出选择对话框的。

    void ch_test::set5(){
        QStringList items;//ComboBox控件的内容
        items<<QStringLiteral("OFF")<<QStringLiteral("ON");
        QString dlgTitle=QStringLiteral("设置触发模式");//对话框标题
        QString txtLabel=QStringLiteral("设置触发模式为:");//对话框Label显示内容
        int curIndex=0;//ComboBox控件默认哪个索引的内容
        bool editable=true;//ComboBox控件内容是否可被编辑
        bool ok=false;
        QString text=QInputDialog::getItem(this,dlgTitle,txtLabel,items,curIndex,editable,&ok);
        if(ok&&text=="OFF"){
            TriggerModeValue=0;
        }
        if(ok&&text=="ON"){
            TriggerModeValue=1;
        }
    }
    

    显示效果:
    在这里插入图片描述
    6.3 打印信息到界面上
    下面的函数是槽函数,我是利用按钮点击信号调用的。

    int ch_test::channel_1(){
        GPIO::setup(ch1, GPIO::OUTP, GPIO::HIGH);
        int curr_value = GPIO::HIGH;
        int cnt = 1;
        for(int i = 0;i < m;i++){
            delay(s);
            if(curr_value){
                ui->textBrowser_2->append("通道1以"+QString::number(s)+"毫秒"+"输出了"+QString::number(cnt)+"次");
                cnt++;
            }
            GPIO::output(ch1, curr_value);
            curr_value ^= GPIO::HIGH;
        }
        curr_value = GPIO::LOW;
        if(curr_value == 0)  ui->textBrowser_2->append("通道1已经清零");
        if(cnt - 1 == m/2)  ui->textBrowser_2->append("通道1没有问题");
        else ui->textBrowser_2->append("通道1存在问题");
        return 0;
    }
    

    显示效果:
    在这里插入图片描述
    6.4 打开文件并选择

    connect(ui->choose_button, &QPushButton::clicked, [=]{
            QString path=QFileDialog::getOpenFileName(this, "打开文件", "/home/nvidia/Qtproject/bottleSort");
            ui->lineEdit->setText(path);
            mycamera->rt_file=path.toStdString();
        });
    

    在这里插入图片描述
    程序还在继续优化改进中,以后有学到新的东西和猜到新的坑,会继续更新,未完待续。。。。。。。。。

    展开全文
  • 因为我们公司web端项目以原生为主,所以大就不要收什么vuex,redux,dva之类的状态管理,我们公司的主要数据存储在于node端因此我这里作为一个前端常用的存储方式就是本地存储,给大家说一下我之前到的一些问题 ...
  • 问题引出 今天在做数据库的增删改查的时候,突然发现删除的数据行,子啊select之后还是会存在 找了找百度 发现罪魁祸首就是Mybatis的缓存机制搞的...一级缓存也本地缓存,MyBatis 的一级缓存是在会话(SqlSession
  • C++踩坑记01 动态调整大小的vector关于vector可以动态的改变“空间”这会带来什么启示 关于vector 使用vector时仍然要考虑有关底层的内存分配相关的内容。其他内容,比如api”啥“,”格式“是啥样(需要的参数),...
  • 很明显可以看出9901端口被占用,但问题在于,调用配置中心的此服务(下图web服务)配置文件bootstrap.yml配置的端口号9902(至于配置文件名为什么叫bootstrap相信各位比我懂,反正我还不太懂),而9901端口为此项目...
  • 公司项目要连接第三方公司的血压计,由于从来没有做过和蓝牙有关的项目,好奇的心驱使下下也想顺便了解一下这方面的知识,于是主动向领导请求开发这个功能,经过4天的折腾,终于弄好了,(为什么要4天呢?...
  • 最近完成了一个功能,出了个bug,单用户优惠券领超了。需求是扣减库存后-->发放优惠券。 问题:什么是单用户超领优惠券 ◦优惠券限制1人限制1张,有些人却领了2张 ◦优惠券限制1人限制2张,有些人却领了3...
  • 什么是 CDubbo携程从 2017 年 11 月左右开始调研,真正落地是在 2018 年 4 月发布的 CDubbo 0.1.1 版本。在携程内部,我们管他 CDub...
  • 在下午学习JavaScript数组的过程中,多次用到了比值函数,W3school是这么称呼的我也这么了,感觉很有用,有必要写一下供大家参考 比值函数function( a, b )是和JavaScript里的sort( )函数一起使用的,比值函数嵌套...
  • 说真的气到我了,在家里说了一个小时小杰,因为这个模块默认什么“小杰”,我人都裂开来这个小杰,在家里说了半个小时小杰,我妈问我怎么了最后解决问题了我来说一下 1.离咪头要远一点,这样说话识别率比较高...
  • 1. 前言 由于项目使用的前后端分离...什么叫同源,必须同时满足以下三点: 协议相同 域名相同 端口相同 2. 部署 2.1 使用Vue生成前端文件 npm install npm run build:dev 注意: 这里前端配置访问后端的BASE
  • 答:自己会介绍自己吧,你好,我 LiuMucheng,从毕业后一直都在做 php 开发。。。 2. 你在公司负责那些项目? 答:公司的项目都是交叉进行的,论坛,微信,商城我都做过 3. 你为什么来深圳? 答:人往高处走 ...
  • 实在是一个很奇妙的bug……就它229奇妙bug吧 环境:vue 2.x + vue-router 3.x + elementui 问题描述 贴一下代码大致结构(属性什么的都没写全) <template> <div class="main"> <img @click=...
  • 新增加的元素变成了联动(姑且先这么),改第二个另外两个新增的也跟着改变. 附图: 为什么会出现联动现象,增加不是用绑定的时候会不会有这种现象? 查了很多资料,具体原因暂时还没有找到. 在已有的数组添加新的元素,...
  • “Snake”,在我佛如来的指引下,我开始了一段取经之路。猴哥的称号是“斗战圣佛”,我的称号是“Python”。一条蛇的取经故事,我称之为《蛇经》。 文章标题已经乱到不知怎么起了,你可以迅速浏览红色标题...
  • 本不想写这篇文章的,因为在Linux下已经配置过很多次,想着mac应该找篇文章一次就搞定了,...用了这么多年的bash,不能说bash不好,不过当我用了zsh后发现,什么叫更好用。 配置过程稍微有点繁琐,但是你看过效果...
  • 又开始新一轮的踩坑之旅,领导我修改一个前同事的程序,重新开启被关闭的短信功能。修改完,测试通过后,就是部署。我心里还暗自窃喜了几分,终于完成了啊,压根儿没把部署放在眼里,不就几分钟的事儿吗?然而,...
  • 什么叫刷新变量 注意:先看完一遍再安装 上面几个是我踩坑的时候,就是因为不理解其中的概念 首先,我的macOS是自带zsh的,如果你还是用的bash ,可以切换到zsh 可以查看一下有多少种shell cat /etc/shells 查看...
  • 导致后来在命令终端使用时,除了切换命令可以使用,其余命令都报错,完全就是一个废系统了一样,后来在网上查询了很久,大多数都是提示的缺少什么32位包,只需要安装就可以了,可是我想说什么命令都没有用,我怎么...
  • 本来打算远程自己win10电脑的,朋友帮忙开了电脑,结果怎么也远程不上去,可是前一天还可以的。 然后用自己电脑后发现也没什么问题啊,可是就是远程不上,然后看见有个系统更新,然后就更新了。结果更新完系统过后...
  • 关于大疆OSDK开发前,如何配置,官网或者其它博客都有比较详细的介绍,这里推荐一篇博文:DJI M210 RTK V2 + manifold2 Onboad-SDK开发流程及踩坑合集(一) 结合官网Doc看即可。 我这的目的是让初学者知道何为OSDK...
  • 回首2018,公司项目大部分转移到vue项目,这一年自己也经历了大大小小的vue项目,踩了不少的坑,程序员不踩坑,那还程序员吗?谨以此篇记录我的2018. 读源码 程序员必须学会读源码,读到好的源码,有的时候会感叹...
  • 突然发现已经有很久没有登录过csdn了,工作后一直很忙,没有什么时间来写博客,平日学习、踩坑往往都是自己简单记录一下,但实际上经常写博客还是有必要的,一方面可以加深自己的理解,另一方面,也可以不断强化文档...
  • 从入职到现在的半个月内,多次受到PSQL存储过程的打击,今天无不例外也是踩坑了,不过经过一早上的独自奋战,算是解决了不少问题。那么咱们就开始把。 函数&存储过程 查阅PSQL的资料时总是会把函数说成存储过程...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

什么叫踩坑