Java脚本java脚本就是使用Java语言通过代码编程来完成对流数据的操作,并且还内置了很多函数可以直接使用。java脚本的构成就像刚学习Java一样首先要了解的就是Main函数,Main函数对应着 processRow() 函数,processRow() 函数是用来处理流的场所。 也就是说我们要想去处理我们的数据流,整个代码都是需要写在processRow() 这个函数里面的。使用从脚本处拖拽
validationvalidation框架用于解决Java bean 验证的问题,比较常用的场景就是Controller 验证前端传过来的参数是否符合预期,一些比较常用的注解: @NotNull @Null @NotBlank @Max @Min @Pattern问题场景在开发过程中遇到一个问题,validation注解对Controller 传参进行验证,但是对象比较复杂包了好几层,所以出现有
在咱们工作中写sql写多了必然会出现查询比较慢的 sql,一般的情况就是会去加索引,但是怎么加索引就很重要了,这个时候一般情况下就是会通过查询条件进行判断加什么索引,要么就是去查看 mysql 的执行计划然后通过执行计划的结果决定加什么索引,怎么加索引。执行计划mysql官方的解释文档:MySQL :: MySQL 8.0 参考手册 :: 8.8.2 EXPLAIN 输出格式 一般在查看mysql
java的多态性是面向对象三大特性之一,其中 extends 继承或者 implements实现,这都是多态性的前提,不一定是类与类的继承,还有可能是接口与接口之间的继承,也可能是类与接口的实现,需要产生一个上下级的关系这样才产生了多态性的前提。举例比如下面这个关系图,一个叫小明的人他是一名老师。 我们把小明看作一个对象 小明这个对象它既一名老师,也是一个人,它既有老师形态也有人的形态 一个对象拥
在了解mysql聚簇索引和非聚簇索引之前先了解一个问题,mysql它的索引是存在内存中还是磁盘中? 答案是存在磁盘中,虽然内存的读写速度要比磁盘快的多,但是只要一重启或者关机就会丢失所有数据,不可能每次启动后重新生成索引,一是生成索引比较浪费时间,二是如果数据量大了起来索引它占的内存也会越来越大。不同的存储引擎它的索引是不同的,而把聚簇索引和非聚簇索引区分开是与存储引擎相关的。区别判断聚簇索引和非
在mysql 表设计的时候一般类型的选择时会在一定程度上影响整个模块或者整个项目的性能,在工作中比较有争议性的类型两种类型就是 dateTime 和 Timestamp,先初步了解以下两种类型。dateTimedateTime从占用空间上来看它是占用了8个字节,并且它存储下来的格式是我们日常使用的时间格式YYYY-MM-DD HH:MM:SS,也可以设置 dateTime 的长度比如 dateTi
公司文件放在阿里oss上面,把oss作为一个文件服务器使用,现在有一个需求,一个人员他可以进行批量下载,可以选择文件下载的时间,然后拉取所有该时间段内的文件进行下载,并且把需要把这些文件进行压缩打包成zip文件。 需要注意的是这些文件不能暴露给外网的,必须要通过该接口进行下载操作才行。
场景最近公司针对于单元测试添加了MockMvc对Controller层接口进行测试。用的权限框架是Spring Securtity问题:使用MockMvc对Controller进行单元测试时直接略过了过滤器直接请求到对应的接口。启用Securtity验证现有实现统一通过Before 创建 mockMvc 其它测试类直接使用该对象,代码如下:@Beforepublic void before() {
前言今天看了一段我朋友写的代码我要疯了。先介绍一下他的情况,今年是他工作的第三年一直在从事java开发,但都是待的外包公司,我所了解他们公司基本上只要任务完成了就行,代码写的跟狗屎一样都没问题,只要保证代码和人一个能跑就ok。代码部分贴上部分代码(已经征求了他的同意),这部分代码还不是全部的代码,只是一个计算用户等级方法中的一部分,一个方法下来整整有五百多行,看着代码心烦的话直接略过即可:// 获
什么是位运算?程序中的所有数值在计算机中都是以二进制的形式存储的,位运算就是对这些二进制形式存储的数据进行一元和二元操作,通俗点说就是对我们存储的数值的二进制进行操作。没有了转换这一步而是直接对二进制进行操作,理论上位运算比加减运算略快,比乘除法要快很多,但是在现在 java程序架构 上位运算和加减法效率相同,比乘除法要快,当然如果是进行大量的计算使用位运算能有效的提升性能JAVA中有哪些位运算
什么是垃圾回收?垃圾收集叫做 Garbage Collection 简称 GC,在没有认真了解GC的时候一直以为GC是因为java语言而产生。 事实上垃圾收集的历史远远比java久远,最早可以追溯到1960年诞生于麻省理工学院的Lisp语言,它是第一门使用内存动态分配、垃圾收集的语言。垃圾收集需要考虑三个事情: 1、哪些内存需要回收? 2、什么时候回收? 3、如何回收?如何判断对象是否可以回收?引
数据结构 [栈]栈概念栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。——百度百科《栈》这是一个简易的栈工作图,可以把它理解为手
什么时候会用到堆内存通过new关键字创建的对象都会使用堆内存。概念对于java应用程序来讲,堆是jvm所管理的内存中最大的一块。是被所有线程共享的一块区域,并在虚拟机启动时创建。此区域的唯一目的就是存放对象实例,java程序里“几乎”所有的对象实例都会在这里创建并分配内存。在jvm规范中对堆的描述是“所有的对象实例以及数组都应当在堆上分配”jvm规范中规定:堆可以处于物理上不连续的内存空间中,但在
概念方法区翻译过来是Method Area与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载 的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虽然jvm规范中把 方法区描述为堆的一个逻辑部分,但是它却有一个别名叫作“非堆”,目的是与Java堆区 分开来。 简单点来说它用于存储和类的结构相关的信息,比如类的成员变量、方法数据、成员方法和构造器方法代码部分,类的构造器,
概念本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务,即非java方法一般是使用C语言进行实现。并且jvm规范中对本地方法栈中方法使用的语言、方式、数据结构并没有任何强制规定,所以具体虚拟机可以根据需求自由的去实现它。甚至 Hot-
程序计数器定义程序计数器全称为 Program Counter Register (寄存器)作用用于记录下一条jvm指令的执行地址,分支、循环、跳转、异常、线程恢复等都依赖于计数器。这是一段控制台输出的java代码,编译后各个阶段的情况,主要看二进制字节码部分。 当然这里的二进制字节码并不是大家所熟知的计算机的0和1,它并不能直接给到cpu执行,它需要通过解释器解释成一条机器码,机器码就可以交给c
什么是jvmjvm它其实是一套规范,你只要遵从这个规范,你甚至可以开发一套jvm的实现。最著名的就是oralce公司的 HotSpot,现在学习和使用的也都是这个jvm。JVM 的全称是Java Virtual Machine(java虚拟机),虚拟机是一种抽象化的计算机,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。使得Java语言在不同平台上运行时不需要重新编
什么是缓存击穿?缓存击穿是指一个非常热点的key在不停的扛着大并发,当这个key在redis失效的瞬间,持续的大并发就会穿过redis直接请求数据库,本来缓存就像是一堵墙一样墙把一些请求阻挡在数据库之外,只允许通过门才可以进入墙内,现在等于是直接在墙上开了一个洞,请求直接从这个洞到数据库,不受门的限制了。就如下面这个例子:比如现在大家得到消息某医院放一万只九价疫苗,然后很多需要九价的朋友就去等着这
什么是缓存穿透缓存穿透又称缓存击穿,是指某一个key被多次请求都没有命中,这个时候就会直接请求数据库,从而导致数据库并发的执行大量无意义的查询操作,对数据库造成一定的压力。比如下面这个例子: 当redis存的key为mysql的自增主键时,用户恶意请求主键id为 -1 的查询操作,redis中没有命中,然后就会去mysql中查询,同时mysql中也没有对应数据则只能返回空给用户,然后这个用户通过这
正常的缓存流程正常的用户操作流程:用户访问程序 --> 程序请求redis --> 如果reids存在该数据缓存直接返回 --> 如果redis没有该数据缓存则会去数据库中进行查询 --> 查询出的结果进行返回,并将sql数据同步至redis中。 示例:缓存雪崩出现的原因假设当前程序首页的访问量非常大,一个电商的项目把首页的数据存入redis中,对应reids中50个key
最近在一个学习群里面一位老哥问了一个问题,他需要重启一个微服务但是之前没接触过linux,只做过开发。我就在想有多少培训出来工作一两年都没有接触过公司的服务器,连公司服务器在哪都不知道,只知道自己写完的代码提交上去,然后测试没问题就不知道项目后续的事情了,所以就想着写一篇超简单重启java程序的帖子大家一起进步。环境系统:阿里云center OS 8java环境:jdk1.8java程序:hg-l
mysql版本:mysql5.7.35服务器信息:阿里云CentOS 81.首先停止mysql服务(如果没有启动的服务就直接跳过)关闭命令:systemctl stop mysqld.service其它常用命令:启动:systemctl start mysqld.service 状态查看:systemctl status mysqld.service 设置开机自启:systemctl enable
直接进入主题1.先安装wget(有的话直接忽略)yum install wget2.下载mysql的rpmwget http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm3.安装mysql的rpmrpm -ivh mysql80-community-release-el7-3.noarch.rpm4.修改 /etc/y
Nutch支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展,正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。 缺点:定制能力较弱、同
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号