工作及学习的一些总结
包含在实际工作中遇见的一些问题的总结,方便遇到同类问题能及时找到解决办法
横水
剑气纵横三万里,一剑光寒十九洲
展开
-
局部变量如果是对象并发会不安全吗
今天在看深入理解java虚拟机时看到一段话,大意是说JMM模型不会对局部变量及方法参数实施内存一致性协议的约定,方法参数好说,因为是线程栈内部的数据,是线程私有的,但是局部变量如果是对象呢,线程持有的是对象的引用,如果多个线程同时对对象修改呢?为此特意做了个实验: Thread hello = new Thread(new Runnable() { @Override public void run() { try {原创 2020-10-19 11:16:40 · 314 阅读 · 1 评论 -
三个线程输出abc,cba解法
思路:同步变量修饰:changeFlag,用来控制输出反转 aFlag,通知A线程是否输出,依次B,C线程一样 while循环用来持续尝试。类似自旋锁get到的知识点:写程序临界点一定要思考全面 wait和sleep区别:释放监视器。wait会释放锁,所以必须在同步块中使用 多线程的调试 多层循环跳出 continue跳出当次循环,不执行后续代码 break跳出当前循环,进入外层大循环 return直接跳出所有循环 ...原创 2020-09-27 17:52:04 · 614 阅读 · 0 评论 -
redis实现分布式锁思路
1.利用redis的setnx命令:setnx name value ,如果对应的name没有被设置过,则会设置成功,如果设置过,则返回失败。2.expire命令:可以对name设置过期时间,防止持有锁的线程因为意外情况挂掉,导致业务阻塞。3.redis是单线程的机制。Ps: 第二条中expire命令的过期时间需要对锁住的业务操作进行耗时预算,可以对业务操作多次运行取平均值t,将过期时...原创 2020-04-07 20:45:38 · 124 阅读 · 3 评论 -
Hbase分页查询的实战方案
hbase的rowkey是字典排序(如果不明白字典排序,可以百度搜索一下),所以利用这一个特性,是后插入进去的数据的rowkey在按字典排序是排在先插入的数据之前,这样查询出来的数据就是按照创建时间的顺序排列好的。 hbase提供了很多filter,可以利用pagingFilter,同时利用scan.setStartKey()来设置第一条数据的rowKey. 按字段查询可以添加过滤器链,使用s...原创 2019-12-11 10:23:02 · 830 阅读 · 0 评论 -
git常用命令详解
git查看当前系统是否安装有git版本管理工具git log查看提交历史。如果想简化显示,可以加上 --pretty=oneline,git log --pretty=onelinegit status查看当前版本库的状态git remote查看远程分支信息,参数-v可以查看详细信息git config --global user.name “your name”...原创 2019-11-01 10:42:24 · 205 阅读 · 0 评论 -
springboot在application.properties中注入map,list及单个值
类中:类上标注@propertySource单个值注入用@value("${xxx}")xxx=1,2,3,4注入list:@Value("#{'${xxx}'.split(',')}")private List<String> xxx;xxx={1:'COE',2:'MKM',3:'STO',4:'PEK_POST'}注入map:@Value(...原创 2019-05-15 15:58:50 · 8744 阅读 · 0 评论 -
excel替换固定sql中的某个值实现批量导入
原始SQL:INSERT INTO cbc_organize_agent_number_pool (agent_id,agent_code,agent_name,number,have_been_used)VALUES('4','2',NULL,'BS040499730CN','1');需求:需要将中间的运单号替换为新的值,并且更改运单号状态为0.方法:excel中公式写法:=“ INS...原创 2019-05-10 17:56:14 · 800 阅读 · 0 评论 -
java多线程-synchronized的缺陷
synchronized关键字可以用来同步方法和代码块,保证在同一时间只有一个线程能访问被同步的代码。但是其有两个缺点:1.无法控制阻塞时长2.阻塞不可中断 public synchronized void syncMethod(){ try { TimeUnit.HOURS.sleep(1); } catch (Interru...原创 2019-05-16 19:23:47 · 546 阅读 · 0 评论 -
urule客户端和服务器配置
urule服务端配置(包含数据库的配置):pom文件:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http...原创 2019-05-13 17:35:03 · 4350 阅读 · 0 评论 -
axios下载excel文件
后台:ServletOutputStream os = response.getOutputStream();String mimeType = "application/msexcel";response.setContentType(mimeType);String headerKey = "Content-Disposition";String headerValue = St...原创 2019-05-27 14:40:23 · 469 阅读 · 0 评论 -
线上打包和本地打包的区别
本地打的包对依赖的jar包是从本地仓库中取,所以如果多模块项目中自己写的被依赖的模块要保证私服中始终是最新的代码,及时安装到本地。线上使用jenkins打的包是从私服上拉代码,所以要保证本地修改在打包前一定要提交到私服上。jenkins打的包和本地不一样是,考虑以下方面,看看服务器时间是否不一样,或者在jenkins的代码拉取是加上@head。...原创 2019-05-23 13:58:42 · 3483 阅读 · 0 评论 -
springboot整合druid连接池及配置多数据源和druid监控
Pom文件引入相关jar,此处不再赘述,问百度。application.properties:spring.datasource.business.type=com.alibaba.druid.pool.DruidDataSourcespring.datasource.business.driver-class-name=com.mysql.jdbc.Driverspring.dat...原创 2019-06-12 18:03:20 · 5662 阅读 · 0 评论 -
xxl-job调度是jobhandler not found
1.时间是否一致2.是否在xxl-job中存在两个@jobhandler注解的value名称和springbean的名称一样的任务,xxljob是根据value和spring bean的名字来唯一确定一个任务(亲测好使)...原创 2019-06-06 17:42:01 · 15790 阅读 · 6 评论 -
开启debug服务和远程监视服务
nohup java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9982 -Xmx128m -Xms64m -Djava.rmi.server.hostname=192.168.103.11 -Dcom.sun.management.jmxremot...原创 2019-06-13 15:34:06 · 232 阅读 · 0 评论 -
普通java项目整合日志框架及自定义数据库appender的实现和使用
pom文件:<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> <...原创 2019-06-19 16:38:06 · 701 阅读 · 0 评论 -
mybatis结果映射错误及由此引发的深入思考
mybatis在进行复杂对象的结果映射时,会根据配置的resultmap的第一个result标签分组,所以第一个配置的结果列非常重要,会对结果中包含的集合对象的映射产生严重影响。并且,当查询结果中有多个列名一样是,必须为他们另起不一样的别名,否则也会导致结果映射错误。...原创 2019-05-09 16:56:23 · 737 阅读 · 0 评论 -
springboot下工厂对象及对象单例
目录结构如下接口类public interface EtkClient { static EtkClient getInstance(){ return null; } String getToken(); String getTokenKey(); String getUrl(); String get...原创 2019-04-17 13:29:22 · 1523 阅读 · 0 评论 -
多模块打包遇到的坑
用来将jar包打成springboot的格式,如果不是web模块,而是web的依赖模块不应该依赖此jar包。正常打包和加入插件后打出的包的对比:不添加:添加之后:...原创 2019-04-16 09:38:25 · 263 阅读 · 0 评论 -
hibernate框架中pojo类的映射配置的写法
这是结构图这是pojo类package com.wang.erp.domain;import java.io.Serializable;import org.apache.poi.poifs.property.Parent;public class Dept implements Serializable{ private String id; priva...原创 2018-07-20 17:13:43 · 667 阅读 · 0 评论 -
spring整合struts2框架action找不到异常的处理办法
废话不说,直接上问题这个项目是maven分模块之后的,所以需要在最后整合所有模块中的spring的配置文件,struts2和spring的配置文件及action怎么写我就不多说了,相信大家这基本步骤上不会出错,这个问题关键在于服务器正常启动加载文件都没有,没报错每异常,但是就是在访问action的时候报下图的错误 很明显,这个错误是在struts2中在namespace中找不到这个ac...原创 2018-07-22 12:42:13 · 2044 阅读 · 1 评论 -
tomcat启动时classpath无法加载响应文件
最近做项目,在项目中新建了一个config配置文件,专门用来存放各种配置文件,但是在启动时抛出文件不存在异常,后来发现是新建的config文件没有加载到classpath路径,具体做法是:右键项目-》buildpath-》configerbuildpath-》选择sourcer-》将config文件夹添加进来就OK了...原创 2018-08-01 08:54:00 · 1230 阅读 · 0 评论 -
springMvc架构执行流程
用户发送请求至前端控制器DispatcherServlet DispatcherServlet收到请求调用HandlerMapping处理器映射器。 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。 DispatcherServlet通过HandlerAdapter处理器适配器( 处理器适配器的作用...原创 2018-08-03 08:38:32 · 157 阅读 · 0 评论 -
淘淘28期spring无法创建bean问题
这个坑爹问题,卡我两天,网上资源不要轻易使用,建议所有开发环境自己弄,不要使用资源提供的!!!问题很简单,第二天的时候访问一条商品id,但是页面始终报500错误,不是视频中介绍的找不xml资源的那个异常。后来我搜了好久,都是说@service@controller之类的,拜托,这么简单的问题新手才会犯好不。直接放大招,我的解决办法(这里还要感谢一位网友,@天道酬勤 留此纪念),直接换最新的...原创 2018-08-13 09:21:07 · 207 阅读 · 0 评论 -
对象引用注意事项
原创 2018-08-17 19:36:02 · 148 阅读 · 0 评论 -
Linux的一些常用命令
2. linux常用命令Mkdir 创建Rm -rf 删除Chmod -R 777 权限Mysql -uroot -rquit退出 find / -name svn 查找位置 3. 关闭防火墙和selinuxRedhat使用了SELinux来增强安全,关闭的办法为:1. 永久有效修改 /etc/selinux/config...转载 2018-08-24 17:15:06 · 109 阅读 · 0 评论 -
调用别人的接口
public static String sendPost(String url, String param) { PrintWriter out = null; BufferedReader in = null; String result = ""; try { URL realUrl = new URL(...转载 2018-09-10 15:41:21 · 263 阅读 · 0 评论 -
springboot集成dubbo设置超时和重试
在指定service上添加只针对该类中的该service调用的方法起作用原创 2018-09-28 14:23:04 · 8681 阅读 · 0 评论 -
easyui的pagination每次换页行号都从一开始
//分页行号每次都从一开始 $(function () { //获取数据网格的pager对象 var pager = $('#cbcOrderHeaderDataGrid').datagrid('getPager'); //重定义pager对象的pagination pager.pagination({ ...原创 2018-11-26 16:40:11 · 589 阅读 · 0 评论 -
ThreadLocal的作用
package com.ecms;/** * ThreadLocal用法 * * @author coshaho */public class MyThreadLocal { private static final ThreadLocal<Object> threadLocal = new ThreadLocal<Object>() { ...原创 2018-12-05 13:49:01 · 140 阅读 · 1 评论 -
对象转换为easyui tree结构
public static List<EasyUiTreeItem> generate(List dataList) { return null; } public static List<EasyUiTreeItem> generateFromList(List<EasyUiTreeItem> dataList) { ...原创 2019-01-16 09:22:24 · 147 阅读 · 0 评论 -
解决spring循环调用
解决思路:找到循环调用的循环轨迹解决方法:在循环路径中任意选取合适的bean,使其实现applicationContextAware,通过applicationContextAware剪断循环,使其依赖的下一个bean在具体使用到时再去取出,而不是在spring的bean容器初始化是就将依赖注入。...原创 2019-03-05 10:49:55 · 499 阅读 · 0 评论 -
easyui刷新当前tab页
$('#main-tab').tabs('add', { title: config.title, content: tabHtml, id: config.id, cls: "ex-tab", closable: true, ...原创 2019-04-02 09:44:28 · 1203 阅读 · 0 评论 -
Windows下为jdk建立软连接
命令:mklink /D link(这个是要建立的链接文件夹) target(目标文件夹)最后在建立一个jdk目录,让环境变量指向jdk,这样,当项目需要不同的jdk文件后,可以不用每次安装jdk,只要改变一下环境变量指向的实际jdk版本即可。...原创 2019-04-08 15:09:02 · 636 阅读 · 0 评论 -
登录页面后单击地址栏刷新按钮表单重复提交的问题
今天在处理User相关的功能时出现一个问题,就是当登录进入主页面后,单击地址栏刷新按钮导致表单重复提交的问题 如上图,该bug与表单页面重复往数据库填写数据不同,是进入欢迎页面之后刷新出现的,之后我在网上搜索了很久,没有找到合适的解决办法,大多都是说的解决表单重复提交数据的解决方案,类似令牌机制或随机数。 我后来仔细翻看代码,发现是因为我在log...原创 2018-07-11 17:06:13 · 616 阅读 · 0 评论