<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[programmer_hard的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/programmer_hard</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; programmer_hard]]></copyright><item><title><![CDATA[多线程中每个子线程的事务（@Transactional注解只针对某一个子线程生效）]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/127662922</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/127662922</guid><author>programmer_hard</author><pubDate>Thu, 03 Nov 2022 08:30:21 +0800</pubDate><description><![CDATA[多线程中子线程事务]]></description><category></category></item><item><title><![CDATA[关于dataworks中函数wm_concat函数排序问题]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/127422122</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/127422122</guid><author>programmer_hard</author><pubDate>Thu, 20 Oct 2022 10:49:25 +0800</pubDate><description><![CDATA[关于阿里datawokrs平台wm_concat()函数排序问题]]></description><category></category></item><item><title><![CDATA[关于人大金仓（kingbase）数据库一个坑]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/118406253</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/118406253</guid><author>programmer_hard</author><pubDate>Fri, 02 Jul 2021 10:21:01 +0800</pubDate><description><![CDATA[公司最近在做国产化改造，遇到一个问题挺坑的，记录一下 避免以后再踩。
问题是POWER函数，作用：POWER(a，b), 返回 a的b次方。
直接上图看执行结果：
mysql：

人大金仓：

可以看出来同样的一条sql结果是不一样的，原因是在Kingbase（人大金仓）中，他的一些规则和java有点像，比如	这里的1/3，因为是两个INTEGER类型做运算，所以他的结果为0，而任何数的0次方都为1，所以kingbase的power函数里，后面一个数不能直接写1/3，写为1.0/3.0就可以了。

总结：
]]></description><category></category></item><item><title><![CDATA[gitlab 使用]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/107506309</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/107506309</guid><author>programmer_hard</author><pubDate>Wed, 22 Jul 2020 10:45:03 +0800</pubDate><description><![CDATA[最近使用git对git的理解又加深了一些,做个小笔记记录一下.
我们使用git大概分为几部:
1.从git上检出代码:     git clone  项目url  
2.本地修改
3.提交到本地仓库:  add + commit操作

4.从远程仓库拉取代码(保证上传前是最新代码):git pull   项目url
通过idea拉取后会自动将更新的文件上传到本地仓库

5.提交到远程仓库.  git push  项目url

复杂一点的就是分支操作:
当我们没有权限向主干推送代码时,我们会建立一个分支(gi]]></description><category></category></item><item><title><![CDATA[最全的Activiti入门学习笔记]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/106351443</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/106351443</guid><author>programmer_hard</author><pubDate>Wed, 27 May 2020 16:03:58 +0800</pubDate><description><![CDATA[之前看某招聘软件上好多需要有Activiti开发经验,所以学习一下.主要先弄清楚基本操作, 在此记录一下.
图:
首先需要导入插件actiBPM(如果IDEA搜不到的话可以去IDEA官网下载插件然后导入):

导入插件后就会发现在创建文件时有一个BPMNFile选项:

创建BPMNFile文件并取名就可以开始画图了:

右边就是可选择的图标,直接拖在中间即可(想吐槽一下移动的时候不显示移动后的位置,想对准需要对好几次).将两个模块连接需要点击方块中间的点然后往下拉,拉到目标方块.


完善一下流程图:

]]></description><category></category></item><item><title><![CDATA[java实现五子棋小游戏]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/105978650</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/105978650</guid><author>programmer_hard</author><pubDate>Thu, 07 May 2020 18:31:15 +0800</pubDate><description><![CDATA[经常听人说不会算法的程序员不是没有灵魂的,于是也想跟随大势上一波车,于是最近在看一些简单的算法,表示挺让人头秃的.
本来是学习稀疏数组和二维数组的转换,发现二维数组的结构挺像棋盘的,就萌生了自己写五子棋的想法(因为不会围棋…).

好了,废话不多说,直接贴代码:
package com.ceeeemall;

import java.util.Scanner;

public class Ches...]]></description><category></category></item><item><title><![CDATA[动态代理入门学习笔记]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/105006276</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/105006276</guid><author>programmer_hard</author><pubDate>Mon, 23 Mar 2020 13:45:56 +0800</pubDate><description><![CDATA[动态代理实现的两种方式:
jdk内置动态代理
cglib
jdk内置:
在java.lang.reflect包下有一个工具类:
Proxy存在一个方法:
 @CallerSensitive
    public static Object newProxyInstance(ClassLoader loader,
                                          C...]]></description><category></category></item><item><title><![CDATA[全文检索及ES学习笔记]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104918397</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104918397</guid><author>programmer_hard</author><pubDate>Thu, 19 Mar 2020 13:23:59 +0800</pubDate><description><![CDATA[上一篇学习了lucene原理及简单的使用.这次基于lucene上学习一下ES的使用.
之前在linux上部署过ES(之前的文章有部署流程),然后今天启动发现启动不起来,报错
No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
于是搜了一下,ES启动报错No fact...]]></description><category></category></item><item><title><![CDATA[全文检索及lucene学习笔记]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104859010</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104859010</guid><author>programmer_hard</author><pubDate>Sun, 15 Mar 2020 20:35:32 +0800</pubDate><description><![CDATA[之前看过也部署过ES,但和MQ一样,认识的很浅导致现在也没什么印象,所以这里也从全文检索开始了解和学习.
全文检索的概念:
全文检索是指以文本作为检索对象,找出含有指定词汇的文本。全面、准确和快速是衡量全文检索系统的关键指标。
关于全文检索，我们要知道：1，只处理文本。2，不处理语义。3，搜索时英文不区分大小写。4，结果列表有相关度排序。5,并且可以对结果具有过滤高亮的功能
原文地址:  原文地址...]]></description><category></category></item><item><title><![CDATA[MQ学习笔记]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104799502</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104799502</guid><author>programmer_hard</author><pubDate>Wed, 11 Mar 2020 19:40:00 +0800</pubDate><description><![CDATA[之前写过关于ActiveMQ的学习笔记,然后面试时被问到MQ时依然不知道从哪开始说起,并且我发现即使写了ActiveMQ相关的学习笔记,然后并没什么卵用,依然忘的比较彻底.
然后我就意识到我的学习方法不太对,因为我对于MQ的认识只是停留在了很浅的一个层面,只是简单的认为它是一个存储消息的容器,需要用到的时候对MQ进行存取操作就行了.
然而如果我先从MQ开始入手学习,在学习ActiveMQ或者Rab...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记---------堆内存模型]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104565030</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104565030</guid><author>programmer_hard</author><pubDate>Fri, 28 Feb 2020 22:27:08 +0800</pubDate><description><![CDATA[直接先上图:

可以看到在堆内存中分了Old区和young区两个大区,young区又分为Eden区和Survivor区(简称S区),S区又分成了S0和S1.
我们都知道,堆内存存放的是成员变量，也称为属性，在方法外、在类内定义的变量。随着对象的创建而产生，随着对象的销毁而收回。而不同的对象生命周期也不同,因此生命周期较长的对象存放在Old区,生命周期较短的对象存放在young区.
young区为什...]]></description><category></category></item><item><title><![CDATA[JVM学习笔记---------类加载机制]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104564195</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104564195</guid><author>programmer_hard</author><pubDate>Fri, 28 Feb 2020 21:45:00 +0800</pubDate><description><![CDATA[说类加载器之前先说说类加载机制.
类加载机制:
1. 概念:
虚拟机把class文件加载到内存,并对数据进行检验,转换分析和初始化,形成虚拟机能够使用的java文件.
2.加载步骤:
1) 装载:
a. 查找和导入class文件
b. 类加载器Classloader加载文件
类加载器主要做了三件事情:
1.通过一个类的全限定名获取定义此类的二进制字节流
2.将这个字节流所代表的静态存储结构转换为方...]]></description><category></category></item><item><title><![CDATA[Mysql学习笔记------锁]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104459683</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104459683</guid><author>programmer_hard</author><pubDate>Sun, 23 Feb 2020 16:07:03 +0800</pubDate><description><![CDATA[锁的基本类型:
共享锁:
共享锁又称为读锁,简称S锁,
加锁方式:
Select *  from xxx where id = 1 LOCK IN SHARE MODE;
释放锁: commit/rollback;
它的特点我们通过测试试一下:
现有测试表t1:

开启事务并给数据加共享锁:

开启另一个事务也对该数据加锁:

此时我们依然能够加锁成功(查询出结果即为成功),因此可以得出一个结论,...]]></description><category></category></item><item><title><![CDATA[Mysql学习笔记------事务]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104436482</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104436482</guid><author>programmer_hard</author><pubDate>Fri, 21 Feb 2020 23:04:01 +0800</pubDate><description><![CDATA[相信只要是程序员,都知道事务.今天也算是复习吧,将事务在梳理一遍.
首先就是四大特性:
原子性(Atomicity):   不可再分的特性,要么都成功,要么都失败,
一致性(Consistent): 保证事务前后数据的完整性
隔离性(Isolation):   当多个事务并发操作时,每个事务之间相互独立,互不干扰
持久性(Durable):   操作成功后,数据可以永久保存.
事务并发带来的问题:...]]></description><category></category></item><item><title><![CDATA[Mysql学习笔记------索引]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104401959</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104401959</guid><author>programmer_hard</author><pubDate>Wed, 19 Feb 2020 23:02:23 +0800</pubDate><description><![CDATA[索引内容比较多,一次性学不完就分批记录吧.
说起优化sql,很多人第一反应就是添加索引,那索引到底是什么,为什么能优化sql? 这也是我学习索引的目的.
概念:  索引是协助快速查询,更新数据库表中数据的有序的数据结构.
Mysql的数据模型:
这也是我今天学习的重点,我一直认为想对一项技术了解的更深入,不妨从它为什么被创造,解决了哪些问题开始了解.
先从有序数组,链表结构说起,这两种结构是我们常...]]></description><category></category></item><item><title><![CDATA[Mysql学习笔记------存储引擎]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104384270</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104384270</guid><author>programmer_hard</author><pubDate>Tue, 18 Feb 2020 22:43:06 +0800</pubDate><description><![CDATA[存储引擎可以从一条更新sql流程说起
更新sql之前也是需要将对应数据查询出来的,因此与查询步骤是一致的,指导存储引擎,因为是涉及到更新数据的,所以存储引擎需要将数据更新到磁盘.但用户进行更新操作并不是直接操作磁盘数据的! 而是操作InnoDB Buffer pool缓冲池,缓冲池会将数据写入到磁盘(目的是为了减少I/O操作,降低数据库压力)
问题来了:
1.这样操作是否会造成内存数据和磁盘数据不...]]></description><category></category></item><item><title><![CDATA[Mysql学习笔记------架构]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104383746</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104383746</guid><author>programmer_hard</author><pubDate>Tue, 18 Feb 2020 22:24:29 +0800</pubDate><description><![CDATA[一、先从一条查询sql语句的流程开始说起:
先说流程,然后逐个解释:
Client --&gt;  缓存  --&gt; 解析器 --&gt; 预处理器 --&gt; 查询优化器  --&gt; 生成执行计划 --&gt; 执行引擎 --&gt; 存储引擎

Client:  客户端发起查询请求,连接
缓存:  查询时若缓存中有想要的数据则直接到执行引擎步骤(Mysql5.7版本后缓存功能默认关闭...]]></description><category></category></item><item><title><![CDATA[记一次异常Caused by: java.lang.ClassNotFoundException: cn.exrick.xboot.core.entity.XXX]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104215631</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104215631</guid><author>programmer_hard</author><pubDate>Fri, 07 Feb 2020 22:20:12 +0800</pubDate><description><![CDATA[正在学习从github拉的一个项目,在自己编写的时候将实体类复制过来之后,完成登录功能时提示错误:

查看后台报错信息

报错代码:

这里显示的是找不到User类,问题很容易理解,关键就是这个包路径,在我项目中是不存在的,我已经全部都修改为我自己的url(package com.xxx.xboot.core.entity.User;)了,
于是我随便找了一段业务代码去尝试读取User类,结果是可...]]></description><category></category></item><item><title><![CDATA[es学习笔记---es客户端的安装]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104006343</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104006343</guid><author>programmer_hard</author><pubDate>Thu, 16 Jan 2020 16:00:18 +0800</pubDate><description><![CDATA[安装好es后,需要在本地装客户端才能更方便使用es,我是用的是head-master(需要node.js环境).
客户端安装步骤:
1.安装node.js,
2.解压下载好的head-master压缩文件.
3.在解压后的目录进入命令行窗口,依次执行 npm install -g grunt-cli   npm install
4.执行grunt server启动服务

在本地访问:

此处可能会...]]></description><category></category></item><item><title><![CDATA[elasticsearch学习笔记---linux安装]]></title><link>https://blog.youkuaiyun.com/programmer_hard/article/details/104004007</link><guid>https://blog.youkuaiyun.com/programmer_hard/article/details/104004007</guid><author>programmer_hard</author><pubDate>Thu, 16 Jan 2020 14:54:01 +0800</pubDate><description><![CDATA[1下载安装
不细说了,官方链接
安装好后启动报错

这是因为不能以root账户启动es,需要新建账户.
执行命令
adduser  [用户名]
passwd [密码]
通过root授权:  chown [用户名]  [es目录]   -R
切换到添加的用户  su [用户名]
启动es
再次报错

这是因为linux版本过低造成的,不影响使用.
然而启动依然失败,仔细看了一下错误信息,
ERROR...]]></description><category></category></item></channel></rss>