<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Advanced_hwr的博客]]></title><description><![CDATA[欢迎来到hwr的博客，本博客仅仅只是个人学习的记录，希望能与大家一起分享，共同进步]]></description><link>https://blog.youkuaiyun.com/Advanced_hwr</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Advanced_hwr]]></copyright><item><title><![CDATA[认识mysql事务]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/99187757</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/99187757</guid><author>Advanced_hwr</author><pubDate>Sun, 11 Aug 2019 15:48:46 +0800</pubDate><description><![CDATA[认识事务

事务是数据库区别于文件系统的重要特性之一。事务可以吧数据库从一个一致性状态转换为另一个一致性状态。
innerdb引擎的事务保证了acid。

原子性
一致性
隔离性
持久性


事务的分类

扁平的事务

所有事务中最简单的，生产环境中使用最频繁的。在扁平事务中，所有操作处于同一层次，由begin work开始，到commit work或者rollback work结束，这期间的操作...]]></description><category></category></item><item><title><![CDATA[redis高可用模式到集群]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/96728865</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/96728865</guid><author>Advanced_hwr</author><pubDate>Sun, 21 Jul 2019 17:31:03 +0800</pubDate><description><![CDATA[正常redis是单机的，这样的话会有一个问题，如果机器出现问题，不能工作了，那么redis就停止提供服务了，这对也业务来说是不可接受的，redis可提供的解决方案有哨兵（sentinel）,codis，Cluster集群模型。
主从复制
目前主从同步有两种模式，增量同步和快照同步


增量同步
1. redis讲会影响数据库状态的指令记录在内存，然后异步将 buffer 中的指令同步到从节点，从节...]]></description><category></category></item><item><title><![CDATA[redis持久化]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/95793651</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/95793651</guid><author>Advanced_hwr</author><pubDate>Sun, 14 Jul 2019 01:08:24 +0800</pubDate><description><![CDATA[前言
redis是否真的需要持久化？如果redis中的数据来源是其他数据库或者持久化数据同步而来，个人认为这种情况下没有必要开启持久化


返回正文，redis提供了将数据定期自动持久化至硬盘的能力。redis的持久化有两种，一种是rdb（基于快照），一种是aof（基于非存储非查询操作）

rdb

redis的数据是保存在内存中的，而rdb的实质就是将内存中的数据库状态保存成一个磁盘文件。如下图...]]></description><category></category></item><item><title><![CDATA[mysql-innodb锁]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/93405506</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/93405506</guid><author>Advanced_hwr</author><pubDate>Sun, 23 Jun 2019 21:24:26 +0800</pubDate><description><![CDATA[锁类型

行级锁

共享锁（s lock）
排他锁（x lock）



表级锁

为了在一个事务中揭示下一行将被请求的锁类型。因为innodb支持的是行级锁，所以他不会阻塞除全表以外的任何请求


意向共享锁（is lock）
意向排他锁（ix lock）



加锁过程

在加行级锁之前，会先加一个同类型的意向锁，再加行级锁
另一个事务在加锁之前会先判断该表的意向锁和即将要加的行级是否兼容
优...]]></description><category></category></item><item><title><![CDATA[mysql索引总结]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/92411092</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/92411092</guid><author>Advanced_hwr</author><pubDate>Sun, 16 Jun 2019 17:28:40 +0800</pubDate><description><![CDATA[###mysql-innerDB 索引

索引数据结构类型


b树索引

一般以B+树和b+树为主，只所以不用avl或者红黑树的原因主要是考虑到io磁盘(可以想象为每次查询要往下一层时，就需要往磁盘上拉一次，这时候很费时间)，b树的特点就是具有树的特性，层数少。



聚集索引

用表的主键构建的索引，叶子节点里会存放完整的行信息



辅助索引（非聚集索引）

索引键不是主键，索引的叶子节点里...]]></description><category></category></item><item><title><![CDATA[可重入锁]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/81545248</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/81545248</guid><author>Advanced_hwr</author><pubDate>Sun, 14 Oct 2018 12:37:41 +0800</pubDate><description><![CDATA[ 
这里已非公平锁作为演示，非公平锁和公平锁的区别在于，未进队列之前，是不区分，无差别尝试上错的，进了队列两者是一样的


  final boolean nonfairTryAcquire(int acquires) { 
              final Thread current = Thread.currentThread(); 
              int c = get...]]></description><category></category></item><item><title><![CDATA[Java线程池执行过程]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80637664</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80637664</guid><author>Advanced_hwr</author><pubDate>Sun, 24 Jun 2018 22:03:16 +0800</pubDate><description><![CDATA[int c = ctl.get();//从池子里拿到正在跑的个数
     if (workerCountOf(c) &amp;amp;amp;amp;amp;amp;amp;lt; corePoolSize) {//如果正在跑的线程还没有超过核心线程
         if (addWorker(command, true))
             return;
         c = ctl.get();
     }
     if (i...]]></description><category></category></item><item><title><![CDATA[Java类加载机制]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80148598</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80148598</guid><author>Advanced_hwr</author><pubDate>Mon, 30 Apr 2018 19:29:02 +0800</pubDate><description><![CDATA[Java类加载就是讲Java的.class文件的二进制数据读取到内存中，将其放到方法区内，然后在堆中生成一个Java.lang.class对象当做方法区内二进制数据的入口。 
 
类加载并不是要等到某个类首次被使用时才加载，而是jvm判断预料到某个类将要被使用而预先加载，目前有以下几种发式加载二进制文件



加载.class文件的方式


从本地系统中直接加载
通过网络下载.class文件
从z...]]></description><category></category></item><item><title><![CDATA[Java的锁优化]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80030844</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/80030844</guid><author>Advanced_hwr</author><pubDate>Sat, 21 Apr 2018 18:10:21 +0800</pubDate><description><![CDATA[最近在学习jvm，在看到周志明老师的深入理解Java虚拟机这本书的同时，将自己的所学记录到博客，与大家一起分享。 
在jdk1.6中加入大量的锁优化技术，比如适应性自旋锁，锁消除，锁粗化，轻量级锁，偏向锁等等，这些技术都是为了提高程序的执行效率



自旋锁和适应性自旋锁

在线程遇到阻塞时（多线程共同竞争资源时），部分线程会挂起，之后再恢复线程，这部分操作都会在内核中完成，由此会给系统的并发性能...]]></description><category></category></item><item><title><![CDATA[单例模式]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/62887897</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/62887897</guid><author>Advanced_hwr</author><pubDate>Fri, 17 Mar 2017 15:29:00 +0800</pubDate><description><![CDATA[//懒汉式，线程不安全
//可lazy加载
public class Singleton {
    private static Singleton instance;
    private Singleton(){}
    public static Singleton getInstance(){
        if(instance == null){
            i]]></description><category></category></item><item><title><![CDATA[线段树 POJ 3468 A Simple Problem with Integers]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347457</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347457</guid><author>Advanced_hwr</author><pubDate>Sun, 08 May 2016 20:23:37 +0800</pubDate><description><![CDATA[Description


You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other i]]></description><category></category></item><item><title><![CDATA[01背包水题 HDU 2546饭卡]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347450</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347450</guid><author>Advanced_hwr</author><pubDate>Sun, 08 May 2016 20:21:29 +0800</pubDate><description><![CDATA[Description

电子科大本部食堂的饭卡有一种很诡异的设计，即在购买之前判断余额。如果购买一个商品之前，卡上的剩余金额大于或等于5元，就一定可以购买成功（即使购买后卡上余额为负），否则无法购买（即使金额足够）。所以大家都希望尽量使卡上的余额最少。 
某天，食堂中有n种菜出售，每种菜可购买一次。已知每种菜的价格以及卡上的余额，问最少可使卡上的余额为多少。 

 




]]></description><category></category></item><item><title><![CDATA[最短路水题  HDU 1874畅通工程续]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347441</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347441</guid><author>Advanced_hwr</author><pubDate>Sun, 08 May 2016 20:20:13 +0800</pubDate><description><![CDATA[Description

某省自从实行了很多年的畅通工程计划后，终于修建了很多路。不过路多了也不好，每次要从一个城镇到另一个城镇时，都有许多种道路方案可以选择，而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。 

现在，已知起点和终点，请你计算出要从起点到终点，最短需要行走多少距离。
 




Input

本题目包含多组数据，请处理到文件结束。 
每组数据]]></description><category></category></item><item><title><![CDATA[快速幂+素数 HDU 1905 Pseudoprime numbers]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347419</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51347419</guid><author>Advanced_hwr</author><pubDate>Sun, 08 May 2016 20:18:15 +0800</pubDate><description><![CDATA[Description

Fermat's theorem states that for any prime number p and for any integer a > 1, a^p == a (mod p). That is, if we raise a to the pth power and divide by p, the remainder is a. Some (but n]]></description><category></category></item><item><title><![CDATA[Aizu 0121   Seven Puzzle]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51285970</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/51285970</guid><author>Advanced_hwr</author><pubDate>Sat, 30 Apr 2016 11:55:10 +0800</pubDate><description><![CDATA[7パズルは8つの正方形のカードとこれらのカードがぴたりと収まる枠を使って行います。それぞれのカードは互いに区別できるように、0,1,2....7と番号がつけられています。枠には、縦に2個、横に4個のカードを並べることができます。
7パズルを始めるときには、まず枠にすべてのカードを入れます。枠のなかで0のカードだけは、上下左右に隣接するカードと位置を交換することができます。たとえば、枠の状態が図(]]></description><category></category></item><item><title><![CDATA[搜索 Seven Puzzle (AOJ 0121 bfs)]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47359205</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47359205</guid><author>Advanced_hwr</author><pubDate>Sat, 08 Aug 2015 16:04:12 +0800</pubDate><description><![CDATA[#include
#include
#include
#include
#include
#include
using namespace std;
mapgmap;
int a[2][4];
int b[2][4];
int vis[4][2]={1,0,0,1,0,-1,-1,0};
struct text
{
    int a[2][4];
}st,tt,start;
queue q;
c]]></description><category></category></item><item><title><![CDATA[素数 hdu 3792 Twin Prime Conjecture]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47149665</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47149665</guid><author>Advanced_hwr</author><pubDate>Thu, 30 Jul 2015 14:39:40 +0800</pubDate><description><![CDATA[#include
#include
#include
#include
using namespace std;
#define maxsize 1000000
int ani=1;
bool a[maxsize];
void init()\\素数筛选
{
    for(int i=2;i<1000000;i++)
    {
        for(int j=2;i*j<1000000;j+]]></description><category></category></item><item><title><![CDATA[素数水题 POJ 2262 Goldbach's Conjecture]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47149599</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47149599</guid><author>Advanced_hwr</author><pubDate>Thu, 30 Jul 2015 14:35:43 +0800</pubDate><description><![CDATA[#include
#include
#include
#include
using namespace std;
#define maxsize 1000000
int ani=1;
bool a[maxsize];
void init()//素数筛选
{
    for(int i=2;i<1000000;i++)
    {
        for(int j=2;i*j<1000000;j+]]></description><category></category></item><item><title><![CDATA[hdu 3336 Count the string]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47129059</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47129059</guid><author>Advanced_hwr</author><pubDate>Wed, 29 Jul 2015 15:55:15 +0800</pubDate><description><![CDATA[#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int len2;
int len;
int next1[100217*10];
char b[100217*10];
bool getnext(int len2)
{
    ]]></description><category></category></item><item><title><![CDATA[Problem - 466C - Codeforces  C. Number of Ways]]></title><link>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47104627</link><guid>https://blog.youkuaiyun.com/Advanced_hwr/article/details/47104627</guid><author>Advanced_hwr</author><pubDate>Tue, 28 Jul 2015 14:10:36 +0800</pubDate><description><![CDATA[#include
#include
#include
using namespace std;
long long a[100217*5];
long long ani;
int c[100217*5];
int d[100217*5];
int main()
{
    int n,m;
    while(scanf("%d",&n)!=-1)
    {
        ani=0;]]></description><category></category></item></channel></rss>