自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 docker部署Flask

用Docker部署Flask应用

2023-01-02 15:10:29 141

原创 Ubuntu 22 Server安装docker

Ubuntu 22 Server安装docker

2023-01-02 15:06:26 1005

原创 docker基础命令

docker基础命令

2023-01-02 15:02:10 478

原创 低延迟垃圾回收器ZGC

对于低延迟和高可用的Java服务,GC停顿一直是它们的痛点。ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,可用于大内存低延迟服务的内存管理和回收。

2022-05-22 10:51:57 815

原创 awk实现行列互相转换

目的:使用awk对文本进行行列转换,行变成列。方法示例文件:test.txt1 2 34 5 67 8 9转换代码:awk '{for(i=1;i<=NF;i++) a[i,NR]=$i}END{for(i=1;i<=NF;i++) {for(j=1;j<=NR;j++) printf a[i,j] " ";print ""}}' test.txt输出:1 4 7 2 5 8 3 6 9 ...

2021-04-30 15:45:14 2177 1

原创 Java 线程池execute和submit的区别

execute和submit的区别方法使用场景是否有返回值异常处理execute适用于不需要返回值的场景无线程内部如果发生异常,主线程无感知。异常会通过stdout方式显示,如果需要在日志中打印,需要单独设置。方法见示例3submit适用于需要获取返回值的场景有调用future get方法时,异常会抛出。如果不调用get方法,则无法获取。示例1:execute使用 private static void executeDemo() { Runna

2021-02-09 17:55:21 730

原创 Java 8 时间类介绍

Java 8 中新增了3个时间类:名称说明是否可变是否线程安全LocalDate用于表示日期否是LocalTime用于表示时间(时分秒)否是LocalDateTime用于表示日期+时间否是相关示例:LocalDate //获取当前日期 LocalDate today = LocalDate.now(); System.out.println("today : " + today); //获取昨天日期 L

2021-02-09 17:28:03 150

原创 Java 8 字符串和时间相互转换

Java 8 字符串和时间相互转换1. 常见日期转换符号说明符号说明备注y年Y本周所在的年如果日期所在的周跨年了,年份就会是第二年的,需要注意M月(month-of-year)d日(day-of-month)D年内的第几天(day-of-year)H小时值(24小时制)h小时值(12小时制)m分钟(minute-of-hour)s秒( second-of-minute)2. 字符串转时间

2021-02-08 09:48:10 5791

原创 Sentinel 学习笔记

Sentinel 学习笔记文章目录Sentinel 学习笔记1. 简介2. 依赖3. 限流(FlowRule)4. 熔断降级(DegradeRule)5. 限流和熔断降级的区别6. 参考资料1. 简介Sentinel是阿里巴巴自研的限流熔断系统。2. 依赖<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId&gt

2021-02-03 09:47:19 123

原创 spark gson 运行和编译版本冲突的处理办法

问题spark调用gson的方法,运行时抛出NoSuchMethod异常。本地编译无问题。查看依赖,程序本身并没有依赖老版本的gson。原因:spark自带gson,版本为2.2.4。spark任务启动时,会优先加载该版本。程序本身编译集成的gson版本不会被加载。如果代码中使用了更高版本的gson才有的方法和特性,就会抛出异常。解决方案方法1使用和spark版本相同的gson,即2.2.4。优点:不会再报该异常。缺点:无法使用新版本的gson,一些方法和特性都无法使

2021-01-05 20:05:08 533 1

原创 spring 声明性事务

事务全有全无的操作被称为事务。可以使用spring的声明性事务实现。

2017-03-19 19:51:58 519

原创 Effective Java学习笔记 第65条:不要忽略异常

空的catch块应该包含一条说明,解释为什么可以忽略这个异常。正确的处理异常能够彻底挽回失败。只要将异常传播给外界,至少会导致程序迅速地失败,从而保留了有助于调试该失败条件的信息。

2016-09-17 20:04:32 387

原创 Effective Java学习笔记 第64条:努力使失败保持原子性

失败原子性(failure atomic)失败的方法调用应该使对象保持在被调用之前的状态。

2016-09-17 20:00:54 713

原创 Effective Java学习笔记 第61条: 抛出与抽象相对应的异常

更高层的实现应该捕获低层的异常,同时抛出可以按照高层抽象进行解释的异常 使用异常链来让高层抽象包含低层的异常,便于以后排除问题。try { ...} catch(LowerLevelException e) { throw new HigherLevelException(message , e);}

2016-09-17 17:50:03 703

原创 Effective Java学习笔记 第60条: 优先使用标准的异常

常用的异常

2016-09-17 17:36:47 382

原创 Effective Java学习笔记: 第59条 避免不必要地使用受检的异常

受检异常强迫程序员处理异常条件。 过分使用受检异常会是API使用起来非常不方便。受检异常的使用场景:如果正确地使用API并不能阻止这种异常条件的产生;并且一旦产生异常,使用API的程序员可以立即采取有效的动作。如果这两个条件都成立,这种负担就是正当的。否则就适用于未受检的异常。

2016-09-17 17:29:45 625

原创 Effective Java学习笔记: 第58条 对可恢复的情况使用受检异常,对于编程错误使用运行时异常

java提供了三种可以抛出的结构: 1. 受检异常(checked exception) 2. 运行时异常(runtime exception) 3. 错误(error)运行时异常和错误都是不需要也不应该被捕获的可抛出结构。如果程序抛出运行时异常或者错误,说明出现了不可恢复的情形,继续执行下去有害无益。如果没有捕捉到这样的结构,将会导致当前线程停止,并出现适当的错误消息。

2016-09-17 17:16:50 789

原创 Effective Java学习笔记: 第57条只针对异常的情况才使用异常

摘要:异常应该只用于异常的情况下,它们永远不应该用于正常的控制流。 设计良好的API不应该强迫它的客户端为了正常的控制流而使用异常。如果对象有“状态相关的方法”。可以使用如下的两种方式来避免调用该方法时,抛出异常。状态测试方法使用方法来判断对象的“状态相关方法”是否可以被调用。 例如:Iterator接口的hasNext方法i.hasNext()可识别的返回值返回一个可以识别的值来表示当前的对象

2016-09-17 17:03:10 514

原创 Effective java学习笔记:第43条 返回0长度的数组或者集合,而不是null

1.目的避免因为返回null,导致调用端代码必须检查返回值是否为null2.方法2.1返回长度为0的数组2.2返回空集合

2016-09-17 16:29:35 507

原创 Spring获取properties文件中的属性

使用spring代码直接载入配置文件,获取属性信息使用@Value注解获取属性

2016-09-17 16:16:27 11444 3

原创 JAVA编程规范(整理)

1. 变量的命名1.1 常量命名:字母全部大写,单词以下划线连接 静态常量字段: static final 全部大写,单词用“_” 连接1.2 变量命名:普通变量:首字母小写,其它每个单词的首字母大写。名字应该简短而有特定的含义,简洁明了的向使用者展示其使用意图。约定变量:使用后即可抛弃的临时变量。 整形:i,j,k,m,n 字符型: c,d,e循环计数变量:i,j,k,count

2016-06-26 17:53:21 395

原创 byte[]作为Map key的问题

1. TreeMap:为TreeMap指定Comparator,这样就能够使用byte[]作为key了。2. HashMap:byte[]会按照地址生成hashcode,作为key的话需要注意

2016-06-25 10:31:51 3962

原创 c++ lamda表达式的注意事项

c++ lamda表达式使用的注意事项:延迟调用问题

2016-01-10 17:14:33 1474

原创 c++ 11 lamda表达式语法整理

C++11 lamda表达式语法整理基本语法[捕获列表] (参数列表) 可选项 -> 返回值类型 {函数实现;};捕获列表[] 不捕获变量,见f1,f2 [val] 见f3 [=] 按值捕获全部变量,见f4 [&] 按引用捕获全部变量,见f6 [this] 获取this指针,在函数内可以使用和修改类的成员变量,见Test [=,&val] 按值捕获除val外的所有变量,按引用捕获val,见

2016-01-10 11:52:58 1805

原创 C++11 auto关键字介绍

在C++11中,auto关键字负责提示编译器对变量的类型进行自动推导。使用auto关键字能够增加代码的灵活度,减少代码的书写量。本文介绍了auto关键的注意事项,使用场景和推导规则.

2015-12-27 16:09:16 5843

原创 boost::shared_ptr的线程安全

官方文档的说明shared_ptr objects offer the same level ofthread safety as built-in types. A shared_ptr instance can be "read"(accessed using only const operations) simultaneously by multiple threads.Differe

2015-12-06 16:48:10 3281 1

原创 C++ vector resize 和 reserve的区别

resize 调整的是vector的大小,改变的是vector的size;如果resize的调整值小于vector的size,则会删除多余的元素;如果大于size,则增加元素。reserve 调整的是vector的预分配的内存,改变的是vector的capacity。如果reserve的调整值大于vector的capacity,则会增加预分配的内存;如果小于capacity,则不做任何改变。

2015-12-01 20:12:28 1183

原创 使用C++ 11 实现阻塞队列

阻塞队列介绍阻塞队列主要用于线程和线程之间的通信。当队列为空时,从队列中获取元素的线程将会被挂起;当队列是满时,往队列里添加元素的线程将会挂起。本文使用C++ 11中的多线程库,实现了一个带有最大容量的阻塞队列。代码使用Visual C++ 2015编写。阻塞队列的实现代码 BlockQueue.hpp#pragma once#include #include #

2015-08-17 20:53:26 6600 4

原创 Sleeping Barber Window版本实现

介绍:题目来自于开源力量(www.osforce.cn) C语言进阶课程 具体如下:一间理发店有3位理发师,理发店有沙发,最多坐10人。3个理发师是三个线程,没有客人时,理发师睡觉。客人上门时,理发师醒过来服务客人。如果理发师都在忙,客人则坐到沙发上等待,如果沙发满了,客人直接离开。收到关门信号的时候,沙发上的客人直接离开,对于服务到一半的客人,理发师要帮他们剪完头发。

2015-07-18 13:55:50 625

原创 关于c++智能指针share_ptr的引用问题

做了个实验,弄明白了const share_ptr<T>的引用和share_ptr<const T>的引用的区别

2015-04-15 21:04:19 1163

空空如也

空空如也

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

TA关注的人

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