- 博客(29)
- 收藏
- 关注
原创 说一下你熟悉的设计模式?
模版方法模式:定义了一个算法的骨架,而将一些步骤延迟到子类中,模版方法使得子类可以在不改变算法结构的情况下,重新定义算法的步骤。观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有的依赖者都会收到通知并自动更新。外观模式:提供一个统一的接口,用来访问子系统中的一群接口,外观定义了一个高层的接口,让子系统更容易使用。状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。工厂模式(简单工厂、抽象工厂):解耦代码。单例模式:保证被创建一次,节省系统开销。
2023-05-11 19:33:22
141
原创 OSI的七层模型都有哪些?
物理层:利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。网络层:通过路由选择算法,为报文或分组通过通信子网选择最适当的路径。传输层:向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输。表示层:处理用户信息的表示问题,如编码、数据格式转换和加密解密等。应用层:直接向用户提供服务,完成用户希望在网络上完成的各种工作。会话层:向两个实体的表示层提供建立和使用连接的方法。数据链路层:负责建立和管理节点间的链路。
2023-05-11 19:32:28
65
原创 java 中操作字符串都有哪些类?它们之间有什么区别?
String是不可变对象,每次对String类型的改变时都会生成一个新的对象。线程安全,由于加锁的原因,效率不如StringBuilder,多用于多线程。不频繁的字符串操作使用String,操作频繁的情况不建议使用String。线程不安全,效率高,多用于单线程。
2023-05-11 19:30:49
71
原创 什么是SQL注入?如何避免 SQL 注入?
SQL注入是比较常见的网络攻击方式之一,它是针对程序员编程时的疏忽,通过SQL语句,实现无帐号登录,甚至篡改数据库。用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中。攻击者在界面的表单信息或URL上输入一些奇怪的SQL片段(例如“or ‘1’=’1’”这样的语句),有可能入侵参数检验不足的应用程序。1、使用预处理 PreparedStatement。2、使用正则表达式过滤掉字符中的特殊字符。
2023-05-11 19:30:36
98
原创 在 Java 中,为什么不允许从静态方法中访问非静态变量?
非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;
2023-05-11 19:29:10
111
原创 读取数据量大的文件时,速度会很慢,如何选择流?
3.消除对大型表行数据的顺序存取。7.用排序来取代非顺序存取。5.避免困难的正规表达式。6.使用临时表加速查询。
2023-05-07 18:30:37
70
原创 线程池工作流程
1 当一个任务通过submit或者execute方法提交到线程池的时候,如果当前池中线程数(包括闲置线程)小于coolPoolSize,则创建一个线程执行该任务。3 如果任务不能入队,说明等待队列已满,若当前池中线程数小于maximumPoolSize,则创建一个临时线程(非核心线程)执行该任务。4 如果当前池中线程数已经等于maximumPoolSize,此时无法执行该任务,根据拒绝执行策略处理。任务队列是一个阻塞队列,线程执行完任务后会去队列取任务来执行,如果队列为空,线程就会阻塞,直到取到任务。
2023-05-07 18:28:32
56
原创 请求方式Get和Post的区别
post 提交方式: post 传送的数据量较大,一般被默认为不受限制。post 的所有操作对用户来说都是不可见的,地址栏不显示传输的值 , post 支持整个 ISO10646 字符集。get 提交方式: get 传送的数据量较小,不能大于 2KB ,get 是不安全的,用户可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。get 方式中 form 表单的数据集的值为 ASCII 字符。
2023-05-07 18:27:59
34
原创 Jsp的重定向和转发的流程有什么区别
1、转发是在服务端行为,客户端并不知道。而重定向是客户端行为。4、转发后URL地址栏不会变,重定向会变成请求的新地址。5、转发后request域中的信息可访问到,重定向不能。3、转发是同一个请求,而重定向是两个不同的请求。2、转发的速度快,重定向慢。
2023-05-07 18:27:50
170
原创 Linux常用命令
(3)df命令:检查各硬盘分区和已挂上的文件系统的磁盘空间。(4)fsck命令:检查和修复Linux文件系统。(2)umount命令:卸下已挂上的文件系统。(3)ps命令:查看目前程序执行的情况。(1)shutdown命令:正常关机。(1)mount命令:挂上文件系统。(2)reboot命令:重启计算机。(4)telnet命令:远端登录。(5)rlogin命令:远端登录。(3)ls命令:查看目录内容。(1)ftp命令:传送文件。(2)cd命令:改变目录。(4)cp命令:复制文件。(5)mv命令:移动文件。
2023-05-07 18:26:06
31
原创 Spring的优点和缺点
对代码的侵入小,应用程序对Spring API的依赖比较少。对主流的开源框架提供了很好的支持,简化开发过程,使我们更专注于业务逻辑的开发。启动Spring的IOC容器,需要依赖第三方的Web服务器,自身不能启动。Spring包含很多的组件,使用的组件越多,Spring的启动就会越慢。Spring是轻量级框架,可以自由选择使用哪几个Spring模块。使用了大量的反射机制,比较占内存,而且效率不如直接调用高。配置比较复杂,不过后来引入了注解配置,简化了配置过程。调试阶段不直观,不容易定位到Bug的问题所在。
2023-04-27 18:12:35
68
原创 AOF工作流程
对于错误格式的AOF文件:先进行备份,然后采用redis-check-aof --fix命令进行修复,修复后使用diff -u对比数据的差异,找出丢失的数据。Redis中默认不开启AOF,appendonly yes,是开启的配置。AOF缓冲区,根据策略向硬盘做同步。随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。当Redis服务器重启时,可以加载AOF文件进行数据恢复。所有写入命令会追加到aof_buf(缓冲区)中。四、文件重写rewrite。三、文件同步sync。
2023-04-27 18:11:09
218
原创 线程池工作流程
1 当一个任务通过submit或者execute方法提交到线程池的时候,如果当前池中线程数(包括闲置线程)小于coolPoolSize,则创建一个线程执行该任务。3 如果任务不能入队,说明等待队列已满,若当前池中线程数小于maximumPoolSize,则创建一个临时线程(非核心线程)执行该任务。4 如果当前池中线程数已经等于maximumPoolSize,此时无法执行该任务,根据拒绝执行策略处理。认务队列是一个阻塞队列,线程执行完任务后会去队列取任务来执行,如果队列为空,线程就会阻塞,直到取到任务。
2023-04-27 18:10:10
85
原创 什么是阻塞队列?
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。
2023-04-27 18:09:06
34
原创 读取数据量大的文件时,速度会很慢,如何选择流?
3.消除对大型表行数据的顺序存取。7.用排序来取代非顺序存取。5.避免困难的正规表达式。6.使用临时表加速查询。
2023-04-27 18:07:46
67
原创 Object的公用方法及各方法的作用。
1、Clone保护方法:实现对象的浅拷贝,只有实现了Cloneable接口才可以调用该类方法,否则抛出CloneNotSupportedException异常。3、HashCode:该方法用于哈希查找,重写了equals方法一般都需重写hashcode方法。5、Wait:使当前线程等待该对象的锁,当前线程必须是该对象的拥有者,也就是具有该对象的锁。2、Equals:在Object与===是一样的,子类需要重写该类方法。7、NotifyAll唤醒在该对象上等待的所有线程。
2023-04-20 19:56:40
43
原创 Java 序列化,反序列化的概念
Java 序列化是指:将对象转化成一个字节序列(二进制数据)的过程。将序列化对象写入文件之后,可以从文件中读取出来,并且对它进行反序列化。Java 反序列化是指:将一个对象的字节序列恢复成 Java 对象的过程。一个平台中序列化的对象,可以在另一个平台中进行反序列化,因为这个过程是在 JVM 中独立完成的,可以依赖于 Java 的可移植性。
2023-04-20 19:55:24
55
原创 集群及集群的作用
集群就是指⼀组(若⼲个)相互独⽴的计算机,利⽤⾼速通信⽹络组成的⼀个较⼤的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运⾏各⾃服务的独⽴服务器。2、高可用性:当集群的一个节点失败时,在该节点上运行的应用程序将自动在另一个节点上被接管。消除单个故障对于提高数据可用性、可访问性和可靠性非常重要。1、可扩展性:集群的性能不限于单个服务实体,可以动态地将新的服务实体添加到群集中,以提高群集性能。
2023-04-20 18:41:15
445
原创 自动装配的几种方式
constructor :把与Bean的构造器入参具有相同类型的其他Bean自动装配到Bean构造器的#对应入参中。autodetect :先尝试constructtor装配,失败再尝试byType方式。default:由上层的deefault-autowire属性確定。no-默认设置,表示没有自动装配。byType :根据类型装配。byName:根据名称装配。
2023-04-20 18:38:24
63
原创 什么是内存溢出, 内存泄露? 他们的区别是什么?
内存泄露是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但是内存泄漏次数多了就会导致内存溢出。内存溢出是指程序在申请内存时,没有足够的内存空间供其使用, 系统已经不能再分配出你所需要的空间;内存溢出通俗理解就是软件(应用)运行需要的内存,超出了它可用的最大内存。内存泄漏就是对某一内存空间的使用,使用完成后没有释放。
2023-04-20 18:02:26
151
原创 2021-10-12
微软公司:(即微软股份有限公司),是一家集研发、制造、授权和提供广泛的电脑软件服务业务为一体的跨国电脑科技公司,由比尔·盖茨与保罗·艾伦创办于1975年,总部位于美国华盛顿州雷德蒙德市。腾讯公司:(腾讯控股有限公司)是一家互联网企业,由马化腾、张志东、许晨晔、陈一丹、曾李青于1998年11月共同创立,是中国最大的互联网综合服务提供商之一,也是中国服务用户最多的互联网企业之一。腾讯多元化的服务包括QQ、微信、QQ空间、腾讯游戏、腾讯动漫、腾讯新闻客户端和腾讯视频等。甲骨文公司:Oracle公司是全球最大
2021-10-12 16:59:51
63
原创 2021-10-12
软件开发八个步骤1、软件定位:就是前期的想法确定,想要开发一款什么样的软件,是用于商城系统类型,还是预约类型,或者是资讯等类型,确定好自己想要开发哪一种软件,然后在进行下一步。2、需求整理:将自己的想法整理出来,如开发什么样的软件,需要有哪些主要功能,面对的用户群体有哪些,需要开发的端口,软件的主要用处是什么等方面的需求都需要整理清楚,方便后期开发更清晰,不能盲目开发。3、软件设计:你将需求与软件开发公司对接好之后,就是软件设计,前端的每个页面,每个按钮,后台的每个功能等界面设计,设计好了之后软件开发公
2021-10-12 16:53:00
58
原创 2021-09-30
软件公司有哪些: 1 华为技术有限公司2 腾讯科技(深圳)有限公司3 北京百度网讯科技有限公司4 中兴通讯股份有限公司5 浪潮集团有限公司6 中国通信服务股份有限公司7 中软国际有限公司8 东软集团股份有限公司9 中国软件与技术服务股份有限公司10 京东集团11 网易(杭州)网络有限公司12 南瑞集团有限公司13 海尔集团公司14 国网信息通信产业集团15 海信集团有限公司16 杭州海康威视数字技术股份有限公司17 阿里云计算有限公司18 北京小米移动软件有限公司19
2021-09-30 10:29:42
36
原创 2021-09-30
java开发工具:有JBuilder、VisualAgeforJava、ForteforJava,VisualCafe、 Eclipse、NetBeansIDE、JCreator+J2SDK、jdk+记事本、EditPlus+J2SDK等。
2021-09-30 10:17:19
42
原创 2021-09-30
操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,用户和计算机的接口,同时也是计算机硬件和其他软件的接口。其能管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,并使计算机系统所有资源最大限度地发挥作用。常见的电脑操作系统有:DOS操作系统、Windows(其中包括windows xp、Win7、win10等)、Linux操作系统、UNIX操作系统等;常见的智能手机操作系统有:Android、ios、Symbian
2021-09-30 10:13:36
43
原创 2021-09-27
名词解释jdk:jdk的是java development kit的缩写,意思是java程序开发的工具包。也可以说jdk是java的sdk,JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。环境变量:(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有
2021-09-27 19:11:52
77
原创 2021-09-23
据说:詹姆斯·高斯林(James Gosling)发明了Java,当时他想到自己手里拿着咖啡。这种语言最初是在高斯林办公室外面的一棵橡树之后被称为橡树的。后来,该项目以Green命名,并最终从Java coffee重命名为Java。1982年,Sun Microsystems从少数人开始。(后来,该公司成为了Oracle)。他们开发了一种称为Oak的编程语言。不幸的是,橡树这个名字已经被其他公司采用。该公司需要立即为Oak重新命名。想一想。您是否曾经给宠物或孩子起过名字?您从哪里开始?当时,Oak产
2021-09-23 19:16:18
48
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人