1,效果
找到博客主题下的categories.pug, 替换代码
123#tag .category-lists#tag-cloud-list!= tags_page_list(#tag .category-lists#tag-cloud-list!= tags_page_list("categories")
找到博客主题下的tags.pug, 替换代码
12345.tag-cloud-list.is-center #tag #tag-cloud-list !=tags_page_list(.tag-cloud-list.is-center #tag #tag-cloud-list !=tags_page_list("tags")
找到博客主题下的tag_page.styl, 替换代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 ...
Hexo
未读1,效果
找到博客主题下的aside.style, 529行替换代码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647if hexo-config('aside.enable') #aside-content >.card-widget.card-info position: relative; padding: 0; overflow: hidden; // 确保伪元素的模糊效果不会溢出 +maxWidth768() display: none; > .card-content padding: 1rem 1.2rem; min-height: 320px; position: relative; z-index: 1; // 确保内容在伪元素之上 backdrop-filter: blur ...
测试网站安全性能是确保网站免受攻击、漏洞和滥用的关键步骤。以下是一些常见的方法和工具,用于评估网站的安全性和性能:
1. 漏洞扫描漏洞扫描可以帮助检测网站中已知的安全漏洞。常用的工具有:
OWASP ZAP:一个开源的Web应用程序安全测试工具,能够扫描常见漏洞如SQL注入、跨站脚本(XSS)、跨站请求伪造(CSRF)等。
Burp Suite:一款专业的Web应用测试工具,提供自动扫描、手动测试和渗透测试等功能。
Nessus:专注于扫描操作系统和应用程序的漏洞,但也能对Web服务器进行漏洞扫描。
2. 渗透测试渗透测试(Penetration Testing)是模拟黑客攻击以评估网站的安全性。渗透测试的目标是通过漏洞利用、社会工程学等手段,评估攻击者如何访问网站敏感数据或控制网站。
Kali Linux:包含大量渗透测试工具,如Metasploit、Nmap、Nikto等。
Metasploit:一个非常强大的框架,用于开发和执行漏洞利用代码。
3. SQL注入和XSS测试SQL注入和跨站脚本(XSS)是Web应用中最常见的漏洞之一。
SQL注入:攻击者通过输入恶意SQ ...
TCP:一种面向连接(连接导向)的,可靠的,基于字节流的运输层(Transport layer)通信协议。
TCP传输协议
TCP:一种面向连接(连接导向)的,可靠的,基于字节流的运输层(Transport layer)通信协议。
特点:
面向连接
点到点的通信
高可靠性
占用系统资源多,效率低
UDP传输协议
UDP: 一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
特点:
非面向连接,传输不可靠,可能丢失
发送不管对方是否准备好,接受方收到也不确认
可以广播发送
非常简单的协议,开销小
套接字Socket
我们开发的网络应用程序位于应用层,TCP和UDP属于传输层协议,在应用层如何使用传输层的服务呢?在应用层和传输层之间,则是使用套接字来进行分离。
UDP编程需求:完成在线咨询功能;
学生和咨询师在线一对一交流
分析:
使用基于UDP协议的Socket网络编程实现
不需要利用IO流实现数据的传输
每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地。
UDP基本概念:
DatagramS ...
数据结构与算法
未读结合LeetCode上203题,学习链表的删除虽然看不懂,嗯对。
删除链表中的元素
123456789101112131415161718192021222324252627282930313233/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeElements(ListNode head, int val) { while(head != null && head.val == val){ ListNode delNode = head; head = head.next; delNode.nex ...
网络编程
未读
网络: 将不同区域的电脑连接在一起,组成局域网,城域网或广域网。把分布再不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便地互相传递信息,共享硬件,软件,数据信息等资源。
资源共享
信息传输与集中处理
负载均衡与分布处理
通信协议: 计算机网络中实现通信必须有一些约定即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等指定标准。
通信接口: 为了使两个结点之间能进行对话,必须在它们之间建立通信工具(即接口),使彼此之间能进行信息交换。接口包括两部分:
硬件装置:实现结点之间的信息传送;
软件装置:规定双方进行通信的约定协议
网络分层: 由于结点之间联系很复杂,在制定协议时,把复杂成份分解成一些简单的成份,再将它们复合起来。最常用的复合方式是层次方式,即同层间可以通信,上一层可以调用下一层,而与再下一层不发生关系。
TCP/IP是一个协议族,也是按照层次划分,共四层:应用层,传输层,互连网络层,网络接口层(物理+数据链路层)。
OSI网络通信协议模型,是一个参考模型,而TCP/I ...
Java
未读
1. 任务定时调度某一个有规律的时间点干某件事:
每天早上8点,闹钟响起
每年4月1自己给当年暗恋女神发一封匿名贺卡
想每隔1小时,上传一下自己的学习笔记到云盘
通过Timer和Timetask,我们可以实现定时启动某个线程。
java.util.Timer: 类似脑中的功能,本身实现的就是一个线程
java.util.TimerTask: 一个抽象类,该类实现了Runnable接口,所以该类具备多线程的能力。
1234567891011121314151617181920212223242526272829303132333435package cn.TimerTest01;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Timer;import java.util.TimerTask;/** * 任务调度: * Timer 和 TimerTask类 * @author HQF * */public class TimerTest01{ public s ...
Java
未读多线程_并发_非同步_三大经典案例
多线程_并发_非同步_三大经典案例并发:同一个对象多个线程同时操作。
Ⅰ
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051package cn.syn;/** * 线程不安全 * 数据有负数,有相同的情况 * @author HQF * */public class UnsafeTest01 { public static void main(String[] args) { UnsafeSleep01 web12306 = new UnsafeSleep01(); System.out.println(Thread.currentThread().getName()); new Thread(web12306,"码畜").start(); new Thread(web12306,"码农").start(); new Thread(web1 ...
多线程_深度观察状态
线程的优先级priority
Java提供一个线程调度器来监控控制程序中启动后进入就绪状态的所有线程。线程调度器按照线程的优先级决定应调度那个线程来执行。
Thread.MIN_PRIORITY = 1
Thread.MAX_PRIORITY = 10
Thread.NORM_PRIORITY = 5
使用下述方法获得或设置线程对象优先级。
int getPriority();
void setPriority(int newPriority);
优先级的设定建议在start()调用前
注意:优先级低只是意味着获得调度的概率低。并不是绝对调用优先级高后调用优先级低的线程。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748package cn.Thread;/** * 线程优先级 1- 10 * - Thread.MIN_PRIORITY = 1 * - Thread.MAX_PRIORITY = ...
Dom文档对象模型[Web前端]
四种获取html元素的方法
用Id获取元素的方法
12345678910111213141516<script type="text/javascript"> function check(){ var username = document.getElementById("username"); var usernameMsg = document.getElementById("usernameMsg"); var emailMsg = document.getElementById("emailMsg"); var passworldMsg = document.getElementById("passwordMsg"); var repassworldMsg = document.getElementById("repasswordMsg");<tr align=& ...
Java
未读多线程的终止[Java]
不使用JDK提供的stop()方法(它们本身也被JDK废弃了)
提供一个boolean型的终止变量,当这个变量置为false,则终止线程的运行
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package cn.Thread;/** * 终止线程 * 1. 线程正常执行完毕--》次数 * 2. 外部干涉--》加入标识 * 不要使用stop destroy * @author HQF * */public class TerminateThread implements Runnable{ //1. 加入标记 标记线程体是否可以运行 private boolean flag = true; private String name; public TerminateThread(String name) { // TODO Auto-generated constructor stub ...
Java
未读多线程编程②[Java]
线程就是独立的执行路径
在程序运行时,即使没有自己创建线程,后台也会存在多个线程,如gc线程,主线程。
main()称之为主线程,为系统的入口点,用于执行整个过程;
在一个进程中,如果开辟了多个线程,线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为的干预的;
对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制;
线程会带来额外的开销,如cpu调度时间,并发控制开销。
每个线程在自己的工作内存交互,加载和存储主内存控制不当会造成数据不一致。
创建线程的三种方式
继承Thread类
实现Runnable接口
实现Callable接口
线程方法
sleep()
使线程停止运行一段时间,将处于阻塞状态
如果调用了sleep方法之后,没有其他等待执行的线程,这个时候当前线程不会马上恢复执行!
join()
阻塞指定线程等到另一个线程完成以后再继续执行。
yield()
让当前正在执行线程暂停,不是阻塞线程,而是将线程转入就绪状态;
调用了yield方法之后,如果没有其他等待执行的线程,此时当前线程就会马上恢复执行 ...