t1

第18课 面向对象

不问归期 提交于 2019-12-05 16:37:09
面向对象 一、面向对象的设计和实现 1、定义和实现:对象可以直接对应现实世界的事物 2、面向对象的设计:OOD----Object Oriented Design   1)分析要解决的问题(现实世界的)   2)定义出各种对象----代表现实世界的对象   3)通过设计对象之间的关系和交互行为来设计系统 3、面向对象的设计与面向对象的语言   1)面向对象的设计:是一种设计思路   2)面向对象的语言:提供面向对象设计的语言支持   3)面向对象的语言能实现面向对象的设计思路 二、类和实例 1、对象的定义:类的实例化体现(如小王是人类中的具体某个人),包含属性(静态的,如身高、体重)和行为(动态的,如吃饭、睡觉)-----实际存在的个体 2、类的定义:具有共同属性和行为的事物的集合,如人类、鸟类、汽车类----抽象的 3、定义了类,就定义了对象类型(包括在系统里面的属性和行为)。类的属性和行为 三、静态属性和实例属性 1、静态属性(类属性)-----整个类所共有的属性   如:老虎这个名称(该类所有实例共享的属性) 2、实例属性----每个实例所特有的属性   1)举例:老虎的体重(每个老虎独有的属性)   2)定义在初始化方法__init__里   3)self的概念 四、知识点汇总 1、游戏分解:   1)老虎-----类     1--特征:       1--长相     

mysql分页优化

拈花ヽ惹草 提交于 2019-12-05 09:57:15
记录当前页最大id和最小id进行优化   原理是,记录住当前页id的最大值和最小值,计算跳转页面和当前页相对偏移,由于页面相近,这个偏移量不会很大,这样的话m值相对较小,大大 减少扫描的行数。   假设每一页只有10条数据,当前页码数是5,那么最大id是50,最小id是40,只要上一页和下一页 查找下一页 select * from score where sid > 50 LIMIT 10; 查找上一页 select * from score where sid > 50 LIMIT 10; 使用 between and 查找数量不一定够10条,因为id不连续   假设每一页只有10条数据,当前页码数是5,那么最大id是50,最小id是40,然后跳到第8页或者第2页 跳到第8页 以最大值为基准 select * from tb1 where nid < ( select nid from (select nid from tb1 where nid > 50 limit 30) A order by A.nid desc limit 1 ) # 通过当前页取第8页最大id order by tb1.nid desc limit 10; 以最小值为基准 select * from tb1 where nid > ( select nid from (select nid from

leetcode101 对称二叉树

狂风中的少年 提交于 2019-12-05 09:26:40
方法:递归 如果一个树的左子树与右子树镜像对称,那么这个树是对称的。 因此,该问题可以转化为:两个树在什么情况下互为镜像? 如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值。 每个树的右子树都与另一个树的左子树镜像对称。 就像人站在镜子前审视自己那样。镜中的反射与现实中的人具有相同的头部,但反射的右臂对应于人的左臂,反之亦然。 public boolean isSymmetric(TreeNode root) { return isMirror(root, root); } public boolean isMirror(TreeNode t1, TreeNode t2) { if (t1 == null && t2 == null) return true; if (t1 == null || t2 == null) return false; return (t1.val == t2.val) && isMirror(t1.right, t2.left) && isMirror(t1.left, t2.right); } 复杂度分析 时间复杂度:O(n),因为我们遍历整个输入树一次,所以总的运行时间为 O(n),其中 nn 是树中结点的总数。 空间复杂度:递归调用的次数受树的高度限制。在最糟糕情况下,树是线性的,其高度为 O(n)。因此,在最糟糕的情况下

leetcode101 对称二叉树

末鹿安然 提交于 2019-12-05 09:26:25
方法:递归 如果一个树的左子树与右子树镜像对称,那么这个树是对称的。 因此,该问题可以转化为:两个树在什么情况下互为镜像? 如果同时满足下面的条件,两个树互为镜像: 它们的两个根结点具有相同的值。 每个树的右子树都与另一个树的左子树镜像对称。 就像人站在镜子前审视自己那样。镜中的反射与现实中的人具有相同的头部,但反射的右臂对应于人的左臂,反之亦然。 public boolean isSymmetric(TreeNode root) { return isMirror(root, root); } public boolean isMirror(TreeNode t1, TreeNode t2) { if (t1 == null && t2 == null) return true; if (t1 == null || t2 == null) return false; return (t1.val == t2.val) && isMirror(t1.right, t2.left) && isMirror(t1.left, t2.right); } 复杂度分析 时间复杂度:O(n)O(n),因为我们遍历整个输入树一次,所以总的运行时间为 O(n)O(n),其中 nn 是树中结点的总数。 空间复杂度:递归调用的次数受树的高度限制。在最糟糕情况下,树是线性的,其高度为 O(n)O(n)

