<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LinJava-X的博客]]></title><description><![CDATA[技术是一门艺术，没有尽头并不会百分百完美]]></description><link>https://blog.youkuaiyun.com/LinJavaWeb</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LinJavaWeb]]></copyright><item><title><![CDATA[2022年发生的一些事情的记录]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/129311208</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/129311208</guid><author>LinJavaWeb</author><pubDate>Sun, 26 Mar 2023 00:26:29 +0800</pubDate><description><![CDATA[第二季度发生的事情还是有点多的，公司合并失败，老板在完成项目交付要求后，开始背刺我们合同变更，把薪资分成基本工资，岗位工资和绩效工资，看到构造成分就知道，想玩背刺啦，绩效这东西，说达标就达标，没达标就是没达标。这个季度验收了一个高职院校的项目，公司去了一趟珠海旅游，那天晚上我了不少酒，然后得到了老板最真实的答复是，2022年确定不给我涨薪资，其实那会我应该就知道，这个老板就是这样的一个人，多疑，抠门，那天我就想好要离职的相关事情。但事实上，与我之前的工作可比，我现在的生活质量得到了改善。]]></description><category></category></item><item><title><![CDATA[CentOS7使用Docker安装MySQL5.7]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119570923</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119570923</guid><author>LinJavaWeb</author><pubDate>Tue, 10 Aug 2021 15:45:54 +0800</pubDate><description><![CDATA[安装Docker
安装修改内容可以具体参考，这个是我写的安装Docker的安装步骤

https://blog.youkuaiyun.com/LinJavaWeb/article/details/119569508

查看可以安装的MySql的版本
docker search mysql


安装自己需要的版本
docker pull mysql:5.7 #我这边以安装5.7为例子


