<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dansam的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dansam</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dansam]]></copyright><item><title><![CDATA[计算机和实际问题]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/134018143</link><guid>https://blog.youkuaiyun.com/dansam/article/details/134018143</guid><author>dansam</author><pubDate>Tue, 24 Oct 2023 19:11:46 +0800</pubDate><description><![CDATA[有 1000 个一模一样的瓶子，其中有 999 瓶是普通的水，有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在，你只有 10 只小白鼠和一星期的时间，如何检验出哪个瓶子里有毒药？2^10 = 1024，很明显，这个问题是可解的。]]></description><category></category></item><item><title><![CDATA[水池抽样算法]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/123657877</link><guid>https://blog.youkuaiyun.com/dansam/article/details/123657877</guid><author>dansam</author><pubDate>Tue, 22 Mar 2022 13:49:57 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[ThreadLocal的研究]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/120867972</link><guid>https://blog.youkuaiyun.com/dansam/article/details/120867972</guid><author>dansam</author><pubDate>Wed, 20 Oct 2021 16:10:05 +0800</pubDate><description><![CDATA[ThreadLocal是什么？
线程本地/局部变量，可以缓存数据到线程上，使数据在线程其他任何地方进行使用。如下：
ThreadLocal tl = new ThreadLocal();
tl.set("name=shenshaoqin");
String val = tl.get();    // val = "name=shenshaoqin";

ThreadLocal的原理？
ThreadLocal的原理其实特别简单，考虑一下，如果不用ThreadLocal，要怎么用Java实现类似的功能？其实就是]]></description><category></category></item><item><title><![CDATA[布隆过滤器]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/118276042</link><guid>https://blog.youkuaiyun.com/dansam/article/details/118276042</guid><author>dansam</author><pubDate>Sun, 27 Jun 2021 17:15:53 +0800</pubDate><description><![CDATA[布隆过滤器（Bloom Filter）是什么？
我的理解是，一种可以在缓存等系统中，可以通过简单快速的操作初步判断元素是否在系统的方法。（以算力换时间）
通俗讲：比如说，我现在有三个值x、y、z，通过某种规则编辑映射为1、2、3数字值；那么另一个值过来的时候，我用这个规则，把他也编成一个值，如果这个值不在1、2、3里面，那么这个值 【肯定不在】 这里面，如果这个值在1、2、3里，那么，这个值 【有较大的可能性】 在我现有的x、y、z，其实也是函数y=f(x)的思想， y相同，x不一定相同，y不同，x一定不同]]></description><category></category></item><item><title><![CDATA[字符串匹配算法的思考]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/105603035</link><guid>https://blog.youkuaiyun.com/dansam/article/details/105603035</guid><author>dansam</author><pubDate>Sat, 18 Apr 2020 22:48:35 +0800</pubDate><description><![CDATA[最近刚好回看了一下KMP算法，对KMP算法有了更深的理解，于是在这里记录一下，使用清晰的文字，将自己的理解记录归纳，目的是让没有看过KMP算法的能够通过此文理解KMP算法，因为我自己有可能某一天也会忘记。所以此文要能够令自己从一个“无知”的状态到理解。甚至进行代码的实现。
前置
待搜索串： Sn=S0S1S2…Sn。如：abbaabbaaba
待匹配串：Pm=P0P1P2…Pn。如：abbaaba...]]></description><category></category></item><item><title><![CDATA[关于maven插件的一点事（三）实践]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/104733493</link><guid>https://blog.youkuaiyun.com/dansam/article/details/104733493</guid><author>dansam</author><pubDate>Wed, 15 Apr 2020 23:40:13 +0800</pubDate><description><![CDATA[需求
需求：一个web项目，需要对其中某些jar包以及web代码进行加密，为了节省资源以及方便起见，不影响本地开发，只对用于测试和部署的war进行操作。
已知：加密程序是jar程序（但是还调用了 dll和so），只能加密jar/war包里的代码，加密时要设置jar/war原始依赖（包括servlet.jar），原操作是手工解war里的jar出来单个加密，再放回war包中。作为一个程序员，肯定是不能...]]></description><category></category></item><item><title><![CDATA[关于maven插件的一点事（二）插件]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/104729718</link><guid>https://blog.youkuaiyun.com/dansam/article/details/104729718</guid><author>dansam</author><pubDate>Sun, 08 Mar 2020 14:49:11 +0800</pubDate><description><![CDATA[配置
除了一些执行参数，完成插件目标和生命周期绑定之外，插件还有一些自己的参数需要配置。可以通过命令行或者在pom中配置进来。
命令行配置
命令行配置是通过Java自带的-D参数来进行配置的，-D 传递参数也比较常见，如 springboot运行时传递端口参数 java -Dserver.servlet.port=8800 -jar springbootdemo.jar 等。
Maven常见通过命...]]></description><category></category></item><item><title><![CDATA[关于maven插件的一点事（一）生命周期]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/104686595</link><guid>https://blog.youkuaiyun.com/dansam/article/details/104686595</guid><author>dansam</author><pubDate>Sun, 08 Mar 2020 11:15:33 +0800</pubDate><description><![CDATA[生命周期
提到maven插件,  就不得不理解maven的生命周期.  因为maven的生命周期是抽象的(一致统一的构建标准),各个阶段都是靠插件来完成的. maven有三套生命周期, clean生命周期, default生命周期(构建), site生命周期. 每个生命周期又包含多个阶段(phase). 不同生命周期是相互独立的.
clean生命周期
clean生命周期的目的是清理项目.包含 pr...]]></description><category></category></item><item><title><![CDATA[Vue环境搭建]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/103805441</link><guid>https://blog.youkuaiyun.com/dansam/article/details/103805441</guid><author>dansam</author><pubDate>Thu, 02 Jan 2020 16:15:42 +0800</pubDate><description><![CDATA[Vue

到 https://nodejs.org/en/download/ 下载安装包进行安装
相关命令

# 查看 node 版本
node -v  
# 查看 npm 版本（node包管理器）
npm -v
# 更新 npm
npm install npm@latest -g


hello world： 打开cmd，输入node回车，输入 console.log(“hello ...]]></description><category></category></item><item><title><![CDATA[关于https]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/102605493</link><guid>https://blog.youkuaiyun.com/dansam/article/details/102605493</guid><author>dansam</author><pubDate>Thu, 17 Oct 2019 14:54:57 +0800</pubDate><description><![CDATA[Client Hello: 客户端告诉服务器信息，如要访问的域名，TLS版本，支持的加密套装，给服务端生成的一个随机数
Server Hello: 服务端告诉客户端信息，选中的加密套装。如 签名校验使用的算法
服务器发送证书及其签发者证书，证书里面主要包括了证书的公钥、证书的适用公用名、证书的有效期还有它的签发者、签发者签名等信息。然后，客户端根据这些信息开始身份校验，验证信息是否真实。

...]]></description><category></category></item><item><title><![CDATA[TCP三次握手与四次挥手]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/102519676</link><guid>https://blog.youkuaiyun.com/dansam/article/details/102519676</guid><author>dansam</author><pubDate>Sat, 12 Oct 2019 15:02:12 +0800</pubDate><description><![CDATA[为什么需要第三次？如果没有第三次握手，那么server端在第二次回复就必须打开就绪，但是client端发起连接的过程有可能第一次握手延误（网络问题等），以致于认为本次握手失效（重连），那么，对这次失效的client请求进入就绪状态，会造成资源浪费。
另外，由于之后传输（聊天），是基于报文（一个一个字），多个报文可能会走不同的路由，导致报文无序，所以，握手还初始化商定了一个序列值（SYN=Syn...]]></description><category></category></item><item><title><![CDATA[clamav使用:定时扫描与提醒]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/100010216</link><guid>https://blog.youkuaiyun.com/dansam/article/details/100010216</guid><author>dansam</author><pubDate>Thu, 22 Aug 2019 11:45:43 +0800</pubDate><description><![CDATA[centos下安装与配置
官网上写的是比较清楚的了. clamav安装
sudo yum  -y groupinstall "Development Tools" 
sudo yum -y  install openssl openssl-devel libcurl-devel zlib-devel libpng-devel libxml2-devel json-c-devel bzip2-dev...]]></description><category></category></item><item><title><![CDATA[centos发送邮件配置]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/99998515</link><guid>https://blog.youkuaiyun.com/dansam/article/details/99998515</guid><author>dansam</author><pubDate>Thu, 22 Aug 2019 11:39:48 +0800</pubDate><description><![CDATA[QQ

# vi /etc/mail.rc
set from=3564039413@qq.com
set smtp=smtp//smtp.qq.com:587
set smtp-auth-user=3564039413@qq.com
#授权码
set smtp-auth-password=rkhrjavmbtzdcjdg
set smtp-auth=login
set smtp-use-star...]]></description><category></category></item><item><title><![CDATA[JAVA代码proguard混淆]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/99090425</link><guid>https://blog.youkuaiyun.com/dansam/article/details/99090425</guid><author>dansam</author><pubDate>Mon, 12 Aug 2019 11:14:05 +0800</pubDate><description><![CDATA[一,通用设置
#输出log
-verbose
#略过warning,不输出warning(有warning时无法继续)
-ignorewarnings
#不输出warning,这里可以限定某些类不要warning
-dontwarn 
#不校验.校验可以提高java虚拟机的加载效率(java6)
-dontpreverify
#不混淆
#-dontobfuscate
#需要混淆的目录 
#-obf...]]></description><category></category></item><item><title><![CDATA[关于JAVA代码性能优化一点记录]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/93710917</link><guid>https://blog.youkuaiyun.com/dansam/article/details/93710917</guid><author>dansam</author><pubDate>Tue, 02 Jul 2019 16:01:24 +0800</pubDate><description><![CDATA[写在前面
性能优化是一个包含很广有深度的知识，相对于自己浅显有限的经验实在有点难度。这里只是记录自己工作中一点常见的问题。
正文
性能说明：代码执行的通常主要瓶颈在第三方上（即其它的地方执行速度），例如磁盘IO 和 网络 IO，由于网络IO，取决于网络条件，更是有很大不确定性如延迟，所以通常如果优化代码速度，首要考虑的就是这一方面。
常见例子：在 循环里 里调用数据库查询或更改，这个是最常见的，因...]]></description><category></category></item><item><title><![CDATA[JAVA获取MYSQL索引数据]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/90035296</link><guid>https://blog.youkuaiyun.com/dansam/article/details/90035296</guid><author>dansam</author><pubDate>Thu, 09 May 2019 15:08:30 +0800</pubDate><description><![CDATA[最近工作上有个需求，要比较索引，因此要获取数据库的原数据。按照正常方式获取 java.util.sql.DatabaseMetaData.getIndexInfo获取到结果集ResultSet，但是有一个需要的信息–创建索引时的length却获取不到，即如下， alter table table_name add index index_name(column_name(length))。我要获取...]]></description><category></category></item><item><title><![CDATA[算法导论三-分治法]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/89786612</link><guid>https://blog.youkuaiyun.com/dansam/article/details/89786612</guid><author>dansam</author><pubDate>Sat, 04 May 2019 23:51:01 +0800</pubDate><description><![CDATA[分治法

简单说，分治法即分而治之，即将问题分化为小问题来处理。
简化起来看有二到三个步骤：

分：将问题分解为若干子问题（复杂度n降低）。
治：递归解决子问题。
合：合并子问题的解。


常见分治法的递归式为： T(n) = 2T(n/2) + θ(n) ，即分为两个解法一样的子问题，以及额外的线性时间。满足主方法的条件2，可得解为： T(n) = n * lg n。


...]]></description><category></category></item><item><title><![CDATA[关于Tomcat的session共享引起的思考]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/89599830</link><guid>https://blog.youkuaiyun.com/dansam/article/details/89599830</guid><author>dansam</author><pubDate>Sat, 27 Apr 2019 15:50:57 +0800</pubDate><description><![CDATA[起因
由于在部署项目的时候发现，每次部署都要往tomcat的lib加 `jedis.jar，redis-session.jar，commons-pool.jar，而且只能使用tomcat7x的版本来部署。于是想了解一下怎么回事，了解一下tomcat和redis-session的源码。
关于session管理器
tomcat的session通过session管理器产生。内置的session管理器类图...]]></description><category></category></item><item><title><![CDATA[mysql主从配置]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/89381262</link><guid>https://blog.youkuaiyun.com/dansam/article/details/89381262</guid><author>dansam</author><pubDate>Thu, 18 Apr 2019 16:11:05 +0800</pubDate><description><![CDATA[主从原理
mysql通过binlog 的传递来实现主从，主库binlog里记录了mysql执行的事件，从库获得binlog之后，回放binlog的事件，达到同步的目的。mysql当前写入的binlog会在每次重启或者FLUSH LOG等命令之后切换。
连接mysql之后执行 show binlog events ;可以查看binlog内容。
主库配置
log-bin=master-bin     ...]]></description><category></category></item><item><title><![CDATA[存储过程和触发器调试]]></title><link>https://blog.youkuaiyun.com/dansam/article/details/89084580</link><guid>https://blog.youkuaiyun.com/dansam/article/details/89084580</guid><author>dansam</author><pubDate>Mon, 08 Apr 2019 11:25:25 +0800</pubDate><description><![CDATA[当我们的存储过程或触发器写好，符合语法后，怎么知道运行时里面上下文是正确的呢？
无工具时

回想刚开始学习某种语言时，如java，那时候要知道运行到某一处数据是否正确，除了Assert之外就是print输出来了，输出某个数据看是否符合预期，这是我们最基础的调试方式之一。
当没有其它工具的时候，SQL也可以如此，可以通过select输出来。trigger没有控制台输出，因此我们需要把输出定位到表，这...]]></description><category></category></item></channel></rss>