嵌套

【学习笔记】Android性能优化----->布局优化

本秂侑毒 提交于 2019-11-27 13:46:25
1.AndroidUI渲染机制 人眼所感觉的流畅画面,需要画面的帧数达到40帧每秒到60帧每秒 在Android中,系统通过VSYNC信号触发对UI的渲染/重绘,其间隔时间是16ms,这个16ms其实就是1000ms中 显示60帧画面的单位时间,即1000/60 如果系统每次渲染的时间都保持在16ms之内,那我们看见的UI界面将是非常流畅的 但这也就需要将所有程序的逻辑都保证在16ms之内 如果不能在16ms内完成绘制,那么就会造成丢帧现象,即当前该重绘的帧被未完成的逻辑阻塞 例如一次绘制任务耗时20ms,那么在16ms系统发出VSYNC信号时就无法绘制,该帧就被丢弃,等待下次信号才开始绘制, 导致16*2ms内都显示同一帧画面,这就是画面卡顿的原因 Android系统提供了检测UI渲染时间的工具,打开“开发者选项”,选择“Profile GPU Rendering”, 并选中“On screen as bars”的选项,这时候在屏幕上将显示一些条形图。 每一条柱状线包含三部分:蓝色代表测量绘制Display List的时间,红色代表OpenGL渲染Display List所需要的时间, 黄色代表CPU等待GPU处理的时间。 中间的绿色横线代表VSYNC时间16ms,需要尽量将所有条形图都控制在这条绿色之下。 2.避免Overdraw Overdraw,过度绘制会浪费很多的CPU

前端-css入门

倖福魔咒の 提交于 2019-11-27 13:46:06
CSS cascading(层叠) style(样式) sheet(表) css注释 /* 注释内容 */ 快捷键:ctrl ? 引入方式 <!-- 1.行间样式 --> <div style="width:100px;height:100px;"></div> <!-- 2.页面集 --> <head> <style> div{ background-color: red; height: 100px; width: 100px; } </style> </head> <!-- 3.外部css文件(另建css文件) --> <link rel="stylesheet" href="css文件路径" > css选择器     基本选择器 元素选择器 div{ } id选择器 #demo 在html中(id="demo") 类选择器 .demo 在html中(class="demo") 通用选择器 *{ } 组合选择器 后代选择器 div a 找div下所有的a 直接子元素选择器 div>a 只找下一代a 兄弟选择器 div.a 只找下一个兄弟 弟弟选择器 div~a 找到所有兄弟 属性选择器 [title] 分组选择器 demo1,demo2 伪类选择器 a:link a:visited a:hover a:sctive input:focus 伪元素选择器 p::before p

flutter NestedScrollView 嵌套 Easyfresh(child: ListView) 顶部出现小块空白区域解决方案

雨燕双飞 提交于 2019-11-27 12:52:33
之前没有使用NestedScrollView 嵌套Easyfresh,直接在整个页面包含Easyfresh,没有出现顶部小块区域空白,就没有仔细的去研究研究,后面发现了这个问题,开始想使用margin为负值的办法,最后发现,margin就是padding的嵌套版,没法,最后才发现了 listview本身的padding是有值的,设置成0 ,但是我还是不太明白为什么没有嵌套NestedScrollView的时候那个顶部就没有,这点先记下来吧。 来源: https://blog.csdn.net/javaskyhr/article/details/99676577

FreeRTOS 任务栈大小确定及其溢出检测

帅比萌擦擦* 提交于 2019-11-27 10:19:11
以下转载自 https://www.cnblogs.com/yangguang-it/p/7123727.html FreeRTOS 的任务栈设置 不管是裸机编程还是 RTOS 编程,栈的分配大小都非常重要。 局部变量,函数调用时的现场保护和返 回地址,函数的形参,进入中断函数前和中断嵌套等都需要栈空间,栈空间定义小了会造成系统崩溃。 裸机的情况下,用户可以在这里配置栈大小: 为什么是堆中的?因为我们采用的就是动态创建任务的方式。如果静态创建,就和我们自己开辟的空间有关,通常静态创建任务用数组作为容器,但是通常静态创建的方式我们都不使用。 FreeRTOS 的系统栈设置 上面跟大家讲解了什么是任务栈,这里的系统栈又是什么呢?裸机的情况下,凡是用到栈空间的地方 都是在这里配置的栈空间: 在 RTOS 下, 上面两个截图中设置的栈大小有了一个新的名字叫系统栈空间 ,而任务栈是不使用这里的空间的。 任务栈不使用这里的栈空间,哪里使用这里的栈空间呢?答案就在中断函数和中断嵌套。  由于 Cortex-M3 和 M4 内核具有双堆栈指针,MSP 主堆栈指针和 PSP 进程堆栈指针,或者叫 PSP 任务堆栈指针也是可以的。在 FreeRTOS 操作系统中,主堆栈指针 MSP 是给系统栈空间使用的,进 程堆栈指针 PSP 是给任务栈使用的。 也就是说,在 FreeRTOS 任务中

