暂无个人介绍
后门( Back Door )是指一种绕过安全性控制而获取对程序或系统访问权的方法。在软件的开发阶段,程序员常会在软件内创建后门以便可以修改程序中的缺陷。如果后门被其他人知道,或是在发布软件之前没有删除,那么它就成了安全隐患。
网上购物时,确定你采用的是安全的连接方式。你可以通过查看浏览器窗口角上的闭锁图标是否关闭来确定一个连接是否安全。在进行任何的交易或发送信息之前阅读网站的隐私保护政策。因为有些网站会将你的个人信息出售给第三方。在线时不要向任何人透露个人信息和密码。
常见的安全事件 (1)钓鱼 具有诱惑性标题,仿冒真实网站,骗取用户账号,骗取用户资料。通常使用邮件发送链接的形式。 (2)网页篡改 被黑客入侵后进行网页的篡改,百度输入"intitle:hack by"可搜出被黑了的网站。搜索关键字:Hacked by 搜索引擎语法:Intitle:keyword 标题中含有关键词的网页;Intext:keyword 正文中含有关键词的网页;Site:domain在某个域名和子域名下的网页。 (3)暗链 主要是攻破网站后将一些第三方链接植入到网页中。百度搜索"Intext www.saginn.com"有相关网站。主要是为了将某些网站排在搜索引擎的前列。
我们首先要确认连接池需要哪些配置信息,根据经验,一个数据库连接池至少要有一下几个必须的配置。首先是必须由用户指定的几项配置,也就是数据库驱动、数据库连接的url、用户名和密码。然后是可以由连接池自己默认指定的几项配置,这些配置一般有:连接池初始大小,连接池最大大小,健康检查开始时间,健康检查间隔时间,以及连接超时时间。这些配置信息我们可以将其写进一个properties文件里,这个文件我们命名为pool.properties,处于项目的resource目录下。在创建数据库连接池时我们需要将这些配置信息读进内存里。
该类包含以下属性,前4个属性是必须由外部指定的,剩下的都是可以默认指定的。(如果pool.properties中没有说明,就是用默认值,约定大于配置的思想)DataSourceConfig类
COUNT函数计算包含数字的单元格以及参数列表中数字的个数。使用函数 COUNT可以获取区域或数字数组中数字输入项的个数。 (1)语法格式:COUNT(valuel,value2,…) (2)功能:计算区域中包含数字的单元格个数
(1)可以引用不同工作簿中的单元格 引用格式为:[工作簿名]+工作表名!+单元格引用 例子:在“工作簿1”中引用“工作簿2”的sheet1工作表中的第三行第5列单元格,可表示为:[工作簿2]sheet1!E3 (2)若要引用同一工作簿中不同工作表中的单元格或单元格区域 引用格式为:工作表名!+单元格引用 例如:sheet2!A3
Ethernet以太网IEEE802.3 以太网第一个广泛部署的高速局域网; 以太网数据速率快; 以太网硬件价格便宜,网络造价成本低。
最大传输单元MTU(Maximum Transmission Unit),数据链路层的数据帧不是无限大的,数据帧长度受MTU限制。
差错检测:奇偶校验码、循环冗余校验码CRC 奇偶校验码–局限性:当出错两位时,检测不到错误。 循环冗余检验码:根据传输或保存的数据而产生固定位数校验码。
(1)网络信息可被授权实体访问并按需求使用的特性。 即网络信息服务在需要时,允许授权用户或实体 使用的特性,或者是网络部分受损或需要降级使 用时,仍能为授权用户提供有效服务的特性 (2)可用性是系统在执行任务的任意时刻能正常工作的概率,一般用系统正常使用时间和整个工作时间之比来度量 (3)提高可用性需要强调减少从灾难中恢复的时间 (4)是产品可靠性、维修性和维修保障性的综合反映。
网络信息在存储或传输过程中保持不被偶然或蓄意地添加、删除、修改、伪造、乱序、重放等破坏和丢失的特性 完整性是一种面向信息的安全性,它要求保持信息的原样,即信息的正确生成、正确存储和正确传输 保障完整性的方法: (1)良好的协议:通过各种安全协议可以有效地检测出被复制的信息、被删除的字段、失效的字段和被修改的字段 (2)密码校验和方法: 它是抗窜改和传输失败的重要手段 (3)数字签名:保障信息的真实性,保证信息的不可否认性 (4)公证:请求网络管理或中介机构证明信息的真实性
(1)系统能够在规定条件和时间内完成规定功能的特性,是所有网络信息系统的运行和建设的基本目标。 (2)通过抗毁性,生存性与有效性进行衡量。 (3)可靠性是在给定的时间间隔和给定条件下,系统能正确执行其功能的概率。 (4)提高可靠性需要强调减少系统中断(故障)的次数。
List接口:有序集合,允许重复元素。常用实现类有ArrayList和LinkedList。 List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("apple"); Set接口:无序集合,不允许重复元素。常用实现类有HashSet、TreeSet。 Set<String> set = new HashSet<>(); set.add("apple"); set.add("banana"); Map接口:键值对映射,键不能重
String类: String是一个不可变类,一旦创建就不能修改。 String greeting = "Hello"; greeting = greeting + " World!"; System.out.println(greeting); // 输出: Hello World! StringBuilder和StringBuffer: 这两个类用于可变字符串操作,StringBuilder在单线程环境下使用,而StringBuffer是线程安全的。 StringBuilder sb = new StringBuilder("Hello"); sb
InnoDB支持事务,MyISAM不支持 InnoDB支持外键,MyISAM不支持 InnoDB是聚簇索引,MyISAM是非聚簇索引 InnoDB支持行锁和表锁,MyISAM只支持表锁;【并发情况下,InnoDB性能更牛,默认一锁只会锁住一行数据】 InnoDB不支持全文索引,MyISAM支持 InnoDB支持自增和MVCC模式的读写,MyISAM不支持 InnoDB支持支出数据库异常崩溃后的安全恢复,MyISAM不支持【崩溃后,重启会保证数据恢复到崩溃前状态。这个恢复的过程依赖于redo.log】
-Xmx[]:堆空间最大内存 -Xms[]:堆空间最小内存,一般设置成跟堆空间最大内存一样的 -Xmn[]:新生代的最大内存 -xx[use 垃圾回收器名称]:指定垃圾回收器 -xss:设置单个线程栈大小 一般设堆空间为最大可用物理地址的百分之80
原子性:一个事务内的操作统一成功或失败 一致性:事务前后的数据总量不变 隔离性:事务与事务之间相互不影响 持久性:事务一旦提交发生的改变不可逆
启动类@SpringbootApplication注解下,有三个关键注解 (1)@springbootConfiguration:表示启动类是一个自动配置类 (2)@CompontScan:扫描启动类所在包外的组件到容器中 (3)@EnableConfigutarion:最关键的一个注解,他拥有两个子注解,其中@AutoConfigurationpackageu会将启动类所在包下的所有组件到容器中,@Import会导入一个自动配置文件选择器,他会去加载META_INF目录下的spring.factories文件,这个文件中存放很大自动配置类的全类名,这些类会根据元注解的装配条件生效,生效
堆内存溢出:(1)当对象一直创建而不被回收时(2)加载的类越来越多时(3)虚拟机栈的线程越来越多时 栈溢出:方法调用次数过多,一般是递归不当造成
核心线程数:线程池中的基本线程数量 最大线程数:当阻塞队列满了之后,逐一启动 最大线程的存活时间:当阻塞队列的任务执行完后,最大线长的回收时间 最大线程的存活时间单位 阻塞队列:当核心线程满后,后面来的任务都进入阻塞队列 线程工厂:用于生产线程
JMM(Java内存模型 )屏蔽了各种硬件和操作系统的内存访问差异,实现让Java程序在各平台下都能达到一致的内存访问效果,它定义了JVM如何将程序中的变量在主存中读取 具体定义为:所有变量都存在主存中,主存是线程共享区域;每个线程都有自己独有的工作内存,线程想要操作变量必须从主从中copy变量到自己的工作区,每个线程的工作内存是相互隔离的 由于主存与工作内存之间有读写延迟,且读写不是原子性操作,所以会有线程安全问题
单链表每个结点有一个指针域和一个数据域,要访问任何结点都需知道头结点,不能逆着进行。双向链表则添加了一个指针域,通过两个指针域分别指向结点的前一个结点和后一个结点。这样的话,可以通过双链表的任何结点访问到它的前一个结点和后一个结点。 两个指针域一个存储直接后继结点的地址,一般称为右链域,另一个存储直接前驱结点,一般称为左链域。
ArrayList是线程不安全的,底层使用 Object[]存储数据,可以存储任何类型的对象,包括 null 值,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。 核心属性: private static final int DEFAULT_CAPACITY = 10;//默认容量 transient Object[] 存储元素的集合 private int size; 元素个数 构造方法: public ArrayList() ; public ArrayList(int initialCapacity) ; public ArrayList(Collection<?
Java程序在执行子类的构造方法之前,如果没有用super()来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用super()来调用父类中特定的构造方法,则编译时将发生错误,因为Java程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。
通常高级程序设计语言所包含的语法内容: 1、关键字:该种语言中被赋予了特殊含义的单词。 2、标识符:用于标识数据跟表达式的符号。通常可以理解为在程序中自定义的名称。如变量名,函数名。 3、注释:注解说明解释程序,用于调试程序 4、变量:用于标识内存中一片空间。用于存储数据,该空间中的数据是可以变化的。当数据不确定时用变量。 5、运算符:可以让数据进行运算的符号。 6、语句:用于对程序的运行流程进行控制的表达式。 7、函数:用于对功能代码进行封装,便于提高复用性。 8、数组:对多数据进行存储,便于操作,也就是容器。 9、对象:只要是基于对象或者面向对象的语音,就存在对象的概念,对象就是一个封装体
存储过程是一组为了完成特定功能的SQL语句集合。 存储过程在使用过程中是将常用或者复杂的工作,预先使用SQL语句写好并用一个指定的名称存储起来,这个过程经编译和优化后存储在数据库服务器中。当需要使用该存储过程时,只需要调用它即可。存储过程在执行上比传统SQL速度更快、执行效率更高。
先使用delimiter临时修改自定义SQL结束符 delimiter $$ (2) 使用create procedure [库名].存储过程名() 创建存储过程 create procedure [库名].存储过程名() (3) 再用delimiter把SQL语句结束符改回分号 delimiter ; (4) 使用call [库名].存储过程名调用存储过程 call 存储过程名 (5) 查看存储过程
Servlet接口中一共是5个方法,其中有三个是生命周期方法。 Ø void init(ServletConfig):这个方法会在Servlet被创建后,马上被调用。只会被调用一次!我们可以把一些初始化工作放到这个方法中,如果没有什么初始化工作要做,那么这个方法就空着就可以了。 ² Servlet有两个时间点会被创建:一是在第一次被请求时,会被创建;二是Tomcat启动时被创建,默认是第一种,如果希望在tomcat启动时创建,这需要在web.xml中配置。 Ø void destroy():这个方法会在Servlet被销毁之前被调用。如果你有一些需要释放的资源,可以在这个方法中完成,如果
ServletContext Servlet三大域对象: l ServletContext:范围最大,应用范围! l HttpSession :会话范围! l HttpServletRequest:请求范围!
InnoDB事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键。MySQL5.5.5之后,InnoDB作为默认存储引擎,InnoDB主要特性有: InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoDB锁定在行级并且也在SELECT语句中提供了一个类似Oracle的非锁定读。 InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘关系的数据库引擎所不能匹敌的。 InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池
ODBC(Open Database Connectivity):开放数据库互连技术为访问不同的SQL数据库提供了一个共同的接口。ODBC使用SQL作为访问数据的标准。这一接口提供了最大限度的互操作性,一个应用程序可以通过共同的一组代码访问不同的SQL数据库管理系统(DBMS)。 一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Access,MySQL还是Oracle数据库,均可用ODBC API进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。
java集合可分为Set、List、Queue和Map四种体系。 set代表无序、不可重复的集合 List代表有序、重复的集合 而Map则代表具有映射关系的集合 Queue代表一种队列集合实现 Java集合就像是一种容器,可以把多个对象(实际上是对象的引用,但习惯上都称对象)“丢进”该容器中。从Java5 增加了泛型以后,Java集合可以记住容器中对象的数据类型,使得编码更加简洁、健壮。
数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合。如下: 数组能存放基本数据类型和对象,而集合类存放的都是对象,集合类不能存放基本数据类型。数组和集合存放的对象皆为对象的引用地址。 数组容易固定无法动态改变,集合类容量动态改变。 数组无法判断其中实际存有多少元素,length只告诉了数组的容量,而集合的size()可以确切知道元素的个数 集合有多种实现方式和不同适用场合,不像数组仅采用顺序表方式 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性即可实现各种复杂操作,