<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[doncoder的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/doncoder</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; doncoder]]></copyright><item><title><![CDATA[职场沟通交流培训]]></title><link>https://blog.csdn.net/doncoder/article/details/136868043</link><guid>https://blog.csdn.net/doncoder/article/details/136868043</guid><author>doncoder</author><pubDate>Wed, 20 Mar 2024 10:12:58 +0800</pubDate><description><![CDATA[消除随机不确定性，是否完成目的。]]></description><category></category></item><item><title><![CDATA[servletConfig与servletContext]]></title><link>https://blog.csdn.net/doncoder/article/details/115024858</link><guid>https://blog.csdn.net/doncoder/article/details/115024858</guid><author>doncoder</author><pubDate>Sat, 20 Mar 2021 11:40:27 +0800</pubDate><description><![CDATA[一、区别



1、定义

 1）ServletConfig：Servlet的配置对象，容器在初始化Servlet时通过它传递信息给Servlet。

 2）ServletContext：上下文对象，提供了一系列方法供Servlet与Web容器交互。



2、创建时机

 1）ServletConfig：在容器初始化Servlet的时候，并为其提供上下文初始化参数的名/值对的引用。

 2）ServletContext：容器启动的时候，并为其提供Servlet初始化参数的名/值...]]></description><category></category></item><item><title><![CDATA[深度剖析C/C++中数组名与指针的详细区别]]></title><link>https://blog.csdn.net/doncoder/article/details/103183638</link><guid>https://blog.csdn.net/doncoder/article/details/103183638</guid><author>doncoder</author><pubDate>Thu, 21 Nov 2019 17:01:05 +0800</pubDate><description><![CDATA[在很多教材中甚至大学老师上课时都直接说数组名是一个指针。然而这种说法不是非常的严谨，因为数组名与指针有很明显的量大差别。在《C Primer Plus》中也只是说了数组名只是相当于一个const修饰的指针，除此之外并没有任何其他详解。所以下文将会详细讲解这两者的差别。

一、数组名的运算与指针并不是完全相同。

这是最明显的例子，指针支持自增、自减运算，但是数组名并不支持自增、自减运算。其实这么做...]]></description><category></category></item><item><title><![CDATA[《OSTEP》读书笔记 虚拟化(3)调度算法]]></title><link>https://blog.csdn.net/doncoder/article/details/100812993</link><guid>https://blog.csdn.net/doncoder/article/details/100812993</guid><author>doncoder</author><pubDate>Fri, 13 Sep 2019 22:42:25 +0800</pubDate><description><![CDATA[当进入中断处理程序后(比如完成I/O操作)，内核就要决定切换到哪一个进程继续运行。然而怎样决定运行哪一个进程就需要调度器使用调度算法来决定了。调度算法并不是产生于计算机科学中，而是产生于操作管理中并借鉴应用到计算机中。

不同的调度算法有不同的度量方法。这里首先通过周转时间(turnaround time)和响应时间(response time)来考虑算法。在这里我们首先对任务(就是进程，通常称为...]]></description><category></category></item><item><title><![CDATA[JVM类加载机制]]></title><link>https://blog.csdn.net/doncoder/article/details/100805654</link><guid>https://blog.csdn.net/doncoder/article/details/100805654</guid><author>doncoder</author><pubDate>Fri, 13 Sep 2019 16:34:26 +0800</pubDate><description><![CDATA[JVM的类加载分为三个部分：加载、连接（验证、准备、解析）、初始化。类的加载是线程安全的！

加载：

加载分为三个步骤：

1、根据类的全限定类名将该类以二进制流的方式读入。可以重写ClassLoader的loadClass()方法来改写获取二进制流的方式。

2、在方法区中生成该类的结构。

3、生成Class对象作为访问方法区中类结构的入口。注意在hotspot中Class对象存放在方法区中...]]></description><category></category></item><item><title><![CDATA[JVM常用垃圾收集器总结]]></title><link>https://blog.csdn.net/doncoder/article/details/100804977</link><guid>https://blog.csdn.net/doncoder/article/details/100804977</guid><author>doncoder</author><pubDate>Fri, 13 Sep 2019 16:02:36 +0800</pubDate><description><![CDATA[一、新生代收集器

Serial收集器(单线程+复制算法)

Serial收集器为单线程收集器，当其GC线程执行清理工作时，用户线程必须全部停止。由于桌面应用一般分配给JVM的内存不是很大，停顿时间一般在几十毫秒不会给用户造成太大影响，因此可以用于用户(Client)模式的虚拟机下。



ParNew收集器(多线程+复制算法)

ParNew(Parallel New)收集器与Serial收集器...]]></description><category></category></item><item><title><![CDATA[第二、三范式与BC范式的区别]]></title><link>https://blog.csdn.net/doncoder/article/details/92171159</link><guid>https://blog.csdn.net/doncoder/article/details/92171159</guid><author>doncoder</author><pubDate>Sat, 15 Jun 2019 21:45:33 +0800</pubDate><description><![CDATA[在正式开始之前，先来明确以下几个概念：

