首页 文章 精选 留言 我的

精选列表

搜索[加密工具],共10000篇文章
优秀的个人博客,低调大师

使用wxpy这个基于python实现的微信工具库的一些常见问题

使用如下的命令行安装: pip install wxpy Collecting wxpy Downloading https://files.pythonhosted.org/packages/6b/ac/8fc4561551489f36/wxpy-0.3.9.8.tar.gz (45kB) 100% | 51kB 98kB/s Collecting itchat==1.2.32 (from wxpy) Downloading https://files.pythonhosted.org/packages/61/6d/493fec62ed7bb343/itchat-1.2.32-py2.py3-none-any.whl Requirement already satisfied: requests in c:myapppy20180816Requirement already satisfied: future in c:myapppy20180816lom wxpy) (0.16.0) Collecting pyqrcode (from itchat==1.2.32->wxpy) Downloading https://files.pythonhosted.org/packages/37/61/f0884ac68d979316/PyQRCode-1.2.1.tar.gz Collecting pypng (from itchat==1.2.32->wxpy) Downloading https://files.pythonhosted.org/packages/bc/fb/f7017663467f5147/pypng-0.0.20.tar.gz (649kB) Requirement already satisfied: certifi>=2017.4.17 in c:myapp\ wxpy) (2018.8.13) Requirement already satisfied: chardet<3.1.0,>=3.0.2 in c:mya ts->wxpy) (3.0.4) Requirement already satisfied: urllib3<1.24,>=1.21.1 in c:myats->wxpy) (1.23) 在python文件wechat.py里使用这个库的时候,如果遇到如下的错误消息:ModuleNotFoundError: No module named PIL 解决方法是安装pillow这个库: pip install pillow 如果遇到下面这个超时的错误: Retrying (Retry(total-1, connect=None, read=None, redirect=None, status-None)) aftery 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out./simple/pillow/ 可以使用国内镜像代替: 因为wxpy这个库背后其实使用的是微信网页版的功能,所以如果你的python程序在使用wxpy不能正常工作时,先检查你的微信账号是否能够成功登录微信网页版,如果遇到下列这种提示,说明你的微信账号无法使用wxpy库。 本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

优秀的个人博客,低调大师

[雪峰磁针石博客]数据分析工具pandas快速入门教程5-处理缺失数据

