<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ZhiP_Yan的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/ZhiP_Yan</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; ZhiP_Yan]]></copyright><item><title><![CDATA[jvm - volatile关键字]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112970919</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112970919</guid><author>ZhiP_Yan</author><pubDate>Thu, 21 Jan 2021 20:54:40 +0800</pubDate><description><![CDATA[其实 volatile 关键字主要的作用有两个：一是让其修饰的变量，在发生改变时，立即可以被其它线程察觉到；二是禁止程序中发生的指令重排。
作用一： 所有线程立即可见
要弄清楚这一点首要要对主内存和工作内存有些了解。每个线程都会有自己私有的内存空间，而一个程序中的线程又可以共享程序的内存。引用一个经典的图(深入理解jvm虚拟机)来说明。一般线程中会存放主内存中的变量的副本，在短期没有发生修改的情况下，线程并不会去主内存取值更新自己工作内存中的值。

很典型的一段程序是这样，在主线程中修改flag的值的时候，]]></description><category></category></item><item><title><![CDATA[1 java多线程 线程的创建和线程中变量的共享]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112969994</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112969994</guid><author>ZhiP_Yan</author><pubDate>Thu, 21 Jan 2021 19:53:00 +0800</pubDate><description><![CDATA[线程的创建方法
java中创建线程的方法可以说只有一个，就是通过new Thread()的方式来创建线程。但是，从使用的角度来看，java中创建线程的方式可以说是有多种的：
1 第一种可以通过继承 Thread 类，重写 Thread 类中的 run() 函数来实现线程逻辑。然后在主类中通过新建一个Thread的实现类来开启线程。
2 实现Runnable接口，重写 run() 方法即可。采用接口的方式来创建线程相对而言更加灵活，毕竟java只支持单继承，继承Thread类就没办法继承自己的类啦。
需要注意]]></description><category></category></item><item><title><![CDATA[(SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------第一个SSM项目从创建到运行-详细(IDEA)  ---（3） Mybatis集成]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112759676</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112759676</guid><author>ZhiP_Yan</author><pubDate>Mon, 18 Jan 2021 00:14:05 +0800</pubDate><description><![CDATA[Mabatis相关的包第一节已经导入了，这里放一下。
    &lt;!--    mybatis start--&gt;
    &lt;!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --&gt;
    &lt;dependency&gt;
      &lt;groupId&gt;mysql&lt;/groupId&gt;
      &lt;artifactId&gt;mysql-connector-java&lt]]></description><category></category></item><item><title><![CDATA[(SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------第一个SSM项目从创建到运行-详细(IDEA)  ---（2） SpringMVC集成]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112758734</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112758734</guid><author>ZhiP_Yan</author><pubDate>Sun, 17 Jan 2021 22:52:20 +0800</pubDate><description><![CDATA[接上一节，下面配置SpringMVC
(SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------第一个SSM项目从创建到运行-详细(IDEA)  —（1） Spring集成
在pom中需要导入的包上一篇已经导入啦，springMVC的包含这几个，上一节导入的话这里就不用啦。
    &lt;!--    springMVC start--&gt;
    &lt;!-- https://mvnrepository.com/artifact/jstl/jstl -]]></description><category></category></item><item><title><![CDATA[(SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------第一个SSM项目从创建到运行-详细(IDEA)  ---（1） Spring集成]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112757618</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112757618</guid><author>ZhiP_Yan</author><pubDate>Sun, 17 Jan 2021 21:59:53 +0800</pubDate><description><![CDATA[首先，需要Java JDK，（省略…）
然后Intellij IDEA安装      (省略…)
Tomcat 下载，到官网下载，然后解压到一个自己知道的位置就行啦，我用的8.5版本，个人建议不要用10，运气不好让你调bug到绝望。
Maven下载，同样解压到自己知道的地方就行，然后在maven的目录下（比如apache-maven-3.5.0目录下）建立文件夹 responsitory，是用来放下载的jar包的，要不然自动放到C盘不太好。当然，如果用数据库的话下载MySql数据库，如果你不想用数据库（不用]]></description><category></category></item><item><title><![CDATA[1 (SSM) springMVC + spring + Mybatis(MySQL)学习笔记 ------ 阶段成果笔记]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/112755909</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/112755909</guid><author>ZhiP_Yan</author><pubDate>Sun, 17 Jan 2021 20:43:08 +0800</pubDate><description><![CDATA[学习了一段时间spring，springMVC和Mybatis，从开始学到现在熬了好多夜晚，好几个深夜和bug作战，真是难受。
打算写系列学习笔记，第一篇从一个小的成果说起吧，刚刚学的看这篇可能有点吃力，有个大概把握或者跳过之后再看都可以。项目在IEDA中完成，之前我写java都用 eclipse ，最开始也不想转到 IDEA， 现在觉得：真香。
1 资源配置
1.1资源依赖
这个是本次Maven项目中的版本信息，具体如下，下面大概介绍一下。
  &lt;properties&gt;
    &lt;pro]]></description><category></category></item><item><title><![CDATA[归并排序变形算法题目思考（likou 493翻转对  & 327 区间和的个数）]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/110287086</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/110287086</guid><author>ZhiP_Yan</author><pubDate>Sat, 28 Nov 2020 17:11:33 +0800</pubDate><description><![CDATA[493 翻转对题解分析

相对位置无关性
解决这题首先要明白一个事实，就是i &lt; j其实可以理解为j的相对位置在i之后，或者是说不一定需要严格的要求保持nums[i]和nums[j]的位置。
就好比要统计两个数组a和b中，满足b[j] &gt; a[i] 的总对数（a = [1,2,3], b=[1,7] 总对数是&lt;1,7&gt;&lt;2,7&gt;&lt;3,7&gt;这三对），b中元素的位置可以任意改变， 这并不会影响最终的统计结果。理解这一点后就很好理解归并排序中将两组合并前的排序过程，]]></description><category></category></item><item><title><![CDATA[3. Android开发 - 简单布局]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109706691</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109706691</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:20:38 +0800</pubDate><description><![CDATA[看

]]></description><category></category></item><item><title><![CDATA[3. Linux学习笔记 - 用户类别和权限]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109702124</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109702124</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:19:12 +0800</pubDate><description><![CDATA[用户分类和文件（目录）权限
在Linux用户中，对于某个文件主要分为三种不同的级别。即文件的拥有者（owner）；用户组（group）；他人（other）。用户组是指某个组别，这个组拥有这个文件的某些权限。类似于某个人归属某个家庭这样的概念。他人就是除了此外的其他的人了。当然，root是个例外，root无所不能。
而就权限来说，分为r（读），w（写），x（执行）。对文件来说这些容易理解，需要注意的是linux中执行不类似windows一样，通过后缀进行分辨。Linux中文件后缀更像是用于习惯，使用者可以根据]]></description><category></category></item><item><title><![CDATA[2. Linux学习笔记-简要操作命令和关机]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109700437</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109700437</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:15:25 +0800</pubDate><description><![CDATA[nice，开机啦，Ubuntu系统，继续学。
终端，用户界面
Ctrl + Alt + F1(2,3,4,5,6) 便可以进入终端。我用的Ubuntu系统，Ctrl + Alt + F1 进入了登录页面；Ctrl + Alt + F2 进入了图形界面系统； Ctrl + Alt + F3（4，5，6）都会进入终端。
终端中登录需要注意一下，有时候疯狂输入用户名密码发现就是不对，不要慌，图形界面下输入 Ctrl + Alt + t 看看自己的用户名是什么，应该是你以为的用户名和系统的不一样。如果还是错的，那应]]></description><category></category></item><item><title><![CDATA[1. Linux学习笔记 - 浅谈计算机]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109700077</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109700077</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:10:27 +0800</pubDate><description><![CDATA[最开始学习组成原理的时候，除了考试其实其它的感触不是很多。现在了解的多一点的时候，貌似还真的有一种感觉，这个东西并不是想象中的东西。（可能只是错觉，hhh）最开始只是总结一下计算机中很广泛的东西（可能有错，学的时间太久了）
五大组成部件

输入单元：（略）
输出单元：（略++）
存储：展开讲也不少，芯片类型功能啦，芯片的连接啦，片选逻辑啦等等。主要是内存和外存吧。外存一般用RAM组成，功耗比较低，掉电后数据不丢失，价格便宜，但是速度低。而内存是用ROM组成，功耗比较高一点，速度快，目的是是的存储更加匹配CP]]></description><category></category></item><item><title><![CDATA[2. Android开发 -像素，颜色和屏幕分辨率]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109705477</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109705477</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:06:48 +0800</pubDate><description><![CDATA[像素
Android支持的像素有px（像素），in（英寸），mm（毫米），pt（磅 1/72英寸），dp（dip）和像素无关的显示单位，sp用于字体。
常见的有px，dp和sp。px就是像素，比较常见。dp显示和物理设备没有关系，只和屏幕尺寸有关。sp设置的字体会随着手机系统的字体变化而变化。dp和sp的转化关系和屏幕的像素密度相关。px = （int）（dp * density）。获取屏幕像素密度
context.getResources().getDisplayMetrics().density;

在]]></description><category></category></item><item><title><![CDATA[1. Android开发 Android Studio工程目录结构]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/109706830</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/109706830</guid><author>ZhiP_Yan</author><pubDate>Sun, 15 Nov 2020 21:04:52 +0800</pubDate><description><![CDATA[按照默认的方法安装设置，一般可以完成Android Studio的安装以及运行第一个Hello World程序。虽然也有一些坑。
但是建立完成后工程目录一眼看去还是计较茫然的。学习之前，简单了解一下工程目录结构还是需要的。新建的工程目录大概是这样，忽略图中我自己新建的MainActivity2和activity_main2.xml文件。当然，还有最后一个板块Gradle Scripts没有放入图中。


manifests：一般只有一个子目录AndroidManifest.xml，是App运行的配置文件，会]]></description><category></category></item><item><title><![CDATA[2. tensorflow2.0学习---Tensor创建和维度变换]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/104727993</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/104727993</guid><author>ZhiP_Yan</author><pubDate>Sun, 08 Mar 2020 12:54:40 +0800</pubDate><description><![CDATA[创建Tensor
从numpy， list数据中获得
创建一个Tensor数据可以从list或者numpy矩阵中获得。不过再list中，每个数据的类型可能不一致，而转化为Tensor要求数据类型应该是一致的，不过这种一致并非十分严格，也可以说逻辑上可以的数据便可以转化为Tensor，例如list数组中可能同时存在int类型和float类型，转化为Tensor时数据会自动扩充为float类型。
tf...]]></description><category></category></item><item><title><![CDATA[1. tensorflow2.0学习---数据类型，属性，转换]]></title><link>https://blog.csdn.net/ZhiP_Yan/article/details/104717946</link><guid>https://blog.csdn.net/ZhiP_Yan/article/details/104717946</guid><author>ZhiP_Yan</author><pubDate>Sun, 08 Mar 2020 09:58:59 +0800</pubDate><description><![CDATA[tensorflow2.0学习—数据类型，属性，转换
最近忽然想系统的学习一下tensorflow的知识，虽然之前也写过神经网络的代码，但是总是觉得自己从来没有学会，在次将博客作为自己的笔记，希望这次学完可以有比较深的体会。加油。。。。。。
数据格式详细区分
其实tensorflow中的Tensor有很多操作和numpy中的array和python中的list相同，但是也有很多不同的地方。
首先，...]]></description><category></category></item></channel></rss>