博文

实体类实现Serializable的作用

**导读:**最近在做项目的过程中,发现一个问题,就是我们最开始的时候,传递参数包括返回类型,都有map类型。但是由于map每次都要匹配key值,很麻烦。所以在之后就将参数传递和返回类型全都改成了实体bean,并且让每个bean都实现了Serializable接口。然后,在这里的时候,就有点疑惑。首先:为什么要进行序列化;其次:每个实体bean都必须实现serializabel接口吗?最后:我做一些项目的时候,没有实现序列化,同样没什么影响,然后现在做项目需要序列化,到底什么时候应该进行序列化操作呢?本篇文章,是我对于序列化这个话题的一点小小的思考,可能还不太成熟,请每一个路过的人不吝赐教,在此,先谢过了!一、什么是序列化
In computer science, in the context of data storage, serialization is the process of translating data structures or object state into a format that can be stored (for example, in a file or memory buffer, or transmitted across a network connection link) and reconstructed later in the same or another computer environment.[1] When the resulting series of bits is reread according to the serialization format, it can be used to create a semantically identical clone of the original object.那我也有看过很多的博客包括书,但是我之前其实一直不太理解这个序列化,虽然一直都在用。今天在看资料 的时候,发现导致这种现象的原因,可能是我之前看的一些介绍里面,忽略了一个很关键的因素:object state info对象的状态信息 。也就是说,其实序列化,它是完整的保存了某一状态下的对象信息,是一个整体,而不是零散的!我在一个IBM工程师的博客里面看到一个说法,我感觉对于我理解序列化很有…

SQL Server2017(七)视图

视图是从一个或几个基本表(或视图)导出的表,它与基本表不同,是一个虚表。数据库值存放视图的定义,不存放视图对应的数据,这些数据仍然存放在原来的基本表中。
视图一经定义,就可以和基本表一样被查询,被删除,也可以在视图上再定义新的视图,但对视图的(增、删、改)操作有一定的限制。定义视图建立试图
其一般格式为CREATE VIEW <视图名> [(<列名>)[,<列名>]……)] AS <子查询> [WITH CHECK OPTION]; 组成视图的属性列名或者全部省略,或者全部指定,没有第三种选择,如果省略的视图的属性列名,则隐含该视图由子查询中SELECT 子句目标列中的诸字段组成。
下列三种情况,必须明确指定视图的属性列名:某个目标列不是单纯的属性名,而是聚集函数或列表达式多表连接时选出了几个同列名作为视图的字段需要在视图中为某个列启用新的更合适的名字例1CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS'; 建立信息系学生视图,要求进行修改和插入操作时仍需保证该视图只有信息系的学生CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept='IS' WITH CHECK OPTION; 若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,则称这类视图为行列子集视图
例2CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept='IS' AND Student.Sno=SC.Sno AND SC.Cno='1'; 视图不仅可以建立在一个或多个基本表,也可以建立在一个或多个已经定义好的视图上,或建立在基本表与视图上例3CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90; 定义视图时可以根据…

SQL Server2017(六)空值的处理

空值就是不知道、或是不存在、或是无意义的值
SQL语句允许某些元组在某些情况下取空值:该属性应该有一个值,但目前不知道它的具体值该属性不应该有值由于某种原因不便于填写空值是一个很特殊的值,具有不确定性空值的产生
例1INSERT INTO SC(Sno,Cno,Grade) VALUES('201215126','1',NULL); 或 INSERT INTO SC(Sno,Cno) VALUES('201215126','1'); 例2UPDATE Student SET Sdept=NULL WHERE Sno='201215200'; 另外,外连接和空值的关系运算也会产生空值空值的判断
IS NULLIS NOT NULL
例SELECT * FROM Student WHERE Sname IN NULL OR SEX IS NULL OR Sage IS NULL OR Sdept IS NULL; 空值的约束条件属性定义(或者域定义)中有NOT NULL 约束条件的不能取空值,加了UNIQUE 限制的属性不能取空值,码属性不能取空值。空值的算术运算、比较运算和逻辑运算
例1SELECT Sno FROM SC WHERE Grade<60 AND Cno='1'; 例2SELECT Sno FROM SC WHERE Grade<60 AND Cno='1' UNION SELECT Sno FROM SC WHERE Grade IS NULL AND Cno='1'; 或 SELECT Sno FROM SC WHERE Cno='1' AND (Grade<60 OR Grade IS NULL);

