
java
文章平均质量分 90
mhfaaa
这个作者很懒,什么都没留下…
展开
-
Shiro(2)
Shiroshiro是apache旗下一个Java安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权、加密,会话管理等功能的开发,可为任何应用提供安全保障,降低系统成本Shiro功能登录/身份认证,登录失败次数限制对用户执行访问控制,如: 判断用户是否拥有角色admin,判断用户是否拥有访问的权限在任何环境下使用Session API。例如CS程序加密,保证数据安全;原创 2021-07-01 17:20:02 · 296 阅读 · 0 评论 -
shiro框架
shiro框架什么是shiroshiro是apache旗下一个Java安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证、权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架。使用shiro就可以非常快速的完成认证、授权、加密,会话管理等功能的开发,可为任何应用提供安全保障,降低系统成本基础RBACShiro功能登录/身份认证,登录失败次数限制对用户执行访问控制,如: 判断用户是否拥有角色admin,判断用户是否拥有访问的权限在任何环境下使用Session API。原创 2021-06-30 19:28:20 · 339 阅读 · 0 评论 -
NoSQL-Redis
NoSQLNoSQL即Not Only SQL不仅仅是SQL,泛指非关系型的数据库NoSQL数据库可以分为4大类:键值key-value存储、列存储、文档数据库、图形数据库CAP原理CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。CAP原则是NOSQL数据库的基石。分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性C:在分原创 2021-06-30 19:26:07 · 302 阅读 · 0 评论 -
SpringBoot Redis
SpringBoot Redis两种应用开发方式:SpringBoot cache提供的注解和Spring data提供的RedisTemplate。RedisTemplate的用法依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifac原创 2021-06-30 19:24:21 · 97 阅读 · 0 评论 -
Web(2-Servlet)
Servlet什么是servlet :servlet的作用:servlet的生命周期初始化阶段:运行阶段:销毁阶段:servlet怎么处理一个请求?servlet和jsp的区别servlet里的过滤器过滤器的作用怎么创建一个过滤器:servlet中的监听器什么是servlet :servlet是一个Java编写的程序,此程序是基于http协议的,在服务器端(如Tomcat)运行的,是按照servlet规范编写的一个Java类。客户端发送请求至服务器端,服务器端将请求发送至servlet,servlet原创 2021-04-08 15:29:59 · 93 阅读 · 0 评论 -
HTML(11-js复合类型)
JavaScript复合类型复合类型对象数组什么是数组数组特点数组的基本操作数组常见方法复合类型 复合类型是指由多个基本数据类型或者复合类型构成的数据体。 js中的复合类型有对象Object、数组Array和Function函数三大类对象对象是一系列命名变量和函数的集合,对象中的命名变量称为属性,对象中的函数称为方法。对象中访问属性和函数的方法都是通过. 点运算符实现的。例如获取浏览器的版本navigator.appVersionjs是基于对象的脚本语言,所以提供了大量的内置对原创 2021-04-01 20:41:02 · 227 阅读 · 0 评论 -
B+树和B-树
B+树主要区别就是所有的节点值都在最后叶节点上用双向链表连接在了一起但是二叉树不能使用,因为比对次数太多,所以使用多叉树以减少比对次数B+Tree中的非叶子结点不存储数据,只存储键值非叶子节点可以看成索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字B+Tree的叶子结点没有指针,所有键值都会出现在叶子结点上,且key存储的键值对应data数据的物理地址B+Tree的每个非叶子节点由n个键值key和n个指针point组成B+Tree对比B-Tree磁盘读写代价更低:每个节点中的k原创 2021-03-17 17:25:26 · 97 阅读 · 0 评论 -
MYSQL
今天阿迪王哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇阿达伟大原创 2021-03-17 15:17:47 · 82 阅读 · 0 评论 -
AQS,CAS和线程池
昨天的问题浮点数的比较问题Comparable浮点数无法精确存放,所以不允许直接使用==等值判定Map<String,List> key是班级编号,List中存放学生成绩死锁问题所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。特殊的概念饥饿指的线程无法访问到它需要的资源而不能继续执行时,引发饥饿最常见资源就是CPU时钟周期。在程序中使用的Thread.yield或者Thread.sleep(0)表明该程序原创 2021-03-09 19:00:56 · 353 阅读 · 0 评论 -
JDBC编程基础
今天主要总结一下JDBC的基础使用步骤和一些常用代码的编写JDBCJDBC编程基础JDBC概述使用JDBC访问MySQL1、加载JDBC驱动程序2、创建数据库连接3、执行SQL语句4、接收并处理SQL的返回结果5、关闭创建的各个对象PreparedStatementConnection接口Statement接口三种Statement类Statement和PreparedStatement的区别JDBC编程基础JDBC英文名为:Java Data Base Connectivity(Java数据库连接)原创 2021-03-09 18:00:42 · 207 阅读 · 1 评论 -
MYSQL常用命令
MySQl常用命令进入常用mysql服务命令常见的SQL命令数据库涉及字符规范(不是语法硬性规则)创建数据表的语法规则MySQL的数据类型char与varchar的区别大对象类型set和枚举日期和时间列类型总结修改基本表alter基本练习插入数据总结修改数据删除数据查询数据进入1、初始化操作mysqld --initialize --console2、将mysql添加到系统服务中mysqld --install3、启动服务net start mysql4、登录数据库mysql -uroot原创 2021-03-09 12:02:23 · 124 阅读 · 1 评论 -
数据库的简介与安装
数据库什么是数据库什么是DBMSDBMS的用途DBMS的主要功能数据库特点数据模型RDBMS的特点关系模型的优缺点常见的数据库产品SQLSQL的特点NoSQL常见的NoSQL数据库类型有4种NoSQL的适用场景:SQL vs NoSQL什么是Mysql数据库Mysql数据库应用MySQL 8的新特性Windows下MySQL的安装什么是数据库数据库是指长期存储在计算机内有组织可共享的数据和数据之间关系的集合。数据库中的数据按照一定的数据模型组织、描述和存贮,具有较小的冗余度、较高的数据独立性和易扩展性,原创 2021-03-08 17:52:52 · 311 阅读 · 0 评论 -
死锁
死锁死锁特殊的概念Java中活锁和死锁有什么区别?怎么检测一个线程是否拥有锁?死锁产生的原因死锁产生的必要条件如何避免死锁发现死锁死锁检测总结死锁所谓死锁是指两个或两个以上的线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。特殊的概念饥饿 指的线程无法访问到它需要的资源而不能继续执行时,引发饥饿最常见资源就是CPU时钟周期。在程序中使用的Thread.yield或者Thread.sleep(0)表明该程序试图克服优先级调整问题,让优先级更低的线程拥有被C原创 2021-03-04 22:53:48 · 124 阅读 · 1 评论 -
JAVA并发编程总结
JAVA并发编程Java集合中的快速失败机制针对List的特殊迭代器ListIteratorjava并发编程volatile互斥锁sychronized公平锁/非公平锁可重入锁独享锁/共享锁乐观锁/悲观锁偏向锁/轻量级锁/重量级锁自旋锁锁消除线程阻塞的代价同步集合和并发集合性能比较并发集合的实现原理并发集合的使用建议ConcurrentHashMap实现原理总结CopyOnWrite容器CopyOnWriteArrayList的实现原理CopyOnWrite的应用场景CopyOnWrite的缺点今天主要是原创 2021-03-02 17:53:11 · 203 阅读 · 0 评论 -
JAVA(泛型)知识总结
泛型不使用泛型,使用集合时编程比较复杂List list=new ArrayList();list.add(123); //自动向上转型 int-->Integer-->Object//获取数据还需要窄化操作int kk=(Integer)list.get(0); //不进行类型判断,有可能出现ClassCastException使用泛型,可以将运行时的类型检查搬到编译期实现;同时获取数据时不需要再编码进行类型转换List<Integer> list=ne原创 2021-02-25 20:58:04 · 211 阅读 · 0 评论 -
Map集合(HashMap)
Set接口无序、不允许重复具体实现类HashSet不保证元素的添加顺序,底层采用哈希表算法,查询效率高判断两个元素是否相等equals() 方法返回为 true要求hashCode() 值必须相等要求存入 HashSet 中的元素要覆盖 equals() 方法和 hashCode()方法LinkedHashSet是HashSet的子类,在HashSet的基础上添加了额外的链表,底层采用了哈希表算法以及链表算法,既保证了元素的添加顺序,也保证了查询效率。但是整体性能要低于HashSet判断两个元原创 2021-02-25 20:22:25 · 354 阅读 · 0 评论 -
集合,迭代,克隆等问题总结
Vector,LinkedList,修改同时并发迭代访问的问题,对象赋值和克隆VectorLinkedList修改同时并发迭代访问的问题一个线程使用迭代器访问数据,另外一个线程修改数据对象赋值和克隆今日主要总结前一天没有写完的List集合中Vecto和LilkedLIst的后续总结,以及修改同时并发迭代访问的问题和一个线程使用迭代器访问数据,另外一个线程修改数据时会产生的错误,最后总结了克隆,浅克隆和深克隆的区别以及不同实现。Vector类定义属于老版本提供的,从1.0,而ArrayList比较新,原创 2021-02-23 21:41:40 · 120 阅读 · 0 评论 -
数据结构和集合概论
数据结构、集合概述、集合框架中的接口数据结构线性表链表概述集合数组和集合的比较集合框架中的接口Collection接口常见方法Iterator迭代器List接口Set接口常见的List接口的实现类ArrayList实现类数据结构线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))插入和删除困难(可能会引发一半以上的数据元素移动,时原创 2021-02-22 21:08:55 · 143 阅读 · 0 评论 -
线程安全(synchronized
总结线程安全的知识点线程安全线程安全同步处理的引入问题出错的解决方案写法1:同步方法写法2:同步代码块写法3:同步静态方法理解讨论问题银行取钱操作小结synchronized同步实例方法同步静态方法同步方法块synchronized底层语义原理何时需要同步释放同步锁编码实现线程安全多线程的执行顺序不可重现,但是必须要求执行结果必须可以重现线程的共享数据操作不完整性就一定会出现数据被破坏,而导致结果无法预知的问题—线程的安全问题同步处理的引入在java语言中存在两种内建的synchronized语原创 2021-02-21 23:16:44 · 88 阅读 · 0 评论 -
2021-02-02知识总结
什么是线程池创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程。四种线程池的好处重用存在的线程,减少对象创建、消亡的开销,性能佳可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞提供定时执行、定期执行、单线程、并发数控制等功能。线程池的工作原理1、线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一原创 2021-02-03 18:00:25 · 82 阅读 · 0 评论 -
多线程
多线程编程基础基础概念进程启动进程的方法启动进程方法1启动进程方法2进程的三大特征僵尸进程和孤儿进程并行与并发主线程进程和线程的关系线程和进程的区别多线程基于线程的多任务处理的优点基于多线程编程的缺点什么是线程什么是多线程线程的用处Java与多线程为什么使用线程线程的编程4种实现方法1、继承Thread2、实现Runnable接口3、使用Callable和Future接口创建线程4、使用线程池创建线程享元模式今天主要总结一下线程中:串行与并发、进程与线程、线程的创建等知识点,通过一些简单代码,掌握基本知识原创 2021-01-30 23:28:52 · 101 阅读 · 0 评论 -
IO流
过滤流/桥接转换流/缓冲流/数据流/打印流/对象流过滤流类型过滤流桥接转换流缓冲流构造方法缓冲输入流的方法键盘录入数据流打印流对象流编码细节今天主要学习和了解过滤流、桥接转换流、缓冲流、数据流、打印流、对象流等的用法,以及一些例子。其中重点是一些常用流,如对象流和文件字节流。以下是总结的知识点及举例代码。通过一些代码和案例更好的掌握流的特点及用法。过滤流类型过滤流就是在节点流的基础上附加功能过滤流FilterInputStream/FilterOutputStream和FilterRead原创 2021-01-26 21:28:18 · 93 阅读 · 0 评论 -
字节流与字符流
今天主要总结一下字节流和字符流的用法以及特点,一开始东西多,建议大家记忆常见的父类中的方法 记忆具体的实现子类对应的操作,因为子类继承了父类带有其方法,但子类自己独特的方法还需单独记忆。流模型字节流InputStreamOutputStream字符流Reader字符输入流Writer字符输出流文件节点流内存数组节点总结主要目的:屏蔽具体实现的区别,使用统一的方法进行编程输入和输出字节和字符节点和过滤 装饰模式BIO NIO AIO字节流父类InputStream和OutputStr.原创 2021-01-25 18:24:47 · 133 阅读 · 0 评论 -
流
输入输出种的流模型、扩展类的功能、File类、文件过滤器FilenameFilter、Path和Paths以及Files、字节流输入输出应用编程输入输出种的流模型流概念流的分类扩展类的功能继承装饰模式在IO流定义中使用装饰模式File类常见的构造方法需要记忆的方法静态属性访问文件名的方法文件检测相关方法常见操作文件过滤器FilenameFilter语法糖Lambda表达式Path和Paths以及FilesPath相关方法Files工具方法字节流基本输入输出方法以下为今天的总结内容:输入输出种的流模型、扩展原创 2021-01-21 21:38:59 · 85 阅读 · 0 评论 -
java 异常处理
今天总结了异常的概念,分类,以及处理方式,和一些代码展示。Java异常处理Java异常处理程序员真理:程序会出错意外产生和处理过程概述出错的处理方式异常异常用途异常的分类异常的捕获和处理Java异常处理try语句catch语句常见的3种输出异常的用法JDK1.7引入多异常捕获fnally语句特殊情况导致nally执行出现问题fnally块和returnfnally、nal和nalize的区别异常的捕获和处理最佳异常相关编程实践异常处理建议规则Java异常处理程序运行时发生的不被期望的事件,它阻止了程序原创 2021-01-20 21:57:09 · 131 阅读 · 0 评论 -
关于JAVA接口和内部类的基础知识总结
接口和内部类接口接口允许多重继承声明接口的语法接口中只能定义常量和抽象方法一个类实现接口的语法类实现接口接口中常量一个对象往往有多重身份接口的特殊特征接口的作用接口和抽象类的异同点如何使用接口内部类内部类的作用内部类相关的设计内部类分类非静态内部类静态内部类局部内部类匿名内部类匿名内部类的使用场景匿名内部类的使用限制内部类的使用场景和好处下面是对接口和内部类的总结,其中接口略为重要,比较常用,内部类一般用于页面的按钮。接口接口允许多重继承一个类在继承另一个类的同时,还可以实现多个接口interfa原创 2021-01-19 22:32:38 · 103 阅读 · 0 评论 -
oop抽象类
-----今天主要了解了抽象类,模板模式以及接口,以及他们的优缺点和写法和使用方法,下面都是其基本定义和简单描述,要学会使用首先得有基本的了解,慢慢在开始在练习中使用。opp抽象类抽象类的特点抽象类不可以被实例化什么时候使用抽象类抽象类和普通类的区别模板模式什么是模板模式何时使用注意事项优点缺点分析抽象类的作用类和类之间的耦合问题接口什么是接口抽象类面向对象编程的核心是面向抽象编程,一般依赖抽象不依赖具体包含了抽象方法的类叫作“抽象类”所谓的抽象方法是指没有函数体的方法,抽象方法必须在子类中给出原创 2021-01-18 20:52:19 · 194 阅读 · 0 评论 -
java面向对象静态和多态性
static和多态性sctatic定义常量静态方法静态块非静态块方法中的可变长个数的参数静态导入基本数据类型的对象缓存字符串缓存池面向对象设计思想的要点依赖关系关联关系继承关系多态性三个定义和两个方法。多态分为两种:对象的多态性多态在代码中的体现类间多态和类内多态类间多态性类内多态性方法的重写和重载方法的重写(覆盖)方法的重载多态的优点sctatic访问的方式可以使用“类名.静态属性名”或者“对象名.静态属性名”的方式进行访问。【范围限制】定义常量命名规则:名称全大写,下划线分词声明语法:原创 2021-01-15 20:34:46 · 390 阅读 · 0 评论 -
this和super,final和static关键字
this和super关键字this用于指代当前对象;super用于指代父类对象this()表示调用另外一个构造器,super()表示调用父类中的某个构造器,()中的参数决定调用的是哪个构造器 public class A {public A() {//需要调用A(String)这个构造器方法this("zhangsan"); //调用当前类中的另外一个构造器}public A(String name) {System.out.println("name:"+name);}}//另原创 2021-01-14 22:42:50 · 128 阅读 · 0 评论 -
面向对象(继承)
继承继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。语法extendspublic class Person {private String name;protected int age;public String getName() {return name;}public void setName(String name) {this.name = name;}}public class Studen原创 2021-01-13 23:01:29 · 101 阅读 · 0 评论 -
面向对象(封装和构造函数)以及UML
昨天掌握了面向对象编程的概念今天主要学习了构造函数和封装以及会看UML图面向对象封装1、封装好处2、抽象3、范围限定词限定类属性上的范围限定词(同上)方法上的范围限定词(同上)4、package和import5、封装特点构造函数1、构造函数特点2、构造函数作用3、创建对象都必须通过构造函数初始化4、拷贝构造函数5、一般函数和构造函数什么区别练习设计空调类,Air Conditioner析构方法UML封装封装是指将现实世界中存在的某个客体的属性与行为绑定在一起,并放置在一个逻辑单元内。在面向对象程式设原创 2021-01-12 22:26:47 · 444 阅读 · 0 评论 -
面向对象
今天初步了解了面向对象,将针对下面几点来进行学习掌握面向对象的基本编程思想,是重点需要掌握的了解类和创建对象理解引用变量赋值理解构造器和成员方法的定义方式面向对象面向对象面向对象概论编程概述对象的引入如何描述现实生活中的事物抽象面向对象的概念对象对象的状态和行为类类和对象之间的关系消息和方法总结面向对象和面向过程的区别成员变量和局部变量的区别面向对象面向对象概论面向对象的三大基本特征是:封装、继承、多态封装隐藏了类的内部实现机制,从而可以在不影响使用者的前提下改变类的内部结构,同时保原创 2021-01-11 22:26:37 · 294 阅读 · 0 评论 -
String方法以及区别
今天学习了字符串中string以及stringbuffer和stringbuilder的区别,还有伪随机数Random(没有真正意义上的随机数)字符串和Random字符串()String类型字串创建字串对象字串的使用字符串方法将输入的字符串转换为整数、浮点数等字符串中子串的查找与字符串中单个字符的查找相似练习题StringBuffer 和 StringBuilder 类Random类Random类中的常用方法例题:字符串()字符串实际属于类,实际上所谓的字符串就是指一组字符的有序序列,可以使用双...原创 2021-01-10 19:35:53 · 192 阅读 · 0 评论 -
数组
今天主要学习了数组的使用,数字使用时是否会改变内部数值,通过一些练习和实例,还了解了多维数组。数组引用数据类型两种写法的比较:数组的操作做几个练习题,熟悉数组多维数组包装类和Number1、循环打印出小写字母a~zchar c='a';for(int i=0;i<26;i++) System.out.println((char)(c+i));char[] arr=new char[26];for(int i=0;i<26;i++) arr[i]=(char)(c+i);//输出原创 2021-01-08 23:39:51 · 141 阅读 · 0 评论 -
java方法和数组的概念及法
今天主要是了解数组和方法,下面主要是展示一下方法的概念和调用以及技巧,数组的引用调用命名等规则方法和数组方法的概念调用方式常见的有三种重名问题参数传递两条规则递归调用汉诺塔问题:递归调用的特征数组一维数组length属性数组元素的访问声明的同时初始化方法的概念多次反复编写明显是不合适的,而结构化编程中的模块化在Java中的体现就是自定义方法。需求:输出1-100之间所有素数public class Test1 { // 特殊的方法,用于表示程序的执行起始点,也就意味着不能写错 public s原创 2021-01-07 20:31:07 · 113 阅读 · 0 评论 -
循环和方法练习题
一月六日,今天主要是做练习题巩固算法知识和应用方法,巩固前几天的学习成果,在下面分享自己做出的是个小例题,通过他们掌握基本算法和结构和引用方法的方法习题中一些不懂得算法需要自行上网搜索,例如完数是什么等练习题1、通过键盘输入一个年份,输出判断某一年是否为闰年能被4整除并且不能被100整除或者能被400整除public class A1 { public static void main(String[] args) { int year = 0; Scanner sc = new Scann原创 2021-01-06 22:24:57 · 206 阅读 · 1 评论 -
java引用方法和练习循环
今天学习了如何引用方法,并且做几个习题掌握循环算法方法的概念方法的概念引用String中的方法练习题123方法的概念引用引用也叫句柄,类似于指针,但是和指针是不同的。指针是一个存放地址的变量,使程序员可以灵活的访问内存,由于可以对指针进行任意的运算操作,所以给程序带来了安全隐患和意想不到的结果。引用继承了指针节省内存的优点,但是限制了对地址的操作,它是安全的。Java中所有的变量都是一个引用,java中没有指针的概念方法可以理解为一个命名的代码块,通过名称就可以重复使用这段代码,而不需要反原创 2021-01-05 21:09:07 · 140 阅读 · 0 评论 -
java基础练习题
习题一、语法点1、break2、continue二、练习题1、九九乘法口诀表2、编程实现判断一个用户的胖瘦程度,可以使用BMI参数3、互换两个数的值(不允许使用中间变量)4、输出三个数中的最大值和最小值5、输出1-100的奇数(每行输出6个)6、1-100求和(for while等三种循环写法)7、1-100奇数求和8、输出直角三角形9、一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)10、猜年龄游戏。11、打印出所有的水仙花数12、断一个数是否质数注:学习在于练习原创 2021-01-04 21:21:09 · 297 阅读 · 0 评论 -
java数据类型以及转换和运算规则
元旦期间学习成果分享:主要学习了Java编程中的数据类型和算法;java基础复合数据类型包装类类型包装类的作用抽象类java.lang.Number具体类java.lang.Boolean具体类java.lang.Character具体类java.lang.Integer(Byte、Short、Long)valueOf和parseInt的区别具体类java.lang.Double(Float)数值与字串的转换字串与数值的转换int和Integer的区别常量表达式算术运算符++和--是单目运算符比较运算符原创 2021-01-03 17:05:50 · 185 阅读 · 0 评论 -
Java入门
java基础概念Java语言Java主要技术分支Java应用场景JVM、JRE和JDK的区别Java的三种核心机制Java虚拟机(Java Virtual Machine)垃圾收集机制Garbage Collection代码安全性检测Code SecurityHello JavaJava虚拟机中类加载的过程javadoc用法Java中注释IDE工具的安装Eclipse熟悉Eclipse基本使用常用快捷键语法基础Java标识符48个关键字编码规范变量JAVA是强类型语言基本类型计算机中的数据存储方式整数类型浮原创 2020-12-29 21:17:52 · 134 阅读 · 0 评论