JSP基础语法
什么是jsp
是动态网页,可以嵌入java 代码 ,jsp 爷爷是servlet
基础语法
1 | <%-- page指令,可以配置session,errorPage,iserrorpage等等 --%> |
jsp九大隐式对象
- Reqeust
- Response
- Session
- Application
- Config
- Page
- Out
- Exception (jsp独有)
- pageContext (jsp独有)
是动态网页,可以嵌入java 代码 ,jsp 爷爷是servlet
1 | <%-- page指令,可以配置session,errorPage,iserrorpage等等 --%> |
动物->抽象类,猴子->子类
子类:
1 | public class MainActivity extends baseActity { |
抽象类:
1 | public abstract class baseActity extends AppCompatActivity { |
快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。
如何找出数组A中的第 k 小的元素? (1<=k<=n)
if i=k then return x;
else if i<k then 找左区间的第i个最小元; //第二次递归调用本身
else 找右区间的第i-k个最小元
n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。
最优解:n个作业的加工顺序、完成n个作业所需的最短时间
最优值:T(N,0)
0018算法笔记——【动态规划】流水作业调度问题与Johnson法则
给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。
子问题最优值:m(i,j)
原问题最优值:m(1,c)
m(i,j)意为背包容量为j,可选择物品为,i,i+1,……,n时0,1问题的最优值。
是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。
一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
给予一个包含n个带值元素的数组A或是记录A0 … An−1,使得A0 ≤ … ≤ An−1,以及目标值T,还有下列用来搜索T在A中位置的子程序[3]。
给定n个矩阵:A1,A2,…,An,其中Ai与Ai+1是可乘的,i=1,2…,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。输入数据为矩阵个数和每个矩阵规模,输出结果为计算矩阵连乘积的计算次序和最少数乘次数。
eg: 快速排序
通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法
重叠子问题、最优子结构性质
eg: 背包问题
时间复杂度 $O(nlog(n))$
最优时间复杂度 $O(n)$
平均时间复杂度 $O(nlog(n))$
将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。
这个句子“this is an example of a huffman tree”中得到的字母频率来建构霍夫曼树。句中字母的编码和频率如图所示。编码此句子需要135 bit(不包括保存树所用的空间)
- 平移动画
TranslateAnimation animation=new TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)
fromXDelta 起点x
fromYDelta 起点y
toXDelta 终点x
toYDelta 终点y
以控件的中心为原点坐标,起点终点都是在原点坐标为基准
animation.setDuration(2000);
设置动画时间animation.setFillAfter(false);
设置动画结束是否停留显示(false不显示),如果为true,不能通过隐藏控件让他消失rb_anmia.setAnimationListener()
设置动画的监听(onAnimationStart
,onAnimationEnd
,onAnimationRepeat
)view.startAnimation(animation);
启动动画
- 创建一个控件类继承ViewGroup
- 复写onlayout
- 复写测量onMeasure
1 | public class ArcMenu extends ViewGroup { |
childView.layout(cl, ct, cr, cb)
- 在xml里面引用
1 | <com.xuan.hifusion.customcontrols.ArcMenu |
repat
重复发送delay
延时发送just
快速创建被观察者,插入心跳数据mergeDelayError
合并发送,错误延时
主要是创建两个被观察者,一个负责心跳的发送,另外一个负责数据的发送
1 | Observable alive=Observable.just(temp_send).delay(4000,TimeUnit.MILLISECONDS).repeat(); //心跳数据(每隔4s重复发一次) |
distinct
过滤timeout
超时发出错误retryWhen
错误重试zipWith
合并(用于统计错误重试次数)delay
延时(用于发送错误后等待一段时间继续发送)
发出动作请求,等待结果,过滤结果。
1 | public Observable<String> xuanSend(final String str){ |
concat
连接操作符(只能连接9个,但是可以嵌套)repat
循环
使用flatmap创建一个基本异步任务,用concat实现连接,用reapt实现循环
1 | //任务流 |
算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
eg: i++; //时间复杂度为O(1)
只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
eg:
1 | int sum=0; //(一次) |
因为
$\Theta(2n^2 +n+1)=n^2$($\Theta$即:去低阶项,去掉常数项,去掉高阶项的常参得到),所以$T(n)=O(n^2)$。
- $O(1)$
- $O(log(n))$
- $O(n)$
- $O(nlog(n))$
- $O(n^2)$
- $O(n^3)$
- $O(2^n)$
- $O(n!)$
- $O(n^n)$