<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[胡渣大叔的技术专栏]]></title><description><![CDATA[java]]></description><link>https://blog.youkuaiyun.com/hellwhj</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hellwhj]]></copyright><item><title><![CDATA[磁盘满了报警了的解决步骤（df.bytes.used.percent）]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/125576381</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/125576381</guid><author>hellwhj</author><pubDate>Sat, 02 Jul 2022 18:43:10 +0800</pubDate><description><![CDATA[df -h看是哪个挂载点]]></description><category></category></item><item><title><![CDATA[Spark报错NoSuchMethodError或ClassNotFoundException]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/125515691</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/125515691</guid><author>hellwhj</author><pubDate>Wed, 29 Jun 2022 10:28:41 +0800</pubDate><description><![CDATA[Spark-submit提交的任务抛出了java.lang.NoSuchMethodError或者ClassNotFoundException问题分析方法]]></description><category></category></item><item><title><![CDATA[一键顺利安装tensornet]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/113113299</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/113113299</guid><author>hellwhj</author><pubDate>Mon, 25 Jan 2021 15:44:48 +0800</pubDate><description><![CDATA[背景：Tensornet介绍

TensorNet是一个构建在TensorFlow之上针对广告推荐等大规模稀疏场景优化的分布式训练框架。TensorNet的目标是让所有使用TensorFlow的开发者可以快速的、方便的训练出稀疏参数超过百亿的超大模型。

项目地址：https://github.com/Qihoo360/tensornet



目标：安装和编译好环境，运行官方demo

