<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[James_shu的博客]]></title><description><![CDATA[书山有路勤为径,学海无涯苦作舟]]></description><link>https://blog.youkuaiyun.com/James_shu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; James_shu]]></copyright><item><title><![CDATA[解决Mac系统 “Navicat for MySQL.app“已损坏，打不开。 您应该推出磁盘映像。]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/134000793</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/134000793</guid><author>James_shu</author><pubDate>Mon, 23 Oct 2023 22:34:13 +0800</pubDate><description><![CDATA[【代码】解决Mac系统 "Navicat for MySQL.app"已损坏，打不开。您应该推出磁盘映像。]]></description><category></category></item><item><title><![CDATA[人生是一场长期的均值回归]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/130254913</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/130254913</guid><author>James_shu</author><pubDate>Wed, 19 Apr 2023 22:23:56 +0800</pubDate><description><![CDATA[我一直觉得记录并收藏每个阶段的状态是一件很有意义且奇妙的事，尤其是多少年后还能清晰地回忆其当初的心境，联想到曾经所设立的一些目标以及为之做出的努力，这些人生经历的脉纹清晰而完整，形成的回荡激扬的动力循环让人长久受益。
所以在即将进入下一个更长远的阶段之前，纪念珍贵的经历，留存美好的记忆，时间是个单向的旅程，在未来的某一刻回忆曾经，挺不错的。]]></description><category></category></item><item><title><![CDATA[Java并发编程从基础到进阶]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/107149064</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/107149064</guid><author>James_shu</author><pubDate>Mon, 06 Jul 2020 07:55:31 +0800</pubDate><description><![CDATA[从Java多线程基础到Java内存模型;从synchronized关键字到Java并发工具包JUC。

我们不生产知识,我们只做知识的搬运工!
基石——Java多线程的基本概念


线程与进程的不同点:


起源不同。先有进程后有线程。由于处理器的速度远远大于外设,为了提升程序的执行效率,才诞生了线程。


概念不同。进程是具有独立功能的程序运行起来的一个活动,是操作系统分配资源和调度的一个独立单位;线程是CPU的基本调度单位。


内存共享方式不同。不同进程之间的内存数据一般是不共享的(除非采用进程间通.]]></description><category></category></item><item><title><![CDATA[多线程编程(二)]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79471834</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79471834</guid><author>James_shu</author><pubDate>Wed, 07 Mar 2018 15:24:33 +0800</pubDate><description><![CDATA[
  在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,在JDK1.5以后,Java类库中新增了Lock接口用来实现类似的锁功能。下面会逐一介绍关于Java类库中所提供的锁功能。


锁可以理解为对共享数据进行保护的许可证,对于同一把锁保护的共享数据而言,任何线程对这些共享数据的访问都需要先持有该锁。一把锁只能同时被一个线程持有,当以一个该锁的持有线程对共享数据访问...]]></description><category></category></item><item><title><![CDATA[MySQL优化那些事儿]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79435374</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79435374</guid><author>James_shu</author><pubDate>Sun, 04 Mar 2018 11:15:32 +0800</pubDate><description><![CDATA[
  MySQL的使用优化主要从优化库表结构、使用合适的索引、优化查询等方面考虑。


优化库表结构



说说数据类型



字符串类型


  在MySQL中表示字符串的类型有多种,其中常见的有Char和VarChar,BLOB和TEXT以及可以实现某些优化的ENUM。我们要认识到不同的数据类型在存储和使用的区别,然后合理的使用就能实现优化。


关于MySQL中数据类型的介绍,可以参看我的另...]]></description><category></category></item><item><title><![CDATA[多线程编程(一)]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79349533</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79349533</guid><author>James_shu</author><pubDate>Thu, 22 Feb 2018 21:00:54 +0800</pubDate><description><![CDATA[Java中的线程可以分成守护线程和用户线程,用户线程会阻止JVM的正常停止,只有当应用程序中的所有用户线程全部停止完毕的时候JVM才会正常停止;相反,守护线程则不会影响JVM的正常停止。因此守护线程通常用于执行一些重要性不是很高的任务,例如监视JVM中其他线程的执行状况。

Java中,创建一个线程就是创建一个Thread类的实例。JVM会为一个Thread实例分配两个调用栈所需的内存空间,其中一...]]></description><category></category></item><item><title><![CDATA[初谈Kafka]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79348277</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79348277</guid><author>James_shu</author><pubDate>Thu, 22 Feb 2018 16:47:46 +0800</pubDate><description><![CDATA[初谈Kafka


  Kafka是一个分布式的、可分区的、可复制的、基于发布/订阅的消息系统,Kafka主要用于大数据领域,当然在分布式系统中也有应用。目前市面上流行的消息队列RocketMQ就是阿里借鉴Kafka的原理、用Java开发而得。


Kafka适合离线和在线的消息消费,其消息保存在磁盘上。

Kafka以Topic为单位进行消息的归纳,Producers向Topic发送(Push)...]]></description><category></category></item><item><title><![CDATA[MySQL常用操作和主从配置]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79346761</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79346761</guid><author>James_shu</author><pubDate>Thu, 22 Feb 2018 13:25:27 +0800</pubDate><description><![CDATA[MySQL常用操作和主从配置


  介绍关于MySQL的常用操作和注意事项




MySQL的基本操作,增删改查

按照数据库的操作对象分成3类,



数据库操作

1.创建数据库:create database 数据库名称(库选项)


库选项,用来约束数据库的。
字符集设定: charset/character set 具体字符集(数据存储的编码格式),常用的字符集有GBK和UTF8
校...]]></description><category></category></item><item><title><![CDATA[浅谈Tomcat之Tomcat整体结构]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/79322179</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/79322179</guid><author>James_shu</author><pubDate>Tue, 13 Feb 2018 16:36:20 +0800</pubDate><description><![CDATA[浅谈Tomcat之Tomcat结构



Tomcat的整体结构介绍

Tomcat的整体架构图下: 


相关组件的大致介绍如下:


Server组件:Server组件是最顶级的组件,它代表Tomcat的运行实例,在一个JVM中只会包含一个Server。在Server的整个生命周期中,Server组件中的Listener组件实现事件的监听并完成相应的任务,此外Server中包含的GlobalN...]]></description><category></category></item><item><title><![CDATA[谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(下篇)]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/78823268</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/78823268</guid><author>James_shu</author><pubDate>Sun, 17 Dec 2017 01:51:08 +0800</pubDate><description><![CDATA[在上一篇中,我已经对Shiro中认证和授权模块基本认证做了介绍,本篇主要介绍Shiro在SSM的工程中的整合使用方式和在SpringBoot工程中的使用方式。
首先是在SSM工程中的整合之前我们在SSM工程中作为身份认证和权限拦截的模块是通过拦截器的方式来实现的。现在我们去掉拦截器,使用Shiro整合搭建工程。
首先搭建基本的SSM工程。我这里还是采用了传统的SSM工程结构。利用maven创建一个骨]]></description><category></category></item><item><title><![CDATA[谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(上篇)]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/78820349</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/78820349</guid><author>James_shu</author><pubDate>Sat, 16 Dec 2017 15:57:02 +0800</pubDate><description><![CDATA[本篇主要是记录关于Shiro进行认证和授权的大致原理,然后是单独在Shiro中实现认证和授权的方式。最后主要说明在传统SSM的工程中使用Shiro和在SpringBoot的工程中使用Shiro进行整合。关于认证和授权,我这里采用的是规范的RBAC权限模型,数据库的建表语句已经托管github的工程中。
在进行Shiro具体认证和授权的流程介绍之前,首先说一下Shiro中几个比较重要的概念(其中的接口]]></description><category></category></item><item><title><![CDATA[使用SpringBoot+SemanticUI搭建一个博客后台管理系统]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/78786783</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/78786783</guid><author>James_shu</author><pubDate>Tue, 12 Dec 2017 22:14:00 +0800</pubDate><description><![CDATA[首先声明,本人之前是做的Android的开发,后来转的后台,本人没怎么接触过前端,所以对于前端界面的设计与编写是处于技术盲区。恰巧最近接了个需求,实现一个博客系统,对于博客系统的前端还没有设计好,便直接先做了一个博客的后台管理系统。
首先说明代码地址:   https://github.com/fuyunwang/Blog.git这是一个十分简单的后台管理系统,之所以发文是本人使用了Semantic]]></description><category></category></item><item><title><![CDATA[浅谈Kotlin(一)]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/75950014</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/75950014</guid><author>James_shu</author><pubDate>Mon, 24 Jul 2017 15:43:53 +0800</pubDate><description><![CDATA[Kotlin是一门可以运行在Android、Java虚拟机、浏览器上的静态语言,他与Java100%兼容。2017年5月18日,Google官方已经将Kotlin指定为Android的一级开发语言。
第一个程序Hello World!:package com.fuyunwang.kotlin/**
 * Created by BeautifulSoup on 2017/7/24.
 */
fun m]]></description><category></category></item><item><title><![CDATA[Android6.0M运行时权限封装]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/71075581</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/71075581</guid><author>James_shu</author><pubDate>Mon, 01 May 2017 21:41:11 +0800</pubDate><description><![CDATA[本篇主要是介绍权限封装的五个步骤,由于很简单,故只放上代码:package com.fuyunwang.androidmpermission;import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.ne]]></description><category></category></item><item><title><![CDATA[浅谈自定义View之自定义布局FlowLayout]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/62885574</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/62885574</guid><author>James_shu</author><pubDate>Fri, 17 Mar 2017 13:00:56 +0800</pubDate><description><![CDATA[View在Android中还是比较大的一个点,当然其中的内容是异常的多,而且使用也是十分的灵活。网上很多大神都已经有了自己对View的总结,那么作为一个新司机,我也打算开始这个模块的总结(尽可能的说明白),并且以后会逐渐的推出有关于View的一系列文章。当然其中总有不当之处,还请各位多多指教,鄙人不胜感激。ok,本次给大家带来的是一个自定义ViewGroup的案例,主要是实现选项功能,这种效果在网上]]></description><category></category></item><item><title><![CDATA[浅析Android事件传递]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/62045378</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/62045378</guid><author>James_shu</author><pubDate>Tue, 14 Mar 2017 16:42:00 +0800</pubDate><description><![CDATA[Android中View的事件传递主要涉及三个方法:dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()。下面详细分析一下,当三个方法返回不同的值的时候,事件是如何从最上层Activity往下层子View传递的。1.Activity.dispatchTouchEvent 返回 true |fasle 事件只在 Activity 的 d]]></description><category></category></item><item><title><![CDATA[Android系统版本与代号]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/62044588</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/62044588</guid><author>James_shu</author><pubDate>Tue, 14 Mar 2017 16:04:47 +0800</pubDate><description><![CDATA[版本号
  API级别
  发布日期
  版本代号
  CodeName(系统名称)  Android 1.0
  1
  
  阿童木
  BASE
  Android 1.1
  2
  2008.9
  发条机器人
  BASE_1_1
  Android 1.5
  3
  2009.4.30
  纸杯蛋糕
  CUPCAKE
  Android 1.6
  4
  2009.9.15]]></description><category></category></item><item><title><![CDATA[ToolBar的再使用]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/61915367</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/61915367</guid><author>James_shu</author><pubDate>Mon, 13 Mar 2017 12:05:42 +0800</pubDate><description><![CDATA[上一篇介绍了ToolBar的最基本的用法,本篇我接着上一篇来说一下ToolBar的其他用法。如果不清楚基本用法的可以参照我的上一篇博文: 
http://blog.youkuaiyun.com/james_shu/article/details/61661217注意上次的代码都是在Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);与setSupportA]]></description><category></category></item><item><title><![CDATA[浅谈ToolBar的基本用法]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/61661217</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/61661217</guid><author>James_shu</author><pubDate>Sun, 12 Mar 2017 22:20:38 +0800</pubDate><description><![CDATA[Google从Android5.0开始推进MaterialDesign规范,伴随着AppCompatActivity,ToolBar作为其典型的样例已经慢慢融入了众多开发者的怀抱。下面逐步介绍ToolBar的各种玩法。 
要使用ToolBar,为了兼容低版本我们要添加gradle依赖:compile 'com.android.support:appcompat-v7:25.1.1'首先,我们创建的每]]></description><category></category></item><item><title><![CDATA[Linux使用ps查看系统进程信息的多种姿势]]></title><link>https://blog.youkuaiyun.com/James_shu/article/details/60870593</link><guid>https://blog.youkuaiyun.com/James_shu/article/details/60870593</guid><author>James_shu</author><pubDate>Wed, 08 Mar 2017 13:30:01 +0800</pubDate><description><![CDATA[本文摘自Linux Shell脚本编程一书。Linux中使用ps来查看系统进程的信息,其可以带不同的参数从而显示不同的结果。Linux使用的GNU ps命令支持三种不同类型的命令行参数。 
Unix风格的参数,前面加单破折号 
BSD风格的参数,前面不加破折号 
GNU风格的长参数,前面加双破折号注意,下面的命令在某些系列某些版本的Linux上可能无法运行。首先是Unix风格的参数 
默认情况下,p]]></description><category></category></item></channel></rss>