2011.7.25-29 周总结

本周工作主要包括理解NovAtel主板说明书、重写数据解析方法、实现实时轨迹绘制并解决绘制问题,以及将功能移植到WinCE平台。在移植过程中遇到界面布局设计耗时长、命名混乱等问题。

这周主要的工作内容是这些:

1.读懂了novatel主板说明书,虽然是完完全全懂了,但也基本上了解60%,余下的内容并不涉及到还有就是很多的参数及说明,读懂了之后也就知道该如何去处理二进

制数据了,还有一个关键的地方就是如何向主板发送请求数据的指令(COM.Write(.......)?)把这个也弄清楚了那就差不多了。

2.重写了数据解析的方法,变得越来越复杂了,判断和处理及循环的过程越来越多,逻辑上应该没错但或许有更好的办法,这重写的方法并没有进行调试,在星期五那

天里,调试花去了很多时间,并且还没有能调试完成,这一个方法还是太复杂了,我自己读得时候都晕了。

3.实现了轨迹图的实时绘制,但是还是会存在感觉绘制“很吃力”的情况,可能是我绘制过程中的对数据处理得太多了,还有可能是没有对使用过后的资源及对象进行

释放。后来还实现了拖动和放缩,但是效果都不好,移动的时候平移位置不准确不平滑,放缩的时候也太慢,或许是我选择绘制的方法错了?这点在上周还未有得到

解决。

4.在星期五的时候将已实现的功能移植到CE平台上,由于新的数据解析的方法没有调试好,所以大半天的时间耗在了调试上,最后依旧没能完全搞好,写的时候一定要

用心!要熟虑! 然后本来打算周末再来把这周的内容给完成掉,但是却听说前门密码改了进不来,于是作罢,得把内容在下一周解决了,下一周的内容是没有进度就

是把已实现的进行贯通考虑再优化。听说计划8号做一次阶段总结展示,要好好准备。

---------------------------------------------- 以下是周五下午做的总结 ----------------------------------------------

将已实现的功能全部移植到WinCE平台,目前仅移植的数据分析获取,还需移植实现二进制数据请求及实现,星空图的绘制及数据显示,轨迹图的绘制拖动及比例尺。

花了一整天的时间还是没能把之前的实现都顺利的转到CE平台,总结一下主要是一下原因:

1.界面布局设计就花了将近3个小时的时间,而这段时间完全可以减少,还要根据之后的运行情况来调整方法。

2.给控件,变量,类都重新进行了命名,这也花去了一些时间,要学会有一套规范易懂的命名风格。

3.采用了重写的数据解析的方法,并且之前没有调试过。这个要重点找原因,自我分析:

1.方法写得过于复杂,要实现对传入的字节数组进行判断解析,判断,截取,再拆存到数组里,再移位,再重复进行。所用的方法逻辑是对于一字节数组进行顺序的读取判断处理移位,其中关键的是对数据起始的索引位及数据长度这两个变量要确定准确,逻辑上到代码上的实现细节没考虑到,是的处理的过程中察觉不到错误。

2.处理数据所调用的方法也存在错误,发现之后也改过来了。

3.一个方法又调用了其他的5个方法,这样调试起来需要单独调试。

4.处理上的调用顺序还是比较清晰的,可能是我逻辑不清晰。

利用周末两天下午把还已实现的功能给移植到WinCE平台。

当然还需要调试优化

