猎豹移动发布2019年第二季度财报,面对营收下滑、股价高开低走、负面风波不断,用户持续流失,猎豹移动可能正站在了十字路口。

8月20日,猎豹移动2019第二季度财报显示,营业收入为9.7亿元,这是近年来猎豹移动单季收入首次跌破10亿元大关。为了提振股价,猎豹移动宣布将于9月30日派发特别现金股息,涉及人民币约5亿元。但从市场反应来看,成效不大。 阅读全文

汇编语言程序的开发过程:

Win32可执行文件叫做PE文件。

程序员的工作分创建代码和创建资源两部分 :

用include语句包含数据定义和函数声明的头文件 。

Windows.inc文件定义了Win32 API中很多参数和数据结构。

资源文件是一种类似“脚本”的文本文件,其中.rc用不同的语法定义了不同类型的资源 。

资源脚本文件用到很多预定义值,一般由资源头文件来导入。MASM32软件包中的资源头文件是Resource.h。

Win32中这种只包含位置信息的动态库文件称为导入库。

1 下载安装masm32

MASM是Microsoft Macro Assembler 的缩写,是微软公司为x86微处理器家族开发的汇编开发环境。

masm从 6.0 版开始 MASM 就改名 ML 了,因为它把编译和连接组合在一起了。而且 6.0 版还对汇编语言进行了大幅改造,使之支持高级语言的很多特性。 6.0 版之后常看到的就是 6.11 、 6.13 、 6.14 MASM32(V8.0 和 V9.0) 。但 Microsoft 从 6.15 版( 2000 年 4 月发布)开始好象就不再单独发布 MASM 的开发工具包了。

http://www.masm32.com/

点击其中的“download“按钮,按提示会下载到一个masm32v11r压缩文件,解压到D:\masm32v11r,解压后得到一个5M的install.exe文件,运行后会将文件加载到一个D:\masm32的文件夹中,并有以下对话框,点击“yes“即可。

2 利用qeditor.exe编辑asm文件

输入以下内容

.386
.model flat, stdcall
option casemap:none
include D:\masm32\include\windows.inc
Include D:\masm32\include\kernel32.inc
include D:\masm32\include\\user32.inc
includelib D:\masm32\lib\kernel32.lib
includelib D:\masm32\lib\\user32.lib
.data
MsgBoxCaption db "win32 example",0
MsgBoxText db "Win32 Assembly is Great! ",0
.code
start:
invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK
invoke ExitProcess, NULL
end start
阅读全文

在以前的一个项目中,觉得登录注册的加密方式不安全,需要改造一下,就用到了RSA加密。网上都说它是最安全的,现有的技术是无法破解的。我知道的京东的登录和国寿的登录都是用的这个加密。我想整理一下,肯定会有人用的到的。

  • RSA加密的介绍
  • RSA加密的好处
  • RSA加密和解密的讲解
  • RSA签名和验签的讲解
  • RSA测试
  • RSA加密的应用

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。

要说它的好处,觉得有必要先说一下常用的几种加密的方式的劣势。

MD5加密在开发中用的比较多,一般应用在登录密码的加密或者接口的验签。同样的参数,它的加密结果是一样的,如果密码相对简单,被盗取的话,通过大数据是可以查询的你的铭文密码的。因为它是不可解密的,所以在接口也只能作为验签使用,而不能对数据进行加密传输。

base64加密因为是可以反解密的,所以它就谈不上安全了。

AES加密是我们接口对接一直在用的,它是对称加密,要求key是一样的,容易造成key的泄露。没有RES加密显的安全。

RSA加密,它是非对称的加密算法,也就是加密的秘钥(公钥)和解密的秘钥(私钥)是不一样的。并且相同的参数每次加密的结果都不一样,这样可以保证你的数据即使被盗取了,也没有办法通过大数据的方法到你的明文数据。在对接的过程中,暴露的永远是你的公钥,所以数据是绝对安全的。

加密是为了防止信息泄露。

RSA加密的公钥和私钥的长度是可以定义的,目前是没有上限。主流密钥长度至少都是1024bits以上,也就是最少128个字节(Bytes),少于这个长度会有安全问题。

RSA加密明文的长度不能大于秘钥的长度,但是由于明文长度小于秘钥长度的时候,需要进行填充(padding)占用11字节,所以0<加密明文的长度<秘钥长度-1

这里我们定义秘钥的长度为1024bits

//RSA最大加密明文大小
private static final int MAX_ENCRYPT_BLOCK = 117;
// RSA最大解密密文大小
private static final int MAX_DECRYPT_BLOCK = 128;
// 获取密钥对
public static KeyPair getKeyPair() throws Exception {
KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
generator.initialize(1024);//定义秘钥长度为1024
return generator.generateKeyPair();
}

// 获取私钥
public static PrivateKey getPrivateKey(String privateKey) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] decodedKey = Base64.decodeBase64(privateKey.getBytes());
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(decodedKey);
return keyFactory.generatePrivate(keySpec);
}

//获取公钥
public static PublicKey getPublicKey(String publicKey) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
byte[] decodedKey = Base64.decodeBase64(publicKey.getBytes());
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decodedKey);
return keyFactory.generatePublic(keySpec);
}
阅读全文

原文转载于https://blog.csdn.net/langeldep/article/details/7069874

如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大。我写这篇文章并不是想贬低windows下面开发的人,做windows开发的人看了可能会感觉不舒服,我并不是这个意思,我只是说说我自己的感受,我最早开始学习编程也是在windows下面的, 学的是VB,后来转到VC++,当时用的是VC6.0, 做windows下面的开发5年后转入linux下面做开发的,开始在linux下面做开发的时候, 也做过很多windows下面的项目,在linux下面做开发确实比我在windows下面做开发多学到了很多的东西,从开源代码里面吸取了丰富的营养,我不是说我是个高手, 只是说在linux下面学习,你会进步的更快。