C#中TransactionScope的使用方法和原理

╄→гoц情女王★ 提交于 2019-11-27 10:10:06
在.net 1.1的时代,还没有TransactionScope类,因此很多关于事务的处理,都交给了SqlTransaction和SqlConnection,每个Transaction是基于每个Connection的。这种设计对于跨越多个程序集或者多个方法的事务行为来说,不是非常好,需要把事务和数据库连接作为参数传入。 在.net 2.0后,TransactionScope类的出现,大大的简化了事务的设计。示例代码如下: static void Main(string[] args) { using (TransactionScope ts = new TransactionScope()) { userBLL u = new userBLL(); TeacherBLL t = new TeacherBLL(); u.ADD(); t.ADD(); ts.Complete(); } } 只需要把需要事务包裹的逻辑块写在using (TransactionScope ts = new TransactionScope())中就可以了。从这种写法可以看出,TransactionScope实现了IDispose接口。除非显示调用ts.Complete()方法。否则,系统不会自动提交这个事务。如果在代码运行退出这个block后,还未调用Complete(),那么事务自动回滚了

Hive Sql 嵌套 case when(if else)

岁酱吖の 提交于 2019-11-27 08:07:15
一般我们使用 hive sql 中的case when是以下 两种形式 CASE a WHEN b THEN c [ WHEN d THEN e ] * [ ELSE f ] END CASE WHEN a THEN b [ WHEN c THEN d ] * [ ELSE e ] END 在将xgb模型转化为sql的过程中,用嵌套判断模式,会减少计算量,因此搜索了一下如何在hive中实现嵌套格式的if-else判断,以下是测试语句,证明嵌套是支持的。 select case when ( 7 < 22.1 ) then case when ( 7 < 12.5214 ) then case when ( 7 < 6.1 ) then case when ( 7 >= 33.05 ) then - 0.000374448 else 0.0283531 end else case when ( 7 < 4.6625 ) then 0.0502409 else - 0.0232666 end end else case when ( 7 >= 0.0714286 ) then case when ( 7 < 83.75 ) then 0.0427497 else - 0.0530864 end else case when ( 7 >= 878.333 ) then - 0

android LinearLayout布局嵌套覆盖问题

旧时模样 提交于 2019-11-27 01:37:44
在做android UI布局时,用了LinearLayout嵌套,发现效果并不如我预料一般 查了下资料,说是要设置layout_weight属性 资料说得不是很清楚,也没仔细看,就去弄,结果越弄越混乱。 于是静下心来,自己写xml测试,发现如下。 我用eclipse开发,用android Common XML Editor 使用快捷键alt+/ 一、如果LinearLayout是最外面的一层,它是不会弹出layout_weight属性的 换句话说最外层不能用layout_weight 二、xml布局如下 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content"

045 函数的嵌套

南笙酒味 提交于 2019-11-27 00:06:23
函数的嵌套 函数的嵌套其实就是在一个函数内部在定义一个函数 1.函数的嵌套定义 一旦在函数内部定义一个函数,那么函数体内的函数,无法在函数外部使用 def f1(): def f2(): print('from f2') f2() f2() # # NameError: name 'f2' is not defined def f1(): def f2(): print('from f2') f2() f1() # from f2 通过给一个函数传参即可求得某个圆的面积或者圆的周长 import cmath def circle(r,choice): def area(): return cmath.pi*r**2 def perimeter(): return 2*cmath.pi*r if choice == 'area': return area() else: return perimeter() res = circle(3,'perimeter') print(res) # 18.84955592153876 res = circle(3,'area') print(res)# 28.274333882308138 2.函数的嵌套调用 通过函数嵌套求几个数的大小 def max2(x,y): if x > y: return x else: return y res =

js循环嵌套,打印图形

时光毁灭记忆、已成空白 提交于 2019-11-26 23:48:11
/* ***** ***** ***** ***** */ for (var i = 1;i<=4;i++) {//行 for (var j = 1;j<=5;j++) {//列 document.write("*") } document.write("<br>") }    /* * ** *** **** ***** */ for (var i = 1;i<=5;i++) { for (var j = 1;j<=i;j++) { document.write("*") } document.write("<br>") }    /* **** *** ** * */ for (var i = 1;i<=4;i++) { for (var j = 1;j<=5-i;j++) { document.write("*"); } document.write("<br>") }    /* * *** ***** ******* ***** *** * */ //上半部分 for (var i = 1;i<=4;i++) { //先输出空格 for (var j = 1;j<=4-i;j++) { document.write(" "); } for (var j = 1;j<=2*i-1;j++) { document.write("*"); } document.write("

03.Mybatis优化

有些话、适合烂在心里 提交于 2019-11-26 23:22:44
对动态代理方式的代码进行进一步优化: 1.将conf.xml文件中对数据库的配置信息以db.properties的形式抽离出来 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/person?serverTimezone=UTC username=root password=root <configuration> <properties resource="db.properties" /> //把抽离出去的properties文件加载进来 <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> //用类似el表达式的方式进行引用 <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> <