Java进阶(三十八)快速排序 前言 有没有既不浪费空间又可以快一点的排序算法呢?那就是"快速排序"啦!光听这个名字是不是就觉得很高端呢. 假设我们现在对"6 1 2 7 9 3 4 5 10 8"这个10个数进行排序.首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥的了).为了方便,就让第一个数6作为基准数吧.接下来,需要将这个序列中所有比基准数大的数放在6的右边,比基准数小的数放在6的左边,类似下面这种排…
Java IO(十八) BufferedReader 和 BufferedWriter 一.介绍 BufferedReader 和 BufferedWriter 是字符缓冲流,分别继承自 Reader 和 Writer,它们与字节缓冲流 BufferedInputStream 和 BufferedOutputStream 类似,都是为其他基础流添加缓冲功能. BufferedReader:字符缓冲输入流,它继承于Reader,为其他字符输入流添加一些缓冲功能,以提供单个字符,数组和字符串的高效写…
Java执行js加密算法 今日需求:在后端执行一段加密算法,算法是js写的 明白需求以后疯狂百度.最后发现JDK提供了各种脚本的支持(怪笔者学艺不精,第一次见识到这个库,留下不学无术的泪水),正题开始,Java如何执行一段加密算法呢? java对脚本的支持全部存放于javax.script包下 接口: Bindlings Compilable Invocable ScriptContext ScriptEngine ScriptEngineFactory 类: AbstractScriptEng…
实验十八  总复习 实验时间 2018-12-30 1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设计结构: (4) 综合掌握java多线程编程模型: (5) 综合编程练习. 2.实验内容和步骤 任务1:填写课程课后调查问卷,网址:https://www.wjx.cn/jq/33108969.aspx. 任务2:综合编程练习 练习1:设计一个用户信息采集程序,要求如下: (1) 用户信息输入界面如…
使用python selenium 做自动化测试的时候其实我基本没有使用过执行js,只是在后来使用selenium来爬虫的时候使用到了,所以我在这里也就拿出来简单的介绍一下如何执行js. execute_script 方法定义: 因为比较简单所以我就不会太特别的细致介绍,所以我们看一个简单的例子 #-*- coding:utf-8 -*- from selenium import webdriver import time driver = webdriver.Chrome() js = 'al…
在做项目中有时候需要用到Java调用js文件执行相应的方法 在JDK1.6添加了新的ScriptEngine类,允许用户直接执行js代码. import org.junit.Test; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; /** * @author ceshi * @Title: JunitTestJS * @Projec…
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列. 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空.当队列满时,存储元素的线程会等待队列可用. 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程.阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素. 阻塞队列提供了四种处理方法: 方法\处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(…
1:单元测试 1)JUnit是一个Java语言的单元测试框架,这里的单元指的就是方法 2)单元测试用来替换以前的main方法 1.1 Junit测试的步骤 1:在方法的上面加上 @Test 2:将junit库添加到工程的构建路径 3:选中方法--->右键--->JunitTest 1.2 常用的Junit测试注解 常用注解 @Test,用于修饰需要执行的方法 @Before,测试方法前执行的方法 @After,测试方法后执行的方法 1.3 测试有返回值的方法 public int sum(in…
队列是只能在尾部添加元素,同时只能在头部删除元素的数据结构.队列的原则就是“先进先出”. Queue接口是Collection接口的最后一个子接口. Queue接口是队列接口,而Deque接口是Queue接口的子接口,可以用来实现双端队列,让人们有效地在头部和尾部同时添加或删除元素. ArrayDeque和LinkedList都实现了Deque接口. 实现了Queue接口的类有两种:ArrayDeque类和PriorityQueue类. 队列一般有两种实现方式,数组队列和链表队列. 如果需要一个…
包的主要作用以及定义    包的导入操作    系统常见的开发包    jar 程序命令        包的定义        在任何的操作系统之中都有一个统一的共识:同一个目录下不能够存在有相同的文件名称        但是在实际的开发之中又不可能出现不重名的情况        所以为了解决这样的冲突问题,在项目里面往往会引用包的概念,而所谓的包存储的就是一个文件夹        也就是说在不同的目录中可以存放有相同的文件        如果要想在javac中定义包,直接使用 package…
这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是比较清晰的!如果你有需要可以在评论中留下您的邮箱我看到一定会免费发给你的!感谢这个平台让我们大家共同进步吧!! 记住 程序员是无私的!!! 也非常欢迎到我的博客内观看 博客地址:http://www.cnblogs.com/duscl/ /* 1:异常(理解) (1)程序出现的不正常的情况. (2)…
转载请注明源出处:http://www.cnblogs.com/lighten/p/7493735.html 1.前言 本章介绍阻塞队列DelayQueue,这是一个无界阻塞队列.其存储延时的元素,只有延时耗尽元素才能被取出.队列头元素就是最先耗尽延时的元素,如果没有元素耗尽延时,poll操作会返回null.同样的,该队列不允许空元素.针对延时的特性,可以用户定时任务,到达时间就能取出任务执行,设计有时效的缓存,超时就清除. 2.DelayQueue 2.1 数据结构 该类的实现十分简单,可以说…
Java面向对象的三大特性之封装 一:面向对象的三大特性: 封装 继承 多态   二:封装的概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问: 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问. 要访问该类的代码和数据,必须通过严格的接口控制. 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段.适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性. 三:封装的好处…
1.什么是泛型 泛型是Java1.5中出现的新特性,也是最重要的一个特性.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法.这个类型参数将在程序运行时确定. 我们可以把泛型理解为作用在类或者接口上面的标签.根据这个标签的类型传入规定的数据类型,否则就会出错,其中类型必须是类类型,不能是基本数据类型.例如我们国家中医存药的箱子,每个箱子上面都贴有一个标签,如果上面贴的是冬虫夏草,那么就只能放冬虫夏草,而…
一.总复习纲要 1. Java语言特点与开发环境配置(第1章.第2章) 2. Java基本程序结构(第3章) 3. Java面向对象程序结构(第4章.第5章.第6章) 4. 类.类间关系.类图 5. Java JDK预定义类/接口及其API(String-第3章. Arrays-第3章.Files-第3章62页.LocalDate-第4章. Object-第5章.对象包装器-第5章.Comparator-第6章. 异常类-第7章.ArrayList-第5+8章.第9章.第10-12章. 第14章…
前言 上章节介绍了Redis相关知识,了解了Redis的高可用,高性能的原因.很多人认为提到缓存,就局限于Redis,其实缓存的应用不仅仅在于Redis的使用,比如还有Nginx缓存,缓存队列等等.这章节我们会将讲解Nginx+Lua实现多级缓存方法,来解决高并发访问的场景. 缓存的应用 我们来看一张微服务架构缓存的使用 我们可以看到微服务架构中,会大量使用到缓存 1.客户端缓存(手机.PC) 2.Nginx缓存 3.微服务网关限流令牌缓存 4.Nacos缓存服务列表.配置文件 5.各大微服务自…
代码块  code block                content (内容)        在程序结构之中使用"{}"定义的内容就称为代码块,但是会根据其声明的位置以及关键字的不同        代码块一共分为四种:            普通代码块(程序块),构造块,静态块,同步代码块(多线程)                    一:普通代码块            普通代码块是定义在方法之中的代码块,其基本形式参考如下: public class CodeBlock{…
      噢,它明白了,河水既没有牛伯伯说的那么浅,也没有小松鼠说的那么深,只有自己亲自试过才知道!道听途说永远只能看到表明现象,只有亲自试过了,才知道它的深浅!!!!! 一.什么是数组      数组?什么是数组?在我印象中的数组是应该这样的:通过new关键字创建并组装他们,通过使用整形索引值访问它的元素,并且它的尺寸是不可变的!       但是这只是数组的最表面的东西!深一点?就是这样:数组是一个简单的复合数据类型,它是一系列有序数据的集合,它当中的每一个数据都具有相同的数据类型,我们通…
PrintWriter打印流 Writer的子类,既可以接收字符流,也可以接收字节流,还可以接收文件名或者文件对象,非常方便 同时,还可以设置自动刷新以及保持原有格式写入各种文本类型的print方法 PrintWriter的小例子:打印字符录入的大写 1: //读取键盘录入,打印大写 2: private static void printWriterMethod() throws IOException 3: { 4: BufferedReader bufr = 5: new Buffered…
同步和协作工具类 一.读写锁ReentrantReadWriteLock ReadWriteLock接口的定义为: public interface ReadWriteLock { Lock readLock(); Lock writeLock(); } 读操作使用读锁,写操作使用写锁.只有"读-读"操作是可以并行的,"读-写"和"写-写"都不行. 始终只有一个线程能进行写操作,在获取写锁时,只有没有任何线程持有任何锁才可以获取到, 在持有写锁时…
一.什么是抽象类和接口 抽象类.接口与类是一个层次的概念,是java中极其重要的概念. 抽象类是从多个类中抽象出来的公共模板,提供子类均具有的功能. 接口是从多个类中抽象出来的规范,体现的是规范和实现分离的原则,同时也有效的解决了java单重继承的缺陷 二.抽象类 2.1.抽象类与普通类的区别 抽象类的class前面有abstract关键字,而普通类没有 /* * 抽象类 */ public abstract class Person1 {} /* * 普通类 */ public class P…
package erase; import java.util.Scanner; public class 猴子分桃 { public static void main(String[] args) { // TODO Auto-generated method stub //假设每个猴子拿走1个,加上每个猴子仍在海里的1个, //剩下的4个,所以从14开始,其实好多开始不重要 int num = 14; while(true) { if(Fentao(num)) { break; } num+…
学习了Web中的单位. 像素是网页中最常用到的单位,一个像素是屏幕中的一个小点. 不同显示器一个像素的大小也不同,像素越小,显示效果越好. 也可以用百分比的方式: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>像素</title> <style type="text/css"> div{ background-…
SimpleDateFormat格式化日期问题 前言 发现一个问题,经过以下语句处理后,发现12:27:45转换后成为了00:27:45. DateFormat df = null; if(DATE1.trim().length() == 10){ df = new SimpleDateFormat("yyyy-MM-dd"); }else{ df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); } try { Date…
ion-slide-box 滑动框是一个包含多页容器的组件,每页滑动或拖动切换: 效果图如下:   用法 <ion-slide-box on-slide-changed="slideHasChanged($index)"> <ion-slide> <div class="box blue"><h1>BLUE</h1></div> </ion-slide> <ion-slid…
1.为什么要有包装类(或封装类)为了使基本数据类型的变量具有类的特征,引入包装类. 2.基本数据类型与对应的包装类: 3.需要掌握的类型间的转换:(基本数据类型.包装类.String) 简易版:基本数据类型<--->包装类:JDK 5.0 新特性:自动装箱 与自动拆箱基本数据类型.包装类--->String:调用String重载的valueOf(Xxx xxx)String--->基本数据类型.包装类:调用包装类的parseXxx(String s) 注意:转换时,可能会报Numb…
前面的博客我们写AOP仅仅是在原始方法前后追加一些操作,接下来我们要说说AOP中数据相关的内容,我们将从获取参数.获取返回值和获取异常三个方面来研究切入点的相关信息. 前面我们介绍通知类型的时候总共讲了五种,那么对于这五种类型都会有参数,返回值和异常吗? 我们先来一个个分析下: 获取切入点方法的参数,所有的通知类型都可以获取参数 JoinPoint:适用于前置.后置.返回后.抛出异常后通知 ProceedingJoinPoint:适用于环绕通知 获取切入点方法返回值,前置和抛出异常后通知是没有返…
JDK1.8中如何用ScriptEngine动态执行JS jdk1.6开始就提供了动态脚本语言诸如JavaScript动态的支持.这无疑是一个很好的功能,毕竟Java的语法不是适合成为动态语言.而JDK通过执行JavaScript脚本可以弥补这一不足.这也符合“Java虚拟机不仅仅是Java一种语言的虚拟机“这一目标. ScriptEngine功能强大,基本能实现笔者所能想到的Java与JavaScript交互的需求.而且十分的方便简洁.jdk1.8又对ScriptEngine接口进行了一定改变…
在我们开发的过程中,可能有这么一种情况,在java中需要取调用js方法完成一些事情.那么什么时候可能出现这种情况呢.比如我们使用爬虫模拟登录别的网站,但有些网站前台使用js对密码进行了加密处理,那么就需要在java中进行调用js方法,完成js密码的加密操作. 在这篇博客记录如下几种调用方式: 1.java执行js文件 2.js方法写在java代码中,然后执行 3.脚本引擎自身的作用域和全局作用域 4.在js中调用java类 实现: 1.java执行js文件 |- 执行js文件中的方法 |- 向j…
1.简介 在前边的文章中窗口句柄切换宏哥介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题.很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭,有些可能有取消和确定按钮,还有些调查的alert框,可以运行用户输入文字,例如预定一个网站的资讯,输入邮箱地址就可以,每天接收一封该网站推送的邮件. 2.alert的几个方法 关于alert还有其他几个方法,如下图所示: accept()方法就是点击确定按钮. dismiss()就是点击alert框…