synchronized函数: 在方法的声明前加入synchronized关键字实现加同步锁. 这个方法在同一时刻只能被一个线程访问,从而保证了多线程访问的安全性。 然而,当一个方法体规模非常大时,把该方法声明为synchronized会大大影响程序的执行效率。
synchronized代码块: 可以把任意的代码段声明为synchronized,也可以指定上锁的对象,有非常高的灵活性。
@Test | |
public void algorithm() throws Exception { | |
// input: | |
int n = 3, m = 4; | |
int[] start = new int[]{0, 5, 2}; | |
int[] end = new int[]{4, 7, 8}; | |
int[] query = new int[]{1, 9, 4, 3}; | |
// output: [1,0,1,2] |
<?php | |
/** | |
* Created by PhpStorm. | |
* User: edwin | |
* Date: 2017/7/1 | |
* Time: 01:29 | |
*/ | |
class Response | |
{ |
<?php | |
/** | |
* 处理接口公共业务 | |
* Created by PhpStorm. | |
* User: edwin | |
* Date: 2017/7/2 | |
* Time: 16:50 | |
*/ | |
require_once("./Response.php"); |
<?php | |
/** | |
* 数据库配置文件 | |
* Created by PhpStorm. | |
* User: edwin | |
* Date: 2017/6/22 | |
* Time: 19:44 | |
*/ | |
require 'db_config.php'; |
<?php | |
header("content-type:text/resources;charset=utf-8"); | |
define("DB_HOST", '127.0.0.1:3306'); | |
define("DB_USERNAME", 'root');//数据库的用户名 | |
define("DB_PASSWORD", 'root');//数据库的密码 | |
define("DB_NAME", 'hair_db');//数据库的名称 | |
define("DB_CHARSET", 'utf8');//编码方式 |
internal object MapTest { | |
@JvmStatic | |
fun main(args: Array<String>) { | |
/*1、准备数据**/ | |
val sku1 = Student(1L, "p1", 100L) | |
val sku2 = Student(2L, "p2", 101L) | |
val sku5 = Student(2L, "p5", 100L) | |
val sku3 = Student(3L, "p3", 102L) | |
val sku4 = Student(3L, "p3", 102L) |
1、什么是ANR 如何避免它?
如果耗时操作需要让用户等待,那么可以在界面上显示进度条。
2、View的绘制流程;自定义View如何考虑机型适配;自定义View的事件
3、分发机制;View和ViewGroup分别有哪些事件分发相关的回调方法;自定义View如何提供获取View属性的接口;
4、Art和Dalvik对比;虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派);JVM内存模型及类加载机制;内存对象的循环引用及避免;
4、ddms 和 traceView;
5、内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象;内存泄露场景及解决方法;
class Main { | |
public static void main(String[] args) { | |
Student.main(); | |
} | |
static class Person<T> { | |
} |