- 博客(17)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 java超详细面试题个人归纳
多线程情况下,若是A线程调用getInstance,发现instance为null,那么它会开始创建实例,如果此时CPU发生时间片切换,线程B开始执行,调用getInstance,发现instance也为null(因为A并没有创建对象),然后B创建对象,然后切换到A,A因为已经检测过了,不会再检测了,A也会去创建对象,两个对象,单例失败。普通变量是不可以的,普通变量在线程之间的传递都是要通过主内存进行的,线程1修改了变量A后,需要去主内存中回写,线程2等待线程1回写结束再去获取,这是一般过程。
2021-03-08 21:53:03
1056
5
原创 c3p0连接池加解密密码以及出现的问题
项目有个需求,要对项目中的配置文件中的密码进行加密,那相对应就会产生另一个需求,解密。加解密不是什么难事,不同的数据库连接池有不同的加解密方式。针对c3p0连接,我采用的解密策略是:在注入bean属性(密码)的时候进行解密。(这里可以了解一下创建bean的几种方式以及如何注入bean属性)
2021-10-28 16:27:17
997
原创 mybatis中SqlSessionFactory和SqlSession初步探究
目前项目中大多采用springboot那一套,今天想具体了解mybatis中的工作原理。mybatis中有两个主要的工作对象,一个是SqlSessionFactory,一个是SqlSession。这两者有什么关系呢? 具体的大致步骤是这样的:程序中预先配置mybatis的xml文件SqlSessionFactoryBuilder通过配置好的xml文件来构建SqlSessionFactory,SQLSessionFactory是线程安全的,一旦被创建,应用在执行期间都会存在SqlSessio
2021-04-07 17:55:29
973
原创 博客收藏
准备离职,之前的工作电脑需要上交,可惜了我收藏的一些比较常见的解决方案,存下来,以后继续使用服务器搭建使用公钥登录阿里云部署的服务器实例(SecureCRT工具)linux下安装nginxdatamatrixhttps://blog.csdn.net/z1040141848/article/details/92770236在线AES加密解密、AES在线加密解密、AES encryption and decryption项目打包部署脚本-Windows-CMD-批处理指令Linux 安装gi
2021-03-17 16:52:31
118
原创 ELK数据库使用,部署es数据库
项目一期使用了es数据库,二期需要迁移并在一期基础上添加功能。并且依赖的基础核心服务有所升级。服务器搭建环境基于微软服务器。开发基于一期项目代码(此前未了解)。在开发以及部署中出现的问题予以记录:1.ELK的安装使用:ELK:es+logstash+kibana(都为7.5.1版本),安装命令都是用的公司的bash命令一键安装(都是间接使用的docker安装的),如果自行安装,还是得看教程,安装顺序我是es>kibana>logstash。es安装好后,没有设置账号密码使用curl htt
2021-03-09 15:40:24
872
2
原创 微服务配置nginx实现https访问
项目起初是测试环境,使用的是http协议,由于客户要求使用sso单点登录,需要改为https访问。服务器找到nginx.conf配置文件。红框中就是我们需要修改的部分。nginx默认都是80端口,https一般使用的443端口**(需要先将服务器上的443端口打开)**这里测试环境,先使用自己生成的私钥来进行测试,正式环境由客户提供。生成有关证书签名相关命令:openssl genrsa -des3 -out server.key 2048 (如果是1024可能后面会报错,估计是太小了,
2020-12-10 16:50:07
1239
原创 分页查询PageHelper.startPage()无法实现分页
引起无法分页的情况有很多,我今天也遇到了,记录一下PageHelper.PageHelper.startPage()要和查询语句紧挨在一起,否则分页失败,如下:如果将PageHelper.PageHelper.startPage()放置在首行红框处,分页就无法成功。想知道一下原理。...
2020-06-30 17:27:13
3392
原创 遍历中的sql参数一致,则会取上一次的遍历结果,不执行sql
如标题,项目中的代码是这样的:for (…){…List assetDetailRecordDtos = new ArrayList<>();assetDetailRecordDtos = assetMapper.getAssetDetailRecord(audit.getCycleCountId());…}这段代码中,第一次遍历和第二次遍历时候,assetCycleCountRecord.getId()取值是一样的,都是51,第一次返回的list的大小是836,第二次照道理应该也是
2020-06-15 10:39:28
165
原创 java8 stream.foreach()无法赋值外部变量
我接触到关于遍历的方式有如下几种:1.普通的,入门的for(int i=0; i<list.size(); i++){}2.增强for循环for(Object o : list) {}3.使用Iterator:Iterator iterator = list.iterator();while(iterator.hasNext()){}java8中新增了lamada新特性的list.stream.foreach(object ->{}),我也在逐渐从增强for循环转用这种,不
2020-06-12 14:14:36
27691
11
原创 JPA的saveAll方法执行效率很差
springboot项目中使用了SpringDataJpa的技术,很方便,省了很多dao层繁琐的步骤,但是有一个接口需要批量更新或者插入,数据量挺大,大概1-2w条,每条记录20-30个字段吧,对于刚工作不久的我还是比较大的。我开始使用的saveAll(),因为本地单元测试,也没考虑那么多(其实更早期更蠢,遍历再save,压根不去考虑数据库连接池的压力或者说每次遍历都要去连接数据库的时间损耗…),但是客户压力测试,我的接口就拉胯了。接口等待时间太久…诶刚开始的思路想解决saveAll方法为什么这么慢的问题
2020-06-04 14:06:41
4575
原创 springboot实现事务以及与trycatch的完美搭配
sprinboot实现事务很easy,两个注解,@EnableTransactionManagement 以及@Transactional。如果只添加了@Transactional的话,可能事务不会被启用。事务就是从方法开始到结束过程中,只要出现异常,为了不影响数据被污染,会将出现异常之前做的数据处理回滚,即恢复数据到方法开始的时候。方法体中难免会添加try catch去处理异常,既然catch到了异常的话,事务很难触发回滚,因为事务只能在runtimeException的时候才会触发回滚。我的两个解
2020-06-04 11:30:26
2759
原创 如何一边遍历一边删除Collection中的元素?for循环报错ConcurrentModificationException
昨天用两个加强for循环遍历,并使用List的remove()方法删除元素,报错。 报的是什么错误呢?这个错误:java.util.ConcurrentModificationException。 乍一看,我遍历每一个元素,不符合条件的删除这个元素,再进行下一次的遍历,没有问题。但是查询得到,增强for循环底层调用的是迭代器的next和hasnext方法来遍历的,移除元素后,无法预知到元素的位置,确实,难怪,增强for循环不能使用下标。但是,使用最原始的for循环,会出现遍历元素不全...
2020-06-03 17:33:15
375
原创 记录今天服务器发版的两个小问题
1.git-upload-pack not permitted: git账号配置问题,原有的账号没有这个权限了2.启动某个微服务,该服务启动到数据库层(mysql)的时候就自动停掉了,很费解,之前没有出现过这种问题:将配置信息里的ip由具体ip换成127.0.0.1,猜测此时服务器上的访问由外网切换为内网,所以可以连接上库了。...
2020-03-24 17:01:10
831
原创 windows使用vsCode启动vue项目
安装好node,配置系统变量,打开cmd并使用命令node -v、npm -v来测试nodejs是否安装成功。中途遇到一些问题:1.打开vsCode工具使用npm命令,提示如下错误:npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写。解决办法:关闭vsCode,使用管理员权限打开vsCode。2.npm run build会提示Erro...
2020-03-16 10:58:17
356
原创 从docker的mongodb中导出导入数据备份
在此之前,记录一下mongodb的权限问题:一般安装好mongodb后,默认是admin数据库,可以在里面创建新的数据库和新的账号,使用 use+数据库名 切换数据库,使用db.auth(“账号”,“密码”)进行权限验证,显示1代表成功(应该是1,我记不清了。。)之前想用mongodb的各个工具进行导入导出操作的,robo3T这个压根没有导出导入的功能,又换了一个NOSQLBooster fo...
2020-03-16 10:56:13
901
1
原创 第一次部署服务器
本次项目为微服务项目,配置高可用服务器,一台作为前端和nginx负载均衡,另外两台为后端数据服务器,实现相互注册,数据备份等。(引用博客非原创,涉权联删)1.准备环境前端服务器:jdk的安装jdk https://www.cnblogs.com/advanceBlog/p/9392909.html使用yum命令安装git:yum install -y git,安装完成使用git --vers...
2020-03-02 17:18:58
271
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人