- 博客(86)
- 资源 (3)
- 收藏
- 关注
原创 nvm安装node找不到版本问题(只有iojs)
很久没有使用nvm新安装node版本了,今天在切换时执行要执行很久,然后返回暂无当前版本的错误信息,那就执行看一下远程的版本,发现返回的只有iojs的版本,没有node版本,所以一直安装失败。
2024-08-23 16:57:59
215
原创 如何使用cornerstone3D渲染3D影像
在日常开发中经常会遇到除了渲染MPR视图外,还需要渲染3D扫描影像,本文从具体的实现、viewport type解读、场景预设等方面来介绍3D具体的实现及涉及到的相关概念。
2024-08-23 11:53:25
594
原创 Cornerstone渲染CT+PET融合影像及相关应用场景
本文从基础概念知识开始,渐进式介绍了渲染融合影像的实现步骤、数据获取及处理、colorMap颜色映射方案的实现与修改、多Volume修改窗宽窗位的方案等实现。可以涵盖在日常开发中遇到的融合渲染、标量值显示、透明度切换、窗宽窗位修改等多种需求场景。
2024-08-21 16:29:23
1093
原创 Cornerstone加载本地Dicom文件第二弹 - Blob篇
由此,一个点击上传本地文件的Demo演示就结束了,主要知识点为对象管理本地上传的文件并可以返回ImageId可以根据不同的请求规则调用不同的请求方式,用于加载处理文件clone到本地后直接运行 npm run serve 即可启动,持续更新,欢迎star~
2024-08-05 22:55:18
787
原创 Cornerstone3D 演示库恢复更新啦~
从0上手Cornerstone3D系列的git库终于有时间更新优化了一版。主要更新以下内容:✨ vue2更新至vue3版本,代码迁移为vue3组合式写法✨ UI风格升级,新增交互提示✨ 修复页面切换报错问题✨ …
2024-07-24 14:42:13
466
原创 如何使用Cornerstone加载本地的dicom文件并渲染
往往我们本地有一组Dicom文件或者后台有一组Dicom文件,我们并不确定能否使用Cornerstone渲染它们。本文将围绕本地加载渲染Dicom文件的简单实现来展开
2024-07-19 15:41:21
348
原创 记录vite项目中Cornerstone的兼容问题(持续更新)
在Vite项目中使用Cornerstone3D库,记录在使用的过程中遇到的各种兼容性问题及处理方式,由项目进展程度持续更新
2024-07-12 17:19:48
766
原创 Cornerstone3D导致浏览器崩溃的踩坑记录
WebGL: CONTEXT_LOST_WEBGL: Context: context lost;Cornerstone3D渲染Volume时导致windows 浏览器页面崩溃的处理方案及问题复盘记录
2024-07-12 15:22:46
1210
原创 一文了解Cornerstone3D中窗宽窗位的3种设置场景及原理
在使用Cornerstone3D渲染影像时,有一个常用功能“设置窗宽窗位(windowWidth&windowLevel)”,通过精确调整窗宽窗位,医生能够更清晰地区分各种组织,如区别软组织、骨骼、脑组织等。本文将围绕窗宽窗位的基础概念、如何使用工具调整及工具调整的实现原理、js动态调整、MPR视图下多视图同步调整等展开。
2024-03-11 15:28:05
1469
原创 【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之同步器
同步器(Synchronizers)可以使多个视图同步响应同一个工具的操作,例如我们在MPR视图下,同步操作三个视图的缩放程度、windowLevel等等
2024-02-05 22:29:52
1102
原创 【从0上手Cornerstone3D】如何使用CornerstoneTools中的工具之工具介绍
ToolGroup是Cornerstone3D中的一个新概念。ToolGroup的目标是定义一种简单的方法,以每个视口方式定义工具的行为。除此之外,绑定了同一个TooGroup的Viewport可以共享工具组相同的配置、模式及组内的工具。
2024-02-04 17:13:44
1895
原创 【图解面试】深入解析数据类型转换
将值从一种数据类型转换到另一种数据类型通常称为数据类型转换。在面试过程中大多数都是以代码输出题出现,但是要了解到具体的转换规则,彻底搞懂底层原理,才能应对变来变去的值类型~
2024-02-01 17:34:47
1116
原创 一文(10图)了解Cornerstone3D核心概念(万字总结附导图)
一文+10图了解Cornerstone3D核心概念:简介、ImageId及ImageLoader、Volume及VolumeLoader、RenderingEngine、Viewport等核心概念
2024-01-22 14:30:12
2341
1
原创 【从0上手cornerstone3D】如何加载nifti格式的文件
该系列为从浅入深Cornerstone系列,包括cornerstone核心概念、基础使用、常见案例、工具使用、运行原理、源码解读等等,欢迎Fork演示Github:https://github.com/jianyaoo/vue-cornerstone-demo,一起讨论更多Cornerstone相关实践。
2024-01-17 18:18:38
905
3
原创 【从0上手cornerstone3D】核心概念解析(下)
Cornerstone3D核心概念解析下篇。该系列为从浅入深Cornerstone系列,包括cornerstone核心概念、基础使用、常见案例、工具使用、运行原理、源码解读等等。
2024-01-15 20:10:31
756
1
原创 【从0上手cornerstone3D】如何渲染一个基础的Dicom文件(含演示)
该系列为从浅入深Cornerstone系列,包括cornerstone核心概念、基础使用、常见案例、工具使用、运行原理、源码解读等等,欢迎Fork演示Github:https://github.com/jianyaoo/vue-cornerstone-demo,一起讨论更多Cornerstone相关实践。
2024-01-12 14:46:30
2156
8
原创 【图解面试】JS系列 - 如何回答数据类型相关问题(上)
图解面试,对面试题进行分解,以图例的形式展现需要回答的要点及知识点,并对知识点进行总结给出面试中如何有层次、有逻辑的回答相关问题。
2024-01-10 20:21:37
1112
1
原创 业务项目中Echarts图表组件的封装实践方案
背景:如果我们的项目是一个可视化类/营销看板类/大屏展示类业务项目,不可避免的会使用到各种图表展示。那在一个项目中如何封装一个图表组件既能够快速复用、UI统一,又可以灵活扩充Echarts的各种复杂配置项配置就变得极为重要。
2024-01-05 18:02:32
811
原创 Echarts标记非线图(轴)上点的两种实践方案
如何在线图上标记一个非轴线上的点,两种实践方案:双数值轴线图+markPoint、SeriesLine+SeriesCustom
2024-01-03 21:51:30
1286
1
原创 不同场景下的多种文件下载方案实践
不同场景下的多种文件下载方案:a标签下载、blob下载、FileSaver第三方库下载。不同方案分别适配何种场景,如何在实际开发中实践
2023-12-22 16:08:43
1036
原创 常见面试题 - HTTP缓存策略
一、缓存策略1 - 缓存策略的分类根据是否需要向服务器端发起请求,主要分为两大类强缓存:客户端获取一个资源后,服务器端会给这个资源一个缓存时间,在资源的有效缓存时间内,下次请求直接使用缓存,如果不在缓存时间内,则执行比较缓存策略。协商缓存:客户端使用一个资源时,先把资源的缓存数据标识和最后更新时间发送给服务器,由服务器进行校验,检验成功后,返回304状态码标识当前资源可以直接使用缓存资源。2 - 缓存开始时间缓存策略都是从第二次请求开始第一次请求资源:服务器端返回资源,并在请求头中添加使
2021-09-10 22:26:34
1045
原创 面试题 - 事件循环机制
一、浏览器JS异步执行的原理一般常说js是一门单线程语言,那为什么可以异步执行且不发生阻塞呢?常说的JS是单线程语言,是因为执行JS的引擎是单线程的,而浏览器本身是多线程的浏览器主要含有:js 执行线程定时器线程http 请求线程事件触发线程GUI 线程等异步请求的真正执行者是浏览器的其他线程js 引擎只是执行了异步操作成功了之后的回调函数二、事件循环机制1 - 执行栈和任务队列(1)执行栈是什么用于按执行顺序存放同步代码按序执行,执行完毕后弹出执行栈如果在执
2021-08-05 10:55:14
4716
原创 一文了解Vue全家桶之Vue-router
一、安装方式一: 通过JavaScript 或者 CDN引入https://unpkg.com/vue-router/dist/vue-router.js方式二: 模块化安装:npm install vue-router注意:如果在模块化工程中使用vue,必须使用Vue.use()来明确的安装路由功能import Vue from 'vue'import VueRouter from 'vue-router'Vue.use(VueRouter)方式三: 基于cli方式
2021-08-03 19:26:51
663
原创 一文了解Vue全家桶之Vuex
一、vuex 状态管理模式1 - 普通的数据流管理单项数据流流向2 - vuex 状态管理模式集中式存储管理应用的所有组件的状态以相应的规则保证状态以一种可预测的方式发生变化二、为什么要使用vuex当多个组件共享一个状态时,方便状态的管理当跨层级组件之间通信时,方便数据处理三、核心概念1 - State(1)state 是什么?是项目中唯一的一个状态树包含了项目中所有组件的共享状态值(2)state有哪些特性?一个项目中只有一个store实例和 vue实例
2021-08-02 21:17:19
245
原创 一文全面了解Vue组件
重点说明:当前笔记内容侧重点为各个知识点的应用及需要注意的地方,而不是每个知识点的概念。概念相关请查看官网:https://cn.vuejs.org/v2/guide/installation.html vue入门教程。代码及xmind源文件Gitee:https://gitee.com/zhiyaoyun/vue-project代码下载地址:https://gitee.com/zhiyaoyun/vue-project.git一、计算属性和侦听器1 - 计算属性目的处理模板中需要复杂.
2021-07-29 16:28:45
572
原创 全面了解Vue基础知识(实例、指令)
一、vue 应用的组成1 - vue 实例一个vue应用由一个根实例及多个嵌套的、可选的组件树构成<div id="app"> {{message}} <todo-list/></div><script> // 组件 Vue.component('todo-list', { data() { return { message: "this is a component" }
2021-07-27 17:32:23
757
原创 面试题 - 数组API及常见排序算法
一、构造数组1 - Array创建一个数组:new Array(item1,item2…)字面量创建一个数组:let array = []2 - 转换数组Array.ofArray.fromlet arr3 = Array.of("a","b");let arr4 = Array.of(3); // 把传进来的值作为数组的第一项let arr5 = Array.from({0: 'a', 1: 'b', 2:'c', length: 3});console.log(arr3)
2021-07-22 20:50:17
415
1
原创 面试题 - 手写JSON.stringify
一、JSON.stringify方法的基本使用作用:将对象转换成JSON字符串的格式,配合JSON.parse可实现基础版的对象深拷贝语法:JSON.stringify(value[, replacer [, space]])let myObj1 = { name:'Tim', age:10, friends:[1,2,3], sex:'boy'}// 第一个参数:必须,需要序列化的对象let objToString1 = JSON.stringify(myObj1);c
2021-07-21 17:58:17
832
原创 面试题 - 七种前端实现继承的方式
一、常见的几种继承方式原型链继承构造函数继承组合继承原型式继承寄生继承寄生组合继承extends 继承二、常见继承方式的优缺点1 - 原型链继承实现:手动绑定父类对象为子类的原型链,使用new关键字实例化子类关键:子类和父类都是构造函数,不是具体的字面量表达式// 父类构造函数function Parent1(){ this.name='parent1'; this.friends = ['Tom','Joly','Tim'];}// 子类构造函数functi
2021-07-20 20:43:50
1026
原创 JS核心知识点 - 异步处理
一、异步:现在与将来1 - 异步机制什么是异步机制a. 对于一段js代码,主要分为两块,一块是现在执行,一块是将来执行。b. 一旦把一部分代码包装成一个函数,并指定它在响应某个事件时执行,那就形成了一个将来时代码块,同时也引入了异步机制。2 - 事件循环机制什么是事件循环机制a. js 引擎本身做的事情是:在需要的时候,在给定的任意时间段执行单个代码块。即 js 引擎本身并没有时间概念,只是按需执行js的代码片段。b. js 引擎运行的宿主环境都提供了一种机制:能够处理程序中多个块的
2021-07-19 21:28:11
376
原创 面试题 - 原型及原型链
一. [[protoType]]1 - [[prototype]]属性什么是[[Prototype]]属性JavaScript中每一个对象都有一个内置的[[prototype]]属性,这个属性指向对其他对象的引用。大多数情况下这个对象的值都不为空。原型链的尽头 - Object.prototype当执行 [[Get]] 操作时,如果当前对象没有查找的属性,则会继续向上查找原型链,直到查找到原型链的尽头 Object.prototype,如果依旧没有则返回 undefined 。所以自定义的
2021-07-12 20:42:30
1147
1
原创 面试题 - 数据类型之对象
一、对象1. 语法对象可以通过两种方式进行定义:字面量的方式let myObj = { name:'joly'}构造形式let myObj = new Object();myObj.name = 'joly'两者声明出来的对象是一致的,唯一的区别是:字面量可以一次性添加多个属性,而构造函数的形式要单独添加。2. 类型对象是JavaScript中的一种基本数据类型,在对象中又有一些子类型:ArrayFunctionDate…内置对象内置对象中 Strin
2021-07-07 09:58:17
221
原创 如何控制浏览器Url显示、监听Url变化
MDN链接:https://developer.mozilla.org/zh-CN/docs/Web/API/Window/popstate_event。MDN链接:https://developer.mozilla.org/zh-CN/docs/Web/API/History/pushState。在点击搜索时,将搜索条件添加到浏览器的URL中,并向历史记录中新增一条数据。基本是一致的,都会在当前浏览器会话中新增一条历史记录。作用:当活动的历史记录发生变化时,将会触发。涉及知识点:浏览器事件。
2021-03-10 15:27:59
1673
原创 如何在Echarts世界地图中使用中文地名
Echarts地图中英文映射需求背景在Echarts官网下载的世界地图注册文件为英文的国家名称,为提升用户体验修改为中文的国家名称及中文的数据提示。实现思路1 - 从官网下载world.json地图注册文件2 - 将注册文件中的英文名映射为中文名3 - 将映射后的注册文件进行地图注册具体实现1 - 获取world.json文件2 - 引入映射文件(根据要显示中文/英文,映入不同的映射文件)说明:目前Echarts地图注册文件支持215个国家的显示。import {mapZHName
2021-03-10 15:17:00
3881
原创 Vue项目最佳实践
Vue项目最佳实践文章目录Vue项目最佳实践项目配置策略1 - 基本配置2 - `webpack`相关配置3 - 环境变量和模式相关配置权限管理1 - 路由级权限管理2 - 细粒度的权限管理导航菜单请求 && 数据1 - 统一配置请求库2 - 请求拦截和响应拦截3 - 数据mock4 - 请求代理参考资料项目配置策略1 - 基本配置配置上下文信息:publicPath部署应用包时的基本 URL。默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 ht
2020-12-16 17:17:43
759
原创 【进阶篇】前端学习路线
一、基础知识CSS: 目标:常见页面布局(flex等)、CSS3 新特性、 参考书籍: CSS 世界 精通 CSS JS 目标: JS的原始类型 JS中的引用类型 迭代器和生成器 面向对象编程 和 函数式编程 代理 和 反射 ( Proxy 和 Reflect ) 函数表达式:闭包、this指针、模块模式、箭头函数等 => 函数式编程 异步编程 BOM 和 DOM Canvas 了解常用事件 了解常用A.
2020-09-28 19:28:10
1169
EventBus.rar
2020-06-06
shooping-cart.zip
2020-06-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人