Dat

线上问题排查命令

别等时光非礼了梦想. 提交于 2020-07-29 07:03:28
java进程排查 ps aux | grep java |grep -v grep dump内存:jmap -dump:format=b,file=/tmp/dump.dat jps -l 可以查看java进程的完整名(包括包) jinfo -flags <进程id> 查看java进程的一些参数 jinfo -flag <参数名> <进程id> 查看具体的参数 jstat -gc <进程id> jstat -gc <进程id> <毫秒> <次数> 多少秒打印一次,共打印多少次 netstat -anp|grep [port] 查看端口占用 lsof -i:[port] top -Hp pid 查看最消耗cpu的线程 Dump过程: ①top 查看%CPU占用情况,查看哪个java进程占用cpu比较高 jps -l 确定是哪个进程 jps -l 得到22243 ②ps -mp 进程号,tid,time 通过ps 查看具体哪个JVM线程,找到消耗cpu最大的线程(tid) #ps -mp 22243 -o THREAD,tid,time ③然后把上面消耗cpu最大的线程id(tid)转化为16进制,在shell中使用printf “%x\n” tid即可,我当时的线程得到的16进制id为:56ed: printf “%x\n” 22253 ④用jstack 查看具体线程栈信息

YYYY-MM-DD 的黑锅,我们不背!

落爺英雄遲暮 提交于 2020-07-28 13:33:07
作者:兔子托尼啊 https://zhuanlan.zhihu.com/p/101150248 写这篇博文是记录下跨年的bug。 去年隔壁组的小伙伴就是计算两个日期之间间隔的天数,因为跨年的原因计算有误。 当时测试组的小姐姐也没有模拟出来这种场景,导致上生产环境直接影响线上的数据。 今天逛技术论论坛正好遇到 Java 日期的操作bug。 1 yyyy 和 YYYY 别看字,看代码 @Test public void testWeekBasedYear() { Calendar calendar = Calendar.getInstance(); // 2019-12-31 calendar.set(2019, Calendar.DECEMBER, 31); Date strDate1 = calendar.getTime(); // 2020-01-01 calendar.set(2020, Calendar.JANUARY, 1); Date strDate2 = calendar.getTime(); // 大写 YYYY SimpleDateFormat formatYYYY = new SimpleDateFormat("YYYY/MM/dd"); System.out.println("2019-12-31 转 YYYY/MM/dd 格式: " + formatYYYY

PatchWorkAPT分析

前提是你 提交于 2020-07-28 08:47:55
    PatchWorkAPT是一个比较有意思的名字,源于该组织武器库是基于开源的代码拼凑而成(地下论坛、暗网、github等等),组织主要目标是美国军事和政治机构,曾被赛门铁克、卡巴多次对组织Attack活动披露。   组织善用于office_cve武器库,从奇安信github收录以往的样本统计中来看,office_cve通杀漏洞占据了主导地位。     以往的套路,通过漏洞进行提权和载荷的释放,利用msf进行回连,这里不做累述,有好的文章可以参考套路如下链接,本篇文章主要分析C2样本功能: https://www.freebuf.com/articles/network/108637.html   ➬ IOCs: Column 1 Column 2 文件名 0f4f6913c3aa57b1fc5c807e0bc060fc 大小 195072 bytes MD5 0f4f6913c3aa57b1fc5c807e0bc060fc   ➬ 样本分析: ➀ 图中url并非是组织服务端,而是用来测试通信是否有网络连接。   ➁ 动态的获取函数地址,如下所示:   ➂ http报文截获,如下所示:   ↪ 动作一: ➃ 采集系统信息,主机名,uudi,系统版本等,如下所示:   ➄ CreateThread感染分发,其中循环体中CreateThread不停分发感染线程:   ➅

如果不存在,则Python中的open()不会创建文件

拥有回忆 提交于 2020-07-28 04:07:57
问题: What is the best way to open a file as read/write if it exists, or if it does not, then create it and open it as read/write? 如果文件以读/写方式打开,或者以不存在的方式创建,然后以读/写方式打开,最好的方法是什么? From what I read, file = open('myfile.dat', 'rw') should do this, right? 根据我的阅读, file = open('myfile.dat', 'rw') 应该这样做,对吗? It is not working for me (Python 2.6.2) and I'm wondering if it is a version problem, or not supposed to work like that or what. 它对我不起作用(Python 2.6.2),我想知道这是否是版本问题,或者不应该那样工作或做什么。 The bottom line is, I just need a solution for the problem. 最重要的是,我只需要解决这个问题。 I am curious about the other stuff, but all I

