自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 详细对比常用Java混淆和加密工具

针对使用JavaFX开发的项目,面临一个普遍问题:Java语言由于其解释性质和高度的抽象化,使得其编写的程序极易遭受反编译的风险。这一点在我们需要将编译后的JAR文件提供给客户时尤为重要,因此确保代码安全性成为至关重要的任务。

2024-04-18 09:19:09 765

原创 java基础之入门

局内内部类存在于方法中。和成员内部类的区别在于:局部内部类的访问权限仅限于方法或作用域内。成员内部类可以无条件访问外部类数据,外部类需要创建内部类对象,通过对象访问。传参如果是一个接口,可以直接在方法括号内创建接口的匿名内部实现类。局部内部类只能访问外部类的final变量。不能由权限修饰符和static修饰。将一个类定义在另外一个类的类中。只能访问外部类的final变量。不能包含静态属性和方法。

2024-03-05 14:18:24 276 1

原创 简单工厂模式和策略模式

策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户@OverrideSystem.out.println("算法A实现");@OverrideSystem.out.println("算法B实现");@OverrideSystem.out.println("算法C实现");​​/*** 初始化时传入具体的策略对象*/​/*** 根据具体的策略对象,调用其算法的方法*/​//算法方法。

2023-11-23 14:00:11 79 1

原创 为何选择阅读《大话设计模式》

尽管能看出某些设计采用了特定的设计模式,例如xxxx设计模式,以实现松耦合等优势,但在实际框架设计中,我仍感到迷茫,不知道应该选择哪个设计模式最为合适。因此,选择阅读《大话设计模式》是为了汲取前人的经验,让我能够更深入地理解和应用设计模式,从而更好地发展自己的编程技能。一开始,《大话设计模式》就强调了面向对象编程的优势,即通过封装、继承、多态来降低程序的耦合性。本书是采用c# 来进行编程的,之前搞游戏开发的时候也学过c#,在学习的时候我会将他翻译成java版本如果有不对的请指正。

2023-11-23 01:57:37 64 1

原创 代码命名规范(阅读源码必备)

不过,相对于传统的适配器进行api转接,如果你的某个Handler里面方法特别的多,可以使用Adapter实现一些默认的方法进行0适配。为了让大家更好的理解命名的套路,我借鉴了最流行的Java接开源软件(spring系列,netty,libgdx,guava,logback等等),总结了10类常见的类命名。配合高级的IDE,可以减少编码人员的记忆负担,靠模糊的匹配就能找到自己所需要的资源。用来将context中传递的值进行复制,添加,清除,重置,检索,恢复等动作。你会在框架类代码中发现大量这样的名词。

2023-03-25 22:44:43 469

原创 从0开始带你阅读Sping源码阅读(一)

下载spring源码并且了解spring的核心源码,我不会通读但是我会介绍主要用到的所有方法,已经他的设计思想,了解设计思路,不可否认spring是我们接触的最优秀的源码之一

2023-03-25 22:42:24 165

原创 大白话讲解设计模式

策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理,最终可以实现解决多重if判断问题。1.环境(Context)角色:持有一个Strategy的引用。2.抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。3.具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。定义策略接口->实现不同的策略类->利用多态或其他方式调用策略。

2023-03-23 16:24:09 457

原创 使用大白话介绍TCP协议以及其为什么要这么设计

虽然在发送的时候有个总大小但是就相当于(我给一个人发了钱给了总重量,但是钱的金额是多少并不清楚)所以在发送的时候需要加入CRC校验码(其实就是关联数据)根据一个公式 双方计算出的值应该是一样的就是对的。​ 刚刚我是拿一个文字来举例的,它的传输比较小,但是如果我们想要传输比较大的文件的话,a和b一直形成一条导线,其他的导线不能连接就断网,可能会造成网卡只接受了这个其他消息都接受不到的情况。这样每份小数据之间就有了较大的时间间隔,路由器趁着这个时间间隔可以给其他的设备发送数据,这样不会导致其他设备断网。

