<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[大数据时代的狂欢]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pc_fly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pc_fly]]></copyright><item><title><![CDATA[大模型微调训练营毕业总结]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/141890450</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/141890450</guid><author>pc_fly</author><pubDate>Wed, 04 Sep 2024 12:47:38 +0800</pubDate><description><![CDATA[大数据经过多年的发展，在理论和技术层面都已经到达了一个比较成熟的高度，用户使用也属于普惠期。在彭老师的带领下迅速对大模型领域有了比较深入的了解，也逐步掌握了大模型的使用和微调技术。现在在我的提议下，公司已准备在两个方面探索大模型的应用，一个是之前提到过的根据自然语言生成数据加工任务、即席查询；另外，大模型也有可能成为大数据架构中的一环。有一些平台的课程看上去比较综合，但细究课程表，更多的是偏向应用，如提示词工程、AIGC等。极客时间的训练营相对比较深入，尤其是在原理方面讲得比较透，适合喜欢追根究底的人。]]></description><category></category></item><item><title><![CDATA[Kerberos认证报错：Failed to find any Kerberos tgt 的处理]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/130874477</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/130874477</guid><author>pc_fly</author><pubDate>Thu, 25 May 2023 20:33:29 +0800</pubDate><description><![CDATA[JDK认为Kerberos使用的加密算法比较弱，不承认加密出来的密钥。例如在JDK1.8_351中，默认不支持DES相关的Kerberos 5加密算法。如tgt缓存文件不存在，已过期，jdk版本过老等问题，这就不多说了。但较低的、121版本就支持。]]></description><category></category></item><item><title><![CDATA[原来ConcurrentHashMap里有这么多知识点]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/124913006</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/124913006</guid><author>pc_fly</author><pubDate>Wed, 17 Aug 2022 23:00:06 +0800</pubDate><description><![CDATA[文章目录引言知识点CHM如何存储数据什么时候初始化存储空间如何计算空间大小什么时候需要扩容扩容时的写入和读取什么时候需要加锁读取时为什么不用加锁sizeCtl的作用计算索引
引言
最近给公司整理面试题，想起了Java里鼎鼎大名的ConcurrentHashMap（以后简称CHM）。原本以为懂了扩容（2n2^n2n）、单节点加锁、冲突红黑树就行了，结果一搜资料，再对比一下源码，发现原来还是有很多以前没留心过的知识点。所以在这里好好总结一下。
知识点
CHM如何存储数据

Node&lt;K, V&gt;[] ]]></description><category></category></item><item><title><![CDATA[k8S之Centos离线安装]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/125829384</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/125829384</guid><author>pc_fly</author><pubDate>Mon, 25 Jul 2022 00:00:18 +0800</pubDate><description><![CDATA[离线安装k8s集群]]></description><category></category></item><item><title><![CDATA[Apache Kylin的使用感受]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/125355498</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/125355498</guid><author>pc_fly</author><pubDate>Sun, 19 Jun 2022 11:36:14 +0800</pubDate><description><![CDATA[kylin的使用感受]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap的扩容]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/125108562</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/125108562</guid><author>pc_fly</author><pubDate>Sat, 04 Jun 2022 00:45:53 +0800</pubDate><description><![CDATA[ConcurrentHashMap（以下简称CHM）扩容的实现非常精妙，可以说是CHM的精髓所在。它可以在不启用额外线程的情况下，借用已有的线程实现快速扩容，同时还可以保证线程安全。下面我们不妨带着下面这几个问题一块儿来看看CHM的源码。
...]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap源码分析之计数：addCount、fullAddCount、size]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/125024356</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/125024356</guid><author>pc_fly</author><pubDate>Sun, 29 May 2022 20:56:30 +0800</pubDate><description><![CDATA[ConcurrentHashMap（以下简称CHM）的计数比较有特色，跟很多实现不同的是，CHM并没有一个专门的属性数据，在实现上也没有用锁来同步。那么它到底是怎么实现的呢？
CHM计数的总体原理
CHM在实现计数时，主要借助的是baseCount和counterCells（数组）两个属性。

baseCount是原生类型long，默认值0L
baseCount在首次添加元素的时候设置为1
视并发情况的不同，可能在addCount中赋值，也可能在fullAddCount中赋值，且仅赋值一次
counterC]]></description><category></category></item><item><title><![CDATA[ConcurrentHashMap源码分析之put、putVal]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/125014978</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/125014978</guid><author>pc_fly</author><pubDate>Sat, 28 May 2022 21:14:44 +0800</pubDate><description><![CDATA[ConcurrentHashMap源码分析之put、putVal]]></description><category></category></item><item><title><![CDATA[C++ 11的enable_shared_from_this]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/124621421</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/124621421</guid><author>pc_fly</author><pubDate>Fri, 06 May 2022 23:55:28 +0800</pubDate><description><![CDATA[C++ 11的提供了一个模板类std::enable_shared_from_this。
目的
为安全获取当前对象的shared_ptr提供方便。
原因
一般在对象的函数中，是不可以返回一个指向this指针的shared_ptr。因为如果当前对象已经析构，当shared_ptr再次析构时，因为其管理的指针已经不再合法，所以会导致Undefined行为。
如果实在有这种需求，就应该使用std::enable_shared_from_this提供的shared_from_this方法获取。
使用
class S]]></description><category></category></item><item><title><![CDATA[【解决】g++: error trying to exec ‘cc1plus’: execvp]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/124551711</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/124551711</guid><author>pc_fly</author><pubDate>Tue, 03 May 2022 10:44:26 +0800</pubDate><description><![CDATA[项目场景：
Linux编译安装gcc找不到cc1plus
问题描述
g++: error trying to exec ‘cc1plus’: execvp:

原因分析：
网上很多说gcc和g++版本不匹配，说重新安装的。拜托，不要再抄袭了。
实际在linux系统中无法执行某个程序，

要么是目标文件真不存在，
要么存在，但是当前用户权限不足

编译安装的gcc，由于要安装到/usr/local，所以需要高权限的用户。这时大家一般喜欢使用sudo make install。这里比较容易出现问题，sudo之后]]></description><category></category></item><item><title><![CDATA[Spring Boot的初始化过程]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/70313467</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/70313467</guid><author>pc_fly</author><pubDate>Fri, 21 Apr 2017 12:27:51 +0800</pubDate><description><![CDATA[Spring Boot的初始化过程Spring Boot是开发微服务的不二利器。它遵从Convention over Configuration原则，看上去非常简约，但实际底下却做了很多工作。本文从Spring Boot应用程序的初始化过程入手，讲解一下其实现细节。 
一般Spring Boot的应用都是从main函数开始，调用SpringApplication.run函数。SpringApplic]]></description><category></category></item><item><title><![CDATA[【转帖】计算机体系结构——存储体系]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2489921</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2489921</guid><author>pc_fly</author><pubDate>Wed, 28 May 2008 12:57:00 +0800</pubDate><description><![CDATA[http://blog.youkuaiyun.com/iwainfo/archive/2004/12/14/216228.aspx本章重点是页式虚拟存储器映象及地址变换过程；LRU，FIFO的替换算法；LRU的堆栈分析过程；Cache组相联地址映象和LRU块替换；虚存，Cache的性能分析，要求达到综合应用的水平。本章是重点章。要求掌握的基本概念有：LRU,FIFO ,全相联、直接映象，组相联，快表、命中]]></description><category></category></item><item><title><![CDATA[初始化与赋值是不同的操作]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2459504</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2459504</guid><author>pc_fly</author><pubDate>Mon, 19 May 2008 21:44:00 +0800</pubDate><description><![CDATA[l 赋值仅发生在调用赋值运算符时，l 初始化涉及较广，包括声明变量、函数返回、参数传递、异常捕捉。 对于built-in类型，int、char、double、float等，赋值和初始化没有什么不同，都是向指定内存中复制数值。但是对于用户自定义的类型，则有更多的事情要做，特别是类对象，赋值操作在通常情况下是先将当前对象析构，然后再根据右值重新构造新的对象。]]></description><category></category></item><item><title><![CDATA[必须要使用成员初始化列表的情况]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2457924</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2457924</guid><author>pc_fly</author><pubDate>Mon, 19 May 2008 13:12:00 +0800</pubDate><description><![CDATA[1. 成员是对象；2. 成员是Const；3. 成员是引用。]]></description><category></category></item><item><title><![CDATA[System.StackOverflowException异常]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2425297</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2425297</guid><author>pc_fly</author><pubDate>Fri, 09 May 2008 21:07:00 +0800</pubDate><description><![CDATA[按照MSDN的解释，这个异常在有很多正在被调用的函数时抛出。而从实践角度来讲，通常是因为递归层次过深造成的。最好在抛出异常的CallStack中检查一下有没有循环递归调用。特别是那种A调B，B又调A，而且没有终结条件的那种代码。]]></description><category></category></item><item><title><![CDATA[能用if- else/throw-exception进行错误/异常处理的地方就不要用assert。]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2409820</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2409820</guid><author>pc_fly</author><pubDate>Wed, 07 May 2008 14:52:00 +0800</pubDate><description><![CDATA[ 首先我们要明确assert的作用，它是在Debug版中断言某种状态或值，或者说在那一时刻，软件应该是某种状态，变量的值也是预期的。因此，从这个意义上说，应该使用assert的地方如果再加入if-else的错误处理就是画蛇添足、违反逻辑了。或许有人会说：”assert只在Debug版本中有效，那Release版怎么办？”l 用if-else。既然Release版有错误处理的需要，那么只]]></description><category></category></item><item><title><![CDATA[异常安全的函数（方法）]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2343650</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2343650</guid><author>pc_fly</author><pubDate>Tue, 29 Apr 2008 17:44:00 +0800</pubDate><description><![CDATA[所谓异常安全的函数是指：即便是在这个函数的调用过程中出现异常，也不会影响到重要的数据或状态。【异常安全原则】：尽量把可能抛出异常的代码写在函数的最前面，让异常尽量早地抛出，在改变重要数据或状态之前抛出异常。 让我们来比较两段代码：void f1(){         importantData.Invalidate();         data = getNewDat]]></description><category></category></item><item><title><![CDATA[尽量用C++的新式cast，而不是C的旧式cast]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2329020</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2329020</guid><author>pc_fly</author><pubDate>Fri, 25 Apr 2008 21:03:00 +0800</pubDate><description><![CDATA[ 1.         C++的cast精准，而C的cast模糊类型转换是经常出问题的地方，需要小心运用，尽量避免模糊的语义。l C式的cast，形似type（…），与非cast形式的构造函数调用相同，不易区别。l C式的cast功能强大，甚至可以将const变量转换成非const的变量，而调用者却毫无察觉，非常危险。const int a = 123;int b = (i]]></description><category></category></item><item><title><![CDATA[常引用（const reference）]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2319202</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2319202</guid><author>pc_fly</author><pubDate>Wed, 23 Apr 2008 21:57:00 +0800</pubDate><description><![CDATA[   一般引用只能初始化为变量的引用，不能是字面常量或临时变量（如函数返回值）。但常引用可以。如：     const int &a = 123;         const int &b = RefFun();特别是如果函数的参数声明为const reference，也可以传入字面常量。template T add( const T &a, const T &b ) ]]></description><category></category></item><item><title><![CDATA[商业计划书的写法]]></title><link>https://blog.youkuaiyun.com/pc_fly/article/details/2318618</link><guid>https://blog.youkuaiyun.com/pc_fly/article/details/2318618</guid><author>pc_fly</author><pubDate>Wed, 23 Apr 2008 17:35:00 +0800</pubDate><description><![CDATA[商业计划书最好就是十页篇幅：第一页是市场介绍；第二页分析市场问题；第三页写解决问题的方式；第四页调研市场；第五页分析竞争对手；第六页介绍核心竞争力；第七页写盈利模式；第八页写近期目标；第九页写资金预算；第十页就介绍团队。]]></description><category></category></item></channel></rss>