自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ayupch的博客

分享知识,共同进步!

  • 博客(34)
  • 收藏
  • 关注

原创 彻底弄清:mvn编译正常,idea编译报错的问题

mvn编译正常,idea编译报错的问题,## 问题案例idea打开的git项目,前几天还没有任何问题,今天在打开发现还多类找不到,一排查发现包不是最新的,mvn clean install能编译通过,但是,idea编译不通过。### 解决方式- reimport 重新导入maven依赖 失败- invalidate cache/restart,清一下idea缓存,再重启 失败- mvn idea:module 成功

2021-10-17 14:56:36 8051 1

原创 一文弄清:mysql自增表插入数据时,Id不连续问题

今天查看数据库时,发现id设置了auto_increment,但是,数据库中id是不连续。正好趁着这个机会总结一下mysql常用的插入语句(insert into、insert ignore into、insert into … on duplicate key update)

2021-09-29 01:04:21 7048

原创 分分钟搞定:跨域问题

Web开发中,跨域问题是一个很常见的问题。最近项目开发中涉及到H5相关页面,这些页面链接会被分享出去,这里就涉及到跨域问题了。趁着这个机会在好好总结一下这一块的知识。

2021-09-28 00:13:55 211

原创 Java异步编程(一)

异步编程的概念由于每个线程同时只能处理一个请求,所以为了提高系统系统性能,我们就需要引入更多的线程来实现并行化处理。但是多线程下对共享资源进行访问是,不可避免会引入资源争用和并发问题;另外,每个进程可使用的线程个数是有限的,不可能通过无限增加线程数来提高系统性能;而且,使用同步阻塞编程的方式还会浪费资源,比如发起网络IO请求是,调用线程就会阻塞,等待响应结果,但是,这时候调用线程明明可以去做其他事情,等网络IO响应结果返回在对结果进行处理。异步编程的场景在日常开发中我们经常需要异步的处理一下事情,而不

2021-09-05 22:18:12 221

原创 (一)、HTTP分块传输(chunked)

分块传输编码Http有长连接和短连接两种方式;短连接即一次请求对应一次TCP连接的建立和销毁过程,而长连接是多个请求共用同一个连接这样可以节省大量连接建立时间提高通信效率。请求头里面的字段Connection:keep-alive字段就是告诉HTTP服务器响应结束后不要关闭连接,浏览器会将连接缓存起来,当在有限时效内有再次对相同服务器发送请求时则直接从缓存中取出连接进行通信。当然被缓存的连接如果空闲时间超过了设定值则会关闭连接。当使用短连接的时,可以通过服务器端对连接的关闭来获得消息体的结束位置;但长连

2020-12-06 21:37:50 5297

原创 (二)、vue实现按行刷新

直接上代码:template代码示例:<el-table :data="dataTable" .... > <el-table-column label="tag" prop="tag" width="150px"> <template slot-scope="{ row }"> <span>{{ row.tag }}</span> </template&gt

2020-11-21 23:17:21 348

原创 (十二)、@PathVariable

