- 博客(24)
- 收藏
- 关注
原创 常用的流操作
常用的流操作collect(toList())collect(toList())方法是由stream里的值生成一个新的列表,是一个及早求值操作List<String> list = Stream.of("a", "b", "c") .collect(Collectors.toList());mapmap的参数是一个接收泛型T的函数式接口,map本身的泛型又是R。所以map的功能是改变返回的类型T类型和R类型也可相同List<String>
2020-11-05 09:05:26 288
原创 工厂模式
工厂模式核心实例化对象不使用new,用工厂方法代替将选择实现类,创建对象统一管理和控制,从而将调用者根我们的实现类解耦。简单工厂只有一个简单的工厂类,由该工厂类负责对象的创建。示例首先定义一个Car接口public interface Car{ void name();}再定义两个实现了该接口的类public class Benz implements Car{ @Override public void name() { System
2020-10-28 21:45:07 164
原创 itexpdf
itexpdf依赖<!--依赖--><dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.12</version></dependency><!--中文--><dependency> <groupId
2020-10-26 14:07:54 249
原创 回顾Ajax
回顾Ajax最近在学习后端中间件,对前端知识有所遗忘,所以今天来复习以下使用AJax实现简单的前后端分离。又想起了被跨域折腾疯的日子使用Ajax可以实现简单的前后端分离,下面给出一个简单的小demo来复习一下Ajax的简单使用。需求:有一个文本框,在鼠标对其失去焦点后判断文本框中的值是否与某个值相等步骤将文本框接收的值返回给服务器服务器对值进行验证得出结果将结果发送回前端因为需要交互,所以控制器需要两个参数,一个是响应参数,一个是字符串参数@Controller@Request
2020-09-21 11:51:43 112
原创 代理模式
代理模式静态代理角色分析抽象角色:一般会使用接口或者抽象类类解决//出租房屋public interface Rent { public void rent();}真实角色:被代理的角色public class Host implements Rent{ public void rent() { System.out.println("房东要出租房子"); }}代理角色:代理真实角色,代理真实角色后会进行一些操作。public
2020-09-20 20:33:38 86
原创 Kaptcha验证码的简单使用
Kaptcha验证码的简单使用作用防止不法分子在短时间内使用机器人进行批量的重读操作。如果设置了验证码,可以减轻上述操作对系统的危害。springboot集成Kaptcha添加依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2
2020-09-20 15:21:28 375
原创 定制内嵌Tomcat开发
定制内嵌Tomcat开发springboot内嵌了tomcat。当我们需要修改tomcat的配置时,只需在application.properties中修改就可以了。但有些配置并不囊落在自动配置中,我们还是需要手写配置类。keepAliveTimeOut:多少毫秒后不响应的自动断开maxKeepAliveRequests:多少次请求后,断开连接@Componentpublic class WebServerConfiguration implements WebServerFactoryCu
2020-09-19 13:18:52 130
原创 并发容器
并发容器list不安全下列代码出现了并发修改异常 ConcurrentModificationExceptionpublic static void main(String[] args) { List<String> list = new ArrayList<>(); for (int i = 1;i <= 10;i++){ new Thread(()->{ list.ad
2020-09-16 21:04:22 88
原创 编写deploy脚本启动项目
编写deploy脚本启动项目在服务端启动的项目,可以在jar包目录编写一个配置文件,让项目按照新配置文件执行,而不是项目中的配置文件。java -jar xx.jar -- spring.config.addition-location = /.../application.properties基于上述,我们可以编写一个deploy脚本来启动项目nohup java -Xms400m -Xmx400m -XX:NewSize=200m -XX:MaxNewSize=200m -jar miaos
2020-09-15 18:19:10 666
原创 操作DOM对象
操作DOM对象DOM:文档对象模型核心浏览器网页就是一个DOM树形结构更新:更新DOM节点遍历:得到DOM节点删除:删除一个DOM节点添加:添加一个新的节点要操作一个DOM节点,就必须先获取这个DOM节点获得DOM节点 <div id="father"> <h1>标题一</h1> <p1 id="p1">p1</p1> <p1 class="p2">p2&l
2020-09-14 23:19:11 195
原创 操作BOM对象
操作BOM对象BOM:浏览器对象模型windowwindow 代表浏览器窗口window.alert(1)undefinedwindow.outerHeight760window.innerHeight150Navigator封装了浏览器的信息window.navigator.appName"Netscape"navigator.userAgent"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
2020-09-14 23:18:28 122
原创 js变量的作用域
js变量的作用域在js中,var定义的变量是有作用域的。假设在函数体中声明,则在函数体外不可以使用function f(){ var x = 1; x = x + 1;}x = x + 2; //uncaught ReferenceError:x is not defined如果两个函数使用了相同的变量名,只要在函数内部,就不会冲突function f1(){ var x = 1; x = x + 1; }function f2(){ var x
2020-09-14 16:42:59 89
原创 IK分词器
IK分词器什么是IK分词器分词:即把一段中文后者别的划分为一个个的关键字,我们在搜索的时候会把自己的信息分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作。默认的中文分词是将中文词语分成一个个的汉字,这显然是不符合要求的,所以需要借助IK分词器的帮助。IK提供了两个分词算法:ik_smart和ik_max_word,其中ik_smart为最少切分,ik_max_word为最细粒度切分!安装使用下载 https://github.com/medcl/elasticsearc
2020-09-12 23:14:50 216
原创 操作系统之进程
操作系统之进程1.进程与线程进程是资源分配的基本单位线程是独立调度的资本单位进程与线程的区别拥有资源进程是资源分配的资本单位,但是线程不拥有资源,线程可以访问隶属进程的资源。调度线程是独立调度的基本单位,在同一进程中,线程的切换不会引起进程切换,从一个进程的线程切换到另一个进程中的线程会引起进程的切换系统开销进程的创建销毁涉及到分配回收资源,I/O操作,所以开销大线程切换仅涉及到少量的寄存器内容,开销小通信方面线程直接通过读写同一进程中的数据进行通信 进程
2020-09-12 16:08:11 97
原创 SpringBoot项目成功部署到阿里云但却运行不了
SpringBoot项目成功部署到阿里云但却运行不了检查jar包中是否将依赖打入本地执行jar包 看能否运行查看阿里云安全组端口号是否打开查看阿里云服务器防火墙是否打开 如果打开,需要关闭service iptables statusservice iptables stop最后皆大欢喜,成功运行,并且可以访问...
2020-09-11 14:48:49 1322
原创 IDEA项目打jar包
IDEA项目打jar包第一步:在项目中添加插件<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.1.0.RELEASE</version></plugin>第二步:使用命令行进入项
2020-09-11 10:08:54 267
原创 Redis扩展
Redis扩展Redis发布订阅Redis发布订阅是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。**模型介绍:**消息发布者将消息内容发送到队列中,消息订阅者从队列中获取消息。命令测试订阅端:127.0.0.1:6379> SUBSCRIBE ztx #订阅我的频道Reading messages... (press Ctrl-C to quit)1) "subscribe"2) "ztx"3) (integer) 11) "mess
2020-09-10 16:06:04 160
原创 Redis的持久化
Redis的持久化RDB操作解释:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是snapshoot快照,它恢复时是将快照文件直接读到内存里(好比VMWare虚拟机)**具体操作:**Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个临时文件,再用这个临时文件去替换上次持久化好的文件.在整个过程中,主进程并没有进行io操作,所以确保了极高的性能.**缺点:**最后一次修改的时候如果宕机了,会出现丢失修改的情况.RDB生成的文件叫做 dump.rdb 在配置文件中我们
2020-09-09 18:55:35 131
原创 阅读redis配置文件(入门篇)
阅读redis配置文件(入门篇)单位配置文件 unit单位 对大小写不敏感包含网络bind 127.0.0.1 #绑定的ipprotected-mode #保护模式port 6379 #端口号通用GENERALdaemonize yes #以守护进程的方式运行pidfile /var/run/redis_6379.pid#如果以后台方式运行,我们需要指定一个pid文件#日志# Specify the server verbo
2020-09-09 15:20:22 116
原创 RedisUtil
RedisUtil在开发中,我们并不常常使用模板来调用redis的api,而是会实现一个工具类。以下的工具类囊括了对value为基本类型时的一些常规操作。@Componentpublic final class RedisUtil { @Autowired private RedisTemplate<String, Object> redisTemplate; /*========================================common==
2020-09-08 20:59:56 127
原创 线程池
线程池为何使用线程池创建/销毁线程开销过大,影响处理效率线程并发数量过多,抢占资源从而导致阻塞对线程进行简单的管理线程池ThreadPoolExecuterThreadPoolExecuter是线程池的具体实现类。其有四种构造方法接下来介绍一下方法总的参数int corePoolSize 线程池中核心线程数的最大值核心线程不会死亡,会一直存活在线程池中int maximunPoolSize 线程总数最大值long keepAliveTime 非核心线程闲置超
2020-09-07 09:56:06 79
原创 虚拟机学习笔记(基础)
虚拟机学习笔记(基础)文章大量参考周志明《深入理解Java虚拟机》一.运行时数据区域程序计数器 线程私有记录正在执行的虚拟机字节码地址(如果正在执行的是本地方法则为空)Java虚拟机栈线程私有虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,对应着一个栈帧在Java虚拟机中出栈和入栈的过程。JDK1.4中默认为256K,JDK1.5+之后默认为1M当线程请求的栈深度超过最大值,
2020-09-03 22:27:17 154
原创 n皇后
n皇后问题: 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。规则:皇后不能出现在同行同列以及同斜线上,所以要一套判断规则来剔除不符合的情况。解答:回溯算法在第i行摆放了棋子时候,可以选择摆放第i+1行,也可以撤销第i行的摆放,将第i行的棋子放在之前位置的后面。因为具有回溯的这么一个过程,所以可以使用回溯算法解决本题。 List<List<String>> res = new ArrayList<>();
2020-09-03 11:29:40 93
原创 java新建文件并写入的几种方式
java新建文件并写入的几种方式因为涉及到文件流,我们在新建完一个流之后需要关闭他,即close()。这里使用try-with-resources语法,流会自动关闭java8 Files.newBufferedWriter()java8提供的newBufferedWriter(),既可以创建文件,也可以通过设置参数来完成追加写 @Test void testCreateFile1() throws IOException { String filename = "D:\
2020-09-02 15:50:55 4556 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人