1、码：能唯一确定一条记录的一个/多个属性。码包括主码和候选码。任意一个候选码也能作为主键。其中主码/候选码的任意一个真子集都不能确定一条记录。

2、主属性：构成主码或候选码的属性都叫主属性！千万不要误认为候选码的属性不是主属性！

3、非主属性：除了主属性以外的属性都为非主属性。

4、传递依赖：如果存在A → B → C的决定关系，则C传递函数依赖于...]]></description><category></category></item><item><title><![CDATA[EL表达式整理]]></title><link>https://blog.csdn.net/doncoder/article/details/91159302</link><guid>https://blog.csdn.net/doncoder/article/details/91159302</guid><author>doncoder</author><pubDate>Fri, 07 Jun 2019 22:19:29 +0800</pubDate><description><![CDATA[一、EL作用范围

EL从以下四个作用域中取值,其他的数据一概不理会：

1、pageContext

2、request

3、session

4、application

这四个作用域范围按编号依次增大，EL的取值顺序也遵循这个顺序：先从pageContext搜索，若有则返回，没有继续从request寻找，依次类推。

二、EL的语法

1）使用getParameter()获取的值

 （...]]></description><category></category></item><item><title><![CDATA[C语言多维数组与指针的关系]]></title><link>https://blog.csdn.net/doncoder/article/details/90950196</link><guid>https://blog.csdn.net/doncoder/article/details/90950196</guid><author>doncoder</author><pubDate>Wed, 05 Jun 2019 23:57:32 +0800</pubDate><description><![CDATA[此篇博客分为三个主题：

一、一维数组与指针

二、二维数组与指针

三、高维数组与指针

指针与数组密切相关，深刻理解二者关系不仅可以更加灵活运用数组，更可帮助深入理解指针。

一、一维数组与指针

我们首先来定义一个一位数组：


int arr[5] = {6,5,4,3,2,1};

在正式开始之前，先来明确两个定义：

1、首地址：数组首元素地址。也就是说，一维数组的为一个对应数据类型所...]]></description><category></category></item><item><title><![CDATA[Java  深入理解泛型的强制转型及自动转型]]></title><link>https://blog.csdn.net/doncoder/article/details/90734268</link><guid>https://blog.csdn.net/doncoder/article/details/90734268</guid><author>doncoder</author><pubDate>Sat, 01 Jun 2019 23:49:22 +0800</pubDate><description><![CDATA[前言：Java的泛型真是狗屎！

一、泛型里的强制转换

在阅读 Core Java 和 ArrayList 源码时，一直有一个问题困扰着我：既然泛型都会被擦出成raw type（这里被擦除为Object），那么为什么还会有（T) 或（T[ ]）这种强制转换呢？这岂不是闲的没事儿干？


public class Test&lt;E&gt; {
    private Object[] elem;...]]></description><category></category></item><item><title><![CDATA[JVM  类文件结构]]></title><link>https://blog.csdn.net/doncoder/article/details/90721616</link><guid>https://blog.csdn.net/doncoder/article/details/90721616</guid><author>doncoder</author><pubDate>Fri, 31 May 2019 20:28:54 +0800</pubDate><description><![CDATA[整理自《深入理解Java虚拟机》

一、Class文件

类文件是由一个.java文件经过编译后形成的.class文件。class文件中包含了虚拟机指令集和符号表以及若干其他辅助信息。class文件交给JVM去运行，JVM再在不同的系统环境中执行代码。可以说这也是Java实现跨平台的重要一步。class文件不光只有Java可以生成，只要是运行在JVM上的语言经过不同的语言编译器编译后都可生成cla...]]></description><category></category></item><item><title><![CDATA[[转]Java并发  Volatile关键字解析]]></title><link>https://blog.csdn.net/doncoder/article/details/90488352</link><guid>https://blog.csdn.net/doncoder/article/details/90488352</guid><author>doncoder</author><pubDate>Thu, 23 May 2019 23:40:57 +0800</pubDate><description><![CDATA[转自：https://www.cnblogs.com/dolphin0520/p/3920373.html

volatile关键字虽然从字面上理解起来比较简单，但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的，因此在讲述volatile关键之前，我们先来了解一下与内存模型相关的概念和知识，然后分析了volatile关键字的实现原理，最后给出了几个使用volat...]]></description><category></category></item><item><title><![CDATA[Java   (多)生产者与消费者模式]]></title><link>https://blog.csdn.net/doncoder/article/details/90233439</link><guid>https://blog.csdn.net/doncoder/article/details/90233439</guid><author>doncoder</author><pubDate>Wed, 15 May 2019 15:24:44 +0800</pubDate><description><![CDATA[生产者与消费者模型是Java多线程中的常见经典模型。为此特写一篇博客记录该模式中线程不安全问题的产生以及解决方案。

一、单消费者与单生产者模式

所谓生产者消费者模式，就是指一个/多个线程生产东西（往资源中赋值等），另一个/多个线程消费资源中的东西（输出资源中的内容等）。下面这个例子为一个线程赋值名字和性别，另一个线程负责输出名字和性别。



