<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chs_502的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/chs_502</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; chs_502]]></copyright><item><title><![CDATA[基于三维医学影像数据的CAM可视化——PyTorch实现]]></title><link>https://blog.csdn.net/chs_502/article/details/128651807</link><guid>https://blog.csdn.net/chs_502/article/details/128651807</guid><author>chs_502</author><pubDate>Wed, 11 Jan 2023 22:14:59 +0800</pubDate><description><![CDATA[基于三维医学影像数据的CAM可视化——PyTorch实现]]></description><category></category></item><item><title><![CDATA[MICCAI2021论文合集]]></title><link>https://blog.csdn.net/chs_502/article/details/120527056</link><guid>https://blog.csdn.net/chs_502/article/details/120527056</guid><author>chs_502</author><pubDate>Tue, 28 Sep 2021 13:12:59 +0800</pubDate><description><![CDATA[2021年的MICCAI论文合集来了！！！

在官网下完了以下合集：



百度网盘链接：

链接：https://pan.baidu.com/s/1xJQ1uzVinD0t-BBmLs-V3Q
提取码：xnyd

如果有人搞Alzheimer disease classification的可以一起交流！！！
...]]></description><category></category></item><item><title><![CDATA[MRI图像切片（nii格式转2D）]]></title><link>https://blog.csdn.net/chs_502/article/details/114547207</link><guid>https://blog.csdn.net/chs_502/article/details/114547207</guid><author>chs_502</author><pubDate>Mon, 08 Mar 2021 20:15:54 +0800</pubDate><description><![CDATA[代码参考：将一个MRI（nii格式）数据进行切片

想要批量抽取MRI数据的几个切片，借鉴了上述代码的Python版本，原始代码抽取了全部切片。本次实验主要是抽取sMRI的横断面（axial）方向的其中30张切片，数量根据自己需求可自行设置。


import scipy, numpy, shutil, os, nibabel
import sys, getopt
import imageio

def niito2D(filepath):
    inputfiles = os.listdir(filep]]></description><category></category></item><item><title><![CDATA[MRI图像预处理流程]]></title><link>https://blog.csdn.net/chs_502/article/details/110941922</link><guid>https://blog.csdn.net/chs_502/article/details/110941922</guid><author>chs_502</author><pubDate>Wed, 09 Dec 2020 22:03:29 +0800</pubDate><description><![CDATA[最近在学习医学影像处理，主要是基于sMRI，记录一下一些预处理过程，希望对一些人有帮助。

首先是ACPC校准：

前连合(anterior commissure, AC)后缘中点 至 后连合(posterior commissure, PC)前缘中点 的连线，又称AC-PC线。脑立体定向手术和X-刀、Y-刀治疗多以此线为准，故脑立体定位断层解剖研究多以此线为基线。

选用的MATLAB下的SPM12工具，在网上找的批处理代码：参考文章——ACPC

看一下效果，原图为：



原始数据

ACPC校准：
]]></description><category></category></item><item><title><![CDATA[14. 最长公共前缀]]></title><link>https://blog.csdn.net/chs_502/article/details/105494099</link><guid>https://blog.csdn.net/chs_502/article/details/105494099</guid><author>chs_502</author><pubDate>Mon, 13 Apr 2020 17:53:22 +0800</pubDate><description><![CDATA[题目地址：14. 最长公共前缀

本来的最初的想法是找出最短的字符串然后暴力匹配出最长的公共前缀，但一直报越界的问题，也不知道哪里的问题，这里看了官方的答案，用到了两个方法，indexOf和substring，还是对于一些方法不熟悉，没想到……


class Solution {
    public String longestCommonPrefix(String[] strs) {
   ...]]></description><category></category></item><item><title><![CDATA[17. 电话号码的字母组合]]></title><link>https://blog.csdn.net/chs_502/article/details/105472661</link><guid>https://blog.csdn.net/chs_502/article/details/105472661</guid><author>chs_502</author><pubDate>Sun, 12 Apr 2020 18:02:32 +0800</pubDate><description><![CDATA[题目地址：17. 电话号码的字母组合

这题有点难到我，每次遇到一个数字就判断一下循环？显然过于冗余，那就想到将每个数字对应的字母放进集合，想到键值对存储，但一个键对应的值又不止一个，那就用一个数组存储，之后再循环取值。用到了递归：


import java.util.ArrayList;
import java.util.List;

class Solution {
    
