Peter

PeterChu 信仰之力
关注
11919 号成员,2018-02-09 16:12:33 加入
8.0k
个人主页 浏览
1.2k
帖子 + 回帖 + 评论
7003h2m
在线时长
人生是场修行,求知是种信仰 !
  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-22 18:31

    java 中 字符串的 slipt() 方法

    1. slipt() 方法会在分割完成后,对获取到的数组从末端开始验证是否为"",若 true 则,数组长度 -1 ,直到遇到一个不为"" 的元素。
    2. 此时,在这个不为 "" 的元素之前的所有其他 "" 元素依旧保留。(未验证数组起始端的 "" 是否验证排除)
    3. 不知道从 1.5 开始到现在最新版本,该方法是否发生变化。
        public static void main(String[] args) {
    
    	String s = "";
    	String[] ss =  s.split(",");
            System.out.println(ss.length);//1
            System.out.println(Arrays.toString(ss));//[]
            System.out.println(ss == null);//false
            System.out.println(ss[0] == null);//false
    
            String s1 = "123-123.2-1--";
            String[] ss1 =  s1.split("-");
            System.out.println(ss1.length);//3
            System.out.println(Arrays.toString(ss1));//[123, 123.2, 1]
    
            String s2 = "123--123.2-1--";
            String[] ss2 =  s2.split("-");
            System.out.println(ss2.length);//4
            System.out.println(Arrays.toString(ss2));//[123, , 123.2, 1]
        }
    

    参考 :
    https://blog.csdn.net/qq_27093465/article/details/54910323

  • 我的明月清风我的日常贴

    2019-07-22 11:04

    Spring Boot Reference Guide 2.0 中文翻译 -
    《Spring Boot 参考指南》

    https://github.com/jack80342/Spring-Boot-Reference-Guide

  • 1 个亿的小项目

    2019-07-22 10:34

    看到有个说法就是大家为杰伦打榜时候看见罗大佑更需要打榜,所以,很多人叛变革命了 😂

  • 社区缺陷报告与功能建议

    2019-07-20 21:54

    😂 好吧,还真是必须有关键词才能搜索。
    但是,这个其实我是想搜索 我发的 所有 问答贴 ,然后一个个检查下有没有没关闭的,
    如果必须要关键词的话,可能会有几个问题,

    • 不能查找我发布的所有某种类型的帖子
    • 在使用高级搜索的情况下,很大可能都是忘记了关键词,如果有关键词,有很大概率用不上高级搜索了。
    • 还有一个就是此处应该有个提示,右侧的条件刚开始我以为有单独的搜索按钮,后来一直找不到,才发现需要点击那个唯一的搜索按钮。因为刚开始因为布局的原因吧,以为这个按钮不是和高级搜索有关联的。
  • 社区缺陷报告与功能建议

    2019-07-20 18:05

    image.png
    报告大王,高级搜索这里是不是因为这个 js 报错没有结果呢

    btw,这个 [缺陷报告] 文章现阶段有没有,或者可不可以在明显位置有个快捷访问链接呢,(后续可以放到更加隐藏位置或者取消)
    比如页面底部,或者右上角个人头像菜单里面,
    image.png

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-20 17:50

    为 jp 工具添加自定义方法,实现 js 的 unicode 编码

    在 jeeplus.js 中的添加方法

    (function(){
    	jp = {
    
    	        /** 实现 unicode 编码 */
    	        toUnicode : function (s) {
    	            var str = "";
    	            for (var i = 0; i < s.length; i++) {
    	                str +="\\u"+('0000' + s.charCodeAt(i).toString(16)).slice(-4)+"";
    	            }
    	            return str;
    	        },	
    	}
    })(jQuery);
    

    实现效果:
    image.png

    需要注意的是:"\u0061\u0062\u0063" 中间需要转义字符:
    "\\u0061\\u0062\\u0063"

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-20 14:30

    Mysql 中对一个表中的字段进行汇总计算后 赋值给 其中一个字段

    如:招生计划表中,按照年份、省份、批次、文理科、学校 分组汇总后,将各专业招生计划数汇总后,赋值给该校该年度该批次该省份该文理科中的 招生计划总数。

    查询语句:

    
    SELECT
    	COUNT(zhaoshengjihua) AS jihuazongshu,
    	zhaoshengjihuazongshu,
    	shengfen,
    	nianfen,
    	wenlike,
    	pici,
    	daxuedaima,
    	daxuemingcheng
    FROM
    	d_zhaoshengjihuabiao
    GROUP BY
    	shengfen,
    	nianfen,
    	wenlike,
    	pici,
    	daxuedaima;
    
    

    image.png
    *zhaoshengjihuazongshu 字段中已经被赋值了,原来该字段中的值为空

    最开始写出的 sql 如下,但是完全不正确。

    
    
    UPDATE d_zhaoshengjihuabiao a
    SET a.zhaoshengjihuazongshu = (
    	SELECT
    		COUNT(b.zhaoshengjihua) AS b.cou,
    		b.shengfen,
    		b.nianfen,
    		b.wenlike,
    		b.pici,
    		b.daxuedaima
    	FROM
    		d_zhaoshengjihuabiao b
    	GROUP BY
    		b.shengfen,
    		b.nianfen,
    		b.wenlike,
    		b.pici,
    		b.daxuedaima
    )
    WHERE
    	b.shengfen = a.shengfen
    AND b.nianfen = a.nianfen
    AND b.wenlike = a.wenlike
    AND b.pici = a.pici
    AND b.daxuedaima = a.daxuedaima
    

    在网上搜索后,看到如下 2 条 sql 做为参考:

    -- 1
    UPDATE au_window_re_project aw
    SET aw.project_name = (
    	SELECT
    		ap.SERVICENAME
    	FROM
    		apas_service ap
    	WHERE
    		ap.unid = aw.PROJECT_ID
    )
    
    -- 2
    UPDATE test_user_points AS a
    LEFT JOIN (
    	SELECT
    		user_id,
    		sum(point) AS point_count
    	FROM
    		test_point_log
    	GROUP BY
    		user_id
    ) AS b ON a.user_id = b.user_id
    SET a.point_count = b.point_count
    

    最终参考第 2 条 SQL 写出如下语句,可以实现要求:

    
    UPDATE d_zhaoshengjihuabiao AS a
    LEFT JOIN (
    	SELECT
    		COUNT(zhaoshengjihua) AS cou,
    		shengfen,
    		nianfen,
    		wenlike,
    		pici,
    		daxuedaima
    	FROM
    		d_zhaoshengjihuabiao
    	GROUP BY
    		shengfen,
    		nianfen,
    		wenlike,
    		pici,
    		daxuedaima
    ) AS b ON (
    	a.shengfen = b.shengfen
    	AND a.wenlike = b.wenlike
    	AND a.nianfen = b.nianfen
    	AND a.pici = b.pici
    	AND a.daxuedaima = b.daxuedaima
    )
    SET a.zhaoshengjihuazongshu = b.cou ;
    
  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-19 16:26

    Jeeplus 的树形结构表,在 List.jsp 展示中的问题:某个字段使用字典后,需要在 js 中进行转化。

    eg:可以参考 area.js
    image.png

    image.png

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-19 16:23

    jstree 中怎么设置展开的层级啊?

  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-18 19:34

    这块我其实是传的 "xxx%xxx%xxxx%xx"
    至于这块拼接 % 的原因大致是因为此处是个 findList 的查询 SQL,适用于很多地方,尤其是用在用户输入某字段值后进行模糊匹配查询,这种可能是因为在这块 sql 中设置拼接 % 比在 C 或 S 层进行拼接要方便多,最主要是这个是 代码生成 的一个功能决定的应该。
    jeeSite 这类有 代码生成 功能的框架应该这么处理是最好的吧。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-18 17:50

    image.png

    Mysql 这个 Cascade 在更新了主表的关联字段如 user 表中 id 可以更新附表中的关联字段,比如 附表中的 userid 吗?
    有没有一种方法,可以只设置 1 个 字段为外键后,其他几个字段作为同步关联字段,比如 主表 user 表中 id, name, age ,sex 将 id 设置为外键关联附表的 userid 后,同时附表中也包含了 username , userage, 能否不再设置其他外键情况下,实现更新主表中的 id,name,同步更新附表中的 userid, username 呢?
    还是必须再为 name --> username 做一个外键关联一下?

  • 流氓软件黑名单 Rogue-software Blacklist

    2019-07-18 11:53

    FFNews 这个操作 6 了哦,只要电脑开机未断网,就每天自动通过 IE 访问一次广告。

    image.png

  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-18 10:56

    😁 这个是 jeesite、jeeplus 框架项目里面都是这种,可以配置不同的数据库,不用单独修改 mapper.xml 好像。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-17 16:17

    IDEA 中怎么可以查看某个类被哪些类引用了?
    就是哪些类中使用了该类做属性,包含着该类?
    ctrl+alt+u 只能查看该类 继承、实现 了哪些类 ?
    emmm.....应该怎么讲呢?

  • SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

    2019-07-16 12:15

    没时间测试到底如何实现,还是单独再写一个查询方法了。

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-16 10:30

    SSM 中 MyBatis 的某个 xxxMapper.xml 中,是否可以这样写?

                <if test="planMajorName != null and  planMajorName != '' and r1 = '0'">
                    AND a.planmajorname = #{planMajorName}
                </if>
                <if test="planMajorName != null and  planMajorName != '' and (r1 = null or r1 = '')">
                    AND a.planmajorname LIKE
                    <if test="dbName == 'oracle'">'%'||#{planMajorName}||'%'</if>
                    <if test="dbName == 'mssql'">'%'+#{planMajorName}+'%'</if>
                    <if test="dbName == 'mysql'">concat('%',#{planMajorName},'%')</if>
                </if>
    
  • 我的明月清风我的日常贴

    2019-07-15 21:12

    😭 😭 😭
    昨晚大致浏览了下《此房是我造》,造成心理阴影了,不为别的,只为猫王他孙女。fxxxxxxxxxxxxk.........
    我要忘记这个画面


    image.png

  • 我的明月清风我的日常贴

    2019-07-13 19:56

    我喜欢的 HEXO 主题


    1.Asnippet

    A simple and interesting theme

    image.png

    2.Clover

    A real simple theme

    image.png


    3.Diaspora

    A clean and responsive themeimage.png


    https://blog.zhangruipeng.me/hexo-theme-icarus/


    1. 其他的见个人博客主题收藏夹
  • ES6 语法简介

    2019-07-13 17:21

    观后感


    • 写教程相当于练内功,写 app 相当于会武功的镖头闯荡江湖走镖。
    • 古代的绿林江湖门派里的人,每天除了练功,吃啥喝啥啊?
    • 可能人家都是大地主,家里有地有房有矿,岳不群也是个大地主,然后经常派外门弟子去收租子。
    • 咦,这样貌似很好玩哇,明显就像《了不起的修仙模拟器》啦,难道说,武侠游戏的发展趋势就是除了现有的 武功养成,还要加上 门派经济管理, 毕竟经济、政治、文化才是最好玩的,而且,下一波新人类会玩的越来越深,普普通通的一刀一刀砍怪,几率掉宝已经远远低于玩家 G 点阈值了。
    • 嗯,是个好主意。trollface
    • 不错,这篇教程写的好。

    😂 谁控制了我的思路啊,有点飘的害怕

  • 我的明月清风我的日常贴

    2019-07-13 11:03

    “有心为善,虽善不赏,无心为恶,虽恶不罚。” --《聊斋志异-考城隍》

  • 我的明月清风我的日常贴

    2019-07-11 16:25

    下一个小风口:有偿付费技术问答/服务?

  • IDEA 必备小技巧和插件

    2019-07-10 17:47

    IDEA 中的插件?为什么没选择用有道呢

  • IDEA 必备小技巧和插件

    2019-07-10 16:55

    嗯嗯,我跟着 3.4 已经来了一遍了,嘻嘻。3.3 试了,很好很好。又 get 新姿势了,感谢感谢

  • [jeeplus] 使用笔记 (gridSelect、datetimepicker etc.)

    2019-07-10 14:49

    关联查询中如果使用了 如下注释中的关联,则会造成查询花费时间很长。 1.38s --> 0.014s

    LEFT JOIN m_rank majorrank ON majorrank.id = a.majorrankid
    -- (
    -- 	majorrank.majorid = emcode.levelformajorsid
    -- 	AND majorrank.universityid = emcode.universityid
    -- )
    
  • IDEA 必备小技巧和插件

    2019-07-10 13:18

    最后 3.4 的第二张图片是不是放错了。3.3 可否有个效果图?我的快捷键可能改过了,查看 UML 快捷键没起作用。

  • IDEA 必备小技巧和插件

    2019-07-10 13:13

    哈哈难怪图片加载好慢的

  • controller 层是否需要抽取 CRUD?

    2019-07-10 12:58

    接上楼(😳 一楼最多 4096 字符)

    	
    	/**
    	 * 授权登录异常
    	 */
    	@ExceptionHandler({AuthenticationException.class})
        public String authenticationException() {  
            return "error/403";
        }
    	
    	/**
    	 *系统登录异常
    	 */
    	@ExceptionHandler({Exception.class})
        public String exception() {  
            return "error/500";
        }
    	
    	/**
    	 * 初始化数据绑定
    	 * 1. 将所有传递进来的String进行HTML编码,防止XSS攻击
    	 * 2. 将字段中Date类型转换为String类型
    	 */
    	@InitBinder
    	protected void initBinder(WebDataBinder binder) {
    		// String类型转换,将所有传递进来的String进行HTML编码,防止XSS攻击
    		binder.registerCustomEditor(String.class, new PropertyEditorSupport() {
    			@Override
    			public void setAsText(String text) {
    				setValue(text == null ? null : StringEscapeUtils.escapeHtml4(text.trim()));
    			}
    			@Override
    			public String getAsText() {
    				Object value = getValue();
    				return value != null ? value.toString() : "";
    			}
    		});
    		// Date 类型转换
    		binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
    			@Override
    			public void setAsText(String text) {
    				setValue(DateUtils.parseDate(text));
    			}
    //			@Override
    //			public String getAsText() {
    //				Object value = getValue();
    //				return value != null ? DateUtils.formatDateTime((Date)value) : "";
    //			}
    		});
    	}
    	
    	
    	/**
    	 * 获取bootstrap data分页数据
    	 * @param page
    	 * @return map对象
    	 */
    	public <T> Map<String, Object> getBootstrapData(Page page){
    		Map<String, Object> map = new HashMap<String, Object>();
    		map.put("rows", page.getList());
    		map.put("total", page.getCount());
    		return map;
    	}
    	
    	
    }
    
    
  • controller 层是否需要抽取 CRUD?

    2019-07-10 12:57

    这是 jeeplus 中的 Controller 层基类,你对比下

    /**
     * 控制器支持类
     * @author jeeplus
     * @version 2016-3-23
     */
    public abstract class BaseController {
    
    	/**
    	 * 日志对象
    	 */
    	protected Logger logger = LoggerFactory.getLogger(getClass());
    
    	/**
    	 * 管理基础路径
    	 */
    	@Value("${adminPath}")
    	protected String adminPath;
    	
    	/**
    	 * 前端基础路径
    	 */
    	@Value("${frontPath}")
    	protected String frontPath;
    	
    	/**
    	 * 前端URL后缀
    	 */
    	@Value("${urlSuffix}")
    	protected String urlSuffix;
    	
    	/**
    	 * 验证Bean实例对象
    	 */
    	@Autowired
    	protected Validator validator;
    
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组
    	 * @return 验证成功:返回true;严重失败:将错误信息添加到 message 中
    	 */
    	protected boolean beanValidator(Model model, Object object, Class<?>... groups) {
    		try{
    			BeanValidators.validateWithException(validator, object, groups);
    		}catch(ConstraintViolationException ex){
    			List<String> list = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
    			list.add(0, "数据验证失败:");
    			addMessage(model, list.toArray(new String[]{}));
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组
    	 * @return 验证成功:返回true;严重失败:将错误信息添加到 flash message 中
    	 */
    	protected boolean beanValidator(RedirectAttributes redirectAttributes, Object object, Class<?>... groups) {
    		try{
    			BeanValidators.validateWithException(validator, object, groups);
    		}catch(ConstraintViolationException ex){
    			List<String> list = BeanValidators.extractPropertyAndMessageAsList(ex, ": ");
    			list.add(0, "数据验证失败:");
    			addMessage(redirectAttributes, list.toArray(new String[]{}));
    			return false;
    		}
    		return true;
    	}
    	
    	/**
    	 * 服务端参数有效性验证
    	 * @param object 验证的实体对象
    	 * @param groups 验证组,不传入此参数时,同@Valid注解验证
    	 * @return 验证成功:继续执行;验证失败:抛出异常跳转400页面。
    	 */
    	protected void beanValidator(Object object, Class<?>... groups) {
    		BeanValidators.validateWithException(validator, object, groups);
    	}
    	
    	/**
    	 * 添加Model消息
    	 * @param message
    	 */
    	protected void addMessage(Model model, String... messages) {
    		StringBuilder sb = new StringBuilder();
    		for (String message : messages){
    			sb.append(message).append(messages.length>1?"<br/>":"");
    		}
    		model.addAttribute("message", sb.toString());
    	}
    	
    	/**
    	 * 添加Flash消息
    	 * @param message
    	 */
    	protected void addMessage(RedirectAttributes redirectAttributes, String... messages) {
    		StringBuilder sb = new StringBuilder();
    		for (String message : messages){
    			sb.append(message).append(messages.length>1?"<br/>":"");
    		}
    		redirectAttributes.addFlashAttribute("message", sb.toString());
    	}
    	
    	/**
    	 * 客户端返回JSON字符串
    	 * @param response
    	 * @param object
    	 * @return
    	 */
    	protected String renderString(HttpServletResponse response, Object object) {
    		return renderString(response, JsonMapper.toJsonString(object));
    	}
    	
    	/**
    	 * 客户端返回字符串
    	 * @param response
    	 * @param string
    	 * @return
    	 */
    	protected String renderString(HttpServletResponse response, String string) {
    		try {
    			response.reset();
    	        response.setContentType("application/json");
    	        response.setCharacterEncoding("utf-8");
    			response.getWriter().print(string);
    			return null;
    		} catch (IOException e) {
    			return null;
    		}
    	}
    
    	/**
    	 * 参数绑定异常
    	 */
    	@ExceptionHandler({BindException.class, ConstraintViolationException.class, ValidationException.class})
        public String bindException() {  
            return "error/400";
        }