wrapper

使用MiniDumpWriteDump API 来生成程序的Dump

只谈情不闲聊 提交于 2020-08-04 14:34:29
MiniDumpWriteDump 是MS DbgHelp.dll 中一个API, 用于导出当前运行的程序的Dump. 这个dll程序系统中就有, 但是很多软件, 都在自己的安装目录下保存了这个.dll的最新的版本. 为了测试这个API, 参考网上一些资料, 写了一个简单的C++ 程序. 目的是当有异常发生的时候, 自动生成Dump文件供之后的分析. 有了Dump文件, 我们就可以使用WinDBG等调试器来分析异常发生时的情况. 其实这个功能很多软件都有, 比如QQ, 魔兽世界, 等等. 它们在出现了异常的时候会弹出一个对话框, 让用户输入异常发生时的情况, 然后把异常的dump文件用email发回, 供开发者们分析修改bug. 不过有一点, 这里需要程序的调试符号文件(pdb文件). 对于Debug版来说, 是生成的, 但是Release版来说默认是不生成的. 可以设置VC的编译器, 让它在Release版的时候也生成调试信息. 这带来一个新的问题, 因为.pdb里面是保存了源文件的信息的, 为了避免泄密, 可以采用VS中的CVPack工具, 从中去除敏感的信息. 程序需要使用 Dbghelp.h 和 Dbghelp.lib . 它们可以从MSDN找到. // 最主要的函数, 生成Dump static void DumpMiniDump(HANDLE hFile,

python学习笔记-Day04-第四部分(装饰器)

耗尽温柔 提交于 2020-07-28 20:44:12
这周学到了python的装饰器,以前没有接触过,问了一个搞php开发的同事什么是装饰器,他说就好像构造函数一样,可惜我已经把构造函数忘得光光了,想不起来是啥了。现在就找资料了解了解。毕竟装饰器是一个不用也能实现程序的功能,但是用了装饰器以后会显得你的技术特NB,但是不太好理解 学装饰器之前,需要先了解一下函数,前面的笔记里,有写过函数相关的笔记,可以先去参考一下前面的文章,这里只简单说一下。 在python中,函数由 def 关键字,函数名,可选的参数列表和函数体 来组成,通过return语句来返回值,如果没有return语句的时候,函数自动返回一个None值, 装饰器其实就是把一个函数当做参数,然后返回一个替代版的函数, def wrapper(a_fun): def fun(): print "a fun" tmp = a_fun() return tmp +1 return fun def w_test(): return 1 var1 = wrapper(w_test) print var1() #1 print w_test() 输出: a fun # var1() 输出 2 # var1() 输出 1 # w_test() 输出 上面是一个装饰器的例子,我们定义了一个函数 wrapper() ,参数为一个名叫a_fun的函数,在函数内部定义了一个嵌套的函数 fun()

JDK11的新特性:HTTP API和reactive streams

房东的猫 提交于 2020-07-28 17:42:02
简介 在 JDK11的新特性:新的HTTP API 中,我们介绍了通过新的HTTP API,我们可以发送同步或者异步的请求,并获得的返回的结果。 今天我们想探讨一下这些同步或者异步请求和响应和reactive streams的关系。 更多内容请访问 www.flydean.com 怎么在java中使用reactive streams reactive streams的介绍大家可以参考 reactive stream协议详解 ,使用reactive streams的目的就是为了解决发送者和消费者之间的通信问题,发送者不会发送超出消费者能力的信息。 我们再回顾一下reactive streams中的几个关键概念: Publisher 负责产生消息或者事件,并提供了一个subscribed接口来和Subscriber进行连接。 Subscriber 用来subscribe一个Publisher,并提供了onNext方法来处理新的消息,onError来处理异常,onComplete提供给Publisher调用来结束监听。 Subscription 负责连接Publisher和Subscriber,可以用来请求消息或者取消收听。 更进一步,如果我们想要自己实现一个reactive streams,我们需要做这些事情: 创建Publisher和Subscriber