ReentrantLock加锁解锁过程

与世无争的帅哥 提交于 2019-12-05 08:50:53
公平锁 调用lock方法加锁 进入acquire方法获取加锁的许可 进入tryacquire 首先获取当前线程和status状态,status默认为0 假如现在t1线程进入,然后t2线程进入(t2进入时t1还没有释放锁) if c==0成立,然后判断是否需要排队,调用hasqueuedpredecessors方法 此时的头和尾都是null,此方法返回false,所以上面if(!hasqueuedpredecessors())成立,然后进行cas操作,将status改为1 然后设置持有锁的是当前线程。最后返回true。即t1拿到锁继续执行自己的业务逻辑。。。。 1、如果t2执行lock方法的时候t1已经释放锁,也就不会存在竞争,一次执行。 2、如果t1还没有释放锁,t2也会走上面的代码。 走到tryacquire方法尝试去获取锁的时候肯定失败,因为t1还在占用。方法返回false。 然后会执行addwriter方法进入队列排队。 首先创建一个节点node,节点里包含属性thread,pre,next,是一个双向链表 由于tail=null,所以会走enq方法。 此处无限循环,t==null也成立,首先会先初始化一个新的Node,node里的信息目前为空。然后设置为头部。(其实队列里的头部永远都是一个空节点,空节点的意思是有node对象,只不过里面的thread属性为空) 继续循环

入门Hadoop---HBase Shell命令操作

拈花ヽ惹草 提交于 2019-12-05 06:43:08
学习方法 表结构实操 表数据操作 学习方法 可以参考官方文档的简单示例来 点击查看 可以直接在控制台使用help命令查看 例如直接使用help命令: 从上图可以看到,表结构的操作,表数据的操作都展示了。接下来我们可以针对具体的命令使用help查看,比如:alter alter help 从图中可以看到,你可以更改列族,可以使用区域复制,可以更改多个列,当然现在只是大概看下,接下来会带领大家实际操练,大家一定要勤于动手呦~ 表结构实操 运行zookeeper,hdfs,hbase后,在控制台输入 hbase shell,进入hbase操作页面。 创建表 PS:创建表的时候需要指定表名和列族,列名不需要指定,因为例名在添加数据的时候一起添加进去的。 运行帮助命令 create help 根据展示的帮助进行操作 1.创建一个t1表,并指定三个列族(不建议这样做,通常创建列族就够了) create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'} create 't1', 'f1', 'f2', 'f3' 2.创建一个person表,并指定列族为p create 'person','p' 禁用表t1 disable 't1' 启用表t1 enable 't1' 删除表t1(PS:在删除之前先执行禁用) drop 't1' 添加列族f1

CSP-S 2019 游记

不想你离开。 提交于 2019-12-04 23:24:59
终于考完了,有点迷茫,写篇游记吧 2019-11-15 7:40 穿着NOI选手穿过的衣服,拿到了手机,然后就开始愉快地玩耍, 反正还有一天嘛 ,没什么感觉 2019-11-15 中午(吧) 到达CD,到达hotel,次饭,然后继续play phone 为什么感觉像是去玩的鸭 2019-11-15 16:00 去电子科大踩点 2019-11-16 7:30 次早饭,去考斯 2019-11-16 8:20 前十分钟,动了动鼠标,发现有点不灵敏,然后就让监考老师换了个 (PS:换了之后的鼠标用起来是真的爽啊) 2019-11-16 8:30 然后就正式开始了。。。 当时莫名其妙方的一批,拿着鼠标时手在抖,敲着键盘时手也在抖 再然后,我开始看题 看到t1后,“这道题太水了⑧,先切掉再说”(结果忘了开$unsigned$ $long$ $long$,QAQ) t1做出来后,已经是40分钟后了,突然想到教练说先把3道题都看完在做,于是开始看t2,t3 t2瞅了一眼,“感jio有点难”,然后再去看t3,“md,这是什么题啊!?” 于是果断先去做t2,仔细想了想,发现不是很难,然后用了一个小时左右做了出来 呵呵,结果思路都是错的 然后我就剩下接近两个小时的时间想t3了 $ten$ $minutes$ $later$ $...$ “啊啊啊,根本想不出正解啊QAQ,拿部分分吧” 然后看了看数据范围

