<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[b540969928的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/b540969928</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; b540969928]]></copyright><item><title><![CDATA[快速排序时间比较]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/98185269</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/98185269</guid><author>b540969928</author><pubDate>Tue, 06 Aug 2019 16:41:58 +0800</pubDate><description><![CDATA[本次比较比较了

快速排序（书本上的）
快速排序（基准为第一个元素）
快速排序 + 直接插入排序（基准为第一个元素）
快速排序（基准为随机元素）
快速排序 + 直接插入排序（基准为随机元素）
快速排序（三数取中）
Arrays.sort
直接插入排序（对比）

比较方法
对一个有一百万个元素的数组进行排序，分别进行升序、降序、随机元素的比较。在排序10次后，获取平均时间。
结论
Arrays.so...]]></description><category></category></item><item><title><![CDATA[gitLab及docker在centos7上的搭建过程]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/98596542</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/98596542</guid><author>b540969928</author><pubDate>Tue, 06 Aug 2019 16:31:16 +0800</pubDate><description><![CDATA[yum install docker
centos自带了yum，可以直接通过yum来安装docker，相关的依赖也会直接拉下来


yum list installed | grep docker
按照完之后我们可以看下有没有安装成功，一般是这样

docker.x86_64                        2:1.13.1-96.gitb2f74b2.el7.centos @ex...]]></description><category></category></item><item><title><![CDATA[关于@Table的一个Bug]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/98502890</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/98502890</guid><author>b540969928</author><pubDate>Mon, 05 Aug 2019 18:00:30 +0800</pubDate><description><![CDATA[今天发现了javax.persistence.Table 的一个bug。


问题
我在写注解的时候用@Table(schema = “audit”)的时候，只写了shcema，没有写name。运行的时候，一直报表名找不到，@Table根本没有生效。


结论
原因是我没有写name这个属性，也就是说要这样写@Table(schema = “audit”, name=“tableName”)，原因...]]></description><category></category></item><item><title><![CDATA[Linux:sh封装]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/93493951</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/93493951</guid><author>b540969928</author><pubDate>Mon, 24 Jun 2019 16:19:12 +0800</pubDate><description><![CDATA[1.创建sh文件

touch intoDocker



2.编辑sh文件

#!/bin/sh

containerId=`docker inspect --format "{{.State.Pid}}" $1`

nsenter --target $containerId --mount --uts --ipc --net --pid



3.有时候是#!/bin/base，自己试一下...]]></description><category></category></item><item><title><![CDATA[itextpdf5指南]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/89337704</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/89337704</guid><author>b540969928</author><pubDate>Tue, 16 Apr 2019 17:26:19 +0800</pubDate><description><![CDATA[使用freemarker+itextpdf通过HTML模版导出PDF

https://blog.youkuaiyun.com/qq_33251859/article/details/80927353





关于外部css导入的问题

https://blog.youkuaiyun.com/qq_39028580/article/details/80292642

留意第四部，css导入一个new Fi...]]></description><category></category></item><item><title><![CDATA[Mybatis3 && Hibernate3]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/88714971</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/88714971</guid><author>b540969928</author><pubDate>Thu, 21 Mar 2019 14:43:26 +0800</pubDate><description><![CDATA[Mybatis3中文在线文档

http://www.mybatis.org/mybatis-3/zh/index.html



Hibernate3中文在线文档

https://www.w3cschool.cn/hibernate/
]]></description><category></category></item><item><title><![CDATA[Hibernate与Mybatis的优缺点]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/88710383</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/88710383</guid><author>b540969928</author><pubDate>Thu, 21 Mar 2019 11:23:24 +0800</pubDate><description><![CDATA[hibernate相比于mybatis多了一个叫hql的东西，这是一种面向对象的语言，和sql不同。
	hibernate和mybatis都有方便的整合好的增删查改功能，只是mybatis需要再与tkmybatis进行整合。
	正因为hql的存在，使得hibernate数据库无关性好，换数据库成本低。
	mybatis即使有整合了tkmybatis,对多表的crud也不是很友好，开发时间相比于hi...]]></description><category></category></item><item><title><![CDATA[JWT与session-cookie区别]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/88709012</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/88709012</guid><author>b540969928</author><pubDate>Thu, 21 Mar 2019 10:45:39 +0800</pubDate><description><![CDATA[session-cookie原理：

用户发送用户名密码给服务器
	服务器检验通过后通过uuid或其他生成一个随机字符串作为sessionId，以该sessionId作为主键，内容为session详细数据，保存在服务器。可以保存在redis、单机session、数据库等地方。
	把sessionId回传给浏览器，放在cookie中。
	浏览器访问时，把sessionId提交给服务器，服务器根据s...]]></description><category></category></item><item><title><![CDATA[自动化部署]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/88708844</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/88708844</guid><author>b540969928</author><pubDate>Thu, 21 Mar 2019 10:39:44 +0800</pubDate><description><![CDATA[Gitlab-CI安装

https://segmentfault.com/a/1190000007180257

Gitlab-CI是GitLab Continuous Integration（Gitlab持续集成）的简称。
从Gitlab的8.0版本开始，gitlab就全面集成了Gitlab-CI,并且对所有项目默认开启。
只要在项目仓库的根目录添加.gitlab-ci.yml文件，并且配置了...]]></description><category></category></item><item><title><![CDATA[java static静态方法的并发性]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78900543</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78900543</guid><author>b540969928</author><pubDate>Tue, 26 Dec 2017 11:36:54 +0800</pubDate><description><![CDATA[在做一个web项目的时候需要做一个通用类去处理一些问题，想到这个类很多地方都有用到，又不想每次都new一个，因此就定义了里面的方法是静态方法，然后又因为多个静态方法都用到了同一个对象，结果定义了一个类的全局变量让每个静态方法去调用它，刚开始没什么问题，后来项目上线没多久就挂了，最后发现这样做导致了多线程的并发问题，所以就想在这里记录一下…


下面是一个例子，例如：
public clas]]></description><category></category></item><item><title><![CDATA[OAuth协议]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78571148</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78571148</guid><author>b540969928</author><pubDate>Sat, 18 Nov 2017 20:50:34 +0800</pubDate><description><![CDATA[OAuth是Open Authorization的缩写，用于第三方的登录授权


OAuth可以使得网站在不知道你的QQ、微信之类的第三方账户密码的情况下，完成第三方的登录授权

工作原理





三大步骤

1. 网站向OAuth请求OAuth登录页面


网站向OAuth发送Request Token URL(未授权的令牌请求服务地址)，也就是说网站需要将带有]]></description><category></category></item><item><title><![CDATA[freemarker自定义函数、指令]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78550038</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78550038</guid><author>b540969928</author><pubDate>Thu, 16 Nov 2017 13:17:45 +0800</pubDate><description><![CDATA[freemarker 自定义函数
调用自定义函数
<#assign var=[1,2,3,4,5]/>
<#assign var1 = sort_int(var)/>
实现一个自定义函数 
在java中定义一个类，实现TemplateMethodModelEx,并实现其exce方法
public class SortMethod implements TemplateMethodModelEx {]]></description><category></category></item><item><title><![CDATA[freemarker内建函数]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78550035</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78550035</guid><author>b540969928</author><pubDate>Thu, 16 Nov 2017 13:17:20 +0800</pubDate><description><![CDATA[freemarker内建函数
List 的内置函数 
list?first 返回list 的第一个值。
list?last 返回list 的最后一个值。
list?reverse 将list 的现有顺序反转，即倒序排序
list?size 返回list 的大小
list?sort 将list 中的对象转化为字符串后顺序排序
list?sort_by(value) 按list 中对象的属性value]]></description><category></category></item><item><title><![CDATA[freemarker配置]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78550026</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78550026</guid><author>b540969928</author><pubDate>Thu, 16 Nov 2017 13:16:51 +0800</pubDate><description><![CDATA[所有例子在SpringBoot框架中实现
Hello World
在pom中添加依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
在application.properties]]></description><category></category></item><item><title><![CDATA[freemarker语法]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78550022</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78550022</guid><author>b540969928</author><pubDate>Thu, 16 Nov 2017 13:16:21 +0800</pubDate><description><![CDATA[freemarker语法
打印基本类型的object
${object}如果为null或不存在则不打印${object!}也可以给不存在的值一个默认值${object!"我是默认值"}可以给括号里的值进行运算${object+1}
打印对象中的值
${User.name}如果name不存在则这样写${User.name!}如果User也可能不存在则这样写,它会先判断User是否存在，再判断name是]]></description><category></category></item><item><title><![CDATA[JavaWeb之对象传输]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78511129</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78511129</guid><author>b540969928</author><pubDate>Sun, 12 Nov 2017 12:42:55 +0800</pubDate><description><![CDATA[JavaWeb的对象分为几种，分别是model(dataobject)、dto(dataTransferObject)、VO、form。model用于和数据库交互的对象。属性名和数据库的字段名一致。文件名一般为数据库表名的驼峰式。@Entity
@Data
@DynamicUpdate
public class OrderMaster {    /** 订单id. */
    @Id
    pr]]></description><category></category></item><item><title><![CDATA[JavaWeb之JSON转化技巧]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78511126</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78511126</guid><author>b540969928</author><pubDate>Sun, 12 Nov 2017 12:42:16 +0800</pubDate><description><![CDATA[需求一前端要求返回的时间精确到秒。问题我们后端的DTO定义的属性为Date，精确到毫秒。我们需要对时间进行/1000的转换。但是如果再为此写一个VO的话就太过麻烦了。实现
我们在utils包下创建一个serializer包
在serializer包下创建相应的Serializer，如Date2LongSerializer
public class Date2LongSerializer extend]]></description><category></category></item><item><title><![CDATA[JavaWeb之文件上传、下载]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78472301</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78472301</guid><author>b540969928</author><pubDate>Tue, 07 Nov 2017 20:46:09 +0800</pubDate><description><![CDATA[文件上传
service
public String saveImage(MultipartFile file) throws IOException {
		// 正确性检验
        int dotPos = file.getOriginalFilename().lastIndexOf(".");
        if (dotPos < 0) {
            retur]]></description><category></category></item><item><title><![CDATA[JavaWeb之注册、登录、访问]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78445532</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78445532</guid><author>b540969928</author><pubDate>Sat, 04 Nov 2017 19:54:20 +0800</pubDate><description><![CDATA[注册
     public Map register(String username, String password) {
        Map map = new HashMap();
        if (StringUtils.isBlank(username)) {
            map.put("msgname", "用户名不能为空");
            re]]></description><category></category></item><item><title><![CDATA[Javax之邮件发送]]></title><link>https://blog.youkuaiyun.com/b540969928/article/details/78445377</link><guid>https://blog.youkuaiyun.com/b540969928/article/details/78445377</guid><author>b540969928</author><pubDate>Sat, 04 Nov 2017 19:25:52 +0800</pubDate><description><![CDATA[一个使用Javax的发送邮件的实现模板
@Service
public class MailSender implements InitializingBean {
    private static final Logger logger = LoggerFactory.getLogger(MailSender.class);
    private JavaMailSenderImpl m]]></description><category></category></item></channel></rss>