Amp

Flutter自动注释(尾注释)、 Android Studio自动注释(尾注释)

二次信任 提交于 2020-08-04 19:06:54
一.结果如下图 二. 1.打开Android Studio设置页面或者preferences 2.选择Language&Frameworks 3.选中flutter 4.勾选show closing labels in Dart source code,然后点击ok,就可以美滋滋写Flutter了 三.拓展,如何将flutter背景色修改为黑色 来源: oschina 链接: https://my.oschina.net/songms/blog/4335186

字节Android岗面试:Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么

主宰稳场 提交于 2020-08-04 19:04:27
面试官 : Handler中有Loop死循环,为什么没有阻塞主线程,原理是什么 心理分析 :该问题很难被考到,但是如果一旦问到,100%会回答不上来。开发者很难注意到一个主线程的四循环居然没有阻塞住主线程 求职者: 应该从 主线程的消息循环机制 与Linux的循环异步等待作用讲起。最后将handle引起的内存泄漏,内存泄漏一定是一个加分项 前言 Android的消息机制主要是指Handler的运行机制,对于大家来说Handler已经是轻车熟路了,可是真的掌握了Handler?本文主要通过几个问题围绕着Handler展开深入并拓展的了解。 站在巨人的肩膀上会看的更远。大家有兴趣的也可以到Gityuan的博客上多了解了解,全部都是干货。而且他写的东西比较权威,毕竟也是小米系统工程师的骨干成员。 Questions Looper 死循环为什么不会导致应用卡死,会消耗大量资源吗? 主线程的消息循环机制是什么(死循环如何处理其它事务)? ActivityThread 的动力是什么?(ActivityThread执行Looper的线程是什么) Handler 是如何能够线程切换,发送Message的?(线程间通讯) 子线程有哪些更新UI的方法。 子线程中Toast,showDialog,的方法。(和子线程不能更新UI有关吗) 如何处理Handler 使用不当导致的内存泄露? 回答一:

【科创人新春篇】创投圈人脉王吴世春:肺炎,Long China,精益创业,回归听云…

拥有回忆 提交于 2020-08-04 18:33:22
2020年1月1日,吴世春在梅花创投的公众号上发表了 《一切应对挑战的力量都来自我们的内心》 ,文中有这样一句话: “悲观者总是正确,乐观者收获成功,希望我能成为后者。” 本文献给同样希望成为后者的朋友们。 前置彩蛋·吴世春谈肺炎影响下的商机变化: 1.受影响最大的地区除了武汉就是澳门 2.受影响最大的行业归纳为密闭空间行业,餐饮、娱乐、健身、酒店和旅游等 3.房地产行业中,写字楼和商铺未来几年会持续走衰,实体店铺更加艰难 4.医药行业走强,口罩和免手洗消毒液人手必备,类似牙刷香皂 5.健康、养生、保健行业迎来一波新机遇 6.宅商业、宅办公集体高潮,以移动电商和虚拟社交、游戏、视频、直播、导流为代表的一批网络宅商业,其中阿里、腾讯、美团和抖音是最大受益者 7.无人零售、餐饮和无人机配送崛起 8.农业和农副产品会成为下一个非常强劲的经济增长点,也符合我们国情 9.生活类超市和购物中心人流下降但营业额上升 10.衣食住行里只有食会在部分细分品类里实现大增长,比如食品超市、半成品菜、冷链配送行业等 11.股市里明星股和垃圾股严重分化,风险和机会都增大 12.知识经济慢慢复兴,知识付费和在线教育走向成熟 总之,民众对传染病的恐慌心理达到高潮,会在一两年内改变消费习惯,中国人口基数巨大,也许会间接影响世界商业结构 相信2020,看好机器人、SaaS、国潮、Glocal 科创人

ubuntu下的curl命令你知道怎么用吗?

空扰寡人 提交于 2020-08-04 18:12:21
cURL(CommandLine Uniform Resource Locator)是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。 curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。 -v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。 -m/--max-time <seconds> 指定处理的最大时长 -H/--header <header> 指定请求头参数 -s/--slient 减少输出的信息,比如进度 --connect-timeout <seconds> 指定尝试连接的最大时长 -x/--proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080 -T/--upload-file <file> 指定上传文件路径 -o/--output <file> 指定输出文件名称 -d/--data/--data-ascii <data> 指定POST的内容 --retry <num> 指定重试次数 -e/--referer <URL> 指定引用地址 -I/--head 仅返回头部信息,使用HEAD请求 1 get请求

对于linux中线程id的讨论

▼魔方 西西 提交于 2020-08-04 17:07:50
在LINUX系统中,POSIX threads库提供了pthread_t来标识一个线程,通过pthread_self()可以得到,如下: #include <iostream> #include <pthread.h> using namespace std; void* thread_func(void*) { //pthread_t other_thread_id = pthread_self(); //cout << "other_thread_id=" << other_thread_id << endl; return NULL; } int main(int argc, char *argv[]) { pthread_t t1, t2; pthread_create(&t1, NULL, thread_func, NULL); cout << t1 << endl; pthread_join(t1, NULL); //pthread_create(&t2, NULL, thread_func, NULL); //cout << t2 << endl; //pthread_join(t2, NULL); return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 得到结果:

对话机器人,电商客服的救星

