0%

过年回来有段时间没记点什么了,工作虽然没之前那么忙,还是没想清楚到底去积累点什么好吧,主要可能也是懒←_←

看了两个星期的 《数据挖掘概念与技术》《机器学习实战》PRML 实在是…太数学了… ,也理解了一下数据仓库、数据立方体、上卷、下钻等等…一些名词,明白了kNN、SMO、SVM等等算法的全称…(kNN、决策树还是看懂了的,就是后面朴素贝叶斯开始就慢慢有点模糊了…什么支持向量机啊就来回看了好几遍,查了不少东西才理解了些 =_= ,哎,觉得实在无法在脑海里跟实际问题映射上关系,也就难以应用了。于是,就没继续看了,虽然看一半放弃了,但是也算大致了解了 数据挖掘 相关的一系列东西吧,不亏!(强行

为了休息下我可怜的脑袋,上星期弄了下 Unity3D 玩,emmm,感觉没有找到适合我节奏的学习资料啊,官方文档太细太慢,各种博客又太粗略,待我闲时再把官方的几个工程改改修修,估计就能自己做个自己想的小游戏玩了(^▽^)

这两天算是没什么闲时了,今天趁刚有空回忆一下,免得回头感觉前面几个星期就白过了一样╮(╯_╰)╭

记录

用循环( WHILE )游标( CURSOR )实现,遍历系统视图,取出( FETCH )每条数据并计数+1(这里只是用来记下怎么用,查数量肯定还是用 COUNT()

阅读全文 »

模糊查询

SQL里字段的模糊匹配可以使用like关键字,使用方式如:like "%search"like "search%"like "%search%",分别对应后缀、前缀、包含三种模糊匹配方式

Linq对应的模糊查询

  1. 前缀匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.StartsWith("jack")
    select p;
  2. 后缀匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.EndsWith("chen")
    select p;
  3. 包含匹配搜索

    1
    2
    3
    var l = from p in Person
    where p.name.Contains("ac")
    select p;
  4. 条件模糊查询

有时候界面上面,我们在表格前面会有个输入框,提供一些字段的搜索,在不输入的时候,这个搜索条件就不作为限制条件

而这时传到后端的条件是null,前面三种搜索直接使用的话,会出现结果的错误,null成了限制条件

所以需要在where里加上对应字段为null的情况,使搜索条件为空时,模糊匹配失效

1
2
3
4
5
string search = null;

var l = from p in Person
where p.name.Contains(search) || search == null
select p;

  1. 条件中innot in
    参考:LINQ - 在Where條件式中使用in與not in —— ADOU-V,博客园

in的SQL实现:

1
2
Select ProductID, ProductName, CategoryID From dbo.Products  
Where CategoryID in (1, 2)

in的Linq实现:

1
2
3
var l = from p in dbctx.Products 
where (new int?[] {1, 2}).Contains(p.CategoryID)
select p;

not in的SQL实现:

1
2
Select ProductID, ProductName, CategoryID From dbo.Products  
Where CategoryID not in (1, 2)

not in的Linq实现:

1
2
3
var l = from p in dbctx.Products 
where !(new int?[] {1, 2}).Contains(p.CategoryID)
select p;

注释

shell里可以使用#号,bat里可以使用rem::,还有很多其他注释的方法

变量

  1. shell 变量定义与重定义

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 定义变量
    $ var="变量"
    $ echo $var
    变量
    $ var="重定义变量"
    $ echo $var
    重定义变量

    # 输入变量
    read -p "是否更新Blog(y/n) :" updateOp
  2. bat 变量定义与重定义

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    REM 定义变量
    set var=变量
    echo %var%
    变量
    set var=重定义变量
    echo %var%
    重定义变量

    REM 输入变量
    set /p updateOp = "是否更新(y/n):"

if…else…

  1. shell的条件语句

    1
    2
    3
    4
    5
    6
    7
    8
    # 输入变量
    read -p "输入var:" var
    # 判断变量是否等于 y (x为了避免比变量为空异常)
    if [ "$var"x = "y"x ]; then
    echo "if内"
    else
    echo "else内"
    fi
  2. bat的条件语句

    1
    2
    3
    4
    5
    6
    REM /p 从输入赋值变量
    set /p updateOp="是否更新(y/n):"
    REM 判断输入(Y/N),/i 忽略大小写
    if /i "%updateOp%"=="y" (
    git pull origin master
    )

端口占用查看

  1. shell的语句

    1
    2
    3
    # lsof -i:端口号 用于查看某一端口的占用情况,比如查看8000端口使用情况
    lsof -i:8000
    netstat -tunlp | grep 8000
  2. bat的语句

    1
    2
    3
    4
    5
    6
    7
    8
    REM 查询443相关端口占用(查询结果里有 443 的
    >netstat -ano | findstr 443
    TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 1480
    ... ...

    REM 查询1480进程
    >tasklist | findstr 1480
    httpd.exe 1480 Services 0 4,652 K

记录

  1. 注意空格的使用,脚本里空格往往是分隔命令和参数的,不像Java什么的里面可以用很多空格来分隔变量和运算符,让代码看起来更清晰。
  2. 脚本如果写的不对,经常没有异常代码什么的,所以要仔细看输出,自己也多写点echo,好辨别执行情况

后言

  1. 这里只记录了一些我自己想记的东西哦
  2. 记得当初上Linux的时候,我还自己安装Ubuntu练习使用了一阵子的命令行,这门课成绩也还行,只是考完试以后就没怎么碰过了,后来就自己折腾centos的时候用过一点,然后就是开始用github以后了,最近弄点小脚本来给自己省点事,顺便记录一些

问题

在做统计的查询视图之后,发现EF查询的结果第一条覆盖了第二条,两条数据只有一个时间字段不一样

原因分析

EF默认有缓存,视图没有建立主键,EF的缓存机制认为这两条除了时间不同的数据一致,就没有再从数据库取,然后出现SQL Server Profiler里面的SQL正常,但是拿到的数据死活都不对。

解决方法

对视图使用.AsNoTracking(),取消EF对这个视图的缓存(然后可以使用Entity Framework Plus调用MemoryCacheRedis来做缓存)

1
2
var l = from s in statView.AsNoTracking()
select s;

最近两天接触了下Entity Framework Plus的缓存和Future(就是懒执行批量SQL的感觉)、SQL多表统计汇总、SQL Server查系统存储、用Axure设计网页等等,复习了创建视图、存储过程什么的,RESTClientPost请求的时候记着加Header

东西有点多,后面事情也多(年终么(╯‵□′)╯︵┻━┻),抽空记录一下重要的吧。

有点累,熬过去应该就会好了吧。嗯。

工作了没有了期末,但是多了个年终。

12月末。前些天忙得不行,就忽然来了一堆乱七八糟的事情,不过好在都还算顺利解决了。这两天比较清闲了,可以稍微休息休息,要好好思考一下,毕竟这样的时间现在已经很难得了。

这两天工作在把之前的代码重构,虽说重构,也只是把结构整理了一遍,毕竟各种原因也是想弄也不能弄。不过,能同意我不少观点已经感到很欣慰了,与人相处,需要耐心,事情慢慢来就好了。

2017的小结吧

毕业这就算半年了,这段时间要说学到点什么,好像也没什么特别的。不过很多以前未曾想过的开发的相关问题,都仔细的去思考参与了,也算是收获吧。虽然没能接触到分布式、Hadoop什么的,但是自己学习了解的很多知识,也越发觉得现在的大部分技术使用起来其实并不太难,都有很多前人铺路了,难点在与像大数据的很多算法、数据结构等等,越了解技术越觉得这些理论知识显得重要了。

时间很快,但是想要没站稳就跳远,往往会摔得很惨,一步一步继续前进吧,我想目标也不会太过遥远的