- 博客(55)
- 收藏
- 关注
原创 Misc杂项之图片隐写
47 49 46 38 39 61或47 49 46 38 37 61类型表示图片用二进制打开后开头的固定数字如下图png图片: 思路就是加入一部分十六进制数字不会改变图片。在010Editor工具内,直接 ctrl+f 搜flag:EXIF全称叫做 Exchangeable image file formatEXIF的信息包括: 相机拍摄时的各种参数,比如:光圈、快门、白平衡、ISO、焦距、日期时间、定位信息等。一个照片所能包含的信息有很多,甚至你微信发一个原图就能暴露你的位置信息,如下:这些都是EXIF
2024-11-17 12:01:45
485
原创 Java项目--网页版音乐播放器(JQuery前端逻辑)
本篇主要衔接上文的后端逻辑, 完成前端的JS代码采用JQuery方式完成, 具体的前端样式在此不讨论。
2022-09-04 13:59:22
1294
原创 Java项目--网页版音乐播放器(Spring Boot 后端逻辑)
本篇博客带大家做一个网页版的音乐播放器项目技术栈主要是SSM框架, 基本的创建项目就不写了, 直接上正题.
2022-08-30 10:40:32
3206
原创 Spring的那些事
目录一. 什么是IoC?二. 创建Spring项目三.对象的存取BeanFactory和ApplicationContextgetBean更多用法四. 更加简单的存取方式简单的存五大类注解@Bean 方法注解Spring 是一个包含了众多工具方法的IoC容器.那么啥是IoC呢? 首先, Spring是一个容器, 容器就是用来容纳物品的装置比如 Tomcat 就是一个Web容器.Spring是一个IoC容器, IoC翻译成中文是"控制反转", 有点抽象下面来举例说明: 比如上面的程序, 当需要一个 car 对
2022-07-06 23:26:56
219
原创 浅谈JVM的那些事
目录JVM内部划分程序计数器栈堆方法区类加载loadinglinkingverificationpreparationresolutioninitialization实例双亲委派机制过程垃圾回收机制(GC)1) 找垃圾基于引用计数(Python等方案)基于可达性分析(Java方案)2) 回收垃圾标记清除复制算法标记整理分代回收垃圾回收器这是JVM内内存最小的区域, 保存了下一条指令的地址在哪一条条指令就是一个个字节码, JVM需要把字节码给加载起来,再放到内存中最后由程序从内存中取出指令并放到CPU上运行.
2022-06-29 22:03:21
209
原创 以太网的MAC层
每台电脑都有一个网卡,一个网卡就配有一个MAC地址MAC地址用来确定网络设备位置的地址每个网卡的MAC地址都是唯一的,有且仅有一个,如果你电脑有无线网卡,你电脑就有两个MAC地址交换机和路由器会有更多的网络接口,也就有更多的MAC地址利用 ipconfig /all 就能看到自己主机的IP地址IEEE 802.3规定MAC地址为48位(6字节)的地址。前三位由IEEE统一分配,后三位厂家自行决定第一个字节的第一个比特位就表示它是单播地址还是多播地址(一般奇数就是多播)比如 07-E0-12-F6-2A-D8
2022-06-26 00:16:02
6597
原创 Linux基础操作
目录一、目录操作命令lscdpwdmkdirrmdir二、文件操作命令touchstatcatmorelessheadtail三、通用命令rmcpmv四、硬链接与软链接区分概念ln五、Linux权限文件类型用户身份文件权限位数字权限权限的作用chmodchownchgrpumask六、vim七、软件安装rpmyum八、压缩命令zipgzipbz2 tar 解包解压缩ls命令指查看目录下的内容。例如:查看dev文件内容这里的选项有很多,常用的如下:例如 :ls -a 显示全部文件(包括隐藏的文件)ls -l
2022-06-24 23:39:59
588
原创 Cookie与Session
cookie的功能多用于登录中。由于HTTP协议本身无状态,默认情况下HTTP协议的客户端和服务器之间的这次通信,和下次通信之间没有直接的联系.而在登录之后,会跳转界面,这个界面需要记住你的登录信息才会返回特定的界面,所以就诞生了 Cookie 来记住登录信息。就像去医院有就诊卡一样,这张卡上有很多患者的身份信息,刷这个卡的时候就能获取患者的一系列信息。这个就诊卡就像Cookie。医院的服务器上存放着用户的信息,也就是通过 session 方式存储的。由于服.
2022-05-26 16:53:19
122
原创 HTTPS的加密过程
HTTPS是HTTP的孪生兄弟,HTTPS在HTTP的基础上,引入了一个加密层。为什么要引入这个加密呢?因为当年存在着臭名昭著的“运营商劫持”。正常的下载情况:被运营商劫持了的下载情况:被劫持后这里下载了某Q浏览器,为什么呢?原因一目了然。所以,为了避免这个问题,就引入了HTTPS,用来对传输数据加密。对于加密,这里解释三个名词:明文:要传输的原始信息 密文:原始信息背后的秘密,要密钥才能解开 密钥:解开明文背后密文的钥匙接下来,我们简单模拟一下加密的实现过程。
2022-05-18 21:20:24
1015
原创 HTTP响应中常见的状态码
200 OK最理想的状态,获取到想要的内容404 Not Found要访问的资源不存在403 Forbidden资源有,但是没权限405 Method Not Allowed比如你用GET访问人家服务器,但是人家只支持POST,就会报这个错500 Internal Server Error服务器自己出问题了504 Gateway TimeOut服务器繁忙302 Move Temporarily重定向,就是进入网站会进入另一个网站在重定向的响应报内,一般
2022-05-18 19:48:40
1089
原创 HTTP的请求报头
目录HostContent-Length & Content-TypeUser-AgentRefererCookieHostHost就是描述目标服务器的位置,一般是一串域名域名最终会被DNS转换为IP地址Content-Length & Content-TypeContent-Length表示body中的数据长度 Content-Type表示body中的数据格式这里注意,因为这两个属性是描述body,GET请求是没有body的(如上面Host
2022-05-18 19:40:34
559
原创 HTTP协议的那些事
上篇博客简单介绍了TCP和UDP的协议内容,本篇将继续探讨HTTP协议引子之前讲过的TCP和UDP是基于传输层上的协议,与程序员直接交互还比较少。但是HTTP协议是应用层协议,也就是日常开发中用到最多的协议。传输层的协议关注的是端到端的数据传输,而应用层协议就更关注传输数据的具体使用。并且应用层协议很多情况下是程序员自己根据需求制定的,也就有了很多大佬写的协议模板,这个HTTP协议就是这个模板之一。HTTP协议虽然已经设计好,但是自身扩展性强,可根据自己需求自定义数据信息。.
2022-05-14 19:33:45
449
原创 TCP与UDP协议的那些事
在传输层中,有两个很重要的协议:UDP和TCP接下来我们先来聊一聊这两个协议UDP报文格式一个UDP报文包含UDP报头和UDP数据载荷两个部分其中数据载荷就是应用层数据UDP报头则存储着8字节的信息:分别是源端口号,目的端口号,报文长度和校验和其中源端口号就是操作系统给客户端自动分配的端口目的端口就是服务器的端口报文长度在UDP中只有两个字节,也就意味着只能表示0-64k的数据,需要在应用层分包,再通过多个UDP数据报发送(所以一般用TCP)校验和用于验证网络.
2022-04-27 22:17:51
1522
1
原创 初识网络原理
目录一些基本概念局域网/广域网交换机和路由器IP地址和端口号协议网络分层OSI七层模型TCP/IP五层模型封装与分用一些基本概念局域网/广域网比如下面的例子,两根网线把三台主机连起来就是一个局域网但这是最简单的情况,一般都会使用一些转发设备,比如交换机和路由器而广域网其实就是大一点的局域网全世界最大的广域网叫做“因特网”交换机和路由器交换机有很多网口,很多主机将网线插到一个交换机上,这些主机就组成一个局域网并且这些主机间可以
2022-04-11 21:11:23
404
原创 Java文件操作
Java的文件操作, 主要包含两类操作:文件系统相关的操作, 比如创建文件, 文件改名的操作等 文件内容相关的操作File类构造方法:构造方法内可以写绝对路径,也可以写相对路径.典型方法:查看文件名,路径名 public static void main(String[] args) throws IOException { File file = new File("./test.txt"); System.out.println(.
2022-04-06 21:14:25
5495
4
原创 多线程进阶
一.常见的锁策略乐观锁与悲观锁悲观锁: 预期锁冲突的概率很高, 做的工作更多, 成本更高, 更低效 乐观锁: 预期锁冲突的概率很低, 做的工作更少, 成本更低, 更高效就像一个人是否乐观一样.如果他很乐观, 什么都不需要考虑, 自然也就轻松,.如果一个人很悲观, 天天愁这愁那, 自然也就很低效.读写锁区别于普通的互斥锁, 互斥锁只有加锁和解锁两种操作, 读写锁就是在加锁的时候额外表明一个意图对于读写锁来说, 分成了三个操作加 读锁: 如果代码只是进行了读, 就加 读锁
2022-03-30 16:01:49
248
2
原创 Java线程安全
目录引例不安全的情况解决办法加锁内存可见性指令重排序总结引例先来一个引例 : 创建两个线程对同一个变量进行自增50000次class Counter { // 这个 变量 就是两个线程要去自增的变量 public int count; public void increase() { count++; }}public class Demo1 { private static final Counter
2022-03-26 19:17:11
1171
原创 多线程的基础编程
一. 线程的定义方法线程的五种定义方法第一种: 创建一个类继承Threadclass thread1 extends Thread{ @Override public void run(){ System.out.println("thread1"); }}public class TestDemo { public static void main(String[] args) { //第一种方式:继承Thread
2022-03-25 17:02:08
570
原创 初识多线程
目录进程与线程操作系统如何管理线程PCB中的一些属性内存资源的分配关于线程的那些事总结:进程与线程我们的电脑上都有应用程序,当我们双击使它运行起来时,就创造了一个进程.进程就是正在运行的程序(如图)进程也可以叫做一个任务(task)进程中包括一个或多个线程把进程比作一个工厂,线程就是进程中的流水线.操作系统如何管理线程先描述一个进程,明确进程中的一些相关属性(创造一个结构体) 再组织若干个进程,(使用双向链表,把很多进程的信息放到一起)在操作系
2022-03-24 17:10:16
668
1
原创 MySQL索引与事务
一.索引索引就像一本书的目录,为的就是提高数据库的查找速率.但是也有其坏处:会占用更多的空间,拖慢增删改的速度使用在创建主键约束,唯一约束,外键约束时,会自动创建对应列的索引查看索引show index from 表名;创建索引create index 索引名 on 表名(字段名);删除索引drop index 索引名 on 表名;这里注意:创建索引是一件很低效的事, 所以要在设计数据库表时就要创建好.索引背后的数据结构索引背后的数据结构是一颗 B+
2022-03-16 23:03:07
1917
6
原创 优先级队列的相关应用
一、topK问题问题描述:从N个数中找到前K个大的数比如{1,2,3,4,5}中前2个大的就是 4 和 5这里介绍使用优先级队列的方法,思路是这样:用数组中前K个元素先构建一个小根堆 然后遍历数组取值,如果这个值大于堆顶元素就弹出堆顶元素 再把这个值放入重新调整为一个小根堆因为每次都把堆中最小的值弹出,所以最后留下的K个值一定是最大的。照这个思路,我们不难得到:求前K个最大,建小根堆 求前K个最小,建大根堆 求第K大,就是调整好的小根堆的堆顶元素(堆顶元素一定是这K个.
2022-02-12 23:00:55
574
2
原创 创建优先级队列
本篇将介绍优先级队列,并自己创建一个。目录概念分类创建优先级队列基本方法shiftDown()方法shiftUp()方法概念首先注意:堆只是优先级队列的一种是实现方式而已讲到优先级队列就要讲到二叉树使用数组存储,并用层序遍历的方式放入数组中就是它的表现形式一般为了保证没有空间浪费,存储的都是完全二叉树分类优先级队列还分为大根堆和小根堆大根堆就是任意节点值都大于子树节点值,小根堆相反因为它们的特点,所以优先级队列的作用就..
2022-02-11 19:19:26
1193
2
原创 一篇入门HTML
作为前端三剑客之一的HTML,有必要入个门,话不多说,直接上菜。目录一、工具二、HTML简介HTML框架三、HTML基本标签基础标签实体符号四、表格单元格合并thead、tbody、tfoot五、背景颜色与图片设置背景图或者背景色插入图片六、超链接七、列表无序列表有序列表八、表单(重点)用户注册表单上传文件hidden组件readonly与disabled九、节点的id属性十、div与span一、工具.
2022-01-05 15:12:49
867
原创 刷题日志——链表篇(下)
此题的一种思路是:分别算出两个链表长度,然后让短的先走他们长度的插值这样两个链表在同一起点,一起往后走直到遇到相同节点就返回(如果没有相同的他们一起到null了)代码:public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { if (headA == null && headB == null){
2021-12-05 12:15:00
560
2
原创 刷题日志——链表篇(上)
这篇博客就是总结以下自己刷力扣链表简单题的错误点与想法。1.合并两个有序链表第一次的有错想法:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode dummy = new ListNode(-1); ListNode tmp = dummy; while (l1 != null || l2 != null){ ..
2021-12-04 10:41:36
907
2
原创 java异常注意点
本片博客主要讲以下异常的注意点。1. 如果异常不被try catch捕捉,异常会给jvm处理,程序就立即停止了。public static void main(String[] args) { int[] array = {1,2,3}; System.out.println(array[5]); System.out.println("haha!");}这里的 'haha' 就不会执行。但是,在try中写上面的代码,'haha'也不会执行。 ..
2021-11-28 21:18:12
652
5
原创 包、继承、多态
一、包(package)包,即package,其实就是存放了很多类。存着就有要用的时候,所以我们可以用import来引入类这里带来一个注意点,import 是引入类,不是引入包。例如util是一个包,但是Date是一个类第一种引入包就报错了,第二种引入类不报错再看这种方式这个就是导入util包中所有的类,但只有你用到包中某个类时,才会自动引用。创建包首先要注意包名要小写我们右击src在写包名,我们可以用 '.'来表示下一级目录如果这样输入:..
2021-11-13 14:45:17
979
5
原创 时间复杂度与空间复杂度
一串代码的效率很重要,衡量一串代码的效率可以分为两个标准:时间复杂度、空间复杂度目录✍一、时间复杂度????二、计算时间复杂度练习????三、空间复杂度????四、计算时间复杂度练习一、时间复杂度因为每个机器配置不同,不可能去测试代码执行时间。所以我们用算法中的基本操作的执行次数,为算法的时间复杂度。让我们来看一串代码:// 请计算一下func1基本操作执行了多少次?void func1(int N){ //1. int count = 0;
2021-11-01 16:04:05
216
2
原创 Java类与对象
这一节我们来到了类与对象,这是Java的一大特色,需要重点掌握。一、面向对象含义说到面向对象,就要说到面向过程。C语言就是经典的面向过程语言,而Java是经典的面向对象语言。面向过程注重的是过程,在整个过程中所涉及的行为,就是功能。面向对象注重的是对象,也就是参与过程所涉及到的主体。是通过逻辑将一个个功能实现连接起来。面向对象编程步骤:找对象,建对象,用对象。二、普通类让我们看一段普通类的定义:class Person{ //成员变量 publ..
2021-11-01 11:09:30
188
6
原创 Java数组的使用
Java的数组与C的数组工作原理相同,但是使用起来大相径庭,让我们来探讨下。一、数组的定义Java数组有三种定义方式,如下:int[] a = {1,2,3,4,5};//用的最多int[] a1 = new int[3];int[] a2 = new int[]{1,2,3,4,5};第一种用的最多,区别于C语言,Java认为 ' int[] '是一个类型所以 ' int[5] a ' 这种写法是错误的。这里的 'new' 是Java的一个关键字,数组是引用类型,所以使用数组
2021-10-25 16:49:58
370
3
原创 Java方法中的要点
Java中的方法,其实就是 C 语言里的函数。但是Java内部有自己的注意点,这里列举一二。一、Java中的传值调用先记住一点,Java中只有传值调用。看一串代码:public static void swap(int x, int y){ int tmp = x; x = y; y = tmp;}public static void main(String[] args) { int a = 10;
2021-10-25 10:36:00
227
2
原创 程序的编译
写了这么多程序,那么程序到底是如何编译的呢?每一个源文件都会经过编译与链接的过程,最终才会展示出来。过程大致如下:源文件先经过编译器编译为目标文件,最后由链接器将库文件和目标文件结合,成为可执行文件。接下来,我们来探讨一下编译与链接的具体过程。目录一、编译1.1 预编译1.2 编译1.3 汇编二、链接三、运行一、编译编译可以分为三个阶段:预编译、编译、汇编。为了方便演示,这里使用Linux环境演示。1.1 预编译这个过程主要由三...
2021-10-14 11:16:45
2825
10
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人