class Resource{
	String n...]]></description><category></category></item><item><title><![CDATA[Java 反射获取类信息]]></title><link>https://blog.csdn.net/doncoder/article/details/89890988</link><guid>https://blog.csdn.net/doncoder/article/details/89890988</guid><author>doncoder</author><pubDate>Mon, 06 May 2019 20:42:56 +0800</pubDate><description><![CDATA[//部分参考至Core Java
package reflection;

import java.lang.reflect.*;
import java.util.Scanner;

public class ReflectionTest {
	public static void printConstructers(Class c1) {
		Constructor[] ct = c1.ge...]]></description><category></category></item><item><title><![CDATA[Java 集合体系与List]]></title><link>https://blog.csdn.net/doncoder/article/details/89578616</link><guid>https://blog.csdn.net/doncoder/article/details/89578616</guid><author>doncoder</author><pubDate>Fri, 26 Apr 2019 23:40:16 +0800</pubDate><description><![CDATA[一、集合体系

1)Collection接口

在Java类库中，Collection是集合最基本的接口。Collection定义了一系列集合常用操作（获取迭代器、添加、删除、包含、转化数组、判断是否为空、大小）以及default默认方法接口 ( 大部分与流相关( 除removeIf，其用来删除满足符合某个条件的元素 )）。AbstractCollection实现了部分Collection方法。...]]></description><category></category></item><item><title><![CDATA[容器与Servlet生命周期]]></title><link>https://blog.csdn.net/doncoder/article/details/89501388</link><guid>https://blog.csdn.net/doncoder/article/details/89501388</guid><author>doncoder</author><pubDate>Wed, 24 Apr 2019 19:41:49 +0800</pubDate><description><![CDATA[1）容器大致功能有如下：
一、通信支持
无需自己建立监听端口、流、Socket等，容器知道与Web服务器的协议，所以不必担心自己的代码如何与服务器进行通信，交给容器就好
二、生命周期管理
容器可以自动加载类、实例化和初始化servlet、调用Servlet方法，并是得Servlet被回收
三、多线程支持
容器会自动给接收到的每一个Servlet创建一个线程并管理这些线程
四、声明方式实现安全
利用...]]></description><category></category></item><item><title><![CDATA[HTTP协议]]></title><link>https://blog.csdn.net/doncoder/article/details/89499772</link><guid>https://blog.csdn.net/doncoder/article/details/89499772</guid><author>doncoder</author><pubDate>Wed, 24 Apr 2019 18:01:18 +0800</pubDate><description><![CDATA[**
一、Http协议：
**
Web客户端和服务器之间的绝大数会话都是使用Http协议完成。客户端向服务器发送一个Http请求（request），服务器得到请求后会返回给客户端一个Http响应（response）。Http是TCP/IP的上层协议，这里是对网络协议的简单解释：
  1、TCP协议确保从一个网络节点向另一个网络节点发送的文件能作为一个完整的文件送达（传送过程中可能会分成小块）。

...]]></description><category></category></item><item><title><![CDATA[PAT甲级1010  Radix]]></title><link>https://blog.csdn.net/doncoder/article/details/89492677</link><guid>https://blog.csdn.net/doncoder/article/details/89492677</guid><author>doncoder</author><pubDate>Wed, 24 Apr 2019 14:50:41 +0800</pubDate><description><![CDATA[最开始想直接暴力，后来看网上题解说可以二分。

二分思路就是先将n1转化为10进制，二分搜索枚举n2的进制（low为n2的进制，hi为n1的10进制加1），将n2按照枚举的进制转换为10进制然后与n1的十进制进行比较。注意这里的二分是搜索最小的结果，因此第一次相等后仍然要向前面区间搜索看是否有更小的解。

坑点：

1、long long也可能会溢出，需要判断溢出

2、每一步二分的结果需要判断是...]]></description><category></category></item><item><title><![CDATA[JAVA IO（7）管道流]]></title><link>https://blog.csdn.net/doncoder/article/details/86775864</link><guid>https://blog.csdn.net/doncoder/article/details/86775864</guid><author>doncoder</author><pubDate>Fri, 08 Feb 2019 17:15:29 +0800</pubDate><description><![CDATA[普通输入输出流必须通过变量或者数组中转。而管道输入输出流可以直接关联。管道流要结合多线程使用。因为read（）会阻塞，如果输入输出流在同一个线程，read（）没有数据一直等待，造成死锁。管道输入流提供要写入管道输出流的所有数据字节。


import java.io.IOException;
import java.io.PipedInputStream;
import java.io.Piped...]]></description><category></category></item><item><title><![CDATA[JAVA IO（6）Serialiazable]]></title><link>https://blog.csdn.net/doncoder/article/details/86775854</link><guid>https://blog.csdn.net/doncoder/article/details/86775854</guid><author>doncoder</author><pubDate>Fri, 08 Feb 2019 17:13:22 +0800</pubDate><description><![CDATA[
import java.io.Serializable;

public class Main{
     /*
      * Serialiazable:用于给被序列化的类加ID号
      * 用于判断类和对象是否是同一个版本
      * 默认的ID号是根据类中各个属性签名算出的。自定义序列号后即使改动权限关键字也可以反序列化。
      *
      *
      * tra...]]></description><category></category></item></channel></rss>