- 博客(25)
- 资源 (2)
- 收藏
- 关注
原创 装饰模式
装饰模式:不改变原有对象功能的基础之上进行扩展,1.面向抽象component2.实体组件 concretComponent3.Decrator: 一般实现为一个抽象类4.具体装饰concreateDecrator以log日志文件格式改变为例。将log日志文件的格式以json格式输出、public class DecoratorLogger implements Logger { public Logger logger; public DecoratorLogger(Log
2020-12-26 14:53:28 105
原创 门面模式
门面模式提供统一的接口,去访问子系统的接口。外观角色:统一接口faceade子系统角色:subsystem积分商城为例:public class GiftFaceade { private QualifyService qualifyService = new QualifyService(); private PaymentService paymentService = new PaymentService(); private DeliveryService del
2020-12-26 12:03:36 123
原创 软件7大设计模式
1. 开闭原则一个类或者接口最好是可以进行扩展和引用,所谓的开闭就是针对功能扩展和修改而言。 提高可复用性和可维护性。ex:以java课程价格和活动打折为例。课程public interface ICourse { Integer getId(); String getName(); Double getPrice();}java课程public class JavaCourse implements ICourse { private Integ
2020-12-14 14:12:03 116
原创 jvm浅出
1.栈:执行不同的方法栈帧:执行的一个方法单位虚拟机栈,native栈线程私有jvm内存分布区:栈帧的结构:即时信息:高度jvm版本信动态链接:支持方法动态调用的过程,符号引用变直接引用。解析阶段:动态链接:类似方法的具体确定,不关心具体哪个子类中,只要当前方法执行过程中,符号引用变直接引用。程序计数器:执行java方法,记录虚拟机指令的地址执行native 记录为空2.堆中java对象的结构对象头markword:记录哈希码,锁状态等,8字节classpointer:执
2020-12-10 15:26:50 82
原创 jvm学习笔记入门
其实,理解一张图就好了。一个class类文件加载进jvm需要经历几个步骤,也就是传说中的类加载机制。1.所谓的类加载理解这一张图:1.装载; 类加载器外部实现,通过全限定名获取class文件的流,2、链接:a.验证文件格式的验证:版本号,16进制开头元数据验证:语义验证,是否父类,是否final修饰的类被继承字节码验证:运行检查,操作参数符号引用验证:类是否存在等b。准备被static,final修饰过得变量在方法区开辟一块内存初始化复制。其中加了final修饰的变量会多一个属
2020-12-10 14:46:38 73
原创 线程学习
线程笔记1.线程:cpu执行的最小单位2.并发和并行: 并发:同一时间段 并行:同时运行3.线程的实际意义(提升性能) 性能:硬件(cpu,内存) 软件:线程,网络通信,i04.java实现多线程 1.thread 2.collable/future 工具使用(短信发送) 3.runnable接口 线程的特点:异步,并行5.线程启动和终止 线程的启动:java本身没有线程,线程属于操作系统上的。线程的终止:1.强制终止 STOP2.友好终止:
2020-11-21 17:16:23 86
转载 git log中文乱码
1、运行Git Bash窗口,在该窗口导航条(即最上面)右键,选择Options−>Text,找到下面两处 Locale:选择 zh_CN Charector set:选择 UTF-82、git config --global i18n.commitencoding utf-8 --注释:该命令表示提交命令的时候使用utf-8编码集提交git config --global i18n.logoutputencoding utf-8 --注释:该命令表示日志输出时使用utf-8编码集显示
2020-06-23 11:13:14 213
原创 解决 maven依赖无法导入的问题
最近项目一直出现依赖导入问题,弄了好久,真的是好恶心。具体问题就是本地仓库中连接驱动已经下载好了但是idea中无法使用,给出具体方法:1.查看私服配置是否正确,我选择的阿里云 <mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://
2020-06-18 09:39:02 2830
原创 数据库连接问题
遇到一个坑,连接数据库出现这个问题,想了好久,最后终于解决了,在这儿提供两个方法:修改数据库驱动的版本,使用低等级的版本,我使用的 是<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.32</version> </dependency>5.x版本的驱动文件jar
2020-06-16 19:20:30 235
转载 Aop配置通知,多次输出消息
配置文件:` <aop:config > <aop:pointcut id="pointCutLog" expression="execution(* *..*.*(..))"></aop:pointcut> <!--配置切面--> <aop:aspect> <aop:after method="showAfter" pointcut-ref="pointCutLog"/> <
2020-06-14 16:46:55 140
原创 整理出来的关于Spring的注解,方便记忆回顾
1.和装配bean有关:@Compnent :三个引申@Controller :表现层(web)@Service :业务层@Repository :持久层dao()2.注入相关@Autowired@Qualifier(value="?")@Resource(name="?")@Value:自动注入属性值,通过${}获取3.生命周期和范围:@PostConstruct:初始方法@PreDestroy:销毁方法@Scope:作用范围,singleton,protype4.配
2020-06-12 10:19:36 300
原创 Spring笔记
BeanFactory和ApplicationTextBeanFactory 才是 Spring 容器中的顶层接口。ApplicationContext 是它的子接口。BeanFactory 和 ApplicationContext 的区别: 创建对象的时间点不一样。ApplicationContext:只要一读取配置文件,默认情况下就会创建对象。BeanFactory:什么使用什么时候创建对象。Beanfactory的用法:BeanFactory ac = new XmlBeanFacto
2020-06-10 13:31:19 126
原创 Spring生命周期方法
当使用 init-method 和 destroy-method 的时候,使用 prototype 时 Spring 不会负责销毁容器对象,即 Spring 不会调用 destroy-method 所指定的方法,所以需要去掉 scope 属性,使用默认的 singleton,sinleton和protype区别:单例对象:scope="singleton" 一个应用只有一个对象的实例。它的作用范围就是整个应用。 生命周期: 对象出生:当应用加载,创建容器时,对象就被创建了。 对象活着:只要容
2020-06-10 13:30:03 164
原创 ResourceBundle
java.util的内置方法,主要功能是用于解析properties文件的。private static ResourceBundle rb = ResourceBundle.getBundle("beans");private static Map<String,Object> map = new HashMap<String,Object>();static{ try { //获取所有的key Enumeration<Str
2020-06-09 21:47:23 114
原创 二叉树查找某个元素
public int FindMaxUserLevelOrder(TreeNode root) { int max = Integer.MIN_VALUE; TreeNode temp = null; EnQueue Q = new EnQueue(); Q.add(root); while (!Q.isEmpty()) { temp = Q.remove(); //找出最大值
2020-06-01 16:35:32 2786
原创 二叉树查找最大元素算法
/** * 递归实现:查找二叉树节点中的最大值 * 找出根节点,左子树,右子树节点的最大值,分别比较 * @param root */ public int FindMax(TreeNode root) { int maxNumber=Integer.MIN_VALUE; int root_val,left_val,right_val; //根节点,左子树,右子树节点的最大值 if (root != nul
2020-06-01 16:02:14 3893 2
原创 二叉树的遍历(前中后)
二叉树的遍历总体来说分为递归和非递归实现前序遍历循环前序遍历/** *二叉树前序遍历DLR */public static void preOrder(TreeNode rootNode) { if (rootNode != null) { System.out.println(rootNode.getData()); preOrder(rootNode.getLeftNode()); preOrder(rootNode.getR
2020-06-01 11:43:11 149
原创 jdbc连接数据库
1.jdbc连接数据库总的来说分为6步:a…创建驱动(可以省略,获取连接对象时候已经创建驱动对象)b…获取连接对象c…生成数据库操作预编译对象d…设置参数e…处理结果集f…释放资源2.具体的代码实现public class JDBCConnectioonMysql { public static void main(String[] args) throws SQLExce...
2019-03-27 22:58:42 103
原创 关于mybatis的一些学习笔记
1.在maven中设置编译插件 <!--设置编译插件--> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> &l...
2019-03-27 22:31:58 92
原创 关于二分查找的一些想法
二分查找总结笔记。1. 思想:将一个有序的序列,不断的将中间的值和关键值做对比,如果相等就返回中间值;如果中间值大,那么就将中间值之前的序列 * 重新作为有序序列和关键字做对比,中间值小的情况也是一样。 * 最终找出关键值所在的位置。**2. 代码实现1.使用非递归实现二分查找public int binarySearch(int keyValu...
2019-03-24 20:38:33 213
原创 Address localhost:8080 is already in use
idea运行web项目的时候遇到 Error running: Address localhost:8080 is already in use 。该错误为Tomcat端口8080端口被占用。解决方案:1.如果你的电脑已经startup.bar命令启动了Tomcat服务器了,这时候你在用IDEA去启动就有可能出现这样的问题。解决办法本简单就是把电脑开的Tomcat命令行窗口关闭,重新运行醒目就...
2018-09-19 10:37:43 14207
原创 UnsupportedClassVersionError: Unsupported major.minor version 52.0
在进行JdbcTemplate连接池学习的时候出现版本兼容的问题,具体如下: 经过查询得知: stanford parser和jdk版本对应关系 J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, ...
2018-09-08 10:42:05 351
原创 idea软件:spellchecker inspection helps locate typos and misspelled in your code,comments and literals问
刚开始用idea软件,对于刚使用软件的我发现一个问题,敲代码的时候,变量命名的时候经常出现波浪号(如下图),对于强迫症来说,这是无法接受的。 于是查询得到解决方法! 解决方法1:讲字符串添加进字典 解决方法2:禁用IDEA中的单词拼写检查 其实,我们从提示就可以看懂了:spellchecker inspection helps locate typos and miss...
2018-09-04 21:48:15 16845
原创 java中匿名内部类的总结
在java类的学习中,在遇到内部类的时候调用子类里面的方法等时,总是会觉得比较麻烦。 这是类嵌套的格式:class Car { //外部类 class Engine { //内部类 }}此时这种情况调用内部类里的方法时候会显得比较麻烦,具体如何实现呢?如下:外部类名.内部类名 对象名 = new 外部类型().new 内部类型();为了简化内部类的调用,就...
2018-08-29 22:27:57 340
原创 ++i 与 i++的区别
总是觉得这两个让人头疼,再次总结一下: 单独使用的时候,++无论是放在变量的前面还是后面,结果是一样的。 参与操作的时候: 如果++变量的右侧,先拿变量参与操作,后变量做++或者–; 如果++或者–在变量的左侧,先变量做++或者–,后拿变量参与操作。...
2018-08-15 11:27:04 267
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人