B2. Character Swap (Hard Version)

∥☆過路亽.° 提交于 2019-12-04 21:45:59
链接: http://codeforces.com/contest/1243/problem/B2 题目大意: 两个字符串,判断能否通过交换为从而使得这两个字符串完全一致,如不可以的话,直接输出NO,可以的话输出YES,并且输出每一步的交换位置。 思路:如果没个字符出现的次数为偶数次的话,那么一定可以成功,否则的话一定是NO。 如果说S[i]!=T[i],假如说,S中有与T[i]相同的元素,那么直接交换就可以了,操作次数为1,在T中找S[i]操作相同。              S中没有与T[i]相同的元素,我们保证了每个元素出先的次数为偶数次,那么在T中一定会有一个元素,我们只需要把在T中找一下S[i],然后将其与S中的某个元素交换一下,然后就变成了第一种情况,操作次数为2 所以如果可以的,我们最多操作2*n次。 #include<bits/stdc++.h> using namespace std; const int N=100; struct stu{ char a; int x1; }s1[N],t1[N]; int ar[N],br[N]; int arr[N]; void solve(){ memset(arr,0,sizeof arr); int n; cin>>n; string s,t; cin>>s>>t; for(int i=0;i<n;i++){ arr

js时间练习

半世苍凉 提交于 2019-12-04 13:55:52
编写代码,将当前日期按“2017-12-27 11:11 星期三”格式输出 var t1 = new Date(); console.log(t1.toLocaleString()); const WEEKMAP = { 0:"星期天", 1:"星期一", 2:"星期二", 3:"星期三", 4:"星期四", 5:"星期五", 6:"星期六" }; function showTime() { var t1 = new Date(); var year = t1.getFullYear(); var month = t1.getMonth() + 1; var day = t1.getDate(); var hour = t1.getHours(); var minute = t1.getMinutes() < 10?"15"+t1.getMinutes():t1.getMinutes(); var week = WEEKMAP[t1.getDay()]; var strTime = ` ${year}-${month}-${day} ${hour}:${minute} ${week}`; console.log(strTime) } showTime(); 来源: https://www.cnblogs.com/shaozheng/p/11869259.html

考试总结 模拟$112$

前提是你 提交于 2019-12-04 10:39:13
考试过程 在AFO之前终于拿到了一次Rank5 开场T1第一眼天空龙?然后开始死刚T1,发现事情并没有想象中的那么简单 暴力DP不会,只会个搜索,然后开始手玩小点,样例给的很充分 首先发现了当最大值特别大的时候,ans就被两个小的限制住了 不难接着 瞎 想,另一种情况会不会能做到充分填满呢? 然后写上去就过对拍了,很开心,不过大点写不出来暴力,而且不会证明,感觉并不稳 T2一看找环,就想到了昨天刚刚听zzyy说了怎么topo找环,又很开心 第一次写getchar的读入,根本就不知道回车怎么写,只好写空格,所以最后也没有被卡 T3暴力很好写,写的时候已经飘了,以为230很高了,然后开始各种yy.... 写完暴力最后40min就去T1,T2静态查错,T3dp没什么思考 题解 T1「贪心」 abc升序 可以发现2*(a+b)<=c的情况就是a+b 否则每次一定可以全部填满,即(a+b+c)/3 T2「拓扑」 拓扑找环,注意读入 windos下回车是‘\r' linux 是’\n' T3「DP」 首先正反两遍最短路,跑出来dis[i],表示从i到B+1并返回的距离和 现在只要将前b个分组,每一组中每个点的贡献是dis×(组内元素个数-1) 定义f[i][j]表示考虑到第i个点,已经有了j个组 从小到大排序后,用调整法可证最优解一定是连续的一段 然后可以枚举到了那个点,分的组数和转移点