zoukankan      html  css  js  c++  java
  • 实习经验记录

    if(logger.isDebugEnabled())  先判断一下,虽然浪费了时间,但是构造一个log字符串才是很耗时间的

    1.在本地修改与远程代码无冲突的情况下,优先使用:pull->commit->push
    2.在本地修改与远程代码有冲突的情况下,优先使用:commit->pull->push

    采用pull->commit->push呈现出来的就会是一条没有merge、没有多余commit的一条完美分支。

    有新的分支需要拉取一下

    git remote update origin --prune

    建立bug修复是这样的

    f. 开始Hotfix
    
    git checkout -b hotfix-0.1.1 master    
    g. 完成Hotfix
    
    git checkout master
    git merge --no-ff hotfix-0.1.1
    git push

     删除本地分支,如果无法删除可以放心使用-D的

    git branch -d 分支名称

    撤销上次commit,hard就没了啊

    git reset --soft HEAD^

    合并commit

    git rebase -i head~2

    修改 .bash_profile展示分支

    function git_branch {
      branch="`git branch 2>/dev/null | grep "^*" | sed -e "s/^* //"`"
      if [ "${branch}" != "" ];then
          if [ "${branch}" = "(no branch)" ];then
              branch="(`git rev-parse --short HEAD`...)"
          fi
          echo " ($branch)"
      fi
    }
    
    export PS1='u@h [33[01;36m]W[33[01;32m]$(git_branch)[33[00m] $ '

    vim之后source一下就是有效了

    回滚上一次提交

    git reset --hard HEAD^

    发布产品的maven语句

    mvn clean deploy -Dmaven.test.skip -U

    更新系统git无法使用,会让你下载git。请重新下载安装xcode命令行,运行如下命令

    xcode-select --install

    错误代码:

    Сannot Run Git
    xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
    Download Configure...

    一个网页需要登陆,但是其实检查的事cookies,

    我们可以postman里配置一下

    具体的cookies可以F12审查然后查看network里找到

    然后可能会415错误,这个需要使用json来解决,就是body右边的选择json

     查看环境变量的命令

    env | grep mysql

    lombok

    @Data
    使用这个注解,就不用再去手写Getter,Setter,equals,canEqual,hasCode,toString等方法了,注解后在编译时会自动加进去。
    @AllArgsConstructor
    使用后添加一个构造函数,该构造函数含有所有已声明字段属性参数
    @NoArgsConstructor
    使用后创建一个无参构造函数
    @Builder
    关于Builder较为复杂一些,Builder的作用之一是为了解决在某个类有很多构造函数的情况,也省去写很多构造函数的麻烦,在设计模式中的思想是:用一个内部类去实例化一个对象,避免一个类出现过多构造函数。
     

    EventBus

    EventBus是Guava的事件处理机制,是设计模式中的观察者模式(生产/消费者编程模型)的优雅实现。对于事件监听和发布订阅模式,EventBus是一个非常优雅和简单解决方案,我们不用创建复杂的类和接口层次结构。
    用法:
    首先,这里我们封装了一个事件对象Event,一个监听者对象EventListener。然后,我们用EventBus的构造方法创建了一个EventBus实例,并将上述监听者实例注册进去。然后,我们使用上述EventBus实例发布一个事件Event。然后,以上注册的监听者中的使用@Subscribe注解声明并且只有一个Event类型的参数的方法将会在触发事件的时候被触发。
    总结:从上面的使用中,我们可以看出,EventBus与观察者模式不同的地方在于:当注册了一个监听者的时候,只有当某个方法使用了@Subscribe注解声明并且参数与发布的事件类型匹配,那么这个方法才会被触发。这就是说,同一个监听者可以监听多种类型的事件,也可以在多次监听同一个事件。

    这次这张数据表有50个变量,我人傻了,还是直接用代码生成吧,小模拟,问题不大

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        freopen("1.in", "r", stdin);
        freopen("1.out", "w", stdout);
        string str;
        vector<string> V, V1;
        while (getline(cin, str))
        {
            int f = 0;
            string temp;
            for (auto c : str)
            {
                if (f)
                {
                    if (c == '`')
                    {
                        V.push_back(temp);
                        break;
                    }
                    temp += c;
                }
                else
                {
                    if (c == '`')
                        f = 1;
                }
            }
        }
        for (auto s : V)
        {
            string temp;
            int f = 0;
            for (auto c : s)
            {
                if (c == '_')
                {
                    f = 32;
                    continue;
                }
                else
                {
                    temp += c - f;
                    f = 0;
                }
            }
            V1.push_back(temp);
        }
        int size = V.size();
        for (int i = 0; i < size; i++)
        {
            cout << "<result property="" << V[i] << "" column="" << V1[i] << ""/>"
                 << "
    ";
        }
        cout << "
    
    ";
        for (int i = 0; i < size; i++)
        {
            cout << "`" << V[i] << "`"
                 << ",";
        }
    
        cout << "
    
    ";
        for (int i = 0; i < size; i++)
        {
            cout << "#{" << V1[i] << "}"
                 << ",";
        }
    
        cout << "
    
    ";
        for (int i = 0; i < size; i++)
        {
            cout << "<if test="" << V1[i] << " != null">`"
                 << V[i] << "` = #{" << V1[i] << "}, </if>"
                 << "
    ";
        }
    }
    生成mapper某些重复的代码

    用iterm2

    可以直接brew安装

    dump(备份文件系统)

  • 相关阅读:
    Bootstrap 2.2.2 的新特性
    Apache POI 3.9 发布,性能显著提升
    SQL Relay 0.48 发布,数据库中继器
    ProjectForge 4.2.0 发布,项目管理系统
    红帽企业 Linux 发布 6.4 Beta 版本
    红薯 快速的 MySQL 本地和远程密码破解
    MariaDB 宣布成立基金会
    Percona XtraBackup 2.0.4 发布
    Rocks 6.1 发布,光盘机群解决方案
    精通Servlet研究,HttpServlet的实现追究
  • 原文地址:https://www.cnblogs.com/BobHuang/p/11636784.html
Copyright © 2011-2022 走看看