自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(88)
  • 问答 (7)
  • 收藏
  • 关注

原创 在Java中,什么是checked exception(即compile-time exception、编译时异常)?

有些exception必须被开发者在写代码时就处理(使用try catch或者throws),这种exception就叫checked exception,因为在编译代码时,编译器会检查(check)代码,假如开发者没有处理的话,编译是无法通过的。之所以check加“ed”用过去式,是因为在程序正常运行期间,这些异常已经被前期的编译器检查过了,开发者也处理过了,是过去式,所以用“checked”,常见的checked exception有IOException、SQLException等。

2025-05-05 16:49:03 338

原创 比HashTable更先进的ConcurrentHashMap及其多线程协助扩容机制

HashTable并发访问时效率太低了,所以才被淘汰了。如果发现节点类型是ForwardingNode,就明白了当前Map正在进行扩容操作,并且当前这个存储桶中的节点已经被完全迁移到新数组了,于是它就会暂时放弃读取数据的任务,先帮着一起迁移数据到新数组,等所有key-value都迁移到新数组后,就会继续执行读取数据的任务,只不过会从新数组中读取了。如果发现节点类型是Node类,那它就知道这个存储桶中的key-value还都没被迁移走呢,那它就可以无视正在进行的扩容操作,继续自顾自地执行访问数据的任务即可。

2025-05-04 11:13:06 333

原创 学了多年的synchronized,发现自己居然理解错了,哈哈哈

而轻量级锁(lightweight locking)阶段的时候,是借助CAS(compare and swap)操作来保证并发安全的,假设A线程想要调用increment()方法,B线程此时也想调用的话,A、B会先在各自的栈内存中新增一个锁记录(lock record),存储Counter对象的对象头(object header)信息,然后各自使用CAS操作将对象头指向其lock record,CAS可以保证只有一个线程可以操作成功,这个线程就相当于获取到了锁。

2025-05-03 02:11:24 422

原创 操作系统OS是如何指挥外围设备的呢?

每个设备厂商都会实现自己的驱动程序,但是不同的厂家实现驱动程序时会遵循业内规范,去实现这些标准化的接口、协议,比如存储设备领域的SCSI (Small Computer System Interface)。众所周知,OS的职责之一就是管理外围设备,比如常见的磁盘、硬盘、显示器、麦克风等,但并不是外围设备的一切都必须由OS管理,比如无线鼠标上的开关键,当你通过它关闭鼠标时,这个操作并不会经过OS,而是直接由鼠标内部的硬件处理,再比如显示屏上的状态指示灯的亮灭,这也是设备自己通过硬件实现的功能。

2025-05-01 21:35:32 314

原创 在上世纪50年代,为什么IBM研发的批处理操作系统让计算机用起来更方便?

如下图:这是一台于1955年发明的,还带有控制台的计算机,上面有很多按钮、旋钮,依赖它们控制计算机,毕竟那时候还没有操作系统,比如用它可以为即将执行的程序设置内存空间的起始地址。每个批处理程序会有对应的任务控制语句,上面指明了所需要的输入、输出设备的要求等参数,批处理操作系统读取这些语句后,就可以自动做上述准备工作啦,相当于初始化一下。而有了批处理操作系统后,上述所说的准备工作交给操作系统就OK啦,由这个操作系统中的“批处理监视器”batch monitor负责去做。此外还有关于输出设备的一些准备工作。

2025-04-30 19:58:36 250

原创 为什么使用ThreadLocal后要调用remove()方法呢?

虽然ThreadLocal的set()、get()方法也可能会扫描并释放掉这块内存,或者需要很长时间才能释放掉,可但是但可是,说不定在这段时间内,内存已经不够用了,出现OOM错误了,所以这种方式是不可靠的。为了避免内存泄露,使用玩ThreadLocal后,一定要调用它的remove()方法,这样才能保证用完这块entry所占用的内存后,尽早的释放掉内存,最大限度的提高内存的利用率。清理时,ThreadLocalMap中包含一个名字类似叫cleanup方法,只需要调用这个方法就可以啦。方法里面的操作就是将。

2025-04-28 22:24:32 291

原创 ThreadLocalMap中的弱引用WeakReference

