等待的时间一时兴起,突然想写一篇原创,聊一聊我自己在写Android权限请求代码时的一些技术心得。 正如这篇文章标题所描述的一样,在Android中请求权限从来都不是一件简单的事情。为什么?...这种写法麻烦吗?这个就仁者见仁智者见智了,有些朋友可能觉得这也没多少行代码呀,有什么麻烦的。但我个人认为还是比较麻烦的,每次需要请求运行时权限时,我都会觉得很心累,不想写这么啰嗦的代码。...到现在为止,我们才算是把一个“简单”的权限请求流程用比较完善的方式处理完毕。然而代码写到这里真的还算是简单吗?每次申请运行时权限,都要写这么长长的一段代码,你真的受得了吗?...这也就是我编写PermissionX这个开源库的原因,在Android中请求权限从来都不是一件简单的事情,但它不应该如此复杂。...我们只需要在permissions()方法中传入要请求的权限名,在onExplainRequestReason()和onForwardToSettings()回调中填写对话框上的提示信息,然后在request
Java 的 volatile关键字对可见性的保证 Java 的 volatile关键字在保证可见性之前的所做的事情 为什么volatile关键字有时候也不是足够的 什么时候volatile足够了...Java 的 volatile关键字对可见性的保证 Java的volatile关键字可以保证变量的可见性。说起来很简单,但具体是什么意思呢?...Paste_Image.png 如果变量没有声明为volatile,那么就无法知道,变量什么时候从主存中读取到cpu的cache中,有什么时候从cache中写回到主存中。...如果这个counter变量没有被声明为volatile,那么就无法确认,什么时候counter的变量的值会从cpu的cache中写回到主存中,这就意味着,counter变量的值在cpu的cache中的值可能和主存中不一样...counter = 0; } ** 将一个变量声明为volatile就可以保证写操作,其他线程对这个变量的可见性 ** Java 的 volatile关键字在保证可见性之前的所做的事情 从java5
这还不是最致命的,最致命的是我并不觉得我每天所做的事情会对社会有什么贡献。...使情况更糟糕的是,这里的工作并不容易,而我又是一个认真做事情的人,就算我不喜欢不认可这边的工作内容,我仍然会努力去把我的任务完成好,这就使得我更加痛苦,每天在自己内心的斗争中努力挣扎着工作。...在学习这门课程之前,我对TCP的理解基本上停留在对中文教材上相关内容的背诵阶段,什么三次握手四次挥手之类的,说实在的与八股文无异;但在完成这门课的课程作业的过程中,我实实在在地较深入地理解了为什么TCP...我更加明确了自己未来的道路,我知道,做(在我看来)对社会产生贡献的事业,这就是我想做的事情。 关于未来的思考 在找工作之前,我纠结着之后做什么行业,还是在国内读个博士。...其中有一位好友xj在腾讯做数据库,他和我的交流尤其得多。印象最深的一次是2020年6月的时候他在做mysql的并发写入优化。
状态引擎接受在历史数据批量处理(研发阶段)中编写的表达式或函数作为输入,避免了在生产环境中重写代码的高额成本,以及维护研发和生产两套代码的负担。...由于在静态的历史数据集上开发和验证高频因子远比在流数据上开发更为简单,响应式状态引擎显著降低了流式高频因子的开发成本和难度。...状态函数的优化,也就是增量方式的流式实现非常关键。下列状态函在DolphinDB的响应式状态引擎均得到了优化实现。目前,状态引擎不允许使用未经优化的状态函数。...在后续的版本中,DolphinDB将允许用户用插件来开发自己的状态函数,注册后即可在状态引擎中使用。 3.4 自定义状态函数 响应式状态引擎中可使用自定义状态函数。...4、流批统一解决方案 金融高频因子的流批统一处理在DolphinDB中有两种实现方法。 第一种方法:使用函数或表达式实现金融高频因子,代入不同的计算引擎进行历史数据或流数据的计算。
stopService(intent); break; } } }; } 在主函数中,我们对两个按钮进行了单击事件监听...这里的服务,我们仔细思考后可以发现,当这个服务启动之后,我们是无法对其进行具体的操作的,什么意思呢,就是我们启动了这个服务之后,这个服务就去做自己的事情了,我们无法知道服务在做什么事情,或者是做的事情的进度是多少了...那么怎么解决呢,还记得MyService 类中的 onBind 方法吗,我们之前说过,这个方法当当前服务和 Activity 绑定的时候会调用。...就可以得到这个内部类的实例的引用 * 之后我们可以在Activity 中可以通过得到的这个内部类的引用来获取我们正在做的事情的信息, * 并且可以通过这个内部类提供的方法加以控制,这样就实现了...关于服务的用法这里介绍的只是入门级别的,要想对服务理解更深,日后还得多加学习。 如果博客中有什么不正确的地方,还请多多指点。 谢谢观看。。。
DolphinDB 作为分布式计算、实时流计算及分布式存储一体化的高性能时序数据库,在因子的存储、计算、建模、回测和实盘交易等场景中有着得天独厚的优势。...DolphinDB 包含 row 系列函数以及各类滑动窗口函数,在下面两个因子计算例子中,原本复杂的计算逻辑,在面板数据中,可以用一行代码轻松实现。...因此,在面板计算中合理应用 DolphinDB 的内置函数,可以从不同维度智慧计算。...,多因子投资模型的搭建可分为:(1)简单加权法;(2)回归法;两种方式均可以在 DolphinDB 中实现。...在调试大任务量的计算完成后,可通过 undef 函数将变量赋值为 NULL,或者关闭 session 来及时释放变量的内存。
窗口函数除了能用增量算法实现提升性能外,功能上的要求通常包括:(1)能实现滑动、滚动、累计以及任意定制的窗口类型,(2)能按行数和时间两种度量来推进窗口,(3)多个窗口函数能嵌套执行完成复杂的指标计算。...DolphinDB操作简单,可扩展性强,具有良好的容错能力及优异的并发访问能力。DolphinDB 可以在Linux或Windows系统、单个节点或集群、本地或云服务器中部署。...大多数时序数据库更侧重于数据存储和较为简单的计算,DolphinDB 在设计理念上将计算置于了和存储同等重要的位置。以下计算能力可以很好地应用在行情中心建设上。...支持均值、最大、最小、中间值等较为简单的窗口计算;也支持最小二乘数估计、person 相关性、协方差、标准差、移动加权平均等较为复杂的函数。满足技术指标中的各类复杂计算。...向量化编程 向量化编程是DolphinDB中最基本的编程范式。DolphinDB 中绝大部分函数支持向量作为函数的入参。
事实上,我们可以使用相同的技术在Python中实现VLOOKUP、HLOOKUP、XLOOKUP或INDEX/MATCH等函数的功能。...此外,我们可以使用INDEX/MATCH组合,但这需要更多的输入。 在最新的Office中,Microsfot推出了XLOOKUP公式,但它只在Office 365中可用。...这就是为什么很多人喜欢Python的原因。...在第一行中,我们用一些参数定义了一个名为xlookup的函数: lookup_value:我们感兴趣的值,这将是一个字符串值 lookup_array:这是源数据框架中的一列,我们正在查找此数组/列中的...图3 公式完成,现在“向下拖动” 因为我们用代码做所有事情,而且没有GUI(图形化用户界面),所以我们不能简单地双击某个东西来“拖拽”公式。
前段时间主要是忙于新书的事情,时间比较紧张。而现在新书已经完稿,剩下的事情就都是出版社的工作了,那么我又可以抽出时间来写写博客了。...当然,我事先已经在SD的根目录中准备了一个叫Pixels.mp4的视频文件。...()方法中我们先是获取到了DanmakuView控件的实例,然后调用了enableDanmakuDrawingCache()方法来提升绘制效率,又调用了setCallback()方法来设置回调函数。...有了DanmakuContext和BaseDanmakuParser,接下来我们就可以调用DanmakuView的prepare()方法来进行准备,准备完成后会自动调用刚才设置的回调函数中的prepared...LinearLayout中并没有什么复杂的控件,只有一个EditText用于输入内容,一个Button用于发送弹幕。
本次主要是聊聊关于 web 中间件, 分为如下四个方面 什么是 web 框架中间件 为什么要使用 web 中间件 如何使用及其原理 哪些场景需要使用中间件 开门见山 web 中间件是啥 Web 框架中的中间件主要指的是在...明明就能直接请求到具体的路由,为什么要在它之前加一个中间件? 这是在增加程序复杂度?有啥事情不能直接在路由中做的吗?...我们可以带着这个问题继续往下看 为什么要使用中间件 一般很多技术或者很多组件大多是因为现有的工具无法满足日益正常的需求而慢慢出现的 例如 在 web 中需要对多个路由或者业务进行解耦,或者需要在多个路由之前或者之后加上一些统一的逻辑...,这个时候就需要中间件来进行处理 又例如 我们的 web 服务需要有限流功能 如果我们 web 框架中只有几个路由,那么很简单,可能你会去对每个路由进行限流,那么如果是达到几十上百个路由你还会这样做吗?...正常人自然是不会的,我们会想办法寻求简单高效且保证质量的方式,明明使用一个中间件就能搞定的事情,何必去做无意义的卷王 多多提高效率去做更多有意义的事情不香吗?
你以为面试中的 defer 是在考 defer 吗?并不是,其实是在考 函数变量的作用域 以下这是 go语言爱好者 97 期的一道题目。要求很简单, 代码执行 i, j 的值分别是什么。...核心: 函数变量作用域 defer 执行时间 闭包 指针 知识点 这里面所有的内容都可以在 Effective Go 中解决 贪婪算法 什么是贪婪算法, 就是找到局部最优解, 合并后就是全局最优解。...怎么找局部最优解, 就是要 对事情进行抽象,掌握事情的本质 。 defer 延迟执行 defer 就是语句进行压栈(FILO)处理, 延迟到 在函数 return 之前执行 执行。本身没什么难点。...这是一种不寻常但有效的方法来处理诸如必须释放资源的情况,而不管函数采用哪条路径返回。 因此 defer 有什么好考的, 而且实际场景代码也不会那样写(违反了可读性的这一基本之准则)。...所以通常面试中有 defer 的问题都不是在考 defer , 只不过是披上了 defer 的狼皮。 函数及返回值 其实 go 中关于函数返回花样还是挺多的。
) 下面我想快速浏览一下PyData社区的发展过程。 ? 当中有些工具可能你使用过。如果你刚接触这个社区,你可能没用过这些工具。我将简单的总结一下我认为在PyData中,如今十分重要的工具。...我演讲的时Fernando Perez在观众席中,他把我的整个演讲输入到Notebook中。演讲结束后他向我走过来说”嗨,我是Fernando。你知道Notebook吗?"...但基本上任何数值运算SciPy都可以完成。 ? 这里有一个例子,我们在导入特殊的库,这里是特殊的函数,并且导入优化的库。我们可以看到第一个贝塞尔函数的最小值,这就是SciPy做的。...Dask所做的是,能够让你做相同的事情,但不需进行实际的计算。保存了定义计算的任务图。当你将数组乘以4时,它会保存起来构建出类似这样的图。...将Python代码编译成LLVM字节码,运行的非常快而且是真正无缝隙的。当你在写一个算法,当中有for循环。我说过for循环不太好,你应该尽可能用Numpy。但有一些算法没办法简单的转换矢量化代码。
然后在/monitor/loki/rules 下创建名为fake的文件夹,将rule放在该文件夹下。...为什么要创建名为fake的文件夹,这个因为Loki中定义单租户的Loki系统中,fake为其默认租户名,如果是多租户系统,则/monitor/loki/rules 下多个其他名字的文件夹也可以。...description: 10分钟之内DolphinDB日志内election日志出现10次以上 重启Loki,重启脚本在上一篇推文中有写到。...值得注意的是,修改rule配置文件并不需要重启Loki,在Loki的运行日志里面可以看到如下日志,提示rule文件正在被修改 如果不确定rule中的表达式写的是否正确,可以在Grafana先进行预跑,...如果想知道Loki有哪些告警,他们的详细信息是什么,可以查询其API: curl -s http://localhost:3100/prometheus/api/v1/alerts 相关文档在这里:https
1.3 sealed abstract 和 abstract class 的区别 sealed class的所有子类,无论是否是抽象类,都必须跟 sealed class 在同一个文件中。...而abstract class并没有这样的规定。 2. Enumeration Scala 中并没有枚举类型,但是在标准库中有scala.Enumeration。...可以扩展Enumeration类,调用Value方法来初始化枚举中的可能值。...中的枚举没有方法重写功能 Scala中的枚举其实都是Enumeration.Value这个对象 总结 本篇笔记仍然是为了 Scala 模式匹配所做的铺垫。...先前的文章: Scala学习笔记(六) Scala的偏函数和偏应用函数 Scala学习笔记(五) 抽象类以及类中的一些语法糖 Scala学习笔记(四) 类的初步 Scala学习笔记(三)
概述 在之前的 导航系列文章中,Chet 开发了一个用于 跟踪甜甜圈的应用。知道什么是甜甜圈的最佳搭档吗?(难道是另一个甜甜圈?) 当然是咖啡!所以我准备增加一个追踪咖啡的功能。...要启用它,需要在 onOptionsItemSelected() 函数中,为被选择的菜单项调用 onNavDestinationSelected() 函数,并传入 navController。...比如,在我们的应用中,我可以将 donutList 和 coffeeList 的目的页面都定义为最顶层的目的页面。...和之前针对 BottomNavigationView 所做的相类似,这里创建一个新的方法,并且调用 setupWithNavController() 函数将 navController 传入 NavigationView...为了使代码保持整洁、各个元素之间更加清晰,我们会在新的方法中实现相关操作,并且在 onCreate() 中调用该方法。
使用jquery获取url以及使用jquery获取url参数是我们经常要用到的操作 1、jquery获取url很简单,代码如下: 其实只是用到了javascript的基础的window对象,并没有用jquery...2、jquery获取url参数比较复杂,要用到正则表达式,所以学好javascript正则式多么重要的事情 首先看看单纯的通过javascript是如何来获取url中的某个参数: //获取url中的参数...= null) return unescape(r[2]); return null; //返回参数值 } 通过这个函数传递url中的参数名就可以获取到参数的值,比如url为 http:...= null) return unescape(r[2]); return null; } })(jQuery); 为jquery扩展了这个方法了之后我们就可以通过如下方法来获取某个参数的值了...= null) return unescape(r[2]); return null; //返回参数值 } 今天在用上面的方法获取url中的参数时,url中传递的中文参数在解析的时候无论怎么测试
在构造函数中,我们需要与上述我们实现的xml布局文件进行关联,当然,我们使用的是LayoutInflater来实现的,自定义组件的构造函数如下所示。...下方的代码就是点击返回按钮要做的事情,因为点击返回按钮要做的事情就是结束当前Activity,所以不需要给调用者留有回调接口,在自定义组件的内部处理即可。...下方代码就是获取UI中返回按钮,并处理返回事件的方法。下方的方法需要在构造函数中调用才会起作用,函数不调用怎么执行呢,对吧~。...上面如果还算简单的话,下方就是自定义控件中稍稍有点难度的地方了。接下来我们要实现相应按钮的接口回调,在实现之前我们介绍一下为什么要实现接口的回调。...因为有时候点击自定义控件中的按钮时,所做的事情在自定义控件的内部无法独立完成,需要在调用者中进行事件的处理,在这种情况下,我们就可以使用接口回调来处理。
,你需要完成一些简单的黑魔法,教你如何使用 Python 中的命令行参数。...如果你的技术水平是这样的,你完成了一个ex4.py文件,没有别的,那么你在45分钟内做了一些事情。...然后,你应该看看为什么所做的一切都是开始编写这个文件,弄清楚下一步需要做什么,然后尝试另一个45分钟的流程。...警告 如果你遇到了障碍,回到第三部分,使用我提供的 Early Coders 中的流程。你需要列出一个清单,执行它,并检查你所做的事情。就是这样。...研究性学习 有多少其他的 Python 参数解析库?有没有你喜欢的? argparse与sys.argv相比,主要优势是什么。 在项目启动方法中,你可以改进什么?有什么可以去掉的事情吗?
先撇开Scroller类不谈,其实任何一个控件都是可以滚动的,因为在View类当中有scrollTo()和scrollBy()这两个方法,如下图所示: ?...那有的朋友可能会问了,为什么都是调用的LinearLayout中的scroll方法?...首先在ScrollerLayout的构造函数里面我们进行了上述步骤中的第一步操作,即创建Scroller的实例,由于Scroller的实例只需创建一次,因此我们把它放到构造函数里面执行。...另外在构建函数中我们还初始化的TouchSlop的值,这个值在后面将用于判断当前用户的操作是否是拖动。...在整个后续的平滑滚动过程中,computeScroll()方法是会一直被调用的,因此我们需要不断调用Scroller的computeScrollOffset()方法来进行判断滚动操作是否已经完成了,如果还没完成的话
那么问题来了,在angular中有一个大家很熟悉的机制,叫做依赖注入(简称di),因为这种机制的存在,在angular中,我们一般使用一个服务是不关心它的实例化过程的,我们所做的,仅仅是声明它,告诉模块...第二种方法则通过redux中间件的机制来实现 什么是中间件机制呢?这个可是个大概念,简单的理解的话,我只引用一个计算机常用的用来调侃的话解释。...话虽然这么说,但是它是很有道理的,对于redux的中间件机制呢,它是对于action来设计的,即一个action,在最终转移到到处理它的reducer之前,会经过若干大大小小的中间件,这些中间件做的事情十分的简单...是的,但是中间件它的确可以集成di功能,为什么呢,因为中间件的实例化逻辑是通过ng-redux在angular内部进行的,而中间件本身呢,有仅仅是一个函数而已,那么我们完全可以把中间件的实现,声明成一个...angular中的factory或者service,之后在其中使用angular的di机制,动态的实例化action中依赖服务的实例,关于这一点呢,在ng-redux的文档中有提及,但是没有说的特别的清楚
领取专属 10元无门槛券
手把手带您无忧上云