CTF&密码学与社会工程
了解密码学和社会工程攻击和网络情报,以及夺旗。
1,133个主题在此版块
-
- 0 篇回复
- 97 次查看
Java开发需要掌握哪些技能? 刚刚学完Java技术,第一份Java开发工程师的工作我们常常会有点慌张,不知道自己掌握了哪些知识才能成功驾驭第一份Java工程师的工作,其实一般初级Java工程师相对来说不是很难,只要掌握一定的技能一般情况下都可以上岗。 如果想要找到一份不错的Java开发工作,首先需要掌握一定的Java技术。那么想成为一名合格的Java开发工程师都有哪些知识技术是必须掌握的呢? 学习Java开发主要需要学习四个方面的内容,分别为:Java基础、JavaWeb开发、Java高级框架、大型微服务分布式项目。 下面依次介绍一下: 第一部分:Java基础 主要涉及:Java基础语法、面向对象、核心类库、集合、异常、IO、线程、JDK新特性等知识点. 第二部分:JavaWeb开发 主要涉及:前端技术、数据库、JAVA数据库操作、软件服务器及服务器相关技术、***页JSP、AJAX等知识点. 第三部分:Java高级框架 主要涉及:SpringMVC、MyBatis、Spring、MySQL高级、Linux&Redis&Nginx、Maven等知识点 第四部分:大型微服务分布式技术 主要涉及:SpringBoot、SpringCloud、Git、Dubbo、Zookeeper、AngularJS、SpringSecurity、BCrypt加密、FastDFS、分布式事务处理、RedisCluster、Solr、SolrCloud、Freemarker、JMS、短信发送平台、SSO解决方案、CORS、Twit…
HACK1949的最后回复, -
- 0 篇回复
- 108 次查看
很多同学在日常写Java的时候很少去关心性能问题,但是在我们写代码的过程中必须考虑到性能对程序的影响。小到我们使用位运算来实现算术运算,大到我们对 Java 代码的总体架构设计,性能其实离我们很近。本文介绍了Java中性能优化的35种方法,需要的朋友可以参考下。 前言 对程序员们来说,代码优化是一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨;但是如果有足够的时间开发、维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的。 代码优化的目标是: 1、减小代码的体积 2、提高代码运行的效率 代码优化细节 1、尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50%。 …
HACK1949的最后回复, -
- 0 篇回复
- 88 次查看
深入了解 Python Virtualenv Photo by 詹姆斯哈里森 on 不飞溅 介绍 如果您刚开始使用 Python,建议使用多个虚拟环境。如果您的机器上安装了多个 Python 版本,那么建议您为每个版本使用单独的虚拟环境。这样,如果您的一个版本存在问题而另一个版本没有任何问题,那么您可以隔离有问题的版本(如果可能)以修复可能由它引起的任何错误。 什么是虚拟环境? 虚拟环境是一种工具,可让您创建隔离的 Python 环境。 Virtualenv 不会在系统范围的 Python 安装中安装任何包。相反,它会创建一个目录,其中包含该特定环境所需的所有可执行文件和库。 Virtualenv 使用“虚拟”或“沙盒”python 解释器的概念。每次使用 virtualenv 运行命令时,您的 shell 都会创建一个 Python 解释器实例(即使您的系统上安装了多个版本)。 为什么要使用虚拟环境? 虚拟环境是一种在您的计算机中创建单独和隔离的“系统”的方法。该系统可以在同一个地方运行多个应用程序和服务,而不会影响您的主机操作系统 (OS)。除了一次使用各种应用程序之外,还可以在另一个程序中使用一个应用程序。例如,您可以在 SQLite 数据库文件中拥有一个 Python 程序,其中包含一些有关您为公司雇用的员工的数据。 与使用 vanilla OS 环境相比,这种类型的设置提供了许多好处: 保持一切清洁——如果您在同一台机器上运行多个不同的程序或服务,那么使用后总会留下一些混乱,即使它们是完全合法的程序!这不仅对…
HACK1949的最后回复, -
- 0 篇回复
- 111 次查看
如果你想成为一名 Python 开发人员,你需要知道的 5 个基本 Python 功能 您将在下一个项目中使用哪种技术? 你应该只使用一种技术吗?还是应该混合使用不同的技术? 图片 from 像素 本周我和一位朋友谈到了这个问题。他向我解释说,他总是在他们的项目中使用不同的技术和语言,因为每种语言都有一个特定的目标。他的论点对我来说听起来很有趣,我开始更多地思考这个问题。 我的结论是 没有一种编程语言可以让我们以最佳方式完成所有事情 .每种语言都旨在实现特定的目标,如果我们想为下一个项目做出正确的选择,我们必须了解它们。 可能你知道 Python。它是一种编程语言,提供 许多有用的功能 如果我们开始用这种语言编程,我们会喜欢的。然而,这不是魔术,而且 我们不能将它用于所有目的 在我们的项目中,因为由于它的简单性,我们在很多不应该使用它的情况下使用它。 为此,我要发现 5个基本的Python特性 供您在为下一个项目选择技术堆栈之前考虑。 为什么是 Python? 因为是 Python,而且每个人都喜欢 Python . 你不喜欢这个答案吗?好吧,让我用点逻辑……我们必须学习 Python,因为它是 最通用的编程语言 我们现在可以使用。它是一种令人难以置信的语言,它允许我们创建 Web 应用程序、脚本、GUI 界面、API……此外,还有 为 Python 开发人员提供大量工作机会 这总是一个很好的优势。 此外,使用这种语言,我们可以 更有效率 作为开发人员,因为它的简单性和可读性。它有一个 平滑的学习曲线 它的语法为…
HACK1949的最后回复, -
- 0 篇回复
- 98 次查看
这几天想搞到一个三阶魔方排行榜的数据,官网居然不能导出Excel文件,刚好这几天学了个爬虫,于是爬着玩玩(应该不会进去)。 目标网站: https://www.worldcubeassociation.org/results/rankings/333/average 准备库 ## 准备的库 import pandas as pd # 数据分析库 import requests # 用于发送 HTTP 请求 from lxml import etree # 可以将xml格式的文件转为树状结构 申请访问 如下图:点击 “网络” => “文档” => “average” 点击预览,就能看到排行榜的数据信息. 我们要爬的数据就在这里 点击“标头”,获取 url 和 标头 ## 标头 headers = 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27' ## 访问地址 url = 'https://www.worldcubeassociation.org/results/rankings/333/average' r = requests.get(url,headers) # r.text xml格式 又臭又长就不展示了 data_ml = etree.HTML(r.text) #…
HACK1949的最后回复, -
- 0 篇回复
- 119 次查看
今日学习内容 cookie与session HTTP协议四大特性 1.基于请求响应 2.基于TCP、IP作用于应用层之上协议 3.无状态 服务端无法识别客户端的状态 HTTP是一种不保存状态,即无状态(stateless)协议。 HTTP协议 自身不对请求和响应之间的通信状态进行保存。 互联网刚开始兴起的时候,所有人访问网址都是一样的数据,服务端无法识别客户端问题。 互联网发展后出现淘宝、京东、阿里,服务端不得不想办法记住客户端的状态。 cookie与session应运而生。 4.无连接 Cookie 保存在客户端上跟用户信息(状态)相关的数据 Session 保存在服务端上跟用户信息(状态)相关是数据 就是浏览器朝服务端发送请求,服务端保存用户信息,并以session方式返回给客户端里面存储一串随机字符串(令牌),保存在客服端上面。 session的工作需要依赖于cookie,就算目前所有能够识别用户身份的网址也需要使用cookie(客户端浏览器也有权拒绝保存cookie)。 . django操作cookie 如果想要然客户端浏览器保存cookie需要HttpResonse对象调用的方法。 return HttpResponse() return render() return redirect() return JsonRespone() 设置cookie需要变形 obj = HttpResponse() obj.操作cookie的方法 return obj ob…
HACK1949的最后回复, -
- 0 篇回复
- 95 次查看
1.百分号--基本的格式化操作 1.1百分号充当占位符,最常用的%s只带字符串占位符,%d整型占位符 name = '流年' print("我是%s" % '流年啊') print("我是%s" % name) name = '流年' age = 28 print("我是%s今年%d岁" % ('流年啊', 18)) print("我是%s今年%d岁" % (name, age)) msg = "我叫%(name)s,今年%(age)d岁" % {'name': name, 'age': age} print(msg) 1.2如果百分号只是只带百分比,而非占位符,那么需要俩个%%即原样输出 text = "兄弟,这个片我已经下载了90%了,居然特么的断网了" print(text) text = "%s,这个片我已经下载了90%%了,居然特么的断网了" %"兄弟" print(text) # 输出: 兄弟,这个片我已经下载了90%了,居然特么的断网了 一旦字符串格式化中存现百分比的显示,请一定要呀加 %% 以实现输出 %。 2.2 format(推荐) text = "我叫{0},今年18岁".format("流年") text = "我叫{0},今年{1}岁".format("流年",18) text = "我叫{0},今年{1}岁,真是的姓名是{0}。".format("流年",18) text = "我叫{},今年18岁".format("流年") text = "我叫{},今年{}岁".for…
HACK1949的最后回复, -
- 0 篇回复
- 100 次查看
异常处理 # 异常处理:处理软件或信息系统中出现的异常 # 语法结构:try--except--else--finally # 下标越界 try: num = int(input('请输入1~4之间的数:')) lista = [1, 2, 3, 4, 5] print(lista[num]) except IndexError as e: # 出错之后的处理,从上往下依次匹配看是否能匹配到正确的处理。 print('下标越界', e) except ValueError as e: print('输入的类型错误', e) except Exception as e: # Exception一般写在最后面,是最大的错误库 print(f'未知错误:错误信息{e}') else: # 当try中没有发生异常则执行else当中的语句块,发生异常则不执行。 print('输入成功!') finally: # 不管是否发生错误,都会执行下面的语句块 print('恭喜完成本次测试') 自定义异常 # 异常分2类 # 1、系统异常:下标越界、路径错误 、值错误等 # 2、业务异常:充值只能正数、年龄输入1--120,账户和密码错误 # 触发异常由raise 关键字触发,只要有raise就会报错 ''' try: raise IndexError('下标越界,报错了') # 创建一个报错对象,并给他赋了值 except IndexError as e: …
HACK1949的最后回复, -
- 0 篇回复
- 118 次查看
用Python复制文件的9个方法 - 知乎 (zhihu.com) Python 中有许多“开盖即食”的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作。在这篇文章中,你将会看到一些用 Python 实现文件复制的特殊方法。下面我们开始学习这九种不同的方法来实现 Python 复制文件操作。 在开始之前,你必须明白为什么了解最适合你的 Python 复制文件方法是如此重要。这是因为文件 I/O 操作属于性能密集型而且经常会达到瓶颈。这就是为什么你应该根据你的应用程序的设计选择最好的方法。 一些共享资源的程序会倾向于以阻塞模式来复制文件,而有些则可能希望以异步方式执行。比如 — 使用线程来复制文件或者启动单独的进程来实现它。还有一点需要考虑的是平台的可移植性。这意味着你应该知道你要运行的程序所在的目标操作系统(Windows/Linux/Mac OS X 等)。 用 Python 复制文件的 9 种方法具体是: shutil copyfile() 方法 shutil copy() 方法 shutil copyfileobj() 方法 shutil copy2() 方法 os popen 方法 os system() 方法 threading Thread() 方法 subprocess call() 方法 subprocess check_output() 方法 Shutil Copyfile()方法 只有当目标是可写的,这个方法才会将源内容复制到目标位置。如果…
HACK1949的最后回复, -
- 0 篇回复
- 110 次查看
ZooKeeper面试题 24. Zookeeper的 java客户端都有哪些? java客户端:zk自带的 zkclient及 Apache开源的 Curator。 25. chubby是什么,和 zookeeper比你怎么看? chubby是 google的,完全实现 paxos算法,不开源。zookeeper是 chubby的开源实现,使用 zab协议,paxos算法的变种。 26.说几个 zookeeper常用的命令。 常用命令:ls get set create delete等。 27. ZAB和 Paxos算法的联系与区别? 相同点: 1、两者都存在一个类似于 Leader进程的角色,由其负责协调多个 Follower进程的运行 2、Leader进程都会等待超过半数的 Follower做出正确的反馈后,才会将一个提案进行提交 3、ZAB协议中,每个 Proposal中都包含一个 epoch值来代表当前的 Leader周期,Paxos中名字为 Ballot 不同点: ZAB用来构建高可用的分布式数据主备系统(Zookeeper),Paxos是用来构建分布式一致性状态机系统。 28. Zookeeper的典型应用场景 Zookeeper是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员可以使用它来进行分布式数据的发布和订阅。 通过对 Zookeeper中丰富的数据节点进行交叉使用,配合 Watcher事件通知机制,可以非常方便的构建一系列分布式应用中年都会涉及的核心功能,如: 1、数据发布/订阅 …
HACK1949的最后回复, -
- 0 篇回复
- 127 次查看
怎样才能拿到大厂的offer,没有掌握绝对的技术,那么就要不断的学习 我是如何笑对金九银十,拿到阿里,腾讯等八家大厂的offer的呢,在这里分享我的秘密武器,美团大神整理的Java核心知识点,面试时面试官必问的知识点,篇章包括了很多知识点,其中包括了有基础知识、Java集合、JVM、多线程并发、spring原理、微服务、Netty 与RPC 、Kafka、日记、设计模式、Java算法、数据库、Zookeeper、分布式缓存、数据结构等等。 由于面试题比较全面,内容比较多,所以我的知识里面可能会有一些疏漏,与杂乱,核心知识点都整理好了 包括但不限于:分布式架构、高可扩展、高性能、高并发、Jvm性能调优、Spring,MyBatis,Nginx源码分析,Redis,ActiveMQ、Mycat、Netty、Kafka、Mysql、Zookeeper、Tomcat、Docker、Dubbo、Nginx等多个知识点高级进阶干货 大厂面试专题: JAVA核心知识点共283页: 学习视频:每天持续更新! Java电子书籍: 程序员是最需要将终生学习贯彻到底的职业,一旦停止学习,离被淘汰,也就不远了。程序员工作都很忙,所以最好能在空闲的时候看看大厂的面试题,这些面试题的作用可能会超出你的想象: 学习前辈的面试方法和经验 检测自己的技术能力,培养自己的职业危机感 学习更多的技术,锻炼对技术的敏锐度 了解大厂面试的重难点,为自己的工作提供相应的经验 了解市场行情,对主流技术留心,思考对自己技术栈的作用 面试题(一面) 1、vol…
HACK1949的最后回复, -
- 0 篇回复
- 106 次查看
1.安装PIL pip install Pillow 2.python程序 import time,datetime from PIL import ImageGrab import os d1 = datetime.date.today() #获取当前时间 end_h = 16 #结束时间 end_m = 25 #结束分钟 base_dir = "G:/test/printScreen/picture" #图片保存地址 startTime = datetime.datetime(2022, int(d1.month), int(d1.day), end_h, end_m, int(d1.day)+1) #自动截图到16:25 print(startTime) i = 0 while datetime.datetime.now() < startTime: im =ImageGrab.grab() time.sleep(1) #0.5秒一截 img = ImageGrab.grab() if im != img : #界面发现变化了才保存图片 img.save(os.sep.join([base_dir,str(i)+'.png'])) print("ok:"+str(i)) i+=1 print('finish')
HACK1949的最后回复, -
- 0 篇回复
- 108 次查看
瞎扯: 到了大学又开始学\(Py\)了 不得不说,还是跟\(C++\)有很大区别的 那么早已弃坑许久的博客又派上用场喽\(~\) 话不多说,直接上作业 problem 1 果然不管学什么类型的代码做的第一个题都是\(Hello,World!\) 注意:各位注意一下尽量不要手动打\(Hello,World!\),说实话,不是什么好习惯,尽量复制上去,毕竟方丈教导我们,不要被事物的表面现象所迷惑。 代码: print("Hello, World!") problme 2 输入自己的姓名,在屏幕上输出:“欢迎你,某某某”。(注意中间的逗号是中文逗号,逗号后没有空格) 我最初的代码: s=input() print("欢迎你,",s) 这么写看似是没有什么问题的,我一开始也这么觉得,所以一直错,实际上这样的话\(print\)输出逗号隔开的部分会默认多一个空格的,导致错误,题目中明确说明逗号后无空格,因此正确方法是用分隔符来断开。 \(So\) 正确代码: s=input() print("欢迎你",s,sep=',') problem 3 输入矩形的长和宽,计算器面积并输出,结果四舍五入,保留两位小数。 注意:这里唯一需要知道的就是怎么保留小数了,有很多种方法,由于我之前学习\(C++\)的缘故,我个人比较喜欢下面这种,比较简洁。 代码: a=float(input()) b=float(input()) c=a*b print("%0.2lf" % c) problem 4 输入两个非零整数,输出两个数的…
HACK1949的最后回复, -
- 0 篇回复
- 93 次查看
目录装饰器迭代器生成器推导式匿名函数高阶函数 装饰器 闭包 介绍装饰器前先了解一下闭包,在Python中,一切皆对象(Object),函数(Function)也不例外,也是一个普通的对象,函数可以作为一个参数传给其它函数,函数的返回值也可以是一个函数,而这种相关参数和变量都保存在返回的函数中的形式,就称为闭包(Closure),如下示例 def my_closure(): # 使用函数嵌套,先定义一个外部函数 num0 = 1 # 在外部函数中定义一个常量 def my_out(num1,num2): # 再定义一个内部函数,并动态传参,此参数外部无法调用 res = num0 + num1 # 再定义内部函数变量,并且使用外部函数中的变量 res1 = num2 - num0 print(res,res1) # 输出结果 return my_out # 返回内部函数,这种方式就是闭包函数 output = my_closure() # 获取闭包对象,赋值给output output(2,5) # 执行闭包,传参为2和5,输出结果为3和4 闭包的作用是使参数和变量一直保存在内存中,不会被垃圾回收机制收回 此处简单介绍一下函数中global和nonlocal的区别,了解二者的作用域 nonlocal是设置为局部变量,必须在嵌套函数中使用,必须先在外部函数定义变量,再在内部函数使用nonlocal声明,表示二者是同一个变量,所以只…
HACK1949的最后回复, -
- 0 篇回复
- 109 次查看
目标:做出更加准确的决定 TS价值 类型验证甚至自定义类型验证 代码编辑器各种提示来规避错误 通过自定义类型,代码更加容易理解 总而言之,非常适合大规模编程。 社区欢迎程度 2021 StackOverflow调查受欢迎程度已经超过python,那可是python啊。 生态 各种新出的重要工具和框架都是原生支持TS编写的。 行业 已经产生大量的大型企业级应用。 结论 大幅减少Bug,非常必要
HACK1949的最后回复, -
- 0 篇回复
- 93 次查看
Python对Excel的读写主要有xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种。 1.xlrd主要是用来读取excel文件 import xlrd import numpy as np data = xlrd.open_workbook('用户2用电1号主变.xls') # 打开第一张表 table = data.sheets()[0] # 获取表的行数 nrows = table.nrows ydl = [] for i in range(nrows): if (i<=5 and i>=0): continue # 获取第二列数据加入到数组中 ydl.append(table.row_values(i)[1]) # 将数组转换为numpy格式数据 np_ydl = np.array(ydl) print(type(np_ydl))
HACK1949的最后回复, -
- 0 篇回复
- 91 次查看
python3 import base64 userpass = username + ':' + password encoded_u = base64.b64encode(userpass.encode()).decode() headers = {"Authorization" : "Basic %s" % encoded_u} 参考 Base64 Authentication Python
HACK1949的最后回复, -
- 0 篇回复
- 102 次查看
1、将测试数据上传到HDFS目录下,这里放到根目录下:/test.txt 2、在master节点中某个目录下:创建mapper、reducer以及run.sh mapper.py import sys for line in sys.stdin: line = line.strip() words = line.split() for word in words: print "%s\t%s" % (word, 1) reducer.py import sys current_word = None current_count = 0 word = None for line in sys.stdin: line = line.strip() word, count = line.split('\t', 1) try: count = int(count) except ValueError: continue if current_word == word: current_count += count else: if current_word: print "%s\t%s" % (current_word, current_count) current_count = count current_word = word…
HACK1949的最后回复, -
- 0 篇回复
- 97 次查看
1. 在python中凡是实现了iter()的类都是可迭代对象,可以通过iteration对其进行迭代 2. 从抽象的角度来讲,可迭代对象会维护两个指针,一个是初始指针,一个是游标指针 初始指针不可修改,使用iter()得到的一直是游标指针 游标指针在某些操作,比如next(iter())的情况下不会增加,也就是说next本身并不是增加游标指针,但是加个print()的话可以 比如print(next(x))会增加x这个游标指针的数值 iter(e)本身也会增加?太麻烦了等会儿再思考好了
HACK1949的最后回复, -
- 0 篇回复
- 109 次查看
class App: num = 5 def add(self): return self.num + self.num if __name__ == "__main__": main = App() result = main.add() print(result) class App: num = 5 def add(self): return App.num + App.num if __name__ == "__main__": main = App() result = main.add() print(result) 在使用python中的类对象时,当我们在App类下定义了一个变量num时,此时的num变量可以通过self.num或者App.num来进行引用,当使用self.num来进行引用时,可以等同于提前对num进行初始化,代码如下: class App: def __init__(self): self.num = 5 def add(self): return self.num + self.num if __name__ == "__main__": main = App() result = main.add() print(result) 注意此时add函数中的返回值…
HACK1949的最后回复,