NoiseMe:瞄准加密货币交易机器人的新型恶意软件攻击分析报告

淺唱寂寞╮ 提交于 2020-07-27 21:54:46
作者:启明星辰ADLab 原文链接: https://mp.weixin.qq.com/s/PuB0fQ-cHmHUs2_zSef8Ag 一、概述 加密货币一直以来都是黑客们极为热衷的攻击领域,除了攻击加密货币交易平台以获得巨额的经济利益外,还存在大量以窃取加密货币钱包的攻击,启明星辰ADLab近期发现多起以加密货币机器人为诱饵进行加密货币钱包窃取的攻击案例。起初我们注意到一些行为异常的交易机器人(主要以Bitmex Bot 、Trade Bot、UniqueTradingBot为主),这些机器人在安装过程中弹出缺少.NET运行库的错误提示框。而通过调查分析发现,其中多款机器人的官方软件并没有使用.NET进行相关组件的开发。因而进一步分析后,我们发现这些异常的机器人释放并试图执行一些使用C#编写的可执行文件,同时发现一些非官方的网络连接。随后,我们将这些机器人释放的非官方组件一一提取出来做进一步分析和对比,最后确认这是一款新型的具有丰富窃密功能的恶意软件。其中核心组件的大部分类均以“NoiseMe”作为命名空间的起始标志,因而此处我们将该恶意软件命名为“NoiseMe”。其除了具备窃取几乎所有主流加密货币钱包的能力外,还被用于敏感信息(如受害主机的各种登录凭证数据)窃取,进一步黑客还可以利用该恶意软件对受害主机进行定制化的攻击,对不同的受害主机下发不同攻击插件来执行不同的任务

TM1650/AIP650数码管驱动显示STM32驱动程序HAL库