因为假如你创建了一个ThreadLocal对象,并且使用了它,之后就不再使用它的话,理想情况是,这个对象应该被jvm的garbage collector当作垃圾清理掉,这样它所占用的内存就被释放了,可以被分配给其它对象了。但因为ThreadLocalMap中的key使用的是普通引用的话,jvm会认为这个对象还有用,因此不会清理这个对象,导致这个对象会一直占用着那块内存。弱引用就不一样了,如果只有弱引用存在的话,gc时就会无视这种类型的引用,果断清理这个对象。

2025-04-28 00:28:10 136

原创 Java ThreadLocal与内存泄漏

当我们在当前线程的 ThreadLocalMap 中存储一个值时,一旦这个值不再需要,释放它就变得至关重要。如果不这样做,那么该值所占用的内存将一直被分配,逐渐耗尽可用的内存池。这就好比一条漏水的铁管,随着时间的推移,越来越多的水(内存资源)被浪费掉,实在是令人惋惜。然而,在我的工作经历中出现了一个有趣的异常情况。尽管我从未明确编写过用于释放与 ThreadLocal 相关内存的代码,但我的程序却一直稳定运行,没有出现内存泄漏的问题。为什么这些程序能够避免这样一个常见的陷阱呢?

2025-04-26 19:35:26 253

原创 electron autoupdater报错Error unknown ENOENT: no such ...\resources\app-update.yml

electron autoupdater报错Error unknown ENOENT: no such ...\resources\app-update.yml

2022-06-30 18:45:00 1759

原创 electron-builder打包后没生成latest.yml文件问题

electron-builder打包后没生成latest.yml文件问题

2022-06-30 18:30:00 3367 7

原创 一个用于electron查看主进程报错信息的简单方法

一个用于electron查看主进程报错信息的简单方法

2022-06-29 21:30:00 1351

原创 Mysql8.0以上跳过初始密码登录

这篇方法独到多亏了这篇文章,解救了我这个困扰几个小时的难题

2022-04-28 10:30:50 1352

原创 Could not transfer artifact org.springframework.boot:spring-boot-maven-plugin:pom:2.1 ... code 501

在pom文件中引入。而pluginRepositories中的内容详见以下链接:https://blog.csdn.net/weixin_45865428/article/details/109270484

2021-12-30 13:57:46 2071

原创 all elements are null问题

所涉及项目类型:springboot mybatisplus在service层一个方法返回值设置为:JSONObject。其中这个jsonobject中的一个键值对,是<String,List>类型。对,就是这个list类型的value,debug时提示“all elements are null”其他答案尝试了,无效。诸如“驼峰命名”云云。解决办法:自己写了个实体类(或者说VO)把返回值类型从JSONObject改为那个实体类,而list变为这个对象的一个属性我也不知道为啥?哪

2021-11-17 17:37:38 928

原创 jsapi前端微信支付完成后没有执行回调函数