不过我需要强调一下,我这里说的是 “大部分情况下”,意思就是说“在同样勤奋,同样努力程度,同样基础知识,同样工作年限,同样是做应用程序的开发” 的情况下,如果说的不对,希望大家在下面发表看法。

可能大家会奇怪, 为何会出现这种情况呢 ?

听我慢慢道来!

第一:闭源与开源

windows下面的程序基本都是封闭源代码的,特别是10年前,在windows下可以说找不到可用的开源的软件,现在的情况比以前好多了, 很多linux下面开源的程序被移植到windows下面来,但是linux下面开源的程序增加的更多了。

以前在windows下面写应用程序, 需要用到MFC,WINSOCK,ODBC,FILE IO等, 可以找资料的地方主要是微软官方的文档MSDN,也只有MSDN才是最全的地方,下来是第三方网站 vckbase, CSDN, codeproject 这几个网站。 但是从这些网站找到的代码,都是针对一个特定的小功能,为了演示如何实现这个小功能而写的代码,写代码的水平参差不齐,风格各异,都是一些demo性质的小东西,简单研究看看代码就可以集成到自己的应用程序里面。如何构建一个完整的应用程序, 架构良好的应用程序, 大学里面不会教你, 一切都得靠自己摸索,在公司里面做项目获得提升,直到项目商用,后期维护修改代码时, 回头看自己写的代码, 才深刻体会到,自己当时写的代码架构是多么的不合理,维护修改是如此的困难。如果在互联网上找不到自己需要的资料,就只能靠自己想一些实现的方法,虽然功能完成了, 可能完成的时候还很有成就感,但是等那天你突然发现有人实现这个功能,并且用了一个巧妙的方法, 这是你才突然恍悟, 我当时为何就想不到这么实现呢? 在windows下面开发, 不太容易找到可以参考的类似你要完成功能的开源项目。一切都得靠自己。但是在linux下面就不一样了, 当你要开发一个新项目时, 可以想想有没有什么开源项目也完成了类似的功能, 可以下载到源代码来做一个参考, 对其中的算法, 架构设计等做一个详细的了解,然后自己开发的时候就会比较得心应手了,可以避免别人犯过的错误,少走很多弯路。

第二:要学习的知识量不一样

学习window下的开发, 你需要学习很多的Windows API,截止到2009年9月,Windows总API数量为2258个, 并且Windows API 的参数多, 参数类型复杂,要记住这么多东西不是一件容易的事情,至少也和学习一门外语一样,大学英语四级要求掌握的总词汇量达到4500个单词。可想而知, 学会这么多的API用法,有多难了吧。那么学习linux下, 要掌握多少API呢 ? linux下的内核API, 全部算下来也才335,但是这些内核的API只有编写驱动的时候才能用到, 开发应用程序基本用不到内核的API,开发应用程序的API基本都是C的API,而 Linux所有的C的API个数是279个, 也就是说你只需要掌握不到300个的API, 就可以顺利的在linux下面开发应用程序了,相比学习windows下面的那一堆API来说, 你是不是可以省下很多时间来学习其他知识呢?

下面我就举个简单的例子:

CreateFile

ReadFile

OpenFile

WriteFile

DeleteFile

ReadFileEx

WriteFileEx

CloseHandle

上面这些API是windows下面对文件操作的API, 总共是8个,看看CreateFile的参数吧,

HANDLE WINAPI CreateFile(
__in LPCTSTR lpFileName,
__in DWORD dwDesiredAccess,
__in DWORD dwShareMode,
__in LPSECURITY_ATTRIBUTES lpSecurityAttributes,
__in DWORD dwCreationDisposition,
__in DWORD dwFlagsAndAttributes,
__in HANDLE hTemplateFile);
阅读全文

今日柠檬给大家推荐一本linux程序设计必读的书籍!

《Linux命令行与shell脚本编程大全》!

内 容 提 要

这是一本关于 Linux 命令行与 shell 脚本编程的全方位教程,主要包括四大部分 :Linux 命令行,shell脚本编程基础,高级 shell 脚本编程,如何创建实用的 shell 脚本。本书针对 Linux 系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的 shell 脚本。本书适合 Linux 程序设计人员阅读。 阅读全文

PyCharm pro for Mac一款拥有强大智能编辑功能的python ide开发工具,相比于同类的ide开发工具所具备的功能,远程开发很好的帮助了用户进行项目的协同开发操作,通过远程解释器,集成的ssh终端,Docker和Vagrant集成,在远程主机或虚拟机上运行,调试,测试和部署应用程序,完善的解决了项目集成开发过程中的困扰,同时软件拥有更容易配置且基于SSH的Python解释器,为web开发框架提供了完善的框架支持,极大的提升了开发者在python程序开发过程中的编码环境体验。 阅读全文

大盘五连阳且五连涨的走势点燃了资金的做多热情,结构性行情明显回暖。当前不谈牛市,而谈结构市,没跟对热点没买对股的话仍可能赚不到钱,周四跳空大涨的行情下能跑赢大势的个股就只有三分之一。紧跟市场领涨主线是赚钱的关键,这一周能涨的板块基本上轮了一遍,下周热点轮动的特征将更明显,操作上要稳字当头,欲速则不达。 阅读全文

不同时期,各个行业的“天才”的出现,都能使人类文明进化进程加快。

历史进步的巨轮在不停的转动,任何个人的才能无法与时代对抗。

AlphaGo的出现,让围棋的自然进化史提前了不止1千年,在这个催化剂的孕育下,人类围棋水平得到空前的提高。 阅读全文