第5章 缺失数据 介绍 很少没有任何缺失值的数据集。 有许多缺失数据的表示。 在数据库中是NULL值,一些编程语言使用NA。缺失值可以是空字符串:''或者甚至是数值88或99等。Pandas显示缺失值为NaN。 本章将涵盖: 什么是缺失值 如何创建缺失值 如何重新编码并使用缺失值进行计算 什么是缺失值 可以从numpy中获得NaN值,在Python中看到缺失值使用几种方式显示:NaN,NAN或nan,他们都是相等的。 NaN不等于0或空字符串''。 In [1]: from numpy import NaN, NAN, nan In [2]: print(NaN == True, NaN == False, NaN == 0, NaN == '', sep='|') False|False|False|False In [3]: print(NaN == NaN, NaN == nan, NaN == NAN, nan == NAN, sep='|') False|False|False|False In [4]: import pandas as pd In [5]: print(pd.isnull(NaN), pd.isnull(nan), pd.isnull(NAN), sep='|') True|True|True In [6]: print(pd.notnull(NaN), pd.notnull(99), pd.notnull("https://china-testing.github.io"), sep='|') False|True|True 缺失值的来源 来自加载数据或数据处理 加载数据 当我们加载数据时,pandas会自动找到该缺少数据的单元格,并填充NaN值。在read_csv函数中,参数na_values, keep_default_na, na_filter用于处理缺失值。比如:na_values=[99]。na_filter设置为False,在读大文件时会提升性能。 5-1.py import pandas as pd visited_file = 'data/survey_visited.csv' print(pd.read_csv(visited_file)) print(pd.read_csv(visited_file, keep_default_na=False)) print(pd.read_csv(visited_file, na_values=[''], keep_default_na=False)) 执行结果 $ python3 5-1.py ident site dated 0 619 DR-1 1927-02-08 1 622 DR-1 1927-02-10 2 734 DR-3 1939-01-07 3 735 DR-3 1930-01-12 4 751 DR-3 1930-02-26 5 752 DR-3 NaN 6 837 MSK-4 1932-01-14 7 844 DR-1 1932-03-22 ident site dated 0 619 DR-1 1927-02-08 1 622 DR-1 1927-02-10 2 734 DR-3 1939-01-07 3 735 DR-3 1930-01-12 4 751 DR-3 1930-02-26 5 752 DR-3 6 837 MSK-4 1932-01-14 7 844 DR-1 1932-03-22 ident site dated 0 619 DR-1 1927-02-08 1 622 DR-1 1927-02-10 2 734 DR-3 1939-01-07 3 735 DR-3 1930-01-12 4 751 DR-3 1930-02-26 5 752 DR-3 NaN 6 837 MSK-4 1932-01-14 7 844 DR-1 1932-03-22 合并数据 import pandas as pd visited = pd.read_csv('data/survey_visited.csv') survey = pd.read_csv('data/survey_survey.csv') print(visited) print(survey) vs = visited.merge(survey, left_on='ident', right_on='taken') print(vs) 执行结果 $ python3 5-2.py ident site dated 0 619 DR-1 1927-02-08 1 622 DR-1 1927-02-10 2 734 DR-3 1939-01-07 3 735 DR-3 1930-01-12 4 751 DR-3 1930-02-26 5 752 DR-3 NaN 6 837 MSK-4 1932-01-14 7 844 DR-1 1932-03-22 taken person quant reading 0 619 dyer rad 9.82 1 619 dyer sal 0.13 2 622 dyer rad 7.80 3 622 dyer sal 0.09 4 734 pb rad 8.41 5 734 lake sal 0.05 6 734 pb temp -21.50 7 735 pb rad 7.22 8 735 NaN sal 0.06 9 735 NaN temp -26.00 10 751 pb rad 4.35 11 751 pb temp -18.50 12 751 lake sal 0.10 13 752 lake rad 2.19 14 752 lake sal 0.09 15 752 lake temp -16.00 16 752 roe sal 41.60 17 837 lake rad 1.46 18 837 lake sal 0.21 19 837 roe sal 22.50 20 844 roe rad 11.25 ident site dated taken person quant reading 0 619 DR-1 1927-02-08 619 dyer rad 9.82 1 619 DR-1 1927-02-08 619 dyer sal 0.13 2 622 DR-1 1927-02-10 622 dyer rad 7.80 3 622 DR-1 1927-02-10 622 dyer sal 0.09 4 734 DR-3 1939-01-07 734 pb rad 8.41 5 734 DR-3 1939-01-07 734 lake sal 0.05 6 734 DR-3 1939-01-07 734 pb temp -21.50 7 735 DR-3 1930-01-12 735 pb rad 7.22 8 735 DR-3 1930-01-12 735 NaN sal 0.06 9 735 DR-3 1930-01-12 735 NaN temp -26.00 10 751 DR-3 1930-02-26 751 pb rad 4.35 11 751 DR-3 1930-02-26 751 pb temp -18.50 12 751 DR-3 1930-02-26 751 lake sal 0.10 13 752 DR-3 NaN 752 lake rad 2.19 14 752 DR-3 NaN 752 lake sal 0.09 15 752 DR-3 NaN 752 lake temp -16.00 16 752 DR-3 NaN 752 roe sal 41.60 17 837 MSK-4 1932-01-14 837 lake rad 1.46 18 837 MSK-4 1932-01-14 837 lake sal 0.21 19 837 MSK-4 1932-01-14 837 roe sal 22.50 20 844 DR-1 1932-03-22 844 roe rad 11.25 用户输入 import pandas as pd from numpy import NaN, NAN, nan num_legs = pd.Series({'goat': 4, 'amoeba': nan}) print(num_legs) scientists = pd.DataFrame({'Name': ['Rosaline Franklin', 'William Gosset'], 'Occupation': ['Chemist', 'Statistician'], 'Born': ['1920-07-25', '1876-06-13'], 'Died': ['1958-04-16', '1937-10-16'], 'missing': [NaN, nan]}) print(scientists) scientists['missing'] = nan print(scientists) 执行结果 $ python3 5-3.py amoeba NaN goat 4.0 dtype: float64 Born Died Name Occupation missing 0 1920-07-25 1958-04-16 Rosaline Franklin Chemist NaN 1 1876-06-13 1937-10-16 William Gosset Statistician NaN Born Died Name Occupation missing 0 1920-07-25 1958-04-16 Rosaline Franklin Chemist NaN 1 1876-06-13 1937-10-16 William Gosset Statistician NaN 重新索引 5-4.py import pandas as pd from numpy import NaN, NAN, nan gapminder = pd.read_csv('data/gapminder.tsv', sep='\t') life_exp = gapminder.groupby(['year'])['lifeExp'].mean() print(life_exp) print(life_exp.reindex(range(2000, 2010))) 执行结果 year 1952 49.057620 1957 51.507401 1962 53.609249 1967 55.678290 1972 57.647386 1977 59.570157 1982 61.533197 1987 63.212613 1992 64.160338 1997 65.014676 2002 65.694923 2007 67.007423 Name: lifeExp, dtype: float64 year 2000 NaN 2001 NaN 2002 65.694923 2003 NaN 2004 NaN 2005 NaN 2006 NaN 2007 67.007423 2008 NaN 2009 NaN Name: lifeExp, dtype: float64 处理缺失数据 统计缺失数据 5-5.py import pandas as pd from numpy import NaN, NAN, nan import numpy as np ebola = pd.read_csv('data/country_timeseries.csv') print(ebola.head()) print(ebola.count()) num_rows = ebola.shape[0] print("num_rows") print(num_rows) num_missing = num_rows - ebola.count() print("num_missing:") print(num_missing) print(np.count_nonzero(ebola.isnull())) print(np.count_nonzero(ebola['Cases_Guinea'].isnull())) print(ebola.Cases_Guinea.value_counts(dropna=False).head()) 执行结果 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone \ 0 1/5/2015 289 2776.0 NaN 10030.0 1 1/4/2015 288 2775.0 NaN 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 NaN 8157.0 NaN 4 12/31/2014 284 2730.0 8115.0 9633.0 Cases_Nigeria Cases_Senegal Cases_UnitedStates Cases_Spain Cases_Mali \ 0 NaN NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN 2 NaN NaN NaN NaN NaN 3 NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN Deaths_Guinea Deaths_Liberia Deaths_SierraLeone Deaths_Nigeria \ 0 1786.0 NaN 2977.0 NaN 1 1781.0 NaN 2943.0 NaN 2 1767.0 3496.0 2915.0 NaN 3 NaN 3496.0 NaN NaN 4 1739.0 3471.0 2827.0 NaN Deaths_Senegal Deaths_UnitedStates Deaths_Spain Deaths_Mali 0 NaN NaN NaN NaN 1 NaN NaN NaN NaN 2 NaN NaN NaN NaN 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN Date 122 Day 122 Cases_Guinea 93 Cases_Liberia 83 Cases_SierraLeone 87 Cases_Nigeria 38 Cases_Senegal 25 Cases_UnitedStates 18 Cases_Spain 16 Cases_Mali 12 Deaths_Guinea 92 Deaths_Liberia 81 Deaths_SierraLeone 87 Deaths_Nigeria 38 Deaths_Senegal 22 Deaths_UnitedStates 18 Deaths_Spain 16 Deaths_Mali 12 dtype: int64 num_rows 122 num_missing: Date 0 Day 0 Cases_Guinea 29 Cases_Liberia 39 Cases_SierraLeone 35 Cases_Nigeria 84 Cases_Senegal 97 Cases_UnitedStates 104 Cases_Spain 106 Cases_Mali 110 Deaths_Guinea 30 Deaths_Liberia 41 Deaths_SierraLeone 35 Deaths_Nigeria 84 Deaths_Senegal 100 Deaths_UnitedStates 104 Deaths_Spain 106 Deaths_Mali 110 dtype: int64 1214 29 NaN 29 86.0 3 495.0 2 112.0 2 390.0 2 Name: Cases_Guinea, dtype: int64 处理缺失数据 5-6.py import pandas as pd from numpy import NaN, NAN, nan import numpy as np ebola = pd.read_csv('data/country_timeseries.csv') print(ebola.iloc[0:10, 0:5]) print(ebola.fillna(0).iloc[0:10, 0:5]) # 前向填充 print(ebola.fillna(method='ffill').iloc[0:10, 0:5]) # 后向填充 print(ebola.fillna(method='bfill').iloc[0:10, 0:5]) print(ebola.interpolate().iloc[0:10, 0:5]) print(ebola.shape) ebola_dropna = ebola.dropna() print(ebola_dropna.shape) print(ebola_dropna) ebola['Cases_multiple'] = ebola['Cases_Guinea'] + ebola['Cases_Liberia'] + \ ebola['Cases_SierraLeone'] ebola_subset = ebola.loc[:, ['Cases_Guinea', 'Cases_Liberia', 'Cases_SierraLeone', 'Cases_multiple']] print(ebola_subset.head(n=10)) print(ebola.Cases_Guinea.sum(skipna = True)) print(ebola.Cases_Guinea.sum(skipna = False)) 执行结果 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone 0 1/5/2015 289 2776.0 NaN 10030.0 1 1/4/2015 288 2775.0 NaN 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 NaN 8157.0 NaN 4 12/31/2014 284 2730.0 8115.0 9633.0 5 12/28/2014 281 2706.0 8018.0 9446.0 6 12/27/2014 280 2695.0 NaN 9409.0 7 12/24/2014 277 2630.0 7977.0 9203.0 8 12/21/2014 273 2597.0 NaN 9004.0 9 12/20/2014 272 2571.0 7862.0 8939.0 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone 0 1/5/2015 289 2776.0 0.0 10030.0 1 1/4/2015 288 2775.0 0.0 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 0.0 8157.0 0.0 4 12/31/2014 284 2730.0 8115.0 9633.0 5 12/28/2014 281 2706.0 8018.0 9446.0 6 12/27/2014 280 2695.0 0.0 9409.0 7 12/24/2014 277 2630.0 7977.0 9203.0 8 12/21/2014 273 2597.0 0.0 9004.0 9 12/20/2014 272 2571.0 7862.0 8939.0 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone 0 1/5/2015 289 2776.0 NaN 10030.0 1 1/4/2015 288 2775.0 NaN 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 2769.0 8157.0 9722.0 4 12/31/2014 284 2730.0 8115.0 9633.0 5 12/28/2014 281 2706.0 8018.0 9446.0 6 12/27/2014 280 2695.0 8018.0 9409.0 7 12/24/2014 277 2630.0 7977.0 9203.0 8 12/21/2014 273 2597.0 7977.0 9004.0 9 12/20/2014 272 2571.0 7862.0 8939.0 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone 0 1/5/2015 289 2776.0 8166.0 10030.0 1 1/4/2015 288 2775.0 8166.0 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 2730.0 8157.0 9633.0 4 12/31/2014 284 2730.0 8115.0 9633.0 5 12/28/2014 281 2706.0 8018.0 9446.0 6 12/27/2014 280 2695.0 7977.0 9409.0 7 12/24/2014 277 2630.0 7977.0 9203.0 8 12/21/2014 273 2597.0 7862.0 9004.0 9 12/20/2014 272 2571.0 7862.0 8939.0 Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone 0 1/5/2015 289 2776.0 NaN 10030.0 1 1/4/2015 288 2775.0 NaN 9780.0 2 1/3/2015 287 2769.0 8166.0 9722.0 3 1/2/2015 286 2749.5 8157.0 9677.5 4 12/31/2014 284 2730.0 8115.0 9633.0 5 12/28/2014 281 2706.0 8018.0 9446.0 6 12/27/2014 280 2695.0 7997.5 9409.0 7 12/24/2014 277 2630.0 7977.0 9203.0 8 12/21/2014 273 2597.0 7919.5 9004.0 9 12/20/2014 272 2571.0 7862.0 8939.0 (122, 18) (1, 18) Date Day Cases_Guinea Cases_Liberia Cases_SierraLeone \ 19 11/18/2014 241 2047.0 7082.0 6190.0 Cases_Nigeria Cases_Senegal Cases_UnitedStates Cases_Spain Cases_Mali \ 19 20.0 1.0 4.0 1.0 6.0 Deaths_Guinea Deaths_Liberia Deaths_SierraLeone Deaths_Nigeria \ 19 1214.0 2963.0 1267.0 8.0 Deaths_Senegal Deaths_UnitedStates Deaths_Spain Deaths_Mali 19 0.0 1.0 0.0 6.0 Cases_Guinea Cases_Liberia Cases_SierraLeone Cases_multiple 0 2776.0 NaN 10030.0 NaN 1 2775.0 NaN 9780.0 NaN 2 2769.0 8166.0 9722.0 20657.0 3 NaN 8157.0 NaN NaN 4 2730.0 8115.0 9633.0 20478.0 5 2706.0 8018.0 9446.0 20170.0 6 2695.0 NaN 9409.0 NaN 7 2630.0 7977.0 9203.0 19810.0 8 2597.0 NaN 9004.0 NaN 9 2571.0 7862.0 8939.0 19372.0 84729.0 nan 参考资料 技术支持qq群144081101 591302926 567351477 钉钉免费群21745728 本文最新版本地址 本文涉及的python测试开发库 谢谢点赞! 本文相关海量书籍下载 源码下载 本文英文版书籍下载