佐手、 提交于 2020-08-04 17:03:35
摘要: 24小时待命的人工客服有救星了。 网购最忙碌的除了电商平台的运维人员、物流配送人员,还有一批默默贡献的普通客服人员,消费者每发出一个请求,都需要客服及时有效的反馈,在像618这样的购物节中,电商企业的客服人员更是处于24小时待命中。 不过,智能客服和NLP文本处理的应用帮助很多企业提升了运营效率和客户体验,尤其是以华为云对话机器人为代表的一系列产品,正在为这些需要大量人工客服的企业降本增效。与此同时,越来越多的商业应用场景必将带动NLP语言理解和语言生成技术取得更多突破。 智能话务机器人 谷歌在其2018年I/O大会上演示了Duplex技术,让机器人使用几乎和真人无异的声音打电话到餐馆订位,和电话另一端的人类进行多轮互动。这个很吓人的技术在会后被广为传播。有人曾经想象,当这一技术成熟落地的时候,我们在见面聊天之后,可能会和对方说:“今天我们说的那个想法很棒,让我的机器人和你的机器人晚一点打个电话讨论具体的细节吧”。 这样科幻的想法,消费者可能还需要再多等一段时间。但是,对于企业来说,华为云2018年上线的智能话务机器人,已经在多个企业场景中,实现了机器人自动打电话和人类进行多轮互动。 典型的使用场景包括,自动外呼核实用户身份信息,回访客户满意度,了解候选人求职意向、查询订单状态物流信息、营销筛选意向客户以及各种类型的预约或预订服务等

Java 源码分析-Condition

亡梦爱人 提交于 2020-08-04 17:00:57
前面对Java中的锁进行了简单的分析,锁的使用和原理整体来说还是比较简单。今天我们来分析一下Condition这个类,这个类通常来说是跟Lock搭配使用的。比如说,如果一个线程获得了Lock的同步状态(即锁),但是由于达不到运行的条件,可能不能成功运行完毕,此时一种方式就是将它自己阻塞,等到条件满足再来重新运行。   本文的参考资料来源:   1.方腾飞、魏鹏、程晓明的《Java 并发编程的艺术》   2.Cay S.Horstmann的《Java 核心技术卷 I》 1.Condition的简单实用   我们还是先来说说我们的synchronized关键字吧,我们知道每个对象都有一组自己的监视器方法,从Object类继承过来的,主要包括wait方法和notify方法,这些方法与synchronized关键字配合使用的。在Condition接口上面,也提供了类似Object的监视器方法,与Lock配合使用。   我们来看看下面的例子: public class ConditionUseCase { private Lock lock = new ReentrantLock ( ) ; private Condition condition = lock . newCondition ( ) ; public void conditionWait ( ) { lock . lock (

Java基础理解 之 HashMap

喜欢而已 提交于 2020-08-04 16:32:00
1. Q:HashMap 实现原理 A:利用key的hashCode计算出数组的下标。存储时会出现两种情况,也就是key值相同与不相同,相同的情况下会覆盖原数据,不同时则在计算好的hashcode下标位置把值放到链表中。获取则是通过hashCode的下标,再进一步判断key是否相同,从而在链表中找到对应的值。当存储超过现有容量则扩容,可以把每个空间理解为桶,桶越多执行效率越快,以空间换时间。 源码解读: static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 static final int MAXIMUM_CAPACITY = 1 << 30; //最大容量 static final float DEFAULT_LOAD_FACTOR = 0.75f; //填充比 static final int TREEIFY_THRESHOLD = 8; //当add一个元素到某个桶,其链表长度达到8时将链表转换为红黑树 static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; transient Node<k,v>[] table; //存储元素的数组 transient Set<map.entry<k,v>>

LinkedHashMap源码分析

左心房为你撑大大i 提交于 2020-08-04 16:31:25
我们都知道HashMap是无序的Map,TreeMap是有序的Map。而LinkedHashMap继承于HashMap,也是一个有序的Map,这似乎违背了Hash的理论。(注:TreeMap和LinkedHashMap的有序性是不一样的,TreeMap的根据Key的大小来排序的,而LinkedHashMap是根据put的先后顺序来排序的) 我们来看这么一个例子 public class LinkedHashMapTest { public static void main (String[] args) { Map<String , String> test = new HashMap<>() ; test.put( "化学" , "93" ) ; test.put( "数学" , "98" ) ; test.put( "生物" , "92" ) ; test.put( "英语" , "97" ) ; test.put( "物理" , "94" ) ; test.put( "历史" , "96" ) ; test.put( "语文" , "99" ) ; test.put( "地理" , "95" ) ; test.entrySet().stream().forEach(entry -> System. out .println(entry.getKey() + ":" +

深度克隆从C#/C/Java漫谈到JavaScript真复制

北慕城南 提交于 2020-08-04 16:21:01
如果只想看js,直接从JavaScript标题开始。 在C#里面,深度clone有System.ICloneable。创建现有实例相同的值创建类的新实例 克隆原理 值类型变量与引用类型变量 如果我们有两个值类型的变量,将其中一个变量的值赋给另一个,实际上会创建该值的一个副本,这个副本与原来的值没有什么关系 ——这意味着改变其中一个的值不会影响另一个变量的值。 如果是两个引用类型的变量,其中一个变量的值赋给另一个的话(不包括string类型,CLR会对其有特殊处理),并没有创建值的副本,而是使两个变量执行同一个对象 ——这意味着 改变对象的值会同时影响两个变量 。要真正地创建引用类型的副本,我们必须克隆(clone)变量指向的对象 。 C# 深度克隆 实现ICloneable接口使一个类型成为可克隆的(cloneable),这需要提供Clone方法来提供该类型的对象的副本。Clone方法不接受任何参数,返回object类型的对象(不管是何种类型实现该接口)。所以我们获得副本后仍需要进行显式地转换。 实现ICloneable接口的方式取决于我们的类型的数据成员。 如果类型仅包含值类型(int,byte等类型)和string类型的数据成员, 我们只要在Clone方法中初始化一个新的对象,将其的数据成员设置为当前对象的各个成员的值即可。事实上,object类的