2023-02-24 22:05:38 159

原创 非常详细的讲解在浏览器中输入bilibili.com后执行的全部过程,可结合我前面说的TCP协议食用

其中HTTPS代表他是加密传输的用来保证传输的安全性,服务器和运行商之间的协商就对应着开头讲的紫色部分,地址栏有小锁图标代表信任的安全认证的加密证书,点开之后我们可以看到证书的使用人和颁发人,证书的有效时间、指纹信息,传输内容的加密是非对称加密,服务器持有密钥客户端持有公钥,我们可以在详细信息中可以看到证书的签名算法、公钥的路径等等,我们发现HTTPS加密传输每次都要协商时间说明比HTTP非加密访问要慢,但是现在浏览器如果不使用HTTPS的话会出现不安全的提示。

2023-02-24 21:55:46 1005

原创 大白话系列之计算机网络OSI介绍

此文章只是进行简单的科普方便非计算机学生进行阅读如果有哪里描述不精准望指正。

2023-01-05 23:11:04 330

原创 手把手教你如何修改jar包,以及了解JVM虚拟机的重要性

当我们可以读懂他的过程的适合我们就可以通过修改他JVM指令来达到我们修改函数目的,如果只是简单替换字符串的话我推荐使用classlib在这个工具里面我们可以清楚的看到他值的储存位置。我们都知道代码的运行速度和编译成汇编之后的的多少成正比,所以我们有必要去了解java相关虚拟机的知识,并且知道我们怎么写会造成隐形类型转换等导致的运行速度慢等问题。除了这种我们还可以直接修改反编译的,反编译代码少量修改再将其环境搭建起来运行再编译成class直接解包jar文件,替换完再打包也可以。#2就是我们的成员变量a。

2023-01-05 00:58:23 4603 1

原创 图文讲解为什么重写equals()方法一定要重写hashCode()方法

想要接受这个问题我们必须了解一下三个对象==在引用数据类型当中进行的是地址的比较,equals()方法在Object类当中其底层也是用==比较地址,但是不同的类可能会重写equals()方法,比如String类中的equals()方法就是先比较地址是否相同,如果相同直接返回true,地址不同在比较值,如果值相等那么同样返回true();...

2022-07-23 11:37:41 93

原创 图文结合讲解linux实现简易校园防火墙(文字原理+代码)

防火墙使用Linux自带的iptable防火墙大部分校园内部分两种登录因为是多账户登录,每次登录都会更改配置文件同时对配置文件的标记文件也进行修改,造成了标志文件每次登录都会覆盖标志文件的问题。被反复覆盖Shell文件需要记录上次标志文件的版本号,如果版本号发生改变的话,重启配置文件—既标记返回覆盖也无关系修改配置文件的时候如果同时修改配置文件的话会产生干扰,退出修改,登录新增。产生覆盖问题方法:配置文件可以分成多份 既防火墙文件 将配置规则放入d、b、c配置文件,但是将d、b、c的文件的引入方式放

2022-07-11 22:54:53 1178

原创 【手把手教你使用BIO的方式实现一个简易tomcat】

本课程的难度较高,需要将Servlet原理和IO课程全部学完。自定义servlet需要实现@WebServlet并且实现name和urlMapping重启进行访问http://localhost:8090/myServlet重启进行访问http://localhost:8090/index.html在SearchClassUtil类当中可以设置servlet包的位置我们本次设计的tomcat能够将用户请求的资源进行返回配置HttpServlet创建HttpServletRequest接口

2022-07-10 12:22:35 379

原创 手把手教你在linux服务器中部署javaweb项目

服务器购买地址购买一台腾讯云(阿里云)轻量应用服务器,这里以2核2G示范。 注:因为服务器系统使用的是《宝塔Linux面板 7.8.0 腾讯云专享版》,所以不用再安装宝塔,可跳过此步,其他系统需要手动安装宝塔。宝塔官网:宝塔面板下载,免费全能的服务器运维软件 Linux宝塔面板7.9.0安装脚本Centos安装脚本 Ubuntu/Deepin安装脚本 Debian安装脚本 Fedora安装脚本 访问宝塔面板 进入【控制台】,点击【服务器】

