- 博客(379)
- 资源 (2)
- 收藏
- 关注
原创 CAP理论
之前有找过一些关于CAP理论的文章,今天偶然看到下面对于CAP理论的描述,个人觉得还是写的比较简单易懂的,所以摘录下来分享。什么是 CAP 理论呢?这是 2000 年University of California, Berkeley 的计算机教授Eric Brewer(也是谷歌基础设施 VP)提出的理论。所谓 CAP,是以下 3 个单词的首字母缩写,它们都是分布式系统最核心的特性:Consistency 一致性Availability 可用性Partition tolerance 分区容错
2021-02-23 15:47:28 405
原创 策略模式 与 上下文context的作用
用户多种会员的价格优惠不一样,正常的代码实现 if public static BigDecimal calPrice(BigDecimal orderPrice,String buyerType){ if("svip".equals(buyerType)){ if(orderPrice.compareTo(BigDecimal.valueOf(28))>0){ return orderPrice.multiply(
2021-01-07 21:17:43 2450 4
原创 @Async 造成代码中用户信息与登录用户不一致的问题
场景:消息通知会发送给自己,微信公众号上的通知,提醒人与操作人不符合思路:@Async 异步执行的时候,因为不在与主线程不是同一个线程所以,UserUtil.getCurrentUser()丢失当前用户信息,重新设置了用户上下文信息,以此为出发点排查。1、首先在调用@Async方法的地方打上断点2、在@Async执行的方法打上断点3、设置 @Async 的核心线程池数量为1,这样保证多个请求执行的时候,@Async的线程都一样的threadPoolTa...
2021-01-06 13:43:13 1999 3
原创 java8 Optional.orElseThrow()
@Test void testOptional() { User user = getUser(); System.out.println(user); //isPresent()如果值存在则方法会返回true,否则返回 false。 //true User user2 = new User(); boolean present = Optional.ofNullable(user2).isP...
2020-08-18 14:44:25 26587
原创 jpa 方法命名规则查询 findAllBy 和 findBy
//该种命名方式需要自己写JPQL @Query("select d from Device d where d.deviceCode in ?1") List<Device> findAllByDeviceCode(List<String> deviceCodes); //方法命名规则查询,如果入参想要是List,必须带 In List<Device> findAllByDeviceCodeIn(List<String&...
2020-08-17 18:04:16 8086 2
原创 java 枚举
public enum MyEnum { //FIRST、SECOND对应 MyEnum(String code,String message) 构造方法 //THREE 对应 MyEnum() 构造方法 FIRST("1001","错误消息"), SECOND("1002","成功消息"), THREE; // code 和 message 提供 get方法 //FIRST.getCode()+":"+FIRST.getMessages() .
2020-08-14 18:08:48 164
原创 java8 forEach结合Lambda表达式遍历 List
@Test void testJava8ForeachMap() { Map<String, Integer> items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); i..
2020-08-13 20:31:01 2563
原创 java8 foreach + 拉姆达表达式遍历Map
@Test void testJava8ForeachMap() { Map<String, Integer> items = new HashMap<>(); items.put("A", 10); items.put("B", 20); items.put("C", 30); items.put("D", 40); items.put("E", 50); i..
2020-08-13 20:15:48 479
原创 java8 List 转 Map
场景:List循环遍历取数非常繁琐,要遍历多次,可能还存在嵌套循环的场景。那么是否能把List的数据变成Map的格式,或者提取出ID列表。java8提供一种优雅的转化方式,如下: @Test void testJava8() { List<User> userList = new ArrayList<>(); userList.add(new User(1001,"zhangsan")); userList.a.
2020-08-07 16:40:05 555
原创 mysql innoDB 死锁
一、什么是死锁官方定义如下:两个事务都持有对方需要的锁,并且在等待对方释放,并且双方都不会释放自己的锁。这个就好比你有一个人质,对方有一个人质,你们俩去谈判说换人。你让对面放人,对面让你放人。如下,A、B两个事务 出现了死锁,执行顺序如下:1、A 执行update report t set t.ui_config='test' where t.`name`= 'demo';2、B执行update report t set t.ui_config='test' where t.`name...
2020-07-10 14:44:10 274
原创 mysql innoDB 行锁
InnoDB在给行添加锁的时候,其实是通过索引来添加锁,如果查询并没有用到索引,就会使用表锁。测试如下:report 表 的 ui_config 为非索引字段1、开启事务,查询t.ui_config = 'uiconfigTest'2、开启一个新事务,查询t.ui_config = 'uiconfigTestxiugai',虽然是不同的行,但是出现了阻塞,说明SELECT * from report t where t.ui_config = 'uiconfigTest' for upd...
2020-07-10 13:51:30 229
原创 idea 如何在一个界面打开多个工程
如果通过idea open的方式,虽然能够导入所有的工程,但是需要额外配置pom文件。推荐:先 Import Projiect,选择一个工程导入通过 File-->New-->Module from Existing Sources 导入别的工程
2020-07-10 10:55:51 1351
原创 linux 例如redis宕机,该如何排查
查看是否是内存爆了1、free-h2、psaux|grepredis 查看第四列的数据(指占用系统内存的百分比)ps aux | head -1 查看每列的含义查看是否网络原因telnet 192.168.120.206 6379
2020-07-09 17:50:12 1356
原创 spring 事务传播属性
具体参照https://www.cnblogs.com/weixiaotao/p/10538158.html注:之前在测试的时候,一直未得到预想的结果。单元测试:@Test @Transactional(propagation = Propagation.REQUIRED) public void test3() throws Exception { Emp emp3 = new Emp(); emp3.setEmpno("105");
2020-06-17 09:52:45 176
原创 SpringCloud中使用Hystrix设置单个服务单个方法的超时时间
hystrix.command.xxx#yyy(zzz).execution.isolation.thread.timeoutInMilliseconds=mmmxxx:要设置的某个FeignClient的类名yyy:方法名zzz:参数,如果是基础类型,就直接填基础类型:String/int;如果是某个对象,就直接填对象的类名mmm:要设置的超时时间(毫秒)...
2020-06-04 20:30:16 2837
原创 java 多线程, 在一个方法中启用一个新线程调用其他方法
public class MyTest { public static void main(String[] args) throws Exception { String result = method(); System.out.println("main方法调用method,得到了结果"+result+":"+new Date().toLocaleString()); } public static String method(){.
2020-06-02 15:31:17 7071 1
原创 mybatis 一级缓存测试
@Test void test1() throws Exception { //取2个不同的 sqlSession SqlSession sqlSession1 = factory.openSession(true); SqlSession sqlSession2 = factory.openSession(true); EmpMapper mapper1 = sqlSession1.getMapper(EmpMapper.cla..
2020-05-28 14:34:29 451
原创 mybatis 接口代理源码分析
SqlSession.getMapper 该方法会生成一个动态代理对象,调用的是MapperProxyFactory中的 newInstance查看jdk动态代理的处理类MapperProxy看下MapperProxy的具体处理逻辑 invoke最终是执行mapperMethod.execute(this.sqlSession, args),我看跟进代码看下,public Object execute(SqlSession sqlSession, Object[] args) { ...
2020-05-28 10:41:19 313
原创 循环执行数据,出现异常跳过,继续执行下一条
场景:循环输出1-10,当i=5的时候出现异常,此时想让程序继续执行。catch 里面记录错误日志,continue继续执行for循环。 public static void main(String[] args) throws Exception { try { for(int i=0;i<=10;i++){ try { if(i==5){ .
2020-05-22 17:25:43 5475 1
原创 java 多线程 Future.get()会阻塞当前主线程的运行,但不影响已经执行的其他线程
public class MyTest { public static void main(String[] args) throws Exception { ExecutorService pool = Executors.newFixedThreadPool(2); Future<Integer> f1 = pool.submit(new MyCallable(100)); Future<Integer> f2 = .
2020-05-21 14:53:24 5732
原创 mysql 订单表里的订单有F开头的,查询的时候将F开头的订单排序排到最后
SELECTt.*,if(left(title,1)='F',2,1)asflagFROMtb_order_itemtorderbyflagasc,title;把订单F开头的弄个标识flag例如2,其他的都为1,排序的时候先flag升序
2020-05-15 14:28:50 538
原创 @RequestBody取POST方式的json字符串
场景:前端 json 数据请求到后端的时候,可以用@RequstBody来映射成相应的实体类,但是如果json格式太过复杂,而且我们不需要全部的数据,这时候我们就可以 后端 获取 请求的 json 数据,然后自己进行解析。前端:var json_data={ "name" : "demographics", "params" : [1 , 2, 3], ...
2020-04-29 15:32:11 1610
原创 oracle listagg , mysql group_concat
场景:salordersettlement 中 与comdictinfo 一对多关系,将其中的多个付款方法进行拼接。select listagg((select c.langname1 from comdictinfo c where c.dicticode='271506'and c.code=t.paymode),',') within group(order by 1) as paym...
2020-04-27 17:30:17 493
原创 niginx 请求转发到别的服务器
场景:当请求路径带有/SnELinkIntegrate 的时候,转发到http://10.16.16.147/pms/www/index.php/,但转发之后网页上的路径为http://192.168.10.98/pms/login... 这里的http://192.168.10.98是发起请求的服务器地址,理论上网页上的地址应该为http://10.16.16.147/pms/login...
2020-04-27 13:27:01 3137
原创 Thymeleaf 生成的静态文件路径,直接上传到linux
// 创建输出流 File file = new File("C:\\project\\nginx-1.14.0\\html\\item\\" + spuId + ".html"); writer = new PrintWriter(file); // 执行页面静态化方法 template...
2020-04-24 11:23:21 683 2
原创 乐优 axios设置请求时间
问题:前端axios请求后端服务,后端程序debug调试,前端无响应,请求状态 (canceled)。分析,一开始以为是zuul网关设置的hystrix超时时间导致的,但是hystrix设置为6s。后面查看axios的配置得知,axios配置为2s超时。import Vue from 'vue'import axios from 'axios'import config from...
2020-04-22 11:09:37 854
原创 ECMAScript 对 Object的拓展
<script> var person = { name:`jack`, age:25, gender:`男` } //keys(obj):获取对象的所有key形成的数组 var keys = Object.keys(person); for(let i=0;i<keys.length;i...
2020-04-20 15:35:41 122
原创 SpringBoot 属性注入 ConfigurationProperties
问题:ConfigurationProperties如何进行对象的赋值,例, JdbcProperties中有 View对象,如何初始化View中的 prefix,suffix@ConfigurationProperties(prefix = "jdbc")public class JdbcProperties { private String driverClassName;...
2020-04-15 15:13:44 944
原创 ObjectMapper 解析 json
问题描述,在使用ObjectMapper解析json数据的时候,json数据太多,只想解析需要的数据生成pojo对象。解析的Class为Map, 可以先使用Object.class ,调试之后发现是 linkedHashMap类型。 Map map = objectMapper.readValue(json, Map.class); Object emp ...
2020-04-14 22:53:49 1523
原创 idea REST Client 文件上传 Required request part 'file' is not present
在使用 idea 自带的 REST Client 测试文件上传的时候,发现不能指定上传文件的 参数 名称,controller端,用 file 参数来接收上传的文件执行 REST Client ,报错 Required request part 'file' is not present, 上传的文件获取不到,需要断点来调试下,发现进入不了controller,多次测试后发现需要把@...
2020-04-13 16:42:40 2599 1
原创 window环境下,启动nginx失败
问题描述:使用命令 start nginx, 在任务管理器的 详细信息列表,未能找到 nginx找到nginx安装目录下的logs,打开error.log 查看日志No mapping for the Unicode character exists in the target multi-byte code page网上查阅资料说,不能将Nginx解压到带有中文路径的目录下...
2020-04-10 15:12:04 508
原创 idea springboot 导入依赖的时候,报错 unknown
org.springframework.boot:spring-boot-starter-jdbc:unknown预测是父工程,spring-boot-starter-jdbc 没有指定版本,默认的版本不支持。>spring-boot-starter-parent是 2.2.5,设置spring-boot-starter-jdbc版本也为 2.2.5,测试通过...
2020-04-07 11:37:08 1490
原创 window环境下使用 nginx
1、在nginx安装目录下,shift+鼠标右键2、 start nginx :启动 ./nginx -s stop: 停止 ./nginx -s reload:重新加载如果出错:PS E:\nginx\nginx-1.8.0> .\nginx -s reloadnginx: [error] CreateFile() "E:\nginx\nginx-1.8.0/...
2020-04-03 16:49:47 456
原创 ES6 数组中新增map方法
map():接收一个函数,将原数组中的所有元素用这个函数处理后放入新数组返回。举例:有一个字符串数组,我们希望转为int数组,然后 +1<script > let arr = ["1","2","3"]; arr = arr.map(s => parseInt(s) + 1); console.log(arr) </...
2020-03-31 15:35:27 896
原创 srping-boot 无法用两个不同的端口启动服务
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>问题描述:例如第一个启动8081端口成功后,修改端口为80...
2020-03-30 11:17:08 390
原创 spring-boot 导入 spring-clound依赖的时候出错
"C:\Program Files\Java\jdk1.8.0_171\bin\java" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=55162 -Dcom.sun....
2020-03-26 15:21:11 873
原创 java 多线程 CountDownLatch
CountDownLatch能够实现线程之间的等待,CountDownLatch一般用于某个线程A等待若干个其他线程执行完任务之后,它才执行public class MyTest { public static void main(String[] args) { CountDownLatch count = new CountDownLatch(2); ...
2020-03-25 13:31:28 151
原创 java 多线程 volatile
volatile是轻量级的synchronized,它在多线程中保证了变量的“可见性”。可见性的意思是当一个线程修改了一个变量的值后,另外的线程能够读取到这个变量修改后的值。看下如果不加 volatile 的情况:public class MyTest { public static void main(String[] args) { Volatile ru...
2020-03-25 13:17:03 131
Oracle体系结构图
2018-02-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人