    pub...]]></description><category></category></item><item><title><![CDATA[24. 两两交换链表中的节点]]></title><link>https://blog.csdn.net/chs_502/article/details/105468921</link><guid>https://blog.csdn.net/chs_502/article/details/105468921</guid><author>chs_502</author><pubDate>Sun, 12 Apr 2020 16:23:59 +0800</pubDate><description><![CDATA[题目地址：24. 两两交换链表中的节点

看到这题目也没想太多，常规思维大概就是这样：


class Solution {
    public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null)
            return head;
        ListNode p...]]></description><category></category></item><item><title><![CDATA[11. 盛最多水的容器]]></title><link>https://blog.csdn.net/chs_502/article/details/105468457</link><guid>https://blog.csdn.net/chs_502/article/details/105468457</guid><author>chs_502</author><pubDate>Sun, 12 Apr 2020 13:53:54 +0800</pubDate><description><![CDATA[题目地址：11. 盛最多水的容器

暴力解法，操作猛如虎，我的代码：


class Solution {
    public int maxArea(int[] height) {
        int tmp = 0;
        int max = 0;
        for (int i = 0; i &lt; height.length - 1; i++) {
        ...]]></description><category></category></item><item><title><![CDATA[源码——SpringBoot构建电商基础秒杀项目]]></title><link>https://blog.csdn.net/chs_502/article/details/105335748</link><guid>https://blog.csdn.net/chs_502/article/details/105335748</guid><author>chs_502</author><pubDate>Sun, 05 Apr 2020 23:06:31 +0800</pubDate><description><![CDATA[花五天时间敲完了慕课网的一个小项目，还是学到了很多东西的，在这里贴出源码，包含数据库脚本文件，有需要自取：

源码地址：SpringBoot构建电商基础秒杀项目

截图：








...]]></description><category></category></item><item><title><![CDATA[Java杂谈——Java多线程与并发-原理]]></title><link>https://blog.csdn.net/chs_502/article/details/105197300</link><guid>https://blog.csdn.net/chs_502/article/details/105197300</guid><author>chs_502</author><pubDate>Mon, 30 Mar 2020 22:39:21 +0800</pubDate><description><![CDATA[synchronized

线程安全问题的主要原因：

存在共享数据（也称临界资源）
	存在多条线程共同操作这些共享数据
解决这些问题的根本办法：

同一时刻有且只有一个线程在操作共享数据，其他线程必须等到该线程处理完毕再对共享数据进行操作。

互斥锁的特性：

互斥性：同一时间只允许一个线程持有某个对象锁，互斥性也称操作的原子性
	可见性：确保在锁被释放之前，对共享变量所做的修改，对于随后获得该...]]></description><category></category></item><item><title><![CDATA[Java杂谈——Java多线程与并发]]></title><link>https://blog.csdn.net/chs_502/article/details/105193441</link><guid>https://blog.csdn.net/chs_502/article/details/105193441</guid><author>chs_502</author><pubDate>Mon, 30 Mar 2020 13:16:12 +0800</pubDate><description><![CDATA[目录

进程和线程的区别

Java进程和线程的关系

Thread中的start和run方法的区别

Thread和Runnable是什么关系

如何给run()方法传参，主要有三种

如何实现处理线程的返回值，实现方式主要有三种

线程的状态

sleep和wait的差别

notify和notifyAll的区别

yield

如何中断线程

进程和线程的区别：

线程不能开作独立应用，而进...]]></description><category></category></item><item><title><![CDATA[62. 不同路径]]></title><link>https://blog.csdn.net/chs_502/article/details/105192206</link><guid>https://blog.csdn.net/chs_502/article/details/105192206</guid><author>chs_502</author><pubDate>Mon, 30 Mar 2020 10:11:33 +0800</pubDate><description><![CDATA[题目地址：62. 不同路径

动态规划：初始化一个m行n列数组，数组里的数据表示到达这个点存在的路径条数。首先需要考虑边界，因为只能向下或向右，所以边界值都为1，即位于起始点的那一行和那一列数字都是1。到达终点前的一步有两种可能，一种是向右，一种向下，将两种可能的路径条数相加，得到总路径条数：


class Solution {
    public int uniquePaths(int m,...]]></description><category></category></item><item><title><![CDATA[Java杂谈——集合（三）]]></title><link>https://blog.csdn.net/chs_502/article/details/105123155</link><guid>https://blog.csdn.net/chs_502/article/details/105123155</guid><author>chs_502</author><pubDate>Sun, 29 Mar 2020 22:23:45 +0800</pubDate><description><![CDATA[1.List、Set、Map三者区别

List：存储一组不唯一、有序的对象，可有多个元素引用相同对象。
	Set：不允许重复元素，不会有多个元素引用相同对象。
	Map：使用键值对存储对象。两个Key可引用相同对象，但Key不能重复
