一.Andrew ML
非常实用的笔记,10点大神发布
https://blog.csdn.net/cg129054036/article/details/84962138
octave/matlab语法
一个*.m文件代表一个函数,第一行function A=(…)中A即为返回值,调用完毕自动赋值给ans,随后被销毁,约等于局部变量,使用whos查看当前全部变量,后方与文件名不一致会warnning,括号为参数,但不需要传入,end为loop或函数的终止符
回顾
第二章:单元梯度下降
假设函数h(θ)=
cost function:J(θ)=
第四章多元梯度下降
对应函数的变化
进而引出多元梯度下降与正规方程法
第五章逻辑回归方程:一种classification算法,结合图像分区理解
1.octave语法
octave语法:
循环:for/while,末尾记得加end
浩哥终于讲课了
日志系统
守护进程007服务,以文件形式记录系统及任务日志
log4cpp专门记录c++
各个派生类:
append:日志保存目的地
layout:日志格式
Log4cpp中的概念继承自log4j,最重要的是Category(种类)、Appender(附加目的地)和Layout(布局)三个概念,此外还有Priority(优先级)和NDC(嵌套的诊断上下文)等。
简言之,Category负责向日志中写入信息,Appender负责指定日志的目的地,Layout负责设定日志的格式,Priority被用来指定Category的优先级和日志的优先级, NDC则是一种用来区分不同场景中交替出现的日志的手段。
Log4cpp记录日志的原理如下:每个Category都有一个优先级,该优先级可以由setPriority方法设置,或者从其父Category中继承而来。每条日志也有一个优先级,当Category记录该条日志时,若日志优先级高于Category的优先级时,该日志被记录,否则被忽略。
Category、Appender和Layout三者的关系如下:系统中可以有多个Category,它们都是继承自同一个根,每个Category负责记录自己的日志;每个Category可以添加多个Appender,每个Appender指定了一个日志的目的地,例如文件、字符流或者Windows日志,当Category记录一条日志时,该日志被写入所有附加到此Category的Appender;每个Append都包含一个Layout,该Layout定义了这个Appender上日志的格式。
使用流程如下:
1. 创建一个Appender,并指定其包含的Layout;
2. 从系统中得到Category的根,将Appender添加到该Category中;
3. 设置Category的优先级;
4. 记录日志;
5. 关闭Category。
在调试多线程程序时,不能随意使用printf”。因为printf导致IO中断,会使得本线程挂起,其花费的时间比一条普通指令多数千倍,若多个线程同时运行,则严重干扰了线程间的运行方式。所以调试多线程程序时,最好是将所有调试信息按顺序记入内存中,程序结束时依次打印出来。
优化tip
/usr/include/my.h
没找到ycm模板位置
vim:
G就是go
ctrl b/f回城闪现
^ $反人类行首行尾
作业
1.http://blog.csdn.net/liuhong135541/article/category/1496383
通俗说明
http://log4cpp.sourceforge.net/api/hierarchy.html
官方文档
内容详细,今晚看不完,先学部分
2.封装log4cpp,使用起来比较方便,如下所示。
输出的日志信息能同时输出到终端和文件
int main(void)
{
print("hello,world");
logInfo("Message"); //或者
logError("Message");
logWarn("Message");
logDebug("Message");
}
加分项:输出的日志信息中最好能有文件的名字,函数的名字及其所在的行号