- 博客(25)
- 收藏
- 关注
原创 7大设计原则与UML图笔记
接口使用规范开发代码的程序员分为两种角色作者(服务端程序员-提供接口服务的人)用户(客户端程序员-使用接口提供的服务的人)一般使用第三方提供的服务时,使用者手里是没有源码的,即使有也不能修改。7大设计原则开闭原则解释:当应用的需求改变时,在不修改软件实体的源代码或者二进制代码的前提下,可以扩展模块的功能,使其满足新的需求。对于扩展是开放的,但是对于修改是封闭的。作用:开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续
2021-07-18 10:28:55
196
原创 JAVA的hashcode与equals
java内有散集合HashSet、HashMap以及HashTable,它们的底层都是源于hash实现的,hash即通过映射像 y=ax+b 一样将对象与某个值映射起来这样查找起来就快了很多,理论上查找时间是O(1),即查找每个元素花费的时间都一样,hashcode就相当于y,x就是具体的某个对象或基础数据,基于hashcode我们可以实现hash查找。以HashMap为例,HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,当我们存入数据会经过一下过程:1、比较tab
2021-06-20 15:11:46
171
原创 RPC与RMI
简介RPC(Remote Procedure Call)远程过程调用,是一种通信模式,与本地调用相区分,一块代码要调用另一个服务器上的接口,RPC像是一个实现标准,不局限于语言,通过RPC可以使两个不同程序记进行相互调用,是C/S结构,其封装了底层网络通信,像调用本地方法一样调用远程服务器上运行程序的方法,区别于HTTP服务,RPC基于TCP/IP协议,而HTTP服务基于应用层的HTTP协议,效率上RPC会更高。RMI(Remote Method Invocation)远程方法调用,它是java实现用于
2021-05-30 12:07:36
198
原创 RPC初了解
前言 RPC(Remote Procedure Call)远程过程调用,是一种通信模式,与本地调用相区分,一块代码要调用另一个服务器上的接口,对于java而言,要调用另一个服务器上的资源,可以使用socket通信或者Http/Https访问,因此对于RPC来说,其实现需求之一就是,必须要选择一种通信协议。 因为java远程调用传输调用信息因此,其实现需求之二就是实现信息的序列化。其发展可如下所示:RPC流程优化原始socket通信需要了解client与server的详细细节(数据类型、
2021-05-23 10:28:42
118
原创 SeLinux
SeLinux安全性信息安全评估等级四类七级:D\C1,C2\B1,B2,B3\A,SeLinux隶属于B1级别SeLinux特点:MAC 强制性访问控制,对访问的控制彻底化,对文件、目录、端口。 RBAC 基于角色的访问控制,对用户赋予最小权限。 角色具备权限,root不再最大。 TE 类型标签 类型执行,对进程赋予最小运行权限。对文件赋予type类型的标签,对进程赋予domain类型的标签,可规定某进程只能执行某类文件 。SeLinux的执行模式:enforcing 强制模式,只要S
2021-05-09 14:09:17
197
3
原创 java的Socket编程
1、TCP通信客户端:import java.io.*;import java.net.InetAddress;import java.net.Socket;/** * @Author: LiuJiaChao * @Description: java网络编程-客户端 * @Date: Created in 21:37 2021/3/27 */public class Client { public static void main(String[] args) throws
2021-03-28 14:44:59
149
原创 socket通信过程
一、网络字节序与主机字节序1、主机字节序:就是自己的主机内部,内存中数据的保存顺序,可以分为两种:小端字节序(little-endian):低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。大端字节序(big-endian):高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。2、网络字节序大端字节序即网络字节序3、数据传输过程a的固有数据存储-------标准化--------转化成b的固有格式IIa的主机字节序----------网络字节序 --
2021-02-28 14:17:43
6823
原创 Spring Security(原理解析:简单入门)
Spring Security(简单入门)内容两部分:1. spring security的链;2. spring security的使用Spring Security的链 Spring Security的实现依靠的是链,用户发起请求,客户端接受请求,再经过Web Filter的过滤请求最终传到Servlet上,而spring security就是再原有的链新添加了一条链,这条链专门用来处理用户的安全认证与授权。如图: FilterChainProxy即spring secu
2020-12-27 10:17:13
404
原创 linux命令记录
linux笔记基础命令1、init 0关机 init 3符文界面 init 5图形界面 init 6重启 starx切换到图形 与init 5相比不用登录2、 tty 查看当前终端窗口 uname -r查看系统内核 lscpu查看CPU信息3、whoami查看谁登陆的 who am i谁登录并且附带时间 who查看所有正在登陆的人3、runlevel查看当前init等级4、id -u查看uid5、内部命令:shell自带的命令 外部命令:外部文件所带的命令
2020-12-20 13:26:43
337
原创 java正则表达式零宽断言(预搜索) 详解(附图)
java预搜索分为两种:正向预搜索(正向的含义是预搜索匹配的位置后)a. 正向预搜索匹配(?=exp)(匹配位置后不能出现被表达式exp匹配的字符)b. 正向预搜索不匹配(?!exp) ((匹配位置后有被表达式exp匹配的字符))反向预搜索(反向的含义是预搜索匹配的位置前)a. 反向预搜索(?<=exp)(匹配位置前不能出现被表达式exp匹配的字符)b. 反向预搜索不匹配(?<!exp) (匹配位置前有被表达式exp匹配的字符)上面是解释不好理解,下面是演示:public c
2020-11-30 11:18:36
719
1
原创 java注解初了解
前言写java经常会遇见@ano这样的东西,这个就叫做注解,注解就像是一个标记,我们在一个类,一个方法或者一个成员变量上面写上注解时就表示这个东西被这个注解标记了,假设有一个类Stu有public String name属性,我们在这个属性上写@ano("张三"),就表示name被ano标记了,我们标记是还记录了一个参数,是"张三",那么我们只要再去写一个解析类,去分析Stu这个类的name属性是否被ano标记了,如果被标记了,是否有参数,这样我们就能去通过注解去执行一些东西了,接下来就可以了解下我
2020-11-25 11:40:09
183
原创 java注解深入学习
一、自定义注解分为三个步骤:注解类定义使用注解对注解进行解释说明1.1、注解定义:@Target({ElementType.TYPE,ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)public @interface Eat { String fruit() default "香蕉"; //在注解类中,这些抽象方法叫属性 String vegetable() default "茄子"; //default 表示默
2020-11-25 09:07:56
172
原创 java类加载顺序
java有枚举类:// 定义一个星期的枚举类public enum WeekEnum { // 在第一行显式地列出7个枚举实例(枚举值), //系统会自动添加 public static final 修饰 MONDAY, TUESDAY, WEDNESDAY;} 枚举类本质是:public final class WeekEnum extends Enum { ... public static final WeekEnum MONDAY; pub
2020-11-17 16:16:03
388
原创 静态内部类非静态内部类特性与使用
注:只有内部类才能被声明为静态类,即静态内部类静态内部类;静态内部类能有静态成员变量、方法和非静态成员变量、方法。 静态内部类能够访问外部类的所有成员变量,只能访问静态方法。 可实例化(前提是权限修饰符的权限足够)。 可重写构造方法。 可以嵌套静态或非静态内部类非静态内部类:不能有静态成员(方法,变量)。 可以访问外部的所有成员变量、方法。 可实例化,实例化需要外部类的实例化对象(前提是权限修饰符的权限足够)。 可重写构造方法。 可以嵌套内部类,但不能嵌套静态内部类 可被定义
2020-11-15 10:15:00
470
原创 session初了解
什么是Session使用Cookie和附加URL参数都可以将上一次请求的状态信息传递到下一次请求中,但是如果传递的状态信息较多,将极大降低网络传输效率和增大服务器端程序处理的难度。Session技术是一种将会话状态保存在服务器端的技术 ,它可以比喻成是医院发放给病人的病历卡和医院为每个病人保留的病历档案的结合方式 。客户端需要接收、记忆和回送 Session的会话标识号,Session可以且通常是借助Cookie来传递会话标识号。同一用户的不同页面共享数据(Session).
2020-11-08 14:43:30
171
1
原创 设计模式学前知识补充
接口使用规范开发代码的程序员分为两种角色作者(服务端程序员-提供接口服务的人) 用户(客户端程序员-使用接口提供的服务的人)一般使用第三方提供的服务时,使用者手里是没有源码的,即使有也不能修改。7大设计原则单一原则 每个方法、每个类、每个框架只负责一件事情。 里氏替换原则 任何能使用父类对象的地方,都应该能替换为子类对象。 替换后,语法不报错,逻辑无问题。 保证了转型的正确性 依赖倒置原则 上层(0调用者)不能直接依赖下层(被调用者),它们都应该依赖于抽象。 当
2020-11-01 10:25:14
138
原创 HTTP与HTTPS间的联系与如何由HTTP到HTTPS
一、HTTP(HyperText Transfer Protocol)HTTP(超文本传输协议)是普遍使用的一种应用层协议,超文本意味着它能传输文本以外的资源,例如音频、视频等,对于前端开发人员来说是最常接触的协议,熟练使用它也是必备技能之一。谈到HTTP就要说下GET和POST了(GET和POST能组合出其余所有的类型,例如PUT,DELET等),常见的理解是像账号密码之类的最好能使用POST,因为放到GET里会显示在导航栏内,不安全,但使用POST就一定安全吗?无论使用GET还是POST都无
2020-10-18 11:50:10
475
1
原创 java反射机制与动态代理
反射相关:Java反射机制是在运行状态中 对于任意一个类,都能知道这个类的所以属性和方法; 对于任何一个对象,都能够调用它的任何一个方法和属性; 这样动态获取新的以及动态调用对象方法的功能就叫做反射。 反射的基础是Class(java.lang.Class)类。(1)、java代码在计算机里的三个时期正在上传…重新上传取消正在上传…重新上传取消class文件其实是字节码文件,也可认为是二进制文件。class是由JVM在执行过程中动态加载的。JVM在第一次读取到一种class类.
2020-10-11 11:33:43
139
1
原创 mysql语句问题解决
1、left join数据筛选问题 on后面的条件只能对left join右边的表进行筛选,左表匹配不到右表数据会在原右表位置处显示null,left join左边的表数据不受约束,将on后的条件加到where后会对所有数据进行筛选。2、相同数据重复筛选使用问题 with <name> as() mysql内可以使用with as生成临时表,<name>为临时表的名字,使用如下:with arc as( select id,arc.t...
2020-09-30 17:03:50
279
原创 有关DFA算法的简述
学到敏感词匹配,了解到DFA算法,这个算法整体难度不大,依靠一些数据结构的的知识就能够构建代码,在这之前,先了解下DFA算法的思想。 关于DFA算法名字的意义我并不能讲解具体,有能力者可以去了解下,名字也是了解一个东西的重要手段之一。 说会正文,一般敏感词匹配都会有一个敏感词库,词库内依靠 ‘,’或者空格之类的符号隔开,通过解析文本字符串很容易得到每一个敏感词,现有敏感词如下: 简书不 简书不好用 简书跟高永 java最好用...
2020-09-13 10:38:05
4670
原创 java复习-2(总结自廖雪峰)
反射相关:Java反射机制是在运行状态中 对于任意一个类,都能知道这个类的所以属性和方法; 对于任何一个对象,都能够调用它的任何一个方法和属性; 这样动态获取新的以及动态调用对象方法的功能就叫做反射。 反射的基础是Class(java.lang.Class)类。(1)、java代码在计算机里的三个时期 class文件其实是字节码文件,也可认为是二进制文件。 class是由JVM在执行过程中动态加载的。JVM在第一次读取到一种class类型时,将其加载进内存。每加...
2020-08-23 09:06:12
460
原创 maven记录
项目生命周期:(清除项目编译信息-clean)-- 编译(compile) -- 测试(test) -- 打包(package) -- 安装(install) -- 部署(deploy)clean:清理生命周期compile ---> deploy:默认生命周期site:站点生命周期一、命令:mvn clean --清除target文件夹(项目转移,运行环境可能改变,因此要把他人编译好的东西删除)。 mvn compile --编译项目核心代码,建立或更新target文件夹。
2020-08-16 14:39:09
112
原创 mybatis执行流程简析
mybatiha需要定位到执行哪条sql语句:针对注解通过Mapper.java的全限定类名加方法名定位,例如:package com.xh.mapper; import com.xh.Admin; //接口方法必须与xml的id相同 xml代替注解作用 public interface AdminMapper { @Select("select * from admin") public List<Admin> selectAll(); } //该定位方式即为:p
2020-08-08 09:19:31
224
原创 java复习(总结自廖雪峰)
super()事项子类的构造方法的第一行需要调用super()或者父类其它的有参构造方法,系统默认会在子类的构造方法第一行添加super(),如果父类无无参构造方法则会报错。方法签名:方法签名=方法名+形参列表 方法名相同,方法参数相同,但方法返回值不同,也是不同的方法。在Java程序中,出现这种情况,编译器会报错。重载、覆写、多态:重载:方法名相同,返回参数类型相同,形参列表不同的方法。 覆写:方法名相同,返回参数类型相同,形参列表相同的方法。 多态:多态是指,针对某个类型的方法..
2020-08-01 20:26:53
331
原创 对程序语言里指针的理解
学了一段时间数据结构,遇到的比较大的问题还是对指针理解,了解指针是什么,但对怎么使用还是有些不太明白,现在学的还可以了,对一些基本的使用没有什么大问题,之前学java时,学到过java里没指针,其实是隐藏了,在c里明显会看到指针,用时需要去声明一个指针变量,而java不会我们一直使用的都是一个具体的引用型变量,在给方法传参时不用去管指针,直接用同类型变量接收就行了,其实形参在接收时接收的就是这个类...
2019-04-10 10:54:54
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人