我的梦境 提交于 2020-07-27 02:37:24
参考例程讲解 一、 Display显示DEMO: 1、 硬件: 图1.1 数码管模块原理图 由图1.1可知MCU通过DAT&CLK(I2C)两个引脚去控制数码管驱动IC,从而达到控制数码管的显示;打开TM1650/AIP650规格书, 图1.2 控制命令 我们知道TM1650/AIP650可以通过显示命令控制控制数码管的显示。 图1.3显存地址 通过往显存地址里面写数据可以就可以实现数字&字母在数码管的显示效果。 图1.3完整的写显示时序 完整的写显示时序如图1.3所示。这就MCU& TM1650/AIP650的通信协议,也就是说,通过软件实现写显示时序,我们就能实现我们所要的显示效果,接下来请看软件部分 2、 软件: /* * * @brief The application entry point. * @retval int */ int main( void ) { /* USER CODE BEGIN 1 */ u16 number = 0 ; /* USER CODE END 1 */ /* MCU Configuration-------------------------------------------------------- */ /* Reset of all peripherals, Initializes the Flash interface and

逻辑斯蒂(logistic)回归深入理解、阐述与实现

邮差的信 提交于 2020-07-26 19:33:58
第一节中说了,logistic 回归和线性回归的区别是:线性回归是根据样本X各个维度的Xi的线性叠加(线性叠加的权重系数wi就是模型的参数)来得到预测值的Y,然后最小化所有的样本预测值Y与真实值y'的误差来求得模型参数。我们看到这里的模型的值Y是样本X各个维度的Xi的线性叠加,是线性的。 Y=WX (假设W>0),Y的大小是随着X各个维度的叠加和的大小线性增加的,如图(x为了方便取1维): 然后再来看看我们这里的logistic 回归模型,模型公式是: ,这里假设W>0,Y与X各维度叠加和(这里都是线性叠加W)的图形关系,如图(x为了方便取1维): 我们看到Y的值大小不是随X叠加和的大小线性的变化了,而是一种平滑的变化,这种变化在x的叠加和为0附近的时候变化的很快,而在很大很大或很小很小的时候,X叠加和再大或再小,Y值的变化几乎就已经很小了。当X各维度叠加和取无穷大的时候,Y趋近于1,当X各维度叠加和取无穷小的时候,Y趋近于0. 这种变量与因变量的变化形式就叫做logistic变化。(注意不是说X各个维度和为无穷大的时候,Y值就趋近1,这是在基于W>0的基础上,(如果W<0,n那么Y趋近于0)而W是根据样本训练出来,可能是大于0,也可能是小0,还可能W1>0,W2<0…所以这个w值是样本自动训练出来的,也因此不是说你只要x1,x2,x3…各个维度都很大,那么Y值就趋近于1

Jmeter读取excel表中用例数据实现接口压测

做~自己de王妃 提交于 2020-05-08 21:11:01
传统的接口测试,都是在接口中手动输入不同用例准备的多种场景参数数据,一遍一遍的输入来执行多个不同的用例,但是现在利用excel表格准备各种类型的数据,使用Jmeter中Jmeter CSV Data Set Config参数化实现可设置的、一次性的读取excel表中多个或者全部用例设计的数据,一次性看到多个用例数据运行出相应的结果。这样可以避免了每次去更改参数值的烦恼,也减少修改参数出错的机率。这样大大减少了测试人员的工作量,并且也提高了接口测试用例的执行效率。Jmeter 读取excel数据使用的方法是使用Jmeter CSV Data Set Config参数化,使用方法如下: 一、数据准备 准备数据文件,一般以 .csv,.dat 等结尾的文件,数据之间的分隔符可用 ,或者 tab。 其中,将excel文件保存成csv格式后,jmeter读取后返回的数据总是出现乱码问题,以下就是解决的办法:先制作一个excel表格,导出存为.csv格式的文件。读取txt中的数据也是类似方法。 二.使用CSV Data Set Config参数化将csv里面的数据读取 以下是CSV Data Set Config各个参数使用说明: (1)Filename:数据文件的路径。 (2)Delimiter:数据之间的分隔符可用 ,或者 tab。 (3)Allow Quoated data: 双引号相关

ThinkPHP<6.0 SQL注入代码审计分析

元气小坏坏 提交于 2020-05-08 09:25:19
版本过多只分析大版本和使用人数较多的版本目前使用人数最多的3.2.3。审计时也是发现多个版本未公开漏洞 测试环境: Mysql5.6/PHP5.5 首先明确的是在不使用PDO做参数绑定时ThinkPHP全版本都可能存在宽字节注入。 黑盒检测方法:输入于头字节大于7F测试数据例如: %88%5c%27%5eupdatexml(1,concat(0x7e,database()),3)%23 (%5e 后跟任意T-SQL语句) 白盒检测方法 全局搜索默认格式是否被设置GBK 'DEFAULT_CHARSET' => 'utf-8', // 默认输出编码 或者 mysql_query ("SET NAMES gbk"); Where方法 也是使用的最多的条件查询方法,支持查询条件预处理 1. $Model ->where(" id=%d and username='%s' and xx='%f' ", array ( $id , $username , $xx ))-> select(); 2. // 或者 3. $Model ->where(" id=%d and username='%s' and xx='%f' ", $id , $username , $xx )->select(); 而他的预处理实际上调用了addslashes() 方法 /* * * SQL指令安全过滤 *

如何把IP转换成经纬度(Java版)

梦想的初衷 提交于 2020-05-08 08:44:04
经常有这种需求,拥有用户的IP地址,想要在地图上显示用户的访问量。这个时候就需要用到经纬度...应为一般的地图插件都是基于经纬度的。 那么问题来了,如何把IP转换成经纬度? 百度API 最国产的方式,就是使用百度API了,百度提供了两种服务: 普通的IP服务: http://lbsyun.baidu.com/index.php?title=webapi/ip-api https://api.map.baidu.com/location/ip?ak=请输入您的AK&coor=bd09ll 返回值: { address: "CN|吉林|长春|None|CERNET|1|None", content: { address: "吉林省长春市", address_detail: { city: "长春市", city_code: 53, district: "", province: "吉林省", street: "", street_number: "" }, point: { x: "125.31364243", y: "43.89833761" } }, status: 0 } 精准的服务: http://lbsyun.baidu.com/index.php?title=webapi/high-acc-ip https://api.map.baidu.com/highacciploc