@PathVariable用来接收请求路径中的占位符值。例子如下:@Controller@RequestMapping("/test")public class TestController { /** * 请求路径:http://localhost:8080/test/show/1/james */ @RequestMapping("/show/{id}/{name}") public void test5(@PathVariable("id") lon

2020-11-21 00:33:42 213

原创 (一)、zset

zset编码原理ziplist元素数量小于128所有元素的长度小于64字节skiplistzset命令zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。zrem(key, member):删除名称为key的zset中的元素member。zincrby(key, increment, member):如果名称key的zset中已经存在元素member,增该元素

2020-11-20 23:19:02 572

原创 (一)、vue换行显示后端返回数据

vue开发使用el-ui框架,下面解决的是后端返回了一个list的数据,每条数据换行显示的问题,代码如下: <el-table-column label="类型" width="100px" align="center" prop="testType" > <template slot-scope="{ row }"> <span v-for="item of row.testType"> <di

2020-11-19 23:44:36 1520

原创 (十一)、AOP :面向切面编程基础

前面说了很多DI相关的知识,现在我们一起讨论一下AOP。基础定义切点定义使用Pointcut注解,具体详见execution// * 代表任意返回类型, com.pch.test.Test.test代表指定类方法 (..)代表任意参数execution(* com.pch.test.Test.test(..))// 与:&& 或:|| 非:!execution(* com.pch.test.Test.test(..) && with

2020-11-19 00:33:03 187

原创 (十)、BeanFactory和ApplicationContext

在前面的 (七)、Bean 中,我们介绍Bean注入时,说了@Autowired注解,使用该注解也是我们推荐使用的获取bean对象的方式,但是,有时我们希望能够自己控制什么时候获取bean对象,这时候BeanFactory就派上用场了。下面我们一起讨论一下BeanFactory,因为BeanFactory是一个接口,那么我们如何获取它的实现对象呢?这里就要说一下ApplicationContext,我们可以通过ApplicationContext获取BeanFactory对象,这样我们就能通过bean对象

2020-11-18 23:49:18 163

原创 (九)、@Value

在spring开发的过程,有时需要定义一些配置常量,例如:搜索路径等等。这时@Value注解就有用武之地了。我们可以在Application.properties中添加配置,使用@Value注解获取配置值即可。例如:Application.properties// 上传文件的最大上限upload.file.maxSize="10M"Component类,Test添加引用即可@Configurationpublic class Test { @Value("${upload.file

2020-11-17 23:55:48 265 4

原创 Mac快捷锁屏

Mac锁屏的快捷键:command + control + q上面快捷键是最常用的锁屏快捷键。触摸板快捷锁屏(特别便捷)系统偏好设置->调度中心选择触发角 -> 左下角选择锁定屏幕这样触摸板滑动到左下角,即可锁定屏幕。...

2020-11-17 00:05:47 1152

原创 (八)、MultipartFile

在处理上传文件时,经常用到MultipartFile文件。MultipartFile是spring类型,代表html中from-data方式上传的文件,包含二进制数据+文件名称。MultipartFile和File可以互相转换MultipartFile -> File:使用transferTo方法MultipartFile multipartFile = ...File file = new File(****);multipartFile.transferTo(file);File -

2020-11-14 14:31:22 2770

原创 (七)、Bean

声明Bean在spring容器中,声明bean有两种方式,一种是@Bean,另一种是@Component注解(包括@Service、@Controller、@Repository、@Configuration)。对于@Bean注解,如果指定了name参数,以参数为准;如果未指定name参数,会以方法名作为bean的名称。对于@Component注解,如果指定了参数,以参数为准;如果未指定参数,会以类名作为bean的名称;如果类名开头是两个或者两个以上大写字母,bean名同类名完全一致;如果开头只有一

2020-11-12 00:14:31 218 4

原创 (六)、@EnableScheduling和@Scheduled

定时任务配置类上添加@EnableScheduling开启定时任务支持,在相应方法里添加@Scheduled声明需要执行的定时任务。@Scheduled注解中有以下几个参数:cron:设置定时执行的表达式,如0 0/5 * * * ? 每隔五分钟执行一次zone:执行时间的时区fixedDelay和fixedDelayString:任务执行结束后间隔n毫秒执行fixedRate和fixedRateString:任务执行开始前间隔n秒执行initialDelay和initialDelayStri

2020-11-08 11:46:25 482

原创 (五)、ApplicationListener的使用

ApplicationContext事件机制是观察者模式实现的,通过ApplicationEvent和ApplicationListener,可以实现ApplicationContext事件处理;如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent时,对应的Bean会触发。springboot支持的事件类型如下:ApplicationFailedEvent:该事件在springboot启动失败是调用Applicati.

2020-11-08 00:50:47 1925

原创 vue开发过程中常见问题

一直做后端工作,近期由于工作需要写vue,作为vue小白,记录使用过程中遇到的问题?el-button点击后不失去焦点(按钮颜色不变)的解决clickHandler(evt) { let target = evt.target; if(target.nodeName === "SPAN") { target = evt.target.parentNode; } target.blur();}原因:下图为el-button的结构:<el-

2020-11-06 22:34:51 463

原创 mysql日常使用经验积累

注意事项:字段名不要使用desc,desc是mysql的关键字。1、desc tablename用来获取表的数据结构;2、desc在order by中代表倒叙,例如: select * from table order by id desc(asc)

2020-11-06 01:49:14 151

原创 (四)、ConversionService

ConversionService类型转化接口可以将一种Object类型转换成另一种Object类型。使用例子:@Beforepublic void before() { conversionService = new DefaultConversionService();}@Testpublic void test() { ConversionService conversionService = new DefaultConversionService(); In

2020-11-06 01:40:23 739

原创 (三)、WebMvcConfigurationSupport与WebMvcConfigurer

WebMvcConfigurationSupport与WebMvcConfigurer在spring中配置webMvc有两种方法,一种是继承WebMvcConfigurationSupport,另一种方式就是继承WebMvcConfigurer,但是要多加一个@EnableWebMvc注解。相比来说继承WebMvcConfigurer更安全些,因为里面都是空方法。在实际项目中最常用的就是增加自定义拦截器@Configuration@EnableWebMvcpublic class WebConfi

2020-11-06 01:20:31 2200

原创 (二)、@Import注解

@Import注解@Import注解通过快速导入的方式把实例加入到spring的IOC容器中。最常用来导入第三方jar包。@Import的常见用法直接引用class类(包含@Component注解修饰的类,例如@Configuration注解修饰类),容器会自动注册这个组件,id默认是类全名@Import({类名.class, 类名.class})public class Test {}ImportSelector的方式,返回需要导入组件的全名类数组。它的前提就是一个类要实现Impo

2020-11-05 00:12:12 138

原创 (一)、@RequestParam和@RequestBody注解

大家都知道SpringMVC已经默认集成了Jackson,下面我们先介绍一下Jackson的基础知识。Jackson将javabean属性序列化成Json,主要依赖get方法。即按get*方法来判断json的key

2020-11-04 23:36:05 223

原创 Mac系统 —— IDEA无法启动

今天看到自己的IDEA能升级了,十分手欠的点了升级,安装完成后,发现需要激活,试了好多方式都不能激活。想着还是还原成原来的破解版本,于是卸载了IDEA,重新安装,问题来了,新安装的IDEA不能启动了。操作步骤:应用程序 -> Idea -> 右键显示包内容 -> Contents -> MacOs -> idea运行可以看控制台的log。发现提示找不到文件。于是在IDEA小界面中 点击Configure –> Edit VM Options在最后一行添加Jar包破

2020-09-02 23:27:20 425

原创 java热加载(三)—— 配置文件热加载

在实际开发中往往需要读一些配置文件,例如,开发游戏是一些活动数据会存造excel中,每次起服时会把excel数据读取到缓存中,如果数据有变动需要热更新数据。我们这里使用反射来完成修改。...

2020-08-16 18:05:21 1399

原创 Javassist框架研究

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。Javassist中最为重要的是ClassPool,CtClass

2020-08-15 22:04:16 547

原创 window环境下:使用ip地址无法连接mysql问题解决

mysql 默认只允许使用localhost或者127.0.0.1访问的,如果想用ip地址,来访问mysql,需要手动开启这个权限。进入命令行执行下面的命令即可grant all privileges on *.* to '用户名'@'IP地址' identified by '密码';flush privileges;如果对所有ip开放grant all privileges on *.* to 'root'@'%' identified by '111111';flush privilege

2020-08-14 22:17:03 2113

原创 ASM框架研究

ASM是什么ASM是一个致力于字节码和分析的框架,它用来动态生成类或者增强既有类的功能。ASM可以直接创建class文件,也可以在类被加载到jvm之前动态的改变类的行为。class文件是按照严格格式存储的,这些class文件拥有足够的元数据来解析类中所有元素:类名称、方法、属性以及Java字节码指令,ASM能够直接从class文件中读取信息获得类信息,同时也能根据需求直接通过字节码修改class文件。虽然,ASM提供了其他字节码工具相同的功能,但是它更关注执行效率,它被设计的更小更快。其实,jdk内部已经

2020-08-14 21:49:47 595

原创 Java热加载(二)—— Instrumentation实现热加载

本篇文章我们讨论一下Instrumentation。

2020-08-14 00:06:27 984

原创 Java热加载(一)—— ClassLoader实现热加载

前面的文章我们一直在讨论类加载器相关的知识,这篇文章我们谈一下,类加载器的实际应用热加载。说到热加载,做过线上项目的一定用过,下面我们来讨论一下热加载。我们将讨论常见的两种形式的热加载:一种使用ClassLoader实现热加载的方式;另一种使用Instrumentation的方式。ClassLoader实现热加载通过前面的文章我们知道了类加载机制是双亲委派模型,“同一个类名,同一个类加载器实例加载的,代表是同一个类”。如果我们要自己实现业务代码的热加载,就不能用默认的类加载器实例,因为同一个类加载器实

2020-08-12 15:56:33 1077

原创 关于Java的SPI机制的一些思考

Service Provider Interface:服务提供者接口.例如,系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。为了实现在模块装配的时候能不在程序里动态指明,这就需要一种服务发现机制。在模块化设计中这个机制尤其重要。java spi就是提供这样的一个机制:为某个接口寻找服务实现的机制。jdbc举例分析一下调用流程:// 首先 加载sqlite需要的

2020-08-11 22:23:45 272 2

原创 关于Java类加载机制的一些思考

类的生命周期1. 加载:2. 验证3. 准备4. 解析5. 初始化6. 使用7. 卸载

2020-08-10 23:40:08 182

原创 AccessController - java安全管理

上文中我们遇到了AccessController,它有什么作用呢?本节我们会对其进行介绍,在介绍它之前我们先介绍一下java的安全模型参考:https://developer.ibm.com/zh/articles/j-lo-javasecurity/

2020-08-09 14:33:01 1532

原创 Unsafe总结

前几天下班回家的路上一个客户端同事问我,java能自己控制内存吗?再加上这几天在看disruptor源码,也遇到了Unsafe相关的东西,抽个时间总结一下。Unsafe类,下面来介绍一下这个类Unsafe类是final类,并且构造方法是私有的public final class Unsafe { private static native void registerNatives(); static { registerNatives(); }

2020-08-09 10:16:22 239

空空如也

空空如也

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

TA关注的人

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