1.sql顺序
顺序4:SELECT *(all),列名,运算符,distinct(除去重复记录)
顺序1:FROM 表名,视图,别名
顺序2:WHERE 条件表达式
顺序3:GROP BY 列名 having 条件表达式
顺序5:ORDER BY 列名 asc(默认升序)desc(降序)
2.位运算符号
按位与运算符(&)
参加运算的两个数,按二进制位进行“与”运算。
运算规则:只有两个数的二进制同时为1,结果才为1,否则为0。(负数按补码形式参加按位与运算)
即 0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1。
按位或运算符(|)
参加运算的两个数,按二进制位进行“或”运算。
运算规则:参加运算的两个数只要两个数中的一个为1,结果就为1。
即 0 | 0= 0 , 1 | 0= 1 , 0 | 1= 1 , 1 | 1= 1 。
例:2 | 4 即 00000010 | 00000100 = 00000110 ,所以2 | 4的值为 6 。
异或运算符(^)
参加运算的两个数,按二进制位进行“异或”运算。
运算规则:参加运算的两个数,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
即 0 ^ 0=0 , 0 ^ 1= 1 , 1 ^ 0= 1 , 1 ^ 1= 0 。
例: 2 ^ 4 即 00000010 ^ 00000100 =00000110 ,所以 2 ^ 4 的值为6
总结:
& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<< 左移 用来将一个数的各二进制位全部左移N位,右补0
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
3.数组常用方法:
数组填充:
Arrays.fill(数组名,值)
Arrays.fill(数组名,开始下标,结束下标,值)
数组复制:
Arraycopy(数组a,开始复制下标,复制到数组b,开始复制下标,复制长度)
数组比较:
Arrays.equals(数组1,数组2)
数组排序:
Arrays.sort(数组)或者Arrays.sort(数组开始下标,数组结束下标)
数组中搜索指定元素
binarySearch(数组,指定元素)
binarySearch(数组,开始位置,结束位置,指定元素)
数组转化为字符串:
toString(数组类型,数组名)
4.字符串常用方法:
https://blog.csdn.net/xupt_rl/article/details/89474033
split()分割字符串返回字符串数组
trim()去除左右两端空格
5.Cookie规范:
Cookie大小上限4KB
一个服务器最多在客户端浏览器上保存20个Cookie
一个浏览器最多保存300个CookieCookie是通过HTTP
请求和响应头在客户端和服务器端传递的
6.JSP入门
6.1:java Server Pages是javaweb服务器端的动态资源,他与HTML
页面的作用是相同的,显示数据 和获取数据
6.2:JSP=html+Java脚本(代码片段)+JSP动态标签
6.3:JSP脚本就是java片段
分为3种:
<%...%>:java语句
<%=...%>:java表达式// 与out.print()功能相同,向客户端输出
<%!...%>:java定义类成员
6.4原理:
是特殊的Servlet,当jsp页面首次被访问时,容器Tomcat会先把
jsp编译成Servlet,然后再去执行Servlet
7.Cookie概述
Cookie在HTTP中他表示服务器送给客户端浏览器的Cookie,就是
一个键和一个值构成的,随着服务器端的响应送给客户端浏览器,
然后客户端浏览器会把Cookie保存起来,当下一次再访问的时候
把Cookie再发送给服务器
Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对,
客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)
当客户端向服务器发送请求时会把所有这个服务器Cookie包含在请求中
发送给服务器,这样服务器就可以识别客户端了。
8.进程和线程
8.1:进程包括线程,程序执行状态叫进程,线程可以共享资源,一旦出现
共享资源,必须注意线程安全
8.2:分类:
守护线程:典型就是垃圾回收GC
用户线程:当JVM中都是守护线程,当前JVM将退出
8.3线程继承的两种方式:
1.继承Thread类,重写其中run方法,
完成了两步:启动子线程,调用子线程的run方法
2.实现了Runnable接口,实现其中的run方法,但是源码没有start方法
需要自己手动写Thread 线程名=new Thread(new出来的类名),然
后再调用这个线程的start方法才能启动线程
3.线程安全:
资源共享的操作会出现线程安全问题,比如售票问题
解决方法:让同一时刻共享数据操作的线程减少为有且只有一个
3.1同步代码块
synchronized(同步监视器,即锁){需要被同步的代码}
3.2同步方法
只有实现方式的线程可以用,继承方式的线程不可以用
4.死锁问题
产生:不同线程分别占用对方需要的同步的资源,都在等待双方
放弃同步资源