SQL Server2017(五)数据更新

数据更新一、插入数据1.插入元组
字符串常数要用单引号括起来
例1INSERT INTO Student(Sno,Sname,Ssex,Sdept,Sage) VALUES('201215126','陈东','男','IS',18); 例2INSERT INTO Student VALUES('201215128','张成明','男',18,'SC'); 例2中只指出了表名,没有指出属性名,这表示新元组要在表的所有属性列上都指定值,属性列的次序与CREATE TABLE中的次序相同。VALUES子句对新元组的各属性列赋值,一定要注意值与属性列要一 一对应。
例3INSERT INTO SC(Sno,Cno) VALUES('201215128','1'); 2.插入子查询结果
例CREATE TABLE Dept_age (Sdept CHAR(5), Avg_age SMALLINT); INSERT INTO Dept_age SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept 二 、修改数据例1:修改某一个元组的值UPDATE Student SET Sage=22 WHERE Sno='201215121' 例2:修改所有元组的值UPDATE Student SET Sage=Sage+1 例3:带子查询的修改语句UPDATE SC SET Grade=0 WHERE Sno IN (SELECT Sno FROM Student WHERE Sdept='CS') 三、删除语句例1:删除某一个元组的值DELETE FROM Student WHERE Sno='201215128' 例2:删除多个元组的值DELETE FROM SC 例3:带子查询的删除语句DELETE FROM SC WHERE Sno IN( SELECT Sno FROM Student WHERE Sdept='CS')

变量和简单数据类型

变量和简单数据类型字符串字符串中可以包含双引号和单引号
使用方法修改字符串的大小写title() 以首字母大写的方式显示每个字符 upper() 将字符串全部改为大写 lower() 将字符串全部改为小写 合并(拼接)字符串
在python中使用加号(+)来合并字符串
添加空白: 制表符:\t
换行符:\n
删除空白:
除去字符串末尾包含的空白: rstrip(),该方法对空白的删除只是暂时的,要永久删除字符串中的空白,需要将删除空白后的字符串结果存回到原来的变量中
除去字符串开头的空白: lstrip()
同时剔除字符串两端的空白: strip()
**Python 2中的print 语句:**在Python2中,无需将要打印的内容放在括号内数字整数
浮点数
函数str(): 让python将非字符串值表示为字符串
Python2中的整数:
在python2中,整数除法的结果只包含整数部分,不包含小数部分,小数部分被直接删除;
在Python 2中,若要避免这种情况,务必确保至少有一个操作数为浮点数,这样结果也将为浮点数注释在Python中,注释用井号(# )标识
编写注释的主要目的是阐述代码要做什么,以及是如何做的;
通过编写注释,以清晰的自然语言对解决方案进行概述,可节省很多时间;
要成为专业程序员或与其他程序员合作,就必须编写有意义的注释;
如果不确定是否要编写注释,就问问自己,找到合理的解决方案前,是否考虑了多个解决方案。如果答案是肯定的,就编写注释对你的解决方案进行说明吧;
如果程序太简单,实在没有什么需要说明的,就在程序文件开头加上你的姓名和当前日期,再用一句话阐述程序的功能。Python之禅The Zen of Python, by Tim PetersBeautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren’t special enough to break the …

那些踩过的Java web的坑(不断更新)

昨天试着写一个简单的用户登录验证,结果不管怎么样始终是405错误:方法不被允许

折腾了大半天,你能想象吗???折腾了两个钟,最后发现,我的doGet和doPost方法全部是小写!!!doget,dopost对,没错,就是这么简单的一个错误,我…

这个错误我必须纪念一下😭

写一篇测试文章

本篇文章仅为测试.