优秀的个人博客,低调大师

分布式系统开发工具包 —— 基于Kryo的Java对象序列化

Kryo是用于Java语言的一个快速和高效的对象图序列化框架。Kryo项目的目的是快速、高效、方便地使用API。当需要持久化对象的时候,不论是持久化到文件、数据库还是网络,都可以使用Kryo。 目前Kryo已经到了4.0.1版本以上了。本文的介绍适用于V2.0+以上版本。 安装Kryo 一般适用maven来Kryo包。 使用官方版的Kryo的话可以引用下述配置代码 <dependency> <groupId>com.esotericsoftware</groupId> <artifactId>kryo</artifactId> <version>4.0.1</version> </dependency> 如果你已经在你的classpath下有了不同版本的asm了的话,上述依赖可能会碰到问题。这时你可以使用kyro-shaded jar包,它自身包含了它所需版本的asm,并且是位于在不同包里的。 <dependency> <groupId>com.esotericsoftware</groupId> <artifactId>kryo-shaded</artifactId> <version>4.0.1</version> </dependency> 如果你想试用最新的特性 <repository> <id>sonatype-snapshots</id> <name>sonatype snapshots repo</name> <url>https://oss.sonatype.org/content/repositories/snapshots</url> </repository> <dependency> <groupId>com.esotericsoftware</groupId> <artifactId>kryo</artifactId> <version>4.0.1-SNAPSHOT</version> </dependency> 开始使用Kryo库 import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Output; import com.esotericsoftware.kryo.io.Input; // ... Kryo kryo = new Kryo(); // ... Output output = new Output(new FileOutputStream("file.bin")); SomeClass someObject = ... kryo.writeObject(output, someObject); output.close(); // ... Input input = new Input(new FileInputStream("file.bin")); SomeClass someObject = kryo.readObject(input, SomeClass.class); input.close(); Kryo类编排序列化,Output和Input类处理缓存字节和刷新到流中。 参考连接: Kryo官网 用于网络的Kryo Kryo为什么比Hessian快 原文发布于:http://www.yesdata.net/2018/03/17/kyro/

