自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 java序列化与反序列化

如果你想知道一个 Java 标准类是否是可序列化的,请查看该类的文档。检验一个类的实例是否能序列化十分简单, 只需要查看该类有没有实现 java.io.Serializable接口。ObjectOutputStream 类用来序列化一个对象,如下的 SerializeDemo 例子实例化了一个 Employee 对象,并将该对象序列化到一个文件中。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。当序列化一个对象到文件时, 按照 Java 的标准约定是给文件一个 .ser 扩展名。

2023-05-21 14:36:22 193

原创 equals和==的区别

1、equals():equals是Object中的方法,在Object中equals方法实际"ruturn (this==obj)",用到的还是"==",说明如果对象不重写equals方法,实际该对象的equals和"=="作用是一样的,都是比较的地址值(因为"=="比较的就是地址值),但是大部分类都会重写父类的equals方法,用来检测两个对象是否相等,即两个对象的内容是否相等,例如String就重写了equals方法,用来比较两个字符串内容是否相同。1、equals():没有==运行速度快。

2023-05-19 00:29:52 200

原创 对象序列化与反序列化

这个书写起来比较麻烦,就不说明了,不常用,前2个已经彻底满足了。简单型,就是 直接 UserBase.class 就可。

2023-05-06 23:17:19 233

原创 java quartz 定时任务框架

链接:https://juejin.cn/post/6942479525469126686。可以实现在一个指定时间段内执行一次任务或者在一个时间段内执行多次任务。商业转载请联系作者获得授权,非商业转载请注明出处。某个时间点执行的任务,或者每隔一段时间重复执行的任务。表示要执行的具体工作或者被调度的任务。保持任务调度的定时状态的持久性任务。对调度任务进行有效管理的任务调度。的内容,任务执行结束后,关联的。一些日历的特定时间点的集合。关联的时候任务是否保留。作者:攻城狮Chova。时,首先会获取对应的。

2023-04-27 17:02:40 733

原创 java 并发 executor框架和线程池

创建一个可缓存的线程池,调用execute 将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。并发编程的一种编程方式是把任务拆分为一些列的小任务,即开启线程Runnable,然后在提交给一个Executor(线程池)执行,Executors类,提供了一系列工厂方法用于创先线程池,返回的线程池都实现了。创建一个支持定时及周期性的任务执行的线程池,多数情况下可用来替代Timer类。Executor在执行时使用内部的线程池完成操作。创建固定数目线程的线程池。

2023-04-26 14:37:42 450

原创 spring-boot 多线程并发定时任务的解决方案

2.fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms;4.fixedRate:表示按一定的频率执行任务,参数类型为long,单位ms;每隔1分钟执行一次:0 */1 * * *?* L 在26分、29分、33分执行一次:0 26,29,33 * * *?每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * *?在网上看到过这样的解决方案。但是后来发现个问题,通过同时测试几个任务发现,所有的任务都是在同一个线程池中的同一个线程来完成的。

2023-04-26 11:41:46 591

原创 电信物联网开放平台对接流程

