• 什么是Tor?Tor浏览器更新有什么用?什么是Tor?Tor浏览器更新有什么用?
  • 难怪马斯克裁掉整个安全部门,推特540万用户数据在暗网公开难怪马斯克裁掉整个安全部门,推特540万用户数据在暗网公开
  • 中华人民共和国网络安全法中华人民共和国网络安全法
大横幅1
大横幅2
到期时间:永久 到期时间:推广
到期时间:推广 小横幅4
今日发布2篇文章 | 本站共发布了1899篇文章
  • 2024照妖镜源码(新增QQ面对面红包模板+更新监控)

    php7.3(必须) 下载sg14拓展(宝塔面板sg11就是) 宝塔SourceGuardian组件就是14版本,SG11只是脚本名称,可以安装后在phpinfo内查看。 必须开启 HTTPS 和 SSL 证书协议,推荐使用宝塔面板自带的免费 SSL,同时开启强制 HTTPS。否则生成的链接将无法进行拍照功能。 2024.1.4更新 1.增加生成QQ面对面红包"sc/dmhb.php" 2.增加面对面红包生成图片功能 3.修复面对面红包无法拍照bug 4.增加面对面红包人机验证功能 5.修复已知bug 2023.12.23 更新 1.优化QQ扫码授权拍照界面 2.QQ扫码授权支持自定义程序图片,留空默认王者荣耀 3.修复最新版提示更新问题。 4.修复已知bug 2023.12.16 更新 1.增加生成QQ扫码授权"sc/qqsq.php" 2.增加QQ扫码授权生成图片 3.增加邮箱通知获取对方ip+UA 4.修复已知bug 2023.12.8 更新 1.增加源码更新通知功能(config.php里配置站长邮箱) 2.增加更新通知自选模式(①定时监控获取新版,②靠偷拍上传照片php获取新版。) 3.修复更新通知与拍照通知合并bug 定时监控:域名/gx.php?a=jk 一小时一次 定时监控是通过"yx/functions.php"配置的邮箱账号进行通知的。 开启定时监控请前往(config.php里配置监控开关'gxjk'=>'1') ...

    2024-01-05 实用工具 105
  • 利用往年跨年春节热度新思路抓住流量风口

    屁话介绍 临近年末,还有不到几天就是元旦,不到两个月就是除夕,这段时间各平台的跨年热度都越来越大,也算是一个流量风口,利用往年方法思路进行引流推广变现 悉知:不是什么大富大贵一夜暴富的项目 往年红包封面是每年都是赚一小波的,今年也是,跟大家分享一下我的操作思路 可能文章可能有点干,大家慢慢品尝,写的不好的话大佬勿喷 利用平台(短视频) 思路分享(变现方式) 效果图(收益图) 比起过多的废话成果才是大家前进的动力 效果图(引流图) 我操作了六七天了每个群都四百多人 实操介绍(前期准备) 封面头像 可以用:创客贴 可画,剪映 ,美图秀秀这些制作,这些就不介绍如何制作就行了,随便搜一两个 对标账号仿就行了。 实操(视频制作教程) 视频去水印工具大家可以自行寻找 表达能力有限就用一些成品图给搭建讲解,去抖音快手或者别的短视频平台搜索过年赶集或者赶集的视频素材     切记要那种集市上或者人多的视频素材,只有单人的就直接跳过     准备一些年尾的图片素材,导入视频切断一些片段,弄成下面那样子的就行了     一般我制作的视频都是7--12秒这样子,不要太短,太短我试过5秒以下的没什么流量     话题就选跨年 春节 往年春节等之类的,总之就跟我们做的挂钩选就行了 实操二(无人直播搭建) 无人直播建议只做快手的,视频号和抖音的我测试过会被检测的,一般我是播2--3个小时中间停一个多小时这样子,太频繁也会被检测的,毕竟是重复画面 素材我就简单举个例子,估计制作剪辑的大佬有很多,可以按照你自己的思路剪辑,尽量弄时长长的画面不是很多重复的 无人直播视频素材制作也是很简单,找一些视频素材关于这种的混合剪辑就行了,pdd 某宝也有卖这种素材的。当然你自己有好的方法也可以不用我这种。 引流思路(快手) 大号: 快手直播:大号直播,小号挂榜一,时不时发一下引流评论话术。 小号:小号作品就发群二维码,可以用工具美化一下二维码这样子容易过审,我的建议的用活码引流比较好,你一个群满了只用在活码后台换群二维码就行了,那样子就不用去重新发群二维码了,或者你有别的方式挂钩子也是可以的 直播评论话术比如:跨年红包裙进的点我头像,等,不是统一的 引流思路(抖音) 抖音不建议做无人直播。 抖音注意事项:不要在个人简介留联系方式,毕竟咱的号不是那种几万几十万几百万那种粉丝量,咱这是新号。 抖音引流群导引流:在抖音创个抖音群,让他展示到你的个人主页里面,群公告设置成引流联系方式 最稳妥的是群公告挂有道云文档的理解。群公告比如:点击加入跨年红包群后面就是你的有道云笔记的链接 有道云笔记:标题就随便设置,内容就是你的微信二维码 视频号 视频号引流一般都是挂个公众号这种引流,一般我视频号我都不挂引流的,就直接挂年货商品。 这我就不细讲了 变现方式 卖货(目前在做的,你有好的方法也可以操作。勿喷) 1:微信红包封面,PDD,某宝都有一大堆,看价格拿就行了,时不时在群里发一两个几毛钱的红包秀秀红包封面发发朋友圈打广告吧意思是就这,目前比较火也是比较方便的就是微店那种联系,你只要对接申请就行了,种类也不用自己更新,你就发店铺链接别人进去选买了就有佣金,跟我上面的那个收益图那种差不多的情况 2:挂窗厨卖年货,这个看自己选品,什么麻通之类的商品,红包皮等 活动 没到过年都有很多APP助力拉新的活动,用一些成本低的诱人商品,进行推广,比如前20名助力送红包封面等什么的(这个你可以耍赖别人助力了你就说人满了)虽然有点贱贱的,但是你不****怎么赚钱嘛其他方式 当你群多了有人会找你合作的,看你自己怎么弄了这种,像我这里有一些刷单的别的找我,这种就看你们自己怎么操作了。 总结 这个文章只是简单介绍一些小思路,当你融入这个圈子,你所了解的东西还有更多,触及到的东西也会很多。 多赚几块钱是块,虽是蝇头小利,但你耐不住他多啊,几个蝇头小利加在一起也是一笔不错的小收入(当然你如果你是有钱人可以无视) 配套工具包下载 ...

    2023-12-27 赚钱项目 149
  • 某博肥美大赛

    点击围观  ...

    2023-12-27 福利分享 130
  • 某博不好意思让熟人看到的照片

    点击围观  ...

    2023-12-27 福利分享 131
  • 公开100GB数据,日产汽车遭勒索组织“撕票”

    Bleeping Computer 网站消息,Akira 勒索软件团伙声称成功入侵了日本汽车制造商日产汽车澳大利亚分公司的内部网络系统。 12 月 22 日,Akira 勒索软件团伙在其泄漏博客上添加了一个新的“受害者”,并表示其成员从日产汽车制造商的内部网络系统中窃取了约 100GB 的文件资料。值得一提的是,威胁攻击者还宣称鉴于日产汽车公司拒绝支付赎金,接下来会陆续把盗取的敏感业务和客户数据泄露到网上。勒索软件组织宣言如下: 日产汽车似乎对被盗数据不是很感兴趣,所以接下来我们会在几天内上传被盗数据,你会在档案中发现包含其员工个人信息的文档,以及许多其他感兴趣的东西,如 NDA、项目、客户和合作伙伴信息等。 2023 年 3 月,Akira 勒索软件团伙首次浮出水面,再迅速“积累”了大量来自不同行业的受害者后引起了人们的广泛关注。2023 年 6 月,Akira 勒索软件运营商开始部署其加密程序的 Linux 变种,据悉该变种专门针对企业环境中广泛使用的 VMware ESXi 虚拟机。 从 Bleeping Computer 此前发布的信息来看,一旦成功实施网络攻击活动,Akira 勒索软件组织要求受害者支付的赎金从 20 万美元到数百万美元不等,具体取决于被入侵组织的规模。此外,五年前互联网江湖中出现过另一个名为 "Akira "的勒索软件变种,但这两个勒索软件之间不太可能有关联。 日产汽车数据泄露 (BleepingComputer) 日产汽车仍在努力恢复系统 数据泄露事件发生后,日产公司在其网站上添加了一个新的更新,确认了威胁攻击者已经成功侵入了其在澳大利亚和新西兰的一些网络系统,但尚未对披露的网络攻击事件进行归因。 日产汽车方面表示,目前公司仍在调查事件的影响以及个人信息是否被访问,虽然暂时无法确认网络事件的严重程度,但已经在积极组织安全专家团队,努力恢复受攻击影响的系统(这一过程在事件披露后的 12 月 5 日就开始了),公司也已经同步通知了澳大利亚和新西兰网络安全中心以及相关的隐私监管机构和执法机构。 日产还强调,一些汽车经销商的网络系统系统会受到数据泄露事件的影响,请直接与当地的日产经销商联系,协助处理所有车辆和服务查询。此外,被入侵系统中可能存储的一些数据存在被访问或窃取的风险,日产汽车警告客户 "对任何异常或可疑的在线活动保持警惕"。 参考文章: https://www.bleepingcomputer.com/news/security/nissan-australia-cyberattack-claimed-by-akira-ransomware-gang/ ...

    2023-12-25 值得一看 143
  • Linux grep指令的10个使用技巧

    文章目录   一、在文件中搜索字符串或正则表达式 二、忽略大小写进行搜索 三、反向搜索 四、显示行号 五、递归搜索 六、只显示文件名 七、只显示匹配的行数 八、打印匹配前后的行 九、匹配多个字符串或正则表达式 十、使用特殊字符进行搜索 本文主要讲解关于Linux grep指令的10个使用技巧相关内容,让我们来一起学习下吧! grep (global regular expression print) 是 Linux 或其他类 Unix 操作系统中的一个功能强大的命令行搜索工具。它可以从文件或标准输入中搜索文本或字符串,并显示匹配的行或统计信息。grep 命令有大量的选项和用法,本文将介绍一些常见的示例。 一、在文件中搜索字符串或正则表达式 grep 命令可用于在一个或多个文件中搜索字符串或正则表达式。以下是如何使用它的基本语法: grep 'pattern' file1 file2 ... 例如,如果我们想在 file.txt 中搜索字符串 “hello”,我们可以使用以下命令: grep 'hello' file.txt 这个命令会打印出 file.txt 中包含 hello 的所有行。我们还可以使用通配符来在多个文件中搜索。例如,如果我们想在当前目录下所有以 .txt 结尾的文件中搜索 “hello”,我们可以使用以下命令: grep 'hello' *.txt 如果要使用正则表达式进行搜索,我们可以使用 -E 选项或使用 egrep 命令。例如,如果我们想在 file.txt 中搜索以 h 开头,后面跟一个或多个字母的单词,我们可以使用以下命令: grep -E 'h[a-zA-Z]+' file.txt 或者 egrep 'h[a-zA-Z]+' file.txt 二、忽略大小写进行搜索 默认情况下,grep 命令是区分大小写的。如果我们要忽略大小写进行搜索,我们可以使用 -i 选项。例如,如果我们想在 file.txt 中搜索 “hello”,不管它是大写还是小写,我们可以使用以下命令: grep -i 'hello' file.txt 这个命令会打印出 file.txt 中包含 hello , Hello , HELLO 等的所有行。 三、反向搜索 有时我们可能想要找出不匹配某个字符串或正则表达式的行,而不是匹配的行。这时我们可以使用 -v 选项进行反向搜索。例如,如果我们想在 file.txt 中找出不包含 “hello” 的所有行,我们可以使用以下命令: grep -v 'hello' file.txt 这个命令会打印出 file.txt 中不包含 hello 的所有行。 四、显示行号 如果我们想在搜索结果中显示每一行的行号,我们可以使用 -n 选项。例如,如果我们想在 file.txt 中搜索 “hello”,并显示匹配行的行号,我们可以使用以下命令: grep -n 'hello' file.txt 这个命令会在每一行的前面显示一个数字,表示该行在文件中的行号。 五、递归搜索 如果我们想在一个目录及其子目录中的所有文件中搜索一个字符串或正则表达式,我们可以使用 -r 选项进行递归搜索。例如,如果我们想在 dir 目录及其子目录中的所有文件中搜索 “hello”,我们可以使用以下命令: grep -r 'hello' dir/ 这个命令会在每一行的前面显示匹配的文件名和行号。 六、只显示文件名 如果我们只想知道哪些文件包含了匹配的字符串或正则表达式,而不想看到具体的内容,我们可以使用 -l 选项来只显示文件名。例如,如果我们想在当前目录下所有以 .txt 结尾的文件中搜索 “hello”,并只显示包含 “hello” 的文件名,我们可以使用以下命令: grep -l 'hello' *.txt 这个命令会只打印出包含 hello 的文件名,而不显示具体的行。 七、只显示匹配的行数 如果我们只想知道有多少行匹配了字符串或正则表达式,而不想看到具体的内容,我们可以使用 -c 选项来只显示匹配的行数。例如,如果我们想在 file.txt 中搜索 “hello”,并只显示匹配 “hello” 的行数,我们可以使用以下命令: grep -c 'hello' file.txt 这个命令会只打印出一个数字,表示 file.txt 中有多少行包含 hello 。 八、打印匹配前后的行 有时候,我们可能想要看到匹配的行的前后的一些行,以便更好地理解上下文。这时候,我们可以使用 -A 选项来打印匹配后的 N 行,使用 -B 选项来打印匹配前的 N 行,或者使用 -C 选项来打印匹配前后的 N 行。例如,如果我们想在 file.txt 中搜索 hello ,并打印匹配后的 2 行,我们可以使用以下命令: grep -A 2 'hello' file.txt 这个命令会打印出 file.txt 中包含 hello 的所有行,以及每一行后面的 2 行。类似地,如果我们想打印匹配前的 2 行,我们可以使用以下命令: grep -B 2 'hello' file.txt 这个命令会打印出 file.txt 中包含 hello 的所有行,以及每一行前面的 2 行。如果我们想打印匹配前后的 2 行,我们可以使用以下命令: grep -C 2 'hello' file.txt 这个命令会打印出 file.txt 中包含 hello 的所有行,以及每一行前后的 2 行。 九、匹配多个字符串或正则表达式 如果我们想在一个或多个文件中搜索多个字符串或正则表达式,我们可以使用 -e 选项来指定多个模式,或者使用 -f 选项来从一个文件中读取多个模式。例如,如果我们想在 file.txt 中搜索 hello 或 world ,我们可以使用以下命令: grep -e 'hello' -e world file.txt 这个命令会打印出 file.txt 中包含 hello 或 world 的所有行。或者,我们可以把 hello 和 world 写在一个文件中,比如 pattern.txt ,然后使用以下命令: grep -f pattern.txt file.txt 这个命令会打印出 file.txt 中包含 pattern.txt 中的任何一个字符串的所有行。 十、使用特殊字符进行搜索 grep 命令支持一些特殊字符,用于表示行的开头或结尾,或者表示任意字符或重复次数等。这些特殊字符可以组合成复杂的正则表达式,用于进行精确的搜索。以下是一些常用的特殊字符: ^ :表示行的开头。例如, ^hello 表示以 hello 开头的行。 $ :表示行的结尾。例如, hello$ 表示以 hello 结尾的行。 . :表示任意一个字符。例如, h.llo 表示 h 和 llo 之间有任意一个字符的行。 * :表示前面的字符可以重复0次或多次。例如, hel*o 会匹配 “hello” 和 “helo”。 [] :表示括号中的任意一个字符。例如, h[ae]llo 表示 h 和 llo 之间是 a 或 e 的行。 [^] :表示括号中的任意一个字符以外的字符。例如,在表达式 h[^ae]llo 中,[^ae] 表示除了 a 和 e 之外的任意字符。 其他的正则字符: {} :表示前面的字符可以重复指定次数。例如, h{2,4}llo 会匹配 “hhello”, “hhelllo”, 和 “hhelllo”。 | :表示或。例如, h|l|o 会匹配 “h”, “l”, 或 “o”。 \d :匹配一个数字字符。 \D :匹配一个非数字字符。 \w :匹配一个字母、数字或下划线。 \W :匹配一个非字母、非数字或非下划线的字符。 \s :匹配一个空白字符,例如空格、制表符、换页符等。 \S :匹配一个非空白字符。 \b :匹配一个单词边界。 \B :匹配一个非单词边界。 [[:<:]] 和 [[:>:]]:分别匹配行的开头和结尾(与 ^ 和 $ 功能相同,但更通用)。 [[:alnum:]]、[[:alpha:]]、[[:digit:]] 等:匹配指定的字符类。 这些特殊字符和其他一些高级功能使得 grep 命令成为处理文本数据的强大工具。 以上就是关于Linux grep指令的10个使用技巧相关的全部内容,希望对你有帮助。欢迎继续关注潘子夜个人博客,学习愉快哦! ...

    2023-12-25 技术教程 152
  • Tor项目公告显示,国际特赦组织现已推出.onion域名供暗网访问

      本月初,Tor项目官方宣布,他们欢迎不断壮大的洋葱服务社区的最新成员:国际人权非营利组织国际特赦组织(大赦国际)。 国际特赦组织正在推出 .onion 网站: http://*********************************************.onion 许多国家利用审查制度阻止获取人权资源,包括国际特赦组织出版的人权资源。寻求访问Amnesty.org网站上这些资源的访问者现在可以安全可靠地使用暗网访问这些资源,访问者可以确保通过端到端身份验证到达所需目的地,同时消除与其会话相关的所有元数据,从而使他们的身份或互联网活动无法被跟踪。从位置隐藏到端到端加密,.onion 网站在最大化互联网用户的隐私和匿名方面特别有用,因为他们永远不会离开 Tor 网络。 国际特赦组织技术实验室负责人 Donncha Ó Cearbhaill 表示:“ .onion 网站为世界各地的个人提供了一种在安全可靠的在线环境中行使其隐私权、言论自由权、和平集会自由权以及结社自由权的途径。”。“通过将国际特赦组织的网站作为 Tor 上的安全 .onion 网站提供,更多的人将能够阅读我们的人权研究报告,并参与向权力表达真相和捍卫人权的重要工作。” 洋葱服务是目前安全的技术,因为没有互联网提供商或政府可以检测到 .onion 地址的连接或阻止对其的访问。洋葱服务的加密和去中心化性质使它们对举报人很有价值,可以确保免受监视并允许在互联网访问受限的地区访问信息。这就是为什么许多新闻媒体(如 BBC、《纽约时报》和德国之声)或社交媒体平台(如 Facebook 或 Reddit)以及消息服务和人权组织在 Tor 网络上设有 .onion 网站,以为其用户提供安全和未经审查的访问。 2022 年,Tor项目成立了洋葱支持小组,以解决洋葱服务利用不足和缺乏了解的问题,并进一步提高民间社会团体和人权组织对洋葱服务的采用率。Tor项目称,其非常高兴最受认可的人权组织之一采用了洋葱服务,为那些寻求信息、支持和宣传的人提供更大的在线保护。国际特赦组织选择提供其网站的洋葱版本,突显了这种开源隐私技术作为共同推进人权工作的重要工具所发挥的作用。Tor项目表示,鼓励其他人效仿并为 Tor 网络和 .onion 网站的更广泛接受做出贡献。 如果用户想了解有关洋葱服务的更多信息,并且有兴趣建立自己的 .onion 网站,请查看Tor项目的洋葱服务资源。用户还可以在Tor 项目论坛上提出问题并开始讨论。 Tor项目为洋葱服务部署提供高级支持,并就与 Tor 相关的所有事项对团队成员进行培训,共同开展围绕 Tor 网络和洋葱服务的宣传活动。...

    2023-12-25 值得一看 137
  • 2023好看的跳转页源码

    2023好看跳转页 ...

    2023-12-25 实用工具 128
  • X64 微信Windows版 防撤回

    曾经说过,防撤回这个我也纳入了需要做的范围内。也会采用之前方式来达到,尽量支持通用版本的支持。传统的替换方式文件着实的大,秉承着能懒觉不勤快一点的原则。 用法依旧一样,打开软件,在打来微信即可。当前版本未纳入32位范围,别人为什么,问就是懒。 当前版本也没有添加多开。按理说X64版本通用,包括后面版本的更新。这个是一个猜想。具体还得实践测试。 放个图:这个只是处理界面。 我去1.8M也没办法上传附件。只有网盘了 ...

    2023-12-25 实用工具 98
  • WiFi Mouse PRO v5.3.3手机变鼠标键盘

    安卓端https://cloud.189.cn/t/NzUvyibueyqy访问码:ip7h 电脑端https://cloud.189.cn/t/YZ3MnyIjEBBf访问码:i4qr https://cloud.189.cn/t/jEf67bfMb2Yj访问码:ce0p 文件夹 https://cloud.189.cn/t/ENZ3UrBRNFjq访问码:6yei 快速把你的手机变成无线鼠标、键盘、触摸板,它还支持语音识别直接输出文本到电脑端。 它还拥有媒体播放控制、浏览器控制、应用程序切换、关机等一系列方便使用的功能。 只需接入网络,即可享受这些功能。 ...

    2023-12-25 实用工具 132
  • 某博今夜清纯大赛✨ ​​​

    点击围观  ...

    2023-12-25 福利分享 115
  • ALPHV勒索软件团伙的暗网泄密网站被查封后,又推出了新的暗网onion域名

    前天,“Kirin博客”报道了国际联合执法机构查封了臭名昭著的ALPHV勒索软件团伙的暗网泄密网站,在经历与美国当局的暗网域名争夺战后,ALPHV勒索软件团伙选择推出了新的暗网onion域名。 ALPHV勒索软件团伙又名BlackCat,最初于2020年8月以“DarkSide”名义推出 ,然后在面临因该团伙广泛宣传的对殖民管道的勒索攻击而造成的执法行动的巨大压力后于2021年5月关闭。 该勒索软件团伙后来于2021年7月31日以“BlackMatter”名称回归,但在Emsisoft利用漏洞创建解密器并查封服务器后,该勒索软件团伙于2021年11月再次关闭。 该团伙于2021年11月再次回归,这次的名称为“BlackCat/ALPHV”。从那时起,勒索软件团伙不断演变其勒索策略,并采取与英语附属机构合作的不寻常方式 。 这次事件一开始,ALPHV勒索软件团伙对外界宣称说,由于硬件故障,他们的暗网网站离线了。这种情况过去也发生过,所以很多人相信了这个借口。ALPHV勒索软件团伙接着表示,他们已经转移了暗网泄密网站的服务器和博客。 然而,12月19日,美国政府就ALPHV勒索软件发布了一份官方声明,声称ALPHV勒索软件的基础设施已经被联邦调查局(FBI)查封,他们公布了针对 ALPHV 的解密工具,并与国际合作伙伴合作,已经为 500 多家公司解密。联邦调查局 ALPHV 的搜查令指出,一名秘密线人进入了 ALPHV 面板。然后,联邦调查局对 ALPHV 面板进行了…… “调查”,设法进入了 ALPHV 网络,获得了 946 个Tor 站点的公钥/私钥对,ALPHV勒索软件团伙使用这些站点来托管受害者通信站点、泄密站点以及上述附属面板。 至此,FBI也掌握了ALPHV勒索软件团伙的暗网网站的.onion域名(http://alphvmmm27o3abo3r2mlmjrpdmzle3rykajqc5xsj7j7ejksbpsa36ad.onion)的密钥,与ALPHV 勒索软件团伙开展了拉锯战。19日的时候,FBI将该勒索软件团伙的暗网网站的.onion域名转向扣押的页面,显示扣押图片以及以下信息: 这项行动是在欧洲刑警组织和哥廷根犯罪调查中心的大力协助下,与美国佛罗里达州南区检察官办公室和司法部计算机犯罪和知识产权科协调采取的。 如果您有关于Blackcat、其附属机构或活动的信息,您可能有资格通过美国国务院的正义奖赏计划获得奖赏。信息可通过以下基于 Tor 的举报热线提交:he5dybnt7sr6cm32xt77pazmtm65flqy6irivtflruqfc5ep7eiodiad.onion(需要 Tor 浏览器)。 有关针对美国关键基础设施的外国恶意网络活动信息奖励的更多信息,请访问 https://rfj.tips/SDT55f。 然而,20日,当人们访问ALPHV勒索软件团伙的暗网网站的.onion域名(http://alphvmmm27o3abo3r2mlmjrpdmzle3rykajqc5xsj7j7ejksbpsa36ad.onion)时,出现以下页面,ALPHV勒索软件团伙声称“夺取”了他们的数据泄露站点,重新获得了对 URL 的控制,并声称 FBI 获得了对他们用来托管服务器的数据中心的访问权限。   由于 ALPHV 运营商和 FBI 现在都控制着用于在 Tor 中的暗网泄露网站洋葱 URL 的私钥,因此他们可以来回夺取对方的 URL,这一过程一整天都在进行。 不过,作为 ALPHV 解除扣押信息的一部分,该团伙宣布为其数据泄露网站推出一个新的暗网onion域名(http://alphvuzxyxv6ylumd2ngp46xzq3pw6zflomrghvxeuks6kklberrbmyd.onion),FBI 没有该网站的私钥,因此无法扣押。 该勒索软件团伙声称,FBI 仅在过去一个半月内获得了约 400 家公司的解密密钥。然而,他们表示,另外 3000 名受害者现在将失去钥匙。 ALPHV勒索软件团伙还表示,他们正在取消对其附属机构的所有限制,使他们能够瞄准任何他们想要的组织,包括关键基础设施。附属机构仍被限制攻击独立国家联合体(独联体)国家,这些国家以前是苏联的一部分。 最后,ALPHV勒索软件团伙表示将附属公司的收入份额提高到支付赎金的 90%,这可能会说服他们转而使用竞争的勒索软件即服务。 ALPHV勒索软件团伙的声明: 大家都知道,联邦调查局拿到了我们博客的钥匙,现在我们来告诉大家是怎么回事。 首先,这一切是如何发生的,在检查了他们的文件后,我们了解到他们获得了其中一个 DC 的访问权限,因为所有其他 DC 都没有被触及,事实证明,他们以某种方式入侵了我们的一个主机,甚至可能是他本人帮助了他们。 他们最多能拿到过去一个半月的密钥,大约有 400 家公司,但现在有 3000 多家公司再也收不到他们的密钥了。 由于他们的行为,我们正在引入新的规则,或者说取消所有的规则,除了一条,你不能碰独联体,你现在可以阻止医院,核电站,任何东西和任何地方。 现在,所有广告的费率为 90%。 我们不向公司提供任何折扣,严格按照我们规定的金额付款。 VIP 广告客户将获得我们为其单独设立的私人联盟计划,该计划位于独立的 DC 上,彼此完全隔离。 感谢您的体验,我们会考虑到我们的错误,更加努力地工作,等待您在聊天室中的抱怨和要求提供不再存在的折扣。   美国当局与ALPHV勒索软件团伙战斗的时间线: ----------------------- 2023年12月10日:ALPHV主域名离线,其管理者称是硬件故障 2023年12月10日:传言是美国当局导致ALPHV下线 2023年12月11日:ALPHV否认指控 2023年12月19日上午7:26:ALPHV域名被查封 2023年12月19日上午7:42:ALPHV称这是旧域名,无关紧要 2023年12月19日上午9:56:美国司法部就ALPHV被查封及其服务器被入侵一事发布官方声明 2023年12月19日中午12:34:ALPHV取消域名并威胁对美国(及相关实体)进行报复,允许对关键基础设施进行攻击...

    2023-12-24 值得一看 147
  • 又一个暗网交易市场倒下,Kingdom Market被德国当局主导的国际联合执法行动摧毁

    法兰克福总检察长办公室的中央打击网络犯罪办公室ZIT 和德国联邦刑事警察局BKA的调查取得部分成功。在一项国际协调行动中,法兰克福总检察长办公室的中央打击网络犯罪办公室( ZIT) 和联邦刑事警察局 (BKA) 联合查获了非法暗网市场 Market”(王国市场”)的服务器,成功于2023年12月16日关闭了暗网上的非法市场“Kingdom Market”。 美国、瑞士、摩尔多瓦共和国和乌克兰的执法当局在调查过程中与德国机构密切合作。 然而,“Kingdom Market”暗网市场的管理员尚未被抓获。但是,这个市场的客户最好还是要担心一下,警方会进行深入调查的。 “Kingdom Market”是一个非法暗网交易市场,至少自 2021 年 3 月起就存在,只能通过 Tor 网络和暗网上的隐形互联网项目 (I2P) 访问。该英语平台被用来交易非法商品。它的主要焦点是毒品贸易。 此外,恶意软件、犯罪服务和伪造文件也通过该平台进行广告宣传,以获取利润。市场上提供了超过 42000 种产品,其中约 3600 种来自德国。市场上有数以万计的客户账户和数百个卖家账户。 经过调查,警方确定犯罪商业平台“Kingdom Market”上注册了来自不同国家的数千个账户,暗网市场的用户使用比特币、莱特币、门罗币和 Zcash 加密货币来支付服务。“Kingdom Market”管理员收取3%的手续费作为平台上所有销售的佣金。 两天前,曾有疑似当局的执法人员或者恶搞的网友以“FallenKingdom”的昵称在暗网的Dread论坛上发表了致“Kingdom Market”全体居民的一份公告: 王国的居民们,我们自豪地宣布,王国已经灭亡!感谢你们的合作。待续…… 与此同时,一些名不见经传的暗网市场,如“Elysium Market”、“Dark Matter Market”、“SuperMarket”等市场的管理员或者推广者开始在Dread论坛上发帖,表示他们的市场欢迎“Kingdom Market”的难民们(客户与供应商)。 也有网友怀疑是由于网址旋转器(URL rotator)泄露了服务器的真实IP,论坛里半年前就已经提醒过了。 Dread论坛的管理员三天前发布了“王国市场可能已被执法部门查封”主题,称: Dread 工作人员从一个值得信赖的方面得到消息,称有多人已被执法部门逮捕,他们的系统被查封,而这些人有足够的服务器权限进入王国的基础设施。我们不知道,也可能永远不会知道,这次被打击的严重程度。这是一个遗憾,但根据目前提供的信息,Kingdom Market从瘫痪中恢复的可能性基本上为零。 我会让评论开放几天,然后在有新消息之前将此子主题存档。 这样的事情偶尔会发生。请接受现实吧。如果你在 Kingdom 上订购时正确遵守了 OPSEC,你就不需要担心太多。如果没有,那就清理门户吧。 并在该消息得到德国当局证实后更新了BKA的链接:https://www.bka.de/DE/Presse/Listenseite_Pressemitteilungen/2023/Presse2023/231220_PM_Darknet_Kingdom_Market.html 暗网市场“Kingdom Market”在Dread论坛上的支持管理员“OhLongJohnson”也发表了最新的主题“来自 OhLongJohnson 的文字,KM 永远消失了。”,内容为: 亲爱的会员们 我很遗憾地告诉大家,管理员没了,市场没了,被查封了。 我现在很好,希望这一切能保持原样。 我要向所有社区和我们的会员道歉。太糟糕了,没有人会看到我们正在开发的新升级。我非常期待新升级版本的发布。这是我梦寐以求的工作。 非常感谢你们所有人,我爱你们,并将永远爱你们,我会记住的。我始终相信每个供应商都是善良的,并尽我所能为他们提供支持。我相信,每一个有“骗人”想法的供应商都可以成为真正的专业人士。我与许多买家和供应商建立了良好的关系,我感谢你们信任我,我也信任你们。我唯一遗憾的是,我无法与最近加入的新供应商进行更多交流。发生这样的事情,我感到非常难过。 我也很遗憾你们在市场服务器被查封后损失了金钱。我不知道查封了什么,也不知道数据库服务器位于何处。希望尽快恢复。 对不起,Kingdom让您失望了,对不起,您在市场关闭时损失了金钱。至少钱包和服务器不在同一个地方。 对于那些恨我或仍然恨我的人,我尊重你们和你们的意见。我并不完美,但我已尽我所能,努力做得越来越好。如果我伤害了任何人或在争议中做出了错误的决定,请原谅我。 也许我可以向您推荐我认为可以作为新家的任何其他市场,但我只提到一个市场可能会被认为有嫌疑。 我愿意相信,Kingdom Market 的这种情况会让暗网社区更加团结,让暗网用户彼此友好,而不是嘲笑新手,我希望从现在起有一个市场会退出骗局,而是以专业、和平的方式退出。许多人会认为我的话是胡说八道或类似的东西,但没关系,不同的意见总是好的,我是发自内心的。 遗憾的是,我无法告诉您我们的市场是如何建立起来的,因为我没有参与整个市场的开发,无论是旧市场还是新市场。我只是就 opsec 发现等问题与其他人进行了交流。我可以说,由于安全原因,钱包至少应该放在不同的地方。 对于所发生的一切,我真的很抱歉。 我爱你们,不管发生什么,你们都要好好相处,注意安全,保持微笑。我会去一个地方,希望他们不会抓我。感谢你们在 Kingdom Market 的工作,感谢你们对我们的忠诚和信任。我会记住你们,直到生命的尽头。 很棒的经历,我喜欢这份工作。 敬爱的 您的 OhLongJohnson 此外,Kirin博客发现,“Kingdom Market”在明网的镜像域名kingdommarket.so也被警方查封,访问后会跳转至http://kingdom-mkt-seized.com/。 更多暗网新闻动态,请关注“Kirin博客”。...

    2023-12-24 值得一看 145
  • 某博职业反差.大赛

    点击围观  ...

    2023-12-24 福利分享 76
  • 某博yyds眼睛.大赛

    点击围观  ...

    2023-12-24 福利分享 84
  • 系统设计-如何做到高可用、高吞吐、高扩展性

    我们经常需要设计具有高可用性、高可扩展性和高吞吐量的系统。它们的确切含义是什么? 下图是一份系统设计小抄,包含“三高”常见的解决方案。 1、高可用性 高可用意味着我们需要达到一个高水平的正常运行时间。我们通常将设计目标描述为 “3 个 9 ” 或 “4 个 9″。”4 个九”,即 99.99% 的正常运行时间,意味着服务每天只能中断 8.64 秒。 要实现高可用性,我们需要在系统中设计冗余。有几种方法可以做到这一点: Hot-Hot 两个实例接收相同的输入,并将输出发送到下游服务。如果其中一方宕机,另一方可以立即接替。由于两边都向下游发送输出,下游系统需要能够处理重复数据。 Hot-Warm 两个实例接收相同的输入,只有 Hot 端向下游服务发送输出。如果 Hot 端宕机, Warm 端将接替并开始向下游服务发送输出。 单领导集群 (Single Leader) 一个领导实例从上游系统接收数据并复制到其他副本。 无领导集群 (Leaderless) 这种集群中没有领导者。任何写入都会复制到其他实例。只要写入实例数加上读取实例数大于实例总数,我们就能获得有效数据。这被称为 quorum。 2、高吞吐量 这意味着服务需要在一段时间内处理大量请求。常用的指标是 QPS(每秒查询次数)或 TPS(每秒事务次数)。 为了实现高吞吐量,我们通常会在架构中添加缓存,以避免经过数据库或磁盘等较慢的 I/O 设备。我们还可以为计算密集型任务增加线程数量。但是,增加过多的线程会降低性能。因此,我们需要找出系统的瓶颈,提高系统的吞吐量。 我们还可以在系统中使用异步处理,以有效地单独隔离耗时耗资源的组件。 3、高扩展性 高扩展性意味着系统可以快速、轻松地扩展,以容纳更多的容量(横向可扩展性)或更多的功能(纵向可扩展性)。通常,我们通过观察响应时间来决定是否需要扩展系统。 要实现高度可扩展性,需要隔离每个服务的职责。为此,微服务被广泛采用。我们还利用服务注册和负载平衡器将请求路由到适当的实例。 ...

    2023-12-22 值得一看 130
  • 什么是DevOps和NoOps

    DevOps和NoOps是如何改变软件开发生命周期(SDLC)的? 下图比较了传统 SDLC、DevOps 和 NoOps。 在传统的软件开发中,开发、编译打包、测试、发布和监控是孤立的功能。 每个阶段都独立工作,然后移交给下一个阶段。 而 DevOps 鼓励持续开发以及开发人员和运营人员之间的协作。 这缩短了整个生命周期,提供了持续高质量的软件交付。 NoOps 是随着无服务器计算(Serverless)的发展而出现的新概念。由于我们可以使用 FaaS(Function-as-a-Service,函数即服务)和 BaaS(Backend-as-a-Service,后端即服务)来架构系统,因此云服务提供商可以承担大部分运营任务。开发人员可以专注于功能开发,并自动执行运维操作任务。 对于初创企业或较小规模的应用程序来说,NoOps 是一种务实有效的方法,它比 DevOps 更能缩短 SDLC。 ...

    2023-12-22 值得一看 116
  • logback详解及入门案例

    1. logback 日志的作用 记录系统和接口的使用情况,比如请求日志 记录和分析用户的行为,比如网站访问日志 调试程序,和控制台的作用类似,但是控制台中的内容并不会保存到文件中,而日志可以长期保存。 帮助我们排查和定位错误。比如在系统抛出异常时,将异常信息记录到日志,可以事后复盘。 通过分析日志还能够优化代码逻辑、提升系统性能、稳定性等。 1.1. logback介绍 Logback继承自log4j。Logback的架构非常的通用,适用于不同的使用场景。 通过上图可以看到logback和Log4j都是slf4j规范的具体实现,我们在程序中直接调用的API其实都是slf4j的api,底层则是真正的日志实现组件—logback或者log4j。 Logback 构建在三个主要的类上:Logger,Appender 和 Layout。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。 Logger作为日志的记录器,把它关联到应用的对应的context后,主要用于存放日志对象,也可以定义日志类型、级别。各个logger 都被关联到一个 LoggerContext,LoggerContext负责制造logger,也负责以树结构排列各 logger。 Appender主要用于指定日志输出的目的地,目的地可以是控制台、文件、 数据库等。 Layout 负责把事件转换成字符串,输出格式化的日志信息。 logback的maven坐标: <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.12</version> </dependency> 1.2. logback层级 在 logback中每一个 logger 都依附在 LoggerContext 上,它负责产生 logger,并且通过一个树状的层级结构来进行管理。 一个 Logger 被当作为一个实体,它们的命名是大小写敏感的,并且遵循以下规则: 如果一个logger的名字加上一个**.**作为另一个logger名字的前缀,那么该logger就是另一个logger的祖先。如果一个logger与另一个logger之间没有其它的logger,则该logger就是另一个logger的父级。 举例: 名为com.zbbmeta的logger是名为com.zbbmeta.service的logger的父级 名为com的logger是名为com.zbbmeta的logger的父级,是名为com.zbbmetat.service的logger的祖先 在logback中有一个root logger,它是logger层次结构的最高层,它是一个特殊的logger,因为它是每一个层次结构的一部分。 1.3. logback日志输出等级 logback的日志输出等级分为:TRACE, DEBUG, INFO, WARN, ERROR。 如果一个给定的logger没有指定一个日志输出等级,那么它就会继承离它最近的一个祖先的层级。 为了确保所有的logger都有一个日志输出等级,root logger会有一个默认输出等级 — DEBUG。 1.4 logback初始化步骤 logback会在类路径下寻找名为logback-test.xml的文件 如果没有找到,logback会继续寻找名为logback.groovy的文件 如果没有找到,logback会继续寻找名为logback.xml的文件 如果没有找到,将会在类路径下寻找文件META-INFO/services/ch.qos.logback.classic.spi.Configurator,该文件的内容为实现了Configurator接口的实现类的全限定类名 如果以上都没有成功,logback会通过BasicConfigurator为自己进行配置,并且日志将会全部在控制台打印出来 最后一步的目的是为了保证在所有的配置文件都没有被找到的情况下,提供一个默认的配置。 2. logback入门案例 2.1. 案例一 本案例是一个logback简单应用,并且不提供配置文件而使用其提供的默认配置。 第一步:创建maven工程logback-demo并配置pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zbbmeta</groupId> <artifactId>logback-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> </project> 第二步:编写单元测试 package com.zbbmeta.logback; import ch.qos.logback.classic.Level; import ch.qos.logback.classic.LoggerContext; import ch.qos.logback.core.util.StatusPrinter; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * 测试logback日志组件的使用 */ public class LogbackTest { //简单使用 @Test public void test1(){ //通过工厂对象获得一个logger日志记录器对象 Logger logger = LoggerFactory.getLogger("com.zbbmeta.test"); //当前logger对象的日志输出级别为debug,从root logger继承来的 //使用trace级别记录日志 logger.trace("trace..."); logger.debug("debug..."); logger.info("info..."); logger.warn("warn..."); logger.error("error..."); } //打印日志内部状态 @Test public void test2(){ //通过工厂对象获得一个logger日志记录器对象 Logger logger = LoggerFactory.getLogger("com.zbbmeta.test"); //当前logger对象的日志输出级别为debug,从root logger继承来的 //使用trace级别记录日志 logger.trace("trace..."); logger.debug("debug..."); logger.info("info..."); logger.warn("warn..."); logger.error("error..."); // 打印内部的状态 LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory(); StatusPrinter.print(lc); // 说明找文件步骤-->logback-test.xml-->logback.xml-->configuration /* |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml] |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml] |-INFO in ch.qos.logback.classic.BasicConfigurator@691a7f8f - Setting up default configuration.*/ } /* * 日志输出级别:ERROR > WARN > INFO > DEBUG > TRACE * */ //测试默认的日志输出级别 @Test public void test3(){ Logger logger = LoggerFactory.getLogger("com.zbbmeta.logback.HelloWorld"); logger.error("error ..."); logger.warn("warn ..."); logger.info("info ..."); logger.debug("debug ..."); //因为默认的输出级别为debug,所以这一条日志不会输出 logger.trace("trace ..."); } //设置日志输出等级 @Test public void test4(){ ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.zbbmeta.logback.HelloWorld"); logger.setLevel(Level.DEBUG);//设置当前日志记录器对象的日志输出级别 logger.error("error ..."); logger.warn("warn ..."); logger.info("info ..."); logger.debug("debug ..."); //因为默认的输出级别为debug,所以这一条日志不会输出 logger.trace("trace ..."); } //测试Logger的继承 @Test public void test5(){ ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)LoggerFactory.getLogger("com.zbbmeta"); logger.setLevel(Level.TRACE);//设置当前日志记录器对象的日志输出级别 //当前记录器对象是上面记录器对象的子级,从父级继承输出等级---INFO Logger logger1 = LoggerFactory.getLogger("com.zbbmeta.test"); logger1.error("error ..."); logger1.warn("warn ..."); logger1.info("info ..."); logger1.debug("debug ..."); logger1.trace("trace ..."); } //Logger获取,根据同一个名称获得的logger都是同一个实例 @Test public void test6(){ Logger logger1 = LoggerFactory.getLogger("com.zbbmeta.test"); Logger logger2 = LoggerFactory.getLogger("com.zbbmeta.test"); System.out.println(logger1 == logger2); } //参数化日志 @Test public void test7(){ Logger logger = LoggerFactory.getLogger("com.zbbmeta"); String value = "world"; logger.info("参数值为:" + value); logger.debug("hello {}","world"); } } 2.2 案例二 本案例是logback中Spring Boot项目中的应用。 第一步:创建maven工程springboot-logback-demo并配置pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.7.15</version> </parent> <groupId>com.zbbmeta</groupId> <artifactId>springboot-logback-demo</artifactId> <version>1.0-SNAPSHOT</version> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> </dependencies> </project> 第二步:在resources下编写logback配置文件logback-base.xml和logback-spring.xml logback-base.xml:作为基础配置 <?xml version="1.0" encoding="UTF-8"?> <included> <contextName>logback</contextName> <!-- name的值是变量的名称,value的值时变量定义的值 定义变量后,可以使“${}”来使用变量 --> <property name="log.path" value="logs" /> <!-- 彩色日志 --> <!-- 彩色日志依赖的渲染类 --> <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" /> <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" /> <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" /> <!-- 彩色日志格式 --> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <!--输出到控制台--> <appender name="LOG_CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>${CONSOLE_LOG_PATTERN}</Pattern> <!-- 设置字符集 --> <charset>UTF-8</charset> </encoder> </appender> <!--输出到文件--> <appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${log.path}/logback.log</file> <!--日志文件输出格式--> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 每天日志归档路径以及格式 --> <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>100MB</maxFileSize> </timeBasedFileNamingAndTriggeringPolicy> <!--日志文件保留天数--> <maxHistory>15</maxHistory> </rollingPolicy> </appender> </included> logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <!--引入其他配置文件--> <include resource="logback-base.xml" /> <!-- <logger>用来设置某一个包或者具体的某一个类的日志打印级别、 以及指定<appender>。<logger>仅有一个name属性, 一个可选的level和一个可选的addtivity属性。 name:用来指定受此logger约束的某一个包或者具体的某一个类。 level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF, 如果未设置此属性,那么当前logger将会继承上级的级别。 addtivity:是否向上级logger传递打印信息。默认是true。 --> <!--开发环境--> <springProfile name="dev"> <logger name="com.zbbmeta.controller" additivity="false" level="debug"> <appender-ref ref="LOG_CONSOLE"/> </logger> </springProfile> <!--生产环境--> <springProfile name="pro"> <logger name="com.zbbmeta.controller" additivity="false" level="info"> <appender-ref ref="LOG_FILE"/> </logger> </springProfile> <!-- root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性 level:设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF 默认是DEBUG 可以包含零个或多个元素,标识这个appender将会添加到这个logger。 --> <root level="info"> <appender-ref ref="LOG_CONSOLE" /> <appender-ref ref="LOG_FILE" /> </root> </configuration> 第三步:编写application.yml server: port: 8999 #logging: # #在Spring Boot项目中默认加载类路径下的logback-spring.xml文件 # config: classpath:logback.xml logging: #在Spring Boot项目中默认加载类路径下的logback-spring.xml文件 config: classpath:logback-spring.xml spring: profiles: active: dev 第四步:创建TutorialController package com.zbbmeta.controller; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import java.util.Objects; /** * @author springboot * @description: TODO */ @RestController @RequestMapping("/api") public class TutorialController { private static final Logger log = LoggerFactory.getLogger(TutorialController.class); /** * 根据ID查询Tutorial * @param id * @return */ @GetMapping("/tutorials/{id}") public void getTutorialById(@PathVariable("id") long id) { log.trace("trace..."); log.debug("debug..."); log.info("info..."); log.warn("warn..."); log.error("error..."); } } 第五步:创建启动类 package com.zbbmeta; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author springboot * @description: TODO */ @SpringBootApplication public class LogbackDemoApplication { public static void main(String[] args) { SpringApplication.run(LogbackDemoApplication.class,args); } } 启动项目,访问地址:http://localhost:8999/api/tutorials/1 可以看到控制台已经开始输出日志信息。 修改application.yml文件中的开发模式为pro,重启项目这日志输出到了文件中。 ...

    2023-12-22 值得一看 123
  • Java8 reduce操作详解

    什么是reduce Java8 中有两大最为重要的改变,其一是 Lambda 表达式,另一个就是 Stream API 了。 Stream 是 Java8 中处理集合的关键抽象概念,它将数据源流化后,可以执行非常复杂的查找、过滤和映射数据、排序、切片、聚合统计等操作。操作之后会产生一个新的流,而数据源则不会发生改变。 在使用 Stream 操作的过程中,往往有三个步骤, 1. 创建Stream 从一个数据源(集合,数组)中,新建一个 Stream 流。 2. 中间操作 一个中间操作链,对 Stream 流的数据进行处理。比如查找、过滤、映射转换等。 3. 终止操作 一个终止操作,执行中间操作链,并产生结果。常用的终止操作有 forearch、collect、match、count、min、max、reduce 等。 其中本文主要讲解的 reduct 操作就属于是 Stream 流操作中的终止操作。 reduce 操作是一种通用的归约操作,它可以实现从 Stream 中生成一个值,其生成的值不是随意的,而是根据指定的计算模型。 比如终止操作中提到 count、min 和 max 方法,因为常用而被纳入标准库中。事实上这些方法都是一种 reduce 操作。 本文大纲如下, reduce 操作三要素 为了方便大家理解 reduce (规约)操作,先给大家演示一下 reduce 操作的相关代码示例, List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); int result = numbers .stream() .reduce(0, (subtotal, element) -> subtotal + element); assertThat(result).isEqualTo(21); 可以看到,我们的 reduce 操作接受了三个参数,返回了一个 int 基本类型。 在 Stream API 中,提供了三个 reduct 操作方法,根据参数不同进行区分。 对应上方代码示例,也就是使用了接受两个参数的 reduce 方法,但其实接受两个参数的 reduce 方法的代码逻辑是和接受三个参数的 reduce 方法是一致的。通过上方截图可以看出。 所以这里,我就直接给大家介绍下 reduce 操作的三个参数分别有什么作用即可。 identiy 参数 identiy(初始值)是 reduce 操作的初始值,也就是当元素集合为空时的默认结果。对应上方代码示例,也就是说 reduce 操作的初始值是 0。 accumulator 参数 accumulator(累加器)是一个函数,它接受两个参数,reduce 操作的部分元素和元素集合中的下一个元素。它返回一个新的部分元素。在这个例子中,累加器是一个 lambda 表达式,它将集合中两个整数相加并返回一个整数:(a, b) -> a + b。 combiner 参数 combiner(组合器)是一个函数,它用于在 reduce 操作被并行化或者当累加器的参数类型和实现类型不匹配时,将 reduce 操作的部分结果进行组合。在上面代码示例中,我们不需要使用组合器,因为上面我们的 reduce 操作不需要并行,而且累加器的参数类型和实现类型都是 Integer。 为了方便大家理解 reduce 操作的内部逻辑,我给大家绘制了上面代码示例的执行示意图,如下, 如何使用 reduce 操作 为了更好地理解初始值,累加器和组合器的功能,让我们看一些基本的例子。 使用 reduce 查询整数集合的最小值 // 创建一个整数集合 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6); // 找出集合中的最小值 Integer min = numbers.stream().reduce((integer, integer2) -> { if (integer < integer2) { return integer; } else { return integer2; } }).get(); // 输出结果 System.out.println(min); // 1 在这个例子中,我们使用了一个参数的 reduce 操作,它接受一个累加器函数。累加器函数会返回集合两个元素中,较小的元素。 最终我们就可以找出集合中最小值 1。 使用 reduce 操作拼接字符串列表 我们可以对一个字符串列表使用 reduce 操作,将它们拼接成一个单一的字符串: // 创建一个字符串列表 List<String> letters = Arrays.asList ("a", "b", "c", "d", "e"); // 使用 reduce 操作拼接字符串列表 String result = letters .stream () .reduce ("", (partialString, element) -> partialString + element); // 输出结果 System.out.println (result); // abcde 在这个例子中,我们将初始值设为 “”,累加器函数设为 (a, b) -> a + b,它表示将两个字符串拼接起来。 我们可以看到,reduce 操作将累加器函数反复应用到列表中的每个元素上,得到最终的结果 abcde。 使用并行流计算整数列表的总和 List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5,6); // 使用并行流和 reduce() 方法计算整数列表的总和 int result = numbers.parallelStream() .reduce(0, (a, b) -> a + b, Integer::sum); // 输出结果 System.out.println(result); // 21 在这个例子中,我们使用 parallelStream() 方法将列表转换为并行流,再使用 reduce() 方法对整数列表进行 reduce 操作,并使用 Integer::sum 作为合并函数 combiner,将并行计算的结果合并。 使用并行流的好处能够充分利用多核 CPU 的优势,使用多线程加快对集合数据的处理速度。 不过并行流也不是任何时候都可以使用的,并行流执行过程中实际按照多线程执行,多线程编程有的问题,并行流都有。 比如多线程的线程安全,执行顺序等问题,并行流都是有的。这一点需要大家注意。 最后聊两句 本文介绍了 Java8 Stream 流中,reduce 操作的相关概念和接收参数,包含初始值,累加器和组合器,最后介绍了 reduce 操作如何使用,希望大家喜欢。 ...

    2023-12-22 值得一看 88

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注