要想执行官方提供的第一个demo需要先搞定环境，你以为直接把项目官方提供的Dockerfile下载下来直接docke..]]></description><category></category></item><item><title><![CDATA[超直白超简单-线性模型和fm模型特征参数的举例说明]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/108975108</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/108975108</guid><author>hellwhj</author><pubDate>Fri, 09 Oct 2020 11:09:22 +0800</pubDate><description><![CDATA[电影名A，类型动作（010），主演X（0100000），评分8

电影名B，类型动作（010），主演Y（0010000），评分7

电影名C，类型文艺（001），主演X（0100000），评分6



1.简单模型，w只是一个数字：



 8 = 动作*W1 + 主演X*W2   w为：W1=4,W2=4

 7 = 动作*W1 + 主演Y*W2  w为：W1=4,W2=3

 6 = 文艺*W1 + 主演X*W2  w为：W1=3,W2=3



 y = x1*w1 + ...]]></description><category></category></item><item><title><![CDATA[java/c++跨语言base64加密解密]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/107064831</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/107064831</guid><author>hellwhj</author><pubDate>Wed, 01 Jul 2020 15:29:57 +0800</pubDate><description><![CDATA[一定要用java原生的java.util.Base64，才能保证在c++可以正确decode！

比如：


在java用这个encode：java.util.Base64.getEncoder().encodeToString(testBytes);


在c++用这个decode：


static const std::string base64_chars = 
             "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
             "abcdefghijklm]]></description><category></category></item><item><title><![CDATA[scala/java/c++使用murmur3计算hash值保持跨语言之间一致]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/107064265</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/107064265</guid><author>hellwhj</author><pubDate>Wed, 01 Jul 2020 15:20:06 +0800</pubDate><description><![CDATA[目标：在java/scala中对word计算出无符号数字（uint64）的hash值

方案：

因为java没有uint64，而c++的murmur3是用的uint64，所以java这边直接asLong会出现负数，所以需要取原始二进制值，转换成guava提供的无符号long

scala端：


import com.google.common.hash.Hashing
import com.google.common.primitives.UnsignedLong
...
private def has]]></description><category></category></item><item><title><![CDATA[定长队列，新元素会把旧元素挤掉]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/80265686</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/80265686</guid><author>hellwhj</author><pubDate>Thu, 10 May 2018 12:07:09 +0800</pubDate><description><![CDATA[/**
 * 定长队列，新元素会把旧元素挤掉
 * Created by wanghongji on 17-11-24.
 */
public class CircleArrayBlockingQueue&amp;lt;E&amp;gt; extends ArrayBlockingQueue {

    private int capacity = 16;
    final ReentrantLock loc...]]></description><category></category></item><item><title><![CDATA[5分钟真正理解mysql事务隔离级别和封锁协议]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79752827</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79752827</guid><author>hellwhj</author><pubDate>Fri, 30 Mar 2018 11:07:10 +0800</pubDate><description><![CDATA[排他锁和共享锁1.排他锁的作用范围是：执行语句开始，到在事务提交时才会释放。2.本事务对某数据加了排他锁，则其他事务就不能对该数据加任何锁（包括排他锁和共享锁）。3.本事务对某数据加了共享锁，则其他事务也可以对该数据加共享锁。四个隔离级别1.Read Uncommitted（读取未提交内容）。其现象为脏读，即可以读取到其他事务未提交的数据。【例子1】：有两个事务同时开始，两者都在10秒后执行完毕，...]]></description><category></category></item><item><title><![CDATA[HashMap的put方法源码分析]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79565877</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79565877</guid><author>hellwhj</author><pubDate>Thu, 15 Mar 2018 11:48:28 +0800</pubDate><description><![CDATA[通俗解析

hashMap的put方法



final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
                   boolean evict) {
        Node&amp;lt;K,V&amp;gt;[] tab; Node&amp;lt;K,V&amp;gt; p; int n, i;
        // 如果数组为空或...]]></description><category></category></item><item><title><![CDATA[自顶向下的性能优化与架构设计]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79558583</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79558583</guid><author>hellwhj</author><pubDate>Wed, 14 Mar 2018 18:38:48 +0800</pubDate><description><![CDATA[1.电子商务网站主搜索页，与主交易系统各自独立。由交易系统把商品定时全量同步给主搜，同时商品变更时做增量通知。2.交易系统，垂直按业务分库：订单库、商品库、用户库。每个库一个应用，提供基础业务dubbo服务。由pc和无线的展现层去调用。3.各个库都做读写分离：在从库读，主库写。主从同步。4.前后端分离，开发和部署都是分离的。开发时约定好后端拍给前端的数据格式。且图片等静态内容可以利用cdn加速。5...]]></description><category></category></item><item><title><![CDATA[tcp协议相关问题答疑]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79495686</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79495686</guid><author>hellwhj</author><pubDate>Fri, 09 Mar 2018 12:10:25 +0800</pubDate><description><![CDATA[1.为什么四次挥手而不是三次挥手？为何不能像握手时候一样server把ack和fin(syn)用同一步发过去？答：原因是挥手第二步（server给client发ack）之时，server这边可能还有数据没有对外传输完。所以等传输完了再进行第三步（给client发fin）。2.何种情况会产生rst？答：我把它分为两类，一种是client给server发push时，server已经在这之前接受过fin...]]></description><category></category></item><item><title><![CDATA[排序算法]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79047151</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79047151</guid><author>hellwhj</author><pubDate>Fri, 12 Jan 2018 18:36:16 +0800</pubDate><description><![CDATA[谢谢真实的归宿http://blog.youkuaiyun.com/hguisu/article/details/7776068
虽然以下代码是抄他的，但是我改成了java版本的，跟他并不一样。并且我有修复它里面一些bug。

插入排序（直接插入排序VS希尔排序）
public class SortTest {

    public static long sum = 0;

    static ]]></description><category></category></item><item><title><![CDATA[使用awk对某列去重并且可保留其他列]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/79036781</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/79036781</guid><author>hellwhj</author><pubDate>Thu, 11 Jan 2018 17:38:16 +0800</pubDate><description><![CDATA[同事说需要统计日志中按url的path去重之后的结果，结果中要保留参数。相同url不同参数的，只保留第一行。

理论上各种命令都是流式处理，一行一行的处理。每道命令都相当于一个过滤器。比如你要按某列去重，则事先把数据cut到只剩你需要去重的这一列。对url中的path做sort+uniq。

但是这样会导致参数都没了。所以不能用这个。




最后成功的命令如下：



]]></description><category></category></item><item><title><![CDATA[同步、异步、阻塞、非阻塞]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/78863130</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/78863130</guid><author>hellwhj</author><pubDate>Thu, 21 Dec 2017 14:05:36 +0800</pubDate><description><![CDATA[老张在烧一壶水。
1.老张把水壶放到炉子上之后，打开火，然后一直坐在旁边盯着水壶，直到水开。这叫同步、阻塞。
2.老张突然发现一直盯着很浪费时间，于是他就到隔壁房间去看电视，隔一会儿过来看一眼。这叫同步，非阻塞。
3.老张通过电视广告看到一款新式水壶，可以在烧开之后发出鸣叫声。于是买了一个，这次，他不用隔一会儿过来看一眼了，只需要等着水壶鸣叫再过来了。老张觉得自己很聪明。这叫异步、非阻塞。]]></description><category></category></item><item><title><![CDATA[java实现大数减法算法]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/78357388</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/78357388</guid><author>hellwhj</author><pubDate>Thu, 26 Oct 2017 18:49:29 +0800</pubDate><description><![CDATA[public static char[] subTract(int[] a,int[] b){
    int cLength = b.length;
    char sign = '+';
    // 长度大，肯定正数
    if(a.length > b.length){
        cLength = a.length;
        sign = '+';
    } else]]></description><category></category></item><item><title><![CDATA[JAVA线程安全相关数据结构使用建议]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/76576933</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/76576933</guid><author>hellwhj</author><pubDate>Wed, 02 Aug 2017 14:31:29 +0800</pubDate><description><![CDATA[什么是线程安全的数据结构？       简单的说就是不同线程可以访问同一份数据时，它们对这份数据的访问是无序的随机的，是你不可控的。比如说你的房间谁都可以进来，但是你不确定他们谁先来谁后来或者可能同时来。你想让整件事更有秩序在你的掌控之中，至少不能同时进来，于是就给房间上一把锁，每次只给一个人钥匙，他出来还钥匙之后你再给下一个人。这种带锁或等价机制的数据结构，就是线程安全的。什么时候需要使用线程安...]]></description><category></category></item><item><title><![CDATA[安装openresty失败的解决]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/70175099</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/70175099</guid><author>hellwhj</author><pubDate>Fri, 14 Apr 2017 18:39:07 +0800</pubDate><description><![CDATA[官网上的安装步骤如下：tar -xzvf openresty-VERSION.tar.gz
cd openresty-VERSION/
./configure
make
sudo make install但是我进行到configure这步就报错：checking for PCRE library ... foundchecking for PCRE JIT support ... foundchec]]></description><category></category></item><item><title><![CDATA[springMVC源码分析 从DispatcherServlet说起]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/70174403</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/70174403</guid><author>hellwhj</author><pubDate>Fri, 14 Apr 2017 17:16:12 +0800</pubDate><description><![CDATA[1.SpringMVC的Controller能够接受请求，是因为使用了DispatcherServlet作为所有请求的入口，事先要把这个Servlet配置到web.xml，并且把想走SpringMVC的请求的url（用通配符方式比如*.json）也配置到web.xml
2.如下就是doDispatch方法。
     先加载bean

     然后执行切面前置方法:  先执行preHan]]></description><category></category></item><item><title><![CDATA[tomcat结构和原理]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/70170519</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/70170519</guid><author>hellwhj</author><pubDate>Fri, 14 Apr 2017 11:27:18 +0800</pubDate><description><![CDATA[1.tomcat结构图 
 
2.结构描述 
2.1 Server：一个catalina服务器 
2.2 Service：服务，负责处理所有Connector所获得的客户请求。由多个Connector和一个Engine组成。  
2.3 Connector：连接器，负责在指定端口上监听请求，并将获得的请求交给Engine来处理，从Engine处获得回应并返回客户。Tomcat默认有两个连接器：1.监]]></description><category></category></item><item><title><![CDATA[virtualbox剪贴板失效问题的解决]]></title><link>https://blog.youkuaiyun.com/hellwhj/article/details/55100131</link><guid>https://blog.youkuaiyun.com/hellwhj/article/details/55100131</guid><author>hellwhj</author><pubDate>Tue, 14 Feb 2017 15:31:38 +0800</pubDate><description><![CDATA[1.确认一下，虚拟机设置里面的【常规】-【高级】-【共享粘贴板】选择的是【双向】，如果不是要改过来。
2.打开任务管理器， 杀掉 VBoxTray.exe
3.执行C:\WINDOWS\system32\VBoxTray.exe
现在你就可以从虚拟机里向外copy东西了。
4.虚拟机关闭（快速休眠即可），再打开。
现在就可以从外面向虚拟机里面copy东西了。]]></description><category></category></item></channel></rss>