2022-07-09 22:20:25 859

原创 详细讲解为什么数组记录地址的时有的下标为1有的为0

计算机无论是记文件的地址也好,记什么都只记录首地址,数组中第一个地址就是和数组中第一个数的地址重合 所以数组下标从0开始计算机只记录开头比特点(第一个字节的地址)的地址 即物理存储单元的地址 每一片区域第一个字节的地址原因: 理解版本为什么有的语言下标为0有的语言下标为1...

2022-07-09 21:48:20 353

原创 【图文结合大白话讲解java中i++、i=i++问题】

【声明:内容摘自知乎博主“热心网友赵女士”,并进行了通俗改编】今天在班里学了自增操作,先看一个简单的案例:i++或者++i参与到运算中的时候,有个特定的规律: 所以上面的题,int m=7+a++;计算过程:(1)先计算 m=7+a (2)再计算: a=a+1所以最后结果 a=11 m=17上面的就是个常规题,你要是上面的都没看懂 ,那么下面的也不用看了。。。。今天上课有个学生问我 :i=i++ 为啥不遵照上面的规律 ???先看一个代码: 按照上面的道理,varNum经过 varNum=va

2022-07-09 18:20:46 737 2

原创 由浅入深讲解显示存储计算机基础原理

计算机在内存中一般都是以1010101二进制的方式计算机存储的方式一般分为三种其中CPU和内存都是断电之后数据就会消失,而磁盘存储断电之后就不会消失。其中磁盘又分为机械盘和固态盘,咱们在工作当中一般是以机械盘为主其中的主要原因有: 我们内存中的数据基本都是来源于磁盘之中,而显示器中的数据都是来源于内存之中。磁盘中在存储0101的时候依赖的是磁介质,我们可以将磁介质看为一个个很小的磁铁,每个磁铁具备N极和S极--->N级是1,S级是0。N-1 S-0 高电压-1 低电压-0数据传输之间依赖的是导线,在计算机

2022-07-09 18:03:29 2038

原创 大白话讲解举例时间复杂度的计算方式

时间频度一个算法执行所消耗的时间理论上是算不出来的,必须上机测试才知道。我们又不能将每一个算法都上机测试,但是我们知道每个算法所执行的时间一定和该算法的执行次数成正比。那个算法执行的次数越多,那么他花费的时间也就越多。为此我们将算法中所有语句的频度之和即为T(n).时间复杂度前面提到的时间频度T(n)中,n称为问题的规模,当n不断变化时,时间频度T(n)也会不断变化。但有时我们想知道它变化时呈现什么规律,为此我们引入时间复杂度的概念。一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用

2022-07-09 16:31:51 1227

原创 图文结合大白话讲解树的发展

众所周知我们如果想要直接遍历无序数组它的时间复杂度为O(n)级别,但是当数据量达到一定地步的时候O(n)显的也很大,那么我们应该怎么来降低它的时间复杂度呢?比O(n)级别更低的时间复杂度也只有O(1)和O(logn)了提起O(logn)我们的第一想法就是循环减半,但是折半查找虽然为O(logn)的时间复杂度,但是它的前提是有序数组,我们在八大排序中时间复杂度最低的也是O(nlogn)级别,所以折半查找肯定不可取。在此我就不对折半查找和八大排序进行相应的基础普及了有兴趣可以看我其他系列的文章既然O(log

2022-07-09 16:15:26 234

转载 Unity离线文档打开速度问题

使用Notepad++,批量删除相关字段</script><link href="https://fonts.googleapis.com/css?family=Roboto&amp;display=swap" rel="stylesheet">替换为<link href="http://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic" rel="stylesheet" type="text

2021-11-16 16:31:40 140

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除