= x)&&(e.getX()<=x+100)&&(e.getY()>=y)&&(e.getY()<=y+100)){
+ flag = 1;
+ System.out.println(e.getX()+"..."+e.getY());
+
+ }
+ }
+ if((e.getID()==MouseEvent.MOUSE_RELEASED)&&(flag == 1)){
+ x = e.getX();
+ y = e.getY();
+ repaint();
+ flag = 0;
+ }
+ }
+ */
+ public void processMouseEvent(MouseEvent e){
+ if(e.getID() == MouseEvent.MOUSE_PRESSED){
+ System.out.println("pressed");
+ if((e.getX()>= x)&&(e.getX()<=x+100)&&(e.getY()>=y)&&(e.getY()<=y+100)){
+ dx = e.getX()-x;
+ dy = e.getY()-y;
+ flag = 1;
+ System.out.println(e.getX()+"..."+e.getY());
+
+ }
+ }
+ if(e.getID()== MouseEvent.MOUSE_MOVED&&flag ==1){
+ x = e.getX()-dx;
+ y = e.getY()-dy;
+ System.out.println(e.getX()+"..."+e.getY());
+
+ repaint();
+
+ }
+ if((e.getID()==MouseEvent.MOUSE_RELEASED)&&(flag == 1)){
+ flag = 0;
+ }
+
+ }
+ public void paint(Graphics g){
+ g.drawImage(img, x, y,100,100, this);
+ }
+
+
+}
+
+
+```
\ No newline at end of file
diff --git a/Java/Java基础/paint方法和Graphic类.md b/Java/Java基础/paint方法和Graphic类.md
new file mode 100644
index 00000000..36ed65c8
--- /dev/null
+++ b/Java/Java基础/paint方法和Graphic类.md
@@ -0,0 +1,84 @@
+# 画图的标准步骤
+
+------
+
+ package painting;
+
+ import java.awt.Frame;
+ import java.awt.Graphics;
+
+ /**
+ * 画图过程的整体框架.
+ * 继承了Frame类能够使用相关的框体数据。
+ * 实现了Rnnable接口,本类能够作为一个线程被执行。
+ * @author 宙斯
+ *
+ */
+ public class framePaint extends Frame implements Runnable{
+ public static void main(String [] args){
+ framePaint workStart = new framePaint();
+ }
+
+ /**
+ * 无参构造函数.
+ * 设置了窗体的基本属性。
+ * 创建了与本类相关的线程并且执行。
+ * 也就是说,这个类的对象在创建的时候,就已经执行了相关的画图代码,并且产生了一个看见的图形对象。
+ * 而且这个绘制的过程,会作为一个普通的线程被执行。
+ */
+ public framePaint(){
+ super("framePaint");
+ setSize(350,350);
+ setVisible(true);
+
+ new Thread(this).start();
+ }
+
+ /**
+ * 实现多线程的方法.
+ * run方法时Runnable线程的主要方法,当线程开始是,执行这个方法,所以画图方法在这个线程方法中被调用
+ * 这个方法相当于画图过程的总方法。
+ * @see java.lang.Runnable#run()
+ */
+ public void run(){
+
+ repaint();
+ }
+
+ /**
+ * 实现画图的过程.
+ * 主要的画图方法,在调用画图对象的repaint方法时,这个方法被自动加载。
+ * @see java.awt.Window#paint(java.awt.Graphics)
+ */
+ public void paint(Graphics g){
+
+ }
+ }
+
+# Graphics类中的主要方法
+
+-----
+
+> 能绘制的图形:
+> String 字符串
+> Line 直线
+> Rect 长方形
+> Oval 椭圆形
+> Arc 弧线
+> Polygon 多边形
+>
+
+* draw系列
+ 绘制线条图形
+* fill系列
+ 绘制平面图形,用前景色填充内容物
+* clearRect()
+ 清除指定区域内的图形
+* clipRect()
+ 截取制定区域内的图形
+* copyArea()
+ 赋值制定区域内的图形到指定区域
+* get/setColor/Font
+ 设置颜色字体等
+* setClip()
+ 截取制定形状内的图形
\ No newline at end of file
diff --git a/Java/Java基础/事件处理.md b/Java/Java基础/事件处理.md
new file mode 100644
index 00000000..3422200c
--- /dev/null
+++ b/Java/Java基础/事件处理.md
@@ -0,0 +1,5 @@
+# 底层事件处理
+
+-----
+
+* 在java.awt学习的时候,将监听器绑定到事件源上,当指定事件发生时监听器会自动匹配到相应的动作,执行相应的处理方式。但在底层事件处理过程中,不许要监听器,能够直接获取当前发生的底层事件,然后进行匹配处理。
\ No newline at end of file
diff --git a/Java/Java基础/多线程共享资源问题.md b/Java/Java基础/多线程共享资源问题.md
new file mode 100644
index 00000000..121799fd
--- /dev/null
+++ b/Java/Java基础/多线程共享资源问题.md
@@ -0,0 +1,14 @@
+# 多线程共享受限资源
+
+----
+
+## >多线程共享受限资源存在的问题
+
+
+----
+
+* **这个描述???**
+ 当你坐在桌子旁边时,手里有有一把叉子,准备插起盘子里最后一块十五,当叉子碰到十五的时候,它忽然消失了。
+
+* **解决方法**
+ 给这个资源加锁,每个线程访问这个资源时上锁,访问结束后开锁。
\ No newline at end of file
diff --git a/Java/Java基础/多线程的其他操作.md b/Java/Java基础/多线程的其他操作.md
new file mode 100644
index 00000000..5fa17930
--- /dev/null
+++ b/Java/Java基础/多线程的其他操作.md
@@ -0,0 +1,40 @@
+# 多线程的应用
+
+------
+
+## 多线程停止线程
+
+----
+
+* stop方法已经过时不能使用,只能当run方法结束时,才能终止线程。开启多线程程运行时,代码通常是循环结构,只要控制住线程,通常可以让run方法结束。
+* 应当设计可以修改的无限循环标志。跳出无限循环,则会终止线程。
+* 当线程在循环内进入等待状态时,及时线程的循环条件不满足,必须终止线程,但是无法执行到判断语句进行线程的终止,此时,必须使用interrupt()函数来达到要求。
+* interrupt将处于冻结状态的线程强制转换到运行状态。此时wait()就会跑出我们处理已久的中断异常。
+* 当没有指定的方式让冻结的线程回复到运行状态时,这是需要对冻结进行清除。Thread提供了interrupt方法。
+
+
+## 多线程 守护线程
+
+-----
+
+* 守护线程就是后台线程,也是一种依赖线程
+* 特点:
+ 当前台线程结束后,后台线程会自动终止,作为依赖线程,守护线程,不用强调结束。
+* 方法:
+ setDemon()设置某个线程为守护线程
+
+## 多线程join方法
+
+----
+
+* t1.join() t1抢夺cpu执行权,主线程处于冻结状态,t1优先执行。相当于顺序执行两个线程。主线程碰到谁的join就会等谁执行。
+* 当A线程执行到了B线程的Join方法时,A线程就会等待,等B线程都执行完成,A才会执行。join才会临时加入线程执行。当B线程进入wait时,A线程也能继续执行。
+* toString 方法能够显示线程的名称,线程的优先级,线程当前的分组(线程组谁调用就是谁的线程组的)
+* 所有线程包括主线程,默认是5。数越大优先级越高。MAX_PRIORITY,MIN_PRIORITY,
+* yield()方法,当线程读到这里是,会释放执行权。这样会使所有的线程都有平均执行的效果。
+
+## 什么时候会使用到多线程
+
+----
+
+* 当程序独立运算相互之间不相关的时候,可以用多线程封装一下,提高程序执行的速度
\ No newline at end of file
diff --git a/Java/Java基础/多线程通讯问题.md b/Java/Java基础/多线程通讯问题.md
new file mode 100644
index 00000000..bf7807e6
--- /dev/null
+++ b/Java/Java基础/多线程通讯问题.md
@@ -0,0 +1,166 @@
+# 多线程间的通讯
+
+-----
+
+## 多线程通讯的定义:
+
+----
+
+- 多个不同的线程对共同的数据进行不同的操作。
+
+## 多线程通讯间的安全问题
+
+-----
+
+* 安全问题的原因
+ 例如当多个线程对同一个数据进行不同操作时,导致各种操作的先后顺序出现混乱。
+* 安全问题的解决方式
+ 对这些线程操作数据的部分进行同步处理,使用相同的锁,将不同的部分锁起。
+
+## 线程间通讯等待唤醒机制
+
+-----
+
+* 可以模仿锁的工作原理(设置标志位,记录当前是够线程占用锁内的程序,实现只能有一个线程执行锁内代码的现象)
+* 步骤:
+ 1. 设置标志位flag
+ 2. 当标志位处于输入状态时,执行输入程序,执行完成后修改为输出状态。
+ 3. 当标志位处于输出状态时,执行输出程序,执行完成后修改为输入状态。
+## 等待唤醒机制的具体实现
+
+----
+
+* wait()和notify()函数必须在同步代码块或者同步函数当中使用。注意wait()会抛出中断异常。对持有监视器(锁)的线程进行操作。
+* wait()和notify()的操作对象是同步中持有当前锁的线程。
+* 线程的等待唤醒机制必须制定一把确定的锁。锁是任意的对象,任意对象都能成为锁,成为锁之后都能调用wait和notify的方法。而且这些方法都定义在Object类中。只有同一个锁上的被等待线程可以被同一个notify唤醒。等待唤醒必须是同一个锁。
+
+## 使用新的工具类实现程序锁定和解锁
+
+----
+
+ package painting;
+
+ import java.util.concurrent.locks.Condition;
+ import java.util.concurrent.locks.Lock;
+ import java.util.concurrent.locks.ReentrantLock;
+
+ /**
+ * @author 宙斯
+ *
+ */
+ public class LockerUsing {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+ Resource2 r = new Resource2();
+ Produce2 pro = new Produce2(r);
+ Consumer2 con = new Consumer2(r);
+
+ Thread t1 = new Thread(pro);
+ Thread t2 = new Thread(con);
+ Thread t3 = new Thread(pro);
+ Thread t4 = new Thread(con);
+ t1.start();
+ t2.start();
+ t3.start();
+ t4.start();
+ }
+
+ }
+ class Resource2{
+ private String name;
+ private int count =1;
+ private boolean flag = false;
+ private Lock lock = new ReentrantLock();//新建了一个锁对象
+ private Condition condition_con = lock.newCondition();//生成了一个与锁相关的控制对象
+ private Condition condition_pro = lock.newCondition();
+ public void set(String name) throws InterruptedException{
+ lock.lock();
+ try{
+ while(flag)
+ condition_pro.await();
+
+ this.name= name+"..."+count++;
+ System.out.println(Thread.currentThread().getName()+"生产者:"+this.name);
+ flag = true;
+ condition_con.signal();
+ }
+ finally{
+ lock.unlock();//异常处理当中释放锁的动过一定要被执行
+
+ }
+ }
+ public void out() throws InterruptedException{
+ lock.lock();
+ try{
+ while(!flag)
+ condition_con.await();
+ System.out.println(Thread.currentThread().getName()+"消费者:"+this.name);
+ flag = false;
+ condition_pro.signalAll();
+ }
+ finally{
+ lock.unlock();
+ }
+ }
+ }
+ class Produce2 implements Runnable{
+ private Resource2 res;
+ Produce2(Resource2 res){
+ this.res = res;
+
+ }
+ public void run()
+ {
+ while(true){
+ try {
+ res.set("商品");
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+ class Consumer2 implements Runnable{
+ private Resource2 res;
+ Consumer2(Resource2 res){
+ this.res = res;
+
+ }
+ public void run()
+ {
+ while(true){
+ try {
+ res.out();
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+
+
+* 代码的解释:
+
+ 1. 单线程 -----多线程-----多线程操作同一个数据源的时候实行同步机制------带有满足条件的同步机制(睡眠唤醒机制)
+ 2. 实现了多线程不同操作相同的程序,这个类具有模板的价值.对资源的不同操作写到资源类中,并使用this资源类的锁,对各种不同的操作进行上锁
+ 3. 而非写到其他操作类中,这样能够将同步和冲突解决都封装到资源类中便于理解和操作。
+ 4. 当线程数多于两个,比如此程序中有两个在生产两个在消费,那么标准的方式应该是通过循环判断标志位是否合格,
+ 因为当某个线程判断满足后,但在进入之前肯能被其他线程修改标志位。
+ 而且必须使用notifyAll()唤醒所有的线程。
+ 5. 使用Locker及其相关类的好处
+ 一个Locker上可以有很多condition对象执行操作,也就是只唤醒对方的condition
+ jdk1.5实现了多线程的升级解决方案
+ 将同步设置Synchronize替换成Lock操作,可见
+ 将Object中wait,notify,notifyAll替换成Condition对象。该对象可以Locker锁进行获取
+
+
+
+
+
+
diff --git a/Java/Java基础/补充:多线程基本操作.md b/Java/Java基础/补充:多线程基本操作.md
new file mode 100644
index 00000000..a0eeb23b
--- /dev/null
+++ b/Java/Java基础/补充:多线程基本操作.md
@@ -0,0 +1,48 @@
+# 多线程理论补充
+
+------
+
+## >让步机制
+
+-----
+
+* **yield()**
+ thread.yield()线程执行这个函数会主动放弃执行的优先级,但只是暗示别的线程能够抢到更多的资源,没有确定的机制保证cpu资源一定被其他线程使用。
+
+## >休眠机制
+
+---
+
+* **sleep()**
+ thread.sleep(30)线程停止执行30ms,可能会跑出异常,此线程调用interrupt()方法,中断了线程的执行。
+
+## >优先权机制
+
+----
+
+* **setPriority()**
+ thread.setPriority()通过thread类中的常量对优先级进行设定。thread.getPriority()能够获取当前线程的优先级。
+
+## >后台进程
+
+-----
+
+* **后台线程(守护线程)thread.setDaemon()**
+ 程序运行时,在后台提供的一种通用的线程,当所有的非后台线程结束时,后台线程(守护线程)自动终止。必须在线程启动之前,调用方法setDaemon(),将线程设置成后台线程。isDeamon()判断是否为后台线程。
+
+## >加入线程
+
+----
+
+* **t.join(a)**
+ t线程此时将被挂起,直到a线程结束才会被执行。当a线程结束时,t.isAlive()返回为假,线程恢复。
+
+## >编码变体
+
+-----
+
+* **implements Runnable**
+ 通过实现接口Runnable来达到作为线程类的方法。必须实现run方法。
+
+* **建立有响应的用户界面**
+ 让运算作为一个独立的线程在后台独立运行。
diff --git a/Matlab/教程/MATLAB1.md b/Matlab/教程/MATLAB1.md
new file mode 100644
index 00000000..58c11f75
--- /dev/null
+++ b/Matlab/教程/MATLAB1.md
@@ -0,0 +1,21 @@
+# > MATLAB操作界面
+
+---
+
+* **操作面板**
+ 1. 文件目录(文件结构的显示)
+ 2. 编辑器(打开的脚本文件)
+ 3. 命令行窗口(用于随时操作数据)
+ 4. 工作空间(用于储存变量的空间)
+ 5. 命令历史记录(用于储存命令行中的数据)
+ 6. 导航栏(主页、绘图、应用程序、编辑器、发布、视图)
+
+> 使用tab键调节嵌套中的缩进问题。
+
+
+* **辅助命令**
+ 1. path(搜索文件的目录)
+ 2. help path(查看帮助)
+ 3. cd(current directory)
+ 4. userpath(用户使用的路径)
+ 5. savepath(保存路径)
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB10.md b/Matlab/教程/MATLAB10.md
new file mode 100644
index 00000000..ac355e04
--- /dev/null
+++ b/Matlab/教程/MATLAB10.md
@@ -0,0 +1,34 @@
+# MATLAB的符号运算
+
+## > MATLAB的符号运算
+
+***
+
+* **符号计算基础**
+ 1. 符号变量和符号常量``` a = sym('a'),syms b,c = sym('3')
+ 2. 符号表达式。生成方式,声明符号表达式中所有的变量为符号变量。或者直接使用sym函数生成一个符号表达式f = sym(字符串)。一些满足符号表达式的字符串能够自动转换为符号表达式
+ 3.
+* **符号函数**
+ 1. simplify(多项式规则化简)
+ 2. simple(多种规则对多项式化简)
+ 3. sym()符号表达式和数值的转换使用eval()或者numeric函数。
+ 4. 因式分解函数factor(化简) , expand(展开) , collect(合并同类项)
+ 5. 符号矩阵。构建方式与数值矩阵相同,符号矩阵的运算同数值矩阵相同。
+ 6. 符号矩阵的转置transpose,determ ,'是共轭转置
+ 1. subs(f1,3)使用3 代替原函数中的自变量,得到最终的结果。
+ 2. 符号极限,符号微分,符号积分
+ 3. limit(y,0)计算y函数在零点的值
+ 4. diff(y,3)微分求解
+ 5. int(y3)求y3的积分函数
+ 6. int(y4,1,2)对y4从一道二积分
+* **符号级数**
+ 1. symsum符号级数求和
+ symsum(函数名臣,针对变量,起始,截止)
+ 2. Taylor(f函数名称,针对的变量,展开项数,展开的函数值)
+* **符号方程求解**
+ 1. 符号代数方程
+ 2. solve(方程表达式)
+ 3. 符号方程组
+ 4. [x,y] = solve('x + y',时间,'x和y是... ...')
+ 5. 符号微分方程组
+ 6. dsolve()
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB2.md b/Matlab/教程/MATLAB2.md
new file mode 100644
index 00000000..11efa0eb
--- /dev/null
+++ b/Matlab/教程/MATLAB2.md
@@ -0,0 +1,65 @@
+# 命令和语句
+
+## >命令行的特点
+
+***
+
+* **命名和语句**
+ 1. 字母开头,字母下划线,区分大小写
+ 2. 不声明不定义拿来即用。
+ 3. 分号决定语句是否输出
+ 4. 英文省略号续行
+* **赋值**
+ 1. 等于号赋值给变量
+ 2. 无赋值对象时默认赋值给ans
+* **变量管理**
+ 1. 工作空间窗口查看
+ 2. who whos 查看
+* **全局的文件操作**
+ 1. 清除变量的命令clear,清除所有变量或者单个变量
+ 2. save[文件名][变量名][-append][-ascii]
+> .mat文件是一种数据文件的类型,用于储存matlab中的数据
+
+# >数据的类型和显示
+
+---
+
+* **format函数,控制显示**
+ 1. short long e rat hex + bank compact loose
+* **MATLAB中常见的数据类型**
+ 1. 数值型:双精度,单精度,符号整型数据
+ 2. 字符串、结构体、单元、多维矩阵、稀疏矩阵
+ 3. 默认双精度double
+ 4. unit8()将double型数据转换成无符号整型
+ 5. double()能够将int类型转换为double类型的数据
+
+> class(变量)能够显示一个数据的类型
+
+* **字符串类型的访问**
+ 1. 单引号
+ 2. double()或者abs查看ascii值
+ 3. char()转换为字符
+ 4. str2num()获取字符串表面数值
+ 5. num2str()数字表面上的字符串
+* **字符串的相关操作**
+ eval()执行字符串类型的语句(与PHP极其相似)
+* **结构体的建立**
+ 结构体.成员名 =表达式
+* **结构体的访问**
+ 1. isstruct()返回结构体的类型1或者0
+ 2. fieldnames()成员的名字
+ 3. isfield(成员名,结构体名)一个变量是否是结构体的成员
+ 4. rmfield()
+ 5. getfield()
+
+# >特殊的MATLAB数据类型
+
+****
+
+* **单元CELL**
+ 1. 使用大括号,允许不同类型的元素,同结构体
+ 2. 结构体更像键值对,而单元更像是数组,无可定义的数组。
+
+
+
+
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB3.md b/Matlab/教程/MATLAB3.md
new file mode 100644
index 00000000..26fece1e
--- /dev/null
+++ b/Matlab/教程/MATLAB3.md
@@ -0,0 +1,41 @@
+# 矩阵
+
+## >矩阵的建立
+
+***
+
+* **直接输入法**
+ 1. 空格和逗号建立行向量
+ 2. 分号建立列向量
+* **使用M文件建立**
+ 1. 这里的m文件就是MATLAB的脚本文件
+ 2. 可以直接使用该文件的名字加载脚本,也可以使用load命令
+* **特殊矩阵的建立**
+ 1. zeros()零矩阵
+ 2. ones()1矩阵
+* **冒号表达式**
+ e1:e2:e3;表示起始值:步长:结束值;
+* **linespace(1,5,3)**
+
+## >矩阵的简单操作
+
+***
+
+* **索引矩阵**
+ 1. 可以使用矩阵元素的行标和列标或者矩阵元素的序号来索引矩阵
+ 2. 序号和下标之间的转换方式sub2ind(size(A),m,n);ind2sub(size(A),z);
+ 3. [m,n] = find(A == 8);
+* **重排矩阵**
+ 1. reshape(A,m,n)大小相同
+* **矩阵转置**
+ 1. A = A'
+
+* **矩阵拆分**
+ 1. H = A(1,:)第一行所有列的内容。
+ 2. H = A(2,3:5)第二行第三列到第五列
+ 3. 向量索引和标量索引H = A([1 2],[1,2])校表索引的方法本质上是两个标量(精确定位),两个向量(生成范围)
+* **删除矩阵元素**
+ 1. 赋空值
+* **矩阵扩展和压缩**
+ 1. repmat(A,2,1)
+ 2. unique(R)保留其中不同的数据(集合化)
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB5.md b/Matlab/教程/MATLAB5.md
new file mode 100644
index 00000000..c8a2c71c
--- /dev/null
+++ b/Matlab/教程/MATLAB5.md
@@ -0,0 +1,31 @@
+# MATLAB的程序控制结构
+
+## >M文件
+
+***
+
+* **分类**
+ 1. 命令文件=脚本文件,没有输入和返回,命令文件可以对工作空间的变量进行操作,文件内部的变量为局部变量,执行后自动清除。
+ 2. 函数文件,可以有输入和返回。
+ 3. 命令文件可以直接运行,函数文件必须以调用的形式运行。
+* **建立和打开**
+ 1. 可视化新建
+ 2. edit命令新建
+
+## >程序控制结构
+* **使用顺序结构的输入和输出**
+ 1. input(promt,'s')s参数决定是否为字符串
+ 2. disp('string')能够显示字符串或者变量。
+ 3. pause(3)暂停函数,中间是秒数
+* **使用分支结构**
+ 1. 单分支的if语句,由if决定是否执行
+ 2. 双分支的if-else-end语句
+ 3. 多分支结构if-elseif...else-end
+ 4. switch语句中的case可以加任何数据类型,也可以加矩阵向量数组集合
+ 5. try分支,是一种试探性的分支,提高了程序的容错性。
+ try 语句组1
+ catch 语句组2
+ end
+* **使用循环结构**
+ 1. for循环 是在一个范围中循环
+ 2. while循环是一个条件满足循环
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB6.md b/Matlab/教程/MATLAB6.md
new file mode 100644
index 00000000..46304f58
--- /dev/null
+++ b/Matlab/教程/MATLAB6.md
@@ -0,0 +1,38 @@
+# MATLAB中程序的编写和调试
+
+## >函数文件
+
+***
+
+* **基本结构**
+ 1. function[输出参数] = 函数名([输入形参])同命令文件的不同之处在于有参数的输入和输出
+ 2. [注释说明]
+ 3. 函数体
+ 4. 函数文件名和函数名称一致(不一致时使用文件名)
+ 5. 注释信息会在help命令中显示出来
+ 6. 也可以使用lookfor命令查找
+* **函数参数可调标识变量**
+ 1. nargin 输入参数个数(由执行命令时,实际传入参数的数量决定)
+ 2. nargout 输出参数的个数(由执行命令时被赋值项的返回值个数决定nargout的值)
+ 3. varargin 代表未知的参数变量,实现了可变参数数量的输入。当输入变量多余设定好的参数是,varargin作为元胞数组,储存多余的变量,注意,MATLAB中的数组下标是从1开始的
+ 4. varargout 实现了可变参数数量的输出。
+ 5. 都是在函数文件内部实现的参数输入输出数量的控制。有点像巧妙地实现了函数的重载功能。
+ 6. nargchk(2,4,nargin)可以生命输入参数的个数为2到4个。
+ 6. error('wrongmessage')可以给出错误信息。
+## > 全局变量
+
+***
+
+* **global**
+ 1. 使不同M文件访问同一个变量数据
+ 2. 每一个文件中都要声明给global
+
+## > 程序调试
+
+***
+
+* **断点和单步**
+ 1. 添加断点,能够一步一步执行,在执行过程中,可以对中间量进行测试和输出,载明窗口中进行操作。
+* **根据错误提示,一步步调试**
+ 1. 使用error()输出错误提示,然后调试
+ 2. 使用系统中的错误提示
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB7.md b/Matlab/教程/MATLAB7.md
new file mode 100644
index 00000000..0d273536
--- /dev/null
+++ b/Matlab/教程/MATLAB7.md
@@ -0,0 +1,34 @@
+# MATLAB中的绘图功能
+
+## >二维高层绘图的基本函数
+
+***
+
+* **plot函数**
+ 1. plot(x,y);
+ 2. x和y为相同长度的向量
+ 3. 如果plot为单个参数,绘制折现图,横坐标为自然数。如果参数为复数,则实轴和虚轴进行绘制。(可以绘制圆)
+ 4. 如果绘制过程中,自变量为向量,因变量为矩阵,则对矩阵的每一个列向量,绘制一个关于自变量的图像。也就是说,如果想要在同一图中绘制函数,不需要写多个plot,只需要将因变量转换为矩阵就好。
+ 5. 如果绘制过程中,自变量和因变量同为高阶矩阵,则会为x的每一列为自变量,y的每一列为因变量,绘图。
+ 6. 注意行向量的能够组合成行向量矩阵,列项量能组合成列项量矩阵。
+ 7. linespace()和冒号表达式均可以产生行向量
+## >二维高层绘图辅助操作
+
+***
+* 涉及到的函数、控制或者命令
+[这里有一张图片](http://)
+* 标注
+ * 坐标轴控制
+ [这里有一张图片](http://)
+ * 图形名称
+ * 曲线名称
+ * 图例
+* 图形保持
+* 窗口分割
+
+ [这里有一张图片](http://)
+
+* 可以使用latex字符进行控制
+* xlim([xmin,xmax])
+* ylim([ymin,ymax])
+* axis([xmin,xmax,ymin,ymax])
\ No newline at end of file
diff --git a/Matlab/教程/MATLAB8.md b/Matlab/教程/MATLAB8.md
new file mode 100644
index 00000000..ccd44807
--- /dev/null
+++ b/Matlab/教程/MATLAB8.md
@@ -0,0 +1,51 @@
+# MATLAB二维底层绘图的修饰
+
+## > 对象和句柄
+> *似乎MATLAB也能满足面向对象编程的一些条件诶!
+> MATLAB也能实现GUI图形用户界面编程,同强大的C++、Java有一拼*
+
+***
+
+* **对象和句柄的概念**
+ 1. MATLAB吧构成图形的各个基本要素成为图形对象,产生每一个图形对象时,MATLAB会自动分配一个唯一的值,用于表示这个对象,成为句柄(好像子对象和指向对象的指针)
+
+* **对象间的基本关系**
+ 1. 计算机屏幕->图形窗口->(用户菜单,用户控件,坐标轴)
+ 2. 坐标轴->(曲线,曲面,文字,图像,光源,区域,方框)
+
+## > 基本地城绘图函数
+
+***
+
+* **line对象**
+ 1. ` h = line([-pi:0.01:pi],sin([-pi:0.01:pi]));`
+ 2. 其中h成为line曲线对象的句柄。
+ 3. line对象的修饰
+ * color属性
+ * LineWidth属性
+ * LineStyle属性
+ * Marker属性
+ * MarkerSize属性
+ 4. plot函数能够产生line对象,然后继续对返回的句柄进行操作、或者直接在绘制过程进行修饰。
+ 5. ``` h1 = line('XData',[-pi:0.01:pi],'YData',sin([-pi:0.01:pi]),'LineWidth',1,'LineStyle',':','Color','r'); ```
+ 6.
+* **set底层对象的属性设置函数**
+ 1. 可以通过生成的句柄对MATLAB中生成的操作对象进行。使用set函数进行设定。` set(h1,'LineWidth',2,'Marker','p','MarkSize','15') `
+ 2. line对象常见的性质XData,YData,ZData,Color(y,m,c,r,g,b,w,k),DisplayName(legend ()),LineStyle(-,--,:,-.,none),LineWidth,Marker(+,o,*,.,X,s,d,'^',V,>,<,p,h,none)。MarkerEdgeColor,MarkerFaceColor,MarkerSize,Type。
+* **text对象,底层标注函数**
+ 1. text是一个line的子对象,可以使用text函数进行操作。
+ 2. ht = text(0,4,'string')
+ 3. text对象相关的属性:Color,FontSize,String,Rotation。
+* **axes对象,底层坐标轴函数**
+ 1. axes是一个line/figure的对象,可以使用axes()函数进行操作
+ 2. ``` hf = figure;
+ha = axes('Parent',hf,'Position','Units','Pixels',[10,10,10,100]);```
+ 3. 常见属性:Box,GridLineStyle,Position,Units,XLabel,Ylabel,ZLabel,Xlim,Ylim,Zlim相关属性。
+> 补充一点对MATLAB的认识:
+> MATLAB是矩阵实验室(Matrix Laboratory)之意。其主要提供了以下几种功能
+> 1. 数值计算
+> 2. 符号计算
+> 3. 文字处理
+> 4. 可视化建模仿真(图形功能强大)
+> 5. 实时控制等功能(自动控制理论应用)
+> MATLAB除了内部函数主包,还有三十多种工具包,用于不同领域,不同需求的功能拓展。
diff --git a/Matlab/教程/MATLAB9.md b/Matlab/教程/MATLAB9.md
new file mode 100644
index 00000000..69309184
--- /dev/null
+++ b/Matlab/教程/MATLAB9.md
@@ -0,0 +1,29 @@
+# MATLAB Notebook使用简介
+> 沟通MATLAB和word等微软软件功能
+
+## > Notebook的安装和启动
+
+***
+
+* **执行安装命令**
+ notebook -setup
+* **执行启动命令**
+ 1. 原理Word调用MATLAB服务器进行操作。
+ 2. (MATLAB和excel服务器之间也可以相互调用)
+ 3. 从Word中启动notebook或者从MATLAB中启动MATLAB。
+
+## > M-book中命令的运行
+
+***
+
+* **代码的运行**
+ 1. 定义输入单元,格式发生变化define input cell
+ 2. 执行输入单元,evalute,执行已经输入的单元
+ 3. 作用,就像是直接在word中进行m脚本文件的一些相关操作,当在论文中插入数据处理时用这种方法。
+ 4. 使用[plot(a,b)]函数能够直接将图片绘制在word文档中
+ 5. 定义自动初始化单元。define autoInit cell
+
+* **单元组**
+ 1. 将a和b定义为分别独立的输入单元,而且,其单步执行(就像给word添加了一种图形绘制和数值计算的能力插件)
+ 2. 定义为输入单元组,能够识别超过一行的命令。group cell。
+ 3. 输出格式的控制。(notebook options)
\ No newline at end of file
diff --git a/Matlab/教程/matlab4.md b/Matlab/教程/matlab4.md
new file mode 100644
index 00000000..ef8a9f8a
--- /dev/null
+++ b/Matlab/教程/matlab4.md
@@ -0,0 +1,57 @@
+# MATLAB的矩阵处理基础
+
+## >特殊矩阵的建立
+
+***
+
+* 零矩阵
+* 1矩阵
+* 单位矩阵eye(10) eye(m,n)
+* 随机矩阵rand(m,n)randn(m,n)正态矩阵 获的(a,b)之间的随机矩阵A = a+(a-b)rand(m,n);
+获得均值为u,方差为s的随机矩阵y = u+sqrt(s)*randn;
+
+> mean()求均值
+> std()求方差
+
+* 魔方矩阵magic(5)行列对角线和相同
+* heilbert矩阵和toeplitz矩阵
+hilb(4)希尔伯特矩阵 每一个位置的元素为1/(i+j)
+toeplitz(1:6)左上到右下的斜线元素相同
+
+* 矩阵之间的加法和数乘;
+* 矩阵的行列式det()
+* 矩阵的逆inv()
+* 向量的内积b的共轭转置,乘以a
+conj(b)'*a
+dot(a,b)直接求两个向量的内积。
+
+## >线性方程组的求解
+
+****
+方法一:
+得到系数矩阵A = [1,2,3;1,4,9;1,8,27];
+常数向量b = [5,-2,6]';
+x = inv(A)*b
+方法二:x =A/b
+
+* **矩阵的相似化简和分解**
+ 1. A = [1,2,3;4,5,6;7,8,9]jordan(A)获得A化简的jordan标准型
+ 2. [V J] = jordan(A);获得的事相似矩阵和jordan标准型。
+ 3. 矩阵的特征值eig()
+ 4. [E D]=eig(A)获得A的特征值和特征向量
+
+* **向量和矩阵和范数**
+ 1. norm(A,1)
+ 2. norm(A,2)
+ 3. norm(A,inf)
+ 4. norm(A,'fro')
+* **矩阵的分析**
+ 1. 函数矩阵(有函数构成的矩阵)
+ >syms x
+ A = [sin(x) exp(x) 1;cos(x) x^2+1 log(x)];
+ diff(A);对矩阵求导
+* **矩阵函数**
+ 1. funm(A,@exp)通用矩阵函数
+ 2. expm(A)
+ 3. funm(A, @sin)
+ 4. funm(A, @cos)
\ No newline at end of file
diff --git a/PHP/Yii/系列1.txt b/PHP/Yii/系列1.txt
new file mode 100644
index 00000000..3e128be8
--- /dev/null
+++ b/PHP/Yii/系列1.txt
@@ -0,0 +1,178 @@
+һYii2
+1
+Yii һܣ PHP ܣڿٿִ Web Ӧó.Yii һͨõ Web ̿ܣڿֻ PHP Web ӦáΪĿܽṹƾɵĻ֧֣Yii رʺϿӦãŻվ̳ݹϵͳCMSĿȡ
+2װ̳
+ͨ鵵ļװ?
+1.[yiiframework.com](http://www.yiiframework.com/download/yii2-basic) ع鵵ļ
+2. صļѹ htdocsĿ¼С
+3. `config/web.php` ļ `cookieValidationKey` һԿ(ͨ Composer װ˲Զ)
+? ?'cookieValidationKey' => 'Կ'
+4.Ҫͨlocal/.../requirements.phpǷ㰲װyiiĻ
+5.PHPûдõĻҪPHPxamppphp.exeĿ¼ӵpath·иȻͨcmdphp -v phpǷװͰװİ汾ǷҪ
+6.Ȼͨlocal/.../web/index.phpǷܹСcongratulationsͳɹˡ
+
+ڶYiiĻ֪ʶ
+ʶֹܲC++ģ⣬ʹùеӦ࣬ʵԶ̳yiiࡣʹԺͷ
+࣬Ҫ
+ԡ¼Ϊ
+1.
+УԺͳԱͬеʣԶȨޡijԱǹһ֣һԸġ
+ʵԵķ
+* ̳?yii\base\Object?
+* һڱԵ˽гԱ
+* ṩgettersetter߶ṩڷʡᵽ˽гԱ ֻṩgetterôΪֻԣֻṩsetterΪֻд
+
+YiiУ?yii\base\Object?ṩ˶Ե趨ˣҪʹ֧ԣ ̳?yii\base\Object?һϵпԵķ
+* __isset()?ڲֵǷΪ?null
+* __unset()?ڽֵΪ?null
+* hasProperty()?ڲǷij
+* canGetProperty()?һǷɶ
+* canSetProperty()?һǷд
+
+
+2¼
+>ʹ¼ضʱص㣬ִԤ趨һδ롣¼ڣ磬㷢˸һ¼¹עˣ·ݡJSҲص¼¼ʱ¼һϵΪ
+
+>ʹʱҪļҪ
+һʲô¼
+˭¼
+˭¼
+¼ô
+¼صЩ
+
+>¼ص
+yii\base\Componentyii\base\Event
+ж¼صһЩֱӶ¼ԡ
+ public static function on($class, $name, $handler, $data = null,
+ $append = true)
+ {
+ // ... ...
+ // ڰ¼handler
+ }
+
+ public static function off($class, $name, $handler = null)
+ {
+ // ... ...
+ // ȡ¼handler
+ }
+
+ public static function hasHandlers($class, $name)
+ {
+ // ... ...
+ // жǷӦhandler¼Ӧ
+ }
+
+ public static function trigger($class, $name, $event = null)
+ {
+ // ... ...
+ // ڴ¼
+ }
+
+>¼handler¼Ӧphp
+ʹȫֵPHP
+ʹijԱ
+Ҳʹ
+
+>ʹonа
+$person->on(Person::EVENT_GREET, 'person_say_hello
+ʹoff
+public function off($name, $handler = null)
+trigger¼ķ
+public function trigger($name, Event $event = null)
+
+
+3Ϊ
+>ã Ժͷв䡣?ͨΪһ࣬ʹΪԺͷͺ౾ЩԺͷһ ҲҪдһµȥ̳лࡣ
+>ΪصԼΪķ
+yii\base\bahavior࣬ʵĶ
+// Step 1: һΪ
+class MyClass extends yii\base\Component
+{
+ // յ
+}
+
+// Step 2: һΪ࣬MyClass
+class MyBehavior extends yii\base\Behavior
+{
+ // Ϊһ
+ public $property1 = 'This is property in MyBehavior.';
+
+ // Ϊһ
+ public function method1()
+ {
+ return 'Method in MyBehavior is called.';
+ }
+}
+
+$myClass = new MyClass();
+$myBehavior = new MyBehavior();
+
+// Step 3: Ϊ
+$myClass->attachBehavior('myBehavior', $myBehavior);
+
+// Step 4: ΪеԺͷͺͷԺͷһ
+echo $myClass->property1;
+echo $myClass->method1();
+* ?yii\base\Component?Լ࣬ԱʹΪ
+* ?yii\base\Behavior?ԼΪ࣬涨Ϊ漰ԡ
+* ComponentBehavior
+* ʹComponentԺͷһʹΪжԺͷ
+>ΪҪ
+$owner?ԱָΪ
+events()?ڱʾΪҪӦ¼
+attach()?ڽΪComponent
+deatch()?ڽΪComponentϽ
+
+>Ϊ
+
+4YiiԼ
+ԼһõģʽĬֵһԼYiiܰͨõԼȻִЧʡ
+>YiiĿ¼ṹÿļдŵݺ
+ backend̨ Դļ
+ commonĿ¼ɹӦʹõӦ
+ console
+ environments
+ frontendǰ̨ǰԴ
+ nbproject
+ tests
+ vendorĿ¼composer.jsonİװyiiܱ
+ composer.json
+ composer.lock
+ init
+ init.bat
+ LICENSE.md
+ README.md
+ requirements.php
+ yii
+ yii.bat
+index.phpļЭֵӦá
+
+>
+@+Ԥı
+@yii?ʾYiiڵĿ¼Ҳ?yii\BaseYii?ļڵλã
+@app?ʾеӦõĸĿ¼һ?digpage.com/frontend
+@vendor?ʾComposerĿ¼һ?@app/vendor?@app/../vendor?
+@bower?ʾBowerĿ¼һ?@vendor/bower?
+@npm?ʾNPMĿ¼һ?@vendor/npm?
+@runtime?ʾеӦõʱڴʱļĿ¼һ?@app/runtime?
+@webroot?ʾеӦõļ?index.php?ڵĿ¼һ?@app/web
+@web?URLʾǰӦõĸURLҪǰˣ
+@common?ʾͨļУ
+@frontend?ʾǰ̨ӦڵļУ
+@backend?ʾ̨ӦڵļУ
+@console?ʾӦڵļУ
+ʹComposerװYiiչעĶ
+
+>ԶػƵԼ
+>ļԼ
+YiiһļڲͬIDEвͬԱĹͬĹ
+ṩһֹ淶ǰ汾Ʊü˳ͻͷIJ衣
+
+
+
+
+
+
+
+
+
diff --git a/PHP/Yii/系列2.txt b/PHP/Yii/系列2.txt
new file mode 100644
index 00000000..1da0b91a
--- /dev/null
+++ b/PHP/Yii/系列2.txt
@@ -0,0 +1,84 @@
+yiiʶִ
+>֪ʶ
+ٿ
+Ӧ
+MVCģʽ
+
+>ļ
+1modelsģ壩cnotrollersƣviexsͼconmmandstestsassets
+2configļwebļ
+3vendorļչļruntimeʱļ
+
+
+>ִ
+http://.../index.php?r=site/index
+index.phpļwebļСyiiļһӦʵ壨ĸǸ
+siteǿļӦcontrollersеsitecontrollersļදactionindex
+indexǶľƣеviewssiteindex.phpļ
+viewsͼļɶ
+->
+index.phpڽű->
+Ӧ->
+->
+
+ ->ģ
+ ->ͼ
+->Ӧ
+
+
+ϵжblog
+>ݿ
+ݿ⣬ݱ
+config/db.phpݿӵݿûû룬ݿͣ
+
+
+>ϵ
+giiɹߣּܡmodel
+߿ٶ
+giiҳָдӦģļ
+ɾĵĹܣɾĵĹܣ
+
+ȻͻȻɾĹܾʵ
+
+
+>ϵ
+
+
+²鿴
+
+¹
+
+ط
+ģ ¼ ͼ
+render
+redirect¶תһҳ
+
+
+̳Կִֶ࣬Уactionview()Уrenderתͼ
+
+ģ
+Դ
+֤ݵЧ
+ҵ
+ActiveRecord뵱һűʵ뵱ڽһ¼а˺ܶݿвķҲһЩԣ¼¼ֶ
+
+
+ÿ¼ʵһ࣬һķڶݿһֽвݡ
+
+activeform::beginµı
+moudule->load()ͨģ͵Ŀٸֵ
+moudule->save() ЧԵļ,Ӧһеֵ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PHP/Yii/系列3.txt b/PHP/Yii/系列3.txt
new file mode 100644
index 00000000..4276980a
--- /dev/null
+++ b/PHP/Yii/系列3.txt
@@ -0,0 +1,36 @@
+yii
+ģͼ
+Զ֤
+ͨСԶhtml
+
+
+ռ
+namespaceռ
+useģС
+
+
+оcontrollerԺģݴݷļ
+
+Jikecontroller涨Jikecontroller̳controller뵱ڿ
+溬actionķԴݡ
+
+modelsﶨJikeForm̳model࣬뵱ݿ
+кܶݺͷ
+
+
+Yii:$app->request->post()ĺ
+model->rule()ķ֤
+model->load()ֵдӦֵ
+model->validate()֤modelǷϷ
+
+$this->reder('index-two',['model'=>$model])һͼȾļڶͼݡ
+
+mvc
+model ģ ݿϵ
+viewͼ ûչֵIJ
+controller ûɵҵ
+
+
+
+
+
diff --git a/PHP/Yii/系列4.txt b/PHP/Yii/系列4.txt
new file mode 100644
index 00000000..5b2dc903
--- /dev/null
+++ b/PHP/Yii/系列4.txt
@@ -0,0 +1,23 @@
+1ڵĸоһ㿿һ뿿£Ȼͨ˵ӣܵʽѧһԡѧϰʽȫع鵽Ӥʽģ½ˣͬҲͨģѧϰܶණ
+ѧϰע۲ݣ
+
+ʽŵʹúһЩ壩
+
+ԣ̳еģıƹ̶ԳԼһ£
+ͷ̳ģĺͷԭͿͨվҵҪĿԼ¼һ£
+
+Լͻƣ㶮ݿ-ģ--ǰͼ֮ϵ
+
+2controller viewmodelܽ
+
+controllers ļͬߵĿƺcontrollerҪд
+
+views ļûҪкܶ࣬ ļͬȻСдûҪ
+
+model ļͬĸҪдģݿͬſ
+
+
+3ڿʼÿѧһ࣬ԣķҪעõϢ
+
+find()//->where(['status'=>1])->orderBy('age')->all()
+ޣֵһactiverecord¼飩
diff --git a/PHP/Yii/系列5.txt b/PHP/Yii/系列5.txt
new file mode 100644
index 00000000..158f1bbb
--- /dev/null
+++ b/PHP/Yii/系列5.txt
@@ -0,0 +1,114 @@
+gii
+
+һmodel
+һform
+һɾIJĿ
+
+
+
+indexļ->ӦIJ
+
+1ִindexļִŶļȡļȡӦʵ
+2·ɽr=site/index,ת
+3ִsitecontroller/indexȻ
+4ִоĶ
+5ִйˣǹûȨޡpostǷȵ
+6 ģȡ
+7ŵͼģȾҳ
+8ȾͼӦû
+
+
+ֵ
+ڽűļ
+趨ȫֱ
+yiiĺ
+Ӧ
+
+
+Ӧ壺
+application͵Ӧϵͳ
+web/applicationеһĶ
+yiiṹ
+Yii::$appʶ
+idԣ
+basepathƶĿ¼
+defaultRouteȱʡrֵ
+
+
+
+ļҪ
+yii\web\controller̳ж
+ݣӦݣ
+
+actionɣγɶ
+ÿһӦǰͼҳ
+
+renderǰ˴
+
+
+
+ͼļ
+yii\web\viewӦİ£ӦͼģļйȾɡ
+html루̬֣PHP루̬֣
+
+
+ļ
+൱ҳĽṹ
+ļе$contentͼļеĴ
+main.phpDzļԷд
+α任$this->layout = ļ
+
+
+ġģ
+1ģ͵ݣ
+ԡԱǩ츳ֵ֤ݵ
+2ģԵĶͷʷʽ
+Եȼҵ
+$model = new CoForm();
+$model['name']='weixi'ֵ
+ԱǩƶʾĶǩattributelabels(){}ʹ飬ֵԣֵΪֵΪʾ
+3鸳ֵ
+ʹloadֱӽݸֵ
+4֤
+ruleݣһУǰΪݣΪҪ
+$this->refresh()ҳˢ£controller
+
+
+塢Ĵ
+ActiveForm
+= $from->field($medel,'username')->textInput()->hint('Please enter your name')->label('Name')?>
+
+аmodelеݴͼ
+
+
+html::tag()
+Html::submitButton()
+
+
+塢giiӦ
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/PHP/Yii/系列6.txt b/PHP/Yii/系列6.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/PHP/Yii/系列7.txt b/PHP/Yii/系列7.txt
new file mode 100644
index 00000000..a8a5f510
--- /dev/null
+++ b/PHP/Yii/系列7.txt
@@ -0,0 +1,45 @@
+
+
+ ['index'],
+ 'method' => 'get',
+ ]); ?>
+
+ = $form->field($model, 'record_id') ?>
+
+ = $form->field($model, 'label') ?>
+
+ = $form->field($model, 'time_data') ?>
+
+ = $form->field($model, 'user_own') ?>
+
+ = $form->field($model, 'set_top') ?>
+
+ field($model, 'num_love') ?>
+
+ field($model, 'content') ?>
+
+
+ = Html::submitButton('Search', ['class' => 'btn btn-primary']) ?>
+ = Html::resetButton('Reset', ['class' => 'btn btn-default']) ?>
+
+
+
+
+
+
+//$model 是数据类,后边是数据项,提交时形成一个。
+/*
+对activeForm和From类的理解,actioncreate()和actionupdate()的方法几乎一样,都是项数据库中保存一条数。
+前者,新建后保存,后者更改后保存
+两个函数分别把一个类的变量传递给create.php 和 update.php二者接受类的对象
+都把对象传递给同一张表单_from.php中的activeForm,进行处理,然后在返回,
+极大的利用了代码的重复利用性。
+同时数据流完美清晰,值的学习。
+
+模型中的isnewrecord 属性能够判断记录是新的记录还是旧的记录。
+
+?>
\ No newline at end of file
diff --git a/PHP/Yii/需求分析.txt b/PHP/Yii/需求分析.txt
new file mode 100644
index 00000000..c2c65601
--- /dev/null
+++ b/PHP/Yii/需求分析.txt
@@ -0,0 +1,36 @@
+
+ƽ̨ѧ
+
+ѧУپ涨չʾ켰ɵԱˣ켰ɸˣ
+
+Ժˣͨſɻؼңδ
+
+¼ϴϵͳʾд¼ϢϢԭڶ֣
+УУʱ䣬֤סԺҪסԺ֤ȣͥסַʱ䵽ѣ
+ʹʦȨˡ
+
+Ҫһÿһ鿴ڵ
+
+ٳ죬Ҫ˷Ż档ܾ룬Ҫ˵ԭ
+
+
+
+ҳ
+
+ѧ
+ҳ棺д
+ټ¼ҳ棺鿴Լټ¼б
+鿴Ϣ٣ͨ״̬ǰ٣༭״̬
+
+
+ʦ
+ٹ˵ļ
+бҳ棺ѯijһʱУϸϢ
+
+
+ݱ
+ѧ ༶ Уʱ Уʱ ԭ Ŀĵַ ϵʽ Ƭ ֤ ״̬ˡͨɣ
+
+
+
+
diff --git a/工作日志/2021年4月7日-简历说明.md b/工作日志/2021年4月7日-简历说明.md
new file mode 100644
index 00000000..02a013df
--- /dev/null
+++ b/工作日志/2021年4月7日-简历说明.md
@@ -0,0 +1,110 @@
+## 1 教育经历
+你好。我叫殷康龙,现就读于北京航空航天大学计算机学院,主要研究联邦学习在恶意软件检测领域的应用。本科就读于西北工业大学软件与微电子学院,主修软件工程。
+
+在学校主要学习了数据结构与算法、C++程序设计、JavaEE企业级开发、面向对象程序设计、编译原理等课程,综合测评成绩在250人中排名第8。
+
+## 2 校园经历
+
+在学校里积极参加社团和活动。曾任软微学院科创部干事,参与组织一行代码大赛和程序设计比赛。曾任西工大新闻中心副部长,负责开发新文中心的功能网站,培训技术人员,维护西工大官方微信。
+
+
+## 4 主要成果
+
+* 两次学校一等奖学金,一次华为奖学金,一次国家励志奖学金,一次电子工业出版社助学金,“优秀共青团员”称号
+* 2016-2017年连续两届FIRA机器人世界杯SimuRoSot项目国际特等奖(冠军),Air Challenge项目国际一等奖(亚军)
+* 2017中国机器人大赛空中机器人-无人机大战水果项目一等奖
+* 2019年获得国家级大学生创新项目《基于超宽带定位技术的无人机目标追踪系统》和《基于网络爬虫和数据分析的高校信息整合系统》优秀结题
+* 获得《面向学生的校园信息交流系统V1.0》《基于scrapy框架的校园信息爬虫系统》《基于网络爬虫和数据分析的高校信息整合系统》计算机软件著作权
+
+## 3 项目经历
+
+> 项目概述、主要工作、最终成果
+
+### 竞技策略开发——仿真5VS5SimuRosot
+* 项目概述:15个人的开发团队,长期开发项目,C++、JAVA。工程项目主要包括数据处理模块、前场、后场、边路、底线、特殊策略、定位球策略等,主要用于参加5V5 simurosot的国内比赛和国外比赛。
+* 主要工作:负责开发前场的相关策略,主要包括策略选择模块(优势前场、保守前场、边路前场)、角色选择和切换模块(角色的稳定性,进入退出分开控制。)、目标计算模块(保持相对的阵型,减少阵型的抖动)、移动跑位模块、射门模块。使用PID控制方法对机器人控制,增强了前场的稳定性。使用JAVA为团队开发了数据测试平台,实现了对数据仿真、策略测试、可视化。。搭建团队开发的SVN版本控制系统,方便整个团队项目开发和维护。
+* 关键技术:开发测试平台主要使用java swing开发跨平台图形界面,提供了一系列GUI组件。主要包括数据导入模块、动态演示模块、数据显示模块。使用java io random_accessfile读取并解析file文件。使用java thread实现数据加载与数据展示的并行过程。通过事件监听与响应机制,实现对数据仿真动态演示过程的控制,包括仿真速度调节和仿真进度调节。使用javadoc生成标准的java文档供后续开发使用,方便开发维护。
+
+* 最终成果:暑假期间带领团队前往日照参加了2017中国机器人大赛,前往台湾 参加了FIRA机器人世界杯,取得多项冠军。
+
+### 大创项目——基于网络爬虫和数据分析的高校信息整合系统
+* 项目概述:5个人,Python、MySQL。带领团队申请了《基于超宽带定位技术的无人机目标追踪系统》《基于网络爬虫和数据分析的高校信息整合系统》两个国家级大创项目,后者主要是利用爬虫综合网络信息,搭建web服务器,对数据进行二次处理,使用机器学习算法提供面向用户提供文章推荐功能、标签云索引功能和分类浏览功能,面向信息发布者提供了热点倾向功能、数据分析功能。
+* 主要工作:项目架构、服务器搭建,包括爬虫模块(数据解析模块xpath、URL获取与去重模块)、服务器模块(MySQL数据库设计、Json数据封装)、Android客户端(数据请求模块HTTP请求、数据展示)、数据处理模块。通过Scrapy完成网络信息爬虫,构建了Mysql数据库,使用Django后端框架和Bootstrap前端框架开发了项目网站,使用大数据的算法对信息分析处理,并将整个项目部署到腾讯云提供的CentOS服务器上。使用Github进行代码管理。
+
+
+* 关键技术:scrapy框架介绍。使用request模块进行爬虫,通过调度去缓存下一条URL,控制网站访问的频率;使用xpath解析数据内容并将数据存储到mysql数据库中。
+> * (1)Scrapy引擎打开,向爬虫模块请求其需要爬取的起始URLs
+> * (2)Scrapy引擎从爬虫模块那里获取到需要爬取的起始URLs,将它们放入调度器模块,作为待爬取的URL Requests;
+> * (3)Scrapy 引擎向调度器模块发出请求,获取下一个待爬取页面的URL;
+> * (4)调度器模块返回下一个待爬取页面的URL给Scrapy 引擎,Scrapy 引擎则将该 URL 经下载中间件模块(请求方向)转发给下载器;
+> * (5)当下载器模块完成页面下载后,会生成一个该页面所对应的 HTTP Response,并将其经下载中间件(响应方向)发送给Scrapy 引擎;
+> * (6)Scrapy 引擎从下载器模块处接收到HTTP Response 后,会将其经爬虫中间件模块(输入方向)发送给爬虫模块处理;
+> * (7)爬虫模块处理接收到的 HTTP Response,并返回从中爬取到的Items及需要跟进的新的 URLs 给 Scrapy 引擎;
+> * (8)Scrapy 引擎将(爬虫模块返回的)Items 转发给数据流水线模块,同时将(爬虫模块返回的)URLs 转发给调度器;
+> * (9)以上 2~8 的过程会一直重复执行,直到调度器模块中没有 URL Requests 时,Scrapy 引擎关闭,爬虫停止。
+
+
+* 关键技术:Django框架。使用Apache服务器,处理http请求。Django框架,MVC(model-view-control)的代码架构模式。从数据库中获取数据,封装成json格式,最后将响应的数据传递给android客户端。
+
+
+* 关键技术:数据处理算法。
+ * 标签计算算法:jieba分词统计词频,TF-IDF算法进行词频统计,去除无关词汇,字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
+ * 分类算法:学科竞赛、科研信息、行政信息、招生信息、招聘就业、校园活动、升学留学、生活娱乐这八类,使用朴素贝叶斯分类器进行分类。(基于贝叶斯公式,可以试图讲解贝叶斯公式)
+ * 混合推荐算法:基于协同过滤算法提取项目的基本特征(人,文章的特征,通过人阅读的其他文章给出特征,通过相似的人看的其他电影打上相似的标签)。系统采用的KNN算法目的在于匹配项目中K个相似度最高的项目,作为预测推荐输出到用具接口。
+* 最终成果:两个国家级大创项目均获得优秀结题。
+
+### 电子钱包JavaEE企业及开发项目
+
+* 项目概述:在中科金财上市公司参与电子钱包项目的实习。
+* 负责使用Spring框架和mybatis实现数据库的访问和数据处理。
+
+
+### 无人机项目
+
+* 项目概述:无人机加密通信项目开发。
+* 主要工作:主要是在Android平台(DJ无人机的地面站android手机开发),使用Java多线程和Socket编程,实现无人机之间的通信连接。主要通过UDP网络通信、心跳测试保持连接、回调处理等方式实现线程通信。在加密通信过程中,使用C++开发加密仿真环境。使用nodejs+electron对通信过程进行可视化。使用网页技术HTML、CSS、JavaScript做前端,使用C++做为本地的后端。通过封装C++通信的代码,提供C++通信接口,供nodejs调用。(代码的封装,接口提供,)
+* 主要成果:完成实验室项目验收。
+
+
+
+### 补充项目——软件与微电子学院学生信息系统。PHPweb开发
+* 项目概述:20个人组成的团队,PHP、MySQL。系统主要包括任务管理系统、证书认证系统、请销假平台、项目管理、活动,会议记录、党建系统、文件管理系统、就业记录等子系统。使用PHP作为后端开发脚本,使用MVCyii框架进行开发。
+* 主要工作:构建数据库。使用yii框架实现请销假平台,包括表单管理和MySQL数据库访问。yii框架是MVC结构。由controller处理逻辑内容,model封装数据库访问,view视图作为界面,用来渲染数据,发送到前端。
+
+* 最终成果:开发完成暑期项目实践,项目成功验收。
+
+
+### ~~补充项目——企业级开发JavaEE项目考试系统~~
+> 因为是java项目,等日后学完java再写
+### ~~补充项目———项目组织管理图书馆里系统开发~~
+> 因为是java项目。
+### ~~补充项目——windows通信编程。多人聊天室~~
+* 项目概述:单人项目开发。
+* 主要工作:MFC开发界面、windows网络通信。
+* 主要成果:课设。
+### ~~补充项目——TensorFlowIO优化~~
+
+* 项目概述:分析TensorFlow源代码,对源代码进行修改重新编译。使用mmap方法,优化TensorFlow数据加载过程中的IO操作。
+* 主要工作:阅读源代码分析TensorFlow架构,使用多线程以流的方式读取多个文件。mmap封装大文件读取过程。编译并测试TensorFlow最后的优化效果。
+
+
+1. 首先阅读了TensorFlow的源代码以及相关的研究资料,对TensorFlow的代码架构进行分析。
+2. 第一层设备通信层,负责网络通信和设备管理。设备管理模块可以实现TensorFlow的异构性,提供了对不同平台不同设备的支持,统一封装成相同的接口,使得上层模块在调用过程中,不必考虑具体的底层实现。通信模块主要通过两种协议实现不同设备之间的通信过程,分别是gRPC协议和RDMA协议。
+3. 第二层内核实现层,实现了核心算子(Operation)与张量(Tensor)的操作。所有的算子都是以张量为操作对象,依赖底层实现张量的内存分配和计算。
+4. 第三层图计算层,实现了计算图(Graph),包括本地计算流图和分布式的计算流图的实现。主要实现了计算图的创建、编译、优化和执行的细节。计算图中的每个节点都是内核实现层中的算子,计算图中的每条边代表内核实现层中的张量。
+5. 第四层API接口层,TensorFlow提供了原始的C API的实现,方便其他语言和平台进行调用。通过C API进一步实现其他语言的API,方便不同语言开发者选择熟悉的语言构建计算图。
+6. 第五层应用层,不同的编程语言通过API接口层调用TensorFlow的内核,实现相关的模型和应用。
+
+
+
+1. 使用linux的mmap方法申请内存空间,建立内存映射。
+2. 使用platform模块,对底层方法进行封装,实现异常情况处理,并记录内存映射的地址及相关信息,提供上层接口
+3. 利用platform模块提供的内存映射接口,创建读取器,复写父类中的数据读取方法。创建一个读取数据的算子,并注册到内核当中,提供其他语言的接口。
+4. 编写前端,调用内核新方法,使用MmapReader模型进行数据读取。
+5. 重新编译
+
+* 最终成果:毕业答辩顺利完成。
+
+
+## 5 个人能力和性格
+
diff --git a/工作日志/image/2021-04-06-20-19-05.png b/工作日志/image/2021-04-06-20-19-05.png
new file mode 100644
index 00000000..35a8d701
Binary files /dev/null and b/工作日志/image/2021-04-06-20-19-05.png differ
diff --git a/工作日志/image/2021-04-06-21-06-32.png b/工作日志/image/2021-04-06-21-06-32.png
new file mode 100644
index 00000000..c3e60cb3
Binary files /dev/null and b/工作日志/image/2021-04-06-21-06-32.png differ
diff --git a/工作日志/image/2021-04-06-21-17-24.png b/工作日志/image/2021-04-06-21-17-24.png
new file mode 100644
index 00000000..403a35c2
Binary files /dev/null and b/工作日志/image/2021-04-06-21-17-24.png differ
diff --git a/工作日志/image/2021-04-06-21-18-56.png b/工作日志/image/2021-04-06-21-18-56.png
new file mode 100644
index 00000000..8c27f74d
Binary files /dev/null and b/工作日志/image/2021-04-06-21-18-56.png differ
diff --git a/工作日志/image/2021-04-06-21-33-39.png b/工作日志/image/2021-04-06-21-33-39.png
new file mode 100644
index 00000000..7da95f81
Binary files /dev/null and b/工作日志/image/2021-04-06-21-33-39.png differ
diff --git a/工作日志/image/2021-04-06-21-58-13.png b/工作日志/image/2021-04-06-21-58-13.png
new file mode 100644
index 00000000..a962eb5d
Binary files /dev/null and b/工作日志/image/2021-04-06-21-58-13.png differ
diff --git a/工作日志/image/2021-04-06-23-26-24.png b/工作日志/image/2021-04-06-23-26-24.png
new file mode 100644
index 00000000..b0ed8937
Binary files /dev/null and b/工作日志/image/2021-04-06-23-26-24.png differ
diff --git a/工作日志/image/2021-04-06-23-26-50.png b/工作日志/image/2021-04-06-23-26-50.png
new file mode 100644
index 00000000..10c4169b
Binary files /dev/null and b/工作日志/image/2021-04-06-23-26-50.png differ
diff --git a/工作日志/image/2021-04-06-23-28-22.png b/工作日志/image/2021-04-06-23-28-22.png
new file mode 100644
index 00000000..b2c91ba4
Binary files /dev/null and b/工作日志/image/2021-04-06-23-28-22.png differ