4、从输入的身份证号码内让系统自动提取性别,可以输入以下公式:
1、求和:=SUM(K2:K56)——对K2到K56这一区域进行求和;
3、排名:=RANK(K2,K$2:K$56)——对55名学生的成绩进行排名;
5、学期总评:=K2*0.3+M2*0.3+N2*0.4——假设K列、M列和N列分别存放着学生的“平时总评”、“期中”、“期末”三项成绩;
7、最低分:=MIN(K2:K56)——求K2到K56区域(55名学生)的最低分;
8、分数段人数统计:
说明:COUNTIF函数也可计算某一区域男、女生人数。
11、标准差:=STDEV(K2:K56)——求K2到K56区域(55人)的成绩波动情况(数值越小,说明该班学生间的成绩差异较小,反之,说明该班存在两极分化);
12、条件求和:=SUMIF(B2:B56,\"男\",K2:K56)——假设B列存放学生的性别,K列存放学生的分数,则此函数返回的结果表示求该班男生的成绩之和;
13、多条件求和:{=SUM(IF(C3:C322=\"男\",IF(G3:G322=1,1,0)))}——假设C列(C3:C322区域)存放学生的性别,G列(G3:G322区域)存放学生所在班级代码(1、2、3、4、5),则此函数返回的结果表示求一班的男生人数;这是一个数组函数,输完后要按Ctrl+Shift+Enter组合键(产生“{……}”)。“{}”不能手工输入,只能用组合键产生。
———假设D列存放学生的出生日期,E列输入该函数后则产生该生的周岁。
15、在Word中三个小窍门:
①连续输入三个“~”可得一条波浪线。
②连续输入三个“-”可得一条直线。
连续输入三个“=”可得一条双直线。
一、excel中当某一单元格符合特定条件,如何在另一单元格显示特定的颜色比如:
A1〉1时,C1显示红色
1、单元击C1单元格,点“格式”>“条件格式”,条件1设为:
2、点“格式”->“字体”->“颜色”,点击红色后点“确定”。
3、点“格式”->“字体”->“颜色”,点击绿色后点“确定”。
点“格式”->“字体”->“颜色”,点击黄色后点“确定”。
4、三个条件设定好后,点“确定”即出。
二、EXCEL中如何控制每列数据的长度并避免重复录入
1、用数据有效性定义数据长度。
用鼠标选定你要输入的数据范围,点\"数据\"->\"有效性\"->\"设置\",\"有效性条件\"设成\"允许\"\"文本长度\"\"等于\"\"5\"(具体条件可根据你的需要改变)。
还可以定义一些提示信息、出错警告信息和是否打开中文输入法等,定义好后点\"确定\"。
2、用条件格式避免重复。
这样设定好后你输入数据如果长度不对会有提示,如果数据重复字体将会变成红色。
三、在EXCEL中如何把B列与A列不同之处标识出来?
(一)、如果是要求A、B两列的同一行数据相比较:
假定*9行为表头,单击A2单元格,点“格式”->“条件格式”,将条件设为:
“单元格数值”“不等于”=B2
点“格式”->“字体”->“颜色”,选中红色,点两次“确定”。
用格式刷将A2单元格的条件格式向下复制。
B列可参照此方法设置。
(二)、如果是A列与B列整体比较(即相同数据不在同一行):
假定*9行为表头,单击A2单元格,点“格式”->“条件格式”,将条件设为:
点“格式”->“字体”->“颜色”,选中红色,点两次“确定”。
用格式刷将A2单元格的条件格式向下复制。
B列可参照此方法设置。
按以上方法设置后,AB列均有的数据不着色,A列有B列无或者B列有A列无的数据标记为红色字体。
四、EXCEL中怎样批量地处理按行排序
假定有大量的数据(数值),需要将每一行按从大到小排序,如何操作?
由于按行排序与按列排序都是只能有一个主关键字,主关键字相同时才能按次关键字排序。所以,这一问题不能用排序来解决。解决方法如下:
1、假定你的数据在A至E列,请在F1单元格输入公式:
用填充柄将公式向右向下复制到相应范围。
你原有数据将按行从大到小排序出现在F至J列。如有需要可用“选择性粘贴/数值”复制到其他地方。
注:第1步的公式可根据你的实际情况(数据范围)作相应的修改。如果要从小到大排序,公式改为:=SMALL($A1:$E1,COLUMN(A1))
五、巧用函数组合进行多条件的计数统计
例:*9行为表头,A列是“姓名”,B列是“班级”,C列是“语文成绩”,D列是“录取结果”,现在要统计“班级”为“二”,“语文成绩”大于等于104,“录取结果”为“重本”的人数。统计结果存放在本工作表的其他列。
六、如何判断单元格里是否包含指定文本?
假定对A1单元格进行判断有无\"指定文本\",以下任一公式均可:
求某一区域内不重复的数据个数
例如求A1:A100范围内不重复数据的个数,某个数重复多次出现只算一个。有两种计算方法:
一是利用数组公式:
二是利用乘积求和函数:
七、一个工作薄中有许多工作表如何快速整理出一个目录工作表
1、用宏3.0取出各工作表的名称,方法:
Ctrl+F3出现自定义名称对话框,取名为X,在“引用位置”框中输入:
2、用HYPERLINK函数批量插入连接,方法:
在目录工作表(一般为*9个sheet)的A2单元格输入公式:
将公式向下填充,直到出错为止,目录就生成了。
此文档记录研二学习ssm框架的知识点笔记
注意:项目工程的WEB-INF下所有文件是私有的,必须经过后端调用才能访问到的,如果要公共访问的东西需要放在webapps目录下
上面第二步中的行级锁:当一个用户在update时其他用户等待
DAO层开发就是三件事:创建表、接口设计、sql编写。具体流程如下。
1.Seckill.java开发。首先开发entity包中的实体类:数据表table对应实体entity类,表中的列名对应实体类中的属性
3.Mapper.xml开发。对应实体类的dao层接口写完后,下面就是基于mybatis实现dao接口的开发。(mybatis只需要知道参数+sql语句就可以Mapper自动完成数据表与实体的映射)
5.至此DAO部分基本写完了,现在进行DAO层单元测试和问题排查。直接在SeckillDao.java类名上右键go to test即可进行junit4测试,同时也自动在src/test/java包下创建对应目录的test类。
至此,DAO层开发完毕
基于Spring托管Service实现类,并使用了Spring声明式事务,具体流程如下。
1.service层的业务接口开发。service层的业务接口应站在"使用者"角度设计接口,三个方面考虑:方法定义粒度、参数、返回类型(return 类型/异常),如下:
略,出门左转参考示例。
什么时候回滚事务:抛出运行期异常(RunTimeException)时回滚事务
使用注解控制事务方法的优点:
5.还需要resources下配置logback.xml配置下日志管理。至此Service层基本写完了,现在进行service层单元测试和问题排查。
至此,Service层开发完毕
1.2 详情页的流程逻辑
兴起于Rails,一种优雅的URL表述方式,规范url的设计,理念就是:资源的状态和状态转移。
需要配置两个东西,具体请左转:
实现Restful接口的Controller层:接受请求与参数,跳转页面的控制,并且返回参数都是已经dto传输层封装好的类型
springMVC开发技巧:DTO封装传递数据,便于controller与前端交互传递数据
6.前端页面写完后,用jquery开发交互设计。
5、6两步请左转:依次看jsp主页面、.js文件
至此,dao、service、web层所有开发完毕,整个项目跑通,测试完毕,开发完毕。后续要做的就是高并发秒杀优化
上述实现的秒杀系统实际上是扛不住多少并发量的,下面将进行高并发优化分析与实现。主要包括:前端CDN、后端redis缓存、mysql并发优化(减少行级锁持有时间+存储过程)
1.redis后端缓存优化编码。
秒杀接口地址可以放到redis服务器缓存中,而不用每次都访问数据库,redis可以定期同步更新一次数据库即可。
在service层的优化如下:
2.执行秒杀操作(减库存+记录购买明细)高并发优化。调整sql顺序:记录购买行为在前
,减库存在后。因为记录购买行为只是插入,而减库存需要行级锁,这样能减少行级锁持有时间
3.事务sql放在Mysql端执行(定义存储过程)。上面第2步的update减库存事务操作需要用户在客户端执行秒杀操作,现在将这个事务放在Mysql端执行(定义存储过程),这样可以完全避免网络延迟和gc(垃圾回收)时间。
SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。
利用存储过程将执行秒杀的一条事务逻辑放到mysql服务端去执行,减少了客户端和服务端之间的延迟和gc时间,客户端只需要传入参数执行存储过程并根据得到的返回结果做相应的逻辑处理。存储过程比较适合于简单的逻辑。
存储过程的优点:增强SQL语言的功能和灵活性、标准组件式编程、较快的执行速度、减少网络流量、作为一种安全机制来充分利用。
但存储过程 (只在银行被大量的时候,互联网公司用的很少,但是在秒杀中用)
至此,基于SSM框架的dao、service、web、并发优化四章的秒杀系统完结,收获颇多,再次热烈祝贺自己。
三.环境准备好了之后就可以使用axios调用接口了
还是不行会报404的错误
我们在去配置一个pathRewrite,也就是路径重写,就可以解决这个404的问题了
可以看到已经得到结果了
特别注意:修改了配置文件后,把vue服务停止了在重启一下,不然是没有效果的。他这个跨域的解决方法其实就是中间加了一层代理而已
上面的引用方式在需要的地方引用,每次都要引用就会很麻烦,我们可以在main中全局引用一下,其他地方都可以用了
然后使用的时候就可以用vue的对象直接点$http出来使用了,这个名字是可以随便取得
写完手工....准备吃饭
欢迎加群讨论技术,群号: