0x02 waf绕过方式 1、Web容器的特性 特殊的百分号 在 IIS+ASP 的环境中,对于URL请求的参数值中的%,如果和后面的字符构成的字符串在 URL编码表 之外,ASP脚本处理时会将其忽略。 畸形HTTP请求 当前的HTTP服务依据的是RFC2616标准的HTTP请求,但是当我们向Web服务器发送畸形的,也就是并非这个标准的HTTP数据包的时候,由于Web服务器的一些兼容性的特性,会尽力解析这些畸形的数据包 这些字母的出现顺序,表明了数据的加载顺序。而 php.ini 中这个参数默认的配置是 GPCS ,也就是说如果有 POST 方式传入相同的数组,就覆盖掉 GET 方式传入的。 ? 3、WAF自身的问题 白名单机制 WAF存在某些机制,不处理和拦截白名单中的请求数据: 1、指定IP或IP段的数据。 2、来自于搜索引擎爬虫的访问数据。 3、其他特征的数据。 当然关于文件上传的话,可以试试将关键字换行分离试试看。下面看个例子: ? 对于网站来说,这样写是可以解析的,但是站在WAF的设计者的立场,他们可能并不知道,这个是可以这样写的。
主要记录学习 Git 过程中的一些坑。重点在于各种 Git 操作,但也不限于此,一些和 Git 相关的东西都会记录一下。 本文的思维导图如下: ? 1. 必须先执行下面的操作进行同步: git pull origin/remote_branch 这个指令其实做了两件事,第一件事是把远程已被 A 更新的 remote_branch 分支拉到本地: git fetch origin/remote_branch 第二件事是将这个目前最新的分支与本地 B 自己的分支进行合并: git merge remote_branch origin/remote_branch 6.3 修改同一文件的文件名 假设现在的场景是:A 修改 a 文件的文件名为 a1,之后 push;B 修改 a 文件的文件名为 a2,也想要 push,因为本地和远程不同步,根据之前解释的,到这里自然会报错 local 和 origin 的同步 这个就是之前讲的情形,origin 是 A 自己的远程仓库,A 具有自由读写的权限,可以直接 pull 和 push。
热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云
A: 关于这一块我首先说了我们的项目是由多个子系统构建的, 然后说我们系统中的一些调用需要使用到Dubbo, 最后对比了Dubbo与WebService的区别. 5, Q: 面试官问我是否了解集合的一些类 (关于HashMap问的真的很多, 建议大家有时间一定要看下源码, 这里给出一个总结的很好的博文: http://blog.csdn.net/luanlouis/article/details/41576373 关于如何调试我直接说我有了解是通过生成dump文件 然后去调试.剩下就不知道了. 简答题并不难, 最后一个关于IO操作且写出代码的题我也空着没有做. 剩下的就是面试了, 这次是一下来了两个面试官, 估计是一面二面全都一起来面了. 我自己又找了下HashMap中关于hashcode定位桶的位置的方法: 1 /** 2 * 根据特定的hashcode 重新计算hash值, 3 * 由于JVM生成的的
引言 之前做一个POC的时候,Vicky同学遇到一个关于编码的问题,问到我,我觉得当时没有解释得很清楚,于是决定查阅相关的资料文档,写一篇文章,记录这个问题及对背后的原因、原理的理解。 问题 关于这个问题,为了简化起见,我会做一些假设。问题原型是有一个Web application,后台用Java实现,前端Javascript。 这就是计算机专业同学刚上大学要了解的ASCII码表,比如小写的a是97,大写A是65,等等。 由于这种编码只定义了所有的英语字符,所以如果世界上所有电脑都采用英语系统,也就没有下面编码什么事了。 但是现实是残酷的,世界上各个国家,甚至民族都有自己的语言符号,将这些语言文字符号在计算机系统中显示存储,随着计算机的普及,是一件水到渠成的必须要解决的问题,于是就有了以下各种编码方式的出现。 最开始各个主流语言都出现了自己的编码规则,比如简体中文的GB2312,繁体中文的BIG5,日语的JIS等。
; 5、和团队其他角色沟通用时,脑海关于需求的千丝万缕先用文字、图表描述出来,在沟通过程中就可以精确的描述和表达,再具体讨论有疑问的点,最后勾勒出整个需求的蓝图; ... 信息是数据的组合排列,比如微博上每日最新的资讯,朋友圈不断更新的动态。 知识是大脑对信息的组合与整理,对别人而言的知识,对自己可能只是信息。 信息经过大脑的整合,组织出自己能够理解的知识并沉淀下来,则成为个人的知识、团队的文档。 写文档的几个思路: 太简单的不写; ==> 浪费时间; 自己不熟悉的不写; ==> 误人误己; 炫耀性的文章不写; ==> 蹉跎岁月; 没有总结的不写; ==> 先思考后产出; 看完没有收获的不写 1、明确此篇文档的目标人群; 以技术方案评审文档为例,文档的目标人群是参与评审的技术同学,所以描述需要更加抽象,避免出现大量的细节; 以反馈问题跟进文档为例,文档的目标人群是运营、产品、开发等,所以需要针对特定的逻辑
这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。 2、删除换行符后,删除的行数加 1。 3、修改了某一行后,增加和删除的行数同时加 1 4、统计的代码指标只有增加的和删除的行数,没有修改的行数,与 svn 不一样。 Pretty 参数表示对输出的值进行格式的设置,awk 为 linux 系统中自带的一个强大的文本分析工具,通过后面指定的方式计算出代码的增加和删除的量,同时输出到命令行中。 下图中直接得到修改的值: (2) 统计其他分支的代码修改量 由于进入项目之后,默认进入的是 master 的分支,有可能会有需要统计其他的分支的情况,此时需要先进行分支的切换,然后再进行统计。 总结 本篇文章主要讲了下 Git 的一些基本的概念以及如果使用 git log 的命令来进行一段时间段的代码量统计,其中还可以统计不同作者修改的代码量,其中关于 git log 统计的其他的功能在这里就不细说了
这里讨论的文本排序不是一个排序算法,而是作为某个排序算法的底层依赖,常常在多语言环境下需要考虑,比如说中文的排序,日文的排序。 之前就遇到过一个关于文本排序的问题,问题的原型是: 有一个电商平台,商家可以在平台上开店,在商家的后台产品管理界面,商家看到的产品列表默认以名字排序。 这个问题的原因是:电商平台底层用的是Posgres数据库,页面上看到的产品列表的排序是在后台数据库完成的。 关于default的collation是哪个,可以参考Postgres官方documentation - https://www.postgresql.org/docs/9.5/locale.html。 我们创建数据库的时候没有指定,所以用的是default的collation,default的会参考操作系统默认的locale设定,这里是en_US.utf8。
生成包名对应的目录 javac .\Test.java -d . # 运行,一个类的全名应该是包名+类名。 类的全名:com.demo.Test # 运行的目录则是root package所在的目录 java com.demo.Test java执行class文件是根据CLASSPATH指定的地方来找,不是我们理解当前目录 java执行class文件对package的路径是强依赖。它在执行的时候会严格以当前用户路径为基础,按照package指定的包路径转化为文件路径去搜索class文件。 必须要在一行上,多个jar之间以空格隔开,如果引用的jar在当前目录的子目录下,windows下使用\来分割,linux下用/分割 文件的冒号后面必须要空一个空格,否则会出错 文件的最后一行必须是一个回车换行符 (Oracle Corporation) # 启动类的路径名称要与jar包中的路径名称完全一致,否则在执行的时候会报招不到主启动类的错误。
Java中的分很多种类,按照场景的不同、特性的不同等分为了很多类,下面就来讲讲Java中锁的概念: 自旋锁:是指当一个线程在获取锁的时候,该锁已经被其他线程占用,则该线程会循环等待,并会不断检查是否成功获取锁 乐观锁在获取资源的时候,认为不会有其它线程来资源资源(假定没有冲突),所以在获取资源的时候,不会加锁。其他线程来获取资源的时候,会根据实现场景的不同而采取不同的方式(重试或报错)。 只要一个线程获取到了对象的锁,会修改对象头中的Mark Word状态,同时线程中也会保存对应的状态。 而Java中的乐观锁最常采用的是CAS算法。 悲观锁和乐观锁的应用场景 悲观锁适用于写多读少的场景,操作资源的时候先加锁可以保证资源的正确性 乐观锁适用于读多写少的场景, 不加锁可以让读取数据的效率大幅增强 自旋锁和适应性自旋锁 阻塞或唤醒一个Java Klass Point是是对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例,Mark Word用于存储对象自身的运行时数据,它是实现轻量级锁和偏向锁的关键,今天要介绍的也是Mark
以上这个流程是在设备生产环节完成的,这里的描述还是属于粗线条的,其他一些重要的信息没有列出来,比如:AWS后台如何产生证书、在连接阶段后台是如何通过证书来验证设备的合法性的、厂商的秘钥是如何工作的等等, server端的解密算法是一样的,当然了这里的算法太简单。 最终,证书server.crt中的内容包括这几个大类: 申请者的基本信息:网站使用的加密算法、网站使用的hash算法; 申请者的公钥; 认证机构的信息:认证机构的名称,证书到期时间。 单向认证和双向认证 上面描述的认证过程,是浏览器用来确认所访问的网站是否是一个合法的网站;文章开头所举的例子:一个物联网产品在连接云平台的时候,是云平台来验证这个想连接进来的设备是否为一个合法的设备。 不同等级的认证机构对审核的要求也不一样,于是证书也分为免费的、便宜的和贵的。 你可能会问:那么根认证机构的证书是由谁签名的?答案是:根认证机构自己签名的,这也叫做自签名。
当然,这种老掉牙的特性是不会引起高冷的PM的注意的,只会扔给开发狗交给我们去适配。 对于这一个看似自废武功的调整,我举双手赞成。 Quick Setting 说到这个话题,真的很想用标准朋友圈标题:《Android Developer一定不会告诉你的事!怒转!》 瘦身计划 这个并不是说Android机器人变瘦了,实际上,它还是那个胖胖的样子: 额。。。天天吃苹果当然会胖。。。 同时,关于设计方面,Material Design推出已经接近两年,尽管有很多应用已经适配,但是包括微信、Facebook、Twitter在内的很多主流应用仍然在坚持使用自己的设计语言。 嗯,关于碎片化,首先,Android目前版本分布是酱紫的(来自Google官方,链接http://developer.android.com/about/dashboards/index.html)
Kubernetes 需要 PKI 证书才能进行基于 TLS 的身份验证。如果你是使用kubeadm安装的 Kubernetes, 则会自动生成集群所需的证书。 但是如果是通过二进制搭建,所有的证书是需要自己生成的,这里我们说说集群必需的证书。 服务器单向认证:只需要服务器端提供证书,客户端通过服务器端证书验证服务的身份,但服务器并不验证客户端的身份。 这种情况一般适用于对 Internet 开放的服务,例如搜索引擎网站,任何客户端都可以连接到服务器上进行访问,但客户端需要验证服务器的身份,以避免连接到伪造的恶意服务器。 的,那么他们是怎么通讯的呢? 该证书的用法和前面介绍的其他证书不同,因为实际上使用的是其公钥和私钥,而并不需要对证书进行验证。
旗语,电报中的莫斯电码等等,这些东西里面也包含了编码 二、关于字符集和字符编码 因为计算机中的信息都是用二进制数表示的,所以我们必须将汉字、英文按照一定的规则表示出来储存在计算机中 所以字符编码就是为了信息处理 关于BOM 因为UTF-32和UTF-16使用4字节或字节进行编码,因此传输的时候便会出现字节序的问题,例如“奎”的Unicode编码是594E,“乙”的Unicode编码是4E59。 1110之后的所有部分(4个bit)加上后两个字节的除10外的部分(12个bit)代表在Unicode中的序号。 11110之后的所有部分(3个bit)加上后两个字节的除10外的部分(12个bit)代表在Unicode中的序号。 1110 767E 度 e5ba a6 11100101 10111010 10100110 0101 1110 1010 0110 5EA6 关于UTF8和UTF8 mb4 MySQL 5.5.3版本开始
需要注意的是,Word中默认的标尺单位是以字符宽度为度量单位,需要根据需求手动修改为厘米或者毫米。 );5J Label(Mixed Load): 混托包装的收货标签(混合物料号);KLT Size 1J Label: 混托或整托包装中的内箱的收货标签,贴在混托或整托包装下的所有内箱上。 1J Label(Single Container): 散箱包装的收货标签。 那么,这几种Label都包含哪些业务数据?各个Label的样式又是怎样的呢?一起来了解一下吧。 首先来了解下比较复杂的托盘贴,即5J 和6J 的Label。 、供应商物料编号、物料描述、包装的封条号、产品包装批号、供应商提供的发货编号、供应商编号。
要成为专家,需要采用正确的训练方法,然后通过高质量反馈循环不断提高。 因此,你需要做的就是在尽量短的时间内给你的用户提供大量高质量的示例。 对于那些已经入门的用户,你需要做的就是不断优化产品,解决他们遇到的问题。如果解决不了,请诚实的告诉他们:我看到了你的反馈,这里确实有问题,不过目前我们还无法解决。 对产品设计的启示:尽量减少对用户的干扰,让用户把有限的大脑资源用在最重要的事上。 怎么减少干扰? 大脑有一个过滤系统,如果你的产品或者功能无法说服它,它就会直接把你过滤掉,因此你必须知道大脑关心什么。 人类已经进化了上万年,科技飞速发展只是最近几百年的事,因此大脑在这方面显得相当落后。 在我看来,世界本身是个高维的东西,我们人类则处在低维空间,因此我们看到的都只是真实世界的一个投影。从这个角度出发,如果世界中有一个放之四海皆准的方法,投影到不同的低维空间也会导致不同的结果。
例如下图就是一个基因多个数据库的不同ID号。 ? 这也就导致经常在进行数据分析之前拿到手的关于基因的数据对于基因ID的注释可能不是我们想要的基因名,所以经常会就会需要进行ID转换。 对于这样的ID号,其实就是来自于ncbi里面的gene数据库。如果想要了解gene数据库的话,可以参考我们的第二条推送。 ? 关于gene数据库对于ID的注释。这个ID号只是代表基因。 另外,我们检索的这个基因是一个非编码的RNA(ncRNA)的话,那关于转录本的注释就从之前的NM开头变成了NR开头了。 ? Ensemble ID ? 关于Ensembl ID,不管是什么类型的,其ID号的前三个开头都是以ENS开头的。剩下的可以再看第四位: G代表是Gene。 例如Affymetrix Human Genome U133 Plus 2.0 Array这个芯片的话,其ID号就是这个样子的。 ? 很多ID转换的数据库也提供了关于芯片ID的转换。
小伙伴,以后出门说python是最流行的语言,再也不会被打啦。 ? python为什么这么流行? 就在于它简单、简单、还是简单! 它适用于网站、桌面应用开发,自动化脚本,复杂计算系统,科学计算,生命支持管理系统,物联网,游戏,机器人,自然语言处理等很多方面。 ? 所以小伙伴们,还在等什么,人生无再少,入坑需趁早呀! 由于python现在最火的两个方向就是科学计算和开发,所以推荐两个常用的IDE,提前祝各位大佬在代码路上越走越远,发际线永不退步。 ? python的IDE软件推荐 1、科学计算方向,可选anaconda自带的IDE如:Jupyter Notebook、Spyder等等。
在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao)了各自代码中这样或者那样的问题。 在准备bootcamp的课程的时候,我就为这个问题犯了难,我尝试着用一些精确的定义区分出“优等品”、“良品”、“不良品”;但是在总结的过程中,关于“什么是好代码”的描述却大多没有可操作性 2.1.好代码的定义 ; 4.性能接近最佳化,避免代码混乱和无原则的优化; 5.整洁的代码只做一件事。 Grady Booch,《面向对象分析与设计》作者: 1.整洁的代码是简单、直接的; 2.整洁的代码,读起来像是一篇写得很好的散文; 3.整洁的代码永远不会掩盖设计者的意图,而是具有少量的抽象和清晰的控制行 其次也需要考虑注释的质量:在代码可读性合格的基础上,注释应该提供比代码更多的信息。文档和注释并不是越多越好,它们可能会导致维护成本增加。关于这部分的讨论可以参考简洁部分的内容。
云小微对话机器人基于完全自研的AI全链路能力,对用户输入的文本或语音识别的文本做语义理解、识别用户真实意图,记忆上下文和联想分析,面向用户提供快速、精准的信息问询体验。同时还为客户提供运营工具,通过对线上用户日志的挖掘,以及腾讯海量线上数据挖掘,提炼出各种问法,最终提高用户服务体验的满意度,减轻人工服务压力。
扫码关注腾讯云开发者
领取腾讯云代金券