- 博客(13)
- 收藏
- 关注
原创 为什么hashtable的读取加锁 currenthashmap读取可以不加锁
hashtable 是通过synchronized 锁的方式 保证可见性currenthashmap 是通过 volite 关键字保证可见性
2022-05-30 08:40:15 597
原创 volatile 可见_java 可见性简单总结
Java 可见性内存模型主存所有线程都可以访问本地内存每个线程私有的内存- java 的所有变量都存储在主内存中- 每个线程有自己独的工作内存,保存了该线程使用到的变量副本,是对主内存中变量的一份拷贝- 每个线程不能访问其他线程的工作内存,线程间变量传递需要通过主内存来完成- 每个线程不能直接操作主存,只能把主存的内容拷贝到本地内存后再做操作(这是线程不安全的本质),然后写回主存可见性的方法volatile这种方式可以保证每次取数直接从主存取它只能保证内存
2022-05-26 12:30:25 269
原创 在计算机中1BYTE无符号整数 有符号整数取值范围 是什么意思
意为在二进制的条件下,1Byte=8bit,1BYTE有符号取值范围是负1111111到正1111111,在有符号规则下,第一位0和1代表数字的正负。1Byte=8bit,二进制下,无符号整数取值范围是00000000-11111111,有符号取值范围是负1111111到正1111111,因为在有符号规则下,第一位0和1代表数字的正负,换成十进制就是无符号取值范围是0~255,有符号取值为-127~127。例如 java byte 可以写入ByteBuf buf = Unpooled.buff
2022-05-13 14:27:51 1780
原创 字节序 高低地址和高低位及java modbus 字节序中的理解
先理解几个概念1字节序多个字节 之间排列的顺序2字节高低位例如16进制 0x12345678 占用了4个字节 那么1234就是高位 5678就是低位3内存高低地址数据存在在内存中时 需要先划分分出一个区域给数据保存栈底 (高地址)----------buf[3]buf[2]buf[1]buf[0]----------栈顶 (低地址)那么数据存储就会有多种方式保存最常用的就是 大端和小端小端a) Little-Endian就是低位字节排放在内存的低地址
2022-05-13 13:05:13 3900
原创 Java中八种基本数据类型占用字节空间总结
一、Java四大数据类型分类1、整型byte 、short 、int 、long2、浮点型float 、 double3、字符型char4、布尔型boolean二、八种基本数据类型三、数据类型详细介绍整型(byte、short、int、long)虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围可不一样。byte 的取值范围:-128~127(-2的7次方到2的7次方-1)short 的取值范围:-32768~327
2022-05-12 10:52:41 2540
原创 java 的整数类型都占几个字节
类型 占用存储空间 表数大小 byte 1字节 -128-127 short 2字节 -215~215-1 int 4字节 -231~231-1 long 8字节 -263~263-1
2022-05-12 10:42:33 609 1
原创 @Transactional 4个使用心得小记
1@Transactional 不能保证线程安全 但是 多线程执行同一个 @Transactional修饰的方法 如果一个线程 保存 数据但是未提交 会阻塞另个线程的数据 保存 @Override @Transactional public int testTransactional(String ip, String threadName) { DeviceInfo deviceInfo = deviceInfoMapper.selectdevice...
2022-05-10 18:23:45 1169
原创 java 在linu环境下使用 libopencv_java343.so
问题:编译安装出现 不能正确检测javaHome 无法生成 so文件的情况 网上很多解决办法多半不好用sudo apt-get install cmakesudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-devapt install ant#安装jdk我使用的apt安装
2022-05-10 14:59:21 758
原创 充血模型 贫血模型
UserBo 是一个纯粹的数据结构,只包含数据,不包含任何业务 逻辑。业务逻辑集中在 UserService 中。我们通过 UserService 来操作 UserBo。换句话 说,Service 层的数据和业务逻辑,被分割为 BO 和 Service 两个类中。像 UserBo 这样, 只包含数据,不包含业务逻辑的类,就叫作贫血模型(Anemic Domain Model)。同 理,UserEntity、UserVo 都是基于贫血模型设计的。这种贫血模型将数据与操作分离,破 坏了面向对
2022-03-01 13:14:42 79
原创 “基于接口而非实现编程”的原则
1. 函数的命名不能暴露任何实现细节。比如,前面提到的 uploadToAliyun() 就不符合要 求,应该改为去掉 aliyun 这样的字眼,改为更加抽象的命名方式,比如:upload()。 2. 封装具体的实现细节。比如,跟阿里云相关的特殊上传(或下载)流程不应该暴露给调 用者。我们对上传(或下载)流程进行封装,对外提供一个包裹所有上传(或下载)细我们按照这个思路,把代码重构一下。重构后的代码如下所示: 节的方法,给调用者使用。 为实现类定义抽象的接口。具体的实现类都依赖统一的接口
2022-03-01 10:27:38 488
原创 关于异常回滚的一点研究
1单表操作不加Transactional 会开启事务吗会开启事务隐式提交2 Transactional默认只回滚 运行时异常 不回滚检测异常 如果想要回滚检测异常需要 @Transactional(rollbackFor =Exception.class )
2022-02-22 16:35:09 177
原创 log4j.properties配置文件详解
Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger = [ level ] , appenderName , appenderName1 , …#配置日志信息输出目的地Appender及Appender选项log4
2022-02-21 16:49:40 7826
原创 解决 vue-style-loadercss-loader?{“sourceMap“:true}../node_modules/vue-loader/lib/style-compile
npm install node-sass --save-dev //安装node-sassnpm install sass-loader --save-dev //安装sass-loadernpm install style-loader --save-dev //安装style-loader发现还是不行啊执行npm run build 发现真正报错的原因是: Can't resolve 'sass-resources-loader' in '/opt/dev/union_front/sr
2022-02-11 11:16:13 838
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人