![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
自己总结
记录一些项目中遇到的一些技术和卡主的地方
a816120
这个作者很懒,什么都没留下…
展开
-
Java通过反射给注解赋值
在用java导出Excel的时候,表头不能写死,而是根据情况变化的。原创 2024-03-04 14:16:33 · 618 阅读 · 1 评论 -
若依框架添加出入参加密解密
若依出入参加密解密,若依全局过滤器使用,byte数组转string丢失数据问题。原创 2022-06-01 11:06:42 · 5195 阅读 · 5 评论 -
修改若依的数据权限功能
若依(cloud版本)的数据权限功能是通过注解实现的,在需要数据权限的方法上加上注解。在注解中判断当前用户的角色对应的数据权限类型,在执行的sql语句后面拼接部门和用户的sql过滤条件从而实现数据权限功能。数据权限的核心功能的代码如下:如果当前用户有多个角色,那么多个角色之间不同的数据权限通过sql的or来连接。最后在mybatis的xml中通过拼接sql语句实现。这个功能没有问题,使用$来拼接sql也没有问题,因为数据权限中需要拼接的语句是写死的,而且若依也做了防注入的操作。原创 2022-02-11 15:50:14 · 4623 阅读 · 1 评论 -
spring.factories是什么
springboot项目启动的时候,会把springboot目录下的类加载到 spring容器中。在代码里就可以直接使用这个创建好的类了。所以一般的springboot项目的启动类都是放在代码的外层,那么就可以扫描到代码中所有的类了。如图:可是,如果有的类需要spring去管理,但是存放的位置不在springboot启动类目录下,无法自动扫描到,比如这个swagger的配置类,那如何才能使得这个类同样被加载到spring容器中。如图;使用spring.factories可以实现,在res原创 2022-01-22 09:00:52 · 551 阅读 · 0 评论 -
linux安装redis
1,下载redis:https://redis.io/download2.上传并解压改名 tar -zxvf redis-6.2.6.tar.gzmv redis-6.2.6 redis3.进入解压后的文件夹 使用make命令对redis进行编译执行完成后会生成src等目录。4.进入src 执行make install 对redis进行安装5执行redis-server& ./redis.conf启动redis6.关闭redi...原创 2021-12-30 15:50:13 · 245 阅读 · 0 评论 -
异或^符号的使用
记录一道leetcode上的算法题精妙解法。给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例1:输入: [4,1,2,1,2]输出: 4题目其实非常简单,在此记录一种精妙解法,先把答案列出:public int singleNumber(int[] nums) { int ans = nums[0]; if (nums.length > 1) { for (int i = 1; i <...原创 2021-09-06 14:43:48 · 5335 阅读 · 0 评论 -
oracle连接并获取外部数据库
创建外部数据库的dblinkcreate public database link 数据库链接名 connect to 数据库名 identified by 数据库密码 using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 主机号)(PORT = 端口号)))(CONNECT_DATA =(SERVICE_NAME = 数据库服务名)))';SELECT * FROM 表名@数据库链接名;...原创 2021-09-06 14:29:05 · 411 阅读 · 0 评论 -
java在word中插入图片的一些问题
生成方式是用doc或者docx格式的模板,然后用流将内容写入。大概的代码如下:byte[] modelByte = Files.readAllBytes(Paths.get(inputUrl));Template<WayTemplate> template = new Template<>(wayTemplate);byte[] resultByte = devSiteBusiness.fillWordDataByDomain(modelByte, template原创 2021-08-19 22:03:15 · 1654 阅读 · 0 评论 -
maven打包成功但项目启动时找不到其他包的内容
手动导入一个新项目的时候可能会发生这种情况:maven全部都打包完成后,启动项目的时候报错,找不到这个类,可是打包是正常的,鼠标点击也能点进去,只有启动的时候说找不到。经过各种检查都是正常的,无奈上网查了查,有的说可能是IDEA2020.1的一个bug,不管怎样,解决方案如下:在maven命令行中执行idea:idea后,这个问题成功解决。...原创 2021-08-03 17:05:49 · 671 阅读 · 1 评论 -
Tomcat服务端部署成功但外部访问不到
在服务器上部署好了tomcat,但是在外部拿浏览器访问服务器IP:8080却无法访问到。排查:1.确认tomcat确实启动成功,在服务器中:curl 服务器IP:8080 看是否有返回html代码。2.关闭防火墙3,给8080端口号开通访问权限4,如果这样还是不行的话,最后也是最坑的一步就是,换个端口号试试。。。。。。。。。。比如我用的电信这个服务器因为8080端口号比较敏感就封了,换了端口号就可以了。。。。。。。。...原创 2021-01-23 09:17:21 · 1573 阅读 · 0 评论 -
windows搭建kafka入门
下载kafka包,官网解压出来。我的版本是2.6要启动kafka,要先启动zookeeper,这里使用kafka自带的zookeeper。修改config目录下的server.properties文件,修改log.dirs=F:\kafka_2.13-2.6.0\kafkaLogs可以新建一个文件夹用来存放kafka的数据信息存放地址。修改config目录下的log4j.properties文件,修改log4j.appender.kafkaAppender.File=F:/kafka_2.13原创 2021-01-09 15:04:19 · 132 阅读 · 0 评论 -
关于上传多文件的一些记录
做个记录备忘以Postman为例,前端发送请求时,使用Post请求,在Header中添加enctype = multipart/form-data(如果不能成功,可以把Header中的Content-Type去掉试试)入参使用body中使用表单提交类似,类型选择file:后端接收的话,注意方法的入参怎么接:public CommonResult<List<BaseFile>> upload(@RequestParam("files") MultipartFile[] fi原创 2021-01-09 09:21:53 · 88 阅读 · 0 评论 -
maven项目引入第三方jar包install失败
有时会从其他项目中得到所用jar包,jar包较多时,懒得一个个去找maven的地址,就直接引入项目了,但是引入项目后,在代码中是可用的,在maven的install的时候,就会报错。解决方法如下:在pom文件中加入对应jar包的配置,其他的都可以随便写,systemPath对应上第三方jar包就可以。 <dependency> <groupId>com.manege.shiro</groupId> <artifa原创 2020-12-16 16:06:36 · 1215 阅读 · 0 评论 -
错误码:4 服务器返回的错误消息:Failure的解决
向服务器上传文件时,出现这个错误。错误下面有提示,四种出现这种错误可能的情况,最常见的就是磁盘空间满了。使用df -h命令,查看服务器各磁盘的空间。看到有一个磁盘满了,首先想到的是日志的文件夹最容易满。到日志文件夹,果然有打印错误日志的文件有几十个G,打开一看,有一个异常在一直快速的向错误日志中写内容,所以很快就满了。先把服务关掉。先手动删掉了日志文件,然后发现空间还是满的,看来并没有删干净或者删除没有执行。使用 lsof | grep delete 命令查看删除进程,发现了很多没被删掉的原创 2020-12-14 16:28:42 · 8227 阅读 · 0 评论 -
创建对象的相关知识补充
创建对象有六种方法:一,使用new关键字这个不必多说了,是最常见和最常用的。二,Class对象的newInstance()方法Class clazz = Class.forName(className);Object obj = clazz.newInstance();三,构造函数对象的newInstance()方法Constructor constructor = Test.class.getConstructor();Test test = constructor.newInstanc原创 2020-10-22 14:54:27 · 146 阅读 · 0 评论 -
关于关键字volatile的一二
volatile关键字一般用来修饰变量。被volatile修饰的变量可以保证可见性和防止指令重排序,但是无法保证变量的原子性。什么是可见性,在JVM中,变量都存在主内存中,每个线程都有一个工作内存,工作内存中存放着该线程中要使用的变量。变量的值与是主内存的变量值的拷贝。当其中一个线程的的工作内存中的变量发生改变时,按理说应该马上将改变后的变量值更新到主内存中,这样其他线程在使用这个变量的时候,拿到的就是该变量最新的值。但是这个将新的变量值更新到主内存的操作,并不知道是什么时候执行,导致其他线程要从主内原创 2020-10-16 16:37:16 · 75 阅读 · 0 评论 -
使用C#写winform小程序入门
帮朋友要写一个自用的winform小程序,一开始打算拿java的swing写,可是发现太难用了,没用过的话,开发效率极低。所以就转C#写吧,反正C#和java很相近,减少很多学习成本。先说工具,C#一般对应的是SQLServer的数据库,安装稍有麻烦,我这有两个安装条件一直无法满足,算了,还是用mysql。开发工具的话,最常用的Visual Studio,最新版的单单是winform的功能就要5个G之大。。。。。。网上又搜了搜,发现一款叫Sharpdevelop的轻量级的C#开发软件可以用之。(使用时原创 2020-10-12 11:04:41 · 3635 阅读 · 1 评论 -
为什么对象设置为Null的时候会利于GC的回收?
最近在看ArrayList的源码,看到remove方法中,有这么一行代码: public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy原创 2020-07-20 17:16:45 · 2245 阅读 · 1 评论 -
快速失败与失败安全简述
先摆概念:系统运行中,如果有错误发生,那么系统立即结束,这种设计就是快速失败(fail-fast)。系统运行中,如果有错误发生,系统不会停止运行,它忽略错误(但是会有地方记录下来),继续运行,这种设计就是失败安全(fail-safe)。打个比方,在dubbo中,有一个AbstractClusterInvoker,其中有两个实现类FailfastClusterInvoker和FailsafeClusterInvoker在dubbo的配置中,有一个cluster的属性,里面可以填“failfast”和“fa原创 2020-07-20 15:31:12 · 185 阅读 · 0 评论 -
IDEA中GC日志怎么看
点击右上角的,Add Configuration或者Edit Configuration,在VM options中填写:-XX:+PrintGCDetails就可以在日志面板看到GC的日志了,手动调用GC来试验一下:原创 2020-07-20 12:10:06 · 712 阅读 · 0 评论 -
关于关键字transient的一二
被transient关键字修饰的属性,在序列化对象的时候,不会序列化这个属性。引入就是说,一个对象,某个有值得属性如果被transient修饰,那么这个对象在经过序列化和反序列化以后,该属性之前的值会消失掉,变成属性类型的默认值。因为安全,一些对象属性不想被序列化到硬件中,就可以用transient修饰,使得该属性的生命周期仅仅存在内存中。java的序列化有两种方式:第一重就是实现Serializable接口,第二种就是实现Exteranlizable接口,需要重写writeExternal和rea原创 2020-07-17 13:56:10 · 219 阅读 · 0 评论 -
微信公众平台测试号——模板消息发送Demo
开发微信公众号的时候,我们经常会使用微信公众平台的测试号来进行调试,因为测试号的可用接口比较全,不然只有经过认证的服务号才可以调用比较高级的接口。从开始搞一个微信公众平台测试号开始。打开微信公众平台,注册登录什么的就不说了,一个微信号只能绑定一个测试账号。之后进入页面会看到有一个接口配置信息修改,里面的URL需要填写一个80端口的公网地址,下面的token自己随便填,填完记住,后面要用。如果手头没有服务器或没有可用的公网地址和端口,可以参考前面写的博文使自己的本地开发环境映射出一个可用的公网地址然原创 2020-07-10 10:04:02 · 11899 阅读 · 13 评论 -
一些异常及解决方法记录(持续更新)
异常:org.springframework.http.converter.HttpMessageNotReadableException:JSON parse error: Cannot construct instance of com.类名* (although at least one Creator exists): cannot deserializ原因:类中没有空构造函数原创 2020-06-22 15:21:50 · 1953 阅读 · 1 评论 -
对象转为json字符串,时间变为时间戳的解决方法
是的,就是这个方法,把要转换的对象传进去,第二个参数日期格式是字符串,第三个参数可以不管。JSON.toJSONStringWithDateFormat(Object,dateformat,SerializerFeature.WriteDateUseDateFormat)原创 2020-06-22 10:33:00 · 3360 阅读 · 0 评论 -
websocket作为服务端收发信息的demo
websocket的使用可以使前后端的数据之间进行实时通讯。普通的web程序,由客户端发出请求,由服务端接收请求,进行处理并将结果返回客户端的这么一个流程。可是如果服务端的数据变化频率比较快,客户端要想要比较实时的获得最新的服务端数据,可能需要不断的发送请求websocket里面使用@Autowired注入bean的时候会报异常...原创 2020-06-17 15:10:26 · 2652 阅读 · 0 评论 -
IE浏览器的静默打印与踩坑
记录下踩过的坑。第一次写,可能很啰嗦,格式也难看,请见谅。需求:在IE浏览器下,一键静默打印多个合同。java环境。背景:文档保存在另一台服务器上,无法从存着文档的服务器直接把文档保存到现在的产品所用的服务器上,所以把word文档变成HTML字符串,通过调用接口返回到现在开发所用的服务器上。这是别人做的工作,我这边的需求就是要服务端接收到HTML后,把里面的所有文档一键静默打印。(因为一些需求...原创 2020-04-01 22:59:20 · 1461 阅读 · 0 评论