<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Q854031191的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Q854031191</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Q854031191]]></copyright><item><title><![CDATA[Java8异步编程-CompletableFuture]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/116867716</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/116867716</guid><author>Q854031191</author><pubDate>Sat, 15 May 2021 23:57:12 +0800</pubDate><description><![CDATA[异步编程的难点
如何优雅地实现异步编程一直都是一个难题，异步编程的通常做法就是采用callback的方法，但是这种方法通常会把代码嵌套在正常流程的代码中，而且当有多层嵌套的时候代码更加难以维护。
另外还有一点，异步编程的异常处理也是难以维护，特别是在Java中，异步编程通常由新的线程完成，而子线程的异常是无法在父线程捕获的，那么对于异步执行结果的获取就需要付出更大的代价，比如通过：轮询、事件驱动等来完成。
CompletableFuture
初识CompletableFuture
在Java8中引入了Com]]></description><category></category></item><item><title><![CDATA[Java 中ThreadLocal的使用]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/116085581</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/116085581</guid><author>Q854031191</author><pubDate>Sat, 24 Apr 2021 11:46:26 +0800</pubDate><description><![CDATA[​ThreadLocal简介
来源 微信公众号 秃然想编程

多线程访问同一个共享变量的时候容易出现并发问题，特别是多个线程对一个变量进行写入的时候，为了保证线程安全，一般使用者在访问共享变量的时候需要进行额外的同步措施才能保证线程安全性。ThreadLocal是除了加锁这种同步方式之外的一种保证一种规避多线程访问出现线程不安全的方法，当我们在创建一个变量后，如果每个线程对其进行访问的时候访问的都是线程自己的变量这样就不会存在线程不安全问题。
Java中的ThreadLocal类允许我们创建只能被同一个线程]]></description><category></category></item><item><title><![CDATA[MySQL进阶   事务与锁]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/113771476</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/113771476</guid><author>Q854031191</author><pubDate>Tue, 09 Feb 2021 15:40:54 +0800</pubDate><description><![CDATA[6.4.2 悲观锁
6.5 锁等待和死锁
6.6 如何避免死锁
6.7 MVCC，多版本并发控制
6.7.1 什么是当前读和快照读？
6.7.2 当前读，快照读和MVCC的关系
6.7.3 MVCC能解决什么问题
6.7.4 MVCC的实现原理
6.7.5 Read View(读视图)
6.7.6整体流程
6.7.7 MVCC相关问题
6.8 Redo log
6.8.1 Redo log工作原理
6.8.1.1 日志类型
6.8.1.2 checkpoint
6.8.1.3 LSN(Log Sequenc]]></description><category></category></item><item><title><![CDATA[Java生成MD5]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/112851788</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/112851788</guid><author>Q854031191</author><pubDate>Tue, 19 Jan 2021 20:43:50 +0800</pubDate><description><![CDATA[Java生成MD5
package com.pibigstar.common.utils;


import java.security.MessageDigest;


/**
* MD5加密工具类
* @author pibigstar
*
*/
public class MyMD5Util {
    //盐，用于混交md5
    private static final String slat = "&amp;%5123***&amp;&amp;%%$$#@";
    public static]]></description><category></category></item><item><title><![CDATA[Java实现基于token认证（springboot）]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/111942647</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/111942647</guid><author>Q854031191</author><pubDate>Wed, 30 Dec 2020 10:16:03 +0800</pubDate><description><![CDATA[Java实现基于token认证（springboot）
为什么要用 Token？
可以解决哪些问题呢？

Token 完全由应用管理，所以它可以避开同源策略
Token 可以避免 CSRF 攻击(http://dwz.cn/7joLzx)
Token 可以是无状态的，可以在多个服务间共享

1、引入依赖

2设置过期时间和秘钥

3实现token
public static String gettoken(String name ,String password) {
        String toke]]></description><category></category></item><item><title><![CDATA[JAVA多线程实现A,B交替打印代码实现]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/108898272</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/108898272</guid><author>Q854031191</author><pubDate>Fri, 02 Oct 2020 00:02:35 +0800</pubDate><description><![CDATA[**
JAVA多线程实现A,B交替打印代码实现
**
package com.test;

public class Test {
    public static void main(String[] args) {
        S s =new S();
        new  A(s).start();
        new  B(s).start();
    }
}
class A extends Thread{
    S s;

    public A(S s) {
       ]]></description><category></category></item><item><title><![CDATA[JAVAEE轻量级框架技术复习（SSM）]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/108898185</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/108898185</guid><author>Q854031191</author><pubDate>Thu, 01 Oct 2020 23:45:58 +0800</pubDate><description><![CDATA[**
JAVAEE轻量级框架技术复习（SSM）
**
第一章
【思考题】
1、 请简述Spring框架的优点。
2、 请简述什么是Spring的IoC和DI。。
【答案】
1、Spring框架的优点如下：
（1）非侵入式设计：Spring是一种非侵入式（non-invasive）框架，它可以使应用程序代码对框架的依赖最小化。
（2）方便解耦、简化开发：Spring就是一个大工厂，可以将所有对象的创建和依赖关系的维护工作都交给Spring容器管理，大大的降低了组件之间的耦合性。
（3）支持AOP：Spring]]></description><category></category></item><item><title><![CDATA[MYSQL数据库备份导出]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/108897954</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/108897954</guid><author>Q854031191</author><pubDate>Thu, 01 Oct 2020 22:57:24 +0800</pubDate><description><![CDATA[MYSQL数据库备份导出
数据导出
备份整个数据库
mysqldump -u username -p databaseName &gt;D:/xxx.sql

备份数据库中的某个表
mysqldump -u root -h host -p dbname tbname1, tbname2 &gt; xxx.sql

备份多个数据库
mysqldump -u root -h host -p --databases dbname1 dbname2 &gt; backdb.sql
备份系统中所有数据库

mysql]]></description><category></category></item><item><title><![CDATA[简单的jquery实现ajax代码]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/103000296</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/103000296</guid><author>Q854031191</author><pubDate>Sun, 10 Nov 2019 18:15:18 +0800</pubDate><description><![CDATA[简单的jquery实现ajax代码
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
	&lt;meta charset="utf-8"&gt;
	&lt;title&gt;jquery ajax&lt;/title&gt;
	&lt;script type="text/javascript" src="./jquery-3.3.1.min.js"&g...]]></description><category></category></item><item><title><![CDATA[使用servlet实现验证码]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/102954444</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/102954444</guid><author>Q854031191</author><pubDate>Thu, 07 Nov 2019 14:32:42 +0800</pubDate><description><![CDATA[javaweb中使用servlet实现验证码


package com.test;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
i...]]></description><category></category></item><item><title><![CDATA[CodeIgniter的常量]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/102153468</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/102153468</guid><author>Q854031191</author><pubDate>Sat, 05 Oct 2019 15:53:36 +0800</pubDate><description><![CDATA[ci框架的常量


ENVIRONMENT
产品的环境，有3种环境，分别是: development开发环境 testing测试环境 production生产环境


SELF
CI的主入口文件名称 例如我的是: index.php


BASEPATH
CI主文件夹的路径 默认是system文件夹的路径 例如我的是: /home/work/www/CodeIgniter-3.0.0/system...]]></description><category></category></item><item><title><![CDATA[setAttribute和setParameter方法的区别]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/100716380</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/100716380</guid><author>Q854031191</author><pubDate>Tue, 10 Sep 2019 23:13:53 +0800</pubDate><description><![CDATA[getAttribute表示从request范围取得设置的属性，必须要先setAttribute设置属性，才能通过getAttribute来取得，设置与取得的为Object对象类型
getParameter表示接收参数，参数为页面提交的参数，包括：表单提交的参数、URL重写（就是xxx?id=1中的id）传的参数等，因此这个并没有设置参数的方法（没有setParameter），而且接收参数返回的不...]]></description><category></category></item><item><title><![CDATA[linux下安装apache(详细教程)]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/100061605</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/100061605</guid><author>Q854031191</author><pubDate>Mon, 26 Aug 2019 23:15:08 +0800</pubDate><description><![CDATA[**
1.官网下载Apache
**
官网地址：https://httpd.apache.org/


右键复制链接
wget http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.41.tar.gz2
解压
tar -zxvf httpd-2.4.41.tar.gz

cd httpd-2.4.41

提示没有APR (最好在安装...]]></description><category></category></item><item><title><![CDATA[JAVA的JDBC入门代码]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/99679973</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/99679973</guid><author>Q854031191</author><pubDate>Fri, 16 Aug 2019 15:59:08 +0800</pubDate><description><![CDATA[JAVA的JDBC入门代码
package com.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Jdbc01 {

	public static void main(Strin...]]></description><category></category></item><item><title><![CDATA[PHP的socket编程详解]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/99177516</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/99177516</guid><author>Q854031191</author><pubDate>Sun, 11 Aug 2019 11:56:45 +0800</pubDate><description><![CDATA[PHP的socket编程详解
作用：开发一个客户端用于发送string消息到服务端，服务端将相同的信息反转后返回给客户端
分为 服务端，客户端
PHP服务器
第1步：设置变量，如“主机”和“端口”
$host = “127.0.0.1”;
$port = 5353;
// No Timeout
set_time_limit(0);
端口号可以是1024 -65535之间的任何正整数。
第2步：创建...]]></description><category></category></item><item><title><![CDATA[php实现重载的其中一种方法]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/96579209</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/96579209</guid><author>Q854031191</author><pubDate>Sat, 20 Jul 2019 12:37:42 +0800</pubDate><description><![CDATA[php 作为一种弱类型语言，本身不能像强类型如java ，c++那样，直接的实现重载。不过可以通过一些方法，间接的实现重载

function rewrite() {&nbsp;&nbsp; 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args = func_get_args();&nbsp;&nbsp;...]]></description><category></category></item><item><title><![CDATA[ThinkPHP中common.php使用注意事项]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/92840956</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/92840956</guid><author>Q854031191</author><pubDate>Wed, 19 Jun 2019 18:57:43 +0800</pubDate><description><![CDATA[**
Thinkphp使用的注意事项
**

可以是在应用公共文件，也可以是模块文件
在控制器中不需要引入，会自动引入
函数不要加public访问控制权限，因为默认就是public
在控制器直接使用即可


*如果编写完common.php无效果怎么办？？？
可以尝试删除tp中的runtime文件夹

...]]></description><category></category></item><item><title><![CDATA[thinkphp5中的自定义验证码使用]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/92633738</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/92633738</guid><author>Q854031191</author><pubDate>Mon, 17 Jun 2019 15:29:31 +0800</pubDate><description><![CDATA[控制器
thinkphp5中的自定义验证码使用
public function verify(){        
$captcha = new \think\captcha\Captcha();        //使用中文验证码 
       $captcha-&gt;useZh = true;        //验证码过期时间（s）     
          $captcha-&gt;e...]]></description><category></category></item><item><title><![CDATA[thinkphp开发经常用到的eq|neq|gt|egt|lt|elt|heq|nheq运算符讲解]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/91869323</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/91869323</guid><author>Q854031191</author><pubDate>Thu, 13 Jun 2019 15:58:10 +0800</pubDate><description><![CDATA[eq 相等
ne、neq 不相等
gt 大于
lt 小于
egt 大于等于
elt 小于等于
not 非
heq 恒等于
nheq 不恒等于
用法基本是一致的，区别在于判断的条件不同，并且所有的比较标签都可以和else标签一起使用。

...]]></description><category></category></item><item><title><![CDATA[laravel分页样式]]></title><link>https://blog.youkuaiyun.com/Q854031191/article/details/90673538</link><guid>https://blog.youkuaiyun.com/Q854031191/article/details/90673538</guid><author>Q854031191</author><pubDate>Wed, 29 May 2019 16:34:16 +0800</pubDate><description><![CDATA[laravel分页样式
放进html代码即可
//CSS样式
//CSS样式
&lt;style type="text/css"&gt;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #pull_right{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text-ali...]]></description><category></category></item></channel></rss>