分类 技术相关 下的文章

java设计模式

OPP七大原则:

◆开闭原则:对扩展开放,对修改关闭
◆里氏替换原则:继承必须确保超类所拥有的性质在子类中仍然成立
◆依赖倒置原则:要面向接口编程,不要面向实现编程。
◆单一职责原则:控制类的粒度大小、将对象解耦、提高其内聚性。
◆接口隔离原则:要为各个类建立它们需要的专用接口
◆迪米特法则:只与你的直接朋友交谈,不跟“陌生人”说话。
◆合成复用原则:尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

里氏替换原则:

里氏替换原则通俗来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。也就是说:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法。
按照里氏替换原则的要求,子类应该保留父类的功能,任何使用父类实例的地方都应该能用子类实例替换,以上的继承机制显然没有不满足该要求,所以从里氏替换原则的角度“正方形不是长方形”。

迪米特法则

又叫做最少知道原则,就是说一个对象应当对其它对象有尽可能少的了解,不要和陌生人说话。
强调只和朋友说话,不和陌生人说话。这里的朋友指的是:出现在成员变量,方法输入,输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。
迪米特法则初衷在于降低类之间的耦合。由于每个类尽量减少对其它类的依赖,因此。很容易使得系统的功能模块独立,相互之间不存在(或很少有)依赖关系。

java.sql.SQLException: Unknown error 145
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2484)

CHECK TABLE tableName;
执行这个,如果表正常是下面的,如果不正常则会报表有错误,需要修复下
check table info

修复方式:

1.到数据目录下执行
myisamchk -r -c table_name.MYI

recovering (with keycache) MyISAM-table 'table_name.MYI'
Data records: 289
Data records: 288

2.Navicat 工具解决办法:
选中表->右键->Maintain->Repair Table->Quick,亲测有效。
解决问题。

spring中自定义组件需要使用spring的底层组件时,可以通过自定义组件实现相关XxxAware接口,重写其中的方法进而实现。

例如:自定义一个组件,该组件中需要使用ApplicationContext、BeanFactory属性,那么我们就可以通过实现ApplicationContextAware、BeanFactoryAware接口实现。会自动set对应的属性,直接使用Spring底层组件。

The use of the Aware interface in spring, setting the BeanFactory

Aware interface

常见的spring Aware接口

83567-2g06zdq4lzm.png

如果创建函数报错,设置下属性 仅当前连接有效

set global log_bin_trust_function_creators=TRUE;

注意sTemp的长度,如果是数字VARCHAR(1000)够用,如果是uuid则弄成了大字段text 树形菜单不会太多记录

DROP FUNCTION IF EXISTS getMenuChildList;
CREATE FUNCTION `getMenuChildList`(rootId CHAR(32))
    RETURNS text
BEGIN
    DECLARE sTemp text;
    DECLARE sTempChd VARCHAR(1000);


    SET sTemp = '$';
    SET sTempChd =cast(rootId as CHAR);


    WHILE sTempChd is not null DO
    SET sTemp = concat(sTemp,',',sTempChd);
    SELECT group_concat(menu_code) INTO sTempChd FROM  sys_menu where FIND_IN_SET(parent_code,sTempChd)>0;
    END WHILE;
    RETURN sTemp;
END
select * from  sys_menu where FIND_IN_SET(menu_code ,getMenuChildList('0001222'));
免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。