摘要:由于C#在性能方面,和C++还是有不少的差距,所以在项目中有一块是用C++的OCX控件实现,然后包括在WPF项目中。由于C++,C#属于不同的体系架构,造成了许多问题,特使是拖拽TreeViewItem到OCX控件上面,两者的渲染方式不同,OCX控件一直显示在最前面,所以拖拽的时候,看不见拖拽的Ad 阅读全文
posted @ 2018-11-27 21:58 Johar 阅读 (413) 评论 (0) 编辑
摘要:最近项目上需要通过MVVM来控制TreeView,其中需要需要控制通过搜索来定位某个节点,正常逻辑下,首先通过需要在树上面找到该节点,然后选中该节点,并将该节点的父节点展开,这个时候需要通过MVVM来控制,需要绑定起来,只是一直没有binding上,代码如下: MVVM示例代码: 界面代码: 数据的 阅读全文
posted @ 2018-10-31 23:42 Johar 阅读 (558) 评论 (0) 编辑
摘要:由于项目需要,需要能够定位TreeView中的点,TreeView的节点数过多的情况下,即使找到了对应的节点并选中展示了,由于不在可视区域内,给用户的感觉还是不好,因此设计如下的Behavior,来实现选中的TreeViewItem显示在可见区域: 然后在TreeView中设置一下这个依赖属性为Tr 阅读全文
posted @ 2018-10-15 17:24 Johar 阅读 (351) 评论 (2) 编辑
摘要:项目中经常使用需要根据搜索条件查询数据,然后用卡片来展示数据。用卡片展示数据时,界面的宽度发生变化,希望显示的卡片数量也跟随变化。WrapPanel虽然也可以实现这个功能,但是将多余的部分都留在行尾,十分不美观,最好是能够将多余的宽度平分在每个ListBoxItem之间,比较美观,也符合项目需求。如 阅读全文
posted @ 2018-08-30 19:34 Johar 阅读 (640) 评论 (0) 编辑
摘要:公司项目有个需求,UI界面支持动态平均分割界面,想了想便想到用ListBox来实现,用UniformGrid作为ListBox的ItemsPanelTemplate,通过动态改变UniformGrid的Columns属性,可以动态分割界面。具体实现如下所示: 对应的ViewModel层代码: 软件运 阅读全文
posted @ 2018-08-30 19:18 Johar 阅读 (2448) 评论 (0) 编辑
摘要:工作中的项目,CS客户端会通过MQ接收前端设备发送的信息,之前测试的时候,由于测试的数据不大,没有进行压力测试,软件可以正常工作,随着项目现场设备数量的增加,CS客户端从MQ中订阅的数据量不断增加,最终导致,客户端界面卡死。原来的数据流程图如下: 这个数据流程,在数据不大的情况下,是没有什么问题,数 阅读全文
posted @ 2018-07-27 23:10 Johar 阅读 (198) 评论 (0) 编辑
摘要:最近公司项目需要对接Https接口,将对接的代码整理如下: 阅读全文
posted @ 2018-05-25 23:55 Johar 阅读 (2883) 评论 (2) 编辑
摘要:软件设计原则: 1.单一职责原则(Single Responsibility Principle) 单一职责原则的定义是:“There should never be more than one reason for a class to change.”,也就是有且仅有一个原因引起类的变更。这样可 阅读全文
posted @ 2018-05-12 11:51 Johar 阅读 (1166) 评论 (0) 编辑
摘要:Spring Boot使用一个非常特殊的PropertySource顺序,该顺序旨在允许合理地覆盖值。按以下顺序考虑属性: $HOME/.config/spring boot当devtools处于活动状态时,文件夹中的Devtools全局设置属性。 @TestPropertySource 测试中的注 阅读全文
posted @ 2019-12-06 23:29 Johar 阅读 (6) 评论 (0) 编辑
摘要:![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190817214911001-1875421566.png) ![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190817214935861-1041704626.png) ![](https://im... 阅读全文
posted @ 2019-08-17 21:51 Johar 阅读 (15) 评论 (0) 编辑
摘要:![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190806003649344-790039922.png) ![](https://img2018.cnblogs.com/blog/436823/201908/436823-20190806003704766-759617848.png) ![](https://img2... 阅读全文
posted @ 2019-08-06 00:38 Johar 阅读 (21) 评论 (0) 编辑
摘要:重构是在不改变软件可观察行为的前提下改善其内部结构 书中的案例如下: 以一个影片出租店用的程序,计算每位顾客的消费金额并打印详单。输入条件:顾客租了那些影片、租期多长;输出:费用根据租赁时间和影片类型计算,积分根据是否是新片而不同。影片分为三类:普通片、儿童片、新片: 优化之后整体布局如下: 关键部 阅读全文
posted @ 2019-07-31 23:23 Johar 阅读 (34) 评论 (0) 编辑
摘要: 阅读全文
posted @ 2019-07-31 00:22 Johar 阅读 (13) 评论 (0) 编辑
摘要:最近工作中遇到pg数据库data文件夹大小达到32G,大致的排查流程如下: 1.首先查看是哪个文件或者那些文件比较大; 2.根据文件的名称找到对应的数据表a; 3.确认数据表a中数据实际上只有3000条左右,数据量没有这么大; 4.经过对实际业务场景排查,这个表a是用来记录数据库表数据变化的表,其他 阅读全文
posted @ 2019-07-14 23:13 Johar 阅读 (64) 评论 (0) 编辑
摘要:对于Java内存模型总结起来就是:1. 为什么定义Java内存模型?现代计算机体系大部是采用的对称多处理器的体系架构。每个处理器均有独立的寄存器组和缓存,多个处理器可同时执行同一进程中的不同线程,这里称为处理器的乱序执行。在Java中,不同的线程可能访问同一个共享或共享变量。如果任由编译器或处理器对 阅读全文
posted @ 2019-06-05 08:34 Johar 阅读 (103) 评论 (0) 编辑
摘要:Effective Java(1)-创建和销毁对象 阅读全文
posted @ 2019-03-19 00:41 Johar 阅读 (71) 评论 (0) 编辑
摘要:1.用wireshark抓包之后,右击,点decode as,转化为RTP 2. 点show all streams 3.分析 阅读全文
posted @ 2019-01-08 21:28 Johar 阅读 (2258) 评论 (0) 编辑
摘要:我是一个喜欢列目标,做计划的人,毕业后每年年初都会对上一年做出一份总结,对新的一年做一份计划,但是没有自己总结出来成果很少,列出来的计划还是那几大块。每次写完,能够勉强按照计划的内容坚持几天,后面就慢慢松懈了,不了了之。拖延一直以来是我生活中的一道踏不过的门槛,它无处不在,无所不入,我憎恨它,它带走 阅读全文
posted @ 2019-01-01 23:55 Johar 阅读 (173) 评论 (0) 编辑