``` -- 学号:2023123456 姓名:张三 SELECT '学号:2345313524, 姓名:吕倩倩' AS StudentInfo; -- 创建数据库 CREATE DATABASE IF NOT EXISTS db_final_project; USE db_final_project; -- 部门表 DROP TABLE IF EXISTS dept; CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '部门ID', name VARCHAR(50) NOT NULL COMMENT '部门名称' ) COMMENT='部门表'; INSERT INTO dept(name) VALUES ('研发部'),('市场部'),('财务部'),('销售部'),('总经办'); -- 员工表 DROP TABLE IF EXISTS emp; CREATE TABLE emp( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '员工ID', name VARCHAR(50) NOT NULL COMMENT '姓名', age TINYINT COMMENT '年龄', job VARCHAR(20) COMMENT '职位', salary INT COMMENT '薪资', entrydate DATE COMMENT '入职日期', managerid INT COMMENT '直属上司ID', dept_id INT COMMENT '部门ID', INDEX idx_emp_dept(dept_id), INDEX idx_emp_salary(salary), INDEX idx_emp_entry(entrydate) ) COMMENT='员工表'; INSERT INTO emp(name,age,job,salary,entrydate,managerid,dept_id) VALUES ('张三',45,'总经理',20000,'2010-01-01',NULL,5), ('李四',30,'项目经理',15000,'2012-05-10',1,1), ('王五',28,'开发工程师',9000,'2015-08-20',2,1), ('赵六',35,'市场总监',16000,'2011-03-15',1,2), ('孙七',50,'财务主管',18000,'2013-11-30',1,3), ('八',26,'销售代表',8000,'2016-07-01',4,4), ('吴九',22,'实习生',4000,'2020-09-01',2,1); -- 薪资等级表 DROP TABLE IF EXISTS salgrade; CREATE TABLE salgrade( grade INT COMMENT '等级', losal INT COMMENT '最低薪资', hisal INT COMMENT '最高薪资' ) COMMENT='薪资等级表'; INSERT INTO salgrade VALUES (1,0,5000),(2,5001,10000),(3,10001,15000),(4,15001,20000); -- 题目一:复杂查询与优化 -- 1. CTE与中位数 -- 题目一:复杂查询与优化 -- 1. CTE与中位数 WITH dept_stats AS ( SELECT d.id AS dept_id, d.name AS dept_name, AVG(e.salary) AS avg_salary, ( SELECT e2.entrydate FROM ( SELECT entrydate, @rownum := @rownum + 1 AS row_num FROM emp e2, (SELECT @rownum := 0) r WHERE e2.dept_id = d.id ORDER BY entrydate ) e2 WHERE e2.row_num = ( SELECT CEILING(COUNT(*) / 2) FROM emp e3 WHERE e3.dept_id = d.id ) ) AS med_entry FROM dept d LEFT JOIN emp e ON d.id = e.dept_id GROUP BY d.id, d.name ) -- 查询薪资高于部门平均且入职日期早于中位数的员工 SELECT ds.dept_name AS '部门名称', e.name AS '员工姓名', e.salary AS '薪资', e.entrydate AS '入职日期' FROM emp e JOIN dept_stats ds ON e.dept_id = ds.dept_id WHERE e.salary > ds.avg_salary AND e.entrydate < ds.med_entry; -- 2. 性能分析与优化 -- 原始执行计划 EXPLAIN FORMAT=JSON SELECT * FROM emp WHERE dept_id = 1 AND salary > 10000; -- 优化1: 创建覆盖索引 ALTER TABLE emp ADD INDEX idx_emp_dept_salary(dept_id, salary); -- 优化2: 创建物化视图 CREATE VIEW emp_dept_stats AS SELECT d.id AS dept_id, d.name AS dept_name, COUNT(e.id) AS emp_count, AVG(e.salary) AS avg_salary, MAX(e.salary) AS max_salary, MIN(e.salary) AS min_salary FROM dept d LEFT JOIN emp e ON d.id = e.dept_id GROUP BY d.id, d.name; -- 优化后执行计划 EXPLAIN FORMAT=JSON SELECT * FROM emp WHERE dept_id = 1 AND salary > 10000; -- 题目二:窗口函数与分区分析 -- 1. 窗口函数排名 -- Student:2023123456张三 WITH dept_top3 AS ( SELECT d.name AS dept_name, e.name AS emp_name, e.salary, ROW_NUMBER() OVER (PARTITION BY e.dept_id ORDER BY e.salary DESC) AS salary_rank FROM emp e JOIN dept d ON e.dept_id = d.id ) SELECT dept_name AS '部门名称', MAX(salary) - MIN(salary) AS '薪资差距' FROM dept_top3 WHERE salary_rank <= 3 GROUP BY dept_name; -- 2. 分区表设计 -- Student:2023123456张三 -- 创建分区表 DROP TABLE IF EXISTS emp_partitioned; CREATE TABLE emp_partitioned( id INT PRIMARY KEY AUTO_INCREMENT COMMENT '员工ID', name VARCHAR(50) NOT NULL COMMENT '姓名', age TINYINT COMMENT '年龄', job VARCHAR(20) COMMENT '职位', salary INT COMMENT '薪资', entrydate DATE COMMENT '入职日期', managerid INT COMMENT '直属上司ID', dept_id INT COMMENT '部门ID', INDEX idx_emp_dept(dept_id), INDEX idx_emp_salary(salary) ) COMMENT='员工表(分区)' PARTITION BY RANGE (YEAR(entrydate)) ( PARTITION p2020 VALUES LESS THAN (2021), PARTITION p2021 VALUES LESS THAN (2022), PARTITION p2022 VALUES LESS THAN (2023), PARTITION p2023 VALUES LESS THAN (2024), PARTITION pmax VALUES LESS THAN MAXVALUE ); -- 加载数据到分区表 INSERT INTO emp_partitioned SELECT * FROM emp; -- 验证分区裁剪 EXPLAIN SELECT * FROM emp_partitioned WHERE entrydate BETWEEN '2020-01-01' AND '2020-12-31'; ```请回答上述代码剧具体执行顺序精确到每一行是否执行或者不执行
06-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值