- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 Spring里Controller继承接口的RequestMapping注解
背景经常会遇到Controller继承一个接口的实现方式,接口上的方法会加上RequestMapping的注解,但是在浏览器里请求会发现代理错误。结构图首先InitializingBean里面有个afterPropertiesSet,这个方法会在类注入容器完后调用,具体的可以看doCreateBean()方法里面。detectHandlerMethods() 这个方法开始找方法与url对应关系,这里面有个函数式接口MetadataLookup需要注意一下。这个接口的getMappingForMet
2020-06-19 16:28:56
2628
原创 jvm垃圾回收器
垃圾回收器触发是由内存满了之后,会触发,它所管辖的区域是堆空间。垃圾回收器里面有几种算法,标记清除算法标记整理算法复制回收算法minGC Full GC
2020-06-11 11:16:08
122
原创 查找Java的安装路径
背景今天想实验一下JDK里面自带的java的一些内存检查工具,但是发现没找到JDK的安装路径,比较尴尬,所以记录一下文章,以便下次查阅。方法whereis 指令whereis Javawhich 命令which Javawhich和whereis命令都是Linux操作系统下查找可执行文件路径的命令。which 命令主要是用来查找系统***PATH目录下***的可执行文件whereis 用来查找二进制(命令)、源文件、man文件echo $JAVA_HOMEecho $JAVA_
2020-06-03 14:42:05
955
原创 sqlserver执行优化
理论储备聚集索引,数据是按顺序存储的,使用聚集索引查找到的数据就是数据物理存储的位置,聚集索引的叶子节点不仅包含了索引键,还包含了数据页。非聚集索引,索引是完全独立于数据的,是在另外的索引页面中存放非聚集索引数据的,使用非聚集索引查找数据,除非这个非聚集索引已经包含了T-SQL查询需要返回的所有字段,不然索引就需要根据非聚集索引中叶子节点的书签Bookmarks定位到实际的数据页,才能返回所需要的字段值。非聚集索引的物理结构,其叶子节点通常会保留数据行的唯一标识。唯一标识在聚集表中通常为主键值。下图
2020-05-18 22:35:43
213
原创 nginx学习汇总
背景介绍公司要求将数据库迁移到国外,但是国外的网络一直不稳定。我准备尝试多家香港云服务器,选了一台阿里云的,一台恒创云的。经过测试后,恒创云在连接新加坡节点的时候的确速度要好多了,但是稳定性相对弱一些,有时会出现他们所说的网路波动,要人工提交一个工单优化。阿里云的比较稳定,但是他们要从美国那边绕一下,这个应该是主要的延迟高的原因。环境搭建在阿里云上搭建一个nginx,然后做一个负载均衡,一台是恒创云,一台是阿里云。...
2020-05-11 16:50:44
121
转载 9 种方法来解决掉那些“烦人”的 if else
1.使用 return我们使用 return 去掉多余的 else,实现代码如下。优化前代码:if ("java".equals(str)) { // 业务代码......} else { return;}复制代码优化后代码:if (!"java".equals(str)) { return;}// 业务代码…复制代码这样看起来就会舒服很多,虽然相差...
2020-05-05 10:15:12
918
原创 HashMap的hash()方法
基础知识回顾哈希算法因为Java的HashMap源码里面有个混淆函数hash(),我就想补一下哈希的定义。哈希算法有以下三个特点安全,给定数据 M 容易算出哈希值 X ,而给定 X 不能算出 M ,或者说哈希算法应该是一个单向算法。两个不同的数据,要拥有不相同的哈希。长度固定,给定一种哈希算法,不管输入是多大的数据,输出长度都是固定的。仔细想一下,如果哈希的长度是固定的,也就是取...
2020-04-10 10:58:44
363
原创 Java动态代理
摘要学习动态代理已经有一段时间了,目前主要有俩种方式,一种Java自带的JDK的方式实现代理模式,另外一种就是CGLIB字节码的方式实现。JDK动态代理主要是是通过反射的方式,继承目标类的接口方法,动态的生成一个新的类,然后将目标类初始化到这个新类里面,这个是不是像极了代理模式。CGLIB代理的是通过继承目标类,动态生成了一个目标类的子类,然后通过FastClass机制进行方法调用,说这个...
2020-04-02 19:56:49
127
转载 spring cloud eureka 参数配置
eureka.client.registry-fetch-interval-seconds表示eureka client间隔多久去拉取服务注册信息,默认为30秒,对于api-gateway,如果要迅速获取服务注册状态,可以缩小该值,比如5秒eureka.instance.lease-expiration-duration-in-secondsleaseExpirationDurationIn...
2020-04-02 19:13:50
103
原创 Spring MVC源码解析
继承类图FrameWorkServlet里面有个初始化IOC容器的方法,最终会转到AbstractApplicationContext方法的refresh()方法里面。this.webApplicationContext = initWebApplicationContext();在解析Bean定义的类BeanDefinitionParserDelegateNamespaceHan...
2020-04-02 19:12:36
71
原创 发布到Tomcat的ROOT目录
1. 将包改名 ROOT.war将项目的war包改成ROOT.war包,然后放到$CATALINA_HOME\webapps的目录下,这样我们就可以通过下面的链接打开http://localhost:8080/2. 在Server.xml里指定Context Path第二个选项是在server.xml(位于$ CATALINA_HOME \ conf)中设置应用程序的上下文路径。为此,我...
2020-04-01 08:58:33
853
原创 持续发布
蓝绿发布在发布的过程中用户无感知服务的重启,通常情况下是通过新旧版本并存的方式实现,也就是说在发布的流程中,新的版本和旧的版本是相互热备的,通过切换路由权重的方式(非0即100)实现不同的应用的上线或者下线。金丝雀发布通过在线上运行的服务中,新加入少量的新版本的服务,然后从这少量的新版本中快速获得反馈,根据反馈决定最后的交付形态。灰度发布灰度发布是通过切换线上并存版本之间的路由权重,逐步...
2020-03-26 19:33:30
132
原创 外观模式
外观模式定义外观模式提供了一个统一的接口,用来访问子系统的一群接口。外观定义了一个高层接口,让子系统更容易使用。这样我们可以避免和子系统之间的紧耦合。最少知识原则只和你的密友谈话。当你正在设计一个系统,不管是任何对象,你都要注意它所交互的类有哪些,并注意它和这些类是如何交互的。这个原则我们可以提供了一些方针,就任何对象而言,在该对象的方法内,我们只应该调用属于以下范围的方法:该...
2020-03-09 14:16:50
66
原创 命令模式 :封装调用
定义命令模式将"请求"封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也支持可撤销的操作。命令模式设计图模式的意义命令模式,主要的是将请求对象和执行对象进行解耦,也就是类图里面的Invoker和Receiver,这个模式主切入的点很小,但是应用很广,也是解耦思想一个比较重要的模式。// 命令接口public interface Command { ...
2020-03-06 17:40:38
182
原创 观察者模式
定义定义了对象之间的一对多的依赖,这样一来,当一个对象改变时,它的所有依赖者都会收到通知并自动更新。类图思考这个模式我觉的还是比较简单的,在主题里面维护了一个观察者对象集合,当我们主题自身发生变化时,通过对这个集合进行循环,调用所有观察者的update方法,这样就相当于通知了所有的观察者对象。这个核心就是观察者必须继承同一个接口。同时观察者要把自己具体的注册到某个对象上去。...
2020-02-24 22:00:49
72
原创 装饰者模式
定义装饰者模式,动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。背景星巴克的咖啡DarkRoast超优深培的也有decaf低咖啡因的咖啡等品类,买咖啡的时候同时顾客可以加点蒸奶、豆浆、摩卡、或者奶泡等。正解代码public abstract class Beverage { protected String description=""; ...
2020-02-23 22:14:07
70
原创 Spring源码的AOP
ProxyFactoryBean在Spring中,所有的Bean都是BeanFactory(也就是IOC容器)来进行管理的。但对FactoryBean而言,这个Bean不是简单的Bean,而是一个能产生或者修饰对象生成的工厂Bean。ProxyFactoryBean就是这样的Bean。自动代理Spring的代理在上层中主要分为ProxyCreatorSupport和ProxyProces...
2020-02-23 12:30:02
70
原创 Spring源码获取Bean
前言前面的文章描述了,通过xml文件的解析,得到了Bean的定义,但是Bean却没有new出来。我们主要看下容器将非懒加载的单例bean是怎么创建起来的。源码解析通过refresh的代码,去掉关系不大的代码。//AbstractApplicationContext类public void refresh() throws BeansException, IllegalStateExcep...
2020-02-23 12:28:21
127
原创 状态模式
定义状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。这个模式将状态封装成为独立的类,并将动作委托到代表当前状态的对象,行为会随着内部状态而改变。场景描述 糖果机就跟街上那个卡一元钱后,小苹果能转出来小球很类似,对于糖果机来说,一共有四种状态,分别是没有25分钱的状态,有25分钱状态,有糖果状态,没糖果状态,其中1和2、3和4状态是互斥的。没引入设计模式...
2020-02-21 22:49:30
71
原创 Spring源码环境搭建
下载Spring的源码Spring在github上的仓库地址是:https://github.com/spring-projects/spring-framework但是由于国内网络的原因,是下载不下来的,最终通过购买vultr服务器,假设ssr服务才能正常的下载下来。网络设置Git下载Spring源码的时候,需要代理设置,这边介绍一下Git代理的设置指令## 设置代理git conf...
2020-02-20 22:32:13
131
原创 Spring源码解析 XML方式加载bean
继承图Spring源码拥有的类实在太多了,所以梳理下主要的类图对研究代码还是很有用的,Spring的配置从先前的XML的配置的容器ClassPathXmlApplicationContext,到现在的基于注解的AnnotationConfigApplicationContext容器,都在下图展现。加载Bean我们本次内容主要探究下,Spring如何通过xml读取Bean容器,无论基于注解还...
2020-02-20 22:26:07
110
原创 SQL Server 2008中的CTE递归查询
递归 CTE 结构必须至少包含一个定位点成员和一个递归成员。以下伪代码显示了包含一个定位点成员和一个递归成员的简单递归 CTE 的组件。WITH cte_name ( column_name [,...n] ) AS ( CTE_query_definition –- Anchor member is defined. UNION ALL CTE_query_definit
2015-03-02 09:52:27
472
原创 Web Deployment Projects安装Asp.net网站——VS2010
1、安装Web Deployment 插件2、在需要发布的网站项目下,右击
2014-07-21 10:51:35
1281
原创 Visual Stdio 新建类或窗体自动添加作者信息
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\2052\Class.zip
2014-05-05 15:46:37
1429
1
原创 Oracle数据库建立表空间/用户
电力交易系统,需要集成,营销、安全生产等业务系统的数据,建立buff_sgcim用户,首先建立表空间,建立表空间,要注意需要指定MaxSize否则会出现错误:create tablespace sales datafile '/home/app/oracle/oradata/oracle8i/sales01.dbf' size 800M autoextend on next 50M
2014-02-26 17:02:47
692
原创 Oracle创建DBLinker的相关步骤
第一步:对于创建者而言,应该具有创建DBLinker的权限,语句GRANT或者Revoke撤销GRANT CREATE DATABASE LINK TO USER第二步:对于 CREATE PUBLIC DATABASE LINK schema CONNECT TO schema IDENTIFIED BY xxxx AUTHENTICATED BY schema@SERVER_
2014-02-25 15:15:20
660
原创 Sybase 的ODBC配置
本次访问其它服务器上的Sybase是通过ODBC的配置,具体如下: 1.进入我的电脑>>控制面板>>管理工具>>数据源(ODBC),选择系统DSN,点击添加2.出现创建新数据源界面,选择Adaptive Server IQ3.点击完成出现ODBC Configuration for Adaptive Server Anywhere 9界面,选择ODBC页面,在Data
2014-02-13 14:45:59
10084
原创 营销辅助测试包数据库部署
一、备份a>在数据库里创建临时表备份1.ORA00905:select * into A from B,缺少关键字,在PLSQL中写了一个语句:select * into A from B,运行时提示:错误00905,缺少关键字解决方法:那是MS-SQL的写法,ORACLE是 create table b as select * from a b>用exp和imp备份创建路
2014-02-13 14:37:15
596
原创 通过v$session查找访问客户端的IP地址
首先: select b.spid,a.* from v$session a,v$process b where a.paddr=b.addr where a.machine like '%machine_name%';1.可以找到数据库服务器的进程ID,记住此时是数据库服务器内部进程,可以登录小机,用:ps -ef|grep spid,可以找到此进程的信息2.n
2014-02-13 14:36:52
5498
原创 ALERT.LOG 里job错误提示的NUMBER
最近在ods里产生了很多的ora-12012:error on auto execute of job 368679错误,根据这个提示的数字,先到dba_jobs视图里查找,没有发现,再到dba_scheduler_jobs里查找,未发现,最后在sys.scheduler$_job下搜索obj#列的属性,找到了这个数字对应的job
2014-02-07 11:10:10
583
原创 OPERATING SYSTEMS-version
OPERATING SYSTEMSWhat version of HP-UX am I running? To get the version of UNIX on your server, go into the korn shell and enter the 'uname' command with an 'a' option.:>uname -aHP-UX bmd350
2014-02-07 10:02:18
482
原创 Oracle的备份操作
1.从dmp文件里的用户导入到指定的用户: imp user/pwd fromuser=导出用户 touser=导入用户 file=d:\1.dmp (此时不能再加full参数,这里的导出用户是dmp文件里的用户)。 2.从system用户导出其它用户下的表,在表名前加入该用户名即可。
2013-12-30 15:30:53
405
原创 oracle 的日志
1.Oracle维护着两类重做日志文件:在线(online)重做日志文件和归档(archived)重做日志文件。2. ARCHIVE LOG LIST ----查看数据库是否处于归档模式(用sys用户登录,显示当前用户:show user)3.在线(online)重做日志文件位置:select * from v$logfile;归档(archived)重做日志文件位置:s
2013-12-26 11:23:33
494
原创 oracle之session会话
1.select * from v$session;2.备注:v$session 里的session 数不准确, 没有计算recursive call 的session 数, 用下面的来查看 语句:select 'total session num' as name, count(*) as scount from x$ksuse where bitand(ksspaflg,1) !=
2013-12-19 11:39:21
462
原创 Socket编程记录
一 初始化Socket出现错误 1. 当我在以非Administrator的用户去初始化Socket对象的时候,出现了10013错误:以一种访问权限不允许的方式做了一个访问套接字的尝试。 2.换成Administrator就解决了上述问题。 3. 猜想:a.非Administrator不具有System的权限。二 实现ping 1.出现断断
2013-08-20 20:29:28
496
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人