关键字:微信支付、直连模式、公众号开发正文:起初我是这么写的,一直无法触发回调函数:onBridgeReady(payParam){ WeixinJSBridge.invoke('getBrandWCPayRequest',payParam, function(res) => { this.$message("进入支付回调") });后来看见别的博客说,将回调函数改为箭头函数:onBridgeReady(payParam){

2021-11-04 10:23:17 1722

原创 微信支付Caused by: java.security.InvalidKeyException: Illegal key size(不用去oracle官网)

这个问题,别的帖子都在说,要先去oracle官网下载jar包可是oracle注册账号需要填写大量的信息,甚是麻烦因此有个好心人把jar把放到了百度网盘里,供大家下载,甚为方便。下面是其博客链接:https://blog.52nyg.com/2020/09/567...

2021-10-26 13:53:44 239

原创 not found ffprobe

本人window系统解决办法就是:去官网安装ffmpeg工具,并设置环境变量。重启vscode(获取系统中环境变量Path的最新值)

2021-09-23 13:40:36 381

原创 react事件绑定

react事件绑定中,应使用箭头函数。错误示范:如下所示,如果这样写,将事与愿违。本想当点击Button时再触发doSth方法,但是这样写造成,当程序渲染此按钮时,就会立即执行doSth方法doSth(){}<Button onClick={doSth()} ></Button>正确写法1:doSth(){}<Button onClick={()=>doSth()} ></Button>正确写法2:doSth=()=>{

2021-09-13 13:56:56 165

原创 require引入本地视频导致electron白屏问题,解决过程

仅供参考,以下内容为笔者解决问题的过程记录技术栈:electron、react、nodeJs需要实现的功能:存储聊天记录中的图片、视频到本地;当用户点击时,展示大图or播放视频每次存储本地文件后,代码都会重新编译加载一次。如果真是写入文件的方式有问题,那为什么之前发送图片的时候是好好的呢?三个写入方式都没有问题,关键是看写入的内容,倘若是hello.txt那就没事,若是buffer格式就不行,就会导致重新编译。stream.write写hello.txt也不行=》stream写入方式不行,尤其是

2021-09-10 16:51:33 523

原创 http.createServer is not a function

在我的系统里,如果这样引入,http模块,就报题目那个错// server.jsconst http = require('http')const fs = require('fs')http.createServer(function(__req, __res){ fs.createReadStream('./asset/24783431-1-80.mp4').pipe(__res)}).listen(3000,function(){ console.log('server is

2021-09-10 11:46:10 2075

原创 vscode快捷键

输入log按住回车键,就直接键入console.log(),类似的还有console.error()莫非这就是传说中的敏捷开发的吗,,嘻嘻

2021-08-31 17:51:17 97

原创 TypeError: fs.existsSync is not a function

react中没想到竟然有一个小意外引起的,不知道是在什么时候,有一个react组件竟然导入了下面这个模块,关键是app还没有被引用。23 import { app } from 'electron';...55 export default class realNetMeeting extends Component {控制台提示是:报错源于第55行。我算是看明白了,合着即便是第23行import引起的错误,提示的时候也偏偏提示是,55行,组件声明时的错。害得我以为真的是55行有什么错误。定

2021-08-27 15:32:19 1286

原创 react事件绑定传递多个参数语法

checkResult(param,event){ // 如果证据存在 if(param) console.log("证据确凿,mangoTV钱某实锤!") } //event 代指,点击事件本身<div onClick={(event)=>this.checkResult(param,event)} ></div>...

2021-08-25 13:47:40 483

原创 降低electron版本简单方式

直接去node_module中找到electron包,删除。然后再重新安装低版本的electron

2021-08-19 13:14:55 2260

原创 react中使用video标签显示本地视频不生效问题

src中直接输入字符串视频地址不能播放,但是通过import的导入却是可以的。但是import只能写在文件最顶端,所以就想到使用require。没想到还真成功了!感谢自己的坚持!let source = require('../assets/WeChatvideo.mp4');<video id="playChatVideo" width="320" height="240" controls> <source src={source} type="video/mp4">

2021-08-16 15:30:28 4176 4

原创 浅析底层基础知识于个人职业发展的意义

目前我应该聚焦基础知识!即使是回答问题,也应该关注基础底层问题,而不是上层的问题。倘若想要参与开源项目,那也要参与偏向于基础底层的开源项目…总之现阶段,务必要从各种角度、以各种办法夯实基础,如果说有什么捷径的话,那夯实基础就是捷径!实体书也买了,不能因为它晦涩难懂,就随便翻翻,然后浅尝且止,因噎废食的这种怠惰心态是要不得的。我知道,原理性的东西很难啃,是一块高地,但是在难啃,也耗不过我的时间。我就跟它死磕下去,慢慢的就把书读薄了,最终化为自己的东西,融会贯通。现如今的计算机世界里,上层应用技术五花

2021-07-30 17:58:13 121

原创 越是不可思议的bug,越容易!

从类别上,bug可以被分为技术层面的bug、马虎层面bug。我之所以说越匪夷所思,越简单。就是因为这种bug往往是后者。遇到这种情况,大家一定稍安勿躁,因为我们能确定它大概率是因为少了一个分号等之类的低级错误所致。并不是技术难题。因此我们就不用怕,放轻松大胆的调试就好了。千万不要为此生气,作为程序员,遇到这种情况还是不少滴,要是都生气的 话,那可真是应了那句话“人傻钱多 死的早”。保持耐心,调整心态,一会儿就能诊断出问题出在哪里了 !谨以此文,与诸猿共勉!我是哪吒,一名立志干到退休的程序员。.

2021-07-14 15:18:26 127

原创 ‘TEduBoard‘ is not defined集成腾讯云互动白板时报错

以下按照腾讯官方文档集成sdk时,即报标题中的错误 var initParams = { id: "sketch", // dom节点id classId: 1, // 课堂 ID,32位整型,取值范围[1, 4294967294] sdkAppId: 1400000, // 整数 userId: "wu", // 字符串 userSig:

2021-07-13 11:49:37 275

原创 class ChatContent extends Component继承之后仍然无法使用state

this.setState({ groupMembers : tagets })理论上赋值后,groupMembers 应该有数据的,经此操作后,没想到groupMembers 依然是空值,加之本class类没有render函数guess:可能不是一个标准意义上的react组件,所以使用state也是不生效的。大家觉得是为什么呢?期待大佬评论...

2021-07-08 12:02:28 202

原创 Attempted import error: ‘common‘ does not contain a default export (imported as ‘locationHref‘).

错误的导入方式:import locationHref from ‘common’正确的导入方式:import {locationHref} from ‘common’原因:此问题的百度翻译:“尝试导入错误:“common”不包含默认导出(作为“locationHref”导入)”/** * 浏览器跳转,携带baseName * @param href * @returns {string|*} */export function locationHref(href) { if

2021-07-01 12:03:07 1429

原创 react中箭头函数与trtcSDK监听事件绑定

这种写法,将会把onUserSubStreamAvailable函数的执行结果,作为trtcCloud.on方法的第二个参数。 trtcCloud.on('onUserSubStreamAvailable', this.onUserSubStreamAvailable(e));其实其第二个函数应该只是一个函数,正解如下: trtcCloud.on('onUserSubStreamAvailable', this.onUserSubStreamAvailable)

2021-06-30 13:56:46 253

原创 postman使用

post请求如何在postman中测试呢?让我们一起来探索吧

2021-06-28 17:42:34 106

原创 vue axios 异步改同步请求(获得数据后再执行下面的代码)

getInfoFn: async function(){ var that = this; await that.$api.scheduleApi.queryScheduleInfoFn( {caseNo: that.basicInfo.caseNo}).then(function (response) { if(response.data.code == '200') { var result = response.data.result;

2021-06-28 13:09:53 2084 2

原创 GC之引用计数

就好比写代码时删除一个方法,那还在调用这个方法的部分一定会报错,垃圾回收也是一样的道理,必须得等到没有被引用时,对象才能被回收掉。(极个别的循环引用除外)

2021-06-25 10:05:52 126

原创 react组件中全局变量如何设置

import React from 'react'//此变量写在声明组件之前,不为组件内部的变量,即使组件销毁,该变量依然存在!//类似java中的static修饰的静态变量let num = 0export default class A extends React.PureComponent { componentDidMount() { console.log(temp) } render() { return ( <div>A</d

2021-06-24 18:15:53 6128 6

原创 TypeError: trtc.NodeRTCCloud is not a constructor

错误的导入方式//1、import TRTCCloud from 'trtc-electron-sdk'//2、const TRTCCloud =require('trtc-electron-sdk').default;正确的导入方式const TRTCCloud = window.require('trtc-electron-sdk').default;

2021-06-22 16:02:06 400

原创 Module not found: Can‘t resolve ‘sdk/service...in ‘D:...\src\pages

[0] Module not found: Can't resolve 'sdk/service/user/SendMediaService.js' in 'D:\Project\SvnLocal\cso-electron\electron-react-quick-start\src\pages'```这就是报错,纳闷明明已经在package.json里配置sdk对应的 相对路径,他怎么偏偏从src/page下寻找呢?不过问题最后解决了,因为正确的路径是sdk/service/chat而不是sdk/se

2021-06-18 10:26:24 427

原创 Error: Element type is invalid: expected a string (for built-in components) or a class/function (for

Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.出现这个问题因为,父组件想引用自组件,这个标签。但是导出的是一个JavaScript类const self = new SendImage();export default self正确的导出子组件export def

2021-06-17 16:23:30 1379

原创 vue中elementui select标签选中后不生效问题

select标签选中后不生效,此时可以在标签属性中加上,@change事。比如我这里写的是。(ps注意是change事件,不要写成@focus事件,虽然感觉可以行得通,但事实上却不起作用)@change=“chooseDTChange”chooseDTChange(){ this.$forceUpdate() }...

2021-06-01 14:17:53 2877

原创 js请求后端前端代码会不会阻塞呢(等待后端返回数据后再往下执行)

getList() { this.listLoading = true this.getDepartmentTree() sysApi.getPageList(this.listQuery).then(response => { debugger let records = response.data.records this.list = [] // 此法效率比较低

2021-05-07 14:11:21 1158

空空如也

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

TA关注的人

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