用编程做抖音上很火的时钟效果

不羁岁月 提交于 2020-07-28 14:36:45
反正,我的抖音没人看,别人都有几十万个赞什么的。 发到开源上来,大家交流下~ 主要用到原生态的 JS+CSS3。 具体不解释了,看注释: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> html{ background: #000; color: #666; font-size: 12px; overflow:hidden; } *{ margin: 0; padding: 0; } span{ display: block; float: left; } .on{ color: #fff; } .wrapper{ width: 200px; height: 200px; position: absolute; left:50%; top:50%; margin-top: -100px; margin-left: -100px; } .wrapper .timebox{ position: absolute; width: 200px; height: 200px; top: 0; left:0; border-radius: 100%; transition: all 0.5s; } .timebox span{ transition: all

d3js scales深入理解

自闭症网瘾萝莉.ら 提交于 2020-07-28 10:55:37
https://www.cnblogs.com/kidsitcn/p/7182274.html d3js scales深入理解 比例尺函数是这样的javascript函数: 接收通常是数字,日期,类别等data输入并且: 返回一个代表可视化元素的值,比如坐标,颜色,长度或者半径等 比例尺通常用于变换(或者说映射)抽象的数据值到可视量化变量(比如位置,长度,颜色等) 比如,假设我们有以下数组数据: [ 0, 2, 3, 5, 7.5, 9, 10 ] 我们可以这样创建一个比例尺函数: var myScale = d3.scaleLinear() .domain([0, 10]) .range([0, 600]); d3将创建一个myScale函数用于接收[0,10]之间的数据输入(domain)映射为[0,600]像素的位置数据(range) 我们可以使用myScale函数来计算对应数据的positions数据: myScale(0); // returns 0 myScale(2); // returns 120 myScale(3); // returns 180 ... myScale(10); // returns 如上面所说,比例尺主要用于将抽象数据映射为可视的量化元素,比如位置,长度,半径,颜色等。比如,他们可以这样应用 将抽象数据映射为0到500的长度值以便在bar

07-05 装饰器

怎甘沉沦 提交于 2020-07-28 10:07:18
[TOC] 一 装饰器介绍 1.1 为何要用装饰器 插图:恶搞图32 软件的设计应该遵循开放封闭原则,即对扩展是开放的,而对修改是封闭的。对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。对修改封闭,意味着对象一旦设计完成,就可以独立完成其工作,而不要对其进行修改。 软件包含的所有功能的源代码以及调用方式,都应该避免修改,否则一旦改错,则极有可能产生连锁反应,最终导致程序崩溃,而对于上线后的软件,新需求或者变化又层出不穷,我们必须为程序提供扩展的可能性,这就用到了装饰器。 1.2 什么是装饰器 插图:恶搞图33 ’装饰’代指为被装饰对象添加新的功能,’器’代指器具/工具,装饰器与被装饰的对象均可以是任意可调用对象。概括地讲,装饰器的作用就是在不修改被装饰对象源代码和调用方式的前提下为被装饰对象添加额外的功能。装饰器经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景,装饰器是解决这类问题的绝佳设计,有了装饰器,就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。 提示:可调用对象有函数,方法或者类,此处我们单以本章主题函数为例,来介绍函数装饰器,并且被装饰的对象也是函数。 二 装饰器的实现 函数装饰器分为:无参装饰器和有参装饰两种,二者的实现原理一样,都是’函数嵌套+闭包+函数对象’的组合使用的产物。 插图

Python装饰器

佐手、 提交于 2020-07-28 09:57:00
1.函数基础知识     在Python中函数为 一等公民 ,我们可以: 把函数赋值给变量 在函数中定义函数 在函数中返回函数 把函数传递给函数 1.1 把函数赋值给变量     在Python里,函数是对象,因此可以把它赋值给变量,如下所示: def hello(name="Surpass"): return "Hello,"+name.capitalize()     上述代码定义了一个函数hello(),具体功能是把对输入的姓名打招呼,并将姓名首字母转换为大写。下面将函数赋值给变量,如下所示: func=hello print(func) 其输出结果如下所示: <function hello at 0x0000029D25213048>     在上述代码中,将hello赋值给func并输出打印结果。从结果上来看,当不带括号使用hello时,仅输出 函数对象 ,而非调用函数,当带上括号时,则表示 调用函数 ,如下所示: func=hello print(func()) 其输出结果如下所示: Hello,Surpass     既然函数是对象,那是不是可以尝试删除对象,来看看以下代码: def hello(name="Surpass"): return "Hello,"+name.capitalize() func=hello del hello try: print

Web容器、Servlet容器、Spring容器、SpringMVC容器之间的关系

心已入冬 提交于 2020-07-28 07:45:41
以下内容为个人理解,如有误还请留言指出,不胜感激! Web 容器 web 容器( web 服务器)主要有: Apache 、 IIS 、 Tomcat 、 Jetty 、 JBoss 、 webLogic 等,而 Tomcat 、 Jetty 、 JBoss 、 webLogic 同时也是 servlet 容器 ,或者说他们还包含了 servlet 容器 。没有 servlet 容器,你也可以用 web 容器直接访问静态页面,比如安装一个 apache 等,但是如果要显示 jsp/servlet ,你就要安装一个 servlet 容器了,但是光有 servlet 容器是不够的,因为它要被解析成 html 输出,所以你仍需要一个 web 容器。大多数 servlet 容器同时提供了 web 容器的功能,也就是说大多 servelt 容器可以独立运行你的 web 应用。 web 容器是管理 servlet (通过 servlet 容器) ,以及监听器 (Listener) 和过滤器 (Filter) 的 。 这些都是在 web 容器的掌控范围里。但他们不在 spring 和 springmvc 的掌控范围里。因此,我们无法在这些类中直接使用 Spring 注解的方式来注入我们需要的对象,是无效的, web 容器是无法识别的。 但我们有时候又确实会有这样的需求,比如在容器启动的时候

Elasticsearch如何查询使用JSON字符串的DSL

三世轮回 提交于 2020-07-26 04:25:24
背景 Java处理ES查询逻辑,有一种情况是用户从其他地方粘贴或者手动输入的JSON字符串的DSL语句;这个时候就没法使用QueryBuilder来构建所需要的SearchSource。查了查发现有个Wrapper的方式可以处理; 实现 代码贴在下面了。首先创建WrapperQueryBuilder对象,通过两种方式均可。1是直接new、2是调用静态方法wrapperQuery;其次还是创建SearchSourceBuilder,指定去query内容为wqb。再次构建SearchRequest对象即可; String body = "{\"term\":{\"uid\":{\"value\":1}}}"; //Wrapper 使用 Json 查询字符串来构建 QueryBuilder ; //WrapperQueryBuilder wqb = QueryBuilders.wrapperQuery(body); WrapperQueryBuilder wqb = new WrapperQueryBuilder(body) ; SearchSourceBuilder ssb = new SearchSourceBuilder() ; ssb.query(wqb) ; SearchRequest request = new SearchRequest( "es_index" )

Wrapper function for cmdlet - pass remaining parameters

℡╲_俬逩灬. 提交于 2020-07-07 13:00:33
问题 I'm writing a function that wraps a cmdlet using ValueFromRemainingArguments (as discussed here). The following simple code demonstrates the problem: works function Test-WrapperArgs { Set-Location @args } Test-WrapperArgs -Path C:\ does not work function Test-WrapperUnbound { Param( [Parameter(ValueFromRemainingArguments)] $UnboundArgs ) Set-Location @UnboundArgs } Test-WrapperUnbound -Path C:\ Set-Location: F:\cygwin\home\thorsten\.config\powershell\test.ps1:69 Line | 69 | Set-Location