- 博客(132)
- 资源 (6)
- 收藏
- 关注
原创 人生是一场长期的均值回归
我一直觉得记录并收藏每个阶段的状态是一件很有意义且奇妙的事,尤其是多少年后还能清晰地回忆其当初的心境,联想到曾经所设立的一些目标以及为之做出的努力,这些人生经历的脉纹清晰而完整,形成的回荡激扬的动力循环让人长久受益。所以在即将进入下一个更长远的阶段之前,纪念珍贵的经历,留存美好的记忆,时间是个单向的旅程,在未来的某一刻回忆曾经,挺不错的。
2023-04-19 22:23:56 1000
原创 Java并发编程从基础到进阶
从Java多线程基础到Java内存模型;从synchronized关键字到Java并发工具包JUC。我们不生产知识,我们只做知识的搬运工!基石——Java多线程的基本概念线程与进程的不同点:起源不同。先有进程后有线程。由于处理器的速度远远大于外设,为了提升程序的执行效率,才诞生了线程。概念不同。进程是具有独立功能的程序运行起来的一个活动,是操作系统分配资源和调度的一个独立单位;线程是CPU的基本调度单位。内存共享方式不同。不同进程之间的内存数据一般是不共享的(除非采用进程间通.
2020-07-06 07:55:31 598
原创 MySQL优化那些事儿
MySQL的使用优化主要从优化库表结构、使用合适的索引、优化查询等方面考虑。优化库表结构说说数据类型字符串类型 在MySQL中表示字符串的类型有多种,其中常见的有Char和VarChar,BLOB和TEXT以及可以实现某些优化的ENUM。我们要认识到不同的数据类型在存储和使用的区别,然后合理的使用就能实现优化。关于MySQL中数据类型的介绍,可以参看我的另...
2018-03-04 11:15:32 442
原创 浅谈Tomcat之Tomcat整体结构
浅谈Tomcat之Tomcat结构Tomcat的整体结构介绍Tomcat的整体架构图下: 相关组件的大致介绍如下:Server组件:Server组件是最顶级的组件,它代表Tomcat的运行实例,在一个JVM中只会包含一个Server。在Server的整个生命周期中,Server组件中的Listener组件实现事件的监听并完成相应的任务,此外Server中包含的GlobalN...
2018-02-13 16:36:20 548
原创 谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(下篇)
在上一篇中,我已经对Shiro中认证和授权模块基本认证做了介绍,本篇主要介绍Shiro在SSM的工程中的整合使用方式和在SpringBoot工程中的使用方式。首先是在SSM工程中的整合之前我们在SSM工程中作为身份认证和权限拦截的模块是通过拦截器的方式来实现的。现在我们去掉拦截器,使用Shiro整合搭建工程。首先搭建基本的SSM工程。我这里还是采用了传统的SSM工程结构。利用maven创建一个骨
2017-12-17 01:51:08 651
原创 谈谈Shiro的原理及在SSM和SpringBoot两种环境下的使用姿势(上篇)
本篇主要是记录关于Shiro进行认证和授权的大致原理,然后是单独在Shiro中实现认证和授权的方式。最后主要说明在传统SSM的工程中使用Shiro和在SpringBoot的工程中使用Shiro进行整合。关于认证和授权,我这里采用的是规范的RBAC权限模型,数据库的建表语句已经托管github的工程中。在进行Shiro具体认证和授权的流程介绍之前,首先说一下Shiro中几个比较重要的概念(其中的接口
2017-12-16 15:57:02 1292
原创 浅谈自定义View之自定义布局FlowLayout
View在Android中还是比较大的一个点,当然其中的内容是异常的多,而且使用也是十分的灵活。网上很多大神都已经有了自己对View的总结,那么作为一个新司机,我也打算开始这个模块的总结(尽可能的说明白),并且以后会逐渐的推出有关于View的一系列文章。当然其中总有不当之处,还请各位多多指教,鄙人不胜感激。ok,本次给大家带来的是一个自定义ViewGroup的案例,主要是实现选项功能,这种效果在网上
2017-03-17 13:00:56 1256
原创 解决Mac系统 “Navicat for MySQL.app“已损坏,打不开。 您应该推出磁盘映像。
【代码】解决Mac系统 "Navicat for MySQL.app"已损坏,打不开。您应该推出磁盘映像。
2023-10-23 22:34:13 755
原创 多线程编程(二)
在Java多线程中,可以使用synchronized关键字来实现线程之间同步互斥,在JDK1.5以后,Java类库中新增了Lock接口用来实现类似的锁功能。下面会逐一介绍关于Java类库中所提供的锁功能。锁可以理解为对共享数据进行保护的许可证,对于同一把锁保护的共享数据而言,任何线程对这些共享数据的访问都需要先持有该锁。一把锁只能同时被一个线程持有,当以一个该锁的持有线程对共享数据访问...
2018-03-07 15:24:33 442
原创 多线程编程(一)
Java中的线程可以分成守护线程和用户线程,用户线程会阻止JVM的正常停止,只有当应用程序中的所有用户线程全部停止完毕的时候JVM才会正常停止;相反,守护线程则不会影响JVM的正常停止。因此守护线程通常用于执行一些重要性不是很高的任务,例如监视JVM中其他线程的执行状况。Java中,创建一个线程就是创建一个Thread类的实例。JVM会为一个Thread实例分配两个调用栈所需的内存空间,其中一...
2018-02-22 21:00:54 313
原创 初谈Kafka
初谈Kafka Kafka是一个分布式的、可分区的、可复制的、基于发布/订阅的消息系统,Kafka主要用于大数据领域,当然在分布式系统中也有应用。目前市面上流行的消息队列RocketMQ就是阿里借鉴Kafka的原理、用Java开发而得。Kafka适合离线和在线的消息消费,其消息保存在磁盘上。Kafka以Topic为单位进行消息的归纳,Producers向Topic发送(Push)...
2018-02-22 16:47:46 397
原创 MySQL常用操作和主从配置
MySQL常用操作和主从配置 介绍关于MySQL的常用操作和注意事项MySQL的基本操作,增删改查按照数据库的操作对象分成3类,数据库操作1.创建数据库:create database 数据库名称(库选项)库选项,用来约束数据库的。字符集设定: charset/character set 具体字符集(数据存储的编码格式),常用的字符集有GBK和UTF8校...
2018-02-22 13:25:27 797
原创 使用SpringBoot+SemanticUI搭建一个博客后台管理系统
首先声明,本人之前是做的Android的开发,后来转的后台,本人没怎么接触过前端,所以对于前端界面的设计与编写是处于技术盲区。恰巧最近接了个需求,实现一个博客系统,对于博客系统的前端还没有设计好,便直接先做了一个博客的后台管理系统。首先说明代码地址: https://github.com/fuyunwang/Blog.git这是一个十分简单的后台管理系统,之所以发文是本人使用了Semantic
2017-12-12 22:14:00 4502 1
原创 浅谈Kotlin(一)
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
2017-07-24 15:43:53 553
原创 Android6.0M运行时权限封装
本篇主要是介绍权限封装的五个步骤,由于很简单,故只放上代码:package com.fuyunwang.androidmpermission;import android.content.DialogInterface;import android.content.Intent;import android.content.pm.PackageManager;import android.ne
2017-05-01 21:41:11 435
原创 浅析Android事件传递
Android中View的事件传递主要涉及三个方法:dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()。下面详细分析一下,当三个方法返回不同的值的时候,事件是如何从最上层Activity往下层子View传递的。1.Activity.dispatchTouchEvent 返回 true |fasle 事件只在 Activity 的 d
2017-03-14 16:42:00 808
原创 Android系统版本与代号
版本号 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
2017-03-14 16:04:47 11985
原创 ToolBar的再使用
上一篇介绍了ToolBar的最基本的用法,本篇我接着上一篇来说一下ToolBar的其他用法。如果不清楚基本用法的可以参照我的上一篇博文: http://blog.csdn.net/james_shu/article/details/61661217注意上次的代码都是在Toolbar toolbar= (Toolbar) findViewById(R.id.toolbar);与setSupportA
2017-03-13 12:05:42 1198
原创 浅谈ToolBar的基本用法
Google从Android5.0开始推进MaterialDesign规范,伴随着AppCompatActivity,ToolBar作为其典型的样例已经慢慢融入了众多开发者的怀抱。下面逐步介绍ToolBar的各种玩法。 要使用ToolBar,为了兼容低版本我们要添加gradle依赖:compile 'com.android.support:appcompat-v7:25.1.1'首先,我们创建的每
2017-03-12 22:20:38 2101
原创 Linux使用ps查看系统进程信息的多种姿势
本文摘自Linux Shell脚本编程一书。Linux中使用ps来查看系统进程的信息,其可以带不同的参数从而显示不同的结果。Linux使用的GNU ps命令支持三种不同类型的命令行参数。 Unix风格的参数,前面加单破折号 BSD风格的参数,前面不加破折号 GNU风格的长参数,前面加双破折号注意,下面的命令在某些系列某些版本的Linux上可能无法运行。首先是Unix风格的参数 默认情况下,p
2017-03-08 13:30:01 1198
原创 装饰者模式
首先介绍一下定义: 装饰者模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。定义是比较晦涩的,简而言之,由于多重继承导致我们的业务代码越来越臃肿,我们可以使用装饰者模式来动态的为我们的实际业务代码提供装饰,在增强我们的代码的同时降低了复杂性。比如Java中的IO操作中使用了很多的装饰者模式,细细想来还是十分精妙的,典型的如:
2017-03-03 21:27:56 445
原创 使用OkHttp的那些事儿(四)
本篇继续介绍关于OkHttp的其他使用姿势。1.OkHttp结合gson使用:其中ResponseBody.charStream()使用Content-Type响应头来选择在解码响应正文时要使用的字符集。 如果没有指定字符集,它默认为UTF-8。 private void Test5() throws IOException { OkHttpClient client = new O
2017-03-01 22:15:15 580
原创 VMVare虚拟机网络配置
上一篇介绍了在Linux的CentOS下如何安装Nginx服务器,并且实现在Linux上访问Nginx服务器。本篇主要介绍VMVare下基于NAT模式的网络配置以及实现在本地主机访问Linux上的Nginx服务器和Linux访问本地的Tomcat服务器。 Nginx安装不熟悉的可以看: http://blog.csdn.net/james_shu/article/details/57084256
2017-02-25 21:15:42 8075
原创 Linux上搭建Nginx服务器
1.将nginx的压缩包nginx-1.8.0.tar.gz上传到Linux服务器2.由于nginx是C语言开发的并且我们这里是通过编译nginx的源码来安装nginx,所以Linux上要安装C语言的编译环境gcc, 如果已经安装此步可以省略,否则执行命令:yum install gcc-c++ 3.nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。yum
2017-02-25 16:46:16 1904
原创 使用OkHttp的那些事儿(三)
本篇主要介绍文件的断点续传下载。 原文来自:http://blog.csdn.net/KevinsCSDN/article/details/519342741.Gradle引入依赖: compile 'com.squareup.okhttp3:okhttp:3.6.0' compile 'io.reactivex:rxjava:1.1.6' compile 'io.react
2017-02-24 21:45:49 564
原创 使用OkHttp的那些事儿(二)
上一篇介绍了关于OkHttp进行GET请求和POST请求最基本的用法,下面继续介绍OkHttp的使用。 上一篇地址:http://blog.csdn.net/james_shu/article/details/55270728首先来介绍一下有关于OkHttp将json作为请求参数来请求服务器端并得到响应的使用流程: OkHttpClient client=new OkHttpClie
2017-02-23 20:26:52 511
原创 使用OkHttp的那些事儿(一)
OkHttp作为目前相当流行的网络请求框架,已经被Google官方认定,而且Google在官方的应用程序中也已经大量的使用。 网络上不乏大量有关于OkHttp的教程,本人才疏学浅,只得将OkHttp的基本使用方式在下面做一个整理。 这里使用 https://api.douban.com/v2/book/search?q=金瓶梅&tag=&start=0&count=1 作为接口调用API。首
2017-02-16 18:36:04 1716
原创 Android之GestureDetector基本应用
Android对于手势的检测提供了一系列的API,其中包括对于手势检测的监听器、对于手势识别的API等等。 本篇主要介绍手势检测监听器GestureDetector类的基本使用。Android为手势检测提供了一个GestureDetector类,GestureDetector实例代表了一个手势检测器。 GestureDetector这个类对外提供了两个接口和一个外部类,其中包括: 接口:OnG
2017-02-15 21:49:12 800
原创 Android之SoundPool的基本使用
Android对多媒体音频的播放提供了多个API。其中SoundPool主要用于播放短暂急促的音频,如游戏特效等。 基本使用如下:SoundPool soundPool=new SoundPool(1, AudioManager.STREAM_MUSIC, 0);//参数1指的是soundpool中容纳的声音有几个,参数2表示所存放的声音的类型,参数3指的是频的质量,默认是0,//加载音乐文件(注
2017-02-15 20:21:18 738
原创 Spring高级运用之浅析多线程与计划任务
Spring对多线程的支持: Spring通过任务调度器(TaskExecutor)来实现多线程和并发编程,使用ThreadPoolTaskExecutor可以实现一个基于线程池的TaskExecutor。而在实际开发中任务一般是非阻碍的,即异步的,所以我们要在配置类中通过@EnableAsync开启对异步任务的支持,并且通过在实际开发执行的Bean的方法中使用@Async注解来声明其是一个异步任
2017-02-15 14:19:30 740
原创 Spring高级运用之浅析Spring Aware
我们应该明白,Spring的依赖注入的最大亮点是你所有的Bean对Spring容器的存在是没有意识的,我们可以将Spring容器换成其他的容器,Spring容器中的Bean的耦合度因此也是极低的。但是我们在实际的开发中,我们却经常要用到Spring容器本身的功能资源,所以Spring容器中的Bean此时就要意识到Spring容器的存在才能调用Spring所提供的资源。我们通过Spring提供的一系列
2017-02-15 13:27:54 6674
原创 浅谈Android之于新线程创建Handler
Handler作为Android中举足轻重的知识点,无论是在实际开发还是在面试中都经常会用到,并且在网上关于Handler的讲解不胜枚举,本人深知水平有限,因此仅在此做一下自己的小结,权当学习中的笔记。之前写过一篇有关Handler中基本方法使用的一篇文章http://blog.csdn.net/james_shu/article/details/53367035,本篇基于此,写出一些其他的新内容。
2017-02-14 15:02:32 527
原创 浅析Android Material Design之TextInputLayout
Material Design(质感设计)是Google工程师基于传统优秀的设计原则,结合丰富的创意和科学技术所发明的一套全新的界面设计语言,主要用于解决Android平台界面风格不统一的问题。在2015年的Google I/O大会上退出的Design Support库将Material Design中最具代表性的一些控件和效果进行了封装,从而方便开发者调用相应的API来实现相应的MD风格。本篇主要
2017-02-14 14:20:23 968
原创 浅析Android之Configuration
Android中Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的配置项,也包括系统的动态设备配置。Configuration对象的获得:Configuration configuration=getResources().getConfiguration();这样我们就可以通过Configuration对象提供的基本属性来获取系统的配置信息,例如: p
2017-02-14 10:54:32 4604
原创 浅谈Serializable与Parcelable
Android中使用Intent来启动Android的组件,而且在启动Android中的组件的时候可以使用Intent携带并传递数据。如: Intent intent=new Intent(MainActivity.this,AnotherActivity.class); intent.putExtra("per_age",20); startActivi
2017-02-09 21:41:09 408
原创 Maven本地安装ojdbc
我们在使用Java来操作Oracle数据库的时候需要用到Oracle的JDBC驱动。我们通常使用Maven来管理所需要的依赖,由于Maven中心仓库没有Oracle JDBC驱动下载,所以我们要自己打包安装。首先登陆http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-112010-090769.html下载ojdbc6
2017-02-05 23:14:46 1749
原创 Docker基本操作
本篇初步介绍有关于Docker的基本操作命令。 首先由于Docker的运行原理是基于Linux的,而且在生产环境下,Docker总是部署在Linux上,因此我这里还是以在Linux上安装Docker为准。Linux有很多发行版,这里我采用CentOS7。使用root权限登录Linux操作系统。 Docker基本操作 安装:[root@bogon fuyunwang/]# yum -y inst
2017-02-05 21:45:35 1391
原创 浅谈MySQL连接查询与外键
连接查询是同时查询多张表,通过多张表之间的关系得到最终的结果。连接查询又分成内连接、外链接和自然连接。内连接:从左表中取出每一条记录,去右表中与所有的记录进行匹配;匹配必须是某个条件在左表中与右表中相同最终才会保留结果,否则不保留。 注意内连接可以没有on之后的条件,此时查询的结果是笛卡尔积。外连接:以某张表为主表,取出主表中的所有记录,然后每一条记录都与另外一张表进行连接。主表中的结果将全部
2017-02-05 14:59:47 8963 1
原创 Oracle学习笔记(二)
查询Oracle中常见的默认格式:select * from v$nls_parameters; Oracle中的默认数据格式:如1987年10月11日:11-10-87 修改本次会话的Oracle中的数据格式:alter session set NLS_DATE_FORMAT='yyyy-mm-dd'; 修改数据库中全局的数据格式(这里需要用到管理员权限):alter system set
2017-02-02 22:55:45 429
原创 Oracle学习笔记(一)
本篇主要介绍有关于Oracle的基本的操作语句,以及Oracle连接与使用的基本操作。Oracle通过SqlPlus来连接数据库的语句(两种方式): 1.sqlplus hr@ora12c 2.connect hr@ora12c显示当前用户: show user 查看当前用户下的表:select * from tab; 查看emp表的结构:desc emp; 查看表中所有的数据:s
2017-02-01 22:11:43 390
Hadoop权威指南
2017-01-14
改善既有代码的设计
2017-01-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人