2.ArrayList和LinkedList区别

首先两个都是不同步的，都不保证线程安全。


			ArrayList
			LinkedList
		底层数...]]></description><category></category></item><item><title><![CDATA[69. x 的平方根]]></title><link>https://blog.csdn.net/chs_502/article/details/105176066</link><guid>https://blog.csdn.net/chs_502/article/details/105176066</guid><author>chs_502</author><pubDate>Sun, 29 Mar 2020 15:51:30 +0800</pubDate><description><![CDATA[题目地址：69. x 的平方根

看到这个题：


class Solution {
    public int mySqrt(int x) {
        if (x == 1)
            return 1;
        for (int i = 1; i &lt; x; i++) {
            if(i*i &lt;= x &amp;&amp; (i+1)...]]></description><category></category></item><item><title><![CDATA[35.搜索插入位置]]></title><link>https://blog.csdn.net/chs_502/article/details/105175831</link><guid>https://blog.csdn.net/chs_502/article/details/105175831</guid><author>chs_502</author><pubDate>Sun, 29 Mar 2020 11:50:46 +0800</pubDate><description><![CDATA[题目地址：搜索插入位置

心想这也太简单：


class Solution {
    public int searchInsert(int[] nums, int target) {
        for (int i = 0; i &lt; nums.length; i++) {
            if (nums[i] == target || nums[i] &gt; targ...]]></description><category></category></item><item><title><![CDATA[58.最后一个单词的长度]]></title><link>https://blog.csdn.net/chs_502/article/details/105174619</link><guid>https://blog.csdn.net/chs_502/article/details/105174619</guid><author>chs_502</author><pubDate>Sun, 29 Mar 2020 11:11:58 +0800</pubDate><description><![CDATA[题目地址：最后一个单词的长度


class Solution {
    public int lengthOfLastWord(String s) {
        //end到达字符串末尾
        int end = s.length() - 1;
        //先将字符串最后一个单词后面的空格去掉
        while(end &gt;= 0 &amp;&amp; s...]]></description><category></category></item><item><title><![CDATA[61.旋转链表]]></title><link>https://blog.csdn.net/chs_502/article/details/105161954</link><guid>https://blog.csdn.net/chs_502/article/details/105161954</guid><author>chs_502</author><pubDate>Sat, 28 Mar 2020 16:21:58 +0800</pubDate><description><![CDATA[题目地址：旋转链表

起初想到的思路是不断将最后的节点用头插法插入链表，直到插入k次


class Solution {
    public ListNode rotateRight(ListNode head, int k) {
        if(head == null || k==0)
            return head;
        ListNode tmp = h...]]></description><category></category></item><item><title><![CDATA[70.爬楼梯]]></title><link>https://blog.csdn.net/chs_502/article/details/105161187</link><guid>https://blog.csdn.net/chs_502/article/details/105161187</guid><author>chs_502</author><pubDate>Sat, 28 Mar 2020 14:59:51 +0800</pubDate><description><![CDATA[题目地址：爬楼梯

之前有印象，大概是这样：


class Solution {
    public static int climbStairs(int n) {
        if (n==1)
            return 1;
        else if (n==2)
            return 2;
        else
            retur...]]></description><category></category></item><item><title><![CDATA[66.加一]]></title><link>https://blog.csdn.net/chs_502/article/details/105160467</link><guid>https://blog.csdn.net/chs_502/article/details/105160467</guid><author>chs_502</author><pubDate>Sat, 28 Mar 2020 14:28:17 +0800</pubDate><description><![CDATA[题目地址：加一

感觉很简单，一顿操作猛如虎：


class Solution {
    public int[] plusOne(int[] digits) {
        int len = digits.length;
        if(digits[len-1] &lt; 9)
            digits[len-1] +=1;
        else{
     ...]]></description><category></category></item><item><title><![CDATA[9.回文数]]></title><link>https://blog.csdn.net/chs_502/article/details/105159475</link><guid>https://blog.csdn.net/chs_502/article/details/105159475</guid><author>chs_502</author><pubDate>Sat, 28 Mar 2020 13:14:54 +0800</pubDate><description><![CDATA[题目地址：回文数

看到这个题目的第一反映还是将整数转换为字符串，然后将其前面一半和后面一半进行比较：


class Solution {
    public boolean isPalindrome(int x) {
        //如果是负数，不是回文数
        if (x &lt; 0) {
            return false;
        } else {...]]></description><category></category></item></channel></rss>