运行MySQL容器
docker run -d -p 3306:3306 --privileged=true -v /home/doc]]></description><category></category></item><item><title><![CDATA[CentOS7 Docker 安装]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119569508</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119569508</guid><author>LinJavaWeb</author><pubDate>Tue, 10 Aug 2021 15:22:54 +0800</pubDate><description><![CDATA[Docker 自动安装
使用官方安装脚本自动安装，或者使用国内 daocloud 一键安装命令，尝试过了，目前没有成功过！
curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun
或者
curl -sSL https://get.daocloud.io/docker | sh

Docker  手动安装（推荐）
1、Docker 要求 CentOS 系统的内核版本高于 3.10 ，查看本页面的前提条件来验证你的CentOS 版本是]]></description><category></category></item><item><title><![CDATA[Java核心语法基础]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119223041</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/119223041</guid><author>LinJavaWeb</author><pubDate>Wed, 04 Aug 2021 22:05:18 +0800</pubDate><description><![CDATA[数据类型
基本数据类型：




数据类型
分类




4种整数类型
byte（-128~127），short，int，long


2种浮点类型
float，double


1种字符类型
char 默认值  ‘\0’


1种布尔类型
boolean  默认为false，只有false或者true


原始数据类型：




数据类型
分类




4种整数类型
byte（-128~127），short，int，long


2种浮点类型
float，double


1种字符类型
char 默认值 ]]></description><category></category></item><item><title><![CDATA[Java基础知识点__获取运行时类的完整结构]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118558192</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118558192</guid><author>LinJavaWeb</author><pubDate>Thu, 08 Jul 2021 21:41:18 +0800</pubDate><description><![CDATA[通过反射获取运行时类的完整结构
Field，method，Construuuctor，Superclass,Interface,Annotation
实现的全部接口
继承的父类
全部的构造器
全部的构造方法
全部的Field
注解等

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class TestDemo02 {
    publ]]></description><category></category></item><item><title><![CDATA[Java基础__类加载器]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118532319</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118532319</guid><author>LinJavaWeb</author><pubDate>Wed, 07 Jul 2021 21:42:48 +0800</pubDate><description><![CDATA[类加载器的作用
类加载的作用：将class文件字节码内容加载到内存中，并将这些静态数据转换成发去的运行时数据结构。然后再堆中生成一个代表这个类的java.lang.Class对象，作为方法区中类数据的访问入口
类缓存：标准的JavaSE类加载器可以按要求查找类，但一旦某个类被加载到加载器中，它将位置加载（缓存）一段时间。不过JVM垃圾回收机制可以回收这些Class对象
类加载器作用是用来把类（class）装载进内存中，JVM规范定义了如下类型的类的加载器。

引导类加载器： 用C++编写的，是JVM自带的类]]></description><category></category></item><item><title><![CDATA[Java基础知识点__了解Class类]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118500202</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118500202</guid><author>LinJavaWeb</author><pubDate>Tue, 06 Jul 2021 23:14:58 +0800</pubDate><description><![CDATA[Class类的常用的方法
反射的操作涉及到了Class类的相关内容，所以我们这边先大致的了解一下Class类的常用的方法




方法名
功能说明




static ClassforName(String name)
返回指定类名name的Class对象


Object newInstance()
调用缺省构造函数，返回一个Class对象的一个实例


getName()
返回此Class对象所表示的尸体（类，接口，数组类或void）的名称


Class getSuperClass()
返回当前Cl]]></description><category></category></item><item><title><![CDATA[Java基本知识点_初步认识反射]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118487509</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118487509</guid><author>LinJavaWeb</author><pubDate>Mon, 05 Jul 2021 22:22:06 +0800</pubDate><description><![CDATA[什么是反射
反射是Java被视为动态语言的关键，反射机制允许重新执行期间借助反射API 去掉任何类的内部信息，并能直接操作任意对象的内部属性和方法

Class c = Class.forName(“java.lang.String”)

加载完类之后，在堆内存的方法区中就产生了一个Class类型的对象，就这个对象包含了完整的类的结构信息。我们可以通过这个对象看到类的结构，这个对象就像一个镜子一样，透过这个镜子看到类的结构，所以我们形象的称之为反射。

反射机制提供了什么功能

在运行是判断一个对象所属的类]]></description><category></category></item><item><title><![CDATA[Java自定义注解]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118441811</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118441811</guid><author>LinJavaWeb</author><pubDate>Sat, 03 Jul 2021 16:42:35 +0800</pubDate><description><![CDATA[什么是自定义注解
首先可以通过这连接一下注解的相关基础。然后就差不多可以理解注解了

https://blog.youkuaiyun.com/LinJavaWeb/article/details/118437409

总体来说就是：使用@interfac自定义注解时，自动基础了java.lang.annotation,Annotation接口
下面是注解的相关的demo
import java.lang.annotation.ElementType;
import java.lang.annotation.Retent]]></description><category></category></item><item><title><![CDATA[Java注解的基础了解]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118437409</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118437409</guid><author>LinJavaWeb</author><pubDate>Sat, 03 Jul 2021 16:17:34 +0800</pubDate><description><![CDATA[什么是注解
注解是JDK5.0开始引用的新技术
注解的作用：
1.不是程序本身，可以对程序作出解释。
2.可以其他程序读取
注解的格式：一般都是以“@注释名称”在代码中存在的例如：@Override，还可以添加一些参数值，例如@SupperssWarings（value=“unchecked”）
注解的使用范围：可以附加在package（包），class（类），method（方法），field（字段）等上面，相当于给他们添加了额外的辅助信息，我们可以通过反射机制编程实现对这些元数据的访问。
什么是内置注解
]]></description><category></category></item><item><title><![CDATA[Java使用多线程，UPD通过控制台之间互相通讯]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118437003</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118437003</guid><author>LinJavaWeb</author><pubDate>Sat, 03 Jul 2021 10:57:07 +0800</pubDate><description><![CDATA[废话就不多说了，直接上demo，使用带来来进行了解
public class TaleTeceive implements  Runnable {

    DatagramSocket datagramSocket = null;
    private String msgFrom;
    public TaleTeceive(int formPort,String msgFrom) throws SocketException {
        this.datagramSocket = new ]]></description><category></category></item><item><title><![CDATA[Java_UDP通讯的初步认识]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118436852</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118436852</guid><author>LinJavaWeb</author><pubDate>Sat, 03 Jul 2021 10:37:22 +0800</pubDate><description><![CDATA[什么是UDP
UDP是User Datagram Protocol的简称，中文名是用户数据报协议，是OSI参考模型中的传输层协议，它是一种无连接的传输层协议，提供面向事务的简单不可靠信息传送服务。
UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是17。
简单的UPD代码demo
//不需要连接服务器
public class UdpClientDemo01 {
    public static void main(String[] args) {
        //建立一个Socke]]></description><category></category></item><item><title><![CDATA[TCP的初步认识]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118436748</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118436748</guid><author>LinJavaWeb</author><pubDate>Sat, 03 Jul 2021 10:31:18 +0800</pubDate><description><![CDATA[什么是TCP
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP在IP报文的协议号是6。TCP是一个超级麻烦的协议，而它又是互联网的基础，也是每个程序员必备的基本功。
TCP简单的demo例子
//客户端
public class TCPClientDemo01 {
    public static void main(String[] args) throws IOException {
        ]]></description><category></category></item><item><title><![CDATA[Java多线程_线程池]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118332682</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118332682</guid><author>LinJavaWeb</author><pubDate>Tue, 29 Jun 2021 21:54:32 +0800</pubDate><description><![CDATA[线程池背景
经常创建和销毁，使用量特别大的资源。比如并非情况下的线程，对性能影响很大，所以提前创建好多个线程，放入线程池中，使用时直接获取，使用完后放回池中，可以避免频繁创建销毁，实现重复利用，类似共享充电宝。
线程池的好处

提高响应速度（减少了创建新线程的时间）
降低资源消耗（重复利用线程池中线程，不需要每次都创建）
便于线程管理
corePoolSize：核心池的大小
maxmumPollSize：最大线程数
keepAliveTime：线程没有任务时最多保存多次时间后会终止等。

使用线程池
JDK]]></description><category></category></item><item><title><![CDATA[Java多线程_并发协助模型（管制法，信号灯法）]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118314069</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118314069</guid><author>LinJavaWeb</author><pubDate>Mon, 28 Jun 2021 22:46:43 +0800</pubDate><description><![CDATA[管制法

生产者：负责生产数据的模型（可能是方法，对象，线程，进程）
消费者： 负责处理数据的模块（可能是方法，对象，线程，进程）
缓存区： 消费者不能直接使用生产者的数据 ，他们之间有个“缓冲区”

总结：生产者将生产好的数据放入到缓冲区，消费者从缓冲区拿数据
代码例子：

//测试： 生产者消费者模型 --&gt; 利用缓冲区解读：管制发
//生产者，消费者，产品，缓冲区
public class TestPC {
    public static void main(String[] args) {]]></description><category></category></item><item><title><![CDATA[Java多线程_Lock锁]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118299886</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118299886</guid><author>LinJavaWeb</author><pubDate>Mon, 28 Jun 2021 22:00:32 +0800</pubDate><description><![CDATA[Lock锁
JDK5.0版本开始，就提供更加强大的线程同步机制，通过显式定义同步锁对象来实现同步，同步锁使用Lock对象来充当
Lock接口控制多个线程对共享资源镜像访问的工具，锁提供了对共享资源的独占访问共享资源之前应先获得Lock对象
ReentrantLock类实现了Lock，它拥有与synchromized相同并性和内存语义，在实现线程安全的控制找那个，比较常用的是ReentrantLock，可以显式加锁，释放锁
经典用例1：没有加锁的情况，数字出现了相同的值。
public class TestL]]></description><category></category></item><item><title><![CDATA[Java线程安全_死锁产生，以及解决]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118282479</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118282479</guid><author>LinJavaWeb</author><pubDate>Mon, 28 Jun 2021 00:28:20 +0800</pubDate><description><![CDATA[什么是死锁
多个线程各种占有一些共享资源，并且互相等待其他线程占有资源才能运行，而导致两个或者多个线程都在等待对方是否资源，都停止执行的情况，某个同步块同时拥有“2个以上对象锁”的时候，就可能发生“死锁”的现象。
//死锁：多个对象互相拥有对方需要的资源，然后形成僵持
public class DeadLock {

    public static void main(String[] args) {

        DriveCar driveCar = new DriveCar(0,"职业老司机"]]></description><category></category></item><item><title><![CDATA[Java线程安全解决方案_synchronized代码块]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118269579</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/118269579</guid><author>LinJavaWeb</author><pubDate>Sun, 27 Jun 2021 23:31:52 +0800</pubDate><description><![CDATA[线程不安全的问题
在不做线程安全的情况下，多个线程访问一个资源会出现线程不安全的情况，容易出现不同的线程访问不同一个资源的情况。比如下列简单2个demo运行的效果，运行就会发现，会出现重复或者本身就已经按照逻辑已经不符合条件的，会出现不应该出现的结果。

//两个去银行，线程不安全的情况下
public class UnsafeBank {
    public static void main(String[] args) {
        //账号
        Account account = ]]></description><category></category></item><item><title><![CDATA[Java线程了解]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/117913778</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/117913778</guid><author>LinJavaWeb</author><pubDate>Sat, 26 Jun 2021 23:14:36 +0800</pubDate><description><![CDATA[Java线程状态的疑惑
首先，了解Java线程状态的时候，查了一下相关的文章，有的说是5个，有的是说6个，但是无论说是几个状态，大体的流程都是类似的。带着这个疑惑，对线程进行进一步的了解。
查看源码
我首先打开了Thread类，然后发现这个类里面有个State的枚举，首先从字面意思就很清楚知道，这个几个状态应该就清楚是线程的状态了，分别是6个。具体代码如下：
	/**
	 *线程状态。线程可以处于以下状态之一：
	 *NEW
	 *尚未启动的线程处于此状态
	 *RUNNABLE
	 *在Java虚拟机中执]]></description><category></category></item><item><title><![CDATA[Java线程的三种实现方式]]></title><link>https://blog.youkuaiyun.com/LinJavaWeb/article/details/117781803</link><guid>https://blog.youkuaiyun.com/LinJavaWeb/article/details/117781803</guid><author>LinJavaWeb</author><pubDate>Mon, 14 Jun 2021 22:04:47 +0800</pubDate><description><![CDATA[Java线程的创建方式
1.Thread类
首先，我们了解这个类的时候可以查看一下这类的源码，我们进入源码的时候就会看到，其实这个类是实现的了Runable接口的。
2. Runable接口
3. Callable接口

]]></description><category></category></item></channel></rss>