电信物联网开放平台对接流程如下图所示:1、创建 APP 应用登录中国电信物联网开放平台对接测试环境SP Portal(https://180.101.147.135:8843),初次登录需要修改初始密码。选择【应用管理】->【应用】点击右上角“+创建应用”。典型的 NB-IoT 应用的参数设置可参考如下设置:所属行业:公用事业(NB-IoT)关联API包:基础API包和公用事业(NB-IoT) API包平台能力:规则引擎数据存储时间:当超过了数据存储时间

2023-04-26 11:37:22 1693

原创 redis 数据类型详解 以及 redis适用场景场合

1. MySql+Memcached架构的问题  实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:  1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。  2.Memcached与MySQL数据库数据一致性问题。  3.Memcached数据命中率低或down机,大量访问直接穿透到..

2023-04-26 11:37:14 472

原创 物联网NB-IoT之电信物联网开放平台对接流程浅析

电信物联网开放平台对接流程如下图所示:1、创建 APP 应用登录中国电信物联网开放平台对接测试环境SP Portal(https://180.101.147.135:8843),初次登录需要修改初始密码。选择【应用管理】->【应用】点击右上角“+创建应用”。典型的 NB-IoT 应用的参数设置可参考如下设置:所属行业:公用事业(NB-IoT)关联API包:基础API包和公用事业(NB-IoT) API包平台能力:规则引擎数据存储时间:当超过了数据存储时间

2023-04-26 11:36:45 2063

原创 java 创建线程

的一个实例,代表一个现成的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()方法是一个native方法,它将启动一个新线程,并执行run()方法。如果自己的类已经extends另一个类,就无法直接extends Tread,此时 可以实现一个Runnable接口。Thread类本质上时实现了。

2023-04-26 10:34:51 43

原创 spring boot 事务

声明式事务管理: 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。这个接口中定义了三个方法 getTransaction创建事务,commit 提交事务,rollback 回滚事务。对于编程式事务管理,spring推荐使用。Spring 为事务管理提供了丰富的功能支持。注释配置是目前流行的使用方式,推荐使用。一种是在配置文件(xml)中做相关的事务规则声明。编程式事务管理: 编程式事务管理使用。

2023-04-26 09:58:16 492

原创 Optional

从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。为了判断查询的类对象是否存在,采用此方法。

2023-04-16 18:26:39 49

原创 Spring Boot 实现参数校验基本使用

在实际项目中,可能多个方法需要使用同一个DTO类来接收参数,而不同方法的校验规则很可能是不一样的。还是上面的例子,比如保存User的时候,UserId是可空的,但是更新User的时候,UserId的值必须>=10000000000000000L;但是实际场景中,有可能某个字段也是一个对象,这种情况下,可以使用嵌套校验。集合校验会对集合里面的每一项都进行校验,例如List<Address>字段会对这个list里面的每一个address对象都进行校验。这种情况下,使用@Valid和@Validated都可以。

2023-04-16 16:42:57 424

原创 model.addattribute作用及用法

addAttribute() 函数给 SimpleXML 元素添加一个属性。语法。

2023-04-13 14:37:30 2528

原创 spring boot Websocket(使用笔记)

顺便说一句,springboot的高级组件会自动引用基础的组件,像spring-boot-starter-websocket就引入了spring-boot-starter-web和spring-boot-starter,所以不要重复引入。使用springboot的唯一区别是要@Component声明下,而使用独立容器是由容器自己管理websocket的,但在springboot中连容器都是spring管理的。System.out.println("来自客户端的消息:" + message);

2023-04-12 15:53:46 910

原创 Spring Cloud系列之Spring Cloud Config

这个时候,我们可以借助Spring Cloud Bus的广播功能,让client端都订阅配置更新事件,当配置更新时,触发其中一个端的更新事件,Spring Cloud Bus就把此事件广播到其他订阅端,以此来达到批量更新。以上是Spring Cloud Config最基本的使用,在实际开发中,Spring Cloud Config可能会被注册在Eureka中,这样的话,可以Spring Cloud Config配置中心就可以搭建集群实现高可用。使用配置中心后,就可以做到一处修改,处处修改。

2023-04-12 14:29:39 444 1

原创 java 常用注解

Bean:注解在方法上,声明当前方法的返回值为一个bean,替代xml中的方式;就是返回new 一个对象实例@Value:就是将配置文件中键对应的值分配给其带这个注解的属性,属性上:@Value("${}")在配置类上使用,开启计划任务的支持(类上)@Scheduled来申明这是一个任务,包括cron,fixDelay,fixRate等类型(方法上,需先开启计划任务的支持)

2023-04-09 14:39:44 339

原创 java 异步注解@EnableAsync,@Async

但是只有使用的是JDK的动态代理时才有效,CGLIB会失效。@Async可以放在任何方法上,哪怕你是private的(若是同类调用,请务必注意注解失效的情况~~~)@Async注解一般用在方法上,如果用在类上,那么这个类所有的方法都是异步执行的;所使用的@Async注解方法的类对象应该是Spring容器管理的bean对象。若你希望得到异步调用的返回值,请你的返回值用Futrue变量包装起来。@EnableAsync一般用在类上,开启异步。@Async一般用在实例方法上,异步执行方法。

2023-04-08 16:28:14 478

原创 java 重试

当重试次数达到限定时 , 会执行@Recover注解的补偿方法 , 只有在入参与发生异常匹配时才会执行该补偿方法,即发生的异常类型需要和@Recover注解的参数一致,@Retryable注解的方法不能有返回值,不然@Recover注解的方法无效。multiplier : 指定延迟的倍数 , 每次执行间隔加倍延迟 . 如delay=5000L,multiplier=2 , 第一次重 试为5S后 , 第二次为第一次的10S后 , 第三次为第二次的20S后。value : 指定发生的异常进行重试。

2023-04-08 16:24:28 616

原创 java this

this:当前对象,可以引用当前对象的属性和方法,this只能在成员方法中使用。

2023-04-06 15:57:49 403

原创 java final

重写概念:子类中如果创建了一个与父类中相同名称、相同返回值类型、相同参数列表的方法,只是方法体中的实现不同,以实现不同于父类的功能,这种方式被称为方法重写,又称为方法覆盖。定义:Java中,final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。用途:final 应用于类、方法和变量时意义是不同的,但本质是一样的,都表示不可改变。1)final 修饰变量,表示变量的值不可改变,此时该变量可被称为常量。3)final 用在类的前面表示该类不能有子类,即该类不可以被继承。