优秀的个人博客,低调大师

一步一步以安装包的方式,搭建API测试工具Hitchhiker

首先要感谢Hitchhiker的作者BrookShi(https://github.com/brookshi/Hitchhiker)!感谢他分享这个非常棒的API测试平台。Hitchhiker 是一个基于Nodejs的跨平台Web程序,你可以部署到 Linux, Mac or Windows。Hitchhiker 在Docker Hub上也有镜像可以使用,所以推荐的方式还是用Docker来部署,不论是首次还是以后升级都会更容易。 由于笔者不熟悉Docker的使用,采用的是安装包方式部署。由于Hitchhiker依赖的软件较多,部署过程中遇到一些弯路,这个文档也是一边探索一边写成的。搭建时还是1月底,基于Hitchhiker v0.8,现在已经更新到0.9。最近忙于研究Python自动化方面的工作,没有把搭建文档发布到博客园。 首先是准备工作: 安装Development Tools 安装(更新)Python3 安装Node 更新C++ 安装MySQL Server 最后是我们的主角Hitchhiker: 这部分的搭建步骤,请参阅在线文档:http://doc.hitchhiker-api.com/cn/installation/StepByStep.html 1. 更新系统: 我的系统是CentOS 7.3。 # yum update -y # yum group install -y "Development Tools" 2. 升级Python到Python3 Nodejs需要,请安装python前,先安装此模块。 # yum install -y bzip2* 安装依赖组件: # yum install -y zlib zlib-devel # yum install -y gcc gcc-c++ kernel-devel 下载Python的压缩包,并解压: # wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz # xz -d Python-3.6.4.tar.xz # tar xvf Python-3.6.4.tar # cd Python-3.6.4 创建安装文件夹,并开始编译: # mkdir /usr/local/python3 # ./configure --prefix=/usr/local/python3 --enable-optimizations # make && make install 添加到环境变量: export PATH=$PATH:/usr/local/python3/bin 确认安装完成: # which python # python -V 替换系统中原有的python2: /usr/bin目录中有python, python2.7, python2三个文件,其实都是指向python2.7的,这里将python(软连接文件)删除。 # cd /usr/bin # rm -f python 重新创建python的软连接文件,指向python3.6: # ln -s /usr/local/python3/bin/python3.6 /usr/bin/python # python -V 检查python的版本是否被正确替换掉了。 收尾替换工作: 原则:所有python相关的应用,如果为使用/usr/bin/python开头的脚本统统替换掉,如果其只能在python2.7下执行,则替换为python2.7。比如,不替换的话,yum命令将无法执行。 根据网路上的信息,相关的文件可能有如下, 具体情况视具体情况而定: -/usr/bin/yum -/usr/libexec/urlgrabber-ext-down 很容易,编辑/usr/bin/yum,在第一行的末尾增加一个2就好了。 修改前:#! /usr/bin/python 修改后:#! /usr/bin/python2 3. 安装NodeJS 首先从官网下载NodeJS源码: http://nodejs.org/ 命令:wget http://nodejs.org/dist/<版本号>/node-<版本号>.tar.gz # wget https://nodejs.org/dist/v8.9.4/node-v8.9.4.tar.gz 安装nodejs所要依赖的包 安装gcc: # yum install -y gcc gcc-c++ 安装libssl-dev: # yum install -y openssl-devel 解压NodeJS源码文件: # tar zxvf node-v8.9.4.tar.gz # cd node-v8.9.4 配置Node安装目录: # mkdir -p /usr/local/node # ./configure --prefix=/usr/local/node 此时可能会提示C++版本太旧,需要更新: WARNING: C++ compiler too old, need g++ 4.9.4 or clang++ 3.4.2 (CXX=g++) 如果出现C++版本太旧的提示内容,中断Node的安装,转到下一段落,更新C++的部分。 4. 更新C++ 从Node的目录中退出来,下载gcc源码压缩包。 到下面的网站上查找gcc源码: http://gcc.skazkaforyou.com/releases/ # wget http://gcc.skazkaforyou.com/releases/gcc-4.9.4/gcc-4.9.4.tar.gz 如果下载很慢,可能需要扶梯。 下载完成后,解压缩: # tar zxvf gcc-4.9.4.tar.gz # cd gcc-4.9.4 运行download_prerequisites脚本,这个脚本会自动帮你下载所需要的依赖文件和库: # ./contrib/download_prerequisites 等下载完成后,继续执行后续命令。 创建输出目录: # mkdir gcc-build-4.9.4 # cd gcc-build-4.9.4 # ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib 生成make文件: # make 编译过程非常久,大概需要一个小时。 安装gcc: # make install 完成后,需要用新的动态库文件,代替系统原有的旧版本: 查找编译gcc时生成的最新动态库: # find / -name "libstdc++.so*" 如上图所示,/usr/lib64目录下,没有新版本的libstdc++.so.6.0.20。 将找到的动态库libstdc++.so.6.0.20复制到/usr/lib64目录: # cp /root/downloads/gcc-4.9.4/gcc-build-4.9.4/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20 /usr/lib64/ 切换工作目录至/usr/lib64;由于libstdc++.so.6对应的是旧版本文件,删除原来的软连接: # cd /usr/lib64 # ll libstdc++.so.6* # rm -rf libstdc++.so.6 将默认库的软连接指向最新动态库: # ln -s libstdc++.so.6.0.20 libstdc++.so.6 更新C++的工作完成后,继续Node的安装。 回到node的源代码目录,继续编译并安装Node的源码: # ./configure --prefix=/usr/local/node # make && make install 验证安装是否成功: # node -v如果看到以下错误提示: 原因是,在/usr/local/bin目录中没有node可执行文件,需要手工添加到环境变量。export PATH=$PATH:/usr/local/node/bin 5.安装MySQL 安装前,先删除系统预装的MariaDB。 - 因为CentOS的默认数据库已经不再是MySQL了,而是MariaDB,为什么呢? MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。 查看当前安装的mariadb包: # rpm -qa | grep mariadb 卸载mariadb: # rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64 Mysql数据库安装过程如下: 下载mysql的repo源(CentOS 7.2的yum源中默认没有mysql,要先下载mysql的repo源): # wget http://repo.mysql.com/mysql57-community-release-el7.rpm 安装mysql57-community-release-el7.rpm包: # rpm -ivh mysql57-community-release-el7.rpm --nodeps --force 安装这个包后,会获得两个mysql的yum repo源: # ls -l /etc/yum.repos.d/mysql-community* 确认存在下列两个repo源文件: - mysql-community.repo- mysql-community-source.repo 安装mysql: # yum install -y mysql-server 启用mysql服务: # systemctl enable mysqld # systemctl start mysqld 查看MySQL服务是否已启动: # systemctl status mysqld 重置root密码: MySQL5.7会在安装后为root用户生成一个随机密码,而不是像以往版本的空密码。可以安全模式修改root登录密码或者用随机密码登录修改密码。 MySQL为root用户生成的随机密码通过mysqld.log文件可以查找到: # grep 'temporary password' /var/log/mysqld.log # mysql -u root -p mysql> Enter password: (输入刚才查询到的随机密码, NjAh84pp,(-g) 修改root用户密码:(MySQL的密码策略比较复杂,过于简单的密码会被拒绝)。首先修改安全策略,避免过于简单的密码被拒绝: mysql> set global validate_password_policy=0; mysql> set global validate_password_length=4; 重置用户密码,完成后,保存退出:: mysql> alter user 'root'@'localhost' identified by 'root-1234'; mysql> flush privileges; mysql> quit; 使用刚刚设置的新密码登录: # mysql -u root -p 如果进行操作出现下面的提示: You must reset your password using ALTER USER statement before executing this statement. 就再设置一遍密码: mysql> set password = password('root-1234'); 开放3306端口: 允许使用用户名root密码root-1234从任何主机连接到mysql服务器。 mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root-1234' WITH GRANT OPTION; mysql> FLUSH PRIVILEGES; 以上是Hitchhiker所有依赖的组建安装,后面的步骤请阅读官方手册。 这里说一下,如果运行node setup.js时,看到错误提示: /bin/sh: pm2: command not found 这是由于pm2没有安装,解决方法如下: # npm install pm2 -g # whereis pm2 创建pm2的软连接文件 # ls -n /usr/local/node/bin/pm2 /usr/bin/pm2 然后再次执行node setup.js,就可以打开Hitchhiker的设置页面了。 另外,BrookShi已经在最新的文档中注明了,如果是升级,记得保留pm2.json,这里有你所有的配置,如果覆盖了需要重新设置! 升级时,可以拷贝build/pm2.json文件到别处、移动旧版本Hitchhiker文件夹到备份目录。然后,解压Hitchhiker最新版的zip文件到原路径,再用之前的pm2.json文件覆盖同名文件就好了。 关于Hitchhiker的启动,可以写一个小脚本,runAPP.sh: # vim runApp.sh pm2 start ./pm2.json & # chmod +x runApp.sh

优秀的个人博客,低调大师

exe2hex - 使用Windows工具DEBUG.exe或PowerShell进行内联文件传输

版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396425 参考文章:1、https://howucan.gr/scripts-tools/2368-exe2hex-inline-file-transfer-using-in-built-windows-tools-debug-exe-or-powershell2、https://github.com/g0tmi1k/exe2hex 安装: exe2hex只需要Python 3的功能(Expect是Telnet和WinEXE功能的可选)。 需在$PATH变量中添加一个文件夹exe2hex即可: $ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin $ curl https://raw.githubusercontent.com/g0tmi1k/exe2hex/master/exe2hex.py > /usr/local/bin/exe2hex $ chmod 0755 /usr/local/bin/exe2hex root@kali:~# apt install -y exe2hexbat github页面有相对详细的介绍。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册