- 博客(57)
- 收藏
- 关注
原创 Spring的Bean声明、初始化、使用、销毁
Bean是由Spring IoC容器实例化、组装和管理的对象。先通过一个简单的例子来了解把对象声明为Bean的作用。1. Bean声明在applicationContext.xml中配置bean的定义<bean id="screwDriver" class="com.pxy.ScrewDriver"></bean>//ScrewDriver.javapubli...
2020-05-02 15:51:19 391 1
转载 【转】mybatis查询时传入多个参数的方法
下面给大家总结了以下几种多参数传递的方法。方法1:顺序传参法public User selectUser(String name, int deptId); select * from user where user_name = #{0} and dept_id = #{1}#{}里面的数字代表你传入参数的顺序。这种方法不建议使用,sql层表达不直观,且一旦顺序调整容...
2020-05-02 15:48:00 712
原创 Java泛型
#1. 泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是本身就是一个安全隐患。那么泛型的好处就是在编译的时候能够检查类型安全,并且所有的强制转换都是自动和隐式的。#2...
2020-05-02 15:43:50 228
原创 使用obj.getClass()获取对象类型时注意基本类型
获取Class对象的三种方法使用 Class 类的 forName 静态方法;直接获取某一个对象的 class;调用某个对象的 getClass() 方法public class ClassTest { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessExcep...
2020-05-02 15:42:19 2944
原创 在java中实现将函数赋值给另一个对象
在c#中有委托类型delegate的对象,可将任意类的函数赋值给此对象,则此对象就可表现出与函数相同的行为。在Java中没有delegate类型的对象,但可以使用lambda表达式或::操作符实现将函数赋值给另一个对象。public class LambdaTest { //Event接口只能有一个方法,否则将无法通过lambda表达式后::操作符找到此方法 //@Functi...
2020-05-02 15:41:50 1576
原创 IDEA新建和运行SpringMVC项目
使用springBoot的项目是通过运行@SpringBootApplication注解的类来启动项目(spring-boot-starter-web中内置了一个Tomcat),使用了SpringMVC框架的项目却不是通过直接运行某个类来启动项目,而是将项目打包成war包放入Tomcat,由Tomcat来启动项目。下面介绍下使用IDEA生成一个SpringMVC项目和启动此项目的步骤。1. 安...
2020-05-02 15:40:44 13171 1
原创 使用Socket实现简单的RPC协议框架
在使用springboot,http实现简单的RPC协议框架这篇文章中我们了解了RPC的基本原理,就是根据本地接口来创建远程类的代理实现类,然后使用反射机制调用远程类的方法。在这篇文章中我们使用Socket作为两个服务的通信方式,Socket支持TCP和UDP通信,本文中的例子使用TCP通信。项目代码地址:https://github.com/buptpxy/rpcBySocket1. 创建工...
2020-05-02 15:38:16 412
原创 使用springboot,http实现简单的RPC协议框架
#一、 RPC协议的作用RPC(Remote Procedure Call),远程过程调用,就是像调用本服务中的函数一样去调用别的服务中的函数。二、RPC与HTTP的区别远程过程调用这一功能也可用HTTP协议实现,例如服务B暴露Restful接口,然后让服务A调用它的接口。基于Restful的调用方式因为可读性好(服务B暴露出的是Restful接口,可读性当然好)而且HTTP请求可以通过各种...
2020-05-02 15:36:50 4283
转载 如何陈述方案,使其他团队配合工作
1. 跨团队合作的难点例子:1.1 各部门的优先级事项不同对你们部门来说很重要的事情,对别的部门来说优先级可能比较低。1.2 各方的理解存在偏差各方对合作事项的理解不一致。比如,双方理解任务的难度不同。数据部门认为只是在系统填个表格,而业务部门认为填申请特别麻烦,他们还有别的事要忙。比如,双方理解任务的交付时间不同。数据部门认为的“尽快”是在当天完成,而业务部门认为的“尽快”是在...
2020-04-27 10:44:01 955
转载 据说一套阿里Java工程师答题正确率只有50%的题目-10道Java题测试挑战
题目一: float a = 0.125f; double b = 0.125d; System.out.println((a - b) == 0.0); 代码的输出结果是什么?A. trueB. false题目二: double c = 0.8; double d = 0.7; double e = 0.6; 那么c-d与d-e是否相等?A. trueB. false题目三: Sys...
2020-04-26 20:31:25 683 2
转载 Java开发手册-集合处理
关于List的坑1.【强制】关于hashCode和equals的处理,遵循如下规则:只要重写equals,就必须重写hashCode。因为Set存储的是不重复的对象,依据hashCode和equals进行判断,所以Set存储的对象必须重写这两个方法。如果自定义对象作为Map的键,那么必须重写hashCode和equals。说明:String正因为重写了hashCode和equals...
2020-04-26 20:30:13 372
转载 对突然提问的回应
在回答对方的问题之前,有两个关键的步骤,你可以先认可对方的提问、澄清对方的问题,为自己争取整理思路的时间。1. 认可对方的提问尽量避免使用“这是个好问题”,会让人觉得你在敷衍,认可其实是对情绪和事实的一种接纳。可以从三个方面来认可。1.1 认可提问者1.2 认可事实除了认可提问者,你也可以认可他提到的事实,你可以再次提到他说的事实,并评论:“正如您提到的…”。1.3 认可感受如果...
2020-04-26 14:39:41 181
转载 向上级临时汇报工作的方法
三种汇报内容:汇报进度、汇报成果、汇报困难1. 汇报进度让老板有掌控感2. 汇报成果使用关键数据和故事,而不是将所有事情的过程3. 汇报困难带着困难和问题的解决方案去汇报,可使用解决问题结构(问题-原因-解决方案选项-利弊分析)。这里的解决方案最好有两个,让老板做选择题而不是填空题或判断题。...
2020-04-25 20:06:53 363
转载 用事实代替感受-减少被误解概率
讲事实说对方的感受和误解请求解释机会场景一你因为身体不适,这周的任务一直在延迟交付日期,部门领导有点生气,走到你办公桌前责问,“最近工作有点懈怠啊,这周三要交的内容怎么一直没完成……”反例我最近身体不好,所以工作拖延了,我今天肯定会做完的。但在领导听来,这似乎并不具有说服力,更像是一个借口.正例1. 我的工作的确延迟了,本来周三要交付的东西,现在还没有完成(事实)2. ...
2020-04-24 19:29:09 360
转载 让发言更有说服力的两种表达素材
好素材能填充你的观点1. 数据反例这款产品使用人数众多。正例这款产品现有用户数850万,预计每日新增用户数在5-8万。很明显使用数据说话更有说服力。使用数据的两个原则数据要筛选筛选能代表结果的关键数据数据要解释数据本身没有意义,对数据的解释才能赋予数据意义:对比、类比、换算2. 故事故事三要素:冲突(核心)、行动、结局反例:正例:...
2020-04-24 15:30:27 274
转载 《Java开发手册》SQL规约
1.【强制】不要使用count(列名)或count(常量)来替代count(*),count(*)就是SQL92定义的标准统计行数的语法,跟数据库无关,跟NULL和非NULL无关。说明:count(*)会统计值为NULL的行,而count(列名)不会统计此列为NULL值的行。主要用法有COUNT(*)、COUNT(字段)和COUNT(1)。因为COUNT(*)是SQL92定义的标准统计行数...
2020-04-23 13:28:40 262
转载 快速整理表达思路的三种结构
1. 时间轴结构按时间顺序表达:过去-现在-未来按事情发展顺序表达:首先-然后-最后适用于“任何场景”例子:2. 解决问题结构问题-原因-解决方案(what-why-how)适用于“复盘的场景”例子:3. FAB销售结构属性-优势-利益(feature-advantage-benefit)适用于“推销的场景”:自我介绍、方案展示、提出想法等例子自我介绍:基本情况...
2020-04-23 12:51:10 526
转载 如何确定表达的核心主题
1. 总体原则明确表达目的和表达主题:你的表达目的是什么->对方想听哪些点,你的诉求是什么反例正例这里面的核心主题就是“我这半年的工作核心围绕【用户量增长】展开”2. 如何确定主题2.1 说能表达你的意图的主题反例“汇报下咱们周年庆活动的进度”不算主题,一个主题应该是对所讨论内容你持有的观点或想法,要是有思想的,是你讲这段话的目的或要起到的效果。正例反例正例...
2020-04-23 11:31:07 379
转载 《java开发手册》中关于日期时间的编程规约
1.【强制】日期格式化时,传入pattern中表示年份统一使用小写的y。说明:日期格式化时,yyyy表示当天所在的年,而大写的YYYY代表是week in which year(JDK7之后引入的概念),意思是当天所在的周属于的年份,一周从周日开始,周六结束,只要本周跨年,返回的YYYY就是下一年。正例:表示日期和时间的格式如下所示:new SimpleDateFormat("yyyy-MM...
2020-04-22 12:18:32 395
原创 让虚拟机固定IP地址
由于虚拟机中的Centos总是在动态获取IP,导致客户端经常需要更改连接Centos的IP,如果能手动固定IP则方便许多。1 更改ifcfg-eth0文件# vim /etc/sysconfig/network-scripts/ifcfg-eth0当前是DHCP模式DEVICE="eth0"BOOTPROTO="dhcp"HWADDR="00:0C:29:A4:4E:29"IPV6...
2020-04-16 14:25:51 222
原创 电商平台的数据表结构设计
MySQL常用命令数据表结构设计1. 系统功能2. 表2.1 用户表mmall_user2.2 收货地址表mmall_shipping2.3 商品表mmall_product2.4 商品类别表mmall_category2.5 购物车表mmall_cart2.6 订单表 mmall_order`2.7 订单明细表 mmall_order_item`2.8 ~~账户表~~ `支付信息表mmall...
2020-04-15 20:34:59 7806 1
原创 可使用System.getProperty(String key)获得的环境变量
key 可以为:java.version #Java 运行时环境版本java.vendor #Java 运行时环境供应商java.vendor.url #Java 供应商的 URLjava.vm.specification.version #Java 虚拟机规范版本java.vm.specification.ven...
2020-04-15 09:52:38 211
原创 Mac上使用nginx访问本地文件夹报403的问题
1. 安装并配置nginx1.1 安装nginxbrew install nginx安装成功后命令行提示可以使用brew services start nginx来启动nginx,也可直接使用nginx来启动。配置文件默认在/usr/local/etc/nginx/nginx.confnginx.conf的初始配置如下#user nobody;worker_processe...
2020-04-14 18:22:34 2346 1
原创 nginx在Centos和Mac的安装和使用
Mac安装nginxbrew install nginxnginx使用启动nginx服务器:nginx重启nginx服务器:nginx -s reload立即停止nginx服务器:nginx -s stop完整而有序地停止nginx服务器:nginx -s quitnginx配置文件配置文件默认在/usr/local/etc/nginx/nginx.conf。Nginx配置文...
2020-04-13 16:36:50 248
原创 【行为型模式十一】访问者模式
一、对不同的客户设置不同的价钱现实生活中,不同类型的客户购买同一件商品时,价钱可能会不同。例如企业客户购买时通常会购买的比较多,买的越多则看到显示的单价也越便宜。而个人客户看到显示的单价则贵一些。且不仅购买的时候价格不同,修理、退货等各种场景时的价格可能都不同。像这种将数据操作和数据结构分离的需求,可使用访问者模式实现。二、访问者模式访问者模式是23中设计模式中最复杂的设计模式,并且使用频率...
2020-04-13 14:23:13 190
原创 【行为型模式十】解释器模式
一、定义一种计算公式模型现在有一个需求,要实现输入一个模型公式(例如输入a+b+c-d或a+b+e-d或a-f型的公式),然后再输入模型中的参数值(例如a为1,b为2,c为3,d为4,则依次输入1,2,3,4),运算出结果。要求在程序运行期间可解析输入的不同公式,并给出运算结果。需求不复杂,若仅仅对数字采用四则运算,每个程序员都可以写出来。但是增加了增加模型公式就复杂了。先解释一下为什么需要公...
2020-04-13 14:21:35 179
原创 【行为型模式九】中介者模式
一、计算器各部件之间的交互一个简单的计算器软件,有输入框组件、显示框组件和计算组件。要让这三个组件协同工作,当输入框输入内容时,显示框需显示出来,计算组件需根据输入内容做出保存下输入的内容或对已保存的内容进行计算并在显示框显示计算结果的响应。1.1 Component抽象类public abstract class Component { public abstract void o...
2020-04-13 14:20:17 181
原创 【行为型模式八】命令模式
一、组装计算器有时候,系统会有一些队列请求或日志请求。需要把请求记录下来,或者要实现对请求的撤销、恢复等功能。例如组装一个计算器,有组装芯片、组装屏幕、组装按键、组装外壳四种命令,需要执行、记录不同用户的不同命令,就可以使用命令模式。二、命令模式命令模式(Command)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。2.1...
2020-04-13 14:19:01 184
原创 【行为型模式七】迭代器模式
一、封装自定义数据结构的访问方式通常我们可能会自定义一种数据结构,例如数组实现的栈,需要提供一个访问该栈中各个元素的方法,又不想暴露该栈是用数组实现的还是链表实现的。就可以使用迭代器模式。通常每种语言中都内置了迭代器模式,例如Java中的Iterable接口,就是为迭代器模式准备的。所有能使用foreach方式遍历的容器(所有Collection的子类)都实现了Iterable接口。二、迭代器...
2020-04-13 14:17:12 128
原创 【行为型模式六】观察者模式-发布/订阅模式
1. 根据价格来决定买卖计算器我们在状态模式中实现了一个计算器类,价格是按时间动态调整的。现在想实现当计算器的价格改变时,可以通知多个买家和卖家来进行买入或卖出动作。像这种当一个对象的改变需要同时改变多个对象,且不知道具体有多少对象的需求,就可以使用观察者模式来实现。2. 观察者模式观察者模式(Observer)又叫发布/订阅模式(Publish/Subscribe)。定义了一个一对多的依...
2020-04-13 14:15:59 261
原创 【行为型模式五】备忘录模式
一、把计算器的价格和状态备份在状态模式中,我们实现了根据生产日期改变计算器的状态从而改变价格,如果需要回到之前的状态和价格,可以使用备忘录模式将状态和价格存储下来,类似游戏中的存档。二、备忘录模式备忘录模式(memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。2.1 备忘录模式的角色使用备忘录模式保存计...
2020-04-13 14:14:00 214
原创 【行为型模式四】模板方法模式
1. 提取出重复的代码在装饰模式中,我们实现了动态地给计算器添加进行不同运算时打印不同颜色的功能,而无需修改之前的代码。在装饰模式中,我们的打印颜色类ShowRed,ShowYellow,ShowBlue都继承了抽象父类ShowColor。ShowColor的代码为:public abstract class ShowColor extends Calculator { protec...
2020-04-13 14:12:28 142
原创 【行为型模式三】职责链(责任链)模式
一、前情提要我们已经使用状态模式实现了一个功能,让计算器类根据自身状态的变化,动态地调整价格。且客户端无需关注状态的变化,和对应的价格设置行为的变化,直接调用设置价格的方法即可。在适配器模式](https://www.jianshu.com/p/f641a4e39dc4,我们在状态模式中定义的几种状态的基础上新增了一种状态SlightlyOldState,发现原有的状态类直接相互耦合,新增状态...
2020-04-13 14:10:48 303
原创 【行为型模式二】状态模式
一、动态地设置计算器的不同价格有一个计算器类,有生产日期和价格两种属性,现在的需求是根据生产年限的不同为计算器设置不同的价格。例如生产1年之内,价格为基本价;生产1年之后,3年之内,价格为基本价的1/3;生产3年之后,价格为基本价的1/10。计算器类:public class Calculator { private int price; private Date produ...
2020-04-13 14:08:26 150
原创 【行为型模式一】策略模式
一、简单工厂模式的缺陷在简单工厂模式一文中,我们使用简单工厂模式实现了一个基本计算器,客户端暴露给用户的方法如下: public static int computeByFactory(int num1, String operator, int num2) throws Exception { Operation operation = OperationFactory...
2020-04-13 14:03:50 236
原创 maven下载安装
maven是用来管理Java项目的构建和依赖包管理的工具。1.下载下载地址:http://maven.apache.org/download.cgi。下载maven文件并解压。2.配置环境变量编辑.bash_profile文件:vim ~/.bash_profile配置maven文件地址:export M3_HOME=/Users/pengxueyin/Downloads/apach...
2020-04-13 14:02:37 221
原创 Mac安装MySQL,MySQL常用命令
1 安装官网下载https://dev.mysql.com/downloads/ ,点击MySQL Community Server再选择特定版本的数据库下载。参考https://www.cnblogs.com/nickchen121/p/11145123.html或使用Mac的Homebrew进行下载brew install mysql查看mysql安装的地方:brew list ...
2020-04-12 22:20:39 365
原创 Mac取消brew自动更新
Mac取消brew自动更新每次使用brew都先出现Updating Homebrew...自动更新,很浪费时间,可通过sudo vim /etc/profile ,末尾添加:export HOMEBREW_NO_AUTO_UPDATE=true ,并执行source /etc/profile使配置文件生效...
2020-04-12 22:18:43 816
原创 Mac无法连接到github.com
遇到如下错误,说明Mac无法连接到github.comfatal: unable to access 'https://github.com/Homebrew/homebrew-services/': Failed to connect to github.com port 443: Operation timed out命令行执行ping github.com,结果无法ping 通PIN...
2020-04-12 22:17:44 4759 1
原创 mac中无权限在/usr/local/etc文件夹新建文件
如果mac中无权限在/usr/local/etc文件夹新建文件,则重启mac按住 Command+R,进入恢复模式,打开命令行输入csrutil disable重启即可。如果要恢复默认,那么命令行输入csrutil enable...
2020-04-12 22:16:23 4237 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人