2023-04-06 15:24:51 323

原创 java static

在Java中,针对static静态成员,我们有一些最基本的常识:静态变量(成员)它是属于类的,而非属于实例对象的属性;同样的静态方法也是属于类的,普通方法(实例方法)才属于对象。而Spring容器管理的都是实例对象,包括它的@Autowired依赖注入的均是容器内的对象实例,所以对于static成员是不能直接使用@Autowired注入的。

2023-04-06 14:58:37 294

原创 static 修饰方法

1、static修饰的方法叫做静态方法、类方法,可以通过类名直接访问,因为加上static,在类加载的时候首先被加载,不需要“”注入“”,而不加static,则需要“”注入“”工具类:没有产生对象的必要,只要实现某个功能即可,哪个对象完成的都没有影响,比如:分页,转换时间,连接数据库等。2、加了static,则在使用时不能用“”this“”了,直接使用,因为直接用类名点方法的时候,没有当前对象。的时候是被首先加载的,然后加载非static内容,所以加载static时 是不知道非static内容的。

2023-04-06 14:19:00 647

原创 java 时间操作

【代码】java 时间操作。

2023-04-03 21:49:22 196

原创 Spring中ApplicationContextAware的作用

Target(ElementType.PACKAGE)——包,用于记录java文件的package信息。@Target(ElementType.ANNOTATION_TYPE)——注解。@Target(ElementType.TYPE)——接口、类、枚举、注解。@Target(ElementType.FIELD)——字段、枚举的常量。@Target(ElementType.PARAMETER)——方法参数。@Target(ElementType.METHOD)——方法。@Target:注解的作用目标。

2023-04-03 21:22:24 239

原创 enum枚举类型

*** 访问行为枚举类*/INDEX("访问页面", "首页"),ARCHIVE("访问页面", "归档"),MOMENT("访问页面", "动态"),FRIEND("访问页面", "友链"),ABOUT("访问页面", "关于我"),BLOG("查看博客", ""),CATEGORY("查看分类", ""),TAG("查看标签", ""),SEARCH("搜索博客", ""),CLICK_FRIEND("点击友链", ""),

2023-04-03 21:05:02 43

原创 SpringBoot框架中的DAO(mapper)层、Entity层、Service层、Controller层

在具体的项目中,其流程为:Controller层调用Service层的方法,Service层调用Dao(mapper)层中的方法,其中调用的参数是使用Entity层进行传递的。Controller层像是一个服务员,他把客人(前端)点的菜(数据、请求的类型等)进行汇总什么口味、咸淡、量的多少,交给厨师长(Service层),厨师长则告诉沾板厨师(Dao 1)、汤料房(Dao 2)、配菜厨师(Dao 3)等(统称Dao层)我需要什么样的半成品,副厨们(Dao层)就负责完成厨师长(Service)交代的任务。

2023-03-31 16:29:05 896

原创 java 拦截器

用户发送请求时,先执行preHandle()方法。会先按照顺序执行所有拦截器的preHandle方法,一直遇到return false为止,比如第二个preHandle方法是return false,则第三个以及以后所有拦截器都不会执行。若都是return true,则执行用户请求的url方法。已经渲染了页面,在afterCompletion中,可以根据ex是否为null判断是否发生了异常,进行日志记录。过滤前->拦截前->Action处理->拦截后->过滤后。1)预处理preHandle()方法。

2023-03-31 14:45:31 576

原创 java自定义异常类

用户自定义异常都应该继承Exception基类,如果希望自定义Runtime异常,则应该继承RuntimeException基类。定义异常类时通常需要提供两个构造器:一个是无参数的构造器;另一个是带一个字符串参数的构造器,这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方法的返回值)。在通常情况下,程序很少会自行抛出系统异常,因为异常的类名通常也包含了该异常的有用信息。所以在选择抛出异常时,应该选择合适的异常类,从而可以明确地描述该异常情况。

2023-03-30 15:19:34 160

原创 java抛出异常与捕获

3、throw 是在方法中出现不正确情况时,手动来抛出异常,结束方法的,执行了 throw 语句一定会出现异常。而 throws 是用来声明当前方法有可能会出现某种异常的,如果出现了相应的异常,将由调用者来处理,声明了异常不一定会出现异常。throws 后面接的是异常类型,可以接多个,多个异常类型用逗号隔开;throws:在方法上里抛出异常(是方法可能出现的异常用于throws声明,交给上层调用,自身并不主动处理)异常处理的5个关键字:try , catch ,finally,throw,throws。

2023-03-30 10:21:00 360

原创 servlet

Tomcat在初始化Servlet时,首先读取web.xml文件,根据web.xml文件中的参数信息初始化ServletConfig、ServletContext对象,同时帮助我们创建HttpServletRequest和HttpServletResponse对象一并交给Servlet实例,此时,Servlet就具有了相关的功能。Servlet是指实现了Servlet接口类,Servlet运行于支持java的应用服务器(tomcat,Servlet是tomcat的一个组件)中。

2023-03-29 14:01:18 33

原创 spring ioc

在传统的 Java 应用中,一个类想要调用另一个类中的属性或方法,通常会先在其代码中通过 new Object() 的方式将后者的对象创建出来,然后才能实现属性或方法的调用。IoC 带来的最大改变不是代码层面的,而是从思想层面上发生了“主从换位”的改变。但在 Spring 应用中,IoC 容器掌握着主动权,调用者则变成了被动的一方,被动的等待 IoC 容器创建它所需要的对象(Bean)。简单来说,依赖关系就是在一个对象中需要用到另外一个对象,即对象中存在一个属性,该属性是另外一个类的对象。

2023-03-21 14:28:19 212

原创 源码编译php7.4+swoole扩展

2022-09-07 10:42:47 652

原创 centos7安装mysql5.7步骤

2022-08-29 12:07:44 508

原创 php-fpm 讲解

2022-08-26 16:42:10 414

原创 什么是php-fpm?如何进行优化来提升性能?

2022-08-26 16:16:29 370

原创 js兼容IE,谷歌的下载方法

var xhr = new XMLHttpRequest();xhr.open('get', datas, true);xhr.responseType = "blob"; // 返回类型blob// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑xhr.onload = function() { // 请求完成 if(this.status === 200) { // 返回200 var blob = this.response;...

2021-09-22 18:02:12 598

原创 PHP生成csv格式的excel表格

但是phpexcel有一个严重的缺点;那就是一个大大的“慢”字;数据量小的时候还好;当数据量稍微大一点;那生成excel的过程99.999%的时间都是在那看浏览器转圈了;那有木有一个效率高点的呢?当然有了;而且非常简单;贴代码;/** * 数据转csv格式的excle * @param array $data 需要转的数组 * @param string $filename 生成的excel文件名 * 示例数组: $a = array(

2021-09-22 17:54:45 165

原创 解决浏览器下载文件的兼容问题

var xhr = new XMLHttpRequest();xhr.open('get', datas, true);xhr.responseType = "blob"; // 返回类型blob// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑xhr.onload = function() { // 请求完成 if(this.status === 200) { // 返回200 var blob = this.response;.

2021-08-03 15:18:34 427

原创 CentOS7安装Nginx及配置

2.安装PCRE库3.安装SSL库$ cd /usr/local/$ wgethttp://zlib.net/zlib-1.2.11.tar.gz$ tar -zxvf zlib-1.2.11.tar.gz$ ./configure$ make && make install4.安装nginx在–prefix后面接以下命令: 在Centos下,yum源不提供nginx的安装,可以通过切换yum源的方法获取安装。也可以通